// THE UTILITY FUNCTIONS

$.ajaxSetup({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    timeout: 5000
});

function reorderOnLoad() {

    var sE = document.getElementById('sortElements');

    var loginTitleDiv = $('.loginTitle').get(0);
    var loginBlockDiv = $('.loginBlock').get(0);
    var nawTitleDiv = $('.nawTitle').get(0);
    var titleDiv = $('.title').get(0);
    var firstnameDiv = $('.firstname').get(0);
    var additionalnameDiv = $('.additionalname').get(0);
    var lastnameDiv = $('.lastname').get(0);
    var emailDiv = $('.email').get(0);
    var emailrepeatDiv = $('.emailrepeat').get(0);
    var countryDiv = $('.country').get(0);
    var addressDiv = $('.address').get(0);
    var homenumberDiv = $('.homenumber').get(0);
    var homenumberAdditionDiv = $('.homenumberAddition').get(0);
    var zipcodeDiv = $('.zipcode').get(0);
    var cityDiv = $('.city').get(0);
    var provinceDiv = $('.province').get(0);
    var phone1Div = $('.phone1').get(0);
    var phone2Div = $('.phone2').get(0);
    var dateofbirthDiv = $('.dateofbirth').get(0);
    var mandateBlockDiv = $('.mandateBlock').get(0);
    var organisationDiv = $('.organisation').get(0);
    var extra1Div = $('.extra1').get(0);
    var extra2Div = $('.extra2').get(0);
    var extra3Div = $('.extra3').get(0);
    var extra4Div = $('.extra4').get(0);

    if (sE != null) {
        var sorted_array = [loginTitleDiv, loginBlockDiv, nawTitleDiv, titleDiv, firstnameDiv, additionalnameDiv, lastnameDiv, emailDiv, emailrepeatDiv, addressDiv, homenumberDiv, homenumberAdditionDiv, zipcodeDiv, cityDiv, provinceDiv, countryDiv, phone1Div, phone2Div, dateofbirthDiv, mandateBlockDiv, organisationDiv, extra1Div, extra2Div, extra3Div, extra4Div].bubble_sort();

        for (var i = 0; i < sorted_array.length; i++) {
            //alert(sorted_array[i].id + ' | ' + sorted_array[i].order);                
            sE.appendChild(sorted_array[i]);
        }
    }
}

Array.prototype.bubble_sort = function() {
    var i, j;
    var newarray = this.slice(0);
    var swap = function(j, k) {
        var temp = newarray[j];
        newarray[j] = newarray[k];
        newarray[k] = temp;
        return (true);
    }
    var swapped = false;
    for (i = 1; i < newarray.length; i++) {
        try {
            for (j = 0; j < newarray.length - i; j++) {
                if (parseInt(newarray[j + 1].getAttribute('order')) < parseInt(newarray[j].getAttribute('order'))) {
                    swapped = swap(j, j + 1);
                }
            }
        }
        catch (exception) { }

        if (!swapped) break;
    }
    return (newarray)
}

function reorderPostcode(zipcodeCheckNLRequired_Countries, valid) {

    if (valid != false) {

        try {

            var homenumberDiv = $('.homenumber').get(0);
            var homenumberAdditionDiv = $('.homenumberAddition').get(0);
            var zipcodeDiv = $('.zipcode').get(0);
            var addressDiv = $('.address').get(0);
            var cityDiv = $('.city').get(0);
            var countryDD = $('.countrydd').get(0);

            var country = countryDD.value;
            country = country.toLowerCase();

            if (zipcodeCheckNLRequired_Countries.indexOf("|" + country + "|") > -1) {
                zipcodeDiv.parentNode.insertBefore(zipcodeDiv, addressDiv);
                homenumberDiv.parentNode.insertBefore(homenumberDiv, addressDiv);
                homenumberAdditionDiv.parentNode.insertBefore(homenumberAdditionDiv, addressDiv);
            }
            else {
                zipcodeDiv.parentNode.insertBefore(zipcodeDiv, cityDiv);
                addressDiv.parentNode.insertBefore(addressDiv, homenumberDiv);
            }
        }
        catch (exception) { }
    }
}


