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