/**
 * Created by JetBrains PhpStorm.
 * User: Giel Berkers
 * Date: 31-3-11
 * Time: 9:28
 * To change this template use File | Settings | File Templates.
 */

// Cufon.replace("div.slide h3");

var currentSlide    = 1;
var MAX_RIGHT       = 3 * 940;
var B_MAX_RIGHT     = 3 * 317;
var timeOutID       = -1;
var tweetID         = 0;
var agendaPosition  = 0;
var tweetIntervalID = -1;
var tweetHover      = false;
var tweetHeight;
var currentInterview = 0;
var interviewIntervalID;

$(function(){
    // Top slides:
    $("#homeBanner a.prev").click(function(){
        showSlide(currentSlide - 1);
        return false;
    });
    $("#homeBanner a.next").click(function(){
        showSlide(currentSlide + 1);
        return false;
    });
    $("div.topSlides div.info a").click(function(){

        if($(this).attr('href').indexOf('http://') != -1)
        {
            // Externe link
            window.open(this.href);
            return false;
        }
    });

    // Bottom slides:
    $("#homeBanner div.bottomSlides div.slide").hover(function(){
        $("span", this).stop().animate({top: -25}, 250);
    }, function(){
        $("span", this).stop().animate({top: 0}, 250);
    }).click(function(){
        var href = $("a", this).attr("href");
        if(href.indexOf('http://') == -1)
        {
            // Interne link
            window.location = href;
        } else {
            // Externe link
            window.open(href);
        }
            return false;
    });

    showSlide(currentSlide, false);

    // Tweets:
/*
    $("#tweets a.more").click(function(){
        var marginTop = parseInt($("#tweets ul").css("marginTop"));
        var h = $("#tweets ul").height();
        tweetID += 2;
        var posTweets = $("#tweets ul").position();
        var posCurrentTweet = $("#tweets ul li:eq(" + tweetID + ")").position();
        if(posCurrentTweet == null)
        {
            $("#tweets ul").animate({opacity: 0}, 250, function(){
                $("#tweets ul").css({marginTop: 0}).animate({opacity: 1});
                tweetID = 0;
            });
        } else {
            var offset = posCurrentTweet.top;
            $("#tweets ul").stop().animate({marginTop: -offset});
        }
        return false;
    });
*/

    tweetHeight = $("#tweets ul").height();
    tweetIntervalID = setInterval('scrollTweets()', 50);
    $("#tweets").hover(function(){
        tweetHover = true;
    }, function(){
        tweetHover = false;
    });

    // Resize functie:
    $(window).resize(function(){
        var h = $(window).height() > $(document).height() ? $(window).height : $(document).height();
        $("#black").height(h);
        $("#popup").center();
    }).scroll(function(){
        $("#popup").center();
    }).resize();

    // Klikken op de achtergrond laat het geheel verdwijnen:
    $("#black, #popup a.close").click(function(){
        $("#black, #popup").fadeOut(250);
        $("#popup span.video").html('');
        return false;
    });

    // Klik op de 'toon op maps'-button:
    $("a.movie").click(function(){
        $(window).resize();
        $("#black, #popup").fadeIn(250);
        $("#popup span.video").html('<video width="960" height="540" poster="/workspace/assets/mp4/poster.jpg" controls="controls" autoplay="true" preload="yes">' +
        	'<source type="video/mp4" src="/workspace/assets/mp4/SRE_v4_960x540.mp4" />' +
	        '<object width="960" height="540" type="application/x-shockwave-flash" data="/workspace/assets/mediaelement/flashmediaelement.swf">' +
		    '<param name="movie" value="/workspace/assets/mediaelement/flashmediaelement.swf" />' +
		    '<param name="flashvars" value="controls=true&autoplay=true&poster=/workspace/assets/mp4/poster.jpg&file=/workspace/assets/mp4/SRE_v4_960x540.mp4" />' +
		    '<img src="/workspace/assets/mp4/novideo.jpg" width="960" height="540" title="No video playback capabilities" />' +
	        '</object>' +
            '</video>');
        $("#popup").center();
        $("#popup span.video video").mediaelementplayer();
        return false;
    });

    $("a.video").click(function(){
        $(window).resize();
        $("#black, #popup").fadeIn(250);
        var url = $(this).attr("href");
        $("#popup span.video").html('<video width="720" height="406" controls="controls" autoplay="true" preload="yes">' +
            '<source type="video/mp4" src="' + url + '" />' +
            '<object width="720" height="406" type="application/x-shockwave-flash" data="/workspace/assets/mediaelement/flashmediaelement.swf">' +
            '<param name="movie" value="/workspace/assets/mediaelement/flashmediaelement.swf" />' +
            '<param name="flashvars" value="controls=true&autoplay=true&file=' + url + '" />' +
            '</object>' +
            '</video>');
        $("#popup").center();
        $("#popup span.video video").mediaelementplayer();
        return false;
    });

    // Home agenda:
    $("#homeAgenda a.next").click(function(){
        moveAgenda(agendaPosition + 1);
        return false;
    });
    $("#homeAgenda a.prev").click(function(){
        moveAgenda(agendaPosition - 1);
        return false;
    });

    // Interviews:
    $("#interview div.interview:first").show();
    interviewIntervalID = setInterval('showNextInterview()', 10000);
    $("#interview ul.indicator a").click(function(){
        currentInterview = $(this).attr("rel") - 2;
        showNextInterview();
        clearInterval(interviewIntervalID);
        interviewIntervalID = setInterval('showNextInterview()', 10000);
        return false;
    });
    $("#interview ul.indicator").css({marginLeft: -$("#interview ul.indicator").width() / 2});
});

