'use strict';

(function($){


    $.extend({
    	aTLD: {},
        animateTimelineOpenStart: function() {
        	if (!$.aTLD.running) {
        		$.aTLD.running = true;
        		$.animateTimelineOpen();
        	}
        },
	    animateTimelineOpen: function() {
			var newTimelineWidth = $.aTLD.timeline.width() + $.aTLD.delta;
	
	    	if (newTimelineWidth > $.aTLD.max) {
	    		$.aTLD.timeline.css({ width: $.aTLD.max });
	    		$.aTLD.searchbox.width($.aTLD.total - $.aTLD.max);
	    		$.aTLD.running = false;
	    	} else {
	    		$.aTLD.timeline.css({ width: newTimelineWidth });
	    		$.aTLD.searchbox.width($.aTLD.total - newTimelineWidth);
	    		setTimeout($.animateTimelineOpen, $.aTLD.timer);
	    	}
	    },
	
	    animateTimelineLayoutOriginState: function() {
            $.aTLD.timeline[0].layoutOriginState();
	    },

	    animateTimelineCloseStart: function() {
	    	if (!$.aTLD.running) {
	    		$.aTLD.running = true;
	    		$.animateTimelineClose();
	    	}
	    },
	    
	    animateTimelineClose: function() {
	    	var newTimelineWidth = $.aTLD.timeline.width() - $.aTLD.delta;
	
			if (newTimelineWidth < $.aTLD.min) {
				$.aTLD.timeline.css({ width: $.aTLD.min });
				$.aTLD.searchbox.width($.aTLD.total - $.aTLD.min);
				$.aTLD.running = false;
			} else {
				$.aTLD.timeline.css({ width: newTimelineWidth });
				$.aTLD.searchbox.width($.aTLD.total - newTimelineWidth);
				setTimeout($.animateTimelineClose, $.aTLD.timer);
			}
	    }
    });

})(jQuery);

var xaxosTimelineInitialized = false;

function minimize() {
    var _gaq = _gaq || [];
    _gaq.push(['_trackEvent', 'Timeline', 'Minimize']);
}

function maximize() {
	$.animateTimelineOpenStart();
	var _gaq = _gaq || [];
	_gaq.push(['_trackEvent', 'Timeline', 'Maximize']);
}

var onButtonClicked = function(lnk) {  
    // Variante (A): entweder per ajax:
    var target_url = lnk[2];
    var _gaq = _gaq || [];
    //$.animateTimelineOpenStart();
    if (xaxosTimelineInitialized===true) {
		$('#main').parent().css({ opacity: 0.5 });
		$.ajax({
		    url: target_url,
		    'dataType': 'html',
		    'type': 'GET',
		    success: function(data, textStatus, jqXHR) {
				$('.slider-image-container').remove();
				$('#footer').prev().remove();
				var $data = $(data);
				var imageSlider = $data.find('.slider-image-container');
				var main = $data.find('#main').parent();
				var historyUrl = jqXHR.getResponseHeader('X-RequestURI') || target_url;
				
				//say(jqXHR.getResponseHeader('X-PageTitle'));
				//say(jqXHR.getAllResponseHeaders());
				if(typeof(window.history.replaceState)==='function') {
				    window.history.replaceState(null, jqXHR.getResponseHeader('X-PageTitle'), historyUrl);
				}

				$.xaxosControllerHandler(imageSlider);
				$.xaxosControllerHandler(main);
		
				$('#footer').before(imageSlider).before(main);
	
				swfTimelineCallback();
				_gaq.push(['_trackEvent', 'Timeline', 'LoadPage', historyUrl]);
				_gaq.push(['_trackPageview', historyUrl]);
		    },
		    complete: function() {
				// window.location.href=target_url; this would reload the page ;(
				$('#main').parent().css({ opacity: 1 });
		    }
		});
    }
    if ( lnk[4] === 3 ) {// has submenu items
        //say('has submenu items');
        return true;
    }
    else {
        //say('resetting origin state');
        $.animateTimelineLayoutOriginState();
        return false;
    }
    
};

var init = false;
var intId;
var data;

var relevant_tag_ids = function() {
	return $.parseJSON($('#relevant_tag_ids').val());
};

var swfTimelineCallback = function() {
    //say('assign timeline');
    var timeline = $('#timeline').get(0);

    $.getJSON( '/swftimeline/tag_map', function(tag_map, textStatus, jqXHR) {
        //say( 'init timeline called' );

        var relevant = relevant_tag_ids();
        var tag_ref;

        if (intId) {
            clearInterval(intId);
            intId=undefined;
        }

        var currentTab = 0, tabCount = 0;
        if (relevant !== null) {
	        for (var i=0; i<relevant.length; i++) {
	            tag_ref = tag_map[ relevant[i] ];
	            if (tag_ref !== undefined && tag_ref.length == 4 ) {
	            	//say( 'set mhh tag_ref', tag_ref );
	            	if (currentTab !== tag_ref[1]) {
	            			timeline.setStateForReference(['items',tag_ref[1]],2);
	            			currentTab = tag_ref[1]; 
	            			tabCount++; 
	            	}
	            	//if (tag_ref[1] !== 1) { openSchwangerschaft = false; }
	            	timeline.setStateForReference(tag_ref,2);
	            	if (relevant.length == 1) {
	            		timeline.rollOverReference(tag_ref);
	            		xaxosTimelineInitialized=false;
	            		timeline.clickReference(['items', tag_ref[1]]);
	            	}
	            } else {
	                //say( 'skip mhh tag_ref', [ tag_ref, i, relevant[i], data ] );
	            }
	        }
        }
        if (tabCount === 1) {

	    xaxosTimelineInitialized=false;
	    timeline.clickReference(['items', currentTab]);

        }
        //say( 'init timeline done' );
        xaxosTimelineInitialized=true;
    });
}

function apiIsAvailable() {
    //say("api is available!");
    if (typeof(swfTimelineCallback) === 'function') {
    	//say('call swfTimelineCallback');
        swfTimelineCallback();
    }
}

function swftlinit() {
    var params = {
	wmode: 'transparent'
    };
    var attributes = {
	id: "timeline",
	name: "timeline"
    }; 

    if (! ( typeof flashvars === 'undefined' )) {
	swfobject.embedSWF(
		"/static/swf/application.swf",
		"timeline",
		"100%",
		"100%",
		"10.0.0",
		"/static/ext/js/swfobject/swfobject/expressinstall.swf",
		flashvars(), params, attributes,
		function(e) {
		    //say("Hi, swfobject callback");
		    /* Initialize the rest of timeline / searchbox, when flash object
		    // is already loaded 
		    // */
		    $.initSearch();
		    //timeline = e.ref;
		}
		);
    }
}
swftlinit();

