
/**
 * lokal@TODO: 
 * - documentation
 * - clean up, add functions to namespaces
 * - remove global vars: $mainContainer 53, _parentlen 271, audi_ngw_animate_hide_pagelevelnav 151, audi_ngw_enable_regionselector 188, audi_ngw_fix_pagelevelnav 180, audi_ngw_hidepagelevelnav 130 154 172, audi_ngw_showpagelevelnav 110 169 181, 
 */

audi_ngw.namespace(audi_ngw, 'global');

audi_ngw.global.initiate = function() {
	
	
	jQuery('input.audi_login_label').defaultValue();
	

	// add rounded corners (at the bottom) to the model-navigation
	jQuery('#audi_navigation_model > li > ul').each(function(){
		jQuery('li:last', this).after('<li class="last">&nbsp;</li>');
	});
	
	
	
	
	// slideDown the model-navigation on hover
	jQuery('#audi_navigation_model > li, #audi_navigation_model_extended > li').hover(function(){

		var li = jQuery(this);
		li.addClass('active');
		jQuery('a', li).addClass('active');
		
		//$('#audi_navigation_model_extended li ul.one_column li ul li a').addClass('active');
		audi_ngw.flash.pauseAll();
		//audi_ngw.flash.overlayHide();
		
		var $element = jQuery('> ul', li).css('visibility', 'visible').hide().slideDown('normal', function(){
			jQuery('#audi_navigation_iframe').css({
				height: $element.outerHeight() + 'px',
				width: $element.outerWidth()-2 + 'px'
			});
			
			jQuery('#audi_navigation_model_extended #audi_navigation_iframe').css({
				height: $element.outerHeight() + 'px',
				width: $element.outerWidth()-12 + 'px'
			});
			

			if( 0 !== jQuery(this).parents('#audi_navigation_model_extended').size() ) {
				var left = parseInt(jQuery(this).css('left'), 10);
				jQuery('#audi_navigation_iframe').css('left',  left + 'px');
			}
			
			
		});		

		if (jQuery.browser.msie === true && parseFloat(jQuery.browser.version) < 6.5 ) {	
			jQuery('<iframe id="audi_navigation_iframe" src="">').appendTo($element.parent());
		}
		
	}, function(){	
		var li = jQuery(this);
		li.removeClass('active');
		jQuery('a', li).removeClass('active');
		jQuery('> ul', li).css('visibility', 'hidden');
		jQuery('#audi_navigation_iframe').remove();
		//audi_ngw.flash.overlayShow();
		audi_ngw.flash.resumeAll();
	});


	jQuery('#audi_navigation_model li li').hover(function(){
		jQuery(this).addClass('hover');
	}, function(){
		jQuery(this).removeClass('hover');
	});

	// slideDown the sitemap and the homepage navigation-items
	jQuery('#audi_navigation_main_sitemap, #audi_navigation_main > li').hover(function(){
		jQuery('a', this).addClass('active');
		//audi_ngw.flash.overlayHide();
		audi_ngw.flash.pauseAll();
		var $element = jQuery('.audi_navigation_main_overlay, .audi_navigation_main_sub', this).hide().slideDown('normal', function(){
			
			// DANG-3977: remove padding inline-style, set by slideDown
			jQuery(this).css({'padding-bottom': '', 'padding-top': ''});

			jQuery('#audi_navigation_iframe').css({
				height: $element.outerHeight() + 'px',
				width: $element.outerWidth()-2 + 'px'
			});
			
		});

		if ( jQuery.browser.msie === true && parseFloat(jQuery.browser.version) < 6.5 ) {	
			if( 'audi_navigation_main_sitemap' == $element.parent().attr('id') ) {
				jQuery('<iframe id="audi_navigation_iframe" src="">').prependTo($element.parent());
			} else {
				jQuery('<iframe id="audi_navigation_iframe" src="">').appendTo($element.parent());
			}
			
		}
	}, function(){
		jQuery('a', this).removeClass('active');
		jQuery('#audi_navigation_iframe').remove();
		jQuery('.audi_navigation_main_overlay, .audi_navigation_main_sub', this).stop().hide().css('height', '');
		//audi_ngw.flash.overlayShow();
		audi_ngw.flash.resumeAll();
	});
	
	jQuery('#audi_navigation_main_sitemap').hover(function(){
		jQuery(this).addClass('audi_navigation_main_sitemap_button_active');
	}, function(){
		jQuery(this).removeClass('audi_navigation_main_sitemap_button_active');
	});
	
	
	jQuery('#audi_navigation_flash > li > a').bind('click', function(){
		
		// return true, if the flash is not on this page => browser link-handling
		if( 0 === jQuery('.audi_flash_r8').size() ) {
			return true;
		}
		
		
		var $this = jQuery(this);
		try {
			var movieId = $this.metadata().id;
		} catch(e) {}
		if( 'undefined' === typeof(movieId) ) {
			movieId = 0;
		}
		
		audi_ngw.flash.selectMovie(movieId);

		return false;
		
	});
	
	
	// 40px footer rule - call every time the window is resized
	jQuery(window).resize(function(){
		
		$mainContainer = jQuery('#audi_container_main');
		if( 0 === $mainContainer.size() ) {
			return false;
		}
	
		var setFooterRelative = false;
		
		
		// resize the flash-stage, if we are on the homepage
		// just resize on template a-1 and a-2
		if( 0 !== jQuery('.template-a-1 .audi_main_flash_stage, .template-a-2 .audi_main_flash_stage').length && 0 === jQuery('html.audi_iph').length ) {
			
			if( 0 !== jQuery('html.audi_iph').size() || 0 !== jQuery('.noScale').size() || 0 !== jQuery('.teaser_big').size() ) {
				return;
			}
			
			var currentViewportHeight = jQuery(window).height();
			
			var minViewportHeight = 598;
			var maxViewportHeight = 757;
			
			var size = 295 + 24;
			size = 71 + 35 + 9 + 135 + 4 + 44 + 5      + 25;

			/**@todo As these values are generated by the BE it might be a good idea to implement some kind of validation. Just in case...*/
			var minFlashHeight = parseInt(jQuery('.audi_main_flash_stage').css('min-height'), 10);
			var maxFlashHeight = parseInt(jQuery('.audi_main_flash_stage').css('max-height'), 10);
			var projectedHeight = 0;
			minViewportHeight = size + minFlashHeight;
			maxViewportHeight = size + maxFlashHeight;

			if(currentViewportHeight > minViewportHeight){			

				 projectedHeight = currentViewportHeight - size;
				/* main stage height has to be an odd number, because 2 personalized teasers need 1 px between them */
				projectedHeight = (projectedHeight % 2 === 0) ? projectedHeight + 1 : projectedHeight; 
				projectedHeight = Math.min(projectedHeight, maxFlashHeight);

			} else {
				projectedHeight = minFlashHeight;
			}
			if( (jQuery.browser.msie && jQuery.browser.version < 7) || (maxFlashHeight > projectedHeight) ) {
				setFooterRelative = true;
			} 

			// set the height of the elements
			jQuery('.audi_main_flash_stage').height(projectedHeight);
			jQuery('.con_teaser_home_splitstage_dynamic').height(projectedHeight).find('li').height(projectedHeight / 2 - 24).find('.teaser_home_image').height((projectedHeight / 2 - 24) - 30);

		}
		
		
		
			
			var height = jQuery(window).height();
			var offset = $mainContainer.offset();
			var newHeight = offset.top + $mainContainer.height() + parseInt($mainContainer.css('margin-top'), 10);
			var newDiff = height - newHeight;
	
			// if the difference between the footer and the main_container is greater than 40px, the footer will be positioned relative below the content
			// in all the other case, the footer is fixed on the bottom of the browser window
			if( true === setFooterRelative || 50 < newDiff ) {
				jQuery('#audi_container_main').removeClass('audi_main_container_footer');

				if (jQuery.browser.mozilla && (jQuery.browser.version.split(".")[0] + "." + jQuery.browser.version.split(".")[1]) < 1.9) {
					jQuery('#audi_container_footer').css('position', 'relative');
				} else {
					jQuery('#audi_container_footer').addClass('audi_container_footer_relative');
				}
			} else {
				jQuery('#audi_container_main').addClass('audi_main_container_footer');

					if (jQuery.browser.mozilla && (jQuery.browser.version.split(".")[0] + "." + jQuery.browser.version.split(".")[1]) < 1.9) {
						jQuery('#audi_container_footer').css('position', 'fixed').removeClass('audi_container_footer_relative');
					} else {
						jQuery('#audi_container_footer').removeClass('audi_container_footer_relative');
					}
					//jQuery('#audi_container_footer').removeClass('audi_container_footer_relative');
		
			}
			
		

		
	});
	// call the just initiated function
	jQuery(window).resize();
	// call it again after a second because the height might have changed (footnotes, flash, ...)
	window.setTimeout("jQuery(window).resize()", 1000);

	/*
	 * show country locator and disable pagele
	 */
	audi_ngw_enable_regionselector = function(event){
		jQuery('.audi_container_emo_flash').unbind('mouseover').unbind('mouseout');
		jQuery('#audi_con_com_region').css('display','block');
	};

	/**
	 * Set Border of h1 to full len of parent element
	 */
	if(jQuery(".sIFR").hasClass("audi_h1_border")){
		_parentlen = jQuery(".sIFR").parent().width()-2;
		jQuery(".audi_h1_border").width(_parentlen);
	}
	
	
	
};




