jQuery(document).ready(function($){
	$('.cycleHeader').cycle({
		fx:     'fade',
		speed:   1000,
		timeout: 5000,
		pager:  '.cycleNavig',
		pause:   1,
		pauseOnPagerHover: 1
	});

	easing_method1 = 'easeInOutExpo';
	easing_method2 = 'jswing';

	position = 0;
	
    // goToPosition
    
    if (position == 2)  {
        $('#next-slide').addClass("disabled");
        $('#prev-slide').removeClass("disabled");
    }
    if (position == 1)  {
        $('#prev-slide').removeClass("disabled");
    }

    percent_pos = position*50;
    $('.layer1,.layer2,.layer3').css('background-position',percent_pos + '% 100%');
    $("#scroll-bar").css('left',percent_pos*5 + 1);


	$('#next-slide').bind("click",function(){
		if ($(this).hasClass("disabled"))	{
		}	else	{
			position++;
			//position%=3;

			if (position == 2)	{
				$('#next-slide').addClass("disabled");
			}
			$('#prev-slide').removeClass("disabled");
			
			percent_pos = position*50;
			$('.layer1,.layer2,.layer3').stop().animate(
				{backgroundPosition:percent_pos + '% 100%'},
				{duration:1500, easing: easing_method1}
			);
			$("#scroll-bar").stop().animate(
				{left:percent_pos*5 + 1},
				{duration:1500, easing: easing_method1}
			);
			return false;
		}
	});
	$('#prev-slide').bind("click",function(){
		if ($(this).hasClass("disabled"))	{
		}	else	{
			position--;
			//if (position < 0)	position = 2;
			
			if (position == 0)	{
				$('#prev-slide').addClass("disabled");
			}
			$('#next-slide').removeClass("disabled");
			
			percent_pos = position*50;
			$('.layer1,.layer2,.layer3').stop().animate(
				{backgroundPosition:percent_pos + '% 100%'},
				{duration:1500, easing: easing_method1}
			);
			$("#scroll-bar").stop().animate(
				{left:percent_pos*5 + 1},
				{duration:1500, easing: easing_method1}
			);
			return false;
		}
	});


    /* === Header interactions === */

    sliderAutoAdvance = 5000;
    sliderAnimDuration = 1500;
    sliderEasing = 'easeInOutExpo';
    sliderLayerOffet = 1000;

//    var e = new jQuery.Event("slide");

    // Get number of slides
    noSlides = $(".slides-container").children().length;

    // Get number of layers
    // TODO: must make sure all the slides have the same amount of layers
    // TODO: or implement a way to handle different number of layers
    noLayers = $("#slide1").children().length;

    // Find the initial slide
    activeSlide = $(".slides-container .active").attr("id");
    activeSlideId = parseInt(activeSlide.substr(5), 10);

	// ame: home text navigation
    //var home_text = new Array ("1", "2", "3", "4", "5");

    // Create pager elements
  
    pagerHTML = "<ul>";
    for (i=1;i<=noSlides;i++)   {
        activeClass = (i==activeSlideId)? "active" : "";
        pagerHTML += "<li><a href=\"#slide" + i + "\"" + " id=\"linker" + i + "\" class=\"" + activeClass + "\">&nbsp;</a>" + "</li>";
    }

    pagerHTML += "</ul>";
    $(".pager-zone").html(pagerHTML);

    $(".pager-zone a").click(function(e){
	    
	    // start counting from zero
        clearInterval(timer);

        e.preventDefault();
        clickedIdString = $(this).attr("href");
        hashPos = clickedIdString.indexOf("#");
        clickedId = clickedIdString.substring(hashPos + 6);
        
        if (clickedId > activeSlideId)  {
            advanceSlide(clickedId,'right');
   	        timer = setInterval(function () { advanceSlide((activeSlideId % noSlides + 1), "right"); }, sliderAutoAdvance); 
 
        } else  {
            advanceSlide(clickedId,'left');
   	        timer = setInterval(function () { advanceSlide((activeSlideId % noSlides + 1), "right"); }, sliderAutoAdvance); 
        }
        
        return false;
    });

    timer = setInterval(function () { advanceSlide((activeSlideId % noSlides + 1), "right"); }, sliderAutoAdvance); 


	// ame: stop sliding on mouse enter content	
/*  
	$("#content").bind("mouseenter",function(){
        clearInterval(timer);
    }).bind("mouseleave",function(){
        timer = setInterval(function () { advanceSlide((activeSlideId % noSlides + 1), "right"); }, sliderAutoAdvance); 
    });
*/    

});


function advanceSlide(slideNo,direction)    {
    //console.log(activeSlideId, slideNo);

    if (direction == 'right')   {
        dir = 1;
    } else  {
        dir = -1;
    }
    if (slideNo != activeSlideId)   {
        //console.log(activeSlideId);

        $(".pager-zone a.active").toggleClass("active");
        $(".pager-zone a#linker" + slideNo).toggleClass("active");

        // select next slide
        nextSlide = $("#slide" + slideNo);
        currentSlide = $("#slide" + activeSlideId);
        
        var layerPos = [];
        
        // compute next slide layers' positions;
        for (i=1;i<=noLayers;i++)   {
            if (!$.browser.msie)    {
                layerPos[i] = 756 + (i-1)*sliderLayerOffet;
            } else  {
                layerPos[i] = 1200 + (i-1)*sliderLayerOffet;
            }
        }
        // and apply them
        for (i=1;i<=noLayers;i++)   {
            if (!$.browser.msie)    {
                nextSlide.find(".layer" + i).css("opacity",0);
            }
            nextSlide.find(".layer" + i).css("left",layerPos[i]*dir);
        }
    
        // show next slide
        nextSlide.css("display","block");
    
        // animante current slide's layers
        for (i=1;i<=noLayers;i++) {
            if (!$.browser.msie) {
                currentSlide.find(".layer" + i).stop().animate({
                    left: layerPos[i]*(-1)*dir,
                    opacity: 0
                }, {
                    duration: sliderAnimDuration,
                    easing: sliderEasing,
                    complete: function(){
                        // hide current slide on callBack
                        currentSlide.css("display","none");
                    }
                }
                );
            }   else    {
                currentSlide.find(".layer" + i).stop().animate({
                    left: layerPos[i]*(-1)*dir
                }, {
                    duration: sliderAnimDuration,
                    easing: sliderEasing,
                    complete: function(){
                        // hide current slide on callBack
                        currentSlide.css("display","none");
                    }
                }
                );
            }
        }
        
        // animante next slide's layers
        nsLayers = nextSlide.children();
        if (!$.browser.msie)    {
            nsLayers.stop().animate(
                {
                    left:0,
                    opacity:1
                },
                {duration:sliderAnimDuration, easing: sliderEasing}
            );
        }   else    {
            nsLayers.stop().animate(
                {
                    left:0
                },
                {duration:sliderAnimDuration, easing: sliderEasing}
            );
        }
    
        // make next slide current
        activeSlideId = slideNo;
        //console.log(activeSlideId);
    }
}
