jQuery(document).ready(function($)
{
  var ewFader_methods=
  {
    init: function(options)
    {
      return this.each
      (
        function()
        {
          var $this=$(this); //deklarace objektu
          var settings= //výchozí hodnoty
          {
            "height": 400, //výška
            "speed": 2000, //rychlost
            "width": 400 //šířka
          };
          $.extend(settings, options);
          
          var controls=false;
          
          if($this.find(".controls").get(0))
            controls=true;
          
          $this.height(settings["height"]); //nastavení výšky
          $this.width(settings["width"]); //nastavení šířky
          
          if(!controls)
            $this.append("<ul class=\"controls\"></ul>"); //element pro tvorbu ovládacího panelu
       
          $this.children(".media").each(function(index)
          {
            var active="";
            if(index)
              $(this).hide(); //zmizení ostatních snímků
            else
              active=" active";
            index++;
            
            if(!controls)
              $(this).siblings("ul.controls").append("<li class=\"item"+active+"\">"+index+"</li>");
          });
          
          if(!controls)
          {
            $this.find("ul.controls").append("<li class=\"navigation left\">Předchozí</li>");
            $this.find("ul.controls").append("<li class=\"navigation right\">Další</li>");
          }
          
          $options=
          {
            fader: $this,
            options: settings
          };

          $this.children(".controls").children(".item").bind("click", $options, ewFader_methods.update);
          $this.children(".controls").find(".navigation.left").bind("click", $options, ewFader_methods.previous);
          $this.children(".controls").find(".navigation.right").bind("click", $options, ewFader_methods.next);
          
          window.setTimeout
          (
            function()
            {
              $(".fader .controls .item").eq(0).trigger("click");
            },
            0
          );
        }
      );
    },
    update: function(event)
    {
      var target=$(event.target);
      if(!target.is(".item"))
        target=$(event.target).parents(".item");
      
      var fader=event.data.fader;
      var item=target.index();
      fader.children(".media").each(function()
        {
          if($(this).index()!=item)
            $(this).fadeOut(event.data.options["speed"]);
          else
            $(this).fadeIn(event.data.options["speed"]); 
        }
      );
      target.addClass("active");
      target.siblings().removeClass("active");
      
      $children=$(".fader .controls").children().size();
      
      window.clearTimeout(event.data.timeout);
      event.data.timeout=window.setTimeout
      (
        function()
        {
          fader.children(".controls").find(".navigation.right").trigger("click");
        },
        5000
      );
    },
    previous: function(event)
    {
      var fader=event.data.fader;
      var index=fader.find(".controls .item.active").index();
      if(--index<0)
        index=fader.find(".controls").children(".item").length-1;
      
      fader.find(".controls .item").eq(index).trigger("click");
    },
    next: function(event)
    {
      var fader=event.data.fader;
      var index=fader.find(".controls .item.active").index();
      if(++index>(fader.find(".controls").children(".item").length-1))
        index=0;
      
      fader.find(".controls .item").eq(index).trigger("click");
    }
  };

  $.fn.ewFader=function(method)
  {
    
    if(ewFader_methods[method])
      return ewFader_methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
    else if(typeof method==="object"||! method)
      return ewFader_methods.init.apply(this, arguments);
    else
    {
      $.error("Neplatná metoda.");
      return false;
    }
  };
});

