// Wenn Dokument geladen ist
$(window).load(function ()
{
	// Menu initialisieren
	bioDownMenu.init();
	
});

var bioDownMenu = function(){}
bioDownMenu.mainname = 'worlds';
bioDownMenu.clickHasEffect = true;
bioDownMenu.tout = new Array();
bioDownMenu.init = function()
{
		// anzeigen bei hover
		$('#' + bioDownMenu.mainname + ' > li')
			.hover(function(eventObj){bioDownMenu.showMenu($(eventObj.currentTarget).contents('ul'));}
				,function(eventObj){bioDownMenu.delayedHideMenu($(eventObj.currentTarget).contents('ul'));});
		
		// bei click auf bild wechseln zwischen sichtbarkeit
		$('#' + bioDownMenu.mainname + ' img.drop')
			.click(function(eventObj)
			{
				// pruefen ob klick effekt haben soll
				if(!bioDownMenu.clickHasEffect){return;}
				bioDownMenu.switchMenu($(eventObj.currentTarget).parents('li').contents('ul'));
			});
}


// menu anzeigen
bioDownMenu.showMenu = function(menuToShow)
{
	// abbrechen von timeouts
	var i = 20;
	while(bioDownMenu.tout.length >0)
	{
		i--;
		if(i==0)
		{
			return;
		}
		if(typeof bioDownMenu.tout[0] != 'undefined')
		{
			window.clearTimeout(bioDownMenu.tout[0]);
		}
		bioDownMenu.tout.shift();
	}
	bioDownMenu.tout = new Array();
	
	// wenn elements bereits sichtbar, brechen wir ab
	if($(menuToShow).css('display')=='block')
	{
		return;
	}
	
	// wenn grad frisch eingeblendet, dann nicht sofort wieder ausblenden via click
	// disable click for a moment
	bioDownMenu.disableClickEffectForAMoment();
	
	// immer nur ein offenes anzeigen
	// darum alle schliessen bevor runterkommt
	$('#' + bioDownMenu.mainname + ' > li > ul').each(function(index){bioDownMenu.hideMenu(this)});
	
	// einblenden
	try
	{
		$(menuToShow).slideDown('fast');
	}catch(e){};
}

// menu verstecken
bioDownMenu.hideMenu = function(menuToHide)
{
	try
	{
		$(menuToHide).slideUp('fast');
	}catch(e){};
}
// auslosen des menuversteckens nach einer gewissen zeit
bioDownMenu.delayedHideMenu = function(menuToHide)
{
	try
	{
		bioDownMenu.tout.push(window.setTimeout(function(){ bioDownMenu.hideMenu(menuToHide); }, 500)); 
	}
	catch(e){}
}

// menu anzeigen oder verstecken, je nach zustand
bioDownMenu.switchMenu = function(menuToSwitch)
{
	if($(menuToSwitch).css('display')=='block')
	{
		bioDownMenu.hideMenu(menuToSwitch);
	}
	else
	{
		bioDownMenu.showMenu(menuToSwitch);
	}
}

// setzt den click event fuer einen Moment aus
bioDownMenu.disableClickEffectForAMoment = function()
{
	// wenn schon false ist dann sein lassen
	if(bioDownMenu.clickHasEffect==false)
	{
		return;
	}
	
	bioDownMenu.clickHasEffect = false;
	// click nach kurzer spanne wieder einschalten
	window.setTimeout(function(){ bioDownMenu.clickHasEffect = true; },500);
}



