
/** global variables ***/
var arrNaviDefault = new Array( ) ;
var arrNaviActive = new Array( ) ;
var intNavItemCount = 0 ;
var intCurrentNav = 0 ;
var intActiveNav = 0 ;
var strCSSActive = " highlight" ;
var reAttrRemove = new RegExp( "\s*" + strCSSActive + "\s*", "i" ) ;



function openPopup( intWidth, intHeight, strURL )
{
	var iLeft = screen.width / 2 - intWidth/2 ;
	var iTop = screen.height / 2 - intHeight/2 ;
	intWidth = intWidth || 500 ;
	intHeight = intHeight || 500 ;
	strURL = strURL && strURL.length ? strURL : "about:blank" ;
	var winLBSPopup = window.open( strURL,"lbsPopup","width=" + intWidth + ",height=" + intHeight + ",left=" + iLeft + ",top=" + iTop + ",scrollbars=yes,dependent=yes,menubar=no" );
	if( winLBSPopup )
		winLBSPopup.focus() ;
	return false;
}


/** init main and section navigation **/
function initLBSNav( )
{
	if( !document.getElementById )
		return ;
	if( initMainnav( ) )
	{
		createSubnavigation( ) ;
		setSubnavEvents( ) ;
		aufzuInit();
	}
	setMarkerEvents( document.getElementById( "sectionnavi" ) );
	permuteSubmitButtons( ) ;
}


/****************************************
*		Main navigation                 *
*****************************************/

function initMainnav( )
{
	if( document.getElementById( "mainnavigation" ) &&
		document.getElementById( "mainnavigation" ).getElementsByTagName( "img" ).length )
	{
		intNavItemCount = document.getElementById( "mainnavigation" ).getElementsByTagName( "img" ).length;
		for( var i = 1; i <= intNavItemCount; i++ )
		{
			var imgMouseover = eval( "MAINNAV_" + i + "_ACT" ) ;
			if( trimString( imgMouseover ).length )
			{
				var objLink = document.getElementById( "mainnav" + i ).parentNode ;
				var intLeft = objLink.offsetLeft ;
				var intWidth = document.getElementById( "mainnav" + i ).offsetWidth;
				objLink.innerHTML = "<img id=\"mainnav" + i + "_1\" src=\"" + imgMouseover + "\" style=\"visibility: hidden; position: absolute; top: 0px; left:" + intLeft + "px; width: " + intWidth + "px; height: 37px;\" />" + objLink.innerHTML ;
			}
		}
		return true;
	}
	return false;
}



function setSubnavEvents( )
{
	for( var i = 1; i <= intNavItemCount; i++ )
	{
		var objImg = document.getElementById( "mainnav" + i ) ;
		if( objImg )
		{
			objImg.parentNode.onmouseover = new Function( "markMainnavItem(" + i + ");" ) ;
			objImg.parentNode.onmouseout = new Function( "event", "if(!event) event = window.event; resetMainnavItem( event," + i + ") ;" ) ;
			if( objImg.src.substr( objImg.src.length - 7 ) == "act.gif" )
				intActiveNav = i ;
		}
	}
}


function markMainnavItem( intID )
{
	if( intCurrentNav != intID )
	{
		if( intCurrentNav )
			resetMainnavItem( null, intID, true ) ;
		intCurrentNav = intID ;
		document.getElementById( "mainnav" + intID ).style.visibility = "hidden" ;
		document.getElementById( "mainnav" + intID + "_1" ).style.visibility = "visible" ;
		showSubnav( intID ) ;
	}
}

