var preloadFlag = false;
var preloadStack = new Array("preloadImages();","textOnly(false);");
var pgPreloadImage = new Array();

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document.getElementById(changeImages.arguments[i]).src = changeImages.arguments[i+1];
		}
	}
}

function preloader()
{
	for(j=0; j < preloadStack.length; j++)
	{
		eval(preloadStack[j]);
	}
}

function preloadImages() {
	if (document.images) {
		for(x=0;x<pgPreloadImage.length;x++){
			eval("pgPreloadImage"+x+"=newImage('"+pgPreloadImage[x]+"');");
		}
		preloadFlag = true;
	}
}

function preloadImage(imageUrl)
{
	pgPreloadImage[pgPreloadImage.length] = imageUrl;
}

function addToOnload(js)
{
	preloadStack[preloadStack.length] = js;
}

//
// Window Popup
//
function popup(url, width, height, name)
{
	if (!name)
	{
		name = '_popup';
	}

	window.open(url.replace(/&amp;/g, '&'), name, 'height=' + height + ',resizable=yes,scrollbars=yes, width=' + width);
	return false;
}

//
// Text only mode
//
function textOnly(flip)
{ 
	
	if (flip)
		textOnlyState = (getCookie("textOnly") == 1) ? false : true;
	else
		textOnlyState = (getCookie("textOnly") == 1) ? true : false;
	
	try
	{
		stylesheets=this.document.styleSheets;
		for( i=0; i < stylesheets.length; i++)
		{	
			stylesheets[i].disabled = textOnlyState;
		}
		setCookie('textOnly',(textOnlyState) ? 1:0,365, '/', '', '');
		document.getElementById('textOnlyLink').innerHTML = (textOnlyState) ? "Full graphics site" : "Text only";
	}
	catch(e){
	}
}


function textboxFocus(obj,defaultVal)
{
	if(obj.value==defaultVal)
	{
		obj.value='';
		obj.style.color='#000';
	}
}

function textboxBlur(obj,defaultVal)
{
	if(obj.value=='')
	{
		obj.value=defaultVal;
		obj.style.color='#999';
	}
}

//
// Cookie Handling functions
//

function setCookie( name, value, expires, path, domain, secure ) 
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this function gets the cookie, if it exists
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) )
	{
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}
	
function deleteCookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) 
		document.cookie = name + "=" + ( ( path ) ? ";path=" + path : "") + ( ( domain ) ? ";domain=" + domain : "" ) + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

  function toggleDiv(divid){
    if(document.getElementById(divid).style.display == 'none'){
      document.getElementById(divid).style.display = 'block';
    }else{
      document.getElementById(divid).style.display = 'none';
    }
  }

/*
	YADM - Yet another dynamic menu
	written by Chris Heilmann (http://icant.co.uk)
	Please refer to the yadm homepage for updates: http://www.onlinetools.org/tools/yadm/
	Free for non-commercial use. Changes welcome, but no distribution without
	the consent of the author.
*/
function yadm()
{

// Variables, change these in case you need to set other class names (mmhide_ for
// contribute users for example)
	var parentClass='isParent';				//gets applied when the LI has a nested UL
	var activeParentClass='isActive';		//gets applied when the nested UL is visible
	var preventHoverClass='nohover';		//denotes a navigation that should not get any hover effects
	var indicateJSClass='dhtml';			//gets applied to the main navigation when Javascript is available
	var toHideClass='hiddenChild';			//gets applied to hide the nested UL
	var toShowClass='shownChild';			//gets applied to show the nested UL
	var currentClass='current';				//denotes the current active sub element and prevents collapsing
	var d=document.getElementById('navlist');	//denotes the navigation element

// if DOM is not available stop right here.
	if(!document.getElementById && !document.createTextNode){return;}

// if the navigation element is available, apply the class denoting DHTML capabilities
	if(d)
	{
		d.className+=d.className==''?indicateJSClass:' '+indicateJSClass;
		var lis,i,firstUL,j,apply;

// loop through all LIs and check which ones have a nested UL
		lis=d.getElementsByTagName('li');
		for(i=0;i<lis.length;i++)
		{
			firstUL=lis[i].getElementsByTagName('ul')[0]
// if there is a nested UL, deactivate the first nested link and apply the class to show
// there is a nested list
			if(firstUL)
			{
				//lis[i].childNodes[0].onclick=function(){return false;}
				lis[i].className+=lis[i].className==''?parentClass:' '+parentClass;
// check if there is a "current" element
				apply=true;
				if(new RegExp('\\b'+currentClass+'\\b').test(lis[i].className)){apply=false;}
				if(apply)
				{
					for(j=0;j<firstUL.getElementsByTagName('li').length;j++)
					{
						if(new RegExp('\\b'+currentClass+'\\b').test(firstUL.getElementsByTagName('li')[j].className)){apply=false;break}
					}
				}
// if there is no current element, apply the class to hide the nested list
				if(apply)
				{
					firstUL.className+=firstUL.className==''?toHideClass:' '+toHideClass;
// check if there is a class to prevent hover effects and only apply the function
// onclick if that is the case, otherwise apply it onclick and onhover
					if(new RegExp('\\b'+preventHoverClass+'\\b').test(d.className))
					{
						lis[i].onclick=function(){doyadm(this);}
					} else {
						lis[i].onclick=function(){doyadm(this);}
						lis[i].onmouseover=function(){doyadm(this);}
						lis[i].onmouseout=function(){doyadm(null);}
					}
// if there is a current element, define the list as being kept open and apply the
// classes to show the nested list and define the parent LI as an active one
				} else {
					lis[i].keepopen=1;
					firstUL.className+=firstUL.className==''?toShowClass:' '+toShowClass;
					lis[i].className=lis[i].className.replace(parentClass,activeParentClass);
				}
			}
		}
	}
// function to show and hide the nested lists and add the classes to the parent LIs
	function doyadm(o)
	{
		var childUL,isobj,swap;

// loop through all LIs of the navigation
		lis=d.getElementsByTagName('li');
		for(i=0;i<lis.length;i++)
		{
			isobj=lis[i]==o;
// function to exchange class names in an object
			swap=function(tmpobj,tmporg,tmprep)
			{
				tmpobj.className=tmpobj.className.replace(tmporg,tmprep)
			}
// if the current LI does not have an indicator to be kept visible
			if(!lis[i].keepopen)
			{
				childUL=lis[i].getElementsByTagName('ul')[0];
// check if there is a nested UL and if the current LI is not the one clicked on
// and exchange the classes accordingly (ie. hide all other nested lists and
// make the LIs parent rather than active.
				if(childUL)
				{
					if(new RegExp('\\b'+preventHoverClass+'\\b').test(d.className))
					{
						if(new RegExp('\\b'+activeParentClass+'\\b').test(lis[i].className))
						{
							swap(childUL,isobj?toShowClass:toHideClass,isobj?toHideClass:toShowClass);
							swap(lis[i],isobj?activeParentClass:parentClass,isobj?parentClass:activeParentClass);
						} else {

							swap(childUL,isobj?toHideClass:toShowClass,isobj?toShowClass:toHideClass);
							swap(lis[i],isobj?parentClass:activeParentClass,isobj?activeParentClass:parentClass);
						}
					} else {
							swap(childUL,isobj?toHideClass:toShowClass,isobj?toShowClass:toHideClass);
							swap(lis[i],isobj?parentClass:activeParentClass,isobj?activeParentClass:parentClass);
					}
				}
			}
		}
	}
}
window.onload=function()
{
	yadm();
	// add other functions to be called onload below
}