/*
   	GEKON SLIDER - 0.1

 */

/*
  	var slides = $('.gekon_slider').children();



	console.log(slides);

	$('#slidesContainer').css('overflow', 'hidden');
	slides.wrapAll('<div id="slideInner"></div>').css({ 'float' : 'left','width' : '12.5%' });
	$('#slideInner').css('width', '800%');
	setTimer();
});
	
	function doSlide(pos,deac){
		if(deac){ clearTimer()};
		$('.akt_nav li.active').removeClass('active');
		$('.akt_nav li').eq(pos).addClass('active');
		currentPosition = pos;
		pos = (pos == 0) ? 0 : 100*(-pos)+'%';
		$('#slideInner').animate({ 'marginLeft' : pos });
	}
	function nextSlide(){
		clearTimer();
		currentPosition = (currentPosition == 6) ? currentPosition=0 : currentPosition+1;
		doSlide(currentPosition);
	}
	function prevSlide(){
		clearTimer();
		currentPosition = (currentPosition == 0) ? currentPosition=4 : currentPosition-1;
		doSlide(currentPosition);
	}
	function clearTimer(){
		$('.nav_pause').hide();	
		$('.nav_play').show();
		clearInterval(timer);
	    timer = '';    
	}

	function setTimer(){	
		$('.nav_play').hide();
		$('.nav_pause').show();
	    timer = setInterval(function(){
			currentPosition = (currentPosition == 6) ? currentPosition=0 : currentPosition+1 ;
			doSlide(currentPosition);
			}, 8000);	
	}

	
	
	


*/



