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

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

	current_hash = window.location.hash;
	
	$("a[rel^='prettyPhoto']").prettyPhoto({showTitle: true, theme: 'dark_rounded'});

	if(current_hash != "")	{
		var hash_trigger = $(current_hash + '-launch');
		if(hash_trigger.length)	{
			hash_trigger.click();
		}
	}

	$('.v74-demos-bg').css("opacity","0");

	$('.v74-demos-link').bind("mouseenter",function(){
		if ($('.v74-demos-bg').css('opacity') < 1)	{
			if ($(this).hasClass('v74-demos-webmail'))	{
				$('.v74-demos-bg').css('backgroundPosition','0% 100%');
				$('.v74-demos-bg').stop().animate(
					{opacity: "1"},
					{duration:200}
				);
			}
			else if	($(this).hasClass('v74-demos-webadmin'))	{
				$('.v74-demos-bg').css('backgroundPosition','50% 100%');
				$('.v74-demos-bg').stop().animate(
					{opacity: "1"},
					{duration:200}
				);
			}
			else	{
				$('.v74-demos-bg').css('backgroundPosition','100% 100%');
				$('.v74-demos-bg').stop().animate(
					{opacity: "1"},
					{duration:200}
				);
			}
		}
		else	{
			if ($(this).hasClass('v74-demos-webmail'))	{
				$('.v74-demos-bg').stop().animate(
					{backgroundPosition:'0% 100%'},
					{duration:300, easing: easing_method2}
				);
			}
			else if	($(this).hasClass('v74-demos-webadmin'))	{
				$('.v74-demos-bg').stop().animate(
					{backgroundPosition:'50% 100%'},
					{duration:300, easing: easing_method2}
				);
			}
			else	{
				$('.v74-demos-bg').stop().animate(
					{backgroundPosition:'100% 100%'},
					{duration:300, easing: easing_method2}
				);
			}
		}
	});

	$('.v74-demos-links').bind("mouseleave",function(){
		$('.v74-demos-bg').stop().animate(
			{opacity: "0"},
			{duration:200}
		);
	});

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

    if (current_hash == "#olk")  {
        position = 1;
    }   else if (current_hash == "#b64") {
        position = 2;
    }   else    {
    	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;
		}
	});

	$("#scroll-bar").draggable({ containment: 'parent', axis: 'x',
		drag: function(event, ui)	{
			var c_pos = $(this).position();
			
			var pos = c_pos.left - 1;
			position = Math.round(pos/250);
			switch(position)	{
				case 0:
					$('#prev-slide').addClass("disabled");
					$('#next-slide').removeClass("disabled");
					break;
				case 1:
					$('#prev-slide').removeClass("disabled");
					$('#next-slide').removeClass("disabled");
					break;
				case 2:
					$('#prev-slide').removeClass("disabled");
					$('#next-slide').addClass("disabled");
					break;
			}
			
			pos_percent = Math.round(pos/5);

			$('.layer1,.layer2,.layer3').stop().animate(
				{backgroundPosition:pos_percent + '% 100%'},
				{duration:1500}
			);
		}
	});

	$(".scroll-zone").bind("click",function(event){
		click_x = event.clientX;
		bar_x1 = $("#scroll-bar").offset().left;
		if (click_x > bar_x1 + 255) $('#next-slide').click();
		if (click_x < bar_x1 - 1) $('#prev-slide').click();
	});

    /* === 7.6 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);

    // 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){
    
        e.preventDefault();
        clickedIdString = $(this).attr("href");
        hashPos = clickedIdString.indexOf("#");
        clickedId = clickedIdString.substring(hashPos + 6);
        
        if (clickedId > activeSlideId)  {
            advanceSlide(clickedId,'right');
        } else  {
            advanceSlide(clickedId,'left');
        }
        return false;
    });

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

    $(".homepage-76-header").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);
    }
}