// webservice wishlist Add Record - begin
function wishlistAddRecord(clientCode, eventDescription, showDescription, eventDate, startSaleDate, endSaleDate, genericEventId) {

    $.ajax({
        url: "/iClient.asmx/WishlistAddRecord",
        data: "{'clientCode': '" + clientCode + "', 'eventDescription': '" + eventDescription + "', 'showDescription': '" + showDescription + "', 'eventDate': '" + eventDate + "', 'startSaleDate': '" + startSaleDate + "', 'endSaleDate': '" + endSaleDate + "', 'genericEventId': '" + genericEventId + "'}",
        success: function(msg) {
            if (msg != null) {
                var results;
                if (msg != null) {
                    results = msg.d;
                }
            }
        },
        error: function(xhr, desc, exceptionobj) {
            alert('[error] : webservice wishlist AddRecord | desc: ' + desc + ' exceptionobj: ' + exceptionobj);
        }
    });

}
// webservice wishlist Add Record - end



// webservice postcode check - begin
var busySearching = false;
var lastPostcodeVal = '';
var lastHuisnummerVal = '';

function checkPostcode(postcode, huisnummer, landen, RegexPostcode, RegexHuisnummer) {

    var validP = false;
    if (postcode.search(RegexPostcode) == -1)
        validP = false;
    else
        validP = true;

    var validHn = false;
    if (huisnummer.search(RegexHuisnummer) == -1)
        validHn = false;
    else
        validHn = true;

    if (validP && validHn) {

        var oCountry = $('.countrydd').get(0);
        oCountry = oCountry.value;
        oCountry = oCountry.toLowerCase();

        if (landen.indexOf("|" + oCountry + "|") > -1) {
            if (lastPostcodeVal != postcode || lastHuisnummerVal != huisnummer) {
                busySearching = false;
                lastPostcodeVal = postcode;
                lastHuisnummerVal = huisnummer;

                var straatTxt = $('.address').get(0);
                var plaatsTxt = $('.city').get(0);

                straatTxt.value = '';
                plaatsTxt.value = '';

                if (postcode.length > 0 && huisnummer.length > 0) {

                    displayElement('loadingAnimationDiv1', 'true');
                    setTimeout("UpdateImg('spinner1','/images/spinner.gif');", 50);
                    displayElement('loadingAnimationDiv2', 'true');
                    setTimeout("UpdateImg('spinner2','/images/spinner.gif');", 50);

                    $.ajax({
                        url: "/iClient.asmx/DoPostCodeCheck",
                        data: "{'postcode': '" + postcode + "', 'huisnummer': '" + huisnummer + "'}",
                        success: function(msg) {
                            var results = msg.d;
                            oncheckPostcodeComplete(results);
                        },
                        error: function(xhr, desc, exceptionobj) {
                            hideLoadingAnimations();
                        }
                    });

                }
            }
        }
    }
}

function oncheckPostcodeComplete(results) {

    if (results.replace('|', '').length > 0)
        fillAddress(results.split('|')[0], results.split('|')[1]);
    else
        fillAddress('', '');

    hideLoadingAnimations();

}

function hideLoadingAnimations() {
    var oloadingAnimationDiv1 = $('#loadingAnimationDiv1').get(0);
    oloadingAnimationDiv1.style.display = 'none';
    var oloadingAnimationDiv2 = $('#loadingAnimationDiv2').get(0);
    oloadingAnimationDiv2.style.display = 'none';
}

function fillAddress(address, city) {

    var oAddress = $('.addresstxtbox').get(0);
    var oCity = $('.citytxtbox').get(0);

    if (address.length != 0) {
        oAddress.value = address;
        oCity.value = city;

        setValidBorderColor(oAddress, true);
        setValidBorderColor(oCity, true);
    }
}

function showError(element) {
    element.value = '';
}

// webservice postcode check - end

// webservice username check - begin
function checkUsername(object, Regex) {

    var username = object.value;

    if (username.search(Regex) == -1) {
        setValidBorderColor(object, false);
        showDiv('usernameMessage1Div', false);
    }
    else {
        $.ajax({
            url: "/iClient.asmx/DocheckUsername",
            data: "{'username': '" + username + "'}",
            success: function(msg) {
                var results;
                if (msg != null) {
                    results = msg.d;
                }
                oncheckUsernameComplete(object, results);
            },
            error: function(xhr, desc, exceptionobj) {
                // alert('[error] : webservice check Username');
            }
        });
    }
}

function oncheckUsernameComplete(object, results) {

    var oUsernameValid = $('.UsernameValidHf input').get(0);

    if (results == 'reedsBezet') {

        setValidBorderColor(object, false);
        setHiddenFieldValue(oUsernameValid, false);
        showDiv('usernameMessage1Div', true);
    }
    else {
        setValidBorderColor(object, true);
        setHiddenFieldValue(oUsernameValid, true);
        showDiv('usernameMessage1Div', false);
    }
}

