var sliding = 0;
var slideTime = '0';
var dur = '0';

// Set is sliding value
function setSliding(a_ISliding){
	sliding = a_ISliding;
}

// Get is sliding value
function getSliding(){
	return sliding;
}

// Carry out accordian styled effect
function accordion(evt) {
	el = Event.element(evt);
	var eldown = getNextSibling(el);
	if(!eldown)
		return;
		
	//  If element is visible do nothing
	if ($('visible') == el) {
			return;
	}
	if ($('visible') && eldown) {
	
			if( getSliding() == 1 ){

					return false;
					
			}
		
			var elup = getNextSibling($('visible'));

			setSliding( 1 );
			
			parellelSlide( elup, eldown );
			$('visible').id = '';
			
	}
	else{
			setSliding( 1 );
			singleSlide( eldown );
	}
	
	el.id = 'visible';
}
/**
	Hier die Funktion, um das accordion von extern zu steuern: elId ist dabei das aufzuklappende Tab ->
	also sowas wie onmouseover="javascript: accordionExt('id_von_panel_1');" ...
**/
function accordionExt(elId) {
	els = document.getElementById(elId);
	el = els.getElementsByTagName("h3")[0];
	var eldown = getNextSibling(el);
	
	//  If element is visible do nothing
	if ($('visible') == el) {
			return;
	}
	if ($('visible') && eldown) {
	
			if( getSliding() == 1 ){

					return false;
					
			}
		
			var elup = getNextSibling($('visible'));

			setSliding( 1 );
			
			parellelSlide( elup, eldown );
			$('visible').id = '';
			
	}
	else{
			setSliding( 1 );
			singleSlide( eldown );
	}
	
	el.id = 'visible';
}


// Setup accordian initial state
function init() {
		
		var bodyPanels = document.getElementsByClassName('panel_body');
		var panels = document.getElementsByClassName('panel');
		var noPanels = panels.length;
		var percentageWidth = 100 / noPanels;
		var position = 0;
		CheckBrowser();
		//  Loop through body panels and panels applying required styles and adding event listeners
    for (i = 0; i < bodyPanels.length; i++) {
			bodyPanels[i].hide();
			panels[i].style.width = percentageWidth + '%';
			panels[i].style.position = 'absolute';
			panels[i].style.left = position + '%';
			
			Event.observe(panels[i].getElementsByTagName('h3')[0], 'mouseover', accordion, false);
			Event.observe(panels[i].getElementsByTagName('h3')[0], 'mousemove', accordion, false);
			Event.observe(document.body, 'mousemove', resetIdle, false);
			
			position += percentageWidth;
    }
		
		/*if( $('visible') ){
		//  Set panel with id of visible to be initial displayed
			var vis = $('visible').parentNode.id+'-body';
			$(vis).show();
		}*/
		setIdle();
}

// Next sibling method to work around firefox issues
function getNextSibling(startBrother){
	if(!startBrother){
		return false;
	}
	var endBrother=startBrother.nextSibling;
	if(!endBrother){
		return false;
	}
  while(endBrother.nodeType!=1){
    endBrother = endBrother.nextSibling;
  }
  return endBrother;
}

function parellelSlide( elup, eldown ){
		dur = (_NS7)?0.2:0.5;
		new Effect.Parallel(
		[
				new Effect.SlideUp(elup),
				new Effect.SlideDown(eldown)
		], {
				duration: dur,
				afterFinish: function() { setSliding( 0 );}
		});
}

function singleSlide( eldown ){
		dur = (_NS7)?0.2:0.5;
		new Effect.Parallel(
		[
				new Effect.SlideDown(eldown)
		], {
				duration: dur,
				afterFinish: function() { setSliding( 0 );}
		});
}

function resetTabs(){
	dur = (_NS7)?0.2:0.5;
	var resetEl = getNextSibling( $('visible') );
	
	setSliding( 1 );
	
	new Effect.Parallel(
	[
			new Effect.SlideUp( resetEl )
	], {
			duration: dur,
			afterFinish: function() { setSliding( 0 );}
	});
	if($('visible')){
	$('visible').id = '';
	}
}

function resetIdle(){
		if( $('visible') ){
				window.clearTimeout( slideTime );
				slideTime = window.setTimeout( "resetTabs()", 1500 );
		}
}

function setIdle(){
	if( $('visible') ){
		slideTime = window.setTimeout( "resetTabs()", 10000 );
	}
}

// globale Browser/OS Variablen definieren
_DOM=false; _All=false; _NS4=false; _NS6=false; _NS7=false; _OP=false; _IE4=false; _IE5=false; _IE6=false; _OtherBrowser=false; _Mac=false; _Win=false; _OS2=false;

// Browser/OS Variablen setzen
function CheckBrowser(){
	var navAgent=navigator.userAgent.toLowerCase();
	var appVer=navigator.appVersion.toLowerCase();
	var versMinor=parseFloat(appVer);
	var versMajor=parseInt(versMinor);
	_Mac=(navAgent.indexOf("mac")!=-1);
	_Win=((navAgent.indexOf("win")!=-1)||(navAgent.indexOf("16bit")!=-1));
	_OS2=(navigator.platform=="OS/2")?true:false;
	_All=(document.all)?true:false;
	_DOM=(document.getElementById)?true:false;
	_OP=(window.opera)?true:false;
	_SAFARI=(navAgent.indexOf('safari')!=-1)?true:false;
	var iePos=appVer.indexOf('msie');
	if (iePos!=-1){
		versMinor=parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)));
		versMajor=parseInt(versMinor);
		}
	nav6Pos=navAgent.indexOf('netscape6');
	nav7Pos=navAgent.indexOf('netscape/7');
	if (nav6Pos!=-1){
		versMinor=parseFloat(navAgent.substring(nav6Pos+10));
		versMajor=parseInt(versMinor);
		}
	var netsc=((navAgent.indexOf('mozilla')!=-1) && (navAgent.indexOf('spoofer')==-1) && (navAgent.indexOf('compatible') == -1) && (navAgent.indexOf('opera')==-1) && (navAgent.indexOf('webtv')==-1));
	_NS4=(document.layers)?true:false;
	_NS6=(netsc&&versMajor==6);
	_NS7=(netsc);
	var msie=(iePos!=-1);
	_IE4=(msie&&versMajor==4);
	_IE5=(msie&&versMajor==5);
	_IE6=(msie&&versMajor==6);
	_OtherBrowser=(!_NS4&&!_NS6&&!_OP&&!_IE4&&!_IE5&&!_IE6);
}

Event.observe(window, 'load', init, false);
