//Explode-Funktion siehe PHP
function explode(delimiter, string, limit)
{	var emptyArray = { 0: '' };
	
	// third argument is not required
	if ( arguments.length < 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined' )
	{	return null;
	}

	if ( delimiter === '' || delimiter === false || delimiter === null )
	{	return false;
	}

	if ( typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object' )
	{	return emptyArray;
	}

	if ( delimiter === true )
	{	delimiter = '1';
	}
	
	if (!limit)
	{	return string.toString().split(delimiter.toString());
	}
	else
	{	// support for limit argument
		var splitted = string.toString().split(delimiter.toString());
		var partA = splitted.splice(0, limit - 1);
		var partB = splitted.join(delimiter.toString());
		partA.push(partB);
		return partA;
	}
}

//Element mittels Class-Name ansprechen
function getElementsByClass(searchClass, domNode, tagName)
{	if(domNode == null)
	{	domNode = document;
	}
	
	if(tagName == null)
	{	tagName = '*';
	}
	
	var el = new Array();
	var tags = domNode.getElementsByTagName(tagName);
	var tcl = " "+searchClass+" ";
	for(i=0,j=0; i<tags.length; i++)
	{	var test = " " + tags[i].className + " ";
		if(test.indexOf(tcl) != -1)
		{	el[j++] = tags[i];
		}
	}
	return el;
}

//absolute Position X berechnen
function findPosX(obj)
{	var curleft = 0;
	if(obj.offsetParent)
	{	while(1) 
		{	curleft += obj.offsetLeft;
			if(!obj.offsetParent)
			{	break;
			}
			obj = obj.offsetParent;
		}
	}
	else if(obj.x)
	{	curleft += obj.x;
	}
	return curleft;
}

//absolute Position Y berechnen
function findPosY(obj)
{	var curtop = 0;
  if(obj.offsetParent)
  {	while(1)
    {	curtop += obj.offsetTop;
      if(!obj.offsetParent)
      {	break;
			}
      obj = obj.offsetParent;
    }
	}
  else if(obj.y)
	{	curtop += obj.y;
	}
  return curtop;
}

function browser_version()
{	var nVer = navigator.appVersion;
	var nAgt = navigator.userAgent;
	var browserName  = navigator.appName;
	var fullVersion  = ''+parseFloat(navigator.appVersion); 
	var majorVersion = parseInt(navigator.appVersion,10);
	var nameOffset,verOffset,ix;
	
	// In MSIE, the true version is after "MSIE" in userAgent
	if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
	 browserName = "Microsoft Internet Explorer";
	 fullVersion = nAgt.substring(verOffset+5);
	}
	// In Opera, the true version is after "Opera" 
	else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
	 browserName = "Opera";
	 fullVersion = nAgt.substring(verOffset+6);
	}
	// In Chrome, the true version is after "Chrome" 
	else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
	 browserName = "Chrome";
	 fullVersion = nAgt.substring(verOffset+7);
	}
	// In Safari, the true version is after "Safari" 
	else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
	 browserName = "Safari";
	 fullVersion = nAgt.substring(verOffset+7);
	}
	// In Firefox, the true version is after "Firefox" 
	else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
	 browserName = "Firefox";
	 fullVersion = nAgt.substring(verOffset+8);
	}
	// In most other browsers, "name/version" is at the end of userAgent 
	else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) 
	{
	 browserName = nAgt.substring(nameOffset,verOffset);
	 fullVersion = nAgt.substring(verOffset+1);
	 if (browserName.toLowerCase()==browserName.toUpperCase()) {
		browserName = navigator.appName;
	 }
	}
	// trim the fullVersion string at semicolon/space if present
	if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix);
	if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix);
	
	majorVersion = parseInt(''+fullVersion,10);
	if (isNaN(majorVersion)) {
	 fullVersion  = ''+parseFloat(navigator.appVersion); 
	 majorVersion = parseInt(navigator.appVersion,10);
	}
	
	//document.write('Browser name  = '+browserName+'<br>');
	//document.write('Full version  = '+fullVersion+'<br>');
	//document.write('Major version = '+majorVersion+'<br>');
	//document.write('navigator.appName = '+navigator.appName+'<br>');
	//document.write('navigator.userAgent = '+navigator.userAgent+'<br>');
	
	return (browserName + '::' + fullVersion + '::' + majorVersion + '::' + navigator.appName + '::' + navigator.userAgent);
}