function oncheckUsernameTimeout(results) {
    //alert(results);
}
// webservice username check - end

function checkValidUsernameRepeat(valueUsername, valueUsernameRepeat, object) {
    if (valueUsername == valueUsernameRepeat) {
        setValidBorderColor(object, true);
    } else {
        setValidBorderColor(object, false);
    }
}

function checkValidUsername(value, object, Regex1) {
    if (value.search(Regex1) == -1) {
        showDiv('usernameErrorDiv', true);
    }
    else {
        showDiv('usernameErrorDiv', false);
    }
}


// webservice email check - begin
function checkEmailExistence(object, Regex) {

    var email = object.value;

    if (email.search(Regex) == -1) {
        setValidBorderColor(object, false);
        showDiv('emailMessage1Div', false);
    }
    else {
        $.ajax({
            url: "/iClient.asmx/DocheckEmail",
            data: "{'email': '" + email + "'}",
            success: function(msg) {
                var results;
                if (msg != null) {
                    results = msg.d;
                    //  alert(results);
                }
                oncheckEmailComplete(object, results);
            },
            error: function(xhr, desc, exceptionobj) {
                //alert('[error] : webservice check Email');
            }
        });
    }
}

function oncheckEmailComplete(object, results) {

    var oEmailValid = $('.EmailValidHf input').get(0);

    if (results == 'reedsBezet') {
        setValidBorderColor(object, false);
        setHiddenFieldValue(oEmailValid, false);
        showDiv('emailMessage1Div', true);
    }
    else {
        setValidBorderColor(object, true);
        setHiddenFieldValue(oEmailValid, true);
        showDiv('emailMessage1Div', false);
    }
}

function oncheckEmailTimeout(results) {
    //alert(results);
}
// webservice email check - end


// webservice date check - begin
function checkDate(dayClientID, monthClientID, yearClientID) {

    var oDay = document.getElementById(dayClientID);
    var oMonth = document.getElementById(monthClientID);
    var oYear = document.getElementById(yearClientID);

    if (oDay != null || oMonth != null || oYear != null) {

        var day = oDay.value;
        var month = oMonth.value;
        var year = oYear.value;

        if (day != '' && month != '' && year.length == 4) {
            var date = year + '/' + month + '/' + day;

            $.ajax({
                url: "/iClient.asmx/DocheckDate",
                data: "{'date': '" + date + "'}",
                success: function(msg) {
                    if (msg != null) {
                        var results;
                        if (msg != null) {
                            results = msg.d;
                        }
                        //alert('results: ' + results);
                        oncheckDateComplete(results);
                    }
                },
                error: function(xhr, desc, exceptionobj) {
                    //alert('[error] webservice checkDate');
                }
            });
        }
        else {
            // oncheckDateComplete(false);
        }
    }
}

function oncheckDateComplete(valid) {

    var oDateDay = $('.dateDay').get(0)
    var oDateMonth = $('.dateMonth').get(0); ;
    var odateYear = $('.dateYear').get(0);
    var oDateValidHf = $('.DateValidHf input').get(0);

    if (valid) {
        setValidBorderColor(oDateDay, true);
        setValidBorderColor(oDateMonth, true);
        setValidBorderColor(odateYear, true);
        setHiddenFieldValue(oDateValidHf, true);
    }
    else {
        setValidBorderColor(oDateDay, false);
        setValidBorderColor(oDateMonth, false);
        setValidBorderColor(odateYear, false);
        setHiddenFieldValue(oDateValidHf, false);
    }
}
// webservice date check - end


// webservice send mail - end

function sendMail(toEmail, subject, body) {

    $.ajax({
        url: "/iClient.asmx/DoSendMail",
        data: "{'toEmail': '" + toEmail + "', 'subject': '" + subject + "', 'body': '" + body + "'}",
        success: function(msg) {
            if (msg != null) {
                var results;
                if (msg != null) {
                    results = msg.d;
                }
            }
            //alert(results);
        },
        error: function(xhr, desc, exceptionobj) {
            //alert('[error] : sendMail | desc: ' + desc + '|  exception obj: ' + exceptionobj);
        }
    });

}

// webservice send mail - end


function setValidBorderColor(object, valid) {
    if (object != null) {
        if (!valid) {
            with (object.style) {
                borderWidth = 1;
                borderStyle = 'solid';
                borderColor = 'red';
            }
        }
        else {
            with (object.style) {
                borderWidth = 1;
                borderStyle = 'solid';
                borderColor = '';
            }
        }
    }
}

