/*
 * Version: $Revision: 34343 $
 * 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.toUpperCase() );
    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.test( element.value ) == false )
    {
        _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 )
{
    if ( window.jQuery )
    {
        jQuery('input[type=submit]:enabled', form)
            .addClass('check-form-disabled')
            .attr('disabled', 'disabled');
    }
    _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 + "]" : "" ) );
        if ( window.jQuery )
        {
            jQuery('input[type=submit].check-form-disabled', form)
                .removeClass('check-form-disabled')
                .removeAttr('disabled', 'disabled');
        }
    }
    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;
            }
        }
    }
}