//Subnavigation
function togglenav(divid)
{	//genutzte Variablen
	var page_left, page_top, page_width, browser, nav_left, nav_top, helper, div_subnav, subnav_width, max_width, current_width, diff, subnav_left_neu, subnav_div;
		
	//PAGE-DIV
	page_left = document.getElementById('page').offsetLeft;
	page_top = document.getElementById('page').offsetTop;
	page_width = document.getElementById('page').offsetWidth;
	
	//Broser und dessen Version
	browser = browser_version();
	helper_browser = explode('::',browser);
	
	//Position des NAV-DIVs herausfinden
	if(helper_browser[0] == 'Microsoft Internet Explorer' && helper_browser[2] <= '7')
	{	//IE6 und IE7
		if(document.getElementById(divid).offsetLeft == 0)
		{	nav_left = findPosX(document.getElementById(divid));
		}
		else
		{	diff_x = findPosX(document.getElementById(divid)) - document.getElementById(divid).offsetLeft;
			nav_left = document.getElementById(divid).offsetLeft + diff_x;
		}
		
		nav_top = findPosY(document.getElementById(divid));
	}
	else if(helper_browser[0] == 'Safari' && helper_browser[2] <= '312')
	{	//IE6 und IE7
		if(document.getElementById(divid).offsetLeft == 0)
		{	nav_left = findPosX(document.getElementById(divid));
		}
		else
		{	diff_x = findPosX(document.getElementById(divid)) - document.getElementById(divid).offsetLeft;
			nav_left = document.getElementById(divid).offsetLeft + diff_x;
		}
		
		nav_top = findPosY(document.getElementById(divid));
	}
	else
	{	//IE8, FF, Opera, Safari, Chrome
		nav_left = document.getElementById(divid).offsetLeft;
		nav_top = document.getElementById(divid).offsetTop;
	}
		
	//String in zwei Teile zerlegen, mittels "_"
	helper = explode('_', divid);

	//"Daten" des SUBNAV-DIVs holen
	div_subnav = document.getElementById(helper[0] + '_subnav');
	div_pfeil = document.getElementById(helper[0] + '_subnav_pfeil');
	
	//Breite des SUBNAV.DIVs erfahren
	subnav_width = div_subnav.offsetWidth;
	
	//maximale und derzeitige Breite berechnen				
	max_width = page_left + page_width;
	current_width = nav_left + subnav_width;
	diff = current_width - max_width;
	
	//SUBNAV-DIV positionieren				
	if(max_width < current_width)
	{	//Berechnung des linken Punktes der Subnavigation
		subnav_left_neu = nav_left - 10 - diff;
	
		//extra Positionierung
		div_subnav.style.left = subnav_left_neu + 'px';
		div_subnav.style.top = (nav_top -  40) + 'px';
		
		//div_pfeil.style.marginLeft = '16px';
		div_pfeil.style.marginLeft = (nav_left - subnav_left_neu + 16) + 'px';
	}
	else
	{	//normale Positionierung
		div_subnav.style.left = (nav_left + 1) + 'px';
		div_subnav.style.top = (nav_top - 40) + 'px';
	}

	//alle SUBNAV-DIVs ausblenden
	subnav_div = getElementsByClass('subnav');
	
	for(i = 0; i < subnav_div.length; i++)
	{	subnav_div[i].style.visibility = 'hidden';
	}
	
	//SUBNAV-DIV anzeigen				
	div_subnav.style.visibility = 'visible';
}