function setHiddenFieldValue(object, valid) {

    if (valid)
        object.value = 'true';
    else
        object.value = 'false';

    //$(document).ready(function() {
    //var tempa = document.getElementById('ctl00_ContentPlaceHolder1_iCLientNAW_UsernameValidHf');
    //alert('UsernameValidHf: ' + tempa.value);

    //var tempb = document.getElementById('ctl00_ContentPlaceHolder1_iCLientNAW_DateValidHf');
    //alert('DateValidHf: ' + tempb.value);            
    //})
}

function showDiv(id, display) {
    if (display)
        document.getElementById(id).style.display = '';
    else
        document.getElementById(id).style.display = 'none';
}


function checkElementZipCode(value, object, zipcodeValidationRegEx, zipcodeCheckNLRequired_Countries, zipcodeValidationBuitenLandRegEx, zipcodeCountriesToValidate, valueCheck) {

    var countryDD = $('.countrydd').get(0);
    var country = "";
    if (countryDD != null) {
        country = countryDD.value;
        country = country.toLowerCase();
    }

    if (zipcodeCheckNLRequired_Countries.indexOf("|" + country + "|") > -1) {
        if (value.search(zipcodeValidationRegEx) == -1)
            setValidBorderColor(object, false);
        else
            setValidBorderColor(object, true);
    }
    else {
        if (zipcodeCountriesToValidate.indexOf("|" + country + "|") > -1) {
            if (value.search(zipcodeValidationBuitenLandRegEx) == -1) {
                setValidBorderColor(object, false);
            }
            else {
                setValidBorderColor(object, true);
            }
        }
        else {
            setValidBorderColor(object, true);
        }
    }

    if (valueCheck == false)
        setValidBorderColor(object, true);

    setZipcoderequired(object, zipcodeCheckNLRequired_Countries, zipcodeCountriesToValidate);
}

function setZipcoderequired(object, zipcodeCheckNLRequired_Countries, zipcodeCountriesToValidate) {

    var countryDD = $('.countrydd').get(0);
    var country = "";
    if (countryDD != null) {
        country = countryDD.value;
        country = country.toLowerCase();
    }

    $('.zipcoderequired').hide();

    if (zipcodeCheckNLRequired_Countries.indexOf("|" + country + "|") > -1) {
        $('.zipcoderequired').show();
    }
    else {
        if (zipcodeCountriesToValidate.indexOf("|" + country + "|") > -1) {
            $('.zipcoderequired').show();
        }
        else {
            setValidBorderColor(object, true);
        }
    }
}

function checkElement(value, object, Regex) {
    if (value.search(Regex) == -1)
        setValidBorderColor(object, false);
    else
        setValidBorderColor(object, true);
}

function checkValidPassword(value, object, Regex1, Regex2, Regex3) {
    if (value.search(Regex1) == -1 || value.search(Regex2) == -1 || value.search(Regex3) == -1) {
        setValidBorderColor(object, false);
        showDiv('passwordError', true);
    }
    else {
        setValidBorderColor(object, true);
        showDiv('passwordError', false);
    }
}

function checkValidPasswordRepeat(valuePassword, valuePasswordRepeat, object, Regex1, Regex2, Regex3) {
    if (valuePasswordRepeat.search(Regex1) == -1 || valuePasswordRepeat.search(Regex2) == -1 || valuePasswordRepeat.search(Regex3) == -1) {
        setValidBorderColor(object, false);
    }
    else {
        if (valuePassword == valuePasswordRepeat) {
            setValidBorderColor(object, true);
        } else {
            setValidBorderColor(object, false);
        }
    }
}

function checkPasswordConfirm(object, emailValue, emailConfirm) {
    if (emailValue != emailConfirm)
        setValidBorderColor(object, false);
    else
        setValidBorderColor(object, true);
}

function checkEmailConfirm(object, emailValue, emailConfirm) {
    if (emailValue != emailConfirm)
        setValidBorderColor(object, false);
    else
        setValidBorderColor(object, true);
}

function checkAccountNumber(object, value) {
    if (value != '') {
        valid = elfProef(value);
        if (valid.length > 0)
            setValidBorderColor(object, false);
        else
            setValidBorderColor(object, true);
    }
}