function resetMainnavItem( objEvent, intID, blnHide )
{
	if( blnHide || !isInside( intID, objEvent ) )
	{
		intCurrentNav = 0 ;
		if( intID != intActiveNav )
		{
			document.getElementById( "mainnav" + intID + "_1" ).style.visibility = "hidden" ;
			document.getElementById( "mainnav" + intID ).style.visibility = "visible" ;
		}
		hideSubnav( intID ) ;
	}
}


	function showSubnav( intID )
	{
		resetMainnav( intID ) ;
		var objSubnav = document.getElementById( "subnav" + intID ) ;
		if( !objSubnav )
			return ;
		objSubnav.style.visibility = "visible" ;
		objSubnav.style.left = document.getElementById( "mainnav" + intID ).offsetLeft + document.getElementById( "mainnavigation" ).offsetLeft + document.getElementById( "mainnavigation" ).offsetParent.offsetLeft + "px" ;
		objSubnav.style.top = ( document.getElementById( "mainnav" + intID ).offsetParent.offsetParent.offsetTop + document.getElementById( "mainnav" + intID ).offsetParent.offsetTop + 32 ) + "px" ;
	}

	function hideSubnav( intID )
	{
		var objSubnav = document.getElementById( "subnav" + intID ) ;
		if( !objSubnav )
			return ;
		objSubnav.style.visibility = "hidden" ;
	}


	function resetMainnav( intID )
	{
		for( var i = 1; i <= intNavItemCount; i++ )
		{
			if( i != intID )
				resetMainnavItem( null, i, true )
		}
	}


	function isInside( intID, objEvent )
	{
		var intScrollLeft = ( window.event && document.all ? document.documentElement.scrollLeft : pageXOffset ) ;
		var intScrollTop = ( window.event && document.all ? document.documentElement.scrollTop : pageYOffset ) ;
		var intX = objEvent.clientX + ( window.event && document.all ? intScrollLeft - 2 : intScrollLeft ) ;
		var intY = objEvent.clientY + ( window.event && document.all ? intScrollTop - 2 : intScrollTop ) ;
		objSNavi = document.getElementById( "subnav" + intID ) ;
		objMNavi = document.getElementById( "mainnav" + intID ) ;
		objMNaviParent = document.getElementById( "mainnavigation" ) ;
		return (objSNavi && intX > objSNavi.offsetLeft && intX < objSNavi.offsetLeft + document.getElementById( "subnavitems" + intID ).offsetWidth
		&& intY > objSNavi.offsetTop && intY < objSNavi.offsetTop + document.getElementById( "subnavitems" + intID ).offsetHeight ) ||
		(intX > objMNavi.offsetLeft + objMNaviParent.offsetLeft && intX <  objMNavi.offsetLeft + objMNaviParent.offsetLeft + objMNavi.offsetWidth
		&& intY > objMNaviParent.offsetTop && intY < objMNaviParent.offsetTop + objMNavi.offsetHeight ) ;
	}



/****************************************
*		Sub navigation                  *
*****************************************/

function createSubnavigation( )
{
	var strSubnavigation = "" ;
	var objBody = document.getElementsByTagName( "body" )[ 0 ] ;
	for( var i = 1; i <= intNavItemCount; i++ )
	{
		var strItems = createItems( i ) ;
		if( strItems.length )
		{
			if( document.all )
				document.body.insertAdjacentHTML( "BeforeEnd", "<div class=\"subnavi\" id=\"subnav" + i + "\"></div>" ) ;
			else
				createDiv( objBody, new Array( new Array( "class", "subnavi" ), new Array( "id", "subnav" + i ) ) ) ;
			objDiv = document.getElementById( "subnav" + i ) ;
			objDiv.onmouseout = new Function( "event", "if( !event ) event = window.event; resetMainnavItem( event, " + i + " )" ) ;//  function( event ){ resetMainnavItem( event, i ) } ;
			objDiv.innerHTML = strItems ;
			var intHeight = document.getElementById( "subnavitems" + i ).offsetHeight ;
			document.getElementById( "subrshadow" + i ).style.height = intHeight + "px" ;
			document.getElementById( "subbshadow" + i ).style.height = intHeight + 4 + "px" ;
		}
	}
}


