function validateFloatRange(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'floatRange'); for (x in oRange) { var field = form[oRange[x][0]]; if (field != null && ((field.type == 'hidden' || 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 (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateMaskEx(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oMasked = getValidations(form, 'maskEx'); for (x in oMasked) { var field = form[oMasked[x][0]]; if (field != null && oMasked[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { if (!matchPattern(field.value, oMasked[x][2]("mask"))) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oMasked[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function matchPattern(value, mask) { return mask.exec(value); } function validateMinLengthOpt(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oMinLength = getValidations(form, 'minlengthOpt'); for (var x in oMinLength) { var field = form[oMinLength[x][0]]; if (field != null && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea')) { var iMin = parseInt(oMinLength[x][2]("minlength")); if ((trim(field.value).length > 0) && (field.value.length < iMin)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oMinLength[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateMask(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oMasked = getValidations(form, 'mask'); for (x in oMasked) { var field = form[oMasked[x][0]]; if (field != null && ((field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0))) { if (!matchPattern(field.value, oMasked[x][2]("mask"))) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oMasked[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function matchPattern(value, mask) { return mask.exec(value); } function validateFloat(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oFloat = getValidations(form, 'FloatValidations'); for (x in oFloat) { var field = form[oFloat[x][0]]; if (field != null && (field.type == 'hidden' || 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('').replace('0', '1'); if (!isAllDigits(joinedString)) { bValid = false; if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oFloat[x][1]; } else { var iValue = parseFloat(value); if (isNaN(iValue)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oFloat[x][1]; bValid = false; } } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function validateMaxLength(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oMaxLength = getValidations(form, 'maxlength'); for (x in oMaxLength) { var field = form[oMaxLength[x][0]]; if (field != null && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea')) { var iMax = parseInt(oMaxLength[x][2]("maxlength")); if (field.value.length > iMax) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oMaxLength[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateByte(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oByte = getValidations(form, 'ByteValidations'); for (x in oByte) { var field = form[oByte[x][0]]; if (field != null && (field.type == 'hidden' || 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 (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oByte[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oByte[x][1]; bValid = false; } } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function validateIntegerMaxObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'integerMaxObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var iMax = parseInt(oRange[x][2]("max")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var iValue = parseInt(value); if (iValue > iMax) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateRequired(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRequired = getValidations(form, 'required'); for (x in oRequired) { var field = form[oRequired[x][0]]; if (field != null && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea' || field.type == 'file' || field.type == 'select-one' || field.type == 'radio' || field.type == 'password')) { 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 (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRequired[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } // Trim whitespace from left and right sides of s. function trim(s) { return s.replace( /^\s*/, "" ).replace( /\s*$/, "" ); } function getValidations(form, ruleName) { return eval('new ' + form.name + '_' + ruleName + '()'); } function validateMinLength(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oMinLength = getValidations(form, 'minlength'); for (x in oMinLength) { var field = form[oMinLength[x][0]]; if (field != null && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea')) { var iMin = parseInt(oMinLength[x][2]("minlength")); if ((trim(field.value).length > 0) && (field.value.length < iMin)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oMinLength[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateIntegerObj(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oInteger = getValidations(form, 'integerObj'); for (var x in oInteger) { var field = form[oInteger[x][0]]; if (field != null && oInteger[x][0].indexOf('[') == -1 && (field.type == 'hidden' || 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; } var groupingSeparator = oInteger[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); if (value.length > 0) { if (!isAllDigits(value)) { bValid = false; if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oInteger[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oInteger[x][1]; bValid = false; } } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function validateIntegerMaxObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'integerMaxObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var iMax = parseInt(oRange[x][2]("max")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var iValue = parseInt(value); if (iValue >= iMax) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateByteObj(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oByte = getValidations(form, 'byteObj'); for (var x in oByte) { var field = form[oByte[x][0]]; if (field != null && oByte[x][0].indexOf('[') == -1 && (field.type == 'hidden' || 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; } var groupingSeparator = oByte[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); if (value.length > 0) { if (!isAllDigits(value)) { bValid = false; if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oByte[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oByte[x][1]; bValid = false; } } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function deleteAll(str, subStr) { var strLength; do { strLength = str.length; str = str.replace(subStr, ''); } while(strLength != str.length); return str; } function validateRequiredObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRequired = getValidations(form, 'requiredObj'); for (var x in oRequired) { var field = form[oRequired[x][0]]; if (field != null && oRequired[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea' || field.type == 'select-one' || field.type == 'radio' || field.type == 'password')) { 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 (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRequired[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateConfirmValue(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oConfirmValue = getValidations(form, 'confirmValue'); for (var x in oConfirmValue) { var field = form[oConfirmValue[x][0]]; var confirmField = form[oConfirmValue[x][2]("confirmValueProperty")]; if (field != null && ((field.type == 'hidden' || field.type == 'text' || field.type == 'textarea' || field.type == 'password') && confirmField.type == field.type && field.value != confirmField.value)) { if (focusField == null || focusField.type == 'hidden') { focusField = confirmField; } fields[i++] = oConfirmValue[x][1]; isValid = false; } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateFloatObj(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oFloat = getValidations(form, 'floatObj'); for (var x in oFloat) { var field = form[oFloat[x][0]]; if (field != null && oFloat[x][0].indexOf('[') == -1 && (field.type == 'hidden' || 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; } var groupingSeparator = oFloat[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var decimalSeparator = oFloat[x][2]('decimalSeparator'); if (decimalSeparator != null && decimalSeparator.length > 0) value = value.replace(decimalSeparator, '.'); if (value.length > 0) { // remove '.' before checking digits var tempArray = value.split('.'); var joinedString= tempArray.join('').replace('0', '1'); if (!isAllDigits(joinedString)) { bValid = false; if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oFloat[x][1]; } else { var iValue = parseFloat(value); if (isNaN(iValue)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oFloat[x][1]; bValid = false; } } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function validateEmail(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oEmail = getValidations(form, 'email'); for (x in oEmail) { if (form[oEmail[x][0]] != null && ((form[oEmail[x][0]].type == 'hidden' || form[oEmail[x][0]].type == 'text' || form[oEmail[x][0]].type == 'textarea') && (form[oEmail[x][0]].value.length > 0))) { if (!checkEmail(form[oEmail[x][0]].value)) { if (focusField == null || focusField.type == 'hidden') { focusField = form[oEmail[x][0]]; } fields[i++] = oEmail[x][1]; bValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } /** * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com), * http://javascript.internet.com */ function checkEmail(emailStr) { if (emailStr.length == 0) { return true; } var emailPat=/^(.+)@(.+)$/; var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; var validChars="\[^\\s" + specialChars + "\]"; var quotedUser="(\"[^\"]*\")"; var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/; var atom=validChars + '+'; var word="(" + atom + "|" + quotedUser + ")"; var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$"); var matchArray=emailStr.match(emailPat); if (matchArray == null) { return false; } var user=matchArray[1]; var domain=matchArray[2]; if (user.match(userPat) == null) { return false; } var IPArray = domain.match(ipDomainPat); if (IPArray != null) { for (var i = 1; i <= 4; i++) { if (IPArray[i] > 255) { return false; } } return true; } var domainArray=domain.match(domainPat); if (domainArray == null) { return false; } var atomPat=new RegExp(atom,"g"); var domArr=domain.match(atomPat); var len=domArr.length; if ((domArr[domArr.length-1].length < 2) || (domArr[domArr.length-1].length > 3)) { return false; } if (len < 2) { return false; } return true; } function validateFloatMinObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'floatMinObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var fMin = parseFloat(oRange[x][2]("min")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var decimalSeparator = oRange[x][2]('decimalSeparator'); if (decimalSeparator != null && decimalSeparator.length > 0) value = value.replace(decimalSeparator, '.'); var fValue = parseFloat(value); if (fValue < fMin) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateIntegerMinExclusiveObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'integerMinExclusiveObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var iMin = parseInt(oRange[x][2]("min")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var iValue = parseInt(value); if (iValue <= iMin) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateDate(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oDate = getValidations(form, 'DateValidations'); for (x in oDate) { var value = form[oDate[x][0]].value; var datePattern = oDate[x][2]("datePatternStrict"); if (form[oDate[x][0]] != null && ((form[oDate[x][0]].type == 'hidden' || form[oDate[x][0]].type == 'text' || form[oDate[x][0]].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 (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } 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 (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } 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 (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } 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 validateMaxLengthOpt(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oMaxLength = getValidations(form, 'maxlengthOpt'); for (var x in oMaxLength) { var field = form[oMaxLength[x][0]]; if (field != null && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea')) { var iMax = parseInt(oMaxLength[x][2]("maxlength")); if (field.value.length > iMax) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oMaxLength[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateShort(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oShort = getValidations(form, 'ShortValidations'); for (x in oShort) { var field = form[oShort[x][0]]; if (field != null && (field.type == 'hidden' || 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 (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oShort[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oShort[x][1]; bValid = false; } } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function validateMinLengthObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oMinLength = getValidations(form, 'minlengthObj'); for (var x in oMinLength) { var field = form[oMinLength[x][0]]; if (field != null && oMinLength[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea')) { var iMin = parseInt(oMinLength[x][2]("minlength")); if ((trim(field.value).length > 0) && (field.value.length < iMin)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oMinLength[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateIntegerMinObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'integerMinObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var iMin = parseInt(oRange[x][2]("min")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var iValue = parseInt(value); if (iValue < iMin) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateShortObj(form) { var focusField = null; var i = 0; var fields = new Array(); var oShort = getValidations(form, 'shortObj'); for (var x in oShort) { var field = form[oShort[x][0]]; if (field != null && oShort[x][0].indexOf('[') == -1 && (field.type == 'hidden' || 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; } var groupingSeparator = oShort[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); if (value.length > 0) { if (!isAllDigits(value)) { bValid = false; if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oShort[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oShort[x][1]; bValid = false; } } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function validateIntegerRangeObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'integerRangeObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var iMin = parseInt(oRange[x][2]("min")); var iMax = parseInt(oRange[x][2]("max")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var iValue = parseInt(value); if (iValue < iMin || iValue > iMax) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateIntRange(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'intRange'); for (x in oRange) { var field = form[oRange[x][0]]; if (field != null && ((field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0))) { var iMin = parseInt(oRange[x][2]("min")); var iMax = parseInt(oRange[x][2]("max")); var iValue = parseInt(field.value); if (!(iValue >= iMin && iValue <= iMax)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateInteger(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oInteger = getValidations(form, 'IntegerValidations'); for (x in oInteger) { var field = form[oInteger[x][0]]; if (field != null && (field.type == 'hidden' || 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 (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oInteger[x][1]; } else { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oInteger[x][1]; bValid = false; } } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function isAllDigits(argvalue) { argvalue = argvalue.toString(); 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 validateDateObj(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oDate = getValidations(form, 'dateObj'); for (var x in oDate) { var field = form[oDate[x][0]]; if (field != null && oDate[x][0].indexOf('[') == -1 && oDate[x][2]("datePattern") == null) { var value = form[oDate[x][0]].value; var datePattern = oDate[x][2]("datePatternStrict"); if ((form[oDate[x][0]].type == 'hidden' || form[oDate[x][0]].type == 'text' || form[oDate[x][0]].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 (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } 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 (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } 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 (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (focusField == null || focusField.type == 'hidden') { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function validateFloatMaxExclusiveObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'floatMaxExclusiveObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var fMax = parseFloat(oRange[x][2]("max")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var decimalSeparator = oRange[x][2]('decimalSeparator'); if (decimalSeparator != null && decimalSeparator.length > 0) value = value.replace(decimalSeparator, '.'); var fValue = parseFloat(value); if (fValue >= fMax) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateFloatMinExclusiveObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'floatMinExclusiveObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var fMin = parseFloat(oRange[x][2]("min")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var decimalSeparator = oRange[x][2]('decimalSeparator'); if (decimalSeparator != null && decimalSeparator.length > 0) value = value.replace(decimalSeparator, '.'); var fValue = parseFloat(value); if (fValue <= fMin) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateCreditCard(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oCreditCard = getValidations(form, 'creditCard'); for (x in oCreditCard) { if (form[oCreditCard[x][0]] != null && ((form[oCreditCard[x][0]].type == 'hidden' || 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 (focusField == null || focusField.type == 'hidden') { focusField = form[oCreditCard[x][0]]; } fields[i++] = oCreditCard[x][1]; bValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } 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 validateFloatMaxObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'floatMaxObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0)) { var fMax = parseFloat(oRange[x][2]("max")); var fMaxExcluded = parseInt(oRange[x][2]("maxExcluded")); var value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var decimalSeparator = oRange[x][2]('decimalSeparator'); if (decimalSeparator != null && decimalSeparator.length > 0) value = value.replace(decimalSeparator, '.'); var fValue = parseFloat(value); if (fValue > fMax || (fMaxExcluded && fValue == fMax)) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateMaxLengthObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oMaxLength = getValidations(form, 'maxlengthObj'); for (var x in oMaxLength) { var field = form[oMaxLength[x][0]]; if (field != null && oMaxLength[x][0].indexOf('[') == -1 && (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea')) { var iMax = parseInt(oMaxLength[x][2]("maxlength")); if (field.value.length > iMax) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oMaxLength[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateFloatRangeObj(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); var oRange = getValidations(form, 'floatRangeObj'); for (var x in oRange) { var field = form[oRange[x][0]]; if (field != null && oRange[x][0].indexOf('[') == -1 && (field.type == 'hidden' || 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 value = field.value; var groupingSeparator = oRange[x][2]('groupingSeparator'); if (groupingSeparator != null && groupingSeparator.length > 0) value = deleteAll(value, groupingSeparator); var decimalSeparator = oRange[x][2]('decimalSeparator'); if (decimalSeparator != null && decimalSeparator.length > 0) value = value.replace(decimalSeparator, '.'); var fValue = parseFloat(value); if (fValue < fMin || fValue > fMax) { if (focusField == null || focusField.type == 'hidden') { focusField = field; } fields[i++] = oRange[x][1]; isValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return isValid; } function validateBankAccount(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); var oBankAccount = getValidations(form, 'bankAccount'); for (var x in oBankAccount) { if (form[oBankAccount[x][0]] != null && ((form[oBankAccount[x][0]].type == 'hidden' || form[oBankAccount[x][0]].type == 'text' || form[oBankAccount[x][0]].type == 'textarea') && (form[oBankAccount[x][0]].value.length > 0))) { if (!bankAccountCheck(form[oBankAccount[x][0]].value)) { if (focusField == null || focusField.type == 'hidden') { focusField = form[oBankAccount[x][0]]; } fields[i++] = oBankAccount[x][1]; bValid = false; } } } if (fields.length > 0) { if(focusField.type != 'hidden') focusField.focus(); alert(fields.join('\n')); } return bValid; } function bankAccountCheck(bankAccount) { var length = bankAccount.length; if (length == 0) return false; if (bankAccount.charAt(0) == "P" || bankAccount.charAt(0) == "p") { if (length < 2 || length > 8) return false; for (var n = 1; n < length; n++) if ((bankAccount.charAt(n) < "0") || (bankAccount.charAt(n) > "9")) return false; } else { if (length != 9) return false; var chksum = 0; for (var n = 0; n < length; n++) if (!((bankAccount.charAt(n) < "0") || (bankAccount.charAt(n) > "9"))) chksum += parseInt(bankAccount.charAt(n)) * (9 - n); else return false; if ((chksum % 11) != 0) return false; } return true; }