function hoverObject(obj,strMode){
/*
	use to hover above an object.
	Only the last class name can be changed.
*/
	var arrClasses = createArray(obj.className,' ');
	arrClasses[arrClasses.length-1] = (arrClasses[arrClasses.length-1] == obj.getAttribute('classAct') ? obj.getAttribute('classAct'): (strMode == 'on' ? obj.getAttribute('classOn') : obj.getAttribute('classOff') ) );
	obj.className = arrClasses.join(' ');
}

function activateObject(obj,strMode){
/*
	use to activate an object (usualy it is the activation of an object the mouse is hovering above)
	strMode can have the following values:
	- static : the object is only activated, regardless of the current state.
	- dynamic : the object is activated when not active and will be reset to the classOff when it was active
	Only the last class name can be changed.
*/
	var arrClasses = createArray(obj.className,' ');
	switch (strMode){
		case 'static':
			arrClasses[arrClasses.length-1] = obj.getAttribute('classAct');
			break
		case 'dynamic':
			arrClasses[arrClasses.length-1] = (arrClasses[arrClasses.length-1] == obj.getAttribute('classAct') ? obj.getAttribute('classOff') : obj.getAttribute('classAct') );			
			break
	}
	obj.className = arrClasses.join(' ');
}

function deActivateObjects(obj){
/*
	use to reset the class of all objects with the same Tag and objCategory. Use it for instance when you want to reset the previous
	active menuitem when clicking on another menuitem.
	Only the last class name can be changed.
*/
	var arrAllObjects = document.getElementsByTagName(obj.tagName);
	for(x = 0; x < arrAllObjects.length; x++){
		if(arrAllObjects[x].getAttribute('objCategory') == obj.getAttribute('objCategory')){
			arrClasses = createArray(arrAllObjects[x].className,' ');
			arrClasses[arrClasses.length-1] = arrAllObjects[x].getAttribute('classOff');
			arrAllObjects[x].className = arrClasses.join(' ');
		}
	}
	
}

	
function createArray(strString,delimeter){
	return strString.split(delimeter);
}
	
function toggleDisplay(strID,strName){
/*
	this function will toggle the display of one or more elements. It can search an element by its id using the strID variable, or find one or more elements by its name via strName.	
*/
	if(strID !=''){
		objToggle = document.getElementById(strID);
		objToggle.style.display = (objToggle.style.display != 'none' ? 'none' : '' );
	}
	else if(strName != ''){
		arrObjects = document.getElementsByName(strName);
		for(var x=0; x<arrObjects.length; x++){
			objToggle = arrObjects[x];
			objToggle.style.display = (objToggle.style.display != 'none' ? 'none' : '' );
		}
	}
}

function changeLanguage(strLanguage)
{
	/* this function will add or change the language = parameter to the querystring */
	strUrl = document.location.toString();
	language = getQuerystringParameter('language');
	if(language == '')
	{ 
		// parameter does not exist. add the parameter with the correct value preceeded either by a '?' or a '&'
		seperator = '?';
		if(strUrl.indexOf(seperator) > -1 ) { seperator = '&'; }
		strUrl = strUrl + seperator + 'language=' + strLanguage;
	}
	else
	{
		strUrl = changeQuerystringParameter(strUrl,'language',getQuerystringParameter('language'),strLanguage);
	}
	document.location = strUrl;
}

function changeQuerystringParameter(strUrl,qsparameter,oldvalue,newvalue)
{
	return strUrl.replace(qsparameter + '=' + oldvalue,qsparameter + '=' + newvalue);	
}	

function getQuerystringParameter(key, default_)
{
  if (default_==null) default_=""; 
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return qs[1];
} 
