function __ValidateField (e, value, validationType) { //--- Provides general field validation for Ensight forms var allLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var allNumbers = "1234567890"; var isIgnore = false; var isNumber = false; var isLetter = false; var isDecimalNumber = false; var key = (e.keyCode ? e.keyCode : e.which); switch (key) { case 8: //--- back-space case 9: //--- tab key case 13: //--- enter key case 35: //--- home case 36: //--- end case 37: //--- left arrow case 38: //--- arrow up case 39: //--- right arrow case 38: //--- arrow down case 46: //--- delete isIgnore = true; break; default: isNumber = ((allNumbers.indexOf (String.fromCharCode (key)) != -1) || (key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && (!e.shiftKey); isLetter = ((allLetters.indexOf (String.fromCharCode (key)) != -1) || (key == 32) || (key == 222)); isDecimalNumber = ((allNumbers.indexOf (String.fromCharCode (key)) != -1) || (key == 190)); break; } switch (validationType) { case '1': //--- Numbers only if ((isIgnore) || (isNumber)) { return true; } else { if (e.preventDefault) { e.preventDefault (); } else { e.returnValue = false; } } break; case '2': //--- Decimal numbers only if ((isIgnore) || (isDecimalNumber)) { return true; } else { if (e.preventDefault) { e.preventDefault (); } else { e.returnValue = false; } } break; case '3': //--- Letters only if ((isIgnore) || (isLetter)) { return true; } else { if (e.preventDefault) { e.preventDefault (); } else { e.returnValue = false; } } break; case '4': //--- Numbers and letters only if ((isIgnore) || (isNumber) || (isLetter)) { return true; } else { if (e.preventDefault) { e.preventDefault (); } else { e.returnValue = false; } } break; } } function __ValidateForm (whichForm) { //--- Validates the form itself, ensures all mandatory fields are submitted and that email and mobile entries are valid var eExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/; var mExp = /^[+0-9]{10,14}$/; for (i = 0; i < whichForm.length; i++) { if ((whichForm.elements[i].type == 'hidden') && (whichForm.elements[i].name.substr (0, 8) == 'Validate')) { ElementToLocate = 'Form' + whichForm.elements[i].name.substr (8, whichForm.elements[i].name.length - 8); ValidateMessage = whichForm.elements[i].value.split ('|'); if ((!whichForm.elements[ElementToLocate]) || (whichForm.elements[ElementToLocate].disabled == true)) { continue; } isValid = false; switch (whichForm.elements[ElementToLocate].type) { case 'text': case 'email': case 'tel': isValid = whichForm.elements[ElementToLocate].value != ''; ValidateSize = ValidateMessage[2].split (','); if ((ValidateSize[1]) && (parseInt (ValidateSize[1]) > 0) && (whichForm.elements[ElementToLocate].value) && (whichForm.elements[ElementToLocate].value.length > parseInt (ValidateSize[1]))) { alert ('Please enter a value with maximum ' + parseInt (ValidateSize[1]) + ' character(s)'); whichForm.elements[ElementToLocate].focus (); return false; } if ((ValidateSize[2]) && (parseInt (ValidateSize[2]) > 0) && (whichForm.elements[ElementToLocate].value) && (whichForm.elements[ElementToLocate].value.length < parseInt (ValidateSize[2]))) { alert ('Please enter a value with minimum ' + parseInt (ValidateSize[2]) + ' character(s)'); whichForm.elements[ElementToLocate].focus (); return false; } break; case 'password': isValid = whichForm.elements[ElementToLocate].value != ''; ValidateSize = ValidateMessage[2].split (','); if ((ValidateSize[1]) && (parseInt (ValidateSize[1]) > 0) && (whichForm.elements[ElementToLocate].value) && (whichForm.elements[ElementToLocate].value.length > parseInt (ValidateSize[1]))) { alert ('Please enter a value with maximum ' + parseInt (ValidateSize[1]) + ' character(s)'); whichForm.elements[ElementToLocate].focus (); return false; } if ((ValidateSize[2]) && (parseInt (ValidateSize[2]) > 0) && (whichForm.elements[ElementToLocate].value) && (whichForm.elements[ElementToLocate].value.length < parseInt (ValidateSize[2]))) { alert ('Please enter a value with minimum ' + parseInt (ValidateSize[2]) + ' character(s)'); whichForm.elements[ElementToLocate].focus (); return false; } break; case 'textarea': isValid = whichForm.elements[ElementToLocate].value != ''; break; case 'hidden': isValid = whichForm.elements[ElementToLocate].value != ''; break; // test for date fields case 'file': isValid = whichForm.elements[ElementToLocate].value != ''; break; case 'checkbox': isValid = whichForm.elements[ElementToLocate].checked == true; break; case 'select-one': isValid = whichForm.elements[ElementToLocate].options[whichForm.elements[ElementToLocate].selectedIndex].value != ''; break; case 'radio': case 'select-multiple': default: if (whichForm.elements[ElementToLocate].length) { for (j = 0; j < whichForm.elements[ElementToLocate].length; j++) { if (whichForm.elements[ElementToLocate][j].checked) { isValid = true; } } } break; } if ((!isValid) && (ValidateMessage[1])) { alert (ValidateMessage[1]); if (whichForm.elements[ElementToLocate].type != 'hidden') { try { whichForm.elements[ElementToLocate].focus (); } catch (e) { } } return false; } //--- If we make it past the first test, look for additional checks switch (ValidateMessage[0]) { case '5': //--- Email address check if ((whichForm.elements[ElementToLocate].value) && (!whichForm.elements[ElementToLocate].value.match (eExp))) { alert ('The email address format is incorrect.'); whichForm.elements[ElementToLocate].focus (); return false; } break; case '6': //--- Mobile telephone check if ((whichForm.elements[ElementToLocate].value) && (!whichForm.elements[ElementToLocate].value.match (mExp))) { alert ('The mobile number should be numeric, and at least 10 digits long.'); whichForm.elements[ElementToLocate].focus (); return false; } break; } } } if ((whichForm.elements['CAPTCHA']) && (whichForm.elements['CAPTCHA'].value == '')) { alert ('Please enter the 6-letter code displayed on the page.'); whichForm.elements['CAPTCHA'].focus (); return false; } return true; }