function __ValidateField (e, value, validationType) { //--- Provides general field validation for Ensight forms var isIgnore = false; var isNumber = false; var isPeriod = false; var isLetter = false; var key = (e.keyCode ? e.keyCode : e.which); switch (key) { case 8: //--- back-space case 9: //--- tab key case 37: //--- arrow to L case 39: //--- arrow to R isIgnore = true; break; case 46: //--- full-stop isPeriod = true; break; case 48: //--- 0 case 49: //--- 1 case 50: //--- 2 case 51: //--- 3 case 52: //--- 4 case 53: //--- 5 case 54: //--- 6 case 55: //--- 7 case 56: //--- 8 case 57: //--- 9 isNumber = true; break; default: if (((key >= 65) && (key <= 90)) || ((key >= 97) && (key <= 122))) { isLetter = true; } 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) || (isNumber) || ((isPeriod) && (value.indexOf ('.') == -1))) { 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 ('|'); isValid = false; switch (whichForm.elements[ElementToLocate].type) { case 'text': isValid = whichForm.elements[ElementToLocate].value != ''; break; case 'password': isValid = whichForm.elements[ElementToLocate].value != ''; 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 'select-one': isValid = whichForm.elements[ElementToLocate].options[whichForm.elements[ElementToLocate].selectedIndex].value != ''; break; case 'radio': for (j = 0; j < whichForm.elements[ElementToLocate].length; j++) { if (whichForm.elements[ElementToLocate][j].checked) { isValid = true; } } break; case 'select-multiple': for (j = 0; j < whichForm.elements[ElementToLocate].length; j++) { if (whichForm.elements[ElementToLocate][j].selected) { isValid = true; } } break; } if ((!isValid) && (ValidateMessage[1])) { alert (ValidateMessage[1]); if (whichForm.elements[ElementToLocate].type != 'hidden') { whichForm.elements[ElementToLocate].focus (); } 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; } } } return true; }