/*
 * Version: $Revision: 1.75 $
 * Author: BeSite <info@besite.nl>
 * Copyright 2005-2008 BeSite
 */

var _checkFormMsgs = new Array();
var _checkForms = new Array();
var _checkFormsInt = new Array();
var _checkFormsIntOrNull = new Array();
var _checkFormsFloat = new Array();
var _checkFormsFloatOrNull = new Array();
var _checkFormsFloatPositive = new Array();
var _checkFormsString = new Array();
var _checkFormsFile = new Array();
var _checkFormsBslFile = new Array();
var _checkFormsBslFileNoNull = new Array();
var _checkFormsZipFile = new Array();
var _checkFormsEmail = new Array();
var _checkFormsEmailOrNull = new Array();
var _checkFormsEmailMatch = new Array();
var _checkFormsImage = new Array();
var _checkFormsImageNoNull = new Array();
var _checkFormsDateField = new Array();
var _checkFormsDateFieldOrNull = new Array();
var _checkFormsHours = new Array();
var _checkFormsHoursOrNull = new Array();
var _checkFormsMinutes = new Array();
var _checkFormsMinutesOrNull = new Array();
var _checkFormsBox = new Array();
var _checkFormsRadio = new Array();
var _checkFormsPassword = new Array();
var _checkFormsPasswordMatch = new Array();
var _checkFormsSelect = new Array();
var _checkFormsSelectMultiple = new Array();
var _checkFormsAccountNr = new Array();
var _checkFormsMobileNr = new Array();
var _checkFormsMobileNrOrNull = new Array();
var _checkFormsPostalcodeNl = new Array();
var _checkFormsLink = new Array();
var _checkFormsLinkOrNull = new Array();
var _checkFormsAlphaNumericId = new Array();
var _checkFormsAlphaNumericIdOrNull = new Array();
var _checkFormsVatNumber = new Array();
var _checkFormsVatNumberOrNull = new Array();
var _checkFormsRegexp = new Array();
var _checkFormsFunction = new Array();
var _checkFormErrorMsg = "";
var _checkFormErrorElement = "";
var _checkFormFocussed = false;
var _checkFormsChecks = new Array();
var _borderColor = '';
var _checkingFormId = null;

function AddForm( id, name )
{
	_checkFormMsgs[id] = new Array();
	_checkForms[id] = name;
	_checkFormsInt[id] = new Array();
	_checkFormsIntOrNull[id] = new Array();
	_checkFormsFloat[id] = new Array();
	_checkFormsFloatOrNull[id] = new Array();
	_checkFormsFloatPositive[id] = new Array();
	_checkFormsString[id] = new Array();
	_checkFormsFile[id] = new Array();
	_checkFormsBslFile[id] = new Array();
	_checkFormsBslFileNoNull[id] = new Array();
	_checkFormsZipFile[id] = new Array();
	_checkFormsEmail[id] = new Array();
	_checkFormsEmailOrNull[id] = new Array();
	_checkFormsEmailMatch[id] = new Array();
	_checkFormsImage[id] = new Array();
	_checkFormsImageNoNull[id] = new Array();
	_checkFormsDateField[id] = new Array();
	_checkFormsDateFieldOrNull[id] = new Array();
	_checkFormsHours[id] = new Array();
	_checkFormsHoursOrNull[id] = new Array();
	_checkFormsMinutes[id] = new Array();
	_checkFormsMinutesOrNull[id] = new Array();
	_checkFormsBox[id] = new Array();
	_checkFormsRadio[id] = new Array();
	_checkFormsPassword[id] = new Array();
	_checkFormsPasswordMatch[id] = new Array();
	_checkFormsSelect[id] = new Array();
	_checkFormsSelectMultiple[id] = new Array();
	_checkFormsAccountNr[id] = new Array();
	_checkFormsMobileNr[id] = new Array();
	_checkFormsMobileNrOrNull[id] = new Array();
	_checkFormsPostalcodeNl[id] = new Array();
	_checkFormsLink[id] = new Array();
	_checkFormsLinkOrNull[id] = new Array();
	_checkFormsAlphaNumericId[id] = new Array();
	_checkFormsAlphaNumericIdOrNull[id] = new Array();
	_checkFormsVatNumber[id] = new Array();
	_checkFormsVatNumberOrNull[id] = new Array();
	_checkFormsRegexp[id] = new Array();
	_checkFormsFunction[id] = new Array();
	_checkFormsChecks[id] = new Array();
}

