var reactivate_scroll_timeout;	// Globale setTimeout Variable für den setTimeout Handler
var nav_position;
var nav_position_left;
var global_dir = '';
var next_tab_handler;

function set_new_sizes(donoscroll) {
	/*
		Setzt neue Größen und Abstände beim resize-Event. Betroffen davon sind:
		• Backlight-Grafik Maße
		• Linker Abstand der T@B-Wrapper
		• Wrapper generell
		• Header Breite
	*/
	
	if(donoscroll != true) {
		jQuery('body').css('overflow-y','hidden');	// Scrollbalken während des Scrollens ausblenden, sonst stimmen die Breiten der div's nicht (+- 17 Pixel)
	}
	
	var header_h = 129;
	
	var b_width  = jQuery(window).width();
	var b_height = jQuery(window).height();
	var w_height = jQuery('#header').height() + jQuery('#tab-wrapper').height() + 25;
	
	var backlight_h = b_height - header_h;
	
	if(w_height > b_height) {
		backlight_h = w_height - header_h;
	}
	
	jQuery('#wrapper').css('width',b_width).css('height',b_height);
	jQuery('#header').css('width',b_width).css('height',header_h);
	jQuery('#backlight').css('width',b_width).css('height',backlight_h+header_h).css('top',0);
	jQuery('.backlight-image > img').css('width',b_width).css('height',backlight_h+header_h);
	
	nav_position = jQuery('#mainmenu').position();
	nav_position_left = nav_position.left;
	
	jQuery('.tab-element').each(function() {
		if(!jQuery(this).hasClass('active')) {
			jQuery(this).find('.tab-car').css('margin-left',(nav_position_left+700)/-1);
		}
	});
	
	// Blendet den Scrollbalken wieder ein (falls nötig) nachdem die neuen Maße gesetzt wurden	
	window.clearTimeout(reactivate_scroll_timeout);
	reactivate_scroll_timeout = window.setTimeout('reactive_scroll()',100);
}

function start_interval_resizer() {
	/*
		Neben dem resize-Event wird generell die Resize-Funktion alle 500ms ausgeführt
	*/	
	set_new_sizes(true);
	window.setInterval(function(){ set_new_sizes(true); },500);
}

function reactive_scroll() {
	/*
		Reaktiviert den Scrollbalken
	*/
	jQuery('body').css('overflow-y','auto');
}

function init_tab_slider() {
	/*
		Hauptfunktion und initiale Animation des T@B-Sliders
	*/
	
	// Liest aktuelle "left"-Position des Mainmenu aus (Der T@B-Wrapper animiert auf den gleichen Wert)
	var left_animateto = jQuery('#mainmenu').css('margin-left');	
	
	// Bereitet die initiale Animation vor, Elemente werden ein/ausgeblendet, IDs werden gesetzt, usw.
	jQuery('#spotlight').fadeOut(0).css('visibility','visible');
	jQuery('body').addClass('tab-animating');
	
	/* 
		Die Animation startet.
		1. Nach 1000ms Wartezeit wird die Hintergrundfarbe (Backlight) gewechselt
		2. Nachdem dies geschehen ist werden die Spotlights und der TV eingeschaltet
		3. Nach dieser Animation fährt der T@B-Wrapper ins Bild - "global_dir" bestimmt die Animation der Räder
	*/
	jQuery('.backlight-image.tabyellow').delay(1000).fadeIn(500, function(){
		jQuery(this).addClass('active');
	});
	jQuery('.backlight-image.active').delay(1000).fadeOut(500, function(){ 
		jQuery(this).removeClass('active');
		
		if(!jQuery.browser.msie) { jQuery('#spotlight').fadeIn(400); }else{ jQuery('#spotlight').fadeIn(0); }
		jQuery('.tab-element.tabyellow .tab-tv').fadeIn(500, function() {
			jQuery('.tab-element.tabyellow').addClass('active').find('.tab-car').css('visibility','visible').animate({'margin-left':left_animateto},1500,'easeOutQuad', function(){ jQuery('body').removeClass('tab-animating'); });
			
			if (jQuery.browser.msie && jQuery.browser.version.substr(0,1)<8) {
			}else{
				global_dir = 'in';
				rotate_the_wheel();
			}
		});
	});
	
	// Belegt die Footer-Buttons mit onclick-Events
	set_switchmenu_handlers('tab_yellow');
}

