/*
    Document   : frontend
    Created on : Jan 5, 2010, 8:26:02 PM
    Author     : daniel
    Description:
        Purpose of the stylesheet follows.
*/

/**
 * DomReady
 */
var domReady = function () {
    
    
    //console.log("DomReady");
    //Shadowbox
    Shadowbox.init({
        // skip the automatic setup, we'll do this later manually
        skipSetup: true,
        players: ["img"]
    });

    // Ajax
    cts_AjaxRun();

    // Hide click-borders on links
    $("a,img").click(function(){this.blur()});

    // SlideTwitterNews
    if($("#rss-reader .rss_items_only").size() > 0){
        //console.log("Starting RSS Animation at" + slideRSS_index);
        runSlideRss = setInterval('slideRSS($("#rss-reader .rss_items_only"))', 3000);
        $("#rss-reader a").mouseenter(function(){clearInterval(runSlideRss)});
        $("#rss-reader a").mouseleave(function(){runSlideRss = setInterval('slideRSS($("#rss-reader .rss_items_only"))', 3000);});
    }
    
}
$(document).ready(function(){domReady()});

/**
 * Onload
 */
var readyTime = null;
var onLoad = function(){
    //Init Stuff
    readyTime = new Date().getTime();
    //Shadowbox Setup
    Shadowbox.setup();
    
    setTimeout( function(){$("#navi-main").animate({'bottom':'0px'}, 1000);},500);
}
$(window).load(function () {
    // Do only once

    //Init Stuff
    readyTime = new Date().getTime();
    
    // Init big background Image
    var bgImg = new Image();
    var bgImgUrl = "/tl_files/page/images/bg-body.jpg";
    $(bgImg).load(function(){
        this.id = "body_bg";
        // if not cached fade bg Image
        if(new Date().getTime() - readyTime > 1000){
            $(this).hide().appendTo($("body")).fadeIn(1000);
        // Show image directly if it was cached
        } else $(this).appendTo($("body"));

    });
    bgImg.src = bgImgUrl;

    // Do also on Ajax Page Load
    onLoad();
});

/**
 * RssSlider
 */
var runSlideRss    = null; // Intervall
var slideRSS_index = 0;
var slideRSS = function(rss){
    var slideSpeed = 1500;
    if(rss.size() > 1){
        rss.eq(slideRSS_index).animate({left:'-465'},slideSpeed).animate({left: '465'}, 0);
        if(rss.eq(slideRSS_index+1).size()==0) slideRSS_index = -1;
        rss.eq(slideRSS_index+1).animate({left:'0'},slideSpeed);
        slideRSS_index++;
    }
}

/**
 * Support all internal links with ajax functionality
 */
var rscript = /<script(.|\s)*?\/script>/gi;
var rbodyclass = /<body .* class\=\"([\w\s]+)\"/i
var cts_AjaxRun = function(){
    // Debug
    $("a[href$='.html'][rel!='lightbox']:not([href*='http'])").mouseenter(function(){
        //console.log(this.href)
    });
    // Get all internal Page links
    $("a[href$='.html'][rel!='lightbox']:not([href*='http'])").click(function(event){
        event.preventDefault();
        // Make this accessible in local functions
        var link = $(this);
        // First fadeOut #wrapper, afterwards start loading new Page
        cts_AjaxLoading();
        $("#wrapper").fadeOut('slow', function() {
            //setTimeout( function(){
            // Now load new Page
            $.get($(link).attr("href") + "", function(response, status, xhr){
                //console.log("loading");console.log("Stauts: "+status);
                // Check on new body classes
                var erg = response.match(rbodyclass);
                $("body").removeClass().addClass( (erg) ? erg[1] : "" );
                // Insert Content
                $("#wrapper").replaceWith(
                    jQuery("<div />").append(response.replace(rscript, "")).find("#wrapper")
                );
                // CleanUp and ReInit DomReady
                cts_AjaxCleanUp();
                domReady();
                // Show wrapper
                $("#wrapper").fadeIn('slow', function(){cts_AjaxLoading(true)});
                // Track Ajax loads via GA
                if(pageTracker != undefined) {
                    //console.log("Running GA")
                    pageTracker._trackPageview($(link).attr("href"));
                }
                onLoad();
            });
            //}, 6000);
        });
    });
}

/**
 * Loading Animation
 *
 * Info: Because of a Bug in Opera we've first to fade position:fixed overlay and afterwards the rest. otherwise some
 * screen sections are still having the overlay effect
 *
 */
var cts_AjaxLoading_animated = false;
var cts_AjaxLoading_animated_interval = null;
var cts_AjaxLoading = function(stop) {
    //console.log("Show Ajax loader");

    if($("#cts_ajax_loading").size() == 0) {
        //console.log("Inserting Ajax Loader");
        $("body").append($("<div style='display:none' id='cts_ajax_loading'><div id='cts_ajax_loading_overlay'></div><h1>Loading</h1></div>"));
    }
    if(stop == true) {
        $("#cts_ajax_loading").fadeOut('fast');

        if(cts_AjaxLoading_animated_interval != null) clearInterval(cts_AjaxLoading_animated_interval);
    }
    else {
      $("#cts_ajax_loading").fadeIn('slow');
      cts_AjaxLoading_animated_fn_interval();
    }    
}
// Animate logo
var cts_AjaxLoading_animated_fn_interval = function(){
    // Run it first Time
    $("#cts_ajax_loading h1").animate({'opacity':0.2}, 1000, function(){$(this).animate({'opacity':0.9}, 1000)});
    // Set Intervall
    cts_AjaxLoading_animated_interval =
        setInterval(function(){
            $("#cts_ajax_loading h1").animate({'opacity':0.2}, 1000, function(){$(this).animate({'opacity':0.9}, 1000)});
        }, 2000);
}


/**
 * CleanUp after Ajax Request
 */
var cts_AjaxCleanUp = function(){
    //console.log("cleaning Up")
    if(runSlideRss !== null) {
        //console.log("Stopping Intervall:");
        //console.log(runSlideRss);
        clearInterval(runSlideRss);
    }
    slideRSS_index = 0;
}
