(function($){

    $.fn.carousel = function(params){
        
        var element = this;
        var itemWidth = 340;
        var position = 0;
        var timer = 1500;
        var total = $(element).children().size();
        var playing = 0;
        var elementId = $(element).attr("id");
        var nextTrigger;
        var previousTrigger;
        var display = 1;
        

        if(params.width!=undefined) {
            itemWidth = params.width
        }

        if(params.controlsContainer == undefined) {
            nextTrigger     = "#"+elementId+" .next";
            previousTrigger = "#"+elementId+" .previous";
        } else {
            nextTrigger     = "#"+params.controlsContainer+" .next";
            previousTrigger = "#"+params.controlsContainer+" .previous";
        }

        if(params.speed != undefined) {
            timer = params.speed * 100;
        }
      
        var carWidth =  itemWidth * total;
        $(element).css("width",carWidth);

        $(nextTrigger).bind("click", function(){
            if(playing) return false;
            playing = 1;
            position--;
            
            if(position + total == 0 || (-1 * (position * itemWidth) + 300 > carWidth) ) {
                position = 0;
                timer = 200;
            }
            
            var newPos = position * itemWidth;
            $(element).animate({left:newPos},timer,function(){playing = 0;});
            
        });
        
        $(previousTrigger).bind("click", function(){
            
            if(playing) return false;
            playing = 1;
            
            position++;
            
            if(position > 0) {
                position = 0;
                playing = 0;
                
                return false;
            }
            
            var newPos = position * itemWidth;
            $(element).animate({left:newPos},timer,function(){playing = 0;});             
        });          
    }

 })(jQuery);




