function validateDate(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oDate = new DateValidations(); for (x in oDate) { var field = form[oDate[x][0]]; var value = form[oDate[x][0]].value; var datePattern = oDate[x][2]("datePattern"); if ((field.type == 'text' || field.type == 'textarea') && (value.length > 0) && (datePattern.length > 0)) { var MONTH = "MM"; var DAY = "dd"; var YEAR = "yyyy"; var orderMonth = datePattern.indexOf(MONTH); var orderDay = datePattern.indexOf(DAY); var orderYear = datePattern.indexOf(YEAR); if ((orderDay < orderYear && orderDay > orderMonth)) { var iDelim1 = orderMonth + MONTH.length; var iDelim2 = orderDay + DAY.length; var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); if (iDelim1 == orderDay && iDelim2 == orderYear) { dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$"); } else if (iDelim1 == orderDay) { dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$"); } else if (iDelim2 == orderYear) { dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$"); } else { dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$"); } var matched = dateRegexp.exec(value); if(matched != null) { if (!isValidDate(matched[2], matched[1], matched[3])) { if (i == 0) { focusField = form[oDate[x][0]]; } showError(field,oDate[x][1]); fields[i++] = oDate[x][1]; bValid = false; } } else { if (i == 0) { focusField = form[oDate[x][0]]; } showError(field,oDate[x][1]); fields[i++] = oDate[x][1]; bValid = false; } } else if ((orderMonth < orderYear && orderMonth > orderDay)) { var iDelim1 = orderDay + DAY.length; var iDelim2 = orderMonth + MONTH.length; var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); if (iDelim1 == orderMonth && iDelim2 == orderYear) { dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$"); } else if (iDelim1 == orderMonth) { dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$"); } else if (iDelim2 == orderYear) { dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$"); } else { dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$"); } var matched = dateRegexp.exec(value); if(matched != null) { if (!isValidDate(matched[1], matched[2], matched[3])) { if (i == 0) { focusField = form[oDate[x][0]]; } showError(field,oDate[x][1]); fields[i++] = oDate[x][1]; bValid = false; } } else { if (i == 0) { focusField = form[oDate[x][0]]; } showError(field,oDate[x][1]); fields[i++] = oDate[x][1]; bValid = false; } } else if ((orderMonth > orderYear && orderMonth < orderDay)) { var iDelim1 = orderYear + YEAR.length; var iDelim2 = orderMonth + MONTH.length; var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); if (iDelim1 == orderMonth && iDelim2 == orderDay) { dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$"); } else if (iDelim1 == orderMonth) { dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$"); } else if (iDelim2 == orderDay) { dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$"); } else { dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$"); } var matched = dateRegexp.exec(value); if(matched != null) { if (!isValidDate(matched[3], matched[2], matched[1])) { if (i == 0) { focusField = form[oDate[x][0]]; } showError(field,oDate[x][1]); fields[i++] = oDate[x][1]; bValid = false; } } else { if (i == 0) { focusField = form[oDate[x][0]]; } showError(field,oDate[x][1]); fields[i++] = oDate[x][1]; bValid = false; } } else { if (i == 0) { focusField = form[oDate[x][0]]; } showError(field,oDate[x][1]); fields[i++] = oDate[x][1]; bValid = false; } } } return bValid; } function isValidDate(day, month, year) { if (month < 1 || month > 12) { return false; } if (day < 1 || day > 31) { return false; } if ((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) { return false; } if (month == 2) { var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); if (day>29 || (day == 29 && !leap)) { return false; } } return true; } function validateRadioCheckbox(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oValidwhenForRadioButtons = new validwhenForRadioButtons(); for(x in oValidwhenForRadioButtons){ fn = oValidwhenForRadioButtons[x][2]; interpretation = interpretForValidWhenRadio(fn("test"), form); var field = form[oValidwhenForRadioButtons[x][0]]; if (field != undefined) { if (isRadio(field)) { hideError(form[oValidwhenForRadioButtons[x][0]][0]); } else { hideError(form[oValidwhenForRadioButtons[x][0]]); } if (interpretation == "false") { if (isRadio(field)) { showError(form[oValidwhenForRadioButtons[x][0]][0],oValidwhenForRadioButtons[x][1]); } else { showError(form[oValidwhenForRadioButtons[x][0]],oValidwhenForRadioButtons[x][1]); } isValid = false; } else if (interpretation != "true"){ var checkEval = eval(interpretation); if(!eval(interpretation)){ if (isRadio(field)) { showError(form[oValidwhenForRadioButtons[x][0]][0],oValidwhenForRadioButtons[x][1]); } else { showError(form[oValidwhenForRadioButtons[x][0]],oValidwhenForRadioButtons[x][1]); } isValid = false; } } } } return isValid; } function isRadio(obj) { //returns true if is an array of radio buttons if (obj.length > 0) { if (obj[0].type == 'radio') { return true; } } return false; } function isCheckbox(obj) { if (obj.type == "checkbox") { return true; } return false; } function stringDelimiter(obj) { var str = ""; if (obj.search("==") != -1) { str = "=="; } else if (obj.search("!=") != -1) { str = "!="; } return str; } function getComparisonString(obj) { var str = obj; if (obj == "JA") { str = "J"; } else if (obj == "J") { str = "J"; } else if (obj == "NEE") { str = "N"; } else if (obj == "N") { str = "N"; } else if (obj == "true") { str = "true"; } else if (obj == "false") { str = "false"; } else if (obj == "ONBEPAALD") { str = "O"; } else if (obj == "MAYBE") { str = "M"; } return str; } function isExisting(obj){ return typeof(obj)!='undefined'; } function checkRadioValue(field, delimiter, value) { var isValid = false; var strCompare = getComparisonString(value); var fieldvalue = "O"; for (var fieldIndex=0; fieldIndex"){ if (fieldvalue > strCompare){ isValid = true; } } return isValid; } function interpretForValidWhenRadio(test, form){ var re = /\([a-zA-Z0-9]*\s/g; test = test.replace(/\(/g, ""); test = test.replace(/\)/g, ""); var fields = test.split(" "); test = ""; var value = false; for(var i = 0; i 0) && (field.value.length < iMin)) { if (i == 0) { focusField = field; } showError(field,oMinLength[x][1]); fields[i++] = oMinLength[x][1]; isValid = false; } } } return isValid; } function validateDateInFuture(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oDateInFuture = new dateInFuture(); for(x in oDateInFuture){ fn = oDateInFuture[x][2]; interpretation = interpretDateInFuture(form[oDateInFuture[x][0]]); hideError(form[oDateInFuture[x][0]]); if(eval(interpretation)){ showError(form[oDateInFuture[x][0]],oDateInFuture[x][1]); isValid = false; } } return isValid; } var fDate; function interpretDateInFuture(field){ var fielddate = new Array(); fieldDate = field.value.split("/"); var compareDate = new Array(); fDate = new Date(fieldDate[2],fieldDate[1] -1 ,fieldDate[0]); var today = new Date(); if (fDate > today){ return true; } return false; } function validateRange(form) { return validateIntRange(form); } function validateInteger(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oInteger = new IntegerValidations(); for (x in oInteger) { var field = form[oInteger[x][0]]; if (field.type == 'text' || field.type == 'textarea' || field.type == 'select-one' || field.type == 'radio') { var value = ''; // get field's value if (field.type == "select-one") { var si = field.selectedIndex; if (si >= 0) { value = field.options[si].value; } } else { value = field.value; } if (value.length > 0) { if (!isAllDigits(value)) { bValid = false; if (i == 0) { focusField = field; } showError(field,oInteger[x][1]); fields[i++] = oInteger[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) { if (i == 0) { focusField = field; } showError(field,oInteger[x][1]); fields[i++] = oInteger[x][1]; bValid = false; } } } else { bValid = false; if (i == 0) { focusField = field; } showError(field,oInteger[x][1]); fields[i++] = oInteger[x][1]; } } } return bValid; } function isAllDigits(argvalue) { argvalue = argvalue.toString(); argvalue = argvalue.replace(/^[0]+/g, ''); var validChars = "0123456789"; var startFrom = 0; if (argvalue.substring(0, 2) == "0x") { validChars = "0123456789abcdefABCDEF"; startFrom = 2; } else if (argvalue.charAt(0) == "0") { validChars = "01234567"; startFrom = 1; } else if (argvalue.charAt(0) == "-") { startFrom = 1; } for (var n = startFrom; n < argvalue.length; n++) { if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false; } return true; } function validateFloat(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oFloat = new FloatValidations(); for (x in oFloat) { var field = form[oFloat[x][0]]; if (field.type == 'text' || field.type == 'textarea' || field.type == 'select-one' || field.type == 'radio') { var value = ''; // get field's value if (field.type == "select-one") { var si = field.selectedIndex; if (si >= 0) { value = field.options[si].value; } } else { value = field.value; } if (value.length > 0) { // remove ',' before checking digits var tempArray = value.split(','); var joinedString= tempArray.join(''); if (!isAllDigits(joinedString)) { bValid = false; if (i == 0) { focusField = field; } showError(field,oFloat[x][1]); fields[i++] = oFloat[x][1]; } else { var iValue = parseFloat(value); if (isNaN(iValue)) { if (i == 0) { focusField = field; } showError(field,oFloat[x][1]); fields[i++] = oFloat[x][1]; bValid = false; } } } } } return bValid; } function validateRequired(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oRequired = new required(); for (x in oRequired) { var field = form[oRequired[x][0]]; hideError(field); if (field.type == 'text' || field.type == 'textarea' || field.type == 'file' || field.type == 'select-one' || field.type == 'radio' || field.type == 'password'|| field.type == 'hidden' || field.type == 'number') { var value = ''; // get field's value if (field.type == "select-one") { var si = field.selectedIndex; if (si >= 0) { value = field.options[si].value; } } else { value = field.value; } if (trim(value).length == 0) { if (i == 0) { focusField = field; } showError(field,oRequired[x][1]); fields[i++] = oRequired[x][1]; isValid = false; } } } return isValid; } // Trim whitespace from left and right sides of s. function trim(s) { return s.replace( /^\s*/, "" ).replace( /\s*$/, "" ); } function validateEnterpriseNumber(form){ var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oEnterpriseNumber = new enterpriseNumberCheck(); for (x in oEnterpriseNumber) { var field = form[oEnterpriseNumber[x][0]]; if (field != undefined) { hideError(field); if ((field.type == 'text' || field.type == 'textarea' || field.type=='hidden')) { if (!checkEnterpriseNumber(field.value)) { if (i == 0) { focusField = field; } showError(field,oEnterpriseNumber[x][1]); fields[i++] = oEnterpriseNumber[x][1]; bValid = false; } } } } return bValid; } function checkEnterpriseNumber(enterpriseNumber){ //If length is 0 return true //Use validation required if length //can not be 0 if (enterpriseNumber.length==0) { return true; } enterpriseNumber = enterpriseNumber.replace(/[\.-]/g,""); if(enterpriseNumber == '0000000097'){ return false; } //if enterpriseNumber length 9 add 0 if (enterpriseNumber.length==9){ enterpriseNumber = "0" + enterpriseNumber; } //correct enterpriseNumber has length 10 if (enterpriseNumber.length==10){ if (!enterpriseNumber.match(/^[01]?[0-9]{9}$/)){return false}; var main = enterpriseNumber.substring(0,8); var check = enterpriseNumber.substring(8,10); var ret = (97 - (main % 97) + ""); if (ret.length == 1) ret = "0" + ret; if (ret == check) return true; else return false; } else { return false; } } function validateCompareDates(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oCompareDates = new compareDates(); for(x in oCompareDates){ fn = oCompareDates[x][2]; interpretation = interpretCompareDates(fn("test"),form[oCompareDates[x][0]]); hideError(form[oCompareDates[x][0]]); if(!eval(interpretation)){ showError(form[oCompareDates[x][0]],oCompareDates[x][1]); isValid = false; } } return isValid; } var cDate = new Array(); var fDate; var today = new Date(); function interpretCompareDates(test,field){ var fielddate = new Array(); fieldDate = field.value.split("/"); var compareDate = new Array(); fDate = new Date(fieldDate[2],fieldDate[1] -1 ,fieldDate[0]); var re = /\([a-zA-Z0-9]*\s/g; var matches = new Array(); for(var i = 0; i<4; i++){ matches = re.exec(test); if(matches != null){ compareDate = $("#" + matches[0].substring(1, matches[0].length-1)).val(); if (compareDate != undefined && compareDate.length>0){ compareDate = compareDate.split("/"); cDate[i] = new Date(compareDate[2],compareDate[1] - 1,compareDate[0]); test = test.replace(matches[0],"(cDate[" + i + "] "); } else { test = test.replace(matches[0],"(''"); } } } test = test.replace(/\*this\*/g,"fDate"); test = test.replace(/\*today\*/g,"today"); test = test.replace(/\sor\s/g, "||"); test = test.replace(/\sand\s/g, "&&"); test = test.replace(/\snull/g, "''"); test = test + ";"; return test; } function validateValidWhen(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oValidWhen = new validwhen(); for(x in oValidWhen){ fn = oValidWhen[x][2]; interpretation = interpretForValidWhen(fn("test"),form[oValidWhen[x][0]]); hideError(form[oValidWhen[x][0]]); if(!eval(interpretation)){ showError(form[oValidWhen[x][0]],oValidWhen[x][1]); isValid = false; } } return isValid; } function interpretForValidWhen(test,field){ var re = /\([a-zA-Z0-9]*\s/g; var matches = new Array(); do{ matches = re.exec(test); if(matches != null){ test = test.replace(matches[0],"(form." + matches[0].substring(1, matches[0].length-1) + ".value "); } } while(matches != null); test = test.replace(/\*this\*/g,"form." + field.id + ".value"); test = test.replace(/\sor\s/g, "||"); test = test.replace(/\sand\s/g, "&&"); test = test.replace(/\snull/g, "''"); test = test + ";"; return test; } function validateIntGreaterThen(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new intGreaterThen(); for (x in oRange) { var field = form[oRange[x][0]]; if ((field.type == 'text' || field.type == 'textarea' || field.type=='hidden' || field.type == 'number') && (field.value.length > 0)) { var iMin = parseInt(oRange[x][2]("min")); var iValue = parseInt(field.value); if (!(iValue >= iMin)) { if (i == 0) { focusField = field; } showError(field,oRange[x][1]); fields[i++] = oRange[x][1]; isValid = false; } } } return isValid; } function validateEmail(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oEmail = new email(); for (x in oEmail) { var field = form[oEmail[x][0]]; hideError(field); if ((field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { if (!checkEmail(field.value)) { if (i == 0) { focusField = field; } showError(field,oEmail[x][1]); fields[i++] = oEmail[x][1]; bValid = false; } } } return bValid; } /** * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com), * http://javascript.internet.com * Adjusted 15/12/2010 Johan Vandingenen: * Domainnames can be longer then 3 characters * Adjusted 7/10/2013 Pieter De Geyter: * Validate multiple addresses * Adjusted 4/06/2015 Suzanne Vandenhende: * Adding éèàç to the not allowable special chars * Adjusted 22/05/2017 Alex Demeyer: * Adding öüïäëâêîôû to not allowable special chars * Adjusted 1/09/2017 Suzanne Vandenhende: * Underscore in domainpat is not allowed bv test@te_st.be * Adjusted 04/12/2017 Johan Vandingenen: * changed validation to regularexpression (special chars are allowed in localpart) * Adjusted 1/02/2021 Pieter De Geyter * replaced with W3C regex */ function checkEmail(emailStr) { if (emailStr.length == 0) { return true; } var re = /^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/; var emails = emailStr.split(";"); var valid = true; for (var i = 0; i < emails.length; i++){ var str = emails[i].replace(/^\s+|\s+$/g,'') valid = valid && re.test(str); } return valid; } function validateMask(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oMasked = new mask(); for (x in oMasked) { var field = form[oMasked[x][0]]; if ((field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { if (!matchPattern(field.value, oMasked[x][2]("mask"))) { if (i == 0) { focusField = field; } showError(field,oMasked[x][1]); fields[i++] = oMasked[x][1]; isValid = false; } } } return isValid; } function matchPattern(value, mask) { return mask.exec(value); } function validateIbanNumber(form){ var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oIbanNumber = new ibanNumber(); for (x in oIbanNumber) { var field = form[oIbanNumber[x][0]]; hideError(field); if ((field.type == 'text' || field.type == 'textarea' || field.type=='hidden')) { if (!checkIbanNumber(field.value)) { if (i == 0) { focusField = field; } showError(field,oIbanNumber[x][1]); fields[i++] = oIbanNumber[x][1]; bValid = false; } } } return bValid; } function checkIbanNumber(ibanNumber){ if(ibanNumber == '00000000000097' || ibanNumber == '54000000000097'){ return false; } return bankAccountValid; } function validateIntRange(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new intRange(); for (x in oRange) { var field = form[oRange[x][0]]; if ((field.type == 'text' || field.type == 'textarea' || field.type=='hidden') && (field.value.length > 0)) { var iMin = parseInt(oRange[x][2]("min")); var iMax = parseInt(oRange[x][2]("max")); var iValue = parseInt(field.value,10); if (!(iValue >= iMin && iValue <= iMax)) { if (i == 0) { focusField = field; } showError(field,oRange[x][1]); fields[i++] = oRange[x][1]; isValid = false; } } } return isValid; } function validateMaxLength(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oMaxLength = new maxlength(); for (x in oMaxLength) { var field = form[oMaxLength[x][0]]; if (field.type == 'text' || field.type == 'textarea') { var iMax = parseInt(oMaxLength[x][2]("maxlength")); if (field.value.length > iMax) { if (i == 0) { focusField = field; } showError(field,oMaxLength[x][1]); fields[i++] = oMaxLength[x][1]; isValid = false; } } } return isValid; } function validateFloatRange(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new floatRange(); for (x in oRange) { var field = form[oRange[x][0]]; if ((field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var fMin = parseFloat(oRange[x][2]("min")); var fMax = parseFloat(oRange[x][2]("max")); var fValue = parseFloat(field.value); if (!(fValue >= fMin && fValue <= fMax)) { if (i == 0) { focusField = field; } showError(field,oRange[x][1]); fields[i++] = oRange[x][1]; isValid = false; } } } return isValid; } function validateByte(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oByte = new ByteValidations(); for (x in oByte) { var field = form[oByte[x][0]]; if (field.type == 'text' || field.type == 'textarea' || field.type == 'select-one' || field.type == 'radio') { var value = ''; // get field's value if (field.type == "select-one") { var si = field.selectedIndex; if (si >= 0) { value = field.options[si].value; } } else { value = field.value; } if (value.length > 0) { if (!isAllDigits(value)) { bValid = false; if (i == 0) { focusField = field; } showError(field,oByte[x][1]); fields[i++] = oByte[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) { if (i == 0) { focusField = field; } showError(field,oByte[x][1]); fields[i++] = oByte[x][1]; bValid = false; } } } } } return bValid; } function validatePosInteger(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oInteger = new IntegerValidations(); for (x in oInteger) { var field = form[oInteger[x][0]]; if (field.type == 'text' || field.type == 'textarea' || field.type == 'select-one' || field.type == 'radio') { var value = ''; // get field's value if (field.type == "select-one") { var si = field.selectedIndex; if (si >= 0) { value = field.options[si].value; } } else { value = field.value; } if (value.length > 0) { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue > 0 && iValue <= 2147483647)) { if (i == 0) { focusField = field; } showError(field,oInteger[x][1]); fields[i++] = oInteger[x][1]; bValid = false; } } } } return bValid; } function validatePhone(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); phone = new Phone(); for (x in phone) { var field = form[phone[x][0]]; var strippedField = field.value.replace(/\D/g,''); if (field.value.length > 0 && strippedField.length < 9) { showError(field,phone[x][1]); fields[i++] = phone[x][1]; isValid = false; } } return isValid; } function validateFloatGreaterThen(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new floatGreaterThen(); for (x in oRange) { var field = form[oRange[x][0]]; if ((field.type == 'text' || field.type == 'textarea' || field.type=='hidden') && (field.value.length > 0)) { var iMin = parseFloat(oRange[x][2]("min")); var tempArray = field.value.split(','); var joinedString= tempArray.join('.'); var iValue = parseFloat(joinedString); if (!(iValue >= iMin)) { if (i == 0) { focusField = field; } showError(field,oRange[x][1]); fields[i++] = oRange[x][1]; isValid = false; } } } return isValid; } function validateBusinessUnitNumber(form){ var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oBusinessUnitNumber = new businessUnitNumberCheck(); for (x in oBusinessUnitNumber) { var field = form[oBusinessUnitNumber[x][0]]; if (field != undefined) { hideError(field); if ((field.type == 'text' || field.type == 'textarea' || field.type=='hidden')) { if (!checkBusinessUnitNumber(field.value)) { if (i == 0) { focusField = field; } showError(field,oBusinessUnitNumber[x][1]); fields[i++] = oBusinessUnitNumber[x][1]; bValid = false; } } } } return bValid; } function checkBusinessUnitNumber(businessUnitNumber){ //If length is 0 return true //Use validation required if length //can not be 0 if (businessUnitNumber.length==0) { return true; } businessUnitNumber = businessUnitNumber.replace(/[\.-]/g,""); //correct businessUnitNumber has length 10 if (businessUnitNumber.length==10){ if (!businessUnitNumber.match(/^[2-9][0-9]{9}$/)){return false}; var main = businessUnitNumber.substring(0,8); var check = businessUnitNumber.substring(8,10); var ret = (97 - (main % 97) + ""); if (ret.length == 1) ret = "0" + ret; if (ret == check) return true; else return false; } else { return false; } } function validateShort(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oShort = new ShortValidations(); for (x in oShort) { var field = form[oShort[x][0]]; if (field.type == 'text' || field.type == 'textarea' || field.type == 'select-one' || field.type == 'radio') { var value = ''; // get field's value if (field.type == "select-one") { var si = field.selectedIndex; if (si >= 0) { value = field.options[si].value; } } else { value = field.value; } if (value.length > 0) { if (!isAllDigits(value)) { bValid = false; if (i == 0) { focusField = field; } showError(field,oShort[x][1]); fields[i++] = oShort[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) { if (i == 0) { focusField = field; } showError(field,oShort[x][1]); fields[i++] = oShort[x][1]; bValid = false; } } } } } return bValid; } function validateCreditCard(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oCreditCard = new creditCard(); for (x in oCreditCard) { if ((form[oCreditCard[x][0]].type == 'text' || form[oCreditCard[x][0]].type == 'textarea') && (form[oCreditCard[x][0]].value.length > 0)) { if (!luhnCheck(form[oCreditCard[x][0]].value)) { if (i == 0) { focusField = form[oCreditCard[x][0]]; } showError(field,oCreditCard[x][1]); fields[i++] = oCreditCard[x][1]; bValid = false; } } } return bValid; } /** * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl */ function luhnCheck(cardNumber) { if (isLuhnNum(cardNumber)) { var no_digit = cardNumber.length; var oddoeven = no_digit & 1; var sum = 0; for (var count = 0; count < no_digit; count++) { var digit = parseInt(cardNumber.charAt(count)); if (!((count & 1) ^ oddoeven)) { digit *= 2; if (digit > 9) digit -= 9; }; sum += digit; }; if (sum == 0) return false; if (sum % 10 == 0) return true; }; return false; } function isLuhnNum(argvalue) { argvalue = argvalue.toString(); if (argvalue.length == 0) { return false; } for (var n = 0; n < argvalue.length; n++) { if ((argvalue.substring(n, n+1) < "0") || (argvalue.substring(n,n+1) > "9")) { return false; } } return true; } function validateBankAccountNumber(form){ var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oBankAccountNumber = new validBankAccountNumber(); for (x in oBankAccountNumber) { var field = form[oBankAccountNumber[x][0]]; hideError(field); if ((field.type == 'text' || field.type == 'textarea' || field.type=='hidden')) { if (!checkBankAccountNumber(field.value)) { if (i == 0) { focusField = field; } showError(field,oBankAccountNumber[x][1]); fields[i++] = oBankAccountNumber[x][1]; bValid = false; } } } return bValid; } function checkBankAccountNumber(bankAccountNumber){ //remove the mask bankAccountNumber = bankAccountNumber.replace(/-/g,""); if (bankAccountNumber.length==0){ return true; } if(bankAccountNumber == '000000000097'){ return false; } MOD100=Math.floor(bankAccountNumber % 100); //first remove the last 2 numbers MOD97=Math.floor(bankAccountNumber/100); //Take Mod 97 of the number MOD97 = MOD97 % 97; //if mod97==0 --> 97 if (MOD97==0){ MOD97=97; } if (MOD100!=MOD97){ return false; } return true; } function validateRrnNumber(form){ var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oRrnNumber = new rrnNumber(); for (x in oRrnNumber) { var field = form[oRrnNumber[x][0]]; hideError(field); if ((field.type == 'text' || field.type == 'textarea' || field.type=='hidden')) { if (!checkRrnNumber(field.value)) { if (i == 0) { focusField = field; } showError(field,oRrnNumber[x][1]); fields[i++] = oRrnNumber[x][1]; bValid = false; } } } return bValid; } function checkRrnNumber(rrnNumber){ //If length is 0 return true //Use validation required if length //can not be 0 if (rrnNumber.length==0) { return true; } rrnNumber = rrnNumber.replace(/[\.-]/g,""); if(rrnNumber == '00000000097'){ return false; } //Correct RRN has length 11 if (rrnNumber.length != 11) { return false; } if (!moduloCheck1900(rrnNumber) && !moduloCheck2000(rrnNumber)) { return false; } return true; } function moduloCheck1900(personNumber){ var check = personNumber.substring(9); if (97 - (personNumber.substring(0,9) % 97) == check){ return true; } return false; } function moduloCheck2000(personNumber){ var check = personNumber.substring(9); if (97 - (("2"+personNumber.substring(0,9)) % 97) == check){ return true; } return false; }