function jump_to_another_tab(tab, color, check) {
	/*
		Wechselt zwischen den T@Bs.
		Werte die an diese Funktion übergeben werden:
		- tab: Name des T@Bs
		- color: Farbvariante des T@Bs
		- check: Falls 1 übergeben wird, wird überprüft ob das Backlight gewechselt werden muss (1 empfiehlt sich wenn ein T@B mehrere Farbvarianten hat)
		
		Ansonsten verhält sich diese Funktion wie die initiale Animation, definiert in init_tab_slider() nur mit dem Unterschied, das hier erst der vorherige
		T@B-Wrapper rausgefahren wird (inkl. aller damit verbundenen Animationen).
	*/
	var left_animateto = jQuery('#mainmenu').css('margin-left');
	jQuery('body').addClass('tab-animating');
	
	var is_already_fade_dur = 500;
	
	if(check == 1) {
		jQuery('.backlight-image').each(function(){
			if(jQuery(this).hasClass(tab) && jQuery(this).css('display') == 'block') {
				is_already_fade_dur = 0;
			}
		});
	}
	jQuery('.tab-tv').css('z-index',300);
	
	if (jQuery.browser.msie && jQuery.browser.version.substr(0,1)<8) {
	}else{
		global_dir = 'out';
		rotate_the_wheel();
	}
	
	jQuery('.tab-element.active').find('.tab-car').animate({'margin-left':2000},1500,'easeInQuad',function(){
		jQuery(this).css('display','none'); 
		jQuery('.tab-tv').css('z-index',550);
		
		if(!jQuery.browser.msie) { jQuery('#spotlight').fadeOut(400); }else{ jQuery('#spotlight').fadeOut(0); }
		jQuery('.tab-element.active .tab-tv').fadeOut(500,function(){
			jQuery('.backlight-image.active').fadeOut(is_already_fade_dur,function(){ jQuery(this).removeClass('active') });
			jQuery('.backlight-image.'+tab).fadeIn(is_already_fade_dur,function(){
				jQuery(this).addClass('active');
				jQuery('.tab-element.active').removeClass('active');
				
				if(!jQuery.browser.msie) { jQuery('#spotlight').fadeIn(400); }else{ jQuery('#spotlight').fadeIn(0); }
				jQuery('.tab-element.'+tab+color+' .tab-tv').fadeIn(500, function() {
					jQuery('.tab-element.'+tab+color).addClass('active').find('.tab-car').css('visibility','visible').css('display','block').animate({'margin-left':left_animateto},1500,'easeOutQuad', function(){ jQuery('body').removeClass('tab-animating'); });
					
					if (jQuery.browser.msie && jQuery.browser.version.substr(0,1)<8) {
					}else{
						global_dir = 'in';
						rotate_the_wheel();
					}
				});
			});
		});
	});
}

function jump_to_next_tab() {
	if(jQuery('#switchmenu').find('li.active').next('li').length) {
		jQuery('#switchmenu').find('li.active').next('li').children('a').trigger('click');
		init_jump_to_next_tab();
	}else{
		jQuery('#switchmenu').find('li:first').children('a').trigger('click');
		init_jump_to_next_tab();
	}
}

function init_jump_to_next_tab() {
	next_tab_handler = window.setInterval('jump_to_next_tab()',7000);
}

function set_switchmenu_handlers(except) {
	/*
		Gibt den Footer-Links das benötigte onclick-Event um einen T@B-Wechsel zu ermöglichen
	*/
	jQuery('#switchto_tab_white').click(function(){return false;});
	jQuery('#switchto_tab_white').click(function(){ 
		if(!jQuery('body').hasClass('tab-animating') && except != 'tab_white') {
			window.clearInterval(next_tab_handler);
			
			jQuery('#switchto_tab_white').unbind('click');
			jQuery('body').addClass('tab-animating');
			jump_to_another_tab('tabwhite','',0);
			jQuery('#switchmenu > ul > li.active').removeClass('active');
			jQuery(this).parent().addClass('active');
			set_switchmenu_handlers('tab_white');
		}
	});
	
	jQuery('#switchto_tab_silver').click(function(){return false;});
	jQuery('#switchto_tab_silver').click(function(){ 
		if(!jQuery('body').hasClass('tab-animating') && except != 'tab_silver') {
			window.clearInterval(next_tab_handler);
			
			jQuery('#switchto_tab_silver').unbind('click');
			jQuery('body').addClass('tab-animating');
			jump_to_another_tab('tabsilver','',0);
			jQuery('#switchmenu > ul > li.active').removeClass('active');
			jQuery(this).parent().addClass('active');
			set_switchmenu_handlers('tab_silver');
		}
	});
	
	jQuery('#switchto_tab_yellow').click(function(){return false;});
	jQuery('#switchto_tab_yellow').click(function(){
		if(!jQuery('body').hasClass('tab-animating') && except != 'tab_yellow') {
			window.clearInterval(next_tab_handler);
			
			jQuery('#switchto_tab_yellow').unbind('click');
			jQuery('body').addClass('tab-animating');
			jump_to_another_tab('tabyellow','',0);
			jQuery('#switchmenu > ul > li.active').removeClass('active');
			jQuery(this).parent().addClass('active');
			set_switchmenu_handlers('tab_yellow');
		}
	});
	
	jQuery('#switchto_tab_apricot').click(function(){return false;});
	jQuery('#switchto_tab_apricot').click(function(){
		if(!jQuery('body').hasClass('tab-animating') && except != 'tab_apricot') {
			window.clearInterval(next_tab_handler);
			
			jQuery('#switchto_tab_apricot').unbind('click');
			jQuery('body').addClass('tab-animating');
			jump_to_another_tab('tabapricot','',0);
			jQuery('#switchmenu > ul > li.active').removeClass('active');
			jQuery(this).parent().addClass('active');
			set_switchmenu_handlers('tab_apricot');
		}
	});
	
	jQuery('#switchto_tab_green').click(function(){return false;});
	jQuery('#switchto_tab_green').click(function(){
		if(!jQuery('body').hasClass('tab-animating') && except != 'tab_green') {
			window.clearInterval(next_tab_handler);
			
			jQuery('#switchto_tab_green').unbind('click');
			jQuery('body').addClass('tab-animating');
			jump_to_another_tab('tabgreen','',0);
			jQuery('#switchmenu > ul > li.active').removeClass('active');
			jQuery(this).parent().addClass('active');
			set_switchmenu_handlers('tab_green');
		}
	});
	
	jQuery('#switchto_taboffroad').click(function(){return false;});
	jQuery('#switchto_taboffroad').click(function(){
		if(!jQuery('body').hasClass('tab-animating') && except != 'taboffroad') {
			window.clearInterval(next_tab_handler);
			
			jQuery('#switchto_taboffroad').unbind('click');
			jQuery('body').addClass('tab-animating');
			jump_to_another_tab('taboffroad','',0);
			jQuery('#switchmenu > ul > li.active').removeClass('active');
			jQuery(this).parent().addClass('active');
			set_switchmenu_handlers('taboffroad');
		}
	});
	
	jQuery('#switchto_tabl').click(function(){return false;});
	jQuery('#switchto_tabl').click(function(){
		if(!jQuery('body').hasClass('tab-animating') && except != 'tabl') {
			window.clearInterval(next_tab_handler);
			
			jQuery('#switchto_tabl').unbind('click');
			jQuery('body').addClass('tab-animating');
			jump_to_another_tab('tabl','',0);
			jQuery('#switchmenu > ul > li.active').removeClass('active');
			jQuery(this).parent().addClass('active');
			set_switchmenu_handlers('tabl');
		}
	});
}