function createItems( intID )
{
	var arrLabels = ( eval( "SUBNAV_" + intID + "_LABELS" ) ).split( "," ) ;
	var arrLinks = ( eval( "SUBNAV_" + intID + "_LINKS" ) ).split( "," ) ;

	var strSubnav = "" ;

	if( arrLabels.length )
	{
		for( var i = 0; i < arrLabels.length; i++ )
		{
			var strLabel = trimString( arrLabels[i] ) ;
			var strLink = trimString( arrLinks[i] ) ;
			if( strLabel.length )
			{
				strSubnav += "<div class=\"item\"><a href=\"" + strLink + "\">" + strLabel + "</a></div>";
			}
		}
		if( strSubnav.length )
		{
			strSubnav = "<div id=\"subrshadow" + intID + "\" class=\"subnavirightshadow\"></div>"
						+ "<div id=\"subbshadow" + intID + "\" class=\"subnavibottomshadow\"></div>"
						+ "<div id=\"subnavitems" + intID + "\" class=\"subnaviborder\">" + strSubnav + "</div>" ;
		}
	}
	return strSubnav ;
}


function trimString( strInput )
{
	if( !strInput )
		return "" ;
	return strInput.replace( /^\s+/, "" ).replace( /\s+$/, "" ) ;
}



/****************************************
*		Section navigation              *
*****************************************/

var objActiveNav = null;
function showMarker( objEvent, intID )
{
	document.getElementById( "sndyn" + intID ).style.visibility = "visible" ;
	if( objEvent && !document.all )
	{
		var strCurrentAttr = objEvent.currentTarget.getAttribute( "class" ) ;
		if( strCurrentAttr.indexOf( strCSSActive ) == -1 )
			objEvent.currentTarget.setAttribute( "class", strCurrentAttr + strCSSActive ) ;
	}
	else
	{
		var objElement = objEvent.srcElement.tagName == 'A' ? objEvent.srcElement.parentNode : objEvent.srcElement ;
		if( objElement.className.indexOf( strCSSActive ) == -1 && objElement.className.indexOf( "item" ) >= 0 )
		{
			if( objActiveNav )
				objActiveNav.className = removeAttribute( objActiveNav.className ) ;
			objElement.className = objElement.className + strCSSActive ;
			objActiveNav = objElement ;
		}
	}
}

function hideMarker( objEvent, intID, objTarget )
{
	document.getElementById( "sndyn" + intID ).style.visibility = "hidden" ;
	if( objEvent && !document.all )
	{
		objTarget = objTarget ? objTarget : objEvent.currentTarget ;
		var strClass = objTarget.getAttribute( "class" ) ;
		objTarget.setAttribute( "class", removeAttribute( strClass ) ) ;
	}
	else
	{
		objTarget = objTarget ? objTarget : objEvent.srcElement ;
		if( objTarget.tagName == "A" )
			objTarget = objTarget.parentElement ;
		var strClass = objTarget.className ;
		objTarget.className = removeAttribute( strClass ) ;
	}
}

function hideMarker1( objEvent, intID )
{
	hideMarker( objEvent, intID, arrSnItems[ intID ] ) ;
}


var arrSnItems = new Array( ) ;

function setMarkerEvents( objDiv )
{
	if( !objDiv )
		return false ;
	objDiv.style.visibility = "hidden" ;
	arrSnItems = objDiv.getElementsByTagName( "div" ) ;
	for( var i = 0; i < arrSnItems.length; i++ )
	{
		if( !arrSnItems[ i ].id && arrSnItems[ i ].getElementsByTagName( "a" ).length )
		{
			var intY = getYPosition( arrSnItems[ i ] ) ;
			if( document.all )
			{
				document.body.insertAdjacentHTML( "BeforeEnd", "<div id=\"sndyn" + i + "\" class=\"marker iemarker\" style=\"height: " + ( arrSnItems[ i ].offsetHeight - 2 ) + "px; top: " + ( intY + 1 ) + "px;\"></div>" ) ;
				arrSnItems[ i ].getElementsByTagName( "a" )[ 0 ].onmouseover = new Function( "", "showMarker( window.event, " + i + " )" ) ;
			}
			else
				createDiv( objDiv, new Array( new Array( "id", "sndyn" + i ), new Array( "class", "marker" ), new Array( "style", "height: " + ( arrSnItems[ i ].offsetHeight ) + "px; top: " + ( arrSnItems[ i ].offsetTop ) + "px;" ) ) ) ;
			document.getElementById( "sndyn" + i ).onmouseout = new Function( "event","if( !event ) event = window.event; hideMarker1( event," + i + " );" ) ;
			document.getElementById( "sndyn" + i ).innerHTML = "<div style=\"height: 8px; position: relative; top: " + (arrSnItems[ i ].offsetHeight - 2 - 8 ) / 2 + "px; font-size: 0px; background-color: red;\"></div>" ;
			arrSnItems[ i ].getElementsByTagName( "a" )[ 0 ].parentNode.onmouseover = new Function( "event", "if( !event ) event = window.event; showMarker( event, " + i + " )" ) ;
			arrSnItems[ i ].getElementsByTagName( "a" )[ 0 ].parentNode.onmouseout = new Function( "event", "if( !event ) event = window.event; hideMarker( event, " + i + " )" ) ;
		}
		else if( document.all && arrSnItems[ i ].className == 'bottomitem' )
			arrSnItems[ i ].onmouseover = resetSectionNav ;
	}
	objDiv.style.visibility = "visible" ;
	return arrSnItems.length ;
}


