var numbers = "1234567890"; var letters = "abcdefghijklmnopqrstuvwxyz"; var errorBlockStart = ""; var errorBlockEnd = ""; // array of validation types // the array index is the field name var fieldValidation = new Array(); var validationParams = new Array(); var minlengthValidation = new Array(); var maxlengthValidation = new Array(); var validationFields = new Array(); var fieldLabels = new Array(); // array of operation expressions // the array index is the field name var sumValidation = new Array(); // array of error messages var validationMessages = new Array(); // the text of the errors var errors = ""; var focusSet = true; var sumErrorFlag = false; var errorDivStart = '
   ' var errorDivEnd = '
'; var CLR_VAL_ERROR = '#FD8E7F'; var CLR_VAL_OK = '#FFFFFF'; var c,s,i; var found=0; function getMessages() { return errors; } function resetMessages() { errors = ""; } function getFormByName(formName) { return document.forms[formName]; } function getFormByNumber(formNumber) { return eval('document.forms._form_tag_'+formNumber); // return document.forms[formNumber]; } function getForm(form) { if (form==null || form=='') form = document.forms[0]; return form; } function getElem(elemName, formName) { var form = (formName!=null && formName!='') ? form = document.forms[formName] : getForm(); return form[elemName]; } function findObj( oName, oFrame, oDoc ) { if( !oDoc ) { if( oFrame ) { oDoc = oFrame.document; } else { oDoc = window.document; } } if( oDoc[oName] ) { return oDoc[oName]; } if( oDoc.all && oDoc.all[oName] ) { return oDoc.all[oName]; } if( oDoc.getElementById && oDoc.getElementById(oName) ) { return oDoc.getElementById(oName); } for( var x = 0; x < oDoc.forms.length; x++ ) { if( oDoc.forms[x][oName] ) { return oDoc.forms[x][oName]; } } for( var x = 0; x < oDoc.anchors.length; x++ ) { if( oDoc.anchors[x].name == oName ) { return oDoc.anchors[x]; } } for( var x = 0; document.layers && x < oDoc.layers.length; x++ ) { var theOb = findObj( oName, null, oDoc.layers[x].document ); if( theOb ) { return theOb; } } if( !oFrame && window[oName] ) { return window[oName]; } if( oFrame && oFrame[oName] ) { return oFrame[oName]; } for( var x = 0; oFrame && oFrame.frames && x < oFrame.frames.length; x++ ) { var theOb = findObj( oName, oFrame.frames[x], oFrame.frames[x].document ); if( theOb ) { return theOb; } } return null; } function noSubmit() { return false; } function canSubmitForm(form) { if(form.name == "actionForm") { if(form.isFormSubmitted != null && form.isFormSubmitted == true) { return false; } var elements = document.getElementsByName("btn_cancel"); if(elements != null && elements.size > 0) { var cancelButton = elements[0]; if(cancelButton != null) { var h = cancelButton.outerHTML; cancelButton.parentNode.outerHTML = h; } } } resetMessages(); focusSet = false; sumErrorFlag = false; form = getForm(form); if (validateForm(form)) { form.isFormSubmitted = true; return true; } return false; } function submitForm(form) { if(canSubmitForm(form)) { form.submit(); form.isFormSubmitted = true; return true; } return false; } function setValidation(fieldName, required, validationType, errorMessage, formName, params, minlength, maxlength, fieldLabel) { var elem = getElem(fieldName, formName); if (elem!=null) { elem.performvalidation = true; validationFields[validationFields.length] = elem; if (minlength==null || minlength=='') minlength = 0; if (minlength==0 && required==true) minlength = 1; if (minlength==0) elem.style.backgroundColor = CLR_VAL_OK; fieldValidation[getFieldName(elem)] = validationType; validationParams[getFieldName(elem)] = params; minlengthValidation[getFieldName(elem)] = minlength; maxlengthValidation[getFieldName(elem)] = maxlength; if (fieldLabel==null||fieldLabel=='') fieldLabel = fieldName.replace("value.", ""); fieldLabels[getFieldName(elem)] = fieldLabel; if(errorMessage=='') errorMessage=null; validationMessages[getFieldName(elem)] = errorMessage; } } function setSumValidation(compareField, fieldOperation, formName) { sumValidation[getFieldName(getElem(compareField, formName))] = fieldOperation; } function validateForm(form) { if(true == form.dontValidate) return true; window.status = "Validating Form..."; var retval = true; // for (var eIter=0; eIter0) { addError(field, validationMessages[getFieldName(field)] ); return false; } return true; } function validate_minlength(field) { var length = minlengthValidation[getFieldName(field)]; var val = trim(field.value); if (length>0 && val.lengthlength) { if (validationMessages[getFieldName(field)] != null) { addError(field, validationMessages[getFieldName(field)]); } else { addError(field, fieldLabels[getFieldName(field)] + " can have a maximum length of " + length); } return false; } return true; } function validate_year(formName, fieldName, params){ field = getElem(fieldName, formName); var retValue = true; if(field.value.length > 0){ if(isNaN(field.value)) retValue = false; else{ var year = parseInt(field.value); retValue = (year >= 1900 && year <= 2100); } if(!retValue){ if(validationMessages[getFieldName(field)] != null) addError(field, validationMessages[getFieldName(field)]); else addError(field, fieldLabels[getFieldName(field)] + " must be between 1900 and 2100"); } } return retValue; } /** this method does validate integer. it will remove minus sign, anything right of a period and after that if it cant convert to numeric it returns false otherwise it returns true **/ function validate_positiveinteger(formName,fieldName,params){ field = getElem(fieldName, formName); field.value = integerFormatting(field.value,"false"); var min = getParamValue(params,"min"); var max = getParamValue(params,"max"); if(field.value!=null && field.value!='' && (!isInteger(field) || (min!=null && parseInt(field.value)max))) { addError(field, "Please enter a valid number" + ((min!=null)?" with a minimum value of "+min:"") + ((max!=null)?((min!=null)?" and a ":" with a ")+"maximum value of "+max:"")+"."); return false; } return true; } function getParamValue(params, paramName) { paramName = paramName+"="; if (params!=null && params!='') { var pos = params.indexOf(paramName); if (pos!=-1) { var pos2 = params.indexOf(","); if (pos>pos2) pos2 = params.length; var paramValue = params.substring(pos+paramName.length, pos2); return paramValue; } } return null; } function validate_email(formName, fieldName, params) { field = getElem(fieldName, formName); if (field.value.length<4 || field.value.indexOf('@')<1 || field.value.indexOf('.')<1 || field.value.indexOf('@')==field.value.length-1 || field.value.indexOf('.')==field.value.length-1) { addError(field, "Please enter a valid email address"); return false; } return true; } function validate_max4000(formName, fieldName, params) { field = getElem(fieldName, formName); if (field.value.length>4000 ) { addError(field, "The application does not allow more than 4000 characters."); return false; }else if (field.value.length<0) { addError(field, "Field is required."); return false; } return true; } /** this method is could be used to validate integer however, it returns true regardsless if it the value is an integer or not **/ function validate_integer(formName, fieldName, params) { field = getElem(fieldName, formName); field.value = integerFormatting(field.value,"true"); return true; } /** this method is needed for the bulk of the integer formatting functions **/ function integerFormatting( integerString, negativeOkay ){ integerString = getWholeNumber(integerString); if( negativeOkay == "false" ) {//not negative okay remove them integerString = stringFilter(integerString, numbers); } else { integerString = stringFilter(integerString, numbers+"-"); } integerString = filterLeadingZeros(integerString); if( negativeOkay == "false" ) //not negative okay remove them { if( integerString.charAt(0) == '-' ) integerString = integerString.substring(1); } return integerString; } /** Search through strings characters one by one. If character is not in bag, append to returnString. date format method **/ function stripCharsInBag(s, bag){ var i; var returnString = ""; for (i = 0; i < s.length; i++){ var c = s.charAt(i); if (bag.indexOf(c) == -1) returnString += c; } return returnString; } /** this checks for leap year date format method **/ function daysInFebruary (year){ /* February has 29 days in any year evenly divisible by four, // EXCEPT for centurial years which are not also divisible by 400. */ return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 ); } /** this fills the daysarray date format method **/ function DaysArray(n) { for (var i = 1; i <= n; i++) { this[i] = 31; if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}; if (i==2) {this[i] = 29}; } return this; } /** **/ function indexOf(dsStr,dtCh,startPos){ var iPos = -1; for( iPos = startPos; iPos < dsStr.length;iPos++) { if( dsStr.charAt(iPos) == dtCh ) return iPos; } return -1; } /** this is needed to validate any date. it will replace hyphens or spaces if the user followed the format dd/mm/yy or dd/mm/yyyy else it will show the user an error message box **/ function validate_date(formName, fieldName, params) { field = getElem(fieldName, formName); delim = "/"; var dateStr = stringFilter(field.value, numbers+"/-:"); dateStr = dateStr.replace("-", delim); dateStr = dateStr.replace(":", delim); // Separate the date into elements var array = getNextDateElem(dateStr, delim, 2); var month = array[0]; dateStr = array[1]; var array = getNextDateElem(dateStr, delim, 2); var day = array[0]; dateStr = array[1]; var array = getNextDateElem(dateStr, delim, 4); var year = array[0]; dateStr = array[1]; if (month.length==1) month = "0" + month; if (day.length==1) day = "0" + day; var newDate = month+day+year; if (newDate.length==0) { field.value = ""; return true; } field.value = formatDateString(newDate); if(!isValidDate(field.value,fieldName,delim) ) { addError(field, "Please enter a valid date"); return false; } else return true; } function getNextDateElem(dateStr, delim, length) { var pos = dateStr.indexOf(delim); var sub1; var sub2; if (pos!=-1) { sub1 = dateStr.substring(0, pos); sub2 = dateStr.substring(pos+1); } else { sub1 = dateStr.substring(0, length); sub2 = dateStr.substring(length); } var array = new Array; array[0] = sub1; array[1] = sub2; return array; } /** * * this method is the heart of the date validator * 040703 which is 4 jul 2003 * or * 04072003 which is 4 jul 2003 * @return */ function isValidDate(dtStr,field,dtCh){ var minYear=1900; var maxYear=2100; var daysInMonth = DaysArray(12); //pos1 = dtStr.indexOf(dtStr) + 1; var iPos1 = 0; var iPos2 = 0; iPos1 = indexOf(dtStr,dtCh,0); if( iPos1 != -1 ) iPos2 = indexOf(dtStr,dtCh,(iPos1 + 1) ); else return false; var strMonth =dtStr.substring(0,iPos1); var strDay =dtStr.substring(iPos1+1,iPos2); var strYear =dtStr.substring(iPos2+1); strYr=strYear; if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1); if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1); for (var i = 1; i <= 3; i++) { if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1); } month=parseInt(strMonth); day=parseInt(strDay); year=parseInt(strYr); if (iPos1==-1 || iPos2==-1){ return false; } if (strMonth.length < 1 || month < 1 || month > 12 ) { return false; } if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){ return false; } if (strYear.length != 4 || year==0 || yearmaxYear){ return false; } if ( indexOf( dtStr, dtCh,iPos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){ return false; } return true; } /** * * this method formats the date string if a user enters in either * 040703 which is 4 jul 2003 * or * 04072003 which is 4 jul 2003 * @return */ function formatDateString(dtStr,number) { field1 = dtStr.substring(0,2); field2 = dtStr.substring(2,4); field3 = dtStr.substring(4,8); if(dtStr.length == 6)//only has two characters for date we need to guess what the year value might be { if( field3 < 50 )//probably add 20 field3 = "20" + field3; else field3 = "19" + field3; } return ( field1 + "/" + field2 + "/" + field3 ); } /** this checks and sees if the value is strictly numeric date method **/ function isInteger(s){ var i; for (i = 0; i < s.length; i++){ // Check that current character is number. var c = s.charAt(i); if (((c < "0") || (c > "9"))) return false; } // All characters are numbers. return true; } /** date format method **/ function validate_sum(field) { if (field.value == '') return true; var fieldOperation = sumValidation[getFieldName(field)]; if (fieldOperation!=null) { var tot = 0; var elem = ''; var op = '+'; for (var sIndex=0; sIndex -1) retString += c; } return retString; } function filterLeadingZeros (value) { var x; for (x = 0; x < value.length; x++) { var c = value.charAt(x); if ( c != "0") { value = value.substring(x); break; } } return value; } function getWholeNumber(value) { var c = indexOf(value,".",0); if (c > -1) { return value.substring(0,c); } return value; } function getFieldName(field) { return field.form.name + "." + field.name; } /*var focusField; function keyDown(DnEvents) { // handles keypress k = (isNetscape()) ? DnEvents.which : window.event.keyCode; if (k == 13) { // enter key pressed var nextIndex = 0; var form = document.forms[0]; if (focusField != null && focusField != '') { nextIndex = getIndex(focusField)+1; form = focusField.form; } if (nextIndex 0) { document.forms[formName].elements[fieldName].focus(); } } function getIndex(field) { var index = -1, i = 0, found = false; while (i < field.form.length && index == -1) if (field.form[i] == field) index = i; else i++; return index; } function setFocus(field) { focusField = field; } function validate_codetype(formName, fieldName, params) { field = getElem(fieldName, formName); var validationParams = "codetype"; validationParams=validationParams+"|"+params; if (!invokeRegularExpressionValidation(field, validationParams)) { if(validationMessages[getFieldName(field)] != null) { addError(field, validationMessages[getFieldName(field)]); } else if (params != "" || params != "*") { // Dump the code type(s) out. var extensions = params.split(","); var exs = ""; for( var i = 0; i < extensions.length; i++ ) { exs = exs + "." + extensions[i] if (i + 1< extensions.length) { exs = exs + ", "; } } addError(field, fieldLabels[getFieldName(field)] + " has to be the valid code type(s): " + exs); } else { addError(field, fieldLabels[getFieldName(field)] + " has to be a valid code type."); } return false; } } function validate_phone(formName, fieldName, params) { field = getElem(fieldName, formName); if(field.value.length>0){ var validationParams = "phone"; validationParams=validationParams+"|"+params; if (!invokeRegularExpressionValidation(field, validationParams)) { if (validationMessages[getFieldName(field)] != null) { addError(field, validationMessages[getFieldName(field)]); } else { addError(field, fieldLabels[getFieldName(field)] + " has to be a valid phone number plus the area code."); } return false; } } return true; } function validate_money(formName, fieldName, params) { field = getElem(fieldName, formName); var validationParams = "money"; validationParams=validationParams+"|"+params; if (!invokeRegularExpressionValidation(field, validationParams)) { if (validationMessages[getFieldName(field)] != null) { addError(field, validationMessages[getFieldName(field)]); } else { addError(field, fieldLabels[getFieldName(field)] + " has to be a valid currency."); } return false; } return true; } function validate_file(formName, fieldName, params) { field = getElem(fieldName, formName); if(field.value.length>0){ var validationParams = "file"; validationParams=validationParams+"|"+params; if (!invokeRegularExpressionValidation(field, validationParams)) { if (validationMessages[getFieldName(field)] != null) { addError(field, validationMessages[getFieldName(field)]); } else if (params != "" || params != "*") { // Dump the file extensions out. var extensions = params.split(","); var exs = ""; for( var i = 0; i < extensions.length; i++ ) { exs = exs + "." + extensions[i] if (i + 1< extensions.length) { exs = exs + ", "; } } addError(field, fieldLabels[getFieldName(field)] + " has to be a valid file with the following extensions: " + exs); } else { addError(field, fieldLabels[getFieldName(field)] + " has to be a valid file."); } return false; } } return true; } function invokeRegularExpressionValidation(validateObj, validateType) { testOk = false; var params = validateType.split("|"); // Separates validation string into parameters if (params[0] == 'money') { // Sets flags for money syntax var dollarsign = (params[1].indexOf('$') != -1); var grouping = (params[1].indexOf(',') != -1); var decimal = (params[1].indexOf('.') != -1); var num = 2; if (params.length > 2) num = params[2]; } switch (params[0]) { // Calls appropriate validation function based on type //case 'blank' : if (validateBlank(validateObj)) testOk = true; break; //case 'equalto' : if (validateEqualTo(validateObj, params[1], Frm)) testOk = true; break; //case 'length' : if (validateLength(validateObj, params[1])) testOk = true; break; //case 'number' : if (validateNumber(validateObj, params[1], params[2], params[3])) testOk = true; break; //case 'numeric' : if (validateNumeric(validateObj, params[1])) testOk = true; break; //case 'alnum' : if (validateAlnum(validateObj, params[1], params[2], params[3], params[4], params[5] )) testOk = true; break; //case 'decimal' : if (validateDecimal(validateObj, params[1], params[2] )) testOk = true; break; //case 'decimalr' : if (validateDecimalR(validateObj, params[1], params[2], params[3], params[4] )) testOk = true; break; //case 'ip' : if (validateIP(validateObj, params[1], params[2])) testOk = true; break; //case 'ssn' : if (validateSSN(validateObj)) testOk = true; break; case 'money' : if (validateMoney(validateObj, dollarsign, grouping, decimal, num)) testOk = true; break; //case 'zip' : if (validateZip(validateObj, params[1])) testOk = true; break; //case 'cazip' : if (validateCAzip(validateObj)) testOk = true; break; case 'phone' : if (validatePhone(validateObj)) testOk = true; break; //case 'email' : if (validateEmail(validateObj)) testOk = true; break; //case 'date' : if (validateDate(validateObj, params[1], params[2], params[3], params[4])) testOk = true; break; //case 'cc' : if (validateCC(validateObj)) testOk = true; break; //case 'select' : if (validateSelect(validateObj)) testOk = true; break; //case 'selectm' : if (validateSelectM(validateObj, params[1], params[2])) testOk = true; break; //case 'selecti' : if (validateSelectI(validateObj, params[1])) testOk = true; break; //case 'checkbox' : if (validateCheckbox(validateObj, params[1], params[2])) testOk = true; break; //case 'radio' : if (validateRadio(validateObj)) testOk = true; break; //case 'eitheror' : if (validateEitherOr(validateObj, params[1], params[2])) testOk = true; break; //case 'atleast' : if (validateAtLeast(validateObj, params[1], params[2], params[3])) testOk = true; break; case 'file' : if (validateFile(validateObj, params[1])) testOk = true; break; //case 'custom' : if (validateCustom(validateObj)) testOk = true; break; // Add additional cases here case 'codetype' : if (validateCodetype(validateObj, params[1])) testOk = true; break; default : alert('Validation Type Not Found:\n'+params[0]); } return testOk; } /***************************************************************************/ /* Syntax: validation="money" validationParams="flags|rightdigits" flags A string of up to three characters. Valid characters are period (.) comma (,) and dollar sign ($). $ = Dollar sign required beginning of the string , = Digit grouping must be applied (a comma between every 3rd digit) . = The decimal plus 2 or 'rightdigits' digits is required at end of string rightdigits The number of digits after the decimal point Errors: if Field data does not match money format specified -OR- is left blank* Notes: The flags can appear in any order. Omission of flags (just using "money") will validate the field, but with all flag parameters as optional. Examples: money|&, ( '$99,999'-OR- '$9' -OR- '$999,999,999' ) money|,. ( '99,999.99'-OR- $9.99' -OR- '999,999,999.99' ) money|*|4 ( '99,999.999'-OR- $9.9999' -OR- '999,999,999.9' ) */ function validateMoney(formObj, ds, grp, dml, num) { var moneySyntax; if (ds && grp && dml) // Dollar sign, grouping, and decimal { moneyReg = "^\\$(?:(?:[0-9]{1,3},)(?:[0-9]{3},)*[0-9]{3}|[0-9]{1,3})(\\.[0-9]{0,"+num+"})$"; moneySyntax = "$XX,XXX.XX"; } if (ds && grp && !dml) // Dollar sign and grouping { moneyReg="^\\$(?:(?:[0-9]{1,3},)(?:[0-9]{3},)*[0-9]{3}|[0-9]{1,3})$"; moneySyntax="$XX,XXX"; } if (ds && !grp && dml) // Dollar sign and decimal { moneyReg="^\\$[0-9]*(\\.[0-9]{0,"+num+"})$"; moneySyntax="$XXXXX.XX"; } if (!ds && grp && dml) // Grouping and decimal { moneyReg="^(?:(?:[0-9]{1,3},)(?:[0-9]{3},)*[0-9]{3}|[0-9]{1,3})(\\.[0-9]{0,"+num+"})?$"; moneySyntax="XX,XXX.XX"; } if (ds && !grp && !dml) // Dollar sign only { moneyReg="^\\$[0-9]*$"; moneySyntax="$XXXXX"; } if (!ds && grp && !dml) // Grouping only { moneyReg="^(?:(?:[0-9]{1,3},)(?:[0-9]{3},)*[0-9]{3}|[0-9]{1,3})$"; moneySyntax="XX,XXX"; } if (!ds && !grp && dml) // Decimal only { moneyReg="^[0-9]*(\\.[0-9]{0,"+num+"})$"; moneySyntax="XXXXX.XX"; } if (!ds && !grp && !dml) // No params set, all special chars become optional { moneyReg="^\\$?(?:(?:[0-9]{1,3},?)(?:[0-9]{3},?)*[0-9]{3}|[0-9]{1,3})(\\.[0-9]{0,"+num+"})?$"; moneySyntax="[$]XX[,]XXX[.XX]"; } var regex = new RegExp(moneyReg); return regex.test(formObj.value); } /*************************************************************************** * Syntax: validation="float" * Purpose: Use this method to validate a float number *****************************************************************************/ function validate_float(formName, fieldName, params) { var field = getElem(fieldName, formName); if(!parseFloat(field.value)) { if (validationMessages[getFieldName(field)] != null) { addError(field, validationMessages[getFieldName(field)]); } else { addError(field, fieldLabels[getFieldName(field)] + " has to be a valid decimal number."); } return false; } return true; } /*************************************************************************** * Syntax: validation="floatNumber" * Purpose: Use this method to validate a float number, signed or unsigned. *****************************************************************************/ function validate_floatNumber(formName, fieldName, params) { var field = getElem(fieldName, formName); var numeric = field.value; var numOfDecPoint = 0; var firstCharFound = false; var numOfDecimals = 0; for(var j = 0; j < numeric.length; j++) { var alpha = numeric.charAt(j); if(alpha != " ") { firstCharFound = true; } if(firstCharFound) { var hh = alpha.charCodeAt(0); if(hh != 43 && hh != 46 && hh != 45 && !(hh > 47 && hh < 58)) { //addError(field, fieldLabels[getFieldName(field)] + " has to be a valid float number."); addError(field, " Please provide a valid number."); return false; } if(j > 0 && (hh == 43 || hh == 45)) { //addError(field, fieldLabels[getFieldName(field)] + " has to be a valid float number."); addError(field, " Please provide a valid number."); return false; } if(hh == 46) { ++numOfDecimals; if(numOfDecimals > 1) { //addError(field, fieldLabels[getFieldName(field)] + " has to be a valid float number."); addError(field, " Please provide a valid number."); return false; } } } } if(!parseFloat(field.value)) { //addError(field, fieldLabels[getFieldName(field)] + " has to be a valid float number."); addError(field, " Please provide a valid number."); return false; } return true; } /***************************************************************************/ /* Syntax: validation="file" validationParams="extensions|cSens" extensions Comma separated list of valid file extensions sCens Boolean value indicating whether or not the filetype extension should be case sensitive. Errors: File entered is not of valid type as specified -OR- is left blank Examples: file|pdf|0 ( PDF files, case insensitive) */ function validateFile(formObj, extensions, cSens) { cSens = (cSens) ? "" : "i"; regExten = extensions.replace(/,/g,"|"); var fileReg = "^.+\\.("+regExten+")$"; var regex = new RegExp(fileReg,cSens); return regex.test(formObj.value); } function validateCodetype(formObj, codetype, cSens) { cSens = (cSens) ? "" : "i"; regExp = codetype.replace(/,/g,"|"); regCpt="^[0-9]{4}([tf]|[0-9]{1})$"; regHcpcs="^[a-z]{1}[0-9]{4}$"; regI9="^([0-9]{2}|([0-9]{3}))(.?[0-9]{1}|.?[0-9]{2})$"; if(regExp=="cpt|hcpcs" || regExp=="hcpcs|cpt"){ var typeExp = new RegExp(regCpt,cSens); if(!typeExp.test(formObj.value)){ var typeExp = new RegExp(regHcpcs,cSens); if(!typeExp.test(formObj.value)) return false; } }else if(regExp=="cpt"){ var typeExp = new RegExp(regCpt,cSens); if(!typeExp.test(formObj.value)) return false; }else if(regExp=="hcpcs"){ var typeExp = new RegExp(regHcpcs,cSens); if(!typeExp.test(formObj.value)) return false; }else if(regExp=="i9v1" || regExp=="i9v3"){ var typeExp = new RegExp(regI9,cSens); if(!typeExp.test(formObj.value)) return false; } return true; } /******************************************************/ function validate_fromAndToDate(formName, fieldName, params) { field = getElem(fieldName, formName); //delim = "/"; //var delimLoc = field.value.indexOf("/"); //alert("delimLoc:"+ delimLoc); //if (delimLoc == -1) { //addError(field, "Please enter a valid date(mm/dd/yyyy)"); //return false; //} var result = validate_date(formName, fieldName, params); if(result) { if(compareDates(field.value , formatDate(new Date(),'MM/dd/yyyy'))){ addError(field, "Date cannot be a future date"); result = false; return result; } } if(result){ if(fieldName == "toDate"){ var fromDate = getElem('fromDate', formName); var toDate = getElem('toDate', formName); if(compareDates(fromDate.value , toDate.value)){ addError(fromDate, "FromDate has to be less than ToDate"); result = false; return result; } } } return result; } /** To Compare two Dates. */ function compareDates(date1 , date2){ var date1Arr = date1.split("/"); var date2Arr = date2.split("/"); month1 = date1Arr[0]; date1 = date1Arr[1]; year1 = date1Arr[2]; month2 = date2Arr[0]; date2 = date2Arr[1]; year2 = date2Arr[2]; if(year1 > year2){ return true; }else if(year1 == year2 && month1 > month2){ return true; }else if(year1 == year2 && month1 == month2 && date1 > date2){ return true; }else return false; } function LZ(x) {return(x<0||x>9?"":"0")+x} /** To Convert the date to MM/dd/yyyy Format. */ function formatDate(date,format) { format=format+""; var result=""; var i_format=0; var c=""; var token=""; var y=date.getYear()+""; var M=date.getMonth()+1; var d=date.getDate(); var E=date.getDay(); var H=date.getHours(); var m=date.getMinutes(); var s=date.getSeconds(); var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k; // Convert real date parts into formatted versions var value=new Object(); if (y.length < 4) {y=""+(y-0+1900);} value["y"]=""+y; value["yyyy"]=y; value["yy"]=y.substring(2,4); value["M"]=M; value["MM"]=LZ(M); //value["MMM"]=MONTH_NAMES[M-1]; //value["NNN"]=MONTH_NAMES[M+11]; value["d"]=d; value["dd"]=LZ(d); //value["E"]=DAY_NAMES[E+7]; //value["EE"]=DAY_NAMES[E]; value["H"]=H; value["HH"]=LZ(H); if (H==0){value["h"]=12;} else if (H>12){value["h"]=H-12;} else {value["h"]=H;} value["hh"]=LZ(value["h"]); if (H>11){value["K"]=H-12;} else {value["K"]=H;} value["k"]=H+1; value["KK"]=LZ(value["K"]); value["kk"]=LZ(value["k"]); if (H > 11) { value["a"]="PM"; } else { value["a"]="AM"; } value["m"]=m; value["mm"]=LZ(m); value["s"]=s; value["ss"]=LZ(s); while (i_format < format.length) { c=format.charAt(i_format); token=""; while ((format.charAt(i_format)==c) && (i_format < format.length)) { token += format.charAt(i_format++); } if (value[token] != null) { result=result + value[token]; } else { result=result + token; } } return result; } /*********************************************************/ ///***************************************************************************/ //function validateBlank(formObj) { // var objName = formatName(formObj); // if (fv['is'].ie5 || fv['is'].mac) { // if (formObj.value == "") { // return errorProcess2(formObj,0,1,'Please enter the '+objName); // } // } // else { // var regex = new RegExp(/\S/); // if (!regex.test(formObj.value)) { // return errorProcess2(formObj,1,1,'Please enter the '+objName); // } // } // return true; // } ///***************************************************************************/ //// Special function used for bok //function checkBlank(formObj) { // if (formObj.value == "") // return true; // var regex = new RegExp(/^\s+$/); // if (regex.test(formObj.value)) // return true; // return false; // } // ///***************************************************************************/ //function validateEqualTo(formObj, otherObjName, Frm) { // var objName = formatName(formObj); // var equalToValue = Frm.elements[otherObjName].value; // // if (formObj.value != equalToValue) { // return errorProcess2(formObj,1,1,otherObjName+' must be the same as '+objName+'.\nPlease make sure the data you entered matches.'); // } // return true; // } // ///***************************************************************************/ //function validateLength(formObj,len) { // var objName = formatName(formObj); // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // // if (formObj.value.length < parseInt(len)) { // return errorProcess2(formObj,1,1,'The '+objName+' must be at least '+len+' characters long'); // } // return true; // } // ///***************************************************************************/ //function validateNumber(formObj, type, lb, ub) { // var objName = formatName(formObj); // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // // var num = formObj.value; // if (isNaN(num) || checkBlank(formObj)) { // return errorProcess2(formObj,1,1,'Please enter a valid number'); // } // num = (parseInt(type) == 1) ? parseFloat(num) : parseInt(num) ; // if (num < lb || num > ub) { // return errorProcess2(formObj,1,1,'Please enter a number between ' + lb + ' and ' + ub); // } // return true; // } // ///***************************************************************************/ //function validateNumeric(formObj, len) { // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // var objName = formatName(formObj); // // if (len == '*') { // var regex = /^\d+$/; // if (!regex.test(formObj.value)) { // return errorProcess2(formObj,1,1,'Only numeric values are valid for the ' + objName); // } // } // else { // numReg = "^\\d{"+parseInt(len)+",}$"; // var regex = new RegExp(numReg); // if (!regex.test(formObj.value)) { // return errorProcess2(formObj,1,1,'A minimum of '+len+' numeric values are required for the ' + objName); // } // } // return true; // } // ///***************************************************************************/ //function validateAlnum(formObj, minLen, tCase, numbers, spaces, puncs) { // var objName = formatName(formObj); // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // var arrE = new Array(); // arrE[0] = (minLen == "*") ? "None" : minLen; // var okChars = ""; // switch (tCase.toUpperCase()) { // case 'U' : okChars = "A-Z"; arrE[1] = "UPPER"; break; // case 'L' : okChars = "a-z"; arrE[1] = "lower"; break; // case 'C' : okChars = "A-Z][a-z"; if (minLen != "*") minLen--; arrE[1]="Initial capital"; break; // default : okChars = "a-zA-Z"; arrE[1]="Any"; break; // } // if (parseInt(numbers)) { okChars += "0-9"; arrE[2] = "Yes"; } else arrE[2] = "No"; // if (parseInt(spaces)) { okChars += " "; arrE[3] = "Yes"; } else arrE[3] = "No"; // if (puncs == "all") { okChars += "."; arrE[4] = "All"; } // if (puncs == "all") { okChars += puncStr("!@#$%^&*()_+-={}|[]:\";'<\\>?,.?~`"); arrE[4] = "All"; } // else if (puncs == "none") arrE[4] = "None"; // else { okChars += puncStr(puncs); arrE[4] = puncStr(puncs).replace(/\\/g,""); } // var length = (minLen == "*") ? "+ ?" : "{"+minLen+",}"; // var alnumReg = "^["+okChars+"]"+length+"$"; // var regex = new RegExp(alnumReg); // if (!regex.test(formObj.value) ) { // return errorProcess2(formObj,1,1,"The data you entered ("+formObj.value+") does not match the requested format for the "+objName+"\nMinimum Length: "+arrE[0]+"\nCase: "+arrE[1]+"\nNumbers allowed: "+arrE[2]+"\nSpaces allowed: "+arrE[3]+"\nPunctuation characters allowed: "+arrE[4]); // } // return true; // } ///***************************************************************************/ //function validateDecimal(formObj, lval, rval) { // var objName = formatName(formObj); // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // // (lval == '*')? lval = '*': lval = parseInt(lval); // (rval == '*')? rval = '*': rval = parseInt(rval); // var decReg = ""; // if (lval == 0) // decReg = "^\\.[0-9]{"+rval+"}$"; // else if (lval == '*') // decReg = "^[0-9]"+lval+"\\.[0-9]{"+rval+"}$"; // else if (rval == '*') // decReg = "^[0-9]{"+lval+"}\\.[0-9]"+rval+"$"; // else // decReg = "^[0-9]{"+lval+"}\\.[0-9]{"+rval+"}$"; // var regex = new RegExp(decReg); // if (!regex.test(formObj.value)) { // return errorProcess2(formObj,1,1,formObj.value+' is not a valid '+objName+'. Please re-enter the '+objName); // } // return true; // } // ///***************************************************************************/ //function validateDecimalR(formObj, lmin, lmax, rmin, rmax) { // var objName = formatName(formObj); // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // // (lmin == '*')? lmin = 0: lmin = parseInt(lmin); // (lmax == '*')? lmax = '': lmax = parseInt(lmax); // (rmin == '*')? rmin = 0: rmin = parseInt(rmin); // (rmax == '*')? rmax = '': rmax = parseInt(rmax); // var decReg = "^[0-9]{"+lmin+","+lmax+"}\\.[0-9]{"+rmin+","+rmax+"}$"; // var regex = new RegExp(decReg); // if (!regex.test(formObj.value)) { // return errorProcess2(formObj,1,1,formObj.value+' is not a valid '+objName+'. Please re-enter the '+objName); // } // return true; // } ///***************************************************************************/ //function validateIP(formObj, portMin, portMax) { // var objName = formatName(formObj); // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // if (typeof portMin == 'undefined') portMin = 0; // if (typeof portMax == 'undefined') portMax = 99999; // var portOk = true; // var ipReg = "^((?:([2]{1}[0-5]{2})|([2]{1}[0-4]{1}[0-9]{1})|([1]?[0-9]{2})|([0-9]{1}))[\\.]){3}(?:([2]{1}[0-5]{2})|([2]{1}[0-4]{1}[0-9]{1})|([1]?[0-9]{2})|([0-9]{1}))(\\:[0-9]{1,5})?$"; // var portLoc = formObj.value.indexOf(":"); // if (portLoc != -1) { // var port = parseInt(formObj.value.substring(portLoc+1)); // if (port < portMin || port > portMax) portOk = false; // } // var regex = new RegExp(ipReg); // if (!regex.test(formObj.value) || !portOk) { // var errorMessage = (regex.test(formObj.value) && !portOk) ? // "The port number you specified, "+port+", is out of range.\nIt must be between "+portMin+" and "+portMax : // formObj.value+' is not a valid IP address. Please re-enter'; // return errorProcess2(formObj,1,1,errorMessage); // } // return true; // } ///***************************************************************************/ //function validateSSN(formObj) { // var objName = formatName(formObj); // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // // var regex = new RegExp(/^\d{3}\-\d{2}\-\d{4}$/); // if (!regex.test(formObj.value)) { // return errorProcess2(formObj,1,1,formObj.value+' is not a valid Social Security Number.\nYour SSN must be entered in \'XXX-XX-XXXX\' format.'); // } // return true; // } ///***************************************************************************/ //function validateSelect(formObj) { // var objName = formatName(formObj); // if (formObj.selectedIndex == 0) { // return errorProcess2(formObj,0,1,"Please select the "+objName); // } // return true; // } // ///***************************************************************************/ //function validateSelectM(formObj, minS, maxS) { // var objName = formatName(formObj); // var selectCount = 0; // if (maxS == 999) maxS = formObj.length; // for (var i=0; i maxS) { // return errorProcess2(formObj,0,1,'Please select between '+minS+' and '+maxS+' '+objName+'.\nYou currently have '+selectCount+' selected'); // } // return true; // } // ///***************************************************************************/ //function validateSelectI(formObj, indexes) { // var objName = formatName(formObj); // var arrIndexes =indexes.split(/[,]/); // var selectOK = true; // for (var i=0; i 0); // break; // case 2 : // Before or on specDate // dateOk = ((timeDiff + 86400000) > 0); // break; // case 3 : // After specDate // dateOk = (timeDiff < 0); // break; // case 4 : // After or on specDate // dateOk = ((timeDiff - 86400000) < 0); // break; // default : dateOk = true; // } // if (!regex.test(vDate) || d == 'NaN' || !dateOk) { // return errorProcess2(formObj,1,1,"Please enter a valid date"); // } // return true; // } // ///***************************************************************************/ function validatePhone(formObj) { phoneReg = "^(?:[\(][0-9]{3}[\)]|[0-9]{3})[-. ]?[0-9]{3}[-. ]?[0-9]{4}$"; var regex = new RegExp(phoneReg); return regex.test(formObj.value); } ///***************************************************************************/ //function validateCheckbox(formObj, minC, maxC) { // var objName = formatName(formObj); // var formObj = formObj.form.elements[formObj.name]; // var checkTotal = formObj.length; // var checkCount = 0; // // if (maxC == 999) maxC = checkTotal; // for (var i=0; i maxC) { // if (fv['groupError']) { addError(formObj); return true; } // alert('Please select between '+minC+' and '+maxC+' options for '+objName+'.\nYou currently have '+checkCount+' selected'); // for (i=formObj.length-1; i>=0; i--) // errorProcess(formObj[i],0,1); // return false; // } // return true; // } // ///***************************************************************************/ //function validateRadio(formObj) { // var objName = formatName(formObj); // var formObj = formObj.form.elements[formObj.name]; // var selectTotal = 0; // // for (i=0; i=0; i--) // errorProcess(formObj[i],0,1); // return false; // } // return true; // } ///***************************************************************************/ //function validateEitherOr(formObj, del, fields) { // var f = formObj.form; // var arrF = fields.split(del); // var nbCount = 0; // var list = ""; // for (var i=0; i\?\,\.\/])/g,"\\$1"); // } // ///***************************************************************************************************** //* CREDIT CARD FUNCTIONS //* //*********** WARNING: DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING! ****************/ // //function cleanupCCNum(ccNum) { // return ccNum.replace(/\D/g,''); // } ///***************************************************************************/ //function validateCC(formObj) { // if (fv['bok'] && checkBlank(formObj)) // { fv['bok']=false; return true; } // var objName = formatName(formObj); // // switch (formObj.form.elements[fv['ccType']].value.toUpperCase()) { // case 'VISA' : var ccReg = /^4\d{12}(\d{3})?$/; break; // case 'MC' : var ccReg = /^5[1-5]\d{14}$/; break; // case 'DISC' : var ccReg = /^6011\d{12}$/; break; // case 'AMEX' : var ccReg = /^3[4|7]\d{13}$/; break; // case 'DINERS' : var ccReg = /^3[0|6|8]\d{12}$/; break; // case 'ENROUTE' : var ccReg = /^2[014|149]\d{11}$/; break; // case 'JCB' : var ccReg = /^3[088|096|112|158|337|528]\d{12}$/; break; // case 'SWITCH' : var ccReg = /^(49030[2-9]|49033[5-9]|49110[1-2]|4911(7[4-9]|8[1-2])|4936[0-9]{2}|564182|6333[0-4][0-9]|6759[0-9]{2})\d{10}(\d{2,3})?$/; break; // case 'DELTA' : var ccReg = /^4(1373[3-7]|462[0-9]{2}|5397[8|9]|54313|5443[2-5]|54742|567(2[5-9]|3[0-9]|4[0-5])|658[3-7][0-9]|659(0[1-9]|[1-4][0-9]|50)|844[09|10]|909[6-7][0-9]|9218[1|2]|98824)\d{10}$/; break; // case 'SOLO' : var ccReg = /^(6334[5-9][0-9]|6767[0-9]{2})\d{10}(\d{2,3})?$/; break; // // Add additonal card types here // default : if (!fv['groupError']) alert('Error! Card Type not found!'); return false; // } // var formatOK = ccReg.test(formObj.value); // var luhnOK = validateLUHN(formObj.value); // if (!formatOK || !luhnOK) { // return errorProcess2(formObj,1,1,'The '+objName+' you entered is not valid. Please check again and re-enter'); // } // return true; // } ///***************************************************************************/ //function validateLUHN(ccString) { // var odds = ""; // var evens = ""; // var i=1; // // for (i=ccString.length-2; i>=0; i=i-2) { // var digit = parseInt(ccString.charAt(i)) * 2; // odds += digit+""; // } // for (i=ccString.length-1; i>=0; i=i-2) // evens += ccString.charAt(i); // var luhnStr = odds + evens; // var checkSum = 0; // for ( i = 0; ( c = luhnStr.charAt( i ) ); i++ ) // checkSum += parseInt( c ); // return (checkSum % 10 == 0); // }