
var IEdetected = (document.all != null);


var BrowserUserAgent		= navigator.userAgent;
var BrowserVersion			= {
		IE				: / MSIE /.test(BrowserUserAgent) && !/(^| )Opera[/ ]/.test(BrowserUserAgent) ?
									parseFloat(BrowserUserAgent.replace(/^.* MSIE (\d+\.\d+).*$/, '$1'))
								:	0
	, Chrome		: / Chrome[/]/.test(BrowserUserAgent) ?
									parseFloat(BrowserUserAgent.replace(/^.* Chrome[/](\d+\.\d+).*$/, '$1'))
								:	0
	, FireFox		: / Firefox[/]/.test(BrowserUserAgent) ?
									parseFloat(BrowserUserAgent.replace(/^.* Firefox[/](\d+\.\d+).*$/, '$1'))
								:	0
	,	Opera			: /(^| )Opera[/ ]/.test(BrowserUserAgent) ?
									parseFloat(BrowserUserAgent.replace(/^(.* )?Opera[/ ](\d+\.\d+).*$/, '$2'))
								: 0
};

/* ********************************************************************************************
	Fix document.getElementById() in older IE and Opera versions.
	Code from: http://webbugtrack.blogspot.com/2007/08/bug-152-getelementbyid-returns.html
******************************************************************************************** */

if(	(BrowserVersion.IE 		&& BrowserVersion.IE 		< 8.0)	||
		(BrowserVersion.Opera && BrowserVersion.Opera < 9.5)) {
			
		document.nativeGetElementById = document.getElementById;
		document.getElementById 	= function(id) {
			var elem = document.nativeGetElementById(id);
			if(elem)
			{
				//make sure that it is a valid match on id
				if(elem.id == id)
				{
					return elem;
				}
				else
				{
					//otherwise find the correct element
					for(var i=1;i<document.all[id].length;i++)
					{
						if(document.all[id][i].id == id)
						{
							return document.all[id][i];
						}
					}
				}
			}
			return null;
		};
}	



// CSS display property modifiers
function displayNone(id) {
	if(document.getElementById(id))
		document.getElementById(id).style.display = 'none';
}
function displayBlock(id) {
	if(document.getElementById(id))
		document.getElementById(id).style.display = 'block';
}
function displayInline(id) {
	if(document.getElementById(id))
		document.getElementById(id).style.display = 'inline';
}

// Browser independent eventhandler assignment to an HTML element
function objAttachEvent(element, eventNameIE, eventNameFF, functionPointer, useCapture) {
	var useCapture = (useCapture == null ? false : useCapture);
	if(IEdetected) {
		element.attachEvent(eventNameIE, functionPointer);
	} else {
		element.addEventListener(eventNameFF, functionPointer, useCapture);
	}
}

function toggleElement(id) {
	var obj = document.getElementById(id);
	if(obj) {
		obj.style.display = obj.style.display == "none" ? "block" : "none";
	}
}

// Open URL
function openURL(url, target) {
	if(!target) target = '_self';
	document.location = url;
}

// String trim function
function trim(txt) {
	return txt.replace(/^\s+/, '').replace(/\s+$/, '');
}

// Email address validation
function isValidMail(txt) {
	var mailRE = /^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/;
	return mailRE.test(txt);
}


// Functions for inputfield with descriptive default value
/*

	<input type="text" name="myField"
		onFocus="removeInputDefaultValue(this, 'Enter text...')"
		onBlur="applyInputDefaultValue(this, 'Enter text...')" />
		
	realValue = getInputValue(document.forms.f1.myField, "Enter text...");	

*/
function removeInputDefaultValue(obj, val) {
	if(obj.value == val) obj.value = "";
}
function applyInputDefaultValue(obj, val) {
	if(obj.value == "") obj.value = val;
}
function getInputValue(obj, val) {
	return obj.value == val ? "" : obj.value;
}			


// Inputfield modifiers
function removeCharacters(inputField, reRemoveChars) {
	var filterRE = new RegExp('[' + reRemoveChars + ']', 'gi');
	inputField.value = inputField.value.replace(filterRE, '');
	trim(inputField);
}
function removeOtherCharacters(inputField, reAllowedChars) {
	var filterRE = new RegExp('[^' + reAllowedChars + ']', 'gi');
	inputField.value = inputField.value.replace(filterRE, '');
	trim(inputField);
}

// Inputfield onKeyPress event filters
// Example: onkeydown="return forceKey(this, '0-9', event)"
function forceKey(inputField, reAllowedChars, e) {
	var keyCode;
	var filterRE = new RegExp('[' + reAllowedChars + ']', 'gi');
	if(window.event)
		keyCode = window.event.keyCode;
	else {
		if(e)
			keyCode = e.which;
		else
			return true;
	}
	if( !filterRE.test(String.fromCharCode(keyCode)) && keyCode > 13 ) // allow control characters except enter
		return false;
	else return true;
}
function ignoreKey(inputField, reIgnoredChars, e) {
	return !forceKey(inputField, reIgnoredChars, e);
}


// Check all checkboxes in formfield
function checkAllCheckboxes(checked, formName, fieldName) {
	var len = document.forms[formName].elements.length;
	var i = 0;
	for(i=0; i<len; i++)
		if(document.forms[formName].elements[i].name == fieldName)
			document.forms[formName].elements[i].checked = checked;
}

function popupHelp(ID,usedLanguages){
	if(ID != 0){
		var helpS = open('/_lib/popups/index.html?id='+ID+'&usedLanguages='+usedLanguages,'helpScherm','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=575,height=420');
		helpS;
		helpS.focus();
	};
};



function OpenDebugWindow(){
	var DebugWindow = open('/_Sys/_Public/Framework/Debug.cfm','DebugWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=575,height=420');
	DebugWindow.focus();
};


// Traces DOM to find the absolute left offset
function getAbsoluteOffsetLeft(node) {
	var offsetLeft = 0;
	while(node) {
		offsetLeft += node.offsetLeft
		node = node.offsetParent;
	}
	return offsetLeft;
}

// Traces DOM to find the absolute top offset
function getAbsoluteOffsetTop(node) {
	var offsetTop = 0;
	while(node) {
		offsetTop += node.offsetTop
		node = node.offsetParent;
	}
	return offsetTop;
}

// Traces DOM to find out if an element is or is contained by an element
function elementIsWithin(element, containerElement) {
	node = element;
	while(node) {
		if(node == containerElement) return true;
		node = node.parentNode;
	}
	return false;
}


// Selects first found option in a selectbox with the given value
function selectOptionWithValue(selectObject, optionValue) {	
	var i;
	for(i=0; i<selectObject.length; i++) {
		if(selectObject[i].value == optionValue) {
			selectObject.selectedIndex = i;
			break;
		}
	}	
}