jQuery(function(){
	audi_ngw.global.video();
});


audi_ngw.global.videoElement = {};


audi_ngw.global.video = function () {
	
	audi_ngw.global.videoElement = jQuery('#audi_home_video_stage');
	if( 0 === audi_ngw.global.videoElement.length ) {
		return;
	}
	audi_ngw.global.videoElement = audi_ngw.global.videoElement[0];


	jQuery('#audi_home_video_sidebar li').bind('click.select', audi_ngw.global.videoSelect);
	jQuery('#audi_home_video_stage').bind('ended.video', audi_ngw.global.videoEnded);
	jQuery('#audi_home_video_sidebar').bind('click.sidebar', audi_ngw.global.videoSidebarToggle);
	jQuery('#audi_home_video_sidebar').bind('mouseenter.sidebar', audi_ngw.global.videoSidebarToggle);
	jQuery('#audi_home_video_sidebar').bind('mouseleave.sidebar', audi_ngw.global.videoSidebarToggle);
	audi_ngw.global.videoEnded();
	
	window.setTimeout(audi_ngw.global.videoSidebarToggle, 1000);
};

audi_ngw.global.videoSidebarToggle = function () {

	var $sidebar = jQuery('#audi_home_video_sidebar'),
		sidebarLeft = $sidebar.css('left');
		
	if( '0px' == sidebarLeft ) {
		$sidebar.animate({left: '-134px'});
	} else {
		$sidebar.animate({left: '0px'});
	}
	
};



audi_ngw.global.videoSelect = function () {

	var $link = jQuery(this),
		metadata = $link.metadata();
	
	
	if( jQuery.browser.mozilla || jQuery.browser.opera ) {
		audi_ngw.global.videoElement.src = metadata.srcOgg;
	} else {
		audi_ngw.global.videoElement.src = metadata.srcMp4;
	}
	
	
	jQuery('#audi_home_video_sidebar li.playVideo').removeClass('playVideo');
	$link.addClass('playVideo');
	
	audi_ngw.global.videoElement.load();	
	audi_ngw.global.videoElement.play();

	
	return false;
};	

audi_ngw.global.videoEnded = function () {
	var $newVideo = jQuery('#audi_home_video_sidebar li.playVideo').next('li.activeVideo');
	
	if( 0 === $newVideo.length ) {
		$newVideo = jQuery('#audi_home_video_sidebar li.activeVideo').eq(0);
	}
	
	$newVideo.trigger('click');
	
	
};

