function addEvent( element, type, handler )
{
	if( element.addEventListener )
		element.addEventListener( type, handler, false );
	else
	{
		if( !handler.$$guid )
			handler.$$guid = addEvent.guid++;

		if( !element.events )
			element.events = {};

		var handlers = element.events[ type ];

		if( !handlers )
		{
			handlers = element.events[ type ] = {};

			if( element[ 'on' + type ] )
				handlers[ 0 ] = element[ 'on' + type ];

			element[ 'on' + type ] = handleEvent;
		}
	
		handlers[ handler.$$guid ] = handler;
	}
}

addEvent.guid = 1;

function removeEvent( element, type, handler )
{
	if( element.removeEventListener )
		element.removeEventListener( type, handler, false );
	else if( element.events && element.events[ type ] && handler.$$guid )
		delete element.events[ type ][ handler.$$guid ];
}

function handleEvent( event )
{
	event = event || fixEvent( window.event );
	var returnValue	= true;
	var handlers	= this.events[ event.type ];

	for( var i in handlers )
	{
		if( !Object.prototype[ i ] )
		{
			this.$$handler = handlers[ i ];

			if( this.$$handler( event ) === false )
				returnValue = false;
		}
	}

	if( this.$$handler )
		this.$$handler = null;

	return( returnValue );
}

function fixEvent( event )
{
	event.preventDefault	= fixEvent.preventDefault;
	event.stopPropagation	= fixEvent.stopPropagation;
	return event;
}

fixEvent.preventDefault = function()
{
	this.returnValue = false;
}

fixEvent.stopPropagation = function()
{
	this.cancelBubble = true;
}

// This little snippet fixes the problem that the onload attribute on the body-element will overwrite
// previous attached events on the window object for the onload event
if( !( "addEventListener" in window ) )
{
	document.onreadystatechange = function()
	{
		if( "onload" in window && window.onload != handleEvent )
		{
			addEvent( window, 'load', window.onload );
			window.onload = handleEvent;
		}
	}
}

/* DON'T TOUCH THESE FUNCTIONS */
var currentMenuItem = null;

addEvent( window, "load", init );

function init()
{
	attachEventsToNav1stLevelLinks();
}

function attachEventsToNav1stLevelLinks()
{
	var x = document.getElementById( "nav" );

	if( null != x )
	{
		var xc	= x.childNodes;
		var k	= xc.length;
		var bToClick = false;

		while( --k > -1 )
		{
			var xck = xc[ k ];

			if( xck.nodeName.toLowerCase() == "li" )
			{
				var xckc	= xck.childNodes;
				var xckcl	= xckc.length;
				var kk		= xckcl;
				
				if( xck.className.indexOf( "current" ) != -1 )
					bToClick = true;

				while( --kk > -1 )
				{
					var xckck = xckc[ kk ];

					if( xckck.nodeName.toLowerCase() == "a" )
					{
						addEvent( xckck, "click", showSubNav );

						if( bToClick )
						{
							if( !isNav1stLevelEmpty( xck ) )
							{
								if( "dispatchEvent" in xckck )
								{
									var evt	= document.createEvent( "MouseEvents" );
									evt.initMouseEvent( "click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null );
									var d	= xckck.dispatchEvent( evt );
									evt	= null;
									d	= null;
								}
								else if( "click" in xckck )
									xckck.click();
							}
							else
							{
								currentMenuItem = xckck;
							}

							bToClick = false;
						}

						break;
					}
				}
			}
		}
	}

	x = xckc = xc = k = kk = xckck = xckcl = xck = bToClick = null;
}

function isNav1stLevelEmpty( o )
{
	var c	= o.childNodes;
	var k	= c.length;

	var retVal	= true;

	while( --k > -1 )
		if( c[ k ].nodeName.toLowerCase() == "ul" )
		{
			retVal = false;
			break;
		};

	c = k = null;
	return( retVal );
}

function showSubNav( e )
{
	if( null != currentMenuItem )
		hideSubNav( currentMenuItem, e );

	if( this.parentNode.className.indexOf( "current" ) == -1 )
		this.parentNode.className += ' current';

	currentMenuItem = this;

	if( !isNav1stLevelEmpty( this.parentNode ) )
		noDefault( e );
	else
		return( true );
}

function hideSubNav( el, e )
{
	el.parentNode.className = el.parentNode.className.replace( /(current| current)/g, '' );
}
                                                                                    
function noBubble( e )
{
	if( e && e.stopPropagation )
		e.stopPropagation();
	else
		window.event.cancelBubble = true;
}
                                                                                    
function noDefault( e )
{
	if( e && e.preventDefault )
		e.preventDefault();
	else
		window.event.returnValue = false;
}

function ChangeLang (Lang) {

	document.NavLang.f_lang.value=Lang;
	document.NavLang.submit();
	
	return true ;
}

function ShowDiv(Div) {
	var show = document.getElementById(Div).style.display; 
	if (show == 'none') {
		document.getElementById(Div).style.display = 'block';
	} else {
		document.getElementById(Div).style.display = 'none';
	}
	return true;
}