function displayUsernameMessage1Div(show) {

    var usernameMessage1Div = document.getElementById('usernameMessage1Div');

    if (usernameMessage1Div != null) {
        if (show) {
            document.getElementById('usernameMessage1Div').style.display = '';
        }
        else {
            document.getElementById('usernameMessage1Div').style.display = 'none';
        }
    }
}


function displayEmailMessage1Div(show) {

    var emailMessage1Div = document.getElementById('emailMessage1Div');

    if (emailMessage1Div != null) {
        if (show) {
            document.getElementById('emailMessage1Div').style.display = '';
        }
        else {
            document.getElementById('emailMessage1Div').style.display = 'none';
        }
    }
}

function displayElement(value, display) {
    if (display) {
        document.getElementById(value).style.display = '';
    }
    else
        document.getElementById(value).style.display = 'none';
}

function UpdateImg(ctrl, imgsrc) {
    var img = document.getElementById(ctrl);
    img.src = imgsrc;
}

function replaceValue(object, changeType) {

    switch (changeType) {
        case "None":
            // do nothing
            break;
        case "CapitalizeFirstLetter":
            object.value = capitalizeFirstLetter(object);
            break;
        case "CapitalizeOnlyLastname":
            object.value = capitalizeOnlyLastname(object.value);
            break;
        case "FormatZipcode":
            object.value = formatZipcode(object);
            break;
        case "CapitalizeAllAndAddDotBetweenEachLetter":
            object.value = capitalizeAllAndAddDotBetweenEachLetter(object.value);
            break;
        case "FormatHouseNumber":
            object.value = formatHouseNumber(object.value);
            break;
        case "FormatHouseNumberAdditional":
            object.value = formatHouseNumberAdditional(object.value);
            break;
        case "FormatEmailAdres":
            object.value = formatemailadres(object.value);
            break;
        case "FormatPhone":
            object.value = formatPhone(object.value);
            break;
        case "LowerCaseAllContent":
            object.value = lowerCaseAllContent(object.value);
            break;
    }
}

function trim(str) {
    return str.replace(/^\s?|\s?$/g, '');
}

function alltrim(str) {
    return str.replace(/^\s+|\s+$/g, '');
}

function checkReplaceParm(str) {
    /* Check browser supports functions in replace */
    if (/^\s*function\s+alpha2number/.test(str)) {
        alert("This browser does not support using a function as a parameter for replace.");
        return "";
    }
    else {
        return str;
    }
}

function mandateCheck(object1, object2) {

    oAccountNumber = document.getElementById(object1);
    oAgreeMandateCb = document.getElementById(object2);

    if (oAccountNumber != null || oAgreeMandateCb != null) {

        var accountNumber = oAccountNumber.value;
        var agreeMandateCb = oAgreeMandateCb.checked;

        if (agreeMandateCb) {
            $('.accountNumberDiv').show();
            $('.accountNumberTxt').removeAttr("disabled");
            $('.accountNumberTextBox').blur(function() { CheckAccountNumber(oAccountNumber, this.value); });
            checkAccountNumber(oAccountNumber, $('input.accountNumberTxt').val());
        }
        else {
            $('.accountNumberDiv').hide();
            $('.accountNumberTxt').attr("disabled", true);
            $('.accountNumberTextBox').unbind();
            $('.accountNumberTextBox').css('border', 'solid 1px silver');
        }
    }
}

// END

// THE REPLACE FUNCTIONS

function lowerCaseAllContent(valueContent) {
    return valueContent.toLowerCase();
}

function capitalizeFirstLetter(valueContent) {

    return valueContent.value.charAt(0).toUpperCase() + valueContent.value.substr(1, valueContent.value.length);
}

function capitalizeAllAndAddDotBetweenEachLetter(val) {
    var result = '';

    // 1. remove anything that's not a letter
    re = /[^a-z]/gi;
    val = val.replace(re, '');

    // 2. capitalize everything
    val = val.toUpperCase();

    // 3. add spaces after each letter
    for (var i = 0; i < val.length; i++) {
        result += val.substr(i, 1);
        //if(i<voorletters.length-1)
        {
            result += '.';
        }
    }

    return result;
}

function capitalizeOnlyLastname(str) {
    str = alltrim(str);
    var newStr = str.toLowerCase().replace(/\b\w+\b/g, cnvrt);
    return checkReplaceParm(newStr, "cnvrt");

    function cnvrt() {

        if (/^(aan|bij|de|den|der|d|en|het|la|in|onder|op|over|s|t|te|ten|ter|tot|uit|van|ver|voor)$/.test(arguments[0]))
            return arguments[0];
        else
            return arguments[0].replace(/^[a-z]/, cnvrt2);
    }

    function cnvrt2() {
        return arguments[0].toUpperCase();
    }
}