/**
* grosse hometeaser
* benoetigt jquery
*/
/*var hbt = function(idHolder)
{
	// anzahl milisek zwischen Wechsel
	this.timeToChange = 4000;
	this.currentTeaserNr = 0;
	// holder merken
	this.idHolder = idHolder;
	// unsere teaser selektieren und merken
	this.bigChildren = $('#'+ this.idHolder).children('.hbt');
	// teaserNav
	this.teaserNav = $('#'+ this.idHolder + ' > .hbtbuttons');
	this.teaserNavChildren = this.teaserNav.children('.hbtbutton');

	// methode um teaser einzublenden
	this.showTeaser = function(teaserNr)
	{
		// pruefen ob nummer nicht zu gross
		if(teaserNr > (this.bigChildren.length - 1))
		{
			teaserNr = 0;
		}
		// aktueller Teaser
		this.currentTeaserNr = teaserNr;
		// nav anpassen
		this.showActiveTeaserNav();
		// alle ausblenden
		this.bigChildren.fadeOut('slow');
		// aktuellen einblenden
		this.bigChildren.eq(teaserNr).fadeIn('slow');
	}
	
	// den naechsten Teaser anzeigen
	this.nextTeaser = function()
	{
		this.showTeaser(this.currentTeaserNr + 1);
	}
	
	// wechsel starten
	this.startAutoSwitch = function()
	{
		// starten des Timers
		var myhbt = this;
		this.interval = window.setInterval(function(){myhbt.nextTeaser();},this.timeToChange);
	}
	
	// autoswitch stoppen
	this.stopAutoSwitch = function()
	{
		try
		{
			window.clearInterval(this.interval);
		}catch(e){}
	}
	
	// alle events zuweisen
	this.bindEvents = function()
	{
		var myhbt = this;
		// wenn wir mit Maus ueber teaser sind, das ueberblenden aussetzen
		$('#'+ this.idHolder).hover(function(){ myhbt.stopAutoSwitch();},function(){myhbt.startAutoSwitch();});
		
		// click fuer navi
		this.teaserNavChildren.click(function(eventObject){myhbt.teaserNavClicked(eventObject);});
		
		// hover ueber Navi
		this.teaserNavChildren.hover(function(eventObject){ myhbt.markHoverdTeaserNav(eventObject);},function(){myhbt.showActiveTeaserNav();});
		
	}
	
	// Teaser Nav anzeigen
	this.initTeaserNav = function()
	{
		// Teaser Nav sichtbar
		this.teaserNavChildren.hide();
		this.teaserNav.show();
	}
	
	this.showActiveTeaserNav = function()
	{
		this.markTeaserNav(this.currentTeaserNr);
	}
	
	// Teaser Navs selektieren
	this.markTeaserNav = function(teaserNr)
	{
		this.teaserNavChildren.not(this.teaserNavChildren.eq(teaserNr)).fadeTo('fast', 0.7);
		this.teaserNavChildren.eq(teaserNr).fadeTo('fast',1);
	}
	
	this.markHoverdTeaserNav = function(eventObject)
	{
		// rausfinden ueber welcher nummer hover ist
		// entsprechenden Eintrag anzeigen
		this.teaserNavChildren.eq($(eventObject.currentTarget).prevAll('.hbtbutton').length).fadeTo('fast',1);
		
	}
	// element der teaserNav geklicket entsprechend dieses anzeigen
	this.teaserNavClicked = function(eventObject)
	{
		// rausfinden welche nummer geklickt wurde
		// entsprechenden Eintrag anzeigen
		this.showTeaser($(eventObject.currentTarget).prevAll('.hbtbutton').length);
	}
	
	// sofort alle teaser verstecken
	this.bigChildren.hide();
	// teaser sind jetzt absolut positioniert damit nicht hoppelt
	this.bigChildren.css('position','absolute');
	// einblenden der teaser Navigation
	this.initTeaserNav();
	// einblenden des ersten
	this.showTeaser(0);
	// starten des Timers
	this.startAutoSwitch();
	// events zuweisen
	this.bindEvents();
}*/

function Hbt(idHolder)
{
	// anzahl milisek zwischen Wechsel
	this.timeToChange = 4000;
	this.currentTeaserNr = 0;
	// holder merken
	this.idHolder = idHolder;
	// unsere teaser selektieren und merken
	this.bigChildren = $('#'+ this.idHolder).children('.hbt');
	// teaserNav
	this.teaserNav = $('#'+ this.idHolder + ' > .hbtbuttons');
	this.teaserNavChildren = this.teaserNav.children('.hbtbutton');


	// sofort alle teaser verstecken
	this.bigChildren.hide();
	// teaser sind jetzt absolut positioniert damit nicht hoppelt
	this.bigChildren.css('position','absolute');
	// einblenden der teaser Navigation
	this.initTeaserNav();
	// einblenden des ersten
	this.showTeaser(0);
	// starten des Timers
	this.startAutoSwitch();
	// events zuweisen
	this.bindEvents();
}
	
	
	// methode um teaser einzublenden
	Hbt.prototype.showTeaser = function(teaserNr)
	{
		// pruefen ob nummer nicht zu gross
		if(teaserNr > (this.bigChildren.length - 1))
		{
			teaserNr = 0;
		}
		// aktueller Teaser
		this.currentTeaserNr = teaserNr;
		// nav anpassen
		this.showActiveTeaserNav();
		// alle ausblenden
		this.bigChildren.fadeOut('slow');
		// aktuellen einblenden
		this.bigChildren.eq(teaserNr).fadeIn('slow');
	}
	
	// den naechsten Teaser anzeigen
	Hbt.prototype.nextTeaser = function()
	{
		this.showTeaser(this.currentTeaserNr + 1);
	}
	
	// wechsel starten
	Hbt.prototype.startAutoSwitch = function()
	{
		// starten des Timers
		var myhbt = this;
		this.interval = window.setInterval(function(){myhbt.nextTeaser();},this.timeToChange);
	}
	
	// autoswitch stoppen
	Hbt.prototype.stopAutoSwitch = function()
	{
		try
		{
			window.clearInterval(this.interval);
		}catch(e){}
	}
	
	// alle events zuweisen
	Hbt.prototype.bindEvents = function()
	{
		var myhbt = this;
		// wenn wir mit Maus ueber teaser sind, das ueberblenden aussetzen
		$('#'+ this.idHolder).hover(function(){ myhbt.stopAutoSwitch();},function(){myhbt.startAutoSwitch();});
		
		// click fuer navi
		this.teaserNavChildren.click(function(eventObject){myhbt.teaserNavClicked(eventObject);});
		
		// hover ueber Navi
		this.teaserNavChildren.hover(function(eventObject){ myhbt.markHoverdTeaserNav(eventObject);},function(){myhbt.showActiveTeaserNav();});
		
	}
	
	// Teaser Nav anzeigen
	Hbt.prototype.initTeaserNav = function()
	{
		// Teaser Nav sichtbar
		this.teaserNavChildren.hide();
		this.teaserNav.show();
	}
	
	Hbt.prototype.showActiveTeaserNav = function()
	{
		this.markTeaserNav(this.currentTeaserNr);
	}
	
	// Teaser Navs selektieren
	Hbt.prototype.markTeaserNav = function(teaserNr)
	{
		this.teaserNavChildren.not(this.teaserNavChildren.eq(teaserNr)).fadeTo('fast', 0.7);
		this.teaserNavChildren.eq(teaserNr).fadeTo('fast',1);
	}
	
	Hbt.prototype.markHoverdTeaserNav = function(eventObject)
	{
		// rausfinden ueber welcher nummer hover ist
		// entsprechenden Eintrag anzeigen
		this.teaserNavChildren.eq($(eventObject.currentTarget).prevAll('.hbtbutton').length).fadeTo('fast',1);
		
	}
	// element der teaserNav geklicket entsprechend dieses anzeigen
	Hbt.prototype.teaserNavClicked = function(eventObject)
	{
		// rausfinden welche nummer geklickt wurde
		// entsprechenden Eintrag anzeigen
		this.showTeaser($(eventObject.currentTarget).prevAll('.hbtbutton').length);
	}
	


