function addDOMLoadEvent(func) {
	if (!window.__load_events) {
		var init = function () {
			// quit if this function has already been called
			if (arguments.callee.done) return;
			// flag this function so we don't do the same thing twice
			arguments.callee.done = true;
			// kill the timer
			if (window.__load_timer) {
				clearInterval(window.__load_timer);
				window.__load_timer = null;
			}
	
			// execute each function in the stack in the order they were added
			for (var i=0;i < window.__load_events.length;i++) {
				window.__load_events[i]();
			}
			window.__load_events = null;
		};
   
		// for Mozilla/Opera9
		if (document.addEventListener) {
			document.addEventListener("DOMContentLoaded", init, false);
		}

		// for Internet Explorer
		/*@cc_on @*/
		/*@if (@_win32)
		document.write("<scr"+"ipt id=__ie_onload defer src=//0><\/scr"+"ipt>");
		var script = document.getElementById("__ie_onload");
		script.onreadystatechange = function() {
			if (this.readyState == "complete") {
				init(); // call the onload handler
			}
		};
		/*@end @*/

		// for Safari
		if (/WebKit/i.test(navigator.userAgent)) { // sniff
			window.__load_timer = setInterval(function() {
				if (/loaded|complete/.test(document.readyState)) {
					init(); // call the onload handler
				}
			}, 10);
		}

		// for other browsers
		window.onload = init;
		
		// create event function stack
		window.__load_events = [];
	}
	
	// add function to event stack
	window.__load_events.push(func);
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function stripHTML( string )
{
	var re = new RegExp( "<(\"[^\"]*\"|'[^']*'|[^'\">])*>", "g" );
	string = string.replace( re, "" );
	return string;
}

function remainingCharacters( amountChars, totalChars )
{
	return totalChars - amountChars;
}

/*String.prototype.html_entity_decode = function()
{
	var chars = new Array ('&','à','á','â','ã','ä','å','æ','ç','è','é',
							'ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô',
							'õ','ö','ø','ù','ú','û','ü','ý','þ','ÿ','À',
							'Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë',
							'Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö',
							'Ø','Ù','Ú','Û','Ü','Ý','Þ','€','\"','ß','<',
							'>','¢','£','¤','¥','¦','§','¨','©','ª','«',
							'¬','­','®','¯','°','±','²','³','´','µ','¶',
							'·','¸','¹','º','»','¼','½','¾');

	var entities = new Array ('amp','agrave','aacute','acirc','atilde','auml','aring',
							'aelig','ccedil','egrave','eacute','ecirc','euml','igrave',
							'iacute','icirc','iuml','eth','ntilde','ograve','oacute',
							'ocirc','otilde','ouml','oslash','ugrave','uacute','ucirc',
							'uuml','yacute','thorn','yuml','Agrave','Aacute','Acirc',
							'Atilde','Auml','Aring','AElig','Ccedil','Egrave','Eacute',
							'Ecirc','Euml','Igrave','Iacute','Icirc','Iuml','ETH','Ntilde',
							'Ograve','Oacute','Ocirc','Otilde','Ouml','Oslash','Ugrave',
							'Uacute','Ucirc','Uuml','Yacute','THORN','euro','quot','szlig',
							'lt','gt','cent','pound','curren','yen','brvbar','sect','uml',
							'copy','ordf','laquo','not','shy','reg','macr','deg','plusmn',
							'sup2','sup3','acute','micro','para','middot','cedil','sup1',
							'ordm','raquo','frac14','frac12','frac34');

	newString = this;
	
	for (var i = 0; i < chars.length; i++)
	{
		myRegExp = new RegExp();
		myRegExp.compile('&' + entities[i] + ';','g')
		newString = newString.replace (myRegExp,chars[i]);
	}
	
	return newString;
}

String.prototype.htmlEntities = function()
{
	var chars = new Array ('&','à','á','â','ã','ä','å','æ','ç','è','é',
							'ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô',
							'õ','ö','ø','ù','ú','û','ü','ý','þ','ÿ','À',
							'Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë',
							'Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö',
							'Ø','Ù','Ú','Û','Ü','Ý','Þ','€','\"','ß','<',
							'>','¢','£','¤','¥','¦','§','¨','©','ª','«',
							'¬','­','®','¯','°','±','²','³','´','µ','¶',
							'·','¸','¹','º','»','¼','½','¾');

	var entities = new Array ('amp','agrave','aacute','acirc','atilde','auml','aring',
							'aelig','ccedil','egrave','eacute','ecirc','euml','igrave',
							'iacute','icirc','iuml','eth','ntilde','ograve','oacute',
							'ocirc','otilde','ouml','oslash','ugrave','uacute','ucirc',
							'uuml','yacute','thorn','yuml','Agrave','Aacute','Acirc',
							'Atilde','Auml','Aring','AElig','Ccedil','Egrave','Eacute',
							'Ecirc','Euml','Igrave','Iacute','Icirc','Iuml','ETH','Ntilde',
							'Ograve','Oacute','Ocirc','Otilde','Ouml','Oslash','Ugrave',
							'Uacute','Ucirc','Uuml','Yacute','THORN','euro','quot','szlig',
							'lt','gt','cent','pound','curren','yen','brvbar','sect','uml',
							'copy','ordf','laquo','not','shy','reg','macr','deg','plusmn',
							'sup2','sup3','acute','micro','para','middot','cedil','sup1',
							'ordm','raquo','frac14','frac12','frac34');

	newString = this;
	
	for (var i = 0; i < chars.length; i++)
	{
		myRegExp = new RegExp();
		myRegExp.compile(chars[i],'g')
		newString = newString.replace (myRegExp, '&' + entities[i] + ';');
	}
	
	return newString;
}*/

function getFileExtension( string )
{
	var re = new RegExp( "^.+\\.([^.]+)$", "g" );
	match = re.exec( string );
	return match != null ? match[match.length-1] : null;
}

function getQueryVariable(variable)
{
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++)
	{
		var pair = vars[i].split("=");
		if (pair[0] == variable)
		{
			return pair[1];
		}
	}
}

