document.write('') if(!window.selectAllMenus) document.write('') if(!window.formatCurrency) document.write('') if(typeof window.noTrim == "undefined") var noTrim = false; if(typeof window.noReplaceSpecialCharacters == "undefined") var noReplaceSpecialCharacters = false; if(typeof window.maxErrorMsgs == "undefined") var maxErrorMsgs = 25; var dateMinYear=1900; var dateMaxYear=2100; /*************** ADDITIONAL ON SUBMIT ACTION ***************/ function _additionalOnSubmitAction(form){return true;} if(!window.additionalOnSubmitAction) window.additionalOnSubmitAction = _additionalOnSubmitAction /*************** VALIDATE AND SUBMIT FORM ***************/ function validateAndSubmitForm(form, submitOnce, visible){ if( validate(form, submitOnce, visible) ) form.submit() } /*************** VALIDATE FORM ***************/ function validate(form, submitOnce, visible){ if(submitOnce && window._submittted){ alert("Please wait...") return false } selectAll() // set visible if(typeof visible == "undefined") visible = true; errorMSG = new Array(); if(form.REQUIRED){ var required_elements = form.REQUIRED.value.split(/\s*,\s*/) for(var i=0;i msg){ errorMSG[errorMSG.length] = getValidationMessage(datatype, label, numberOfWords, msg); setRequiredElement(element, name) } continue } // custom validation - maxlength if(datatype == "maxlength"){ if(value.length > parseInt(msg)){ errorMSG[errorMSG.length] = getValidationMessage(datatype, label, value.length, msg); setRequiredElement(element, name) } continue } // standard validation - check for validate data if(checkDataType(datatype, value, msg)) { continue; } // set validation msg if(msg == "" || datatype == "regexp" || datatype == "filetypes"){ if(inputType.indexOf("select") == 0 && datatype == "required") errorMSG[errorMSG.length] = getValidationMessage("select", label) else errorMSG[errorMSG.length] = getValidationMessage(datatype, label, value, msg); } else { errorMSG[errorMSG.length] = msg; } setRequiredElement(element, name) } if(errorMSG.length != 0){ var alertMSG = ""; for(var i=0;i maxErrorMsgs) { alertMSG += "...\n"; break; } } alert(alertMSG); return false; } else{ if(!additionalOnSubmitAction(form)){ return false } else { if(submitOnce) window._submittted = true return true } } } function setRequiredElement(element, name){ // change element bgColor // if input group if(document.getElementById){ if(document.getElementById(name + 'InputGroup')){ var inputGroup = document.getElementById(name + 'InputGroup') inputGroup.style.backgroundColor = "#FFCCCC"; inputGroup.onclick = new Function("this.style.backgroundColor = '';this.onfocus=''") } } // change element bgColor if(!element.style || element.type == "radio" || element.type == "checkboxes")return ; if(element.type == "hidden"){ // data input var dateElements = ["day", "date", "month", "year", "hour", "minute", "am_pm"] var form = element.form for(var i=0;i 25 || minute > 59 || second > 59 ) return false; return true; case "date": var date = /^(\d{1,2})\/(\d{1,2})\/(\d{2,4})*$/.exec(value) if(date == null) return false; var month = parseInt(date[1], 10); var day = parseInt(date[2], 10); var year = parseInt(date[3], 10); if( !isValidYear(year) ) return false; if( !isValidMonth(month) ) return false; if( !isValidDay(month, day, year) ) return false; return true; case "time" : var time = /^(\d{1,2}):(\d{1,2}):(\d{1,2})*$/.exec(value) if(time == null) return false var hour = parseInt(time[1], 10); var minute = parseInt(time[2], 10); var second = parseInt(time[3], 10); if(hour > 25 || minute > 59 || second > 59 )return false return true case "extension" : if(!window.validExtensions) return true if(!validExtensions.length) return true return (new RegExp("\.(" + validExtensions.join("|") + ")$")).test(value) case "filetypes": var types = msg.split(/\s*,\s*/) for(var i=0;i 13)return false; return (day >= 1 && day <= daysInMonth[month-1]); } // is valid year function isValidYear(year){ return ((year >= dateMinYear && year <= dateMaxYear) || (year >= 0 && year <= 99)); } // is validMonth function isValidMonth(month){ return (month >= 1 && month <= 12); } // validate card number (from: http://www.tinycode.com/cc.c without permission) function validateCreditCardNumber(strNum){ var nCheck = 0; var nDigit = 0; var bEven = false; for (n = strNum.length - 1; n >= 0; n--){ var cDigit = strNum.charAt (n); if (isDigit (cDigit)){ var nDigit = parseInt(cDigit, 10); if (bEven) { if ((nDigit *= 2) > 9) nDigit -= 9; } nCheck += nDigit; bEven = ! bEven; } else if (cDigit != ' ' && cDigit != '.' && cDigit != '-'){ return false; } } return (nCheck % 10) == 0; function isDigit (c){ var strAllowed = "1234567890"; return (strAllowed.indexOf(c) != -1); } } } /*************** GET VALIDATION MESSAGE ***************/ function getValidationMessage(datatype, label, value, msg){ switch(datatype){ case "required" : return "An entry for " + label + " is required."; case "not" : return formatMessage(label, value + " is not a valid"); case "select" : return "Select an entry for " + label + "."; case "confirm" : return "The entry for " + label + " and confirmation do not match.\n Please re-enter both fields"; case "filename" : return "The selected file (" + value.substring(value.lastIndexOf("\\")+1 ) + ") for " + label + " can not contain spaces or special characters (use '_' or '-' instead of spaces).\n Click 'Browse' and edit the file\'s name."; case "filetypes": return "A valid file extension (" + msg + ") for " + label + " is required."; case "words" : return "Please enter less than " + msg + " words for " + label + ". (You entered " + value + " words.)"; case "maxlength" : return "Please enter less than " + msg + " characters for " + label + ". (You entered " + value + " characters.)"; case "alphanumeric" : return formatMessage(label, "letter_number_underscore"); case "phone" : return formatMessage(label, "XXX-XXX-XXXX"); case "zipcode" : return formatMessage(label, "12345[-6789] US or Z5Z-5Z5 CANADIAN"); case "ssn" : return formatMessage(label, "XXX-XX-XXXX"); case "email" : return formatMessage(label, "someone@somewhere.com"); case "emails" : return formatMessage(label, "one@where.com,two@where.com"); case "domain" : return formatMessage(label, "somewhere.com or www.somewhere.com"); case "integer" : return formatMessage(label, "123"); case "bit" : return formatMessage(label, "0 or 1"); case "number" : return formatMessage(label, "123"); case "length" : return formatMessage(label, "10pt, 10px, 1em, 100%, or 10"); case "float" : return formatMessage(label, "123.45"); case "currency" : return formatMessage(label, "$123.45 or 123.45"); case "hexcolor" : return formatMessage(label, "#FFFFFF"); case "anydate" : return formatMessage(label, "YYYY, MM/YYYY, or MM/DD/YYYY"); case "datetime" : return formatMessage(label, "MM/DD/YYYY HH:MM:SS"); case "date" : return formatMessage(label, "MM/DD/YYYY"); case "time" : return formatMessage(label, "HH:MM:SS"); case "creditcard" : return formatMessage(label, "49927398716"); case "extension" : return formatMessage(label, "*." + validExtensions.join(", *.")); default : return "A valid entry for " + label + " is required."; } // format message function formatMessage(label, ex){ return "A valid entry for " + label + " is required." + ((ex)?" (" + ex + ")":"") } } /*************** TRIM ELEMENT VALUE ***************/ function trimElementValue(element){ if(noTrim) return false // trim value if(element.type == "password" || element.type == "text" || element.type == "textarea") element.value = trim(element.value) } /*************** REPLACE SPECIAL CHARACTERS ***************/ function replaceSpecialCharactersInElementValue(element){ if(noReplaceSpecialCharacters) return false if(element.type == "password" || element.type == "text" || element.type == "textarea") element.value = replaceSpecialCharacters(element.value) // replace special characters function replaceSpecialCharacters(text){ // “ ” ‘ ’ – · var msChar = [] msChar[msChar.length] = {value:unescape('%u201C'), replace:'"'} // “ msChar[msChar.length] = {value:unescape('%u201D'), replace:'"'} // ” msChar[msChar.length] = {value:unescape('%u2018'), replace:"'"} // ' msChar[msChar.length] = {value:unescape('%u2019'), replace:"'"} // ' msChar[msChar.length] = {value:unescape('%u2013'), replace:"-"} // – msChar[msChar.length] = {value:unescape('%u2022'), replace:"*"} // · for(var i=0;i