/*
*   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',''))+parseInt($(this).find(opts.item).css('borderLeftWidth').replace('px',''));
        var marginRight=parseInt($(this).find(opts.item).css('marginRight').replace('px',''))+parseInt($(this).find(opts.item).css('borderRightWidth').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',
                overflow:'hidden'
            })

            $(this).find(opts.container).css({
                width:($(this).find(opts.item).length*itemWidth),
                position:'absolute',
                top:'0',
                left:'0',
                overflow:'hidden'
            })

            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);