function isInsideSection( objEvent )
{
	var intX = objEvent.clientX - ( window.event && document.all ? 2 : 0 ) ;
	var intY = objEvent.clientY - ( window.event && document.all ? 2 : 0 ) ;
	var objSNavi = objEvent.target ? objEvent.target : objEvent.srcElement ;
	var intX1 = getXPosition( objSNavi) ;
	var intY1 = getYPosition( objSNavi) ;
	return (intX < intX1 + objSNavi.offsetWidth - 1
			&& intY > intY1 && intY < intY1 + objSNavi.offsetHeight - 1 ) ;
}



function resetSectionNav( )
{
	for( var i = 0; i < arrSnItems.length; i++ )
		arrSnItems[ i ].className = removeAttribute( arrSnItems[ i ].className ) ;
}

function getXPosition( objDiv )
{
	var objDiv = ( typeof objDiv == "String" ) ? document.getElementById( strID ) : objDiv ;
	var intX = 0 ;
	do
	{
		intX += objDiv.offsetLeft ;
		objDiv = objDiv.offsetParent ;
	} while( objDiv ) ;
	return intX ;
}


function getYPosition( objDiv )
{
	var objDiv = ( typeof objDiv == "String" ) ? document.getElementById( strID ) : objDiv ;
	var intY = 0 ;
	do
	{
		intY += objDiv.offsetTop ;
		objDiv = objDiv.offsetParent ;
	} while( objDiv ) ;
	return intY ;
}


function removeAttribute( strAttribute )
{
	return strAttribute.replace( reAttrRemove, "" ) ;
}


function createDiv( objParent, arrAttributes )
{
	var objDiv = document.createElement( "div" ) ;
	for( var i= 0; i < arrAttributes.length; i++ )
	{
		var objAttr = document.createAttribute( arrAttributes[ i ][ 0 ] ) ;
		objAttr.nodeValue = arrAttributes[ i ][ 1 ] ;
		objDiv.setAttributeNode( objAttr ) ;
	}
	objParent.appendChild( objDiv ) ;
}





/** added 09/2005 **/

	// permute the reset and submite button inside the dom tree
	// this is the response to the following bug: using the enter-key to
	// submit a form triggers the reset-button
	function permuteSubmitButtons( )
	{
		var arrButtons = document.getElementById( "content" ).getElementsByTagName( "input" );
		var objReset ;
		for( var i = 0; i < arrButtons.length; i++ )
		{
			if( arrButtons[ i ].type.toLowerCase( ) == "image" )
			{
				try {
					var btnImg = arrButtons[i].src;
					var btnClick = btnImg.substring(0, btnImg.length - 4) + "_click" + btnImg.substring(btnImg.length - 4);
					arrButtons[i].onmousedown = new Function("this.src='" + btnClick + "'");
				} catch(e) {
				}
				if( arrButtons[ i ].onclick && arrButtons[ i ].onclick.toString( ).indexOf( "reset" ) >= 0 )
				{
					objReset = arrButtons[ i ] ;
				}
				else if( objReset && getClassName( arrButtons[ i ] ).indexOf( "right" ) >= 0 && !arrButtons[ i ].onclick )
				{
					var objSubmit = arrButtons[ i ].parentNode.removeChild( arrButtons[ i ] );
					objReset.parentNode.insertBefore( objSubmit, objReset );
				}
			}
		}
	}


