
var openPopUpElmIds = new Array();

var closeAllPopUps = true;




/**
*	Set the css class of an element
**/
function setCssClass(elementId, cssClass) {
	
	(element = document.getElementById(elementId)) ? element.className = cssClass : null;
	
	var affectedElement = '';
	
	// If we are handling sort news
	if(elementId == 'sortNewsToggler') {
	
		// Make sure that the element we will change exists
		if(document.getElementById('signUpForNewsletterToggler')) {
		
			affectedElement = 'signUpForNewsletterToggler';
		
		}
	
	} else if(elementId == 'signUpForNewsletterToggler') { // If we are handling newsletter
	
		// Make sure that the element we will change exists
		if(document.getElementById('sortNewsToggler')) {
		
			affectedElement = 'sortNewsToggler';
		
		} else if(document.getElementById('selectedProjectsWrapperToggler')) {
		
			affectedElement = 'selectedProjectsWrapperToggler';		
		
		}
	
	} else if(elementId = 'selectedProjectsWrapperToggler') {
	
		// Make sure that the element we will change exists
		if(document.getElementById('signUpForNewsletterToggler')) {
		
			affectedElement = 'signUpForNewsletterToggler';
		
		}	
	
	}
	
	// If we have found an affected element
	if(affectedElement != '') {
	
		// If we are opening the element
		if(cssClass == 'open') {
	
			document.getElementById(affectedElement).style.visibility = 'hidden';
		
		} else { // We are closing the news sort
		
			document.getElementById(affectedElement).style.visibility = 'visible';
		
		}	
	
	}
	
}

/**
* Toogles the display value of an element
*/
function toggleDisplay(elmId, level) {
	
	closeAllPopUps = false;
	
	if(document.getElementById(elmId)) {
	
		if(document.getElementById(elmId).style.display == 'block') {
			
			closeOpenPopUp(level);
		}
		else{
			
			if(openPopUpElmIds[level] != undefined && openPopUpElmIds[level] != false){
				
				closeOpenPopUp(level);
			}
			
			openPopUpElmIds[level] = elmId;
		
			document.getElementById(elmId).style.display = 'block';
		}
	}
}


/**
* Toogles the display value of an element
*/
function toggleAndHideDisplay(showElmId, hideElmId) {
	
	if(document.getElementById(showElmId) && document.getElementById(hideElmId)) {
		
		document.getElementById(showElmId).style.display = 'block';
		
		document.getElementById(hideElmId).style.display = 'none';
	}
}





function toggleAndSetCss(elementId, postFixName, cssClassBlock, cssClassNone, level){
	
	var toggleElementId = elementId + postFixName;

	closeAllPopUps = false;
	
	if(document.getElementById(toggleElementId)) {
	
		if(document.getElementById(elementId).style.display == 'block') {
			
			setCssClass(toggleElementId, cssClassNone);
			
			closeOpenPopUp(level);
	
		}
		else {
			
			setCssClass(toggleElementId, cssClassBlock);
			
			if(openPopUpElmIds[level] != undefined && openPopUpElmIds[level] != false){
				
				closeOpenPopUp(level);
			}
			
			openPopUpElmIds[level] = elementId;
			
			document.getElementById(elementId).style.display = 'block';

		}
	}	
}


function closeOpenPopUp(level) {
	
	if(level != false && level > 1){

		if(document.getElementById(openPopUpElmIds[level])) {
			
			if(level == 1){
			
				resetFirstLevelImages();
			}
			
			document.getElementById(openPopUpElmIds[level]).style.display = 'none';
			openPopUpElmIds[level] = false;
		}
	}
	else{
		
		for(i=(openPopUpElmIds.length -1); i > 0; i--){
			
			if(document.getElementById(openPopUpElmIds[i])){
				
				if(i == 1){
			
					resetFirstLevelImages();
				}
				
				document.getElementById(openPopUpElmIds[i]).style.display = 'none';
			}
		}
		
		openPopUpElmIds = new Array();
	}
}



function resetFirstLevelImages(){
	
	setCssClass(openPopUpElmIds[1] + 'Toggler', 'closed');
}