function fill_tv_boxes() {
	/*
		Befüllt vorab alle TV-Boxen des T@B-Wrappers mit den Navigationspunkten des Mainmenu
	*/
	tabhtml = '<h2>T@B</h2><ul>'+jQuery('.second_lvl').eq(0).find('ul').html()+'</ul>';
	jQuery('.tab-element.tabyellow').find('.tab-tv-text').html(tabhtml);
	jQuery('.tab-element.tabapricot').find('.tab-tv-text').html(tabhtml);
	jQuery('.tab-element.tabgreen').find('.tab-tv-text').html(tabhtml);
	jQuery('.tab-element.tabsilver').find('.tab-tv-text').html(tabhtml);
	
	taboffroadhtml = '<h2>T@B OffRoad</h2><ul>'+jQuery('.second_lvl').eq(2).find('ul').html()+'</ul>';
	jQuery('.tab-element.taboffroad').find('.tab-tv-text').html(taboffroadhtml);
	
	tablhtml = '<h2>T@B L</h2><ul>'+jQuery('.second_lvl').eq(3).find('ul').html()+'</ul>';
	jQuery('.tab-element.tabl').find('.tab-tv-text').html(tablhtml);
	
	tabwhitehtml = '<h2>T@B White</h2><ul>'+jQuery('.second_lvl').eq(1).find('ul').html()+'</ul>';
	jQuery('.tab-element.tabwhite').find('.tab-tv-text').html(tabwhitehtml);
}

function rotate_the_wheel() {
	/*
		Rotiert die Felgen der T@Bs, je nach übergebener global_dir entweder mit OutQuad, oder mit InQuad Easing
	*/
	if(global_dir == 'in') {
		jQuery(".tab-element.active > .tab-car > .tab-wheel > img").rotate({
			angle:0, 
			animateTo:1080, 
			duration:1500,
			easing: jQuery.easing.easeOutQuad
		});
	}
	if(global_dir == 'out') {
		jQuery(".tab-element.active > .tab-car > .tab-wheel > img").rotate({
			angle:0, 
			animateTo:1080, 
			duration:1200,
			easing: jQuery.easing.easeInQuad
		});
	}
}

function set_body_jqready() {
	jQuery('body').addClass('jqready');
}

/**************************************************/
/*************** Eventlisterner *******************/
/**************************************************/

if (window.addEventListener) {
	window.addEventListener("click", _cm_onclick_handler, false);
	document.addEventListener("DOMContentLoaded", _cm_onload_handler, false);
	window.addEventListener("resize", _cm_onresize_handler, false);
	window.addEventListener("keyup", _cm_onkeyup_handler, false);
}
else if(document.attachEvent) {
	document.attachEvent('onclick', _cm_onclick_handler);
	window.attachEvent('onload', _cm_onload_handler);
	window.attachEvent('onresize', _cm_onresize_handler);
	document.attachEvent('onkeyup', _cm_onkeyup_handler);
}

function _cm_onclick_handler() {
	
}

function _cm_onload_handler() {
	set_new_sizes();
	start_interval_resizer();
	set_body_jqready();
	init_tab_slider();
	fill_tv_boxes();
	init_jump_to_next_tab();
}

function _cm_onresize_handler() {
	set_new_sizes();
}

function _cm_onkeyup_handler() {
	
}
