//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// /// form validation functions /// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// var blnFormValidationWarnings = 'false'; //<% = LCase(CStr(CBool(not bLiveSite))) %>; function checkField() { if ((arguments[0] != 6 && !arguments[1]) || (arguments[0] == 6 && eval('!editLive' + arguments[1]))) { // give warning if control cannot be found return (!blnFormValidationWarnings || confirm('Warning: Control could not be found\nError: ' + arguments[2] + '\nContinue?')); } else { switch (arguments[0]) { case 1 : // check for zero length return checkNotEmpty(arguments[1], arguments[2]); break; case 2 : // check for valid email return checkEmail(arguments[1], arguments[2]); break; case 3 : // check for integer value return checkInt(arguments[1], arguments[2]); break; case 4 : // check for radio button selected return checkRadio(arguments[1], arguments[2]); break; case 5 : // check for select option selected arguments[3] = !arguments[3] ? '' : arguments[3]; return checkSelect(arguments[1], arguments[2], arguments[3]); break; case 6 : // check for zero length text in EditLive instance return checkEditLive(arguments[1], arguments[2]); break; case 7 : // check for equality return checkEquality(arguments[1], arguments[2], arguments[3]); break; case 8 : // check for specified length return checkSetLength(arguments[1], arguments[2], arguments[3], arguments[4]); break; case 9 : // check for alpha-numeric chars only return checkAlphaNumeric(arguments[1], arguments[2]); break; case 10 : // check for checkbox selected return checkCheckBox(arguments[1], arguments[2]); break; case 11 : // check select has options return checkOptions(arguments[1], arguments[2], arguments[3], arguments[4]); break; case 12 : // check password return checkPass(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7]); break; case 13 : // check file extenstion return checkFile(arguments[1], arguments[2], arguments[3]); break; case 14 : // check date return checkDate(arguments[1], arguments[2], arguments[3], arguments[4]); break; case 15 : // check date range - start date <= end date return checkDateRange(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7]); break; default : // pass validtion and give warning if invalid check type specified return (!blnFormValidationWarnings || confirm('Warning: Invalid check type specified\ncheck Type: ' + arguments[0] + '\nError: ' + arguments[2] + '\nContinue?')); } } } function checkNotEmpty(oCtl, strError) { if (oCtl.value.length == 0) { setAlert(strError); oCtl.focus(); return false; } else { return true; } } function checkEmail(oCtl, strError) { if (!oCtl.value.replace(/^\s+/, "").replace(/\s+$/, "").match(new RegExp("^[^@\ ]+@[0-9A-Za-z\-\_]+([\.]([0-9A-Za-z\-\_]{1,}))+$"))) { setAlert(strError); oCtl.focus(); return false; } else { return true; } } function checkInt(oCtl, strError) { if (isNaN(oCtl.value)) { setAlert(strError); oCtl.focus(); return false; } else { return true; } } function checkSelect(oCtl, strError, intMin) { var intSel = 0; intMin = (intMin == 0 || isNaN(intMin)) ? 1 : intMin; for (var i = 0; i < oCtl.options.length; i++) { if (oCtl.options[i].selected) intSel++; } if ((oCtl.selectedIndex == 0 && oCtl.type == 'select-one') || ((oCtl.selectedIndex == -1 || (intMin.toString().length > 0 && intMin > 1 && intSel < intMin)) && oCtl.type == 'select-multiple')) { setAlert(strError); oCtl.focus(); return false; } else { return true; } } function checkRadio(oCtl, strError) { return checkCheckBox(oCtl, strError); } function checkEditLive(intEditLiveInstance, strError) { if (eval('editLive' + intEditLiveInstance + '.getText().length == 0')) { setAlert(strError); return false; } else { return true; } } function checkEquality(oCtl1, strError, oCtl2) { if (oCtl1.value != oCtl2.value) { setAlert(strError); oCtl1.focus(); return false; } else { return true; } } function checkSetLength(oCtl, strError, iMin, iMax) { if ((oCtl.value.length < iMin && iMin > 0) || (oCtl.value.length > iMax && iMax > 0)) { setAlert(strError); oCtl.focus(); return false; } else { return true; } } function checkAlphaNumeric(oCtl, strError) { if (!oCtl.value.match(new RegExp('/([a-z][A-Z][0-9])+/'))) { setAlert(strError); oCtl.focus(); return false; } else { return true; } } function checkCheckBox(oCtl, strError) { if (oCtl.length) { var blnchecked = false; for (var i = 0; i < oCtl.length; i++) { blnchecked = (oCtl[i].checked || blnchecked); } if (!blnchecked) { setAlert(strError); oCtl[0].focus(); return false; } else { return true; } } else { if (!oCtl.checked) { setAlert(strError); oCtl.focus(); return false; } else { return true; } } } function checkOptions(oCtl, strError, iMin, oAddCtl) { if (oCtl.options.length < iMin) { setAlert(strError); oAddCtl.focus(); return false; } else { return true; } } function checkPass(oCtl, iMin, iMax, strError, arrFieldCtl, arrFieldName, strFieldError) { var blnError = false; if (!(oCtl.value.match(new RegExp('[a-zA-Z]')) && oCtl.value.match(new RegExp('[0-9]')))) { setAlert(strError); oCtl.focus(); return false; } else { if (arrFieldCtl && arrFieldCtl.length && typeof(arrFieldCtl) == 'object' && arrFieldName && arrFieldName.length && typeof(arrFieldName) == 'object' && arrFieldCtl.length == arrFieldName.length) { for (var i = 0; i < arrFieldCtl.length; i++) { if (oCtl.value == arrFieldCtl[i].value && !blnError) { blnError = true; alert(strFieldError + ' ' + arrFieldName[i]); oCtl.focus(); } } } if (!blnError) { return checkSetLength(oCtl, strError, iMin, iMax); } else { return false; } } } function checkFile(oCtl, strError, arrType) { if (oCtl.value.length > 0 && ('|' + arrType.join('|').toLowerCase() + '|').indexOf('|' + oCtl.value.toLowerCase().substr(oCtl.value.lastIndexOf('.') + 1) + '|') < 0) { alert(strError + ' ' + arrType.join(', ')); oCtl.focus(); return false; } else { return true; } } function checkDate(oCtlYear, oCtlMonth, oCtlDay, strError) { blnValid = false; if (!isNaN(oCtlYear[oCtlYear.selectedIndex].value) && !isNaN(oCtlMonth[oCtlMonth.selectedIndex].value) && !isNaN(oCtlDay[oCtlDay.selectedIndex].value) && oCtlYear[oCtlYear.selectedIndex].value.toString().length == 4) { switch (parseInt(oCtlMonth[oCtlMonth.selectedIndex].value)) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : blnValid = oCtlDay[oCtlDay.selectedIndex].value <= 31 && oCtlDay[oCtlDay.selectedIndex].value >= 1; break; case 4 : case 6 : case 9 : case 11 : blnValid = oCtlDay[oCtlDay.selectedIndex].value <= 30 && oCtlDay[oCtlDay.selectedIndex].value >= 1; break; case 2 : if ((oCtlYear[oCtlYear.selectedIndex].value % 4 == 0 && oCtlYear[oCtlYear.selectedIndex].value % 100 != 0) || oCtlYear[oCtlYear.selectedIndex].value % 400 == 0) { blnValid = oCtlDay[oCtlDay.selectedIndex].value <= 29 && oCtlDay[oCtlDay.selectedIndex].value >= 1; } else { blnValid = oCtlDay[oCtlDay.selectedIndex].value <= 28 && oCtlDay[oCtlDay.selectedIndex].value >= 1; } break; } } if (!blnValid) { setAlert(strError); return false; } else { return true; } } function checkDateRange(oCtlStartYear, oCtlStartMonth, oCtlStartDay, oCtlEndYear, oCtlEndMonth, oCtlEndDay, strError) { if (!checkDate(oCtlStartYear, oCtlStartMonth, oCtlStartDay, '') || !checkDate(oCtlEndYear, oCtlEndMonth, oCtlEndDay, '') || (parseInt(oCtlStartYear[oCtlStartYear.selectedIndex].value) > parseInt(oCtlEndYear[oCtlEndYear.selectedIndex].value)) || (parseInt(oCtlStartYear[oCtlStartYear.selectedIndex].value) == parseInt(oCtlEndYear[oCtlEndYear.selectedIndex].value) && parseInt(oCtlStartMonth[oCtlStartMonth.selectedIndex].value) > parseInt(oCtlEndMonth[oCtlEndMonth.selectedIndex].value)) || (parseInt(oCtlStartYear[oCtlStartYear.selectedIndex].value) == parseInt(oCtlEndYear[oCtlEndYear.selectedIndex].value) && parseInt(oCtlStartMonth[oCtlStartMonth.selectedIndex].value) == parseInt(oCtlEndMonth[oCtlEndMonth.selectedIndex].value) && parseInt(oCtlStartDay[oCtlStartDay.selectedIndex].value) > parseInt(oCtlEndDay[oCtlEndDay.selectedIndex].value))) { setAlert(strError); return false; } else { return true; } } function maxLength(oCtl, intLength) { if (!isNaN(intLength) && oCtl.value.length > intLength && intLength > 0) { oCtl.value = oCtl.value.substr(0, intLength); } } function setAlert(strError) { if (!!strError && strError.length > 0) { alert(strError); } }