function showNextInterview()
{
    $("#interview div.interview:visible").fadeOut();
    currentInterview++;
    if(currentInterview == $("#interview div.interview").length) { currentInterview = 0; }
    $("#interview div.interview:eq(" + currentInterview + ")").fadeIn();
    $("#interview ul.indicator a").removeClass("active");
    $("#interview ul.indicator a:eq(" + currentInterview + ")").addClass("active");
}

function scrollTweets()
{
    if(!tweetHover)
    {
        var tweets = document.getElementById('tweets_ul');
        var marginTop = tweets.style.marginTop != '' ? parseInt(tweets.style.marginTop) : 0;
        marginTop -= 1;
        if(marginTop < -tweetHeight)
        {
            marginTop = 280;
        }
        tweets.style.marginTop = marginTop + 'px';
    }
}

function moveAgenda(pos)
{
    var l = Math.floor(($("#homeAgenda li").length - 1) / 3);
    if(pos > l) {
        pos = l;
        // Bounce:
        $("#homeAgenda ul").stop().animate({marginLeft: -50 + (-960 * agendaPosition)}, 200);
        $("#homeAgenda ul").animate({marginLeft: 25 + (-960 * agendaPosition)}, 200);
    }
    if(pos < 0) {
        pos = 0;
        // Bounce:
        $("#homeAgenda ul").stop().animate({marginLeft: 100}, 200);
        $("#homeAgenda ul").animate({marginLeft: 25}, 200);
    }
    if(agendaPosition != pos)
    {
        agendaPosition = pos;
        $("#homeAgenda ul").stop().animate({marginLeft: 25 + (-960 * agendaPosition)});
    }
}

/**
 * Toon de volgende slide
 */
function nextSlide()
{
    showSlide(currentSlide + 1);
}

/**
 * Show the specific slide
 * @param nr        The nr of slide
 * @param animate   Animate or not? (default = true)
 */
