/**
 * jQuery Zlider Plugin 1.0
 * 
 * copyright Zeitgeist group AG 2011/10/12
 * author Zlatko Micic
 * Version 1.0
 *
 * http://www.zeitgeist.ch
 */


(function($) {

    $.fn.zlider = function(options) {
        
        //Defaults to extend options
        var defaults = {  
            FirstSliderSpeed: 500,                  //Speed of the first slider in milliseconds
            SecondSliderSpeed: 800,                //Speed of the second slider in milliseconds
            SlideShow: true,                        //Slideshow on - true, off - false
            SlideShowInterval: 5000                 //Slideshow interval in milliseconds
     	};  
        
        //Extend those options
        var options = $.extend(defaults, options);
        
        var ZliderSlider = $(this);
        
        var ZliderWidth = $(this).width();
        var ZliderHeight = $(this).height();

        var ChildrenNumber = $(this).children().length;
        var MaxZliderWidth = ZliderWidth * ChildrenNumber ;
        
        //
        // creating wrap and navigation
        //
        
        //wrapp slider with new div
        $(this).wrap('<div id="ZliderWrapper" />');
        $('div#ZliderWrapper').css({'width': +ZliderWidth+'px', 'height': + ZliderHeight + 'px', 'position': 'relative', 'overflow':'hidden'}); //(ZliderHeight + 50 )
        
        // add width and absolute position to first slider
        ZliderSlider.css({'width': + MaxZliderWidth +'px', 'position': 'absolute', 'left': '0px'});
        
        //create new slider
        ZliderSlider.after("<ul id=\"Zlider2\"></ul>");
        var ZliderSlider2 = $("#Zlider2");
        ZliderSlider2.css({'width': +MaxZliderWidth +'px', 'position': 'absolute', 'left': '0px'});
        
        //add description to new slider
        for (var i = 0; i < ChildrenNumber ; i++) {
            
            var DescriptionContent = $("div.ZliderDescription").eq(i).html();
            $('#Zlider2').append("<li>" + DescriptionContent +"</li>");
        }

        //remove descriptions from first slider
        $("div.ZliderDescription").remove();
        
        //create bullet navigation
        //ZliderSlider2.after("<ul id=\"ZliderNavigation\"></ul>");
        $("#ZliderWrapper").after("<ul id=\"ZliderNavigation\"></ul>");
        
        for (var i = 0; i < ChildrenNumber ; i++) {
            $('#ZliderNavigation').append("<li class=\"ZliderBullet\">" + (i+1) +"</li>");
        }
        $('li.ZliderBullet').click(function() {
            $('.SlideUpReady').addClass('SlideUp').removeClass('SlideUpReady');
            var ZliderBulletNummer = $(this).index(); //index gets eq
            ZliderSlider.animate({
                left: '-'+(ZliderBulletNummer * ZliderWidth)
            }, options.FirstSliderSpeed, function() {
                setActiveBullet(); // Animation complete.
                $('.SlideUp').addClass('SlideUpReady').removeClass('SlideUp');
                });
            ZliderSlider2.animate({
                left: '-'+(ZliderBulletNummer * ZliderWidth)
            }, options.SecondSliderSpeed, function() {
                setActiveBullet(); // Animation complete.
                $('.SlideUp').addClass('SlideUpReady').removeClass('SlideUp');
                });
            
            setActiveBullet()
            
        });
        
        // setting the style for active bullet
        function setActiveBullet() {
            $('#ZliderNavigation li').removeClass('active');
            
            if (ZliderSlider.position().left >= 0 ){
                $('#ZliderNavigation').children('li').eq(0).addClass('active');
            }
            else {
                $('#ZliderNavigation').children('li').eq(""+ (Math.abs(ZliderSlider.position().left) / ZliderWidth) + "" ).addClass('active');
            }
        }
        
        
        //create navigation
        $('#ZliderNavigation').after("<div id=\"ZliderLeft\">left</div>").after("<div id=\"ZliderRight\">right</div>");

        //left navigation
        $('#ZliderLeft').click(function() {
            var ZliderSliderPosition = ZliderSlider.position();

            if (ZliderSliderPosition.left >= 0 ) { 
                ZliderSlider.animate({
                    left: ZliderWidth- MaxZliderWidth  
                }, options.FirstSliderSpeed, function() {
                    setActiveBullet() // Animation complete.
                   });
                ZliderSlider2.animate({
                    left: ZliderWidth- MaxZliderWidth  
                }, options.SecondSliderSpeed, function() {
                    setActiveBullet() // Animation complete.
                });
            }
            else {
                ZliderSlider.animate({
                    left: '+=' + ZliderWidth 
                }, options.FirstSliderSpeed, function() {
                    setActiveBullet() // Animation complete.
                   });
                ZliderSlider2.animate({
                    left: '+=' + ZliderWidth 
                }, options.SecondSliderSpeed, function() {
                    setActiveBullet() // Animation complete.
                });
            }
        });
        
        //right navigation
        $('#ZliderRight').click(function() {
            var ZliderSliderPosition = ZliderSlider.position();

            if (ZliderSliderPosition.left <= (ZliderWidth - MaxZliderWidth) ) {
                ZliderSlider.animate({
                    left: '0' 
                }, options.FirstSliderSpeed, function() {
                    setActiveBullet() // Animation complete.
                   });
                ZliderSlider2.animate({
                    left: '0' 
                }, options.SecondSliderSpeed, function() {
                    setActiveBullet() // Animation complete.
                });
            }
            else {
                ZliderSlider.animate({
                    left: '-=' + ZliderWidth
                }, options.FirstSliderSpeed, function() {
                    setActiveBullet() // Animation complete.
                   });
                ZliderSlider2.animate({
                    left: '-=' + ZliderWidth
                }, options.SecondSliderSpeed, function() {
                    setActiveBullet() // Animation complete.
                });
            }
        });
        
        
        if(options.SlideShow  || options.SlideShow == 'true') {
            setInterval(function() {
                $('#ZliderRight').click();
            }, options.SlideShowInterval);
        }
        
        setActiveBullet()
    }//call zlider
})(jQuery);

