// NAW - validatie

function checkElement(value, object, Regex) {
    if (value.search(Regex) == -1)
        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 setValidBorderColor(object, valid) {
    if (!valid) {
        with (object.style) {
            borderWidth = 1;
            borderStyle = 'solid';
            borderColor = 'red';
        }
    }
    else {
        with (object.style) {
            borderWidth = '';//1;
            borderStyle = '';//'solid';
            borderColor = '';//'silver';
        }
    }
}

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 "FormatZip":
            object.value = upperCaseFirst(object);
            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 = formatPone(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) {
            $('.accountNumberTextBox').blur(function() { CheckAccountNumber(oAccountNumber, this.value); });
            checkAccountNumber(oAccountNumber, $('input.accountNumberTxt').val());
        }
        
    }
}


// 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
