(function($) {
   $.fn.baseshift = function(settings) {
      
      $.fn.baseshift.settings = {			
         prev: 		'.prev',			
         next: 		'.next',
         position: 0,
         step: 1,
         infinite: '1',
         display: 1,
         width: 300,
         animationspeed: '500',         
         shiftrange: 1,
         current: 0,
         inshift: '0'
     };
     var options = $.extend($.fn.baseshift.settings, settings);
     options.width=$(".shift").width();
     
     var counter=0;
     var obj=$(this);
     this.each(function () {               
         show(obj);          
         function next(obj){            
            var nr_items=obj.find(".item").length;        
            options.position+=options.step;
            if (options.infinite=='0') {
               if (options.position>(nr_items - options.display)) options.position=(nr_items - options.display );
            } else {         
               for (var i=0;i<options.step;i++){
                  var it = obj.find(".item").eq(i).clone();          
                  obj.find(".item:last").after(it);
               }                   
            }
            $(options.next).unbind('click');
            $(options.prev).unbind('click');  
            var npos=(options.position * options.width);          
            obj.find(".wrapper").animate({ 'marginLeft': -npos},options.animationspeed,'linear',function(){            
               $(options.next).unbind('click').click(function(){ next(obj);   });
               $(options.prev).unbind('click').click(function(){ prev(obj);   });
               if (options.infinite!='0') {                 
                  for (var i=0;i<options.step;i++){
                     obj.find(".item:first").remove();                     
                     options.position--;
                  }                 
                  npos=(options.position * options.width);          
                  obj.find(".wrapper").animate({ 'marginLeft': npos },0);                 
               }
            });     
            return false; 
         }

         function prev(obj){
            options.position-=options.step;
            if (options.infinite=='0') {
               if (options.position<0) options.position=0;
            } else {
               var min=obj.find(".item:first").css("margin-left");
               if( isNaN( parseInt(min))) min=0;             
               for (var i=0;i<options.step;i++){
                  var max= obj.find(".item").length;
                  var it = obj.find(".item").eq(max-(i+1)).clone();
                  min = parseInt(min) - options.width;                  
                  it.css("margin-left",min+"px");
                  obj.find(".item:first").before(it);
               }             
            }      
            $(options.next).unbind('click');
            $(options.prev).unbind('click');             
      
            obj.find(".wrapper").animate({ 'marginLeft': -(options.position * options.width) },options.animationspeed, function(){
               if (options.infinite!='0') {              
                  for (var i=0;i<options.step;i++){
                     obj.find(".item:last").remove();
                     obj.find(".item").eq(i).css({"margin-left": "0"});               
                     options.position++;  
                  }            
                  obj.find(".wrapper").animate({ 'marginLeft': -(options.position * options.width) },0);
               }
               $(options.next).unbind('click').click(function(){ next(obj);   });
               $(options.prev).unbind('click').click(function(){ prev(obj);   }); 
            });                   
            return false;
         }   
   
         function show(obj){      
            obj.wrapInner('<div class="wrapper" />');
            var nr_items=obj.find(".item").length;      
            obj.find(".wrapper").css({ width: 10+(nr_items * options.width) + 'px'});      
            obj.css({ overflow: 'hidden' });
            obj.find(".item").css({ float: "left"});      
            $(options.next).unbind('click').click(function(){ next(obj); });
            $(options.prev).unbind('click').click(function(){ prev(obj);   });
      
            if (options.inshift=='1'){         
               $(options.next).css({"margin-Left": "-25px", 'z-index': 10, position: 'relative'});
               $(options.prev).css({"margin-Right": "-25px", 'z-index': 10, position: 'relative'});         
         
               $(options.next).unbind('hover').hover(function(){            
                  $(this).fadeTo(options.animationspeed,1);            
               }, function(){            
                  $(this).fadeTo(options.animationspeed,0.01);
               });
               $(options.prev).unbind('hover').hover(function(){
                  $(this).fadeTo(options.animationspeed,1);
               }, function(){
                  $(this).fadeTo(options.animationspeed,0.01);
               });
            } else {
               $(options.next).fadeTo(1,options.animationspeed);
               $(options.prev).fadeTo(1,options.animationspeed);
            }
         }         
      });     
   };              
})(jQuery);



