/**
 * Controller.js
 * $URL: https://hhoettecke@svn.pvtool.org/svn/day_audi_ngw/trunk/ngw_base/frontend/js/audi/audi.navigation.js $
 *
 * @author 		$Author: hhoettecke $
 * @version     $Revision: 5409 $
 * 
 * 
 * @copyright   NEUE DIGITALE GmbH, Berlin
 */

audi_ngw.namespace(audi_ngw, 'controller');

audi_ngw.controller.historyInitDone = false;
if( !audiTimer ) {
	var audiTimer = {};
}


/**
 * Start the whole js-magic...only from here...really ONLY HERE
 *
 * @method domReady
 * @public
 * @return {Void}
 */
audi_ngw.controller.domReady = function(){
	
	
	
	var now = new Date();
	audiTimer.startJs = now.getTime();
	
	// IE 5.5 and lesser aren't supported
    if ($.browser.msie && $.browser.version < 6) {
        return false;
    }
	
	// get relative path to root folder
	if( 'undefined' == typeof audi_ngw.docroot ) {
		audi_ngw.docroot = jQuery('head link[rel="shortcut icon"]').attr('href').split('img/')[0];
	}

	  // prepend docroot to sIFR paths and expressInstall.swf
	audi_ngw.FlashSrcBreadcrumb = audi_ngw.docroot + audi_ngw.FlashSrcBreadcrumb;
	audi_ngw.FlashSrcHeadlines = audi_ngw.docroot + audi_ngw.FlashSrcHeadlines;
	audi_ngw.flashExpressInstallUrl = audi_ngw.docroot + audi_ngw.flashExpressInstallUrl;
	

	// prefix some defined urls with the valid context
	jQuery.each(audi_ngw.config.prefixThisUrls, function(key, theName){
		audi_ngw.config[theName] = audi_ngw.url.prefixUrlWithDomain(audi_ngw.config[theName]);
	});

	
// TODO this needs to be diversified and splitted over several functions	
	audi_ngw.global.initiate();
	audi_ngw.navigation.initiateSocialize();
	
	// initiate some classes
	audi_ngw.region.initiate();
	audi_ngw.flash.prepare();
	audi_ngw.breadcrumb.initialize({});
	audi_ngw.layer.statics.prepare();	
	audi_ngw.track.initiate();
	audi_ngw.event.ajaxTriggers.initiate();
	audi_ngw.iframe.initiate();
	audi_ngw.print.initiate();
	audi_ngw.survey.initiate();
	audi_ngw.animation.initiate();
	audi_ngw.animation.slideDistributor.initialize({sIdWrapper: 'audi_nav_distributor'});
	audi_ngw.animation.simpleAccordion.prepare();
	audi_ngw.animation.accordionPagelevel.initialize({sIdWrapper: 'audi_nav_pagelevel'});
	audi_ngw.animation.teaser.initialize();
	audi_ngw.animation.navdistributor3col.teaser.initialize();
	audi_ngw.animation.teasercalendar.initialize();
	audi_ngw.animation.teaserclicktip.initialize();
	audi_ngw.animation.emointro.initialize({sIdWrapper: '#audi_container_emo'});
	audi_ngw.dom.teaser.initialize();
//TODO rounded-corners from js
	audi_ngw.dom.rounded_corners.initialize();
	audi_ngw.dom.filter.prepare();
	audi_ngw.layer.modal.initialize({});
	audi_ngw.layer.simple.initialize();
	audi_ngw.gallery.prepare();
	audi_ngw.tooltip.prepare();
	audi_ngw.livesearch.initiate();
	audi_ngw.form.prepare();
	audi_ngw.form.validation.initialize({});
	audi_ngw.form.simpleAjax.initialize({});
	audi_ngw.dom.select.initialize();
	audi_ngw.navigation.tab.prepare();
// TEF	audi_ngw.acc.ACCBanner.init();
	audi_ngw.layer.advice.prepare();
	
	
	var $interstitital = jQuery('link[rel*=interstitial]');
	if( 0 < $interstitital.size() ) {
		audi_ngw.layer.modal.showHistory($interstitital.attr('href'));
		audi_ngw.track.onClick($interstitital);
	}
	
		
	// call the update-function to initiate the page
	audi_ngw.navigation.updatePage(jQuery('body'));
	audi_ngw.navigation.bindLinks();
	
	
	audi_ngw.myaudi.prepare();
	
	audi_ngw.controller.callLoadFunctions();
	
  // Initialize history plugin.
  audi_ngw.controller.initHistory();
    
	
	
	
	// bind a function to the event, firing when a modayLayer has been loaded
	audi_ngw.event.bind('ajaxModalContentReady.navigation',audi_ngw.navigation.onAjaxModalContentReady);
	audi_ngw.event.bind('ajaxSnippetReady',audi_ngw.navigation.onAjaxSnippetReady );
	
	
	jQuery(window).load(audi_ngw.controller.onLoad);
	
	if (jQuery("html").hasClass("audi_vdt") && jQuery("html").css("display") == "none") {
		jQuery("html").fadeIn(1500, function(){
			jQuery("html").css("display", 'block');
		});
	}
	
	
	var now = new Date();
	audiTimer.stopJs = now.getTime();
};



audi_ngw.controller.callLoadFunctions = function () {
	
	if( audi_ngw.config.loadFunctions ) {
	
		// call all functions, present in the defined array
		jQuery.each(audi_ngw.config.loadFunctions, function(){
			
			// is it a function? call it.
			if( 'function' === typeof(this) ) {
				this();
			}

		});
	}
	
	// empty the array, so we don't call a function twice
	audi_ngw.config.loadFunctions = [];
};

audi_ngw.controller.initHistory = function() {
	
	if (!audi_ngw.controller.historyInitDone) {

		// The callback is called at once by present location.hash.
		jQuery.history.init(audi_ngw.navigation.handleClick);

		audi_ngw.controller.historyInitDone = true;
	}
	
};

/**
 * Everything that needs to be done at window.onload needs to go here
 *
 * @method onLoad
 * @public
 * @return {Void}
 */
audi_ngw.controller.onLoad = function(){
	

	// On window.load, start sIFR. excute on pageLoad scripts inside flash movies
	audi_ngw.navigation.windowLoaded = true;
	
	// start flash video only if everything on page is loaded

	jQuery(audi_ngw.flash.objects).each(function(){
		var _sId = String(this);
		audi_ngw.api.helper.execute(function(){
			audi_ngw.flash.pageLoaded(_sId);
		},("audi_ngw.flash.pageLoaded_"+_sId));
	});
	
	jQuery('div.con_pdf_download a.audi_trigger_download').each(function(){

		if( jQuery(this).hasClass('audi_trigger_download_same_window') ) {
			window.location.href = this.href;
		} else {
			window.open(this.href);
		}
		
	});
	

	
	

	// track frontend performance
	if( 'function' === typeof(audi_ngw.controller.performance) ) {
		audi_ngw.controller.performance();
	}
		
};




jQuery(audi_ngw.controller.domReady);