function aufzuInit(isRemove) {
	if ( obj = document.getElementById( 'crossnavi' ) ) {
		var aH2 = obj.getElementsByTagName( 'h2' );
		var i = 0;
		while ( aH2[i] ) {
			if ( pn = aH2[i].parentNode ) {
				var pnClass = getClassName(pn);
				if ( pnClass.indexOf( 'aufzu' ) != -1 && pnClass.indexOf('open') == -1 ) {
					aH2[i].onmouseover = isRemove ? null : aufzu;
				}
			}
			i++;
		}
	}
}

var isAufzuActive = false;
function aufzu( event ) {
	var objTarget = window.event ? window.event.srcElement : event.currentTarget;
	//var oDiv = objTarget.parentNode;
	var oDiv = getParentNode(objTarget, "div", "closed");

	var className = ( oDiv.className && oDiv.className != '' ) ? oDiv.className : oDiv.getAttribute( 'class' );

	aufzuInit(true);
	closeAllModules();
	className = className.replace( /closed/gi, 'open' );

	setClassName(oDiv, className);

	setTimeout("aufzuInit()", 100);
}

function closeAllModules() {
	if ( obj = document.getElementById( 'crossnavi' ) ) {
		var objDivs = obj.getElementsByTagName( 'div' );
		for(var i = 0; i < objDivs.length; i++) {
			var className = getClassName(objDivs[i]);
			if(className && className.indexOf('aufzu') >= 0 && className.indexOf('open') >= 0) {
				className = className.replace( /open/gi, 'closed' );
				setClassName(objDivs[i], className);
				break;
			}
		}
	}
}

function showExtModule(event, isShow) {
	var objTarget = window.event ? window.event.srcElement : event.currentTarget;
	var objDiv = getParentNode(objTarget, "DIV", "module ") ;

	if(objDiv) {
		var top = 30;
		var child = getChildNode(objDiv, "DIV", "modulevisible");
		if(child) {
			child.style.visibility = isShow ? "visible" : "hidden";
			top = child.offsetTop;
		}
		child = getChildNode(objDiv, "DIV", "modulehidden");
		if(child) {
			child.style.top = (top - 12) + "px";
			child.style.display = isShow ? "none" : "block";
		}

		var objH2 = objDiv.getElementsByTagName("h2");
		if(objH2.length) {
			if(!isShow) {
				objDiv.style.zIndex = "100";
				objH2[0].onclick = new Function("event", "showExtModule(event, true)");
				objH2[0].style.cursor = "pointer";
				setClassName(objDiv, getClassName(objDiv) + " close");
			} else {
				objH2[0].onclick = null;
				objH2[0].style.cursor = "default";
				setClassName(objDiv, getClassName(objDiv).replace(/\sclose/, ""));
			}
		}
	}
}

function getParentNode(objTag, tagName, className) {
	try {
		tagName = tagName.toUpperCase();
		while(objTag = objTag.parentNode) {
			if(objTag.nodeName.toUpperCase() == tagName) {
				if(className && className == getClassName(objTag) || getClassName(objTag).indexOf(className) != -1) {
					return objTag;
				}
			}
		}
	} catch(e) {
		return null;
	}
	return null;
}

function getChildNode(objTag, tagName, className) {
	var childs = objTag.getElementsByTagName("div");
	for(var i = 0; i < childs.length; i++) {
		if(getClassName(childs[i]) == className || getClassName(childs[i]).indexOf(className) != -1) {
			return childs[i]
		}
	}
	return null;
}

function getClassName(objTag) {
	if(!objTag) {
		return "";
	}

	if(objTag.className) {
		return objTag.className ? objTag.className : "";
	} else {
		return objTag.getAttribute( 'class' ) ? objTag.getAttribute( 'class' ) : "";
	}
}

function setClassName(objTag, strClass) {
	if(!objTag) {
		return;
	}
	strClass = !strClass ? "" : strClass;
	objTag.className ? objTag.className = strClass : objTag.setAttribute( 'class', strClass );
}
