var errorSheetInSteadOfAlerts = false;

function trim(value) {
	value = value.replace(/^\s+/,'');
	value = value.replace(/\s+$/,'');
	return value;
}

if(validations == null){
	var validations     = new Array();
}

var dateFormElementOnChangeHandlers = new Array();
var errorTxtColor   = "#cc0000";
var errorBgColor    = "#ffe8eb";
var cleanBgColor    = "#ffffff";
var cleanTxtColor   = "#000000";

Date.prototype.addDays = function(n)
{
	this.setDate(this.getDate() + n);
	return this;
}

Date.prototype.addMonths = function(n)
{
	// addMonth(2) to 1-12-2008, will lead to 1-2-2009
	this.setMonth(this.getMonth() + n);
	return this;
}

Date.prototype.addYears = function(n)
{
	this.setFullYear(this.getFullYear() + n);
	return this;
}

Date.prototype.getUTCTime = function()
{
	if (this != null) {
		return Date.UTC(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds(), this.getMilliseconds());
	} else {
		return null;
	}
}

function registerAction(form, actionNr)
{
	form.registeredactions.value = form.registeredactions.value + " " + actionNr;
}

function deleteInitialText(theFormObject) {
		theFormObject.value = "";
}

function registerValidations(func){
	validations[validations.length] = func;
}

function registerDateFormElementOnChangeHandler(func)
{
	dateFormElementOnChangeHandlers[dateFormElementOnChangeHandlers.length] = func;
}
function runDateFormElementOnChangeHandlers(element, namePrefix, namePostFix)
{
	for(var i=0;i < dateFormElementOnChangeHandlers.length;i++)
	{
		func = dateFormElementOnChangeHandlers[i];
		func(element, namePrefix, namePostFix);
	}
}
function runValidations(form)
{
	for (var i=0; i < form.elements.length; i++) {
		if (form.elements[i].type != "button") {
			form.elements[i].style.backgroundColor = cleanBgColor;
		}
	}
	errorMessage    = "";
	for(var i=0;i < validations.length;i++)
	{
		func = validations[i];
		errorMessage += func(form);
	}
	if(errorMessage != "") 
	{
		if(!errorSheetInSteadOfAlerts){
			alert("De volgende velden zijn niet goed ingevuld:\n"+ errorMessage);
		}
		return false;
	} 
	else
	{
		return true;
	}
}

function deselectInSelectBox(selectBox){
	for (var i=0;i < selectBox.length; i++) {
		selectBox.options[i].selected = false;
	}
}

function changeBgColor(element) {
	if (element.style) {
		element.style.backgroundColor = errorBgColor;
	}
}

/* deze wordt niet aangeroepen */
function changeBgColorCheckbox(element) {
	for (var i=0; i < element.length ; i++) {
		if (element[i].style) {
			element[i].style.backgroundColor = errorBgColor;
		}
	} 
}


function ensureString(form, elementName, message, errorRowId)
{
	var element = form.elements[elementName];
	if (element != null && element.value != null) {
		var value   = element.value;
		value = value.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
		if (value == "") {
			changeBgColor(element);
			unfoldErrorRow(errorRowId);
			return message;
		} else {
			foldErrorRow(errorRowId);
		}
	}
	return "";
}