function getElementsByClassName( oElm, strTagName, strClassName )
{
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/-/g, "\-");
	var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
	var oElement;
	for( var i = 0; i < arrElements.length; i++ )
	{
		oElement = arrElements[i];
		if( oRegExp.test( oElement.className ) )
		{
			arrReturnElements.push( oElement );
		}
	}
	return( arrReturnElements );
}

function checkLock( e )
{
	var myKeyCode = 0;
	var myShiftKey = false;
	
	// Internet Explorer 4+
	if ( document.all )
	{
		myKeyCode = e.keyCode;
		myShiftKey = e.shiftKey;
	}// Netscape 4
	else if ( document.layers )
	{
		myKeyCode = e.which;
		myShiftKey = ( myKeyCode == 16 ) ? true : false;
	}// Netscape 6
	else if ( document.getElementById )
	{
		myKeyCode = e.which;
		myShiftKey = ( myKeyCode == 16 ) ? true : false;
	}
	
	// Upper case letters are seen without depressing the Shift key, therefore Caps Lock is on
	if ( ( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey )
	{
		writit( 'Let op! Caps Lock staat aan.', 'err' );
	}// Lower case letters are seen while depressing the Shift key, therefore Caps Lock is on
	else if ( ( myKeyCode >= 97 && myKeyCode <= 122 ) && myShiftKey )
	{
		writit( 'Let op! Caps Lock staat aan.', 'err' );
	}
	else
	{
		writit( '', 'err' );
	}
}

function popup(url){
	window.open(url,'popup','width=400,height=400,scrollbars=no,toolbar=no,location=no,resizable=no');
}

function writit( text, id )
{
	if( text.length > 1 )
	{
		text = '<p style="text-align: center; padding: 20px; background: #ff0000; color: #ffffff;">'+text+'</p>';
	}
	if( document.getElementById )
	{
		x = document.getElementById( id );
		x.innerHTML = '';
		x.innerHTML = text;
	}
	else if( document.all )
	{
		x = document.all[id];
		x.innerHTML = text;
	}
	else if( document.layers )
	{
		x = document.layers[id];
		x.document.open();
		x.document.write( text );
		x.document.close();
	}
}

function clean( itemName )
{
	var f = document.userForm;
	
	field = eval( 'f.' + itemName );
	field.value = "";
}

function confirmSubmit(message)
{
	var agree = confirm(message);
	if (agree)
		return true;
	else
		return false;
}

function echeck(str)
{
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);

	if (str.indexOf(at)==-1)
	{
		alert("U heeft een ongeldig e-mailadres ingevoerd.");
		return(false);
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
	{
		alert("U heeft een ongeldig e-mailadres ingevoerd.");
		return(false);
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
	{
		alert("U heeft een ongeldig e-mailadres ingevoerd.");
		return(false);
	}

	if (str.indexOf(at,(lat+1))!=-1)
	{
		alert("U heeft een ongeldig e-mailadres ingevoerd.");
		return(false);
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
	{
		alert("U heeft een ongeldig e-mailadres ingevoerd.");
		return(false);
	}

	if (str.indexOf(dot,(lat+2))==-1)
	{
		alert("U heeft een ongeldig e-mailadres ingevoerd.");
		return(false);
	}

	if (str.indexOf(" ")!=-1)
	{
		alert("U heeft een ongeldig e-mailadres ingevoerd.");
		return(false);
	}
	return(true);
}

function submitForm(task)
{
	var f = document.userForm;
	var error = 0;

	if(f.formType.value == "config")
	{
		f.task.value = task;
		f.submit();
	}
	else if(f.formType.value == "uploadTemplate")
	{
		f.subtask.value = task;
		numElements = f.elements.length;
		var j = 8;
		while(j < numElements)
		{
			for(i = 0; i < 4; i++)
			{
				// Als er wel een template is geselecteerd, maar geen naam
				if(i == 1 && f.elements[j].value == "" && f.elements[j-1].value != "")
				{
					error++;
				}
				j++;				
			}
		}
		if(error == 1)
		{
			alert("U dient een naam voor het sjabloon te specificeren.");
		}
		else if(error > 1)
		{
			alert("U dient namen voor de sjablonen te specificeren.");
		}
		else
		{
			f.submit();
		}
	}
	else
	{
		f.subtask.value = task;		
		if(task != "cancel")
		{
			if(validateUserForm(f))
			{
				f.submit();
			}
		}
		else
		{
			f.submit();
		}
	}
}

// POST paginering in admin deel
function setInputValue( fldName, value, form )
{
	var f = eval( 'document.' + form );
	ding = eval( 'f.' + fldName );
	ding.value = value;
}

function checkLimits( form )
{
	var f = eval( 'document.' + form );
	
	start = eval( 'f.startResult' );
	amount = eval( 'f.limitResults' );
	current = eval( 'f.currentPage' );
	
	current.value = Math.ceil( start.value/amount.value );
}

function send( form )
{
	var f = eval( 'document.' + form );
	
	f.submit();
}

function checkAll(n, fldName)
{
	if (!fldName)
	{
		fldName = 'checkbox';
	}
	var f = document.userFormX;
	var c = f.toggle.checked;
	var n2 = 0;

	for (i=0; i < n; i++)
	{
		cb = eval( 'f.' + fldName + '' + i );
		if (cb)
		{
			cb.checked = c;
			n2++;
		}
	}
}

function submitenter(e)
{
	var keycode;
	if(window.event)
	{
		keycode = window.event.keyCode;
	}
	else if(e)
	{
		keycode = e.which;
	}
	else
	{
		return false;
	}
	
	if(keycode == 13)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function searchFriend()
{
	//document.friendForm.action += '&q='+document.friendForm.q.value;
	document.friendForm.submit();
}