function showSlide(nr, animate)
{
    if(timeOutID != -1)
    {
        clearTimeout(timeOutID);
    }

    var offset = nr - currentSlide;

    if(animate == null)
    {
        animate = true; 
    }

    // Rangschik de slides om ervoor te zorgen dat de startslide voor- of achteraan staat:
    if(offset < 0)
    {
        // Vorige slide, startslide moet als laatste in de rij staan:
        // Rij vullen van achter naar voren:
        for(i = currentSlide; i > 0; i--)
        {
            $("#slide" + i).css({left: MAX_RIGHT - ((currentSlide - i) * 940)});
            // $("#b_slide" + i).css({left: B_MAX_RIGHT - ((currentSlide - i - 1) * 317)});
        }
        // Slides die na deze slide komen moeten vooraan in de rij staan:
        for(i = currentSlide + 1; i <= 4; i++)
        {
            $("#slide" + i).css({left: (i - currentSlide - 1) * 940});
            // $("#b_slide" + i).css({left: (i - currentSlide - 1) * 317});
        }
        // Bottom slides:
        // Huidige slide moet vooraan staan, zodat deze in beeld verschijnt
        for(i = currentSlide; i <= 4; i++)
        {
            $("#b_slide" + i).css({left: (i - currentSlide) * 317});
        }
        for(i = currentSlide - 1; i > 0; i--)
        {
            $("#b_slide" + i).css({left: B_MAX_RIGHT - (317 * (currentSlide - i - 1))});
        }

        // slideHolder moet achteraan staan:
        $("#homeBanner div.topSlides div.slideHolder").css({left: -MAX_RIGHT});
        $("#homeBanner div.bottomSlides div.slideHolder").css({left: -317});
    } else {
        // Top slides:
        // Volgende slide, startslide moet als eerste in de rij staan:
        for(i = currentSlide; i <= 4; i++)
        {
            $("#slide" + i).css({left: (i - currentSlide) * 940});
            $("#b_slide" + i).css({left: (i - currentSlide - 1) * 317});
        }
        // Slides die voor deze slide komen moeten achteraan in de rij staan:
        for(i = currentSlide - 1; i > 0; i--)
        {
            $("#slide" + i).css({left: MAX_RIGHT - ((currentSlide - i - 1) * 940)});
        }
        // Bottom slides:
        // Slides die voor deze slide komen moeten achteraan in de rij staan:
        for(i = currentSlide; i > 0; i--)
        {
            $("#b_slide" + i).css({left: B_MAX_RIGHT - ((currentSlide - i) * 317)});
        }

        // slideHolder moet vooraan staan:
        $("#homeBanner div.topSlides div.slideHolder").css({left: 0});
        $("#homeBanner div.bottomSlides div.slideHolder").css({left: 0});
    }

    // Set the new slide:
    currentSlide += offset;
    if(currentSlide < 1) {
        currentSlide = 4;
    }
    if(currentSlide > 4) {
        currentSlide = 1;
    }

    // Animate to the new slide:
    if(animate)
    {
        if(offset < 0)
        {
            // Toon de vorige slide; animeer het geheel naar rechts:
            $("#homeBanner div.topSlides div.slideHolder").stop().animate({left: -MAX_RIGHT - (offset * 940)});
            $("#homeBanner div.bottomSlides div.slideHolder").stop().animate({left: 0});
        } else {
            // Toon de volgende slide; animeer het geheel naar links:
            $("#homeBanner div.topSlides div.slideHolder").stop().animate({left: -(offset * 940)});
            $("#homeBanner div.bottomSlides div.slideHolder").stop().animate({left: -(offset * 317)});
        }
        // Animate background:
        $("#homeBanner div.background").stop().animate({opacity: 0});
        $("#background" + currentSlide).stop().animate({opacity: 1});
    } else {
        if(offset < 0)
        {
            // Toon de vorige slide; animeer het geheel naar rechts:
            $("#homeBanner div.topSlides div.slideHolder").stop().css({left: -MAX_RIGHT - (offset * 940)});
            $("#homeBanner div.bottomSlides div.slideHolder").stop().css({left: 0});
        } else {
            // Toon de volgende slide; animeer het geheel naar links:
            $("#homeBanner div.topSlides div.slideHolder").stop().css({left: -(offset * 940)});
            $("#homeBanner div.bottomSlides div.slideHolder").stop().css({left: -(offset * 317)});
        }
        $("#homeBanner div.background").stop().css({opacity: 0});
        $("#background" + currentSlide).stop().css({opacity: 1});
    }

    // Nieuwe timeout:
    if(timeOutID != -1)
    {
        clearTimeout(timeOutID);
    }
    timeOutID = setTimeout("nextSlide()", 15000);
}