function ensureStringById(form, objectName, message, errorRowId)
{

	var element = document.getElementById(objectName);
	var value   = element.value;
	if(value == "") {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureStringLength(form, elementName, message, minLength, maxLength, errorRowId)
{
	var element = form.elements[elementName];
	var value   = element.value;
	if(value == "") {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	
	} else if (value.length < minLength || value.length > maxLength) {
		unfoldErrorRow(errorRowId);
		return message;
	} else 	{
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureStringStartsWith(form, elementName, message, elementValueStart, mandatory, errorRowId) {
	var element = form.elements[elementName];
	var value   = element.value;
	if(value == "") {
		if (mandatory) {
			changeBgColor(element);
			unfoldErrorRow(errorRowId);
			return message;	
		} else {
			foldErrorRow(errorRowId);
			return "";
		}
	} else if (value.indexOf(elementValueStart) != 0) {
		unfoldErrorRow(errorRowId);
		return message;
	} else 	{
		foldErrorRow(errorRowId);
		return "";
	}	
}

function ensureTinyMCEStringLength(elementName, message, message1, message2, minLength, maxLength, errorRowId) {
	var element = tinyMCE.get(elementName);
	var value = element.getContent();
	if(value == "") {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	} else if (value.length < minLength) {
		unfoldErrorRow(errorRowId);
		return message1;
	} else if (value.length > maxLength) {
		unfoldErrorRow(errorRowId);
		return message2;
	} else 	{
		foldErrorRow(errorRowId);
		return "";
	}
}

/* The phone number regular expression accepts phone number in both local format 
(eg. 02 1234 5678 or 123 123 4567) or international format (eg. +61 (0) 2 1234 5678
 or +1 123 123 4567).It also accepts an optional extention of up to five digits
 prefixed by x or ext (eg. 123 123 4567 x89).*/
function ensureInternationalPhoneNumber(form, elementName, message) {
	var element = form.elements[elementName];
	var value   = element.value;
	var phoneRe = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/;
	if(value == "") {
		changeBgColor(element);
		return message;
	} else if (phoneRe.test(value) == false) {
		changeBgColor(element);
		return message;
	}
	return "";
}

/* misschien moet hier ook nog even gekeken worden of het wel positief is????*/
/* IsNaN werkt niet als er een letter achter een getal staat 345A is bijv geldig */
function ensureNumber(form, elementName, message, errorRowId)
{
	var element = form.elements[elementName];
	if (element != null && element.value != null) {
		var value   = element.value;
		var number  = parseInt(value);
		var syntaxOk=true;
		re = /([0-9])/;
		if (isNaN(number)) {
			changeBgColor(element);
			unfoldErrorRow(errorRowId);
			return message;
		} else {
			for (i =0; i < value.length && syntaxOk; i++){
				var tempValue= value.charAt(i);
				if (re.test(tempValue) == false) {
					changeBgColor(element);
					syntaxOk=false;
					unfoldErrorRow(errorRowId);
					return message;
				}
			}		
			foldErrorRow(errorRowId);
			return "";
		}
	}
	return "";
}

function ensureDoubleValue(form, elementName, message, errorRowId)
{

	var element = form.elements[elementName];
	var value   = element.value;
	var number  = parseInt(value);
	var syntaxOk=true;
	var re = new RegExp("[-+]?([0-9]*\.[0-9]+|[0-9]+)");
	if (isNaN(number)) {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	} else {
		if (re.test(value) == false) {
				changeBgColor(element);
				syntaxOk=false;
				unfoldErrorRow(errorRowId);
				return message;
		}		
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureFte(form, elementName, message)
{
	var element = form.elements[elementName];
	var value   = element.value;
	var number  = parseInt(value);
	var re = new RegExp("^[+]?[0-9]*(\.[0-9]{1,2})?$");
	if (isNaN(number)) {
		changeBgColor(element);
		return message;
	} else {
		if (re.test(value) == false) {
				changeBgColor(element);
				return message;
		}		
		return "";
	}
}

function ensureNumberValue(form, value, message, errorRowId){
	var number  = parseInt(value);
	var syntaxOk=true;
	re = /([0-9])/;
	if (isNaN(number)) {
		return message;
	} else {
		for (i =0; i < value.length && syntaxOk; i++){
			var tempValue= value.charAt(i);
			if (re.test(tempValue) == false) {
				syntaxOk=false;
				unfoldErrorRow(errorRowId);
				return message;
			}
		}		
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureURL(form, elementName, message)
{
	var element = form.elements[elementName];
	
	if ( (element.value == "") || (!checkURL(element.value) ) ) {
		changeBgColor(element);
		return message;
	} else {
		return "";
	}
}

function ensureMoney(form, elementName, message, errorRowId)
{
	var element = form.elements[elementName];
	var value   = element.value;
	var number  = parseInt(value)
	re = /([0-9])/;
	var lengthOk = true;
	var syntaxOk = true;
	var bedragArray = value.split(',');
	var euros = bedragArray[0];
	var centen = bedragArray[1];
	var localMessage = "";
	var andereVelden = bedragArray[2];

	if(andereVelden != null){
		message +="           - te veel komma's\n";
		changeBgColor(element);
	}else{				
		if(value.indexOf(".")>=0){
			message += "           - punt-tekens zijn niet toegestaan\n";
			changeBgColor(element);
		}else{
			localMessage += ensureNumberValue(form, euros, "           - euros zijn incorrect\n");		
			if(centen!=null){
				if (centen.length != 2) {
					localMessage += "           - eurocenten in twee cijfer achter de komma\n";
				}		
				localMessage += ensureNumberValue(form, centen, "           - eurocenten zijn incorrect\n");
			}
			if(localMessage != ""){
				message += localMessage;
				changeBgColor(element);
			}else{
				message="";
			}
		}
	}
	if(message == ""){
		foldErrorRow(errorRowId);
	}else{
		unfoldErrorRow(errorRowId);
	}
	return message;
}

function ensureMaxSalary(form, elementName, message, errorRowId)
{
	var element = form.elements[elementName];
	var value   = element.value;
	var number  = parseInt(value)
	re = /([0-9])/;
	var lengthOk = true;
	var syntaxOk = true;

	if (value.length > 12) {
		changeBgColor(element);
		lengthOk = false;
	}
    
	for (i =0; i < value.length && syntaxOk; i++)
	{
			var tempValue= value.charAt(i);
			if (re.test(tempValue) == false) {
				changeBgColor(element);
				syntaxOk = false;
			}
	}
	if (lengthOk  && syntaxOk) {
		foldErrorRow(errorRowId);
		return "";
	} else {
		unfoldErrorRow(errorRowId);
		return message;
	}
}

function ensureNumberWithLength(form, elementName, minLength, maxLength, canNotBeNull, message, errorRowId)
{
	var element = form.elements[elementName];
	var value   = element.value;
	var number  = parseInt(value, 10)
	re = /([0-9])/;
	var lengthOk = true;
	var syntaxOk = true;
	
	// als het niet null mag zijn ff checken
	if (canNotBeNull && (value.length < minLength || value.length > maxLength)) {
		changeBgColor(element);
		lengthOk = false;
	}

	for (i =0; i < value.length && syntaxOk; i++)
	{
		var tempValue= value.charAt(i);
		if (re.test(tempValue) == false) {
			changeBgColor(element);
			syntaxOk = false;
		}
	}

	if (lengthOk  && syntaxOk) {
		foldErrorRow(errorRowId);
		return "";
	} else {
		unfoldErrorRow(errorRowId);
		return message;
	}
}

function ensureNumberWithSize(form, elementName, minLength, maxLength, minSize, maxSize, canNotBeNull, message, errorRowId)
{
	var element = form.elements[elementName];
	var value   = element.value;
	var number  = parseInt(value, 10);
	re = /([0-9])/;
	var lengthOk = true;
	var syntaxOk = true;
	
	// als het niet null mag zijn ff checken
	if (canNotBeNull && (value.length < minLength || value.length > maxLength)) {
		changeBgColor(element);
		lengthOk = false;
	}

	for (i =0; i < value.length && syntaxOk; i++)
	{
		var tempValue= value.charAt(i);
		if (re.test(tempValue) == false) {
			changeBgColor(element);
			syntaxOk = false;
		}
	}
	if (syntaxOk) {
		if ((number*1) < (minSize*1)) {
			changeBgColor(element);
			lengthOk = false;
		}
		if (number > maxSize) {
			changeBgColor(element);
			lengthOk = false;
		}
	}
	if (lengthOk  && syntaxOk) {
		foldErrorRow(errorRowId);
		return "";
	} else {
		unfoldErrorRow(errorRowId);
		return message;
	}
}

function ensureNumberOneOrZero(form, elementName, message)
{
	var element = form.elements[elementName];
	var value   = element.value;
	var number  = parseInt(value)
	re = /([0-1])/;
	var lengthOk = true;
	var syntaxOk = true;

	if (value.length < 1) {
		changeBgColor(element);
		lengthOk = false;
	}

	for (i =0; i < value.length && syntaxOk; i++)
	{
		var tempValue= value.charAt(i);
		if (re.test(tempValue) == false) {
			changeBgColor(element);
			syntaxOk = false;
		}
	}
	if (lengthOk  && syntaxOk) {
		foldErrorRow(errorRowId);
		return "";
	} else {
		unfoldErrorRow(errorRowId);
		return message;
	}
}

function ensureWorkHours(form, elementName, message, errorRowId)
{
	var element = form.elements[elementName];
	var value   = element.value;
	var syntaxOk = true;
	
	if (value.length > 0) {
		var re = new RegExp("^[0-9]{1,2}(\.[0-9]{1})?$");
		if (re.test(value) == false) {
			changeBgColor(element);
			syntaxOk = false;
		}		
	}
		
	if (syntaxOk) {
		foldErrorRow(errorRowId);
		return "";
	} else {
		unfoldErrorRow(errorRowId);
		return message;
	}
}

function ensureDate(form, elementName, message, errorRowId)
{
	yearElementName   = elementName+"year";
	yearElement       = form.elements[yearElementName];
	yearValueAsNumber = parseInt(yearElement.value);

	
			
	if (yearValueAsNumber < 1929) {
		changeBgColorOfDateElement(form, elementName);
		unfoldErrorRow(errorRowId);
		return message;
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureDateRange(form, startDateElementName, endDateElementName, message, errorRowId) 
{
	if (null != form) { 
		if (null != form.elements[startDateElementName] && null != form.elements[endDateElementName])
		{
			var startDateElement  = form.elements[startDateElementName];
			var endDateElement    = form.elements[endDateElementName];
						
			var startDateAsNumber = parseInt(startDateElement.value);
			var endDateAsNumber   = parseInt(endDateElement.value);
			
			if (endDateAsNumber != 0)
			{
				if (startDateAsNumber > endDateAsNumber) 
				{
					changeBgColorOfDateElement(form, startDateElement.name);
					unfoldErrorRow(errorRowId);
					return message;
				}
				else {
					foldErrorRow(errorRowId); 
					return ""; 
				}
			}
			else {
				foldErrorRow(errorRowId);
				return "";
			}
		}
		else {
			foldErrorRow(errorRowId);
			return "";
		}
	}
	else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureDateMinPeriod(periodInDays, form, startDateElementName, endDateElementName, message, errorRowId) 
{
	if (null != form) { 
		if (null != form.elements[startDateElementName] && null != form.elements[endDateElementName])
		{
			var startDate;
			if (form.elements[startDateElementName + 'date'].value != 0) {
				startDate = new Date();
				startDate.setDate(form.elements[startDateElementName + 'date'].value);
				startDate.setMonth(form.elements[startDateElementName + 'month'].value - 1);
				startDate.setFullYear(form.elements[startDateElementName + 'year'].value);
			}
			var endDate;
			if (form.elements[endDateElementName + 'date'].value != 0) {
				endDate = new Date();
				endDate.setDate(form.elements[endDateElementName + 'date'].value);
				endDate.setMonth(form.elements[endDateElementName + 'month'].value - 1);
				endDate.setFullYear(form.elements[endDateElementName + 'year'].value);
			}
			
			if (startDate != null && endDate != null)
			{
				startDate.addDays(periodInDays);
				if (startDate > endDate) 
				{
					changeBgColorOfDateElement(form, endDateElementName);
					unfoldErrorRow(errorRowId);
					return message;
				}
				else {
					foldErrorRow(errorRowId); 
					return ""; 
				}
			}
			else {
				foldErrorRow(errorRowId);
				return "";
			}
		}
		else {
			foldErrorRow(errorRowId);
			return "";
		}
	}
	else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureDateInPresentOrFuture(form, startDateElementName, endDateElementName, message, errorRowId) {
	if (null != form) {
		if (null != form.elements[startDateElementName] && null != form.elements[endDateElementName]) {
			var startDate;
			if (form.elements[startDateElementName + 'date'].value != 0) {
				startDate = new Date();
				startDate.setDate(form.elements[startDateElementName + 'date'].value);
				startDate.setMonth(form.elements[startDateElementName + 'month'].value - 1);
				startDate.setFullYear(form.elements[startDateElementName + 'year'].value);
			}
			var endDate;
			if (form.elements[endDateElementName + 'date'].value != 0) {
				endDate = new Date();
				endDate.setDate(form.elements[endDateElementName + 'date'].value);
				endDate.setMonth(form.elements[endDateElementName + 'month'].value - 1);
				endDate.setFullYear(form.elements[endDateElementName + 'year'].value);
			}
			if (endDate != null) {
				var today = new Date();
				today.setHours(0);
				today.setMinutes(0);
				today.setSeconds(0);
				today.setMilliseconds(0);
				if (startDate < today || endDate < today) {
					changeBgColorOfDateElement(form, startDateElementName);
					unfoldErrorRow(errorRowId);
					return message;
				} else {
					foldErrorRow(errorRowId);
					return "";
				}
			} else {
				foldErrorRow(errorRowId);
				return "";
			}
		} else {
			foldErrorRow(errorRowId);
			return "";
		}
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureWithinMaxPeriod(form, startDateElementName, endDateElementName, message, errorRowId, maxPeriodInMonths) 
{
	if (null != form) { 
		if (null != form.elements[startDateElementName] && null != form.elements[endDateElementName])
		{	
			var startDate;
			if (form.elements[startDateElementName + 'date'].value != 0){
				startDate = new Date();
				startDate.setDate(form.elements[startDateElementName + 'date'].value);
				startDate.setMonth(form.elements[startDateElementName + 'month'].value - 1);
				startDate.setFullYear(form.elements[startDateElementName + 'year'].value);
			}
			var endDate;
			if (form.elements[endDateElementName + 'date'].value != 0){
				endDate = new Date();
				endDate.setDate(form.elements[endDateElementName + 'date'].value);
				endDate.setMonth(form.elements[endDateElementName + 'month'].value - 1);
				endDate.setFullYear(form.elements[endDateElementName + 'year'].value);
			}
			
			if (endDate != null)
			{
				if (startDate.addMonths(maxPeriodInMonths) < endDate) 
				{
					changeBgColorOfDateElement(form, startDateElementName);
					unfoldErrorRow(errorRowId);
					return message;
				}
				else {
					foldErrorRow(errorRowId); 
					return ""; 
				}
			}
			else {
				foldErrorRow(errorRowId);
				return "";
			}
		}
		else {
			foldErrorRow(errorRowId);
			return "";
		}
	}
	else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function changeBgColorOfDateElement(form, startDatePrefix) 
{
	if (null != form)
	{
		for (var i=0; i < form.elements.length; i++) {
			element = form.elements[i];
			if (element.name.length > startDatePrefix.length) {
				firstHalf = element.name.substring(0,startDatePrefix.length);
				if (firstHalf == startDatePrefix) {
					changeBgColor(form.elements[i]);
				}
			}
		}
	}
}

function ensureZipCode(form, elementName, message, errorRowId)
{
	var element = form.elements[elementName];
		
	if (element.value == "" || !isZip(element.value)) {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function isZip(s)
{
 
     // Check for correct zip code
     reZip = new RegExp(/^[1-9]{1}[0-9]{3}[A-Za-z]{2}$/);
 
     if (!reZip.test(s)) {          
          return false;
    }
 
     return true;
}


function ensureZipCodeNum(form, elementName, message, errorRowId)
{
	var element = form.elements[elementName];
	
	if (element.value == "" || isNaN(element.value) || element.value.length < 4) {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureZipCodeAlfa(form, elementName, message, errorRowId) 
{
	var element    = form.elements[elementName];
	var value      = element.value;
	var upperOne   = value.charAt(0).toUpperCase();
	var upperTwo   = value.charAt(1).toUpperCase();
	var uppers     = "ABCDEFGHIJKLMNOPQRSTUVWXZ";
	
	if ((value == "") || (value.length != 2) || (uppers.indexOf(upperOne) == -1) || (uppers.indexOf(upperTwo) == -1)  ) 
	{
	   changeBgColor(element);
	   unfoldErrorRow(errorRowId);
	   return message 
    } else {
    	foldErrorRow(errorRowId);
		return "";
	}
}

function ensureEmailAddress(form, elementName, message, errorRowId)
{
	var element = form.elements[elementName];
	
	if ( (element.value == "") || (!checkEmail(element.value) ) ) {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureCheckBoxes(form, elementName, message, errorRowId)
{
	element           = form[elementName];
    var elementExists = "" + element;
	
    if(elementExists != 'undefined' || elementExists != 'null')	
	{
		nothingChecked = true;
	
	    for (var i=0; i < element.length ; i++) {
		  if (element[i].checked == true) {
			 nothingChecked = false;
		  }
	    } 
	    if (nothingChecked)	{
	    	unfoldErrorRow(errorRowId);
			return message;
	    } else {
	    	foldErrorRow(errorRowId);
			return "";
	    }
   }else {
   	unfoldErrorRow(errorRowId);
   	return "ensureCheckBoxes - element bestaat niet: form[" + form +"]" + " elementName[" +  elementName + " message[" + message + "]";
   }
}

function ensureCheckBoxesCheckedMinMaxCount(form, elementName, message, minCount, maxCount, errorRowId)
{
	var count = 0;
	
	element        = form[elementName];
	checked   = false;
	
	for (var i=0; i < element.length ; i++) {
		if (element[i].checked == true) {
			checked = true;
			count++;
		}
	} 
	
	if (checked) {
		if (count < minCount || count > maxCount) {
			unfoldErrorRow(errorRowId);
			return message;
		} else {
			foldErrorRow(errorRowId);
			return "";
		}
	} else if (!checked && minCount > 0){
		unfoldErrorRow(errorRowId);
		return message;
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function ensureRadioChecked(form, elementName, errorRowId)
{
	element        = form[elementName];
	var checked = false;
	for (i=0;i < element.length;i++) 
	{
       	if (element[i].checked) {
       		
       		checked = true; 
       	}else{
       		unfoldErrorRow(errorRowId);
       	}
	}
	if(checked){
		foldErrorRow(errorRowId);
	}else{
		unfoldErrorRow(errorRowId);	
	}
	return checked;
}

function ensureRadio(form, elementName, message, errorRowId) {
	var element = form[elementName];
	var checked = false;
	for (var n = 0; n < element.length; n++) {
		if (element[n].checked) {
			checked = true;
			break;
		}
	}
	if (!checked) {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function isValid(entry) {
	validChar='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
	strlen=entry.length;
	entry=entry.toUpperCase();          
	for (i=0; i < strlen; i++ ) {
	    if (validChar.indexOf(entry.charAt(i)) < 0) {
    	   return false;
       }
    }
	return true;
}

function countNum(entry) {
	var aantal=0;
	validChar='0123456789'; 
	strlen=entry.length;
	entry=entry.toUpperCase();          
	for (i=0; i < strlen; i++ ) {
	    if (validChar.indexOf(entry.charAt(i)) >= 0) {
    	   aantal++;
       }
    }
	return aantal;
}

function countLetter(entry) {
	var aantal=0;
	validChar='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
	strlen=entry.length;
	entry=entry.toUpperCase(); 
	for (i=0; i < strlen; i++ ) {
	    if (validChar.indexOf(entry.charAt(i)) >= 0) {
    	   aantal++;
       }
    }
	return aantal;
}

function ensurePassword(form, elementName, elementName2, errorRowId){
	return ensurePassword(form, elementName, elementName2, errorRowId, false);
}


function ensurePassword(form, elementName, elementName2, errorRowId, strict){
	element          = form[elementName];
	elementToCompare = form[elementName2];
	var errorMessage="";

	var aantalNum=countNum(element.value);
	var aantalLetter=countLetter(element.value);	

	if(element.value.length < 6){
		var errorMessage=errorMessage+"Het wachtwoord moet minstens 6 tekens bevatten\n";
	} else if(element.value!= elementToCompare.value){
		var errorMessage=errorMessage+"De wachtwoorden komen niet overeen.\n";
		changeBgColor(elementToCompare);
	} else if(!isValid(element.value) && !strict){
		var errorMessage=errorMessage+"Alleen cijfers en letters zijn toegestaan in het wachtwoord\n";
	} else {
		if(aantalNum<=0){
			var errorMessage=errorMessage+"Minimaal 1 cijfer moet in het wachtwoord voorkomen\n";
		}
		if(aantalLetter<=0){
			var errorMessage=errorMessage+"Minimaal 1 letter moet in het wachtwoord voorkomen\n";
		}
		if(aantalNum+aantalLetter>=element.value.length && strict) {
			var errorMessage=errorMessage+"Minimaal 1 speciaal teken (geen letter of cijfer) moet in het wachtwoord voorkomen\n";
		}
	}
	if (errorMessage != "") {
		changeBgColor(element);
	}
	if(errorMessage == ""){
		foldErrorRow(errorRowId);
	}else{
		unfoldErrorRow(errorRowId);
	}
	return errorMessage;
}


function ensureListChecked(form, elementName, errorRowId)
{
	element = form[elementName];
	var selected = false;
	for (i=0; i < element.length; i++)
	{
		if (element[i].selected)
			{selected = true;}
	}
	if(selected){
		unfoldErrorRow(errorRowId);
	}else{
		foldErrorRow(errorRowId);
	}
	return selected;
}

function ensureList(form, elementName, message, errorRowId)
{
	element = form[elementName];
	var selected = false;
	for (i=0; i < element.length; i++)
	{
		if (element[i].selected)
			{selected = true;}
	}
	if (selected) {
		foldErrorRow(errorRowId);
		return "";
	} else {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	}
}

function ensureListValue(form, elementName, message, errorRowId){
	element = form[elementName];
	var selected = false;
	for (i=0; i < element.length; i++)
	{
		if (element[i].selected && element[i].value != "")
			{selected = true;}
	}
	if (selected) {
		foldErrorRow(errorRowId);
		return "";
	} else {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	}
}

function ensureFile(form, elementName, allowedExtensions, message, errorRowId) {
	var element = form.elements[elementName];
	var valid = false;
	if (element.value != "") {
		var fileName = element.value.toLowerCase();
		if(allowedExtensions == "*"){
			valid = true;
		}else{ 
			for (var n = 0; n < allowedExtensions.length; n++) {
				if (fileName.lastIndexOf(allowedExtensions[n]) != -1) {
					valid = true;
					break;
				}
			}
		}
	}
	if (!valid) {
		changeBgColor(element);
		unfoldErrorRow(errorRowId);
		return message;
	} else {
		foldErrorRow(errorRowId);
		return "";
	}
}

function IsNumeric(passedVal)
{
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
	if(passedVal == "")
		{return false;}
	if (ValidChars.indexOf(passedVal) == -1)
	{
		IsNumber = false;
	}
	return IsNumber;
}

function isValidTime(value) {

   var colonCount = 0;
   for (var i=0; i<value.length; i++) 
   {
      var ch = value.substring(i, i+1);
      if ( (ch < '0') || (ch > '9') ) {
         if ( (ch != ':') && (ch != '.')) {
            return false;
         }
      }
      if (ch == ':') { colonCount++; }
   }
   
   if ( (colonCount < 1) || (colonCount > 1) ) { return false; }
   
   var hh = value.substring(0, value.indexOf(":"));
   if ( (parseFloat(hh) < 0) || (parseFloat(hh) > 23) ) { return false; }
   
   var mm = value.substring(value.indexOf(":")+1, value.length);
   if ( (parseFloat(mm) < 0) || (parseFloat(mm) > 59) ) { return false; }
   return true;
}

function parseTime(timeElement){
	var sTime = timeElement.value;
	var myTime = new Array(2);
	var parsedTime = new Array(2);
	
	myTime[0] = "00";
	myTime[1] = "00";
	if(isValidTime(sTime)){
		myTime[0] = sTime.substring(0, sTime.indexOf(":"));
		myTime[1] = sTime.substring(sTime.indexOf(":")+1, sTime.length);
	}else{
		alert('Geen geldige tijd opgegeven (' + timeElement.name + ' - ' + timeElement.value + ').\nTijdsnotatie: \'hh:mm\'');
		timeElement.value = "00:00";
		timeElement.focus();
	}
	parsedTime[0] = getTwoDigitNumber(myTime[0]);
	parsedTime[1] = getTwoDigitNumber(myTime[1]);
	return parsedTime;
}

function getDateFromFormElement(form, namePrefix)
{
	var name=namePrefix+'date';
    var dateElement = form.elements[name]
    var name=namePrefix+'month';
    var monthElement = form.elements[name]
    var name=namePrefix+'year';
    var yearElement = form.elements[name]
    var name=namePrefix+'time';
    var timeElement = form.elements[name]
    
	if(parseInt(yearElement.value)=="0") 
	{
	  	setHiddenDate(form.elements[namePrefix], null);
		return null;
	}
	else
	{
		myTime = parseTime(timeElement);
  		returnDate = new Date(parseInt(yearElement.value), parseInt(monthElement.value)-1, parseInt(dateElement.value), parseInt(myTime[0]), parseInt(myTime[1]));
  		setHiddenDate(form.elements[namePrefix],returnDate);
  		return returnDate;
    }
}

function setDateFromFormElement(form,namePrefix,aDate)
{
  var name=namePrefix+'date';
  var dateElement = form.elements[name]
  var name=namePrefix+'month';
  var monthElement = form.elements[name]
  var name=namePrefix+'year';
  var yearElement = form.elements[name]
  var name=namePrefix+'time';
  var timeElement = form.elements[name]

	if(""+aDate=="undefined" || ""+aDate=="null")
	{
	  setDateFromFormElementEmpty(form, namePrefix);
	}
	else
	{
	  initSelect(dateElement, aDate.getDate().toString())
	  initSelect(monthElement, (aDate.getMonth()+1).toString())
	  initSelect(yearElement, (aDate.getFullYear()).toString())
	  timeElement.value = aDate.getHours() + ":" + aDate.getMinutes()
	  setHiddenDate(form.elements[namePrefix],aDate);
  }
}
  
function initSelect(select, value)
{
	if(select.type!="select-one")
		return;
  for(var i=0 ; i < select.options.length ; i++)
  {
    if(select.options[i].value==value)
    {
      select.options[i].selected=true;
      break;
    }
  }
}
function doDateFormElementOnChange(element, namePrefix, namePostFix)
{
  var datum = new Date();
  
  
  var form = element.form;
  var name=namePrefix+namePostFix;
  var element = form.elements[name]
  if(element.value=="0"){
    setDateFromFormElementEmpty(form, namePrefix)
  }else{
    initEmptyElements(form, namePrefix, datum);
  }
	//hiero
}
registerDateFormElementOnChangeHandler(doDateFormElementOnChange);

function setDateFromFormElementEmpty(form, namePrefix)
{
  var name=namePrefix+'date';
  var dateElement = form.elements[name]
  var name=namePrefix+'month';
  var monthElement = form.elements[name]
  var name=namePrefix+'year';
  var yearElement = form.elements[name]
  var name=namePrefix+'time';
  var timeElement = form.elements[name]
  initSelect(dateElement, "0")
  initSelect(monthElement, "0")
  initSelect(yearElement, "0")
  timeElement.value = "00:00"
  setHiddenDate(form.elements[namePrefix], null);
}
function initEmptyElements(form, namePrefix, theDate)
{
  var name=namePrefix+'date';

  var dateElement = form.elements[name]
  var name=namePrefix+'month';
  var monthElement = form.elements[name]
  var name=namePrefix+'year';
  var yearElement = form.elements[name]
  var name=namePrefix+'time';
  var timeElement = form.elements[name]

	if(""+theDate=="undefined" || ""+theDate=="null")
	{
	  alert("error: initEmptyElements thDate == "+theDate)
	}
	else
	{
	  if(dateElement.value == "0")
	    initSelect(dateElement, theDate.getDate().toString())
	  else
	    theDate.setDate(parseInt(dateElement.value))
	  if(monthElement.value == "0")
	    initSelect(monthElement, (theDate.getMonth()+1).toString())
	  else
	    theDate.setMonth(parseInt(monthElement.value)-1)
	  if(yearElement.value == "0")
	    initSelect(yearElement, (theDate.getFullYear()).toString());
	  else
	    theDate.setYear(parseInt(yearElement.value)); 
	  if(timeElement.value == "0")
		timeElement.value = theDate.getHours() + ":" + theDate.getMinutes()
	  else{
	  	myTime = parseTime(timeElement);
		var uren = myTime[0]*1;       // Deze rare constructie is nodig omdat anders 08 en 09 niet goed geparseerd worden (01..07 gaan wel goed ?!?)
		//var hours = parseInt(myTime[0]);
		var hours = parseInt(uren);
	    theDate.setHours(hours);
		
	    //theDate.setMinutes(parseInt(myTime[1]));// Ook hier is de rare constructie nodig
		var minuten = myTime[1]*1;
		var minutes = parseInt(minuten);
		theDate.setMinutes(minutes);
	  }
  	setHiddenDate(form.elements[namePrefix],theDate);
  }

}
function getTwoDigitNumber(number){
	number = "" + number;
	if(number.length == 1)
		number = "0" + number;
	return number;
}
function renderDateItemOnChangeTagPart(namePrefix, namePostfix)
{
  var s="";
  s+='onChange="runDateFormElementOnChangeHandlers(this, \''
  s+=namePrefix
  s+='\', \''
  s+=namePostfix
  s+='\')"'
  return s;
}

/**
Methode om drie pulldowns die samen een datum representeren in HTML te renderen.
Als de readOnlyParm een waarde heeft bepaalt deze waarde of het de datum readonly is. Als readOnlyParm geen waarde heeft, 
is het veld veranderbaar
*/

function renderDateItemDisable(namePrefix,theDate,yearstart,yearamount, showDate, allow_empty, emptyName, readOnlyParm)
{
	renderDateItemDisable(namePrefix,theDate,yearstart,yearamount, showDate, allow_empty, emptyName, readOnlyParm, false)
}

function renderDateItemDisable(namePrefix,theDate,yearstart,yearamount, showDate, allow_empty, emptyName, readOnlyParm, showTime)
{

  var s="";
  var dateToday;
  var readOnly=false;
  if(readOnlyParm!=null){
  	readOnly=readOnlyParm;
  }
  if(""+theDate=="undefined" || ""+theDate=="null")
      dateToday = 0;
  else
      dateToday = theDate.getDate();
		
  if(showDate)
  {
	  s+='<select id="date" class="pull all_input"';
	  if(readOnly){
	  	s+=' disabled="true"';
	  }
	  s+=' name="';
	  s+=namePrefix;
	  s+='date" ';
	  s+=renderDateItemOnChangeTagPart(namePrefix,'date');
	  s+='>';
	  if(allow_empty)
	  {
	    s+='<option  value="0" '
    	if(dateToday==0)
    		s+='selected'
    	s+='>'+emptyName;
	  }	  
	  for(var iDate=0;iDate<31;iDate++)
	  {
	    s+='<option  value="'
	    s+=(iDate+1);
	    s+='" ' 
	    if(dateToday==(iDate+1))
	    {
	      s+='selected'
	    }
	    s+='>'
	    s+=(iDate+1) + ""
	  }
  	s+='</select><img src="/jobsrep/gfx/allsites/spacer.gif" width="5" height="1">';
	}
	else
	{
	  s+='<input type="hidden" name="'
	  s+= namePrefix
	  s+='date" value="'+dateToday+'">';
	}

  var monthToday;
	if(""+theDate=="undefined" || ""+theDate=="null"){
		monthToday = 0;
	}else if(theDate=="Thu Jan 1 01:00:00 UTC+0100 1970"){
		monthToday = 0;
	}else{
		monthToday = theDate.getMonth()+1;
	}

  s+='<select id="month" class="pull all_input"';
  if(readOnly){
  	s+=' disabled="true"';
  }
  s+=' name="';

  s+=namePrefix
  s+='month" '
  s+=renderDateItemOnChangeTagPart(namePrefix,'month');
  s+='>';
  if(allow_empty)
  {
  	
    s+='<option  value="0" '
    if(monthToday==0)
    	s+='selected'
    s+='>'+emptyName;
  }  
  for(var iMonth=0;iMonth<12;iMonth++)
  {
    s+='<option value="'
    s+=(iMonth+1);
    s+='" '
    if(monthToday==(iMonth+1))
    {
      s+='selected'
    }
    s+='>'
    switch(iMonth)
    {
      case 0:s+='januari';break;
      case 1:s+='februari';break;
      case 2:s+='maart';break;
      case 3:s+='april';break;
      case 4:s+='mei';break;
      case 5:s+='juni';break;
      case 6:s+='juli';break;
      case 7:s+='augustus';break;
      case 8:s+='september';break;
      case 9:s+='oktober';break;
      case 10:s+='november';break;
      case 11:s+='december';break;
    }
    s+=""
  }
  s+='</select><img src="/jobsrep/gfx/allsites/spacer.gif" width="5" height="1">';
  
  var yearToday;
	if(""+theDate=="undefined" || ""+theDate=="null")
		yearToday = 0;
	else if(theDate=="Thu Jan 1 01:00:00 UTC+0100 1970")
		yearToday = 0;		
	else
		yearToday = theDate.getFullYear();
		
		if (yearstart < 1900)
		{
			yearstart = yearstart + 1900;
		}
  s+='<select id="year" class="pull all_input"';
  if(readOnly){
  	s+=' disabled="true"';
  }
  s+=' name="';
  s+=namePrefix
  s+='year" '
  s+=renderDateItemOnChangeTagPart(namePrefix,'year');
  s+='>';
  if(allow_empty)
  {
    s+='<option  value="0" '
    if(yearToday==0)
    	s+='selected'
    s+='>'+emptyName;;

  }
  
  for(var iYear=yearstart;iYear<=(yearstart+yearamount);iYear++)
  {
    s+='<option value="'
    s+=iYear;
    s+='" ' 
    if(yearToday==iYear)
    {
      s+='selected'
    }
    s+='>'
    s+=(iYear) + ""
  }
  s+='</select><img src="/jobsrep/gfx/allsites/spacer.gif" width="5" height="1">';
  var timeToday;
	if(""+theDate=="undefined" || ""+theDate=="null")
		timeToday = "00:00";
	else if(theDate=="Thu Jan 1 01:00:00 UTC+0100 1970")
		timeToday = "00:00";
	else{
		thisHour = getTwoDigitNumber(theDate.getHours());
		thisMinute = getTwoDigitNumber(theDate.getMinutes());
		timeToday =  thisHour + ":" + thisMinute;
	}
  s+='<input '
  if(!showTime)
	s+='type="hidden" '
  else
	s+='type="text" '
  s+='class="text" size="5" '
  s+='name="';
  s+=namePrefix
  s+='time" '
  s+='value="'
  s+=timeToday
  s+='" '
  s+=renderDateItemOnChangeTagPart(namePrefix,'time');
  s+='>'
  s+='<input type="hidden" name="';
  s+=namePrefix;
  s+='" value="';
  if (theDate != null && theDate instanceof Date) {
    s+=theDate.getUTCTime();
  }
  s+='">';
  return s;
}

function renderDateItem(namePrefix,theDate,yearstart,yearamount, showDate, allow_empty, emptyName)
{
	renderDateItem(namePrefix,theDate,yearstart,yearamount, showDate, allow_empty, emptyName, false)
}

function renderDateItem(namePrefix,theDate,yearstart,yearamount, showDate, allow_empty, emptyName, showTime)
{
  var s="";
  var readOnlyParm;
  var dateToday;
  var readOnly=false;
  if(readOnlyParm!=null){
  	readOnly=readOnlyParm;
  }
  if(""+theDate=="undefined" || ""+theDate=="null")
      dateToday = 0;
  else
      dateToday = theDate.getDate();
  if(showDate)
  {
	  s+='<select class="pull"';
	  if(readOnly){
	  	s+=' disabled="true"';
	  }
	  s+=' name="';
	  s+=namePrefix;
	  s+='date" ';
	  s+=renderDateItemOnChangeTagPart(namePrefix,'date');
	  s+='>';
	  if(allow_empty)
	  {
	    s+='<option  value="0" '
    	if(dateToday==0)
    		s+='selected'
    	s+='>--'
	  }
	  
	  for(var iDate=0;iDate<31;iDate++)
	  {
	    s+='<option  value="'
	    s+=(iDate+1);
	    s+='" ' 
	    if(dateToday==(iDate+1))
	    {
	      s+='selected'
	    }
	    s+='>'
	    s+=(iDate+1) + ""
	  }
  	s+='</select><img src="/jobsrep/gfx/allsites/spacer.gif" width="5" height="1">';
	
	}
	else
	{
	  s+='<input type="hidden" name="'
	  s+= namePrefix
	  s+='date" value="'+dateToday+'">';
	}

  var monthToday;
	if(""+theDate=="undefined" || ""+theDate=="null")
		monthToday = 0;
	else if(theDate=="Thu Jan 1 01:00:00 UTC+0100 1970")
		monthToday = 0;
	else
		monthToday = theDate.getMonth()+1;

  s+='<select class="pull"';
  if(readOnly){
  	s+=' disabled="true"';
  }
  s+=' name="';

  s+=namePrefix
  s+='month" '
  s+=renderDateItemOnChangeTagPart(namePrefix,'month');
  s+='>';
  if(allow_empty)
  {
  	
    s+='<option  value="0" '
    if(monthToday==0)
    	s+='selected'
    s+='>'+emptyName;
  }
  
  for(var iMonth=0;iMonth<12;iMonth++)
  {
    s+='<option value="'
    s+=(iMonth+1);
    s+='" '
    if(monthToday==(iMonth+1))
    {
      s+='selected'
    }
    s+='>'
    
    switch(iMonth)
    {
      case 0:s+='januari';break;
      case 1:s+='februari';break;
      case 2:s+='maart';break;
      case 3:s+='april';break;
      case 4:s+='mei';break;
      case 5:s+='juni';break;
      case 6:s+='juli';break;
      case 7:s+='augustus';break;
      case 8:s+='september';break;
      case 9:s+='oktober';break;
      case 10:s+='november';break;
      case 11:s+='december';break;
    }
    s+=""
  }
  s+='</select><img src="/jobsrep/gfx/allsites/spacer.gif" width="5" height="1">';
  
  var yearToday;
	if(""+theDate=="undefined" || ""+theDate=="null")
		yearToday = 0;
	else if(theDate=="Thu Jan 1 01:00:00 UTC+0100 1970")
		yearToday = 0;		
	else
		yearToday = theDate.getFullYear();
		
		if (yearstart < 1900)
		{
			yearstart = yearstart + 1900;
		}
  s+='<select class="pull"';
  if(readOnly){
  	s+=' disabled="true"';
  }
  s+=' name="';
  s+=namePrefix
  s+='year" '
  s+=renderDateItemOnChangeTagPart(namePrefix,'year');
  s+='>';
  if(allow_empty)
  {
    s+='<option  value="0" '
    if(yearToday==0)
    	s+='selected'
    s+='>----';

  }  
  for(var iYear=yearstart;iYear<=(yearstart+yearamount-1);iYear++)
  {
    s+='<option value="'
    s+=iYear;
    s+='" ' 
    if(yearToday==iYear)
    {
      s+='selected'
    }
    s+='>'
    s+=(iYear) + ""
  }
  s+='</select><img src="/jobsrep/gfx/allsites/spacer.gif" width="5" height="1">';
  var timeToday;
	if(""+theDate=="undefined" || ""+theDate=="null")
		timeToday = "00:00";
	else if(theDate=="Thu Jan 1 01:00:00 UTC+0100 1970")
		timeToday = "00:00";
	else{
		thisHour = getTwoDigitNumber(theDate.getHours());
		thisMinute = getTwoDigitNumber(theDate.getMinutes());
		timeToday =  thisHour + ":" + thisMinute;
	}
  s+='<input '
  if(!showTime)
	s+='type="hidden" '
  else
	s+='type="text" '
  s+='class="text" size="5" '
  s+='name="';
  s+=namePrefix
  s+='time" '
  s+='value="'
  s+=timeToday
  s+='" '
  s+=renderDateItemOnChangeTagPart(namePrefix,'time');
  s+='>'
  s+='<input type="hidden" name="';
  s+=namePrefix;
  s+='" value="';
  if (theDate != null && theDate instanceof Date) {
    s+=theDate.getUTCTime();
  }
  s+='">';
return s;

}

function setHiddenDate(input, theDate) {
	if (theDate != null && theDate instanceof Date) {
		input.value = theDate.getUTCTime();
	} else {
		input.value = "";
	}
}

function checkEmail(email) {
	if (/^\w+([\.\&-]?\w*)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(email)) {
		return true;
	} else {
		return false;
	}
}

function checkURL(url) {
	var RegexUrl = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return RegexUrl.test(url);
}


function checkTextarea(form, elementName, maxlength, errorMessage, errorRowId)
{
	element = form[elementName];
	if(element.value.length>=maxlength) {
		  changeBgColor(element);
          element.focus();
          unfoldErrorRow(errorRowId);
          return (errorMessage );          
     } else{
     	foldErrorRow(errorRowId);
     	return "";
     }
}

var BrowserDetector = {
	detect: function () {
		var ffPattern = new RegExp("Firefox[\\/\\s](\\d+\\.\\d+)");
		var iePattern = new RegExp("MSIE (\\d+\\.\\d+);");
		if (ffPattern.test(navigator.userAgent)) {
			this.type = "Firefox";
			this.version = new Number(RegExp.$1);
		} else if (iePattern.test(navigator.userAgent)) {
			this.type = "IE";
			this.version = new Number(RegExp.$1);
		}
	}
};

function ensureBrowser() {
return true;
	BrowserDetector.detect();
	if ((BrowserDetector.type == "IE" && BrowserDetector.version >= 5) || (BrowserDetector.type == "Firefox" && BrowserDetector.version >= 2)) {
		return true;
	} else {
		return false;	
	}
}

function replaceChars(entry, src, dst) 
{
	temp = entry;
	while (temp.indexOf(src)>-1) {
		pos= temp.indexOf(src);
		temp = "" + (temp.substring(0, pos) + dst +
		temp.substring((pos + src.length), temp.length));
	}
	return temp;
}

function AddHtmlBreaks(theValue)
{
	theValue = replaceChars(theValue, "<br>\r\n", "~br~");
	theValue = replaceChars(theValue, "\r\n", "~br~");
	theValue = replaceChars(theValue, "~br~", "<br>\r\n");
	return theValue;
}

function clearAllBgColorsOfFormFields(form)
{
	for (var i=0; i < form.elements.length; i++) {
		if (form.elements[i].type != "button") {
			form.elements[i].style.backgroundColor = cleanBgColor;
		}
	}
}

function getGeldWaarde(bedrag) {
	var indexOfDot = bedrag.lastIndexOf('.');
	if (indexOfDot == -1) {
		return bedrag;
	}
	if (bedrag.length - (indexOfDot+1) == 1) { //heeft 1 getal achter de komma
		bedrag += "0";
	}
	var voorkomma = bedrag.substring(0, indexOfDot);
  	var achterkomma = bedrag.substring(indexOfDot+1, bedrag.length);
  	bedrag = voorkomma +","+achterkomma;
  	
	return bedrag;
}

function hideObjects(objectType,objectName) {
  var allSpans = document.getElementsByTagName(objectType);
  for (var a = 0; a < allSpans.length; a++){
    var spanobject = allSpans[a];
    if (spanobject.id == objectName)
    {
      spanobject.style.visibility = "hidden";    
    }
  }
}

function showObjects(objectType, spanName) {
  var allSpans = document.getElementsByTagName(objectType);
  for (var a = 0; a < allSpans.length; a++){
    var spanobject = allSpans[a];
    if (spanobject.id == spanName)
    {
      spanobject.style.visibility = "visible";    
    }
  }
}

function updateVisabilityObjects(inputObject, objectType, objectName)
{
  if (inputObject.value == "")
  {
    hideObjects(objectType, objectName);
  }
  else {
    showObjects(objectType, objectName);
  }
}

function updateVisabilityObjectsForSelect(selectObject, objectType, objectName)
{
  if (selectObject.selectedIndex == -1)
  {
    hideObjects(objectType, objectName);
  }
  else {
    showObjects(objectType, objectName);
  }
}

function unfoldRow(rowId) {
	var row = document.getElementById(rowId);
	if (row != null && row.style != null) {
        // set back to the default - table-row or block
        row.style.display = "";
   	}
}

function foldRow(rowId) {
	var row = document.getElementById(rowId);
	if (row != null) {
   		row.style.display = "none";
   	}
}


function unfoldErrorRow(id) {
    if (errorSheetInSteadOfAlerts) {
        var obj = document.getElementById(id);
        if (obj != null && obj.style != null) {
            // set back to the default - table-row or block
            obj.style.display = "";
        }
    }
}
   
function foldErrorRow(id) {
	if (errorSheetInSteadOfAlerts) {
	   	var obj = document.getElementById(id);
	    if (obj != null){
	   		obj.style.display = "none";
		}   	
	}
}
function unfoldErrorBlock(id) {
	if (errorSheetInSteadOfAlerts) {
		var obj = document.getElementById(id);
		if (obj != null){
	   		obj.style.display = "block";
		}
		window.scrollTo(0,0);
	}
}
   
function foldErrorBlock(id) {
	if (errorSheetInSteadOfAlerts) {
	   	var obj = document.getElementById(id);
		if (obj != null){
	   		obj.style.display = "none";
		}
	}	   	
}

/**
Submits the form if all checks are passed and asks the stepcontroller to display the page for the requested step.
parameters:
	theForm: the form to submit as an object
	nextStep: boolean indicating whether the system must go to the next step
	errorBlockId: id of the error block in the current page
	stepControllerId: servlet id of the step controller
*/
// TODO: the check skipRegistrationOfStepController is wrong and breaks amsterdam please look at it in MVA-95
function submitStep(theForm, nextStep, readOnly, errorBlockId, stepControllerId, stepNr) {
   	if (runValidations(theForm)) {
   		var skipParmAvailable = typeof skipRegistrationOfStepController != 'undefined';
   		var doRegister = !skipParmAvailable;
   		if(skipParmAvailable){
   			doRegister = !skipRegistrationOfStepController;
   		}
   		if(doRegister){
			registerAction(theForm, stepControllerId);
		}
		if(stepNr != null){
   			theForm.stepNr.value = stepNr;
   		}
   		theForm.nextStep.value = nextStep;
   		theForm.readOnly.value = readOnly;
   		foldErrorBlock(errorBlockId);	
   		theForm.submit();
   	}else{
   		unfoldErrorBlock(errorBlockId);
   	}
}
/**
Do not submit the form, but go back to the designated screen
parameters:
	theForm: the form to submit as an object
	errorBlockId: id of the error block in the current page
	stepControllerId: servlet id of the step controller
*/
function cancelStep(theForm, errorBlockId, stepControllerId) {
   		theForm.registeredactions.value = stepControllerId;
   		theForm.nextStep.value = false;
   		theForm.cancelStep.value = true;   		
   		foldErrorBlock(errorBlockId);
   		theForm.submit();
}

function submitOnEnter(object)
{
	if (event.keyCode == 13) {
		object.form.submit();
	}
}
function ensureAttributeValue(form, elementName, attribute)
{
	var element = form.elements[elementName];
	if (element != null) {
		return (element.getAttribute(attribute));
	}
}
function ensureRadioAttributeValue(form, elementName, attribute)
{
	var element  = form[elementName];
	if (element != null) {
		return element[0].getAttribute(attribute);
	}
}