function handleCustomSelectBoxItemClick(customSelectToggler, customSelectId, value, level) {
	
	closeAllPopUps = false;
	
	// Get the real selectbox values
	var realOptions = document.getElementById(customSelectId + 'Real').options;
	
	// Get nr of options in the real selectbox
	var nrOfRealOptions = realOptions.length;	
		
	// Loop the real options	
	for(var i = 0; i < nrOfRealOptions; i++) {
		
		// Check the value of the currently looped option and see if it matches
		// the selected value in the fake select
		if(value == realOptions[i].value) {
					
			// Get the text for the option
			document.getElementById(customSelectToggler).innerHTML = realOptions[i].innerHTML;
			
			// Select the option in the real selectbox
			realOptions[i].selected = true;
			
			break; // Stop looping options
		}
	}
	
	closeOpenPopUp(level);
}





/**
*	checkboxId - The id of the real checkbox that changes
*	checkedImage - The image to use when the checkbox is checked
*	uncheckedImage - The image to use when the checkbox is not checked
*/
function toggleCustomCheckbox(checkboxId, checkedImage, uncheckedImage) {

	// Make sure that the checkbox exists
	if(document.getElementById(checkboxId)) {
		
		// Assume the checkbox will become checked since that will be the case most of the times
		var newImgSrc = checkedImage;
		
		// If the checkbox is already checked
		if(!document.getElementById(checkboxId).checked) {
		
			newImgSrc = uncheckedImage;
			document.getElementById(checkboxId).checked = false;
				
		}
		else {
			
			document.getElementById(checkboxId).checked = true;
		}

		// Set the src of the image to the new src		
		document.getElementById(checkboxId + 'Custom').src = newImgSrc;
	
	}
	
	// Stop the normal action of the checkbox
	return true;

}


function checkCustomCheckbox(checkboxId, checkedImage){

	// Make sure that the checkbox exists
	if(document.getElementById(checkboxId)) {
		
		if(document.getElementById(checkboxId + 'Custom')){
			// Set the src of the image to the new src		
			document.getElementById(checkboxId + 'Custom').src = checkedImage;
		}
		
		document.getElementById(checkboxId).checked = true;
	}
	
	return true;
}


function ieFixClickCheckbox(checkboxId) {

	// Make sure we are running a browser that needs this
	if(document.all && navigator.appVersion.indexOf("MSIE")>-1) {
	
		document.getElementById(checkboxId).click()
	
	}

}

/*
* 	Function to make sure that images works as intended when inside a label
*	Original code from http://snook.ca/ with modifications by Matter
*/
function fixIeImgLabels() {
	
	// If we are running IE on Windows
	if(document.all && navigator.appVersion.indexOf("MSIE")>-1 && navigator.appVersion.indexOf("Windows")>-1)
	{
	
		// Gel all labels
		var a = document.getElementsByTagName("label");
		
		// Loop the labels
		for(var i=0,j=a.length;i<j;i++){
		
			// If the label has kids and the first one is an image
			if(a[i].hasChildNodes && a[i].childNodes.item(0).tagName == "IMG") {
			
				// Get what the label is for
				a[i].childNodes.item(0).forid = a[i].htmlFor;
				
				// Apply a function to onclick for the imge
				a[i].childNodes.item(0).onclick = function() {
				
					var e = document.getElementById(this.forid);
				 
					switch(e.type){
					
						case "radio":
							//e.checked |= 1;
							e.click(); // Added by Matter
							break;
							
						case "checkbox":
							//e.checked = !e.checked;
							e.click(); // Added by matter
							break;
							
						case "text":
						case "password":
						case "textarea":
							e.focus();
							break;
					}
				}
			}
		}
	}	

}




document.onclick = function(e) {
	
	var event = e || window.event;
	var target = event.target || event.srcElement;
	
	if(closeAllPopUps == true) {	
		
		// If the element that fired the event does not toggle the element that is open
		if(target.id != openPopUpElmIds[(openPopUpElmIds.length -1)] + 'Toggler') {
		
			elm = target;
						
			var clickedElmBelongsToOpenElm = false;
			
			// Loop the clicked elements parents to make sure the element does not belong to the open
			// element
			while(elm) {
						
				if(elm.getAttribute && elm.getAttribute('id') == openPopUpElmIds[(openPopUpElmIds.length -1)]) {
					
					clickedElmBelongsToOpenElm = true;
					break;
				}
			
				// Carry on up the nodes
				elm = elm.parentNode;
			}

			// If we did not find the open element in the parents
			if(!clickedElmBelongsToOpenElm) {
			
				closeOpenPopUp(false);
			}
		}	
	}
	else 
	{	
		closeAllPopUps = true;
	}
					
	
}