function AddCheck( form_id, type, field, msg )
{
	var arr = null;
	switch( type )
	{
		case "Int":
			arr = _checkFormsInt;
			break;
		case "IntOrNull":
			arr = _checkFormsIntOrNull;
			break;
		case "Float":
			arr = _checkFormsFloat;
			break;
		case "FloatOrNull":
			arr = _checkFormsFloatOrNull;
			break;
		case "FloatPositive":
			arr = _checkFormsFloatPositive;
			break;
		case "String":
			arr = _checkFormsString;
			break;
		case "File":
			arr = _checkFormsFile;
			break;
		case "BslFile":
			arr = _checkFormsBslFile;
			break;
		case "BslFileNoNull":
			arr = _checkFormsBslFileNoNull;
			break;
		case "ZipFile":
			arr = _checkFormsZipFile;
			break;
		case "Email":
			arr = _checkFormsEmail;
			break;
		case "EmailOrNull":
			arr = _checkFormsEmailOrNull;
			break;
		case "EmailMatch":
			arr = _checkFormsEmailMatch;
			break;
		case "Image":
			arr = _checkFormsImage;
			break;
		case "ImageNoNull":
			arr = _checkFormsImageNoNull;
			break;
		case "DateField":
			arr = _checkFormsDateField;
			break;
		case "DateFieldOrNull":
			arr = _checkFormsDateFieldOrNull;
			break;
		case "Hours":
			arr = _checkFormsHours;
			break;
		case "HoursOrNull":
			arr = _checkFormsHoursOrNull;
			break;
		case "Minutes":
			arr = _checkFormsMinutes;
			break;
		case "MinutesOrNull":
			arr = _checkFormsMinutesOrNull;
			break;
		case "Box":
			arr = _checkFormsBox;
			break;
		case "Radio":
			arr = _checkFormsRadio;
			break;
		case "Password":
			arr = _checkFormsPassword;
			break;
		case "PasswordMatch":
			arr = _checkFormsPasswordMatch;
			break;
		case "Select":
			arr = _checkFormsSelect;
			break;
		case "SelectMultiple":
			arr = _checkFormsSelectMultiple;
			break;
		case "AccountNr":
			arr = _checkFormsAccountNr;
			break;
		case "MobileNr":
			arr = _checkFormsMobileNr;
			break;
		case "MobileNrOrNull":
			arr = _checkFormsMobileNrOrNull;
			break;
		case "PostalcodeNl":
			arr = _checkFormsPostalcodeNl;
			break;
		case "Link":
			arr = _checkFormsLink;
			break;
		case "LinkOrNull":
			arr = _checkFormsLinkOrNull;
			break;
		case "AlphaNumericId":
			arr = _checkFormsAlphaNumericId;
			break;
		case "AlphaNumericIdOrNull":
			arr = _checkFormsAlphaNumericIdOrNull;
			break;
		case "VatNumber":
			arr = _checkFormsVatNumber;
			break;
		case "VatNumberOrNull":
			arr = _checkFormsVatNumberOrNull;
			break;
		case "Regexp":
			arr = _checkFormsRegexp;
			break;
		case "Function":
			arr = _checkFormsFunction;
			break;
		default:
			return false;
	}
	_checkFormsChecks[form_id][_checkFormsChecks[form_id].length] = new Array( field, type );
	arr[form_id][arr[form_id].length]=field;
	if ( msg != null )
	{
		_checkFormMsgs[form_id][_checkFormMsgs[form_id].length] = new Array( field, msg );
	}
	return true;
}

function _elementFocus( element )
{
	if ( _checkFormFocussed )
	{
		return;
	}
	// IE only when scrolling is on div!
	if ( document.body.id != 'IE' || document.body.style.overflow == "hidden" )
	{
		var offset = 0;
		var e = element;
		// calc total offset from top
		while ( e != null )
		{
			offset += e.offsetTop;
			e = e.offsetParent;
		}
		var scrollTop = document.body.scrollTop;
		// IE fixed layout scroll on div instead of body
		if ( document.body.id == 'IE' && document.body.style.overflow == "hidden" )
		{
			scrollTop = document.getElementById('Contents').scrollTop;
		}
		// under tractare header?
		if ( ( offset - scrollTop ) < 125 )
		{
			var newScroll = offset - 125;
			// IE fixed layout scroll on div instead of body
			if ( document.body.id == 'IE' && document.body.style.overflow == "hidden" )
			{
				document.getElementById('Contents').scrollTop = newScroll;
			}
			else
			{
				document.body.scrollTop = newScroll;
			}
		}
	}
	try
	{
		element.focus();
	}
	catch( er )
	{
	}
	_checkFormFocussed = true;
}

function _elementDisabled( element, disabled )
{
	// if element is disabled, disable the formcheck for PHP validation too
	// check if we have jQuery it is waaaaaaaaaaaay faster in IE
	if ( window.jQuery )
	{
		jQuery("INPUT[name^='_formcheck'][value='" + element.name + "']").each( function() { this.disabled = disabled; } );
	}
	else
	{
		for ( var i = 0; i < element.form.elements.length; i++ )
		{
			if ( element.form.elements[i].tagName == "INPUT" && element.form.elements[i].name.indexOf("_formcheck") == 0 && element.form.elements[i].value == element.name )
			{
				element.form.elements[i].disabled = disabled;
			}
		}
	}
	return true;
}

function _markValid( eElement )
{
	if ( eElement.type == "checkbox" || eElement.type == "radio" )
	{
		// cannot style input, maybe label?
		if ( eElement.id )
		{
			var labels = document.getElementsByTagName("label");
			for( var i = 0; i < labels.length; i++ )
			{
				if ( labels[i].htmlFor == eElement.id )
				{
					labels[i].style.borderBottomColor = '';
					labels[i].style.borderBottomWidth = '';
					labels[i].style.borderBottomStyle = '';
					break;
				}
			}
		}
	}
	else
	{
		eElement.style.borderColor = '';
		eElement.style.borderWidth = '';
		eElement.style.borderStyle = '';
	}
}

function _markInvalid( eElement )
{
	if ( eElement.type == "checkbox" || eElement.type == "radio" )
	{
		// cannot style input, maybe label?
		if ( eElement.id )
		{
			var labels = document.getElementsByTagName("label");
			for( var i = 0; i < labels.length; i++ )
			{
				if ( labels[i].htmlFor == eElement.id )
				{
					labels[i].style.borderBottomColor = 'red';
					if ( eElement.style.borderBottomWidth == '0' || eElement.style.borderBottomWidth == '0px' )
					{
						labels[i].style.borderBottomWidth = '1px';
					}
					labels[i].style.borderBottomStyle = 'solid';
					break;
				}
			}
		}
	}
	else
	{
		eElement.style.borderColor = 'red';
		if ( eElement.style.borderWidth == '0' || eElement.style.borderWidth == '0px' )
		{
			eElement.style.borderWidth = '1px';
		}
		eElement.style.borderStyle = 'solid';
	}
}

