/*
*   jSlider version 1.0
*   Simple Content Slider 
*   
*   Author: Rezaur Rahman 
*   Author Url: http://phpknight.com
* 
*   Usage:
*  
*   $('.classname').jSlider()
*   
*   options: {
*            nextClass:'next',
*            prevClass:'prev',
*            container:'dl',
*            item:'dd',
*            showItems:4,
*            slideSpeed:1000,
*            circular:true
*            click:function(){}
*        };
*   
* 
* 
*/


(function($)
{                    
    $.fn.jSlider = function(options)
    {
        $.fn.jSlider.defaults = 
        {
            nextClass:'next',
            prevClass:'prev',
            container:'dl',
            item:'dd',
            showItems:4,
            slideSpeed:1000,
            circular:true,
            click:null
            
        };
                
        var opts = $.extend({}, $.fn.jSlider.defaults, options); /* PUTS ALL THE DEFAULT VALUES INTO A VARIABLE */
        
        if(!$(this).length)return;
        
        var mainCont=$(this);
        var marginLeft=parseInt($(this).find(opts.item).css('marginLeft').replace('px',''));
        var marginRight=parseInt($(this).find(opts.item).css('marginRight').replace('px',''));
        var itemWidth=$(this).find(opts.item).width()+(marginLeft?marginLeft:0)+(marginRight?marginRight:0);
        
        
        if($(this).find(opts.item).length>opts.showItems){
            //console.log($(this).find(opts.container).height());
            $(this).css({
                height:$(this).find(opts.container).height()?$(this).find(opts.container).height():$(this).find(opts.item).height(),
                width:(opts.showItems*itemWidth)-marginRight,
                position:'relative'
            })
            
            $(this).find(opts.container).css({
                width:($(this).find(opts.item).length*itemWidth),
                position:'absolute',
                top:'0',
                left:'0',
            })
            
            var sliderCont=$(this).find(opts.container);
            var slideLock=false;
            
            
            
            $('.'+opts.nextClass).click(function(e){
                e.preventDefault();
                var pos=sliderCont.position();
                
                if(!slideLock){
                    if(pos.left>-(mainCont.find(opts.item).length-opts.showItems)*itemWidth){
                        slideLock=true;    
                        sliderCont.animate({left:pos.left-itemWidth+'px'},opts.slideSpeed,function(){
                            slideLock=false;
                        });
                        
                    }
                    else if(opts.circular){
                        slideLock=true;
                        var swap=mainCont.find(opts.item+':first').html();
                        mainCont.find(opts.item+':first').remove()
                        mainCont.find(opts.container).append('<'+opts.item+'>'+swap+'</'+opts.item+'>');
                        
                        mainCont.find(opts.container).css({left:pos.left+itemWidth+'px'})
                        pos=sliderCont.position();
                        sliderCont.animate({left:pos.left-itemWidth+'px'},opts.slideSpeed,function(){
                            slideLock=false;
                        });
                    }
                }
              if (opts.click instanceof Function) { opts.click.call(); }     
            })
            
            $('.'+opts.prevClass).click(function(e){
                e.preventDefault();
                var pos=sliderCont.position();
                if(!slideLock){
                    if(pos.left<0){
                        slideLock=true;
                        sliderCont.animate({left:pos.left+itemWidth+'px'},opts.slideSpeed,function(){
                            slideLock=false;
                        });
                    }
                    else if(opts.circular){
                        slideLock=true;
                        var swap=mainCont.find(opts.item+':last').html();
                        mainCont.find(opts.item+':last').remove()
                        mainCont.find(opts.item+':first').before('<'+opts.item+'>'+swap+'</'+opts.item+'>');
                        
                        mainCont.find(opts.container).css({left:pos.left-itemWidth+'px'})
                        pos=sliderCont.position();
                        sliderCont.animate({left:pos.left+itemWidth+'px'},opts.slideSpeed,function(){
                            slideLock=false;
                        });
                        
                        
                    }
                }
                if (opts.click instanceof Function) { opts.click.call(); }   
            })
        }
        else{
            $('.'+opts.prevClass).css({opacity:0})
            $('.'+opts.nextClass).css({opacity:0})
        }
        
        
        
    };
})(jQuery);

 

