/*
 * 	Easy Slider 1.5 - jQuery plugin
 *	written by Alen Grakalic	
 *	http://cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding
 *
 *	Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
 *	Dual licensed under the MIT (MIT-LICENSE.txt)
 *	and GPL (GPL-LICENSE.txt) licenses.
 *
 *	Built for jQuery library
 *	http://jquery.com
 *
 */
 
/*
 *	markup example for $("#slider").easySlider();
 *	
 * 	<div id="slider">
 *		<ul>
 *			<li><img src="images/01.jpg" alt="" /></li>
 *			<li><img src="images/02.jpg" alt="" /></li>
 *			<li><img src="images/03.jpg" alt="" /></li>
 *			<li><img src="images/04.jpg" alt="" /></li>
 *			<li><img src="images/05.jpg" alt="" /></li>
 *		</ul>
 *	</div>
 *
 */

(function($) {
    $.fn.easySlider = function(options){
	  
        // default configuration properties
        var defaults = {
            prevId:                 'prevBtn',
            prevText:               'Previous',
            nextId:                 'nextBtn',
            nextText:               'Next',
            controlsShow:           true,
            controlsBefore:         '',
            controlsAfter:          '',
            controlsFade:           true,
            firstId:                'firstBtn',
            firstText:              'First',
            firstShow:              false,
            lastId:                 'lastBtn',
            lastText:               'Last',
            lastShow:               false,
            vertical:               false,
            speed:                  800,
            auto:                   false,
            pause:                  2000,
            continuous:             false,
            slideNavidatorClass:    'slideNavigator',
            slideWidth:             '850px',
            slideHeight:            '650px'
        };

        var options = $.extend(defaults, options);
        var items = new Array();
        var t = 0;
        var ts = 0;
        var obj = null;
        var timeout;

        $('ul.slider li.sliderItem').css('width', options.slideWidth);
        $('ul.slider li.sliderItem').css('height', options.slideHeight);

        var slide_width = $("li.sliderItem:first").width();
        var slide_height = $("li.sliderItem:first").height();        

        $("ul.slider li.sliderItem").each(function(i) {
            $('.productFeatures').append('<a href="javascript:{}" class="slideLink" id="slide_'+i+'">'+$(this).attr('title')+"</a> ");
            items[i] = $(this).attr('title');
        })

        $('.slideLink').click(function() {
            var slide = $(this).attr('id').split('slide_')[1];
            var speed = options.speed;
            options.speed = 0;
            animate("jumpto", true, obj, parseInt(slide));
            options.speed = speed;
            return false;
        })

        this.each(function() {
            obj = $(this);
            var s = $("li.sliderItem", obj).length;
            var w = $("li.sliderItem", obj).width();
            var h = $("li.sliderItem", obj).height();

            obj.width(w);
            obj.height(h);
            obj.css("overflow","hidden");
            ts = s-1;
            
            $("ul.slider", obj).css('width',s*w);
            if(!options.vertical) $("li.sliderItem", obj).css('float','left');
			
            if(options.controlsShow){
                var html = options.controlsBefore;
                if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
                html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\" title=\"Previous\"">'+ options.prevText +'</a></span>';
                html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\" title=\"Next\"">'+ options.nextText +'</a></span>';
                if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';
                html += options.controlsAfter;
                $(obj).after(html);
            };
	
            $("a","#"+options.nextId).click(function(){
                slide_width = w;
                slide_height = h;
                animate("next",true, obj);
            });
            $("a","#"+options.prevId).click(function(){
                slide_width = w;
                slide_height = h;
                animate("prev",true, obj);
            });
            $("a","#"+options.firstId).click(function(){
                slide_width = w;
                slide_height = h;
                animate("first",true, obj);
            });
            $("a","#"+options.lastId).click(function(){
                slide_width = w;
                slide_height = h;
                animate("last",true, obj);
            });
			
            // init            
            if(options.auto){
                timeout = setTimeout(function(){
                    animate("next",false);
                },options.pause);
            };
		
            if(!options.continuous && options.controlsFade){
                $("a","#"+options.prevId).hide();
                $("a","#"+options.firstId).hide();
            };
			
        });

        function animate(dir,clicked,item,jumpTo){
            var ot = t;
            switch(dir){
                case "next":
                    t = (ot>=ts) ? (options.continuous ? 0 : ts) : t+1;
                    break;
                case "prev":
                    t = (t<=0) ? (options.continuous ? ts : 0) : t-1;
                    break;
                case "first":
                    t = 0;
                    break;
                case "last":
                    t = ts;
                    break;
                case "jumpto":
                    t = jumpTo;
                    break;
                default:
                    break;
            };

            var diff = Math.abs(ot-t);
            var speed = diff*options.speed;
            if(!options.vertical) {
                p = (t*slide_width*-1);
                $("ul.slider",item).animate(
                {
                    marginLeft: p
                },
                speed
                );
            } else {
                p = (t*h*-1);
                $("ul.slider",item).animate(
                {
                    marginTop: p
                },
                speed
                );
            };

            if(!options.continuous && options.controlsFade){
                if(t==ts){
                    $("a","#"+options.nextId).hide();
                    $("a","#"+options.lastId).hide();
                } else {
                    $("a","#"+options.nextId).show();
                    $("a","#"+options.lastId).show();
                };
                if(t==0){
                    $("a","#"+options.prevId).hide();
                    $("a","#"+options.firstId).hide();
                } else {
                    $("a","#"+options.prevId).show();
                    $("a","#"+options.firstId).show();
                };
            };

            if(clicked) clearTimeout(timeout);
            if(options.auto && dir=="next" && !clicked){
                ;
                timeout = setTimeout(function(){
                    animate("next",false);
                },diff*options.speed+options.pause);
            };

        };
	  
    };

})(jQuery);