(function($) {

    var GekonSlider = function(element, options){
        // For debugging
        var trace = function(msg){
            if (this.console && typeof console.log != "undefined")
                console.log(msg);
        }             

		//Defaults settings are below
		var settings = $.extend({}, $.fn.gekonSlider.defaults, options);

        //Useful variables. Play carefully.
        var vars = {
            currentSlide: 0,
            totalSlides: 0,    
            running: false,
            paused: false,
            stop: false  
        };
    
        //Get this slider
        var slider = $(element);
        slider.data('gslider:vars', vars);
        slider.css('position','relative');
        slider.addClass('gekonSlider');       

 		slider.css('overflow', 'hidden');
		slider.wrapInner('<div class="big_slider" />');
		var bigSlide = slider.children();
        //Find our slider children
        var kids = bigSlide.children();
        kids.each(function() {
            var child = $(this);
            child.css('float','left');			
            //Get img width & height
            var childWidth = child.width();
            if(childWidth == 0) childWidth = child.attr('width');
            var childHeight = child.height();
            if(childHeight == 0) childHeight = child.attr('height');
            //Resize the slider
            //if(childWidth > slider.width()){
                slider.width(childWidth);
            //}
            //if(childHeight > slider.height()){
                slider.height(childHeight);
            //}                              
            vars.totalSlides++;
        });
        bigSlide.children().first().clone().appendTo(bigSlide).addClass('last');
		bigSlide.width((vars.totalSlides+1)*slider.width());
		
		

		//Inicializacne spustenie

		var timer = setInterval(function(){ doSlide(slider,bigSlide, kids, settings, false); }, settings.pauseTime);


		//Nav bullets
		if(settings.navBullets){
			var bullets = "";
	 		for (var i=0; i < vars.totalSlides; i++) {
					bullets += "<a class='bullet'><img src='index.php?id=mod_photogallery&action=module&x=118&y=30&crop=1&img_id="+kids.eq(i).attr('imgid')+"'/></a>"										
				};
 			slider.prepend('<div class="gslider-bulletsNav">'+bullets+'</div>');
			$('a.bullet').first().addClass('active');
			$('a.bullet','.gslider-bulletsNav').live('click', function(event) {
				doExactSlide(slider,bigSlide,$(this).index());
			});

            //Hide Bullet nav
            if(settings.navBulletsHide){
                $('.gslider-bulletsNav', slider).hide();
                slider.hover(function(){
                    $('.gslider-bulletsNav', slider).stop(true,true).slideDown();
                }, function(){
                    $('.gslider-bulletsNav', slider).stop(true,true).slideUp();
                });
            }
		}
	
       	//Skocenie na konkretny slide
		var doExactSlide = function(slider,bigSlide,toSlide){
			//Get our vars
			var vars = slider.data('gslider:vars');       
		   	vars.currentSlide = toSlide;
			bigSlide.stop(true,true).animate({ 'marginLeft' :  '-'+$('#sl'+toSlide).position().left+'px' },settings.animSpeed,'easeInOutQuint');
			setActiveBullet(vars.currentSlide);
		}

        //For pauseOnHover setting
        if(settings.pauseOnHover){
            slider.hover(function(){
                vars.paused = true;
                clearInterval(timer);
                timer = '';
            }, function(){
                vars.paused = false;
                //Restart the timer
                if(timer == '' && !settings.manualAdvance){
                    timer = setInterval(function(){ doSlide(slider, bigSlide, kids, settings, false); }, settings.pauseTime);
                }
            });
        }
		
        //Nav control
        if(settings.navControl){
            slider.prepend('<div class="gslider-directionNav"><a class="gslider-prevNav">'+ settings.prevText +'</a><a class="gslider-nextNav">'+ settings.nextText +'</a></div>');
            
            //Hide Direction nav
            if(settings.navControlHide){
                $('.gslider-directionNav a', slider).hide();
                slider.hover(function(){
                    $('.gslider-directionNav a', slider).fadeIn();
                }, function(){
                    $('.gslider-directionNav a', slider).fadeOut();
                });
            }
            
            $('a.gslider-prevNav', slider).live('click', function(){
                if(vars.running) return false;
                clearInterval(timer);
                timer = '';
				doSlide(slider, bigSlide, kids, settings, 'prev')
            });
            
            $('a.gslider-nextNav', slider).live('click', function(){
                if(vars.running) return false;
                clearInterval(timer);
                timer = '';
				doSlide(slider, bigSlide, kids, settings, 'next')
            });
        }

		// var moveTimer;
		// slider.mousemove(function() {	
		// 	$('.gslider-directionNav a').animate({'opacity': 0.8}, 500);		
		//   			clearInterval(moveTimer);    
		//            	var moveTimer = setInterval(function(){
		// 	 	clearInterval(moveTimer);
		// 		$('.gslider-directionNav a').animate({'opacity': 0.2}, 500);		
		// 		console.log("resetTimera");
		// 	}, 2000);
		// });
		
		


		var doSlide = function(slider, bigSlide, kids, settings, nudge){
			//Get our vars
			var vars = slider.data('gslider:vars');
            // Stop
			if((!vars || vars.stop) && !nudge) return false;
			
			if((nudge == 'next')||(!nudge)){
				vars.currentSlide++
				bigSlide.stop(true,true).animate({ 'marginLeft' :  '-='+slider.width()+'px' },settings.animSpeed,'easeInOutQuint',function(){
					if(vars.currentSlide >= vars.totalSlides){
						bigSlide.css({'margin-left':'0px'});
						vars.currentSlide = 0;
					}					
					setActiveBullet(vars.currentSlide);
				});
			} else if(nudge == 'prev'){
				if (vars.currentSlide == 0){
					//ak je aktualny slide PRVY v tom pripade musim pretocit na zaciatok a potom vykonat animacie
					bigSlide.stop(true,true).css({'margin-left':'-'+slider.width()*vars.totalSlides+'px'});
					vars.currentSlide = vars.totalSlides-1;         	  
				} else {
					vars.currentSlide--;         	  					
				}
				bigSlide.stop(true,true).animate({ 'marginLeft' :  '+='+slider.width()+'px' },settings.animSpeed,'easeInOutQuint',function(){
					setActiveBullet(vars.currentSlide);
				});							
			}
		}

		var setActiveBullet = function(activeIndex){
			$('a.bullet.active').removeClass('active');
			$('a.bullet').eq(activeIndex).addClass('active');			
		}


        // Start / Stop
        this.stop = function(){
            if(!$(element).data('gslider:vars').stop){
                $(element).data('gslider:vars').stop = true;
                trace('Stop Slider');
            }
        }
        
        this.start = function(){
            if($(element).data('gslider:vars').stop){
                $(element).data('gslider:vars').stop = false;
                trace('Start Slider');
            }
        }       
		return this;
    };
        
    $.fn.gekonSlider = function(options) {   
        return this.each(function(key, value){
            var element = $(this);
            // Return early if this element already has a plugin instance
            if (element.data('gekonslider')) return element.data('gekonslider');
            // Pass options to plugin constructor
            var gekonslider = new GekonSlider(this, options);
            // Store plugin object in this element's data
            element.data('gekonslider', gekonslider);
        });

	};
	
	//Default settings
	$.fn.gekonSlider.defaults = {
		animSpeed: 500,
		pauseTime: 10000,      
		pauseOnHover : true,
		navControl:true,
		prevText:' ',
		nextText:' ',
		navControlHide:true,
		navBullets:true,
		navBulletsHide:true
	};   	
})(jQuery);