function formatZipcode(zipcode) {
    if (zipcode.value != '') {
        zipcode.value = zipcode.value.toUpperCase().replace(/\ /g, '')
        if (zipcode.value.length == 6) {
            zipcode.value = zipcode.value.substring(0, 4) + ' ' + zipcode.value.substr(4, 2)
        }
    }
    return zipcode.value;
}

function formatPhone(str) {
    str = alltrim(str);

    // Remove anything that's not a number or '+' sign
    re = /[^0-9+]/gi;
    str = str.replace(re, '');

    if (str.substr(0, 1) == "+") {
        str = "00" + str.substr(1, 99)
    }

    // Remove anything that's not a number
    re = /[^0-9+]/gi;
    str = str.replace(re, '');

    return str
}

function formatHouseNumber(str) {
    str = alltrim(str);

    // Remove anything that's not a number
    re = /[^0-9+]/gi;
    str = str.replace(re, '');

    return str
}

function formatHouseNumberAdditional(str) {
    str = trim(str);

    str = str.toUpperCase();
    str = str.replace(/HOOG/, '')
    str = str.replace(/-?HS|HUIS|H/, 'hs')
    str = str.replace(/-?BIS\s?/, 'bis ')
    str = str.replace(/-?ZWART\s?/, 'zwart')
    str = str.replace(/-?ROOD\s?/, 'rood')
    str = str.replace(/^10$|\s10|^10\s/, "X")
    str = str.replace(/^1$|\s1$|^1\s/, "I")
    str = str.replace(/^2$|\s2$|^2\s/, "II")
    str = str.replace(/^3$|\s3$|^3\s/, "III")
    str = str.replace(/^4$|\s4$|^4\s/, "IV")
    str = str.replace(/^5$|\s5$|^5\s/, "V")
    str = str.replace(/^6$|\s6$|^6\s/, "VI")
    str = str.replace(/^7$|\s7$|^7\s/, "VII")
    str = str.replace(/^8$|\s8$|^8\s/, "VIII")
    str = str.replace(/^9$|\s9$|^9\s/, "IX")
    return str
}


function formatemailadres(str) {
    str = alltrim(str);
    return str
}

// END

// THE VALIDATE FUNCTIONS

function checkDigit(veld) {
    var input = veld.value;
    var tot = 0;
    var deel = 0;
    var rest = 0;

    veld.className = "correct";

    if (input.length > 10 || input.length == 8 || input.length == 0) {
        veld.className = "incorrect";
    }
    else {
        if (input.length > 8) {
            if (input.length == 9) {
                input = "0" + input
            }
            for (i = 0; i < input.length; i++) {
                getal = input.substr(i, 1);
                tot += getal * (10 - i);
            }
            deel = tot / 11;

            rest = tot % 11;
            if (rest != 0) {
                veld.className = "incorrect";
            }
        }
    }
    return (veld.className == "correct");
}

function numbersOnly(myfield, e, dec) {
    var key;
    var keychar;

    if (window.event)
        key = window.event.keyCode;
    else if (e)
        key = e.which;
    else
        return true;

    keychar = String.fromCharCode(key);

    // control keys
    if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27))
        return true;

    // numbers
    else if ((("0123456789").indexOf(keychar) > -1))
        return true;

    // decimal point jump
    else if (dec && (keychar == ".")) {
        myfield.form.elements[dec].focus();
        return false;
    }
    else
        return false;
}

function elfProef(value) {

    var input = value;
    var tot = 0;
    var deel = 0;
    var rest = 0;

    if (input.length == 3 || input.length == 4 || input.length == 5 || input.length == 6 || input.length == 7) {
        return "";
    }
    else {
        if (input.length > 10 || input.length == 8 || input.length <= 5) {
            return "\r\nDit is géén juist banknummer ";
        }
        else {
            if (input.length > 8) {
                if (input.length == 9)
                    input = "0" + input
                for (i = 0; i < input.length; i++) {
                    getal = input.substr(i, 1);
                    tot += getal * (10 - i);
                }
                deel = tot / 11;

                rest = tot % 11;
                if (rest != 0) {
                    return "\r\nDit is géén juist banknummer";
                }
                else {
                    return "";
                }
            }
            else
                return ""
        }
    }
}

// END







