jQuery.fn.carousel = function( method , options) {

  var mCur;

  var methods = {
     init : function( options )
     {

     	//default settings
	    var settings = {
	    	startInterval : 0,
	    	interval      : 0,
	    	speed         : 3000,
	    	width         : 100,
	    	height        : 100,
	       	pictureBorder : '1px solid #EEEEEE',
      	 	outerBorder   : '1px solid #000',
	    	duration      : 'left',
	    };

	    return this.each(function()
	    {
		   if ( options )
		   {
		     $.extend( settings, options );
		   }

		   var start = true;
		   var $this = jQuery(this);

		   jQuery('#left-sidebar').prepend('<div class="resycle"><a href="" id="buy"><p class="buy">Купить</p><p class="what"></p></a></div>');

           $this.find('.pic').css({width:(settings.width+1)+'px',height:(settings.height+1)+'px','border':settings.pictureBorder});
           var picWidth = $this.find('.pic').outerWidth();
           var picHeight = $this.find('.pic').outerHeight();
           $this.css({height:picHeight,width:picWidth,'border':settings.outerBorder});
		   $this.find('.pic:first').parents('ul').eq(0).css({height:$this.innerHeight(),width:$this.innerWidth(),'overflow':'hidden','position':'absolute','z-index':'4'});
		   $this.find('.pic').parents('li').css({height:$this.innerHeight(),width:$this.innerWidth(),'position':'absolute','z-index':'3'});

		   (jQuery("div#controls").length == 0) ? $this.before(jQuery("<div>").attr("id", "controls").css({ opacity:0.7,width:(settings.width-2)+'px'}).hide()) : null ;
		   (jQuery("a#rtl").length == 0) ? jQuery("<a>").attr({ id:"rtl", "class":"car-navi rtl", href:"#", title:"rtl" }).appendTo("#controls").css({left:((settings.width-50)/2-100)+'px'}) : null ;
		   (jQuery("a#play-pause").length == 0) ? jQuery("<a>").attr({ id:"play-pause", "class":"car-navi pause", href:"#", title:"rtl" }).appendTo("#controls").css({left:((settings.width-50)/2)+'px'}) : null ;
		   (jQuery("a#ltr").length == 0) ? jQuery("<a>").attr({ id:"ltr", "class":"car-navi ltr", href:"#", title:"ltr" }).appendTo("#controls").css({left:((settings.width-50)/2+100)+'px'}) : null ;
           $this.find('ul:first').hover(function(){
                    start = false;
                    //show controls
                    //jQuery("div#controls").show();
                    //jQuery("div#controls").css({'margin-top':(parseInt(picHeight)-parseInt(jQuery('#controls').outerHeight())-1)+'px','margin-left':((parseInt($this.outerWidth())-settings.width)/2+1)+'px'});
           },function(){
                    //if(!mouseOver($this)){
                  	start = true;
                    //jQuery('div#controls').fadeOut();
                    //}
		   });

           var width = parseInt($this.find('.pic:first').parents('li').outerWidth());
           for(var i = 0;i<$this.find('.pic').length;i++){           	   $this.find('.pic').eq(i).parents('li').eq(0).css({'marginLeft':width*i+'px'});
           }
           var offsetL = $this.find('li:last').offset().left - $this.offset().left;
           var offsetF = $this.find('li:first').offset().left - $this.offset().left;
           var parOffset = $this.find('li:last').offset().left;

           var durate = function(durations)
           {
                   start = true;
                   animator(durations,1);
                   start = false;
           }

		   var animator = function(bool,ret)
		   {		   	if(start == false){	               setTimeout(function(){
	               	if(ret){
	               		return true;
	               	}
	               	animator(bool);
	               },settings.interval+settings.speed);
		   	}else{
                    $this.find('.pic:first').parents('ul').attr('class','');

	                if(bool == 'right'){	                	$this.find('li:last').animate({'marginLeft':'-='+(width*($this.find('li:last').index()+1))+'px'},0);
	                	$this.find('li:last').prependTo($this.find('ul').eq(0));
	                	sign = '+';
	                }else if(bool == 'left'){
	                	sign = '-';
                    }
	                $this.find('.pic').parents('li').animate({'marginLeft':sign+'='+width+'px'},settings.speed,
		                function()
		                {		                	$this.find('.pic:first').parents('ul').attr('class','durate');
							jQuery('#buy').find('.what').text($this.find('div').eq(0).attr('alt'));
							jQuery('#buy').find('a').attr('href','');
							jQuery('#buy').find('a').attr('href',$this.find('a').eq(0).attr('href'));
		                }
	                );

	                if(bool == 'left'){	                	$this.find('li:first').animate({'marginLeft':'+='+(width*($this.find('li:last').index()+1))+'px'},0);
	                	$this.find('li:first').appendTo($this.find('ul').eq(0));
	                }

	               setTimeout(function(){	               	if(ret){	               		return true;
	               	}	               	animator(bool);
	               },settings.interval+settings.speed);
             }
		   }

           $this.find('.pic:first').parents('ul').attr('class','durate');
           setTimeout(function(){animator(settings.duration);},settings.startInterval);

	    });
	 }
  };



    if ( methods[method] ) {
      return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
    } else if ( typeof method === 'object' || ! method ) {
      return methods.init.apply( this, arguments );
    } else {
      jQuery.error( 'Method ' +  method + ' does not exist on jQuery.fileuploader' );
    }

  };

