/** * @version 1.0 * @author Low Swat Mooi * @created 5 May, 2003 */ var errorNotWithinValidRange = "Valid range is from {0} to {1}"; // New checking for the invalid character done by Victor on 6/8/2003 function checkSpecialChar(field) { var temp = field.value; var re = new RegExp ('\r\n', 'gi') ; var newstr = temp.replace(re, '') ; var errorMsg = "Invalid characters found \r\rList of characters allowed:\rAlphabets\rNumbers\r . - & ' , = / ( ) ; : + # ? @ _" for (var i=0; i < newstr.length; i++) { var ch = newstr.substring(i, i+1); if ((ch >= "A" && ch <= "Z") || (ch>= "0" && ch <= "9") || (ch >= "a" && ch <= "z") || (ch == "\n") || (ch == " ") || (ch == ".") || (ch == "-") || (ch == "&") || (ch == "'") || (ch == "/") || (ch == "(") || (ch == ")") || (ch == ";") || (ch == ":") || (ch == "+") || (ch == "#") || (ch =="?") || (ch == "@") || (ch == "_") || (ch == "=") || (ch == ",")) { continue; } else { alert(errorMsg); field.select(); field.focus(); return false; } } return true; } // New checking for the invalid character done by Catherine on 11/8/2003 // no special char allowed in userID and password function checkSpecialCharUserIDPassword(field) { var temp = field.value; var re = new RegExp ('\r\n', 'gi') ; var newstr = temp.replace(re, '') ; var errorMsg = "Invalid characters found"; for (var i=0; i < newstr.length; i++) { var ch = newstr.substring(i, i+1); if ((ch >= "A" && ch <= "Z") || (ch>= "0" && ch <= "9") || (ch >= "a" && ch <= "z")) { continue; } else { alert(errorMsg); field.select(); field.focus(); return false; } } return true; } // check whether a string has a special character except ':' '/' '.' '?' '=' '&' function checkSpecialCharUrl(field) { for (var i=0; i < field.value.length; i++) { var ch = field.value.substring(i, i+1); if ((ch >= "A" && ch <= "Z") || (ch>= "0" && ch <= "9") || (ch >= "a" && ch <= "z") || (ch == ".") || (ch == "/") || (ch == ":") || (ch == "-") || (ch == "?") || (ch == "&") || (ch == "=")) { continue; } else { alert("Invalid characters found"); field.select(); field.focus(); return false; } } return true; } // this function is to check for a valid email address. function emailCheck (field) { var emailStr = field.value; emailStr = emailStr.trim(); if (emailStr.length > 0) { if (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(emailStr)){ return true; } alert("Invalid email address"); field.select(); field.focus(); return false; } return true; } //this function use to check the uploaded file extension - lsm added 27/05/2003 //this function round up the float parse in into currency. need string input. function RoundUp(txtObjValue){ var newValue; var oldValue = txtObjValue; var pos = oldValue.indexOf("."); if(pos <= -1) return oldValue; else{ dc = oldValue.length - pos; if( dc <= 3 ){ return oldValue; } else{ newValue = Math.round(oldValue*100) / 100; return newValue; } } } // Rounding a Number to a 2 decimal pointing number function RoundTo2dp(n) { n = Math.round(n * 100) / 100; n = (n + 0.001) + ''; return n.substring(0, n.indexOf('.') + 3); } // Check whether string s is empty. function isEmpty(s){ return ((s == null) || (s.length == 0)) } function checkEmpty(field,msg) { if(field.value == null || field.value.length == 0) { alert(msg); field.focus(); return false; } } function disableIt(obj,flag) { //flag = 1 : disabled object; flag = 2 : enabled object //obj.disabled = !(obj.disabled); //var z = (obj.disabled) ? 'disabled' : 'enabled'; if(flag == "1") obj.disabled = true; else obj.disabled = false; } function extracheck(obj) { return !obj.disabled; } //check for integer or float function NumericCheck(obj, flag){ if(!isEmpty(obj.value)){ if(flag == "Integer") { if(obj.value.match(/\D/) != null) { alert('Only integer are allowed for this field.'); obj.value = ""; obj.focus(); return false; } else return true; } else if(flag == "Float") { if(obj.value.match(/^((\d+(\.\d*)?)|((\d*\.)?\d+))$/) == null) { alert('Only numeric are allowed for this field.'); obj.value = ""; obj.focus(); return false; } else return true; } }else return true; } // Validate Date Format function checkdate(objName) { if(!isEmpty(objName.value)) { if (isValidDate(objName.value) == false) { //alert("Date is invalid. Date must be entered in dd/mm/yyyy format."); return false; } else { return true; } } else return true; } // Checks for the following valid date formats: // DD/MM/YY DD/MM/YYYY DD-MM-YY DD-MM-YYYY //var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year //Date Format DD/MM/YYYY var datePat = /^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/; // requires 4 digit year var matchArray = dateStr.match(datePat); // is the format ok? if (matchArray == null) { alert("The date " + dateStr + " is not in a valid format (DD/MM/YYYY).") return false; } month = matchArray[3]; // parse date into variables day = matchArray[1]; year = matchArray[4]; if (month < 1 || month > 12) { // check month range alert("Month must be between 1 and 12."); return false; } if (day < 1 || day > 31) { alert("Day must be between 1 and 31."); return false; } if ((month==4 || month==6 || month==9 || month==11) && day==31) { alert("Month "+month+" doesn't have 31 days!") return false; } if (month == 2) { // check for february 29th var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); if (day>29 || (day==29 && !isleap)) { alert("February " + year + " doesn't have " + day + " days!"); return false; } } return true; } // Convert to date format function convertToDate(mm, dd, yy) { var aDate = new Date(); var aMonth = parseInt( mm, 10 ) - 1; var aDay = parseInt( dd, 10 ); var aYear = parseInt( yy, 10 ); if( aYear < 100 ) { aYear += 2000; //alert( "Since you entered a two-digit year, I'll assume it's in the 21st century"); } aDate.setMonth( aMonth ); aDate.setDate( aDay ); aDate.setYear( aYear ); return aDate; } // Calculate difference between two date // with date format DD/MM/YYYY in object function calcDays(startObj, endObj) { var startDate = startObj.value; var endDate = endObj.value; var diffDay = 0; if(isValidDate(startDate) && isValidDate(endDate)) { var startArray = startDate.split("/"); var endArray = endDate.split("/"); startFormat = new Date(); startFormat = convertToDate(startArray[1], startArray[0], startArray[2]); endFormat = new Date(); endFormat = convertToDate(endArray[1], endArray[0], endArray[2]); if( endFormat > startFormat ) { deltaSeconds = (endFormat.getTime() - startFormat.getTime() ); aDay = 1000 * 60 * 60 * 24; diffDay = parseInt(deltaSeconds / aDay ); } else { alert("End date must be greater than start date!"); diffDay = -1; } } else { diffDay = 0; } return diffDay; } function DateAdd(startDate, numDays, numMonths, numYears) { var returnDate = new Date(startDate.getTime()); var yearsToAdd = numYears; var month = parseInt(returnDate.getMonth(),10)+ parseInt(numMonths,10); if (month > 11) { yearsToAdd = Math.floor((month+1)/12); month -= 12*yearsToAdd; yearsToAdd += parseInt(numYears,10); } returnDate.setMonth(month); returnDate.setFullYear(returnDate.getFullYear() + yearsToAdd); returnDate.setTime(returnDate.getTime()+60000*60*24*(parseInt(numDays,10))); return returnDate; } function YearAdd(startDate, numYears) { return DateAdd(startDate,0,0,numYears); } function MonthAdd(startDate, numMonths) { return DateAdd(startDate,0,numMonths,0); } function DayAdd(startDate, numDays) { return DateAdd(startDate,numDays,0,0); } function textCounter(field, maxlimit) { if (field.value.length > maxlimit) // if too long...trim it! field.value = field.value.substring(0, maxlimit); // otherwise, update 'characters left' counter } function dateGreater(obj1,obj2){ //obj1 in MM/dd/yyyy format //obj2 in MM/dd/yyyy format var pattern = /\//; // date must be in month/day/year format var date1 = new Date(obj1); var date2 = new Date(obj2); if(date1 >= date2) { return false; } else { return true; } } function dateGreaterEqual(obj1,obj2){ //obj1 in MM/dd/yyyy format //obj2 in MM/dd/yyyy format var pattern = /\//; // date must be in month/day/year format var date1 = new Date(obj1); var date2 = new Date(obj2); if(date1 > date2) { return false; } else { return true; } } /* * function: validate decimal field */ function validateDecimal(obj, len, frac, min, max) { if (obj.value != "") { if (isNaN(obj.value)) { alert("Value must be decimal."); obj.select(); obj.focus(); return false; } limit = ""; for (i = 0; i < len-frac; i++) { limit = limit + "9"; } if (frac > 0) { limit = limit + "."; for (i = 0; i < frac; i++) { limit = limit + "9"; } } if (isNaN(parseFloat(min, 10))) { min = parseFloat(limit, 10) * -1; minLimit = "-" + limit; } else { minLimit = min; } if (isNaN(parseFloat(max, 10))) { max = parseFloat(limit, 10); maxLimit = limit; } else { maxLimit = max; } if ((parseFloat(obj.value, 10) < min) || (parseFloat(obj.value, 10) > max)) { obj.select(); obj.focus(); alert(formatMessage(errorNotWithinValidRange, minLimit, maxLimit)); return false; } obj.value = formatNumeric(obj.value, frac); } return true; } /* * function: validate key stroke - allow digit or dot char only */ function decimalKey(obj, len, frac, min, max) { var event = window.event; key = event.keyCode; // Do not allow key code other that digit (0-9) and dot char if (!isNumericKey(key) && (key != ".".charCodeAt(0))) { return false; } // Only allow one dot char - decimal point if (key == ".".charCodeAt(0)) { if (obj.value.indexOf(".") >= 0) { return false; } } return true; } function formatNumeric(val, frac) { var decimalPoint = val.indexOf('.'); if (decimalPoint == -1) { intPart = val; decimalPart = ""; } else { intPart = val.substr(0, decimalPoint); decimalPart = val.substr(decimalPoint+1); } if (frac == 0) { return intPart; } // Substract the decimal part based on the input fraction if (decimalPart.length > frac) { decimalPart = decimalPart.substr(0, frac); } // Place zero as decimal points for (var i = decimalPart.length; i < frac; i++) { decimalPart = decimalPart + "0"; } return intPart + "." + decimalPart; } /* * function: validate integer field */ function validateInteger(obj, len) { if (obj.value != "") { limit = ""; for (i = 0; i < len; i++) { limit = limit + "9"; } var p = new Number(obj.value); if (isNaN(p)) { alert("Value must be integer"); obj.select(); obj.focus(); return false; } obj.value = formatNumeric(obj.value, 0); } return true; } function integerKey(obj, min, max, len) { var event = window.event; key = event.keyCode; if (!isNumericKey(key)) { return false; } return true; } /* * function: validate alphabet field */ function validateAlpha(obj) { var newstr = obj.value; var ch = ""; for (var i=0; i < newstr.length; i++) { ch = newstr.substring(i, i+1); if ((ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z") || (ch == " ")) { continue; } else { alert("Value must be alphabet"); obj.value = ""; obj.select(); obj.focus(); return false; } } return true; } /* * key code alphabet key */ function alphaKey(event) { //var event = window.event; var key = 0; key = event.keyCode; if (!isAlphaKey(key)) { return false; } return true; } /* check max characters and special char for text area * */ // test by alvin function validateTextarea(field, max) { if (field.value.length > max){ var errorExceedMax = "Input cannot be more than {0} characters."; alert(formatMessage(errorExceedMax, max)) field.value = field.value.substring(0, max); return false; } else { //if (!findEmailAddresses(field, max)) // return false; } messageCount.innerText = field.value.length; return true; } // find email address function findEmailAddresses(field) { var separateEmailsBy = ", "; var emailsArray = field.value.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); if (emailsArray) { email = ""; for (var i = 0; i < emailsArray.length; i++) { if (i != 0) email += separateEmailsBy; email += emailsArray[i]; alert("Please do NOT include email address inside the content (" + email + ")"); field.focus(); return false; } } return true; } // end by alvin /* check max characters for text area * */ /* * function: validate if key code is digit * 20050919wkc change char to char1 since char is a reserved word */ function isNumericKey(char1) { return (char1 >= "0".charCodeAt(0)) && (char1 <= "9".charCodeAt(0)); } /* * function: validate if key code is alphabets * 20050919wkc change char to char1 since char is a reserved word */ function isAlphaKey(char1) { return (char1 > 64 && char1 < 91) || (char1 > 96 && char1 < 123) || char1 == 8 || char1 == 32; } function formatMessage(msg) { formatMsg = msg; for (i = 1; i < arguments.length; i++) { pattern = "\\{" + (i-1) + "\\}"; formatMsg = formatMsg.replace(new RegExp(pattern), arguments[i]); } return formatMsg; } /*validate state * *if drop down state list select other then other state text field must have value * *created by catherine */ function validateState(state, otherState) { if (state.value == "") { alert("Please select state"); state.focus(); return false; } else if (state.value == "Other" && otherState.value == "") { alert("Please enter other state"); otherState.focus(); return false; } return true; } function checkSpecialCharContacts(field, label) { for (var i=0; i < field.value.length; i++) { var ch = field.value.substring(i, i+1); if ((ch >= "0" && ch <= "9") || (ch == "-")) { continue; } else { alert("Invalid characters found in " + label+ "\r\rList of characters allowed:\rNumbers\r-"); field.select(); field.focus(); return false; } } return true; } /*check min char for input field * *created by chooimey */ function validateMaxChar(field, max, delimiter) { if(!isEmpty(field.value)) { field.value = field.value.trim(); if(delimiter != "") { arrayOfStrings = field.value.split(delimiter); for (var i=0; i < arrayOfStrings.length; i++) { if(arrayOfStrings[i].length < max) { alert("Input require at least " + max + " character(s)"); field.select(); field.focus(); return false; } } } else { if(field.value.length < max) { alert("Input require at least " + max + " character(s)"); field.select(); field.focus(); return false; } } } return true; } function dropDownMenuValidation(field, error) { if(field.selectedIndex ==0){ alert(error+" is required"); field.focus(); return false; } return true; } /*ignore enter key when user press enter key * *created by chooimey */ function checkEnter(event) { var code = 0; code = event.keyCode; if (code==13) return false; } //to trim the front and end blank space String.prototype.trim = function() { return( this.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') ); } function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } /* * This is the function that actually highlights a text string by * adding HTML tags before and after all occurrences of the search * term. You can pass your own tags if you'd like, or if the * highlightStartTag or highlightEndTag parameters are omitted or * are empty strings then the default tags will be used. */ function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) { // the highlightStartTag and highlightEndTag parameters are optional if ((!highlightStartTag) || (!highlightEndTag)) { highlightStartTag = ""; highlightEndTag = ""; } // find all occurences of the search term in the given text, // and add some "highlight" tags to them (we're not using a // regular expression search, because we want to filter out // matches that occur within HTML tags and script blocks, so // we have to do a little extra validation) var newText = ""; var i = -1; var lcSearchTerm = searchTerm.toLowerCase(); var lcBodyText = bodyText.toLowerCase(); while (bodyText.length > 0) { i = lcBodyText.indexOf(lcSearchTerm, i+1); if (i < 0) { newText += bodyText; bodyText = ""; } else { // skip anything inside an HTML tag if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) { // skip anything inside a