Hbtcombi.prototype = new Hbt();
Hbtcombi.prototype.constructor = Hbtcombi;
function Hbtcombi(idHolder,idMiddleTeaser)
{
	// anzahl milisek zwischen Wechsel
	this.timeToChange = 4000;
	this.currentTeaserNr = 0;
	// holder merken
	this.idHolder = idHolder;
	this.idMiddleTeaser = idMiddleTeaser;
	
	// unsere teaser selektieren und merken
	this.bigChildren = $('#'+ this.idHolder).children('.hbt');
	// teaserNav
	this.teaserNav = $('#'+ this.idHolder + ' > .hbtbuttons');
	this.teaserNavChildren = this.teaserNav.children('.hbtbutton');

	// middle Teasers selektieren und merken
	this.middleTeaserChildren = $('#'+ this.idMiddleTeaser).children('.hstmiddleChangeHolder');
	
	// sofort alle teaser verstecken
	this.bigChildren.hide();
	// teaser sind jetzt absolut positioniert damit nicht hoppelt
	this.bigChildren.css('position','absolute');
	// auch middleTeaser sind absolute
	this.middleTeaserChildren.css('position','absolute');
	// einblenden der teaser Navigation
	this.initTeaserNav();
	// einblenden des ersten
	this.showTeaser(0);
	// starten des Timers
	this.startAutoSwitch();
	// events zuweisen
	this.bindEvents();
}
	// methode um teaser einzublenden
	Hbtcombi.prototype.showTeaser = function(teaserNr)
	{
		if(typeof this.middleTeaserChildren=='undefined')
		{
			return;
		}
		// pruefen ob nummer nicht zu gross
		
		
		if(teaserNr > (this.middleTeaserChildren.length - 1))
		{
			teaserNr = 0;
		}
		
		//Hbt.prototype.showTeaser.call(this,teaserNr);

		
		// aktueller Teaser
		this.currentTeaserNr = teaserNr;
		// nav anpassen
		this.showActiveTeaserNav();
		// alle ausblenden
		this.bigChildren.fadeOut('slow');
		// aktuellen einblenden
		this.bigChildren.eq(teaserNr).fadeIn('slow');
		
		// alle ausblenden
		this.middleTeaserChildren.fadeOut('slow');
		// aktuelle Middle einblenden
		this.middleTeaserChildren.eq(teaserNr).fadeIn('slow');
	}
	
	// alle events zuweisen
	Hbt.prototype.bindEvents = function()
	{
		var myhbt = this;
		// wenn wir mit Maus ueber teaser sind, das ueberblenden aussetzen
		$('#'+ this.idHolder).hover(function(){ myhbt.stopAutoSwitch();},function(){myhbt.startAutoSwitch();});
		
		$('#'+ this.idMiddleTeaser).hover(function(){ myhbt.stopAutoSwitch();},function(){myhbt.startAutoSwitch();});
		
		// click fuer navi
		this.teaserNavChildren.click(function(eventObject){myhbt.teaserNavClicked(eventObject);});
		
		// hover ueber Navi
		this.teaserNavChildren.hover(function(eventObject){ myhbt.markHoverdTeaserNav(eventObject);},function(){myhbt.showActiveTeaserNav();});
		
	}