function CheckIntString( sVal )
{
    var regExp = /^-?([0-9])+$/;
	if( !regExp.test( sVal ) )
	{
		return false;
	}
	if ( isNaN( parseInt( sVal ) ) )
	{
		return false;
	}
	return true;
}

function _checkInt( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( !CheckIntString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgInt, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkIntOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( element.value != "" && !CheckIntString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgIntOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function ParseFloatString( sVal )
{
	if ( sVal.indexOf( "," ) != -1 && sVal.indexOf( "." ) == -1 )
	{
		sVal = sVal.replace( ',', "." );
	}
	return parseFloat( sVal );
}

function CheckFloatString( sVal )
{
    var regExp = /^-?([0-9\.\,])+$/;
	if( !regExp.test( sVal ) )
	{
		return false;
	}
	var floatval = ParseFloatString( sVal );
	if ( isNaN( floatval ) )
	{
		return false;
	}
	return true;
}

function _checkFloat( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( !CheckFloatString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgFloat, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkFloatOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( element.value != "" && !CheckFloatString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgFloatOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkFloatPositive( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( !CheckFloatString( element.value ) || ParseFloatString( element.value ) <= 0.0 )
	{
		_elementFocus( element );
		_showAlert( msgFloatPositive, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkString( element )
{
	//if ( !element ) return false;
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( element.value.length < 1 )
	{
		_elementFocus( element );
		_showAlert( msgString, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkFile( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	if( element.value.length < 1 )
	{
		_elementFocus( element );
		_showAlert( msgFile, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkBslFile( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	var filename = element.value.toLowerCase();
	if( filename != '' )
	{
		// always true??
	}
	_markValid( element );
	return true;
}

function _checkBslFileNoNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	var filename = element.value.toLowerCase();
	if( filename != '' )
	{
		// alway true?
	}
	else // we need file!
	{
		_elementFocus( element );
		_showAlert( msgBslFile, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkZipFile( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	filename = element.value.toLowerCase();
	res = true;
	if( filename != '' )
	{
		if ( filename.indexOf(".zip") == -1  )
		{
			res = false;
		}
	}
	else
	{
		res = false;
	}
	if ( !res )
	{
		_elementFocus( element );
		_showAlert( msgZipFile, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return res;
}

function _checkPassword( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( element.value.length < 4 )
	{
		_elementFocus( element );
		_showAlert( msgPassword, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkEmail( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( !validEmailString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgEmail, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkEmailOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( element.value.length > 0 && !validEmailString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgEmailOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkImage( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	var filename = element.value.toLowerCase();
	if( filename != '' )
	{
		if( filename.indexOf(".jpg") == -1 && filename.indexOf(".jpeg") == -1 &&
			filename.indexOf(".gif") == -1 && filename.indexOf(".png") == -1  )
		{
			_elementFocus( element );
			_showAlert( msgImage, element.name );
			_markInvalid( element );
			return false;
		}
	}
	_markValid( element );
	return true;
}

function _checkImageNoNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	var filename = element.value.toLowerCase();
	if( filename != '' )
	{
		if( filename.indexOf(".jpg") == -1 && filename.indexOf(".jpeg") == -1 &&
			filename.indexOf(".gif") == -1 && filename.indexOf(".png") == -1  )
		{
			_elementFocus( element );
			_showAlert( msgImage, element.name );
			_markInvalid( element );
			return false;
		}
	}
	else // we need image!
	{
		_elementFocus( element );
		_showAlert( msgImage, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkDateField( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( !CheckIntString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgDateField, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkDateFieldOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( element.value != "" && !CheckIntString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgDateFieldOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function CheckHoursString( sVal )
{
	if ( !CheckIntString( sVal ) )
	{
		return false;
	}
	var val = parseInt( sVal );
	if( isNaN( val ) || val < 0 || val > 23 )
	{
		return false;
	}
	return true;
}

function _checkHours( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( !CheckHoursString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgHours, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkHoursOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( element.value != "" && !CheckHoursString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgHoursOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function CheckMinutesString( sVal )
{
	if ( !CheckIntString( sVal ) )
	{
		return false;
	}
	var val = parseInt( sVal );
	if( isNaN( val ) || val < 0 || val > 59 )
	{
		return false;
	}
	return true;
}

function _checkMinutes( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( !CheckMinutesString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgMinutes, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkMinutesOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if( element.value != "" && !CheckMinutesString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgMinutesOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkBox( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	if( !element.checked )
	{
		_elementFocus( element );
		_showAlert( msgBox, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkRadio( element )
{
	var focusElement = element;
	if( isNaN( element.length ) )
	{
		if( element.checked )
		{
			return true;
		}
	}
	else
	{
		focusElement = element[0];
		for( var ii = 0; ii < element.length; ii++ )
		{
			if ( element[ii].disabled ) return _elementDisabled( element[ii], true );
			_elementDisabled( element[ii], false );
			if( element[ii].checked )
			{
				return true;
			}
		}
	}
	_elementFocus( focusElement );
	_showAlert( msgRadio, focusElement.name );
	return false;
}

function _checkSelect( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	if( element.value.length < 1 )
	{
		_elementFocus( element );
		_showAlert( msgSelect, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkSelectMultiple( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	for ( var ii = 0; ii < element.length; ii++ )
	{
		if ( element[ii].selected == true )
		{
			_markValid( element );
			return true;
		}
	}
	_elementFocus( element );
	_showAlert( msgSelectMultiple, element.name );
	_markInvalid( element );
	return false;
}

function _checkAccountNr( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	var valid = null;
	if ( !CheckIntString( element.value ) )
	{
		valid = false;
	}
	if ( valid == null && element.value.length >= 3 && element.value.length < 9 )
	{
		valid = true;
	}
	var total = 0;
	if ( valid == null )
	{
		for( var ii = element.value.length; ii > 0; ii-- )
		{
			var number = parseInt( element.value.charAt( ii - 1 ) );
			if( isNaN( number ) )
			{
				valid = false;
			}
			total += number * ( 10 - ii );
		}
	}
	if ( valid == null )
	{
		var totalten = new String( total / 11 * 10 );
		valid = true;
		if( totalten.substr( totalten.length - 1, 1 ) != '0' )
		{
			valid = false;
		}
	}
	if ( valid == true )
	{
		_markValid( element );
		return true;
	}
	else
	{
		_elementFocus( element );
		_showAlert( msgAccountNr, element.name );
		_markInvalid( element );
		return false;
	}
}

function _checkMobileNr( element, bNullAllowed )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	onMobileNrChange( element );
	if ( bNullAllowed && element.value == '' )
	{
		// null allowed!
	}
	else
	{
		if( !validMobileNrString( element.value ) )
		{
			_elementFocus( element );
			_showAlert( bNullAllowed ? msgMobileNrOrNull : msgMobileNr, element.name );
			_markInvalid( element );
			return false;
		}
	}
	_markValid( element );
	return true;
}

function validMobileNrString( sNumber )
{
	// Strict old way for NL | DE | BE
    //var regExp = /^\+(316([0-9]{8})|49(15|16|17)([0-9]{8,9})|32(472|473|474|475|476|477|478|479|484|485|486|494|495|496|497|498|499)([0-9]{5}))$/;
    // loose way for every phone number in international notation +3183892 etc
    var regExp = /^\+([0-9]{2,})$/;
	if( regExp.test( new String( sNumber ) ) )
	{
		return true;
	}
	return false;
}

function onMobileNrChange( element )
{
	element.value = trim( element.value );
	element.value = element.value.replace( /[^0-9\+]/g, '' );
	// NL 06123456789 => +31612345678
	if( /^06([0-9]{8})$/.test( element.value ) )
	{
		element.value = '+31' + element.value.substr(1,9);
		return;
	}
	// DE 01512345678 => +491512345678
	if( /^0(15|16|17)([0-9]{8,9})$/.test( element.value ) )
	{
		element.value = '+49' + element.value.substr(1,11);
		return;
	}
	// BE 047512345 => +3247512345
	if( /^0(472|473|474|475|476|477|478|479|484|485|486|494|495|496|497|498|499)([0-9]{5})$/.test( element.value ) )
	{
		element.value = '+32' + element.value.substr(1,8);
		return;
	}
	// 0031... => +31
	if( /^00[0-9]{3,}$/.test( element.value ) )
	{
		element.value = '+' + element.value.substr(2);
		return;
	}
}

function CheckPostalcodeNlString( sPostalCode )
{
	sPostalCode = sPostalCode.replace( /[^0-9a-zA-Z]/g, '' );
	var regExp = /^[1-9]{1}[0-9]{3}[a-zA-Z]{2}$/;
	if( !regExp.test( sPostalCode ) )
	{
		return false;
	}
	return true;
}

function _checkPostalcodeNl( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	
	if ( !CheckPostalcodeNlString( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgPostalcodeNl, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkLink( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if ( element.value.match(/^www\./) )
	{
		element.value = "http://" + element.value;
	}
	
	if( !element.value.match(/^(http\:\/\/|https\:\/\/)(.{4,})$/) )
	{
		_elementFocus( element );
		_showAlert( msgLink, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkLinkOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	if ( element.value.match(/^www\./) )
	{
		element.value = "http://" + element.value;
	}
	
	if( element.value.length > 0 && !element.value.match(/^(http\:\/\/|https\:\/\/)(.{4,})$/) )
	{
		_elementFocus( element );
		_showAlert( msgLinkOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkAlphaNumericId( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	
	var regExp = /^[A-Za-z0-9][A-Za-z0-9\-_]*$/;
	if( !regExp.test( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgAlphaNumericId, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkAlphaNumericIdOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	
	var regExp = /^[A-Za-z0-9][A-Za-z0-9\-_]*$/;
	if( element.value.length > 0 && !regExp.test( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgAlphaNumericIdOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function ValidVatNumber( sNumber )
{
	sNumber = trim( sNumber );
	sNumber = sNumber.replace( /[\ \.]/g, "" );
	var cty = sNumber.substring( 0, 2 );
	var num = sNumber.substr( 2 );
	var regExp = null;
    switch( cty )
    {
    	case 'AT':
            regExp = /^U[0-9]{8}$/;
            break;
        case 'BE':
            regExp = /^0?[0-9]{9}$/;
            break;
        case 'BG':
            regExp = /^[0-9]{9,10}$/;
            break;
        case 'CY':
            regExp = /^[0-9]{8}[A-Z]{1}$/;
            break;
        case 'CZ':
            regExp = /^[0-9]{8,10}$/;
            break;
        case 'DE':
            regExp = /^[0-9]{9}$/;
            break;
        case 'DK':
            regExp = /^[0-9]{8}$/;
            break;
        case 'EE':
            regExp = /^[0-9]{9}$/;
            break;
        case 'EL':
            regExp = /^[0-9]{9}$/;
            break;
        case 'ES':
            regExp = /^[A-Z0-9]{1}[0-9]{7}[A-Z0-9]{1}$/;
            break;
        case 'FI':
            regExp = /^[0-9]{8}$/;
            break;
        case 'FR':
            regExp = /^[A-Z0-9]{2}[0-9]{9}$/;
            break;
        case 'GB':
            regExp = /^([0-9]{9}|[0-9]{12}|GD[0-9]{3}|HA[0-9]{3})$/;
            break;
        case 'HU':
            regExp = /^[0-9]{8}$/;
            break;
        case 'IE':
            regExp = /^[0-9]{1}[A-Z0-9\+\*]{1}[0-9]{5}[A-Z0-9]{1}$/;
            break;
        case 'IT':
            regExp = /^[0-9]{11}$/;
            break;
        case 'LT':
            regExp = /^[0-9]{9}([0-9]{3})?$/;
            break;
        case 'LU':
            regExp = /^[0-9]{8}$/;
            break;
        case 'LV':
            regExp = /^[0-9]{11}$/;
            break;
        case 'MT':
            regExp = /^[0-9]{8}$/;
            break;
        case 'NL':
            regExp = /^[0-9]{9}B[0-9]{2}$/;
            break;
        case 'PL':
            regExp = /^[0-9]{10}$/;
            break;
        case 'PT':
            regExp = /^[0-9]{9}$/;
            break;
        case 'RO':
            regExp = /^[0-9]{2,10}$/;
            break;
        case 'SE':
            regExp = /^[0-9]{12}$/;
            break;
        case 'SI':
            regExp = /^[0-9]{8}$/;
            break;
        case 'SK':
            regExp = /^[0-9]{10}$/;
            break;
        default:
        	return false;
    }
	if( !regExp.test( num ) )
	{
		return false;
	}
	return true;
}

function _checkVatNumber( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	if( !ValidVatNumber( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgVatNumber, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkVatNumberOrNull( element )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	
	if( element.value.length > 0 && !ValidVatNumber( element.value ) )
	{
		_elementFocus( element );
		_showAlert( msgVatNumberOrNull, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

function _checkRegexp( element, regexp, msg )
{
	if ( element.disabled ) return _elementDisabled( element, true );
	_elementDisabled( element, false );
	element.value = trim( element.value );
	
	var reg = new RegExp( regexp.substr( 1, regexp.length - 2 ) ); // cut of begin and end "/"
	
	if( reg.exec( element.value ) == null )
	{
		_elementFocus( element );
		_showAlert( msg, element.name );
		_markInvalid( element );
		return false;
	}
	_markValid( element );
	return true;
}

// show alert if no other alert is shown
function _showAlert( sMsg, sElementName )
{
	if ( _checkFormErrorMsg == "" )
	{
		_checkFormErrorMsg = sMsg;
		_checkFormErrorElement = sElementName;
		if ( _checkingFormId > 0 )
		{
			for( i = 0; i < _checkFormMsgs[_checkingFormId].length; i++ )
			{
				if ( _checkFormMsgs[_checkingFormId][i][0] == sElementName )
				{
					_checkFormErrorMsg = _checkFormMsgs[_checkingFormId][i][1];
				}
			}
		}
	}
}

function checkForm( form )
{
	_checkFormFocussed = false;
	_checkFormErrorMsg = "";
	_checkFormErrorElement = "";
	var id = -1;
	var i;
	for( i = 0; i < _checkForms.length; i++ )
	{
		if ( _checkForms[i] == form._formname.value )
		{
			id = i;
			_checkingFormId = id;
		}
	}
	if ( id == -1 )
	{
		return true;
	}
	var checkFormRes = true;
	// CHECK INT
	for( i = 0; i < _checkFormsInt[id].length; i++ )
	{
		if ( !_checkInt( form.elements.namedItem(_checkFormsInt[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK INT OR NULL
	for( i = 0; i < _checkFormsIntOrNull[id].length; i++ )
	{
		if ( !_checkIntOrNull( form.elements.namedItem(_checkFormsIntOrNull[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK FLOAT
	for( i = 0; i < _checkFormsFloat[id].length; i++ )
	{
		if ( !_checkFloat( form.elements.namedItem(_checkFormsFloat[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK FLOAT OR NULL
	for( i = 0; i < _checkFormsFloatOrNull[id].length; i++ )
	{
		if ( !_checkFloatOrNull( form.elements.namedItem(_checkFormsFloatOrNull[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK FLOAT POSITIVE
	for( i = 0; i < _checkFormsFloatPositive[id].length; i++ )
	{
		if ( !_checkFloatPositive( form.elements.namedItem(_checkFormsFloatPositive[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK STRING
	for( i = 0; i < _checkFormsString[id].length; i++ )
	{
		if ( !_checkString( form.elements.namedItem(_checkFormsString[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK FILE
	for( i = 0; i < _checkFormsFile[id].length; i++ )
	{
		if ( !_checkFile( form.elements.namedItem(_checkFormsFile[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK BSLFILE
	for( i = 0; i < _checkFormsBslFile[id].length; i++ )
	{
		if ( !_checkBslFile( form.elements.namedItem(_checkFormsBslFile[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK BSLFILE NO NULL
	for( i = 0; i < _checkFormsBslFileNoNull[id].length; i++ )
	{
		if ( !_checkBslFileNoNull( form.elements.namedItem(_checkFormsBslFileNoNull[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK ZIPFILE
	for( i = 0; i < _checkFormsZipFile[id].length; i++ )
	{
		if ( !_checkZipFile( form.elements.namedItem(_checkFormsZipFile[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK EMAIL
	for( i = 0; i < _checkFormsEmail[id].length; i++ )
	{
		if ( !_checkEmail( form.elements.namedItem(_checkFormsEmail[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK EMAIL OR NULL
	for( i = 0; i < _checkFormsEmailOrNull[id].length; i++ )
	{
		if ( !_checkEmailOrNull( form.elements.namedItem(_checkFormsEmailOrNull[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK EMAIL MATCH
	for( i = 0; i < _checkFormsEmailMatch[id].length; i++ )
	{
		if ( !_checkEmail( form.elements.namedItem(_checkFormsEmailMatch[id][i]) ) ) { checkFormRes = false; }
	}
	// now check if they match
	if ( _checkFormsEmailMatch[id].length > 1 )
	{
		for( j = 1; j < _checkFormsEmailMatch[id].length; j++ )
		{
			if ( ( form.elements.namedItem(_checkFormsEmailMatch[id][0]).value ) != ( form.elements.namedItem(_checkFormsEmailMatch[id][j]).value ) )
			{
				form.elements.namedItem(_checkFormsEmailMatch[id][0]).focus();
				_showAlert( msgEmailMatch );
				checkFormRes = false;
			}
		}
	}
	// CHECK IMAGE
	for( i = 0; i < _checkFormsImage[id].length; i++ )
	{
		if ( !_checkImage( form.elements.namedItem(_checkFormsImage[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK IMAGE NO NULL
	for( i = 0; i < _checkFormsImageNoNull[id].length; i++ )
	{
		if ( !_checkImageNoNull( form.elements.namedItem(_checkFormsImageNoNull[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK DATE FIELD
	for( i = 0; i < _checkFormsDateField[id].length; i++ )
	{
		if ( !_checkDateField( form.elements.namedItem(_checkFormsDateField[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK DATE FIELD OR NULL
	for( i = 0; i < _checkFormsDateFieldOrNull[id].length; i++ )
	{
		if ( !_checkDateFieldOrNull( form.elements.namedItem(_checkFormsDateFieldOrNull[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK HOURS
	for( i = 0; i < _checkFormsHours[id].length; i++ )
	{
		if ( !_checkHours( form.elements.namedItem(_checkFormsHours[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK HOURS OR NULL
	for( i = 0; i < _checkFormsHoursOrNull[id].length; i++ )
	{
		if ( !_checkHoursOrNull( form.elements.namedItem(_checkFormsHoursOrNull[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK MINUTES
	for( i = 0; i < _checkFormsMinutes[id].length; i++ )
	{
		if ( !_checkMinutes( form.elements.namedItem(_checkFormsMinutes[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK MINUTES OR NULL
	for( i = 0; i < _checkFormsMinutesOrNull[id].length; i++ )
	{
		if ( !_checkMinutesOrNull( form.elements.namedItem(_checkFormsMinutesOrNull[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECKBOX CHECKED?
	for( i = 0; i < _checkFormsBox[id].length; i++ )
	{
		if ( !_checkBox( form.elements.namedItem(_checkFormsBox[id][i]) ) ) { checkFormRes = false; }
	}
	// RADIO BUTTON CHECKED?
	for( i = 0; i < _checkFormsRadio[id].length; i++ )
	{
		var radios = new Array();
		for( var j = 0; j < form.elements.length; j++ )
		{
			if ( form.elements[j].name == _checkFormsRadio[id][i] )
			{
				radios[radios.length] = form.elements[j];
			}
		}
		if ( !_checkRadio( radios ) ) { checkFormRes = false; }
	}
	// CHECK PASSWORD
	for( i = 0; i < _checkFormsPassword[id].length; i++ )
	{
		if ( !_checkPassword( form.elements.namedItem(_checkFormsPassword[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK PASSWORD MATCH
	for( i = 0; i < _checkFormsPasswordMatch[id].length; i++ )
	{
		if ( !_checkPassword( form.elements.namedItem(_checkFormsPasswordMatch[id][i]) ) ) { checkFormRes = false; }
	}
	// now check if they match
	if ( _checkFormsPasswordMatch[id].length > 1 )
	{
		for( j = 1; j < _checkFormsPasswordMatch[id].length; j++ )
		{
			if ( ( form.elements.namedItem(_checkFormsPasswordMatch[id][0]).value ) != ( form.elements.namedItem(_checkFormsPasswordMatch[id][j]).value ) )
			{
				form.elements.namedItem(_checkFormsPasswordMatch[id][0]).focus();
				_showAlert( msgPasswordMatch );
				checkFormRes = false;
			}
		}
	}
	// CHECK SELECT
	for( i = 0; i < _checkFormsSelect[id].length; i++ )
	{
		if ( !_checkSelect( form.elements.namedItem(_checkFormsSelect[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK SELECT MULTIPLE
	for( i = 0; i < _checkFormsSelectMultiple[id].length; i++ )
	{
		if ( !_checkSelectMultiple( form.elements.namedItem(_checkFormsSelectMultiple[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK ACCOUNT NR
	for( i = 0; i < _checkFormsAccountNr[id].length; i++ )
	{
		if ( !_checkAccountNr( form.elements.namedItem(_checkFormsAccountNr[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK MOBILE NR
	for( i = 0; i < _checkFormsMobileNr[id].length; i++ )
	{
		if ( !_checkMobileNr( form.elements.namedItem(_checkFormsMobileNr[id][i]) ) ) { checkFormRes = false; }
	}
	// CHECK MOBILE NR OR NULL
	for( i = 0; i < _checkFormsMobileNrOrNull[id].length; i++ )
	{
		if ( !_checkMobileNr( form.elements.namedItem(_checkFormsMobileNrOrNull[id][i]), true ) ) { checkFormRes = false; }
	}
	// CHECK POSTALCODE NL
	for( i = 0; i < _checkFormsPostalcodeNl[id].length; i++ )
	{
		if ( !_checkPostalcodeNl( form.elements.namedItem(_checkFormsPostalcodeNl[id][i]), true ) ) { checkFormRes = false; }
	}
	// CHECK LINK
	for( i = 0; i < _checkFormsLink[id].length; i++ )
	{
		if ( !_checkLink( form.elements.namedItem(_checkFormsLink[id][i]), true ) ) { checkFormRes = false; }
	}
	// CHECK LINK OR NULL
	for( i = 0; i < _checkFormsLinkOrNull[id].length; i++ )
	{
		if ( !_checkLinkOrNull( form.elements.namedItem(_checkFormsLinkOrNull[id][i]), true ) ) { checkFormRes = false; }
	}
	// CHECK ALPHANUMERIC ID
	for( i = 0; i < _checkFormsAlphaNumericId[id].length; i++ )
	{
		if ( !_checkAlphaNumericId( form.elements.namedItem(_checkFormsAlphaNumericId[id][i]), true ) ) { checkFormRes = false; }
	}
	// CHECK ALPHANUMERIC ID OR NULL
	for( i = 0; i < _checkFormsAlphaNumericIdOrNull[id].length; i++ )
	{
		if ( !_checkAlphaNumericIdOrNull( form.elements.namedItem(_checkFormsAlphaNumericIdOrNull[id][i]), true ) ) { checkFormRes = false; }
	}
	// CHECK VAT NUMBER
	for( i = 0; i < _checkFormsVatNumber[id].length; i++ )
	{
		if ( !_checkVatNumber( form.elements.namedItem(_checkFormsVatNumber[id][i]), true ) ) { checkFormRes = false; }
	}
	// CHECK VAT NUMBER OR NULL
	for( i = 0; i < _checkFormsVatNumberOrNull[id].length; i++ )
	{
		if ( !_checkVatNumberOrNull( form.elements.namedItem(_checkFormsVatNumberOrNull[id][i]), true ) ) { checkFormRes = false; }
	}
	// CHECK regexp
	for( i = 0; i < _checkFormsRegexp[id].length; i++ )
	{
		var arr = _checkFormsRegexp[id][i].split( "###" );
		if ( !_checkRegexp( form.elements.namedItem(arr[0]), arr[1], arr[2] ) ) { checkFormRes = false; }
	}
	// CHECK FUNCTIONS
	for( i = 0; i < _checkFormsFunction[id].length; i++ )
	{
		func = _checkFormsFunction[id][i];
		if ( !func( form ) ) checkFormRes = false;
	}
	if ( !checkFormRes )
	{
		alert( _checkFormErrorMsg + ( Debug() ? " [" + _checkFormErrorElement + "]" : "" ) );
	}
	return checkFormRes;
}

function validEmail( mail )
{
	if( validEmailString( mail.value ) )
	{
		return true;
	}
	mail.focus();
	return false;
}

function validEmailString( mailString )
{
    var regExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if( regExp.test( mailString ) )
	{
		return true;
	}
	return false;
}

function setDisableAllContainingFields( eElement, bDisabled )
{
	if ( eElement && eElement.hasChildNodes() )
	{
		for( var i = 0; i < eElement.childNodes.length; i++ )
		{
			switch( eElement.childNodes[i].nodeName )
			{
				case "#text":
					// ignore
					break;
				case "INPUT":
				case "SELECT":
				case "TEXTAREA":
					eElement.childNodes[i].disabled = bDisabled;
					break;
				default:
					if ( eElement.childNodes[i].hasChildNodes() )
					{
						setDisableAllContainingFields( eElement.childNodes[i], bDisabled );
					}
			}
		}
	}
}

function setCheckedAllContainingCheckBoxes( eElement, bChecked )
{
	if ( eElement && eElement.hasChildNodes() )
	{
		for( var i = 0; i < eElement.childNodes.length; i++ )
		{
			switch( eElement.childNodes[i].nodeName )
			{
				case "INPUT":
					if ( eElement.childNodes[i].type == 'checkbox' )
					{
						eElement.childNodes[i].checked = bChecked;
						break;
					}
				case "#text":
				case "SELECT":
				case "TEXTAREA":
					// ignore
					break;
				default:
					if ( eElement.childNodes[i].hasChildNodes() )
					{
						setCheckedAllContainingCheckBoxes( eElement.childNodes[i], bChecked );
					}
			}
		}
	}
}

function checkField( iFormId, eElement )
{
	for ( var j = 0; j < _checkFormsChecks[iFormId].length; j++ )
	{
		var name = _checkFormsChecks[iFormId][j][0];
		var arr = null;
		if ( _checkFormsChecks[iFormId][j][1] == 'Regexp' )
		{
			// name is joined array thingy
			arr = name.split( "###" );
			name = arr[0];
		}
		if ( name == eElement.name )
		{
			return _check( eElement, _checkFormsChecks[iFormId][j][1], arr );
		}
	}
	return true;
}

function checkContainingFields( iFormId, eElement, bObsolete )
{
	_checkFormFocussed = false;
	_checkFormErrorMsg = "";
	_checkFormErrorElement = "";
	var checkFormRes = true;
	var elements;
	var i;
	elements = eElement.getElementsByTagName( "INPUT" );
	for ( i = 0; i < elements.length; i++ )
	{
		checkFormRes = checkField( iFormId, elements.item(i) ) && checkFormRes;
	}
	elements = eElement.getElementsByTagName( "SELECT" );
	for ( i = 0; i < elements.length; i++ )
	{
		checkFormRes = checkField( iFormId, elements.item(i) ) && checkFormRes;
	}
	elements = eElement.getElementsByTagName( "TEXTAREA" );
	for ( i = 0; i < elements.length; i++ )
	{
		checkFormRes = checkField( iFormId, elements.item(i) ) && checkFormRes;
	}
	if ( !checkFormRes )
	{
		alert( _checkFormErrorMsg + ( Debug() ? " [" + _checkFormErrorElement + "]" : "" ) );
	}
	return checkFormRes;
}

function _check( eElement, sCheckType, aRegexpArray )
{
	switch( sCheckType )
	{
		case "Int":
			if ( !_checkInt( eElement ) ) { return false; }
			break;
		case "IntOrNull":
			if ( !_checkIntOrNull( eElement ) ) { return false; }
			break;
		case "Float":
			if ( !_checkFloat( eElement ) ) { return false; }
			break;
		case "FloatOrNull":
			if ( !_checkFloatOrNull( eElement ) ) { return false; }
			break;
		case "FloatPositive":
			if ( !_checkFloatPositive( eElement ) ) { return false; }
			break;
		case "String":
			if ( !_checkString( eElement ) ) { return false; }
			break;
		case "File":
			if ( !_checkFile( eElement ) ) { return false; }
			break;
		case "BslFile":
			if ( !_checkBslFile( eElement ) ) { return false; }
			break;
		case "BslFileNoNull":
			if ( !_checkBslFileNoNull( eElement ) ) { return false; }
			break;
		case "ZipFile":
			if ( !_checkZipFile( eElement ) ) { return false; }
			break;
		case "Email":
			if ( !_checkEmail( eElement ) ) { return false; }
			break;
		case "EmailOrNull":
			if ( !_checkEmailOrNull( eElement ) ) { return false; }
			break;
		case "EmailMatch":
			if ( Debug() )
			{
				alert( "Checktype 'EmailMatch' can NOT check if emails match with _check()!" );
			}
			if ( !_checkEmail( eElement ) ) { return false; }
			break;
		case "Image":
			if ( !_checkImage( eElement ) ) { return false; }
			break;
		case "ImageNoNull":
			if ( !_checkImageNoNull( eElement ) ) { return false; }
			break;
		case "DateField":
			if ( !_checkDateField( eElement ) ) { return false; }
			break;
		case "DateFieldOrNull":
			if ( !_checkDateFieldOrNull( eElement ) ) { return false; }
			break;
		case "Hours":
			if ( !_checkHours( eElement ) ) { return false; }
			break;
		case "HoursOrNull":
			if ( !_checkHoursOrNull( eElement ) ) { return false; }
			break;
		case "Minutes":
			if ( !_checkMinutes( eElement ) ) { return false; }
			break;
		case "MinutesOrNull":
			if ( !_checkMinutesOrNull( eElement ) ) { return false; }
			break;
		case "Box":
			if ( !_checkBox( eElement ) ) { return false; }
			break;
		case "Radio":
			if ( !_checkRadio( eElement ) ) { return false; }
			break;
		case "Password":
			if ( !_checkPassword( eElement ) ) { return false; }
			break;
		case "PasswordMatch":
			if ( Debug() )
			{
				alert( "Checktype 'PasswordMatch' can NOT check if passwords match with _check()!" );
			}
			if ( !_checkPassword( eElement ) ) { return false; }
			break;
		case "Select":
			if ( !_checkSelect( eElement ) ) { return false; }
			break;
		case "SelectMultiple":
			if ( !_checkSelectMultiple( eElement ) ) { return false; }
			break;
		case "AccountNr":
			if ( !_checkAccountNr( eElement ) ) { return false; }
			break;
		case "MobileNr":
			if ( !_checkMobileNr( eElement ) ) { return false; }
			break;
		case "MobileNrOrNull":
			if ( !_checkMobileNr( eElement, true ) ) { return false; }
			break;
		case "PostalcodeNl":
			if ( !_checkPostalcodeNl( eElement ) ) { return false; }
			break;
		case "Link":
			if ( !_checkLink( eElement ) ) { return false; }
			break;
		case "LinkOrNull":
			if ( !_checkLinkOrNull( eElement ) ) { return false; }
			break;
		case "AlphaNumericId":
			if ( !_checkAlphaNumericId( eElement ) ) { return false; }
			break;
		case "AlphaNumericIdOrNull":
			if ( !_checkAlphaNumericIdOrNull( eElement ) ) { return false; }
			break;
		case "Regexp":
			if ( !_checkRegexp( eElement, aRegexpArray[1], aRegexpArray[2] ) ) { return false; }
			break;
		case "Function":
			if ( Debug() )
			{
				alert( "Checktype 'Function' is NOT supported with _check()!" );
			}
			break;
		default:
			if ( Debug() )
			{
				alert( "Unknown checktype (" + sCheckType + ")!" );
			}
	}
	return true;
}

function OnSelectUpdate( eSelect )
{
	if ( eSelect.value != "" && eSelect.options[0].value == "" )
	{
		eSelect.options[0] = null;
	}
}

function getRadioCheckedValue( radioObj ) 
{
	if( !radioObj )
	{
		return "";
	}
	var radioLength = radioObj.length;
	if( isNaN( radioLength ) )
	{
		if( radioObj.checked )
		{
			return radioObj.value;
		}
		else
		{
			return "";
		}
	}
	else
	{
		for( i = 0; i < radioLength; i++ ) 
		{
			if( radioObj[i].checked ) 
			{
				return radioObj[i].value;
			}
		}
	}
	return "";
}


function setRadioCheckedValue( radioObj, newValue ) 
{
	if( !radioObj )
	{
		return;
	}
	var radioLength = radioObj.length;
	if( isNaN( radioLength ) ) 
	{
		radioObj.checked = ( radioObj.value == newValue.toString() );
	}
	else
	{
		for( i = 0; i < radioLength; i++ ) 
		{
			radioObj[i].checked = false;
			if( radioObj[i].value == newValue.toString() )
			{
				radioObj[i].checked = true;
			}
		}
	}
}

