/** * Form validator **/ function keySaltEncrypt(s, key) { s = s.toLowerCase(); var r = s.length - 4; var f = ""; var x = 0; for(var i = 0; i != 4; i++) { f += s.charAt(parseInt((key.charAt(i))-1)); x += (parseInt(f.charCodeAt(i)) - 96); } x = x - r; f = x + f; return f; } /** * NOTE: Uses innerHTML() - would need to be adapted if serving as application/xhtml+xml */ validators = new Array(); validators["Contact"] = "[^ \\n]+"; validators["Position"] = "[^ \\n]+"; validators["phone-business"] = "^[^a-zA-Z]{6,}$" // non-alphabetical validators["Media-Outlets"] = "[^ \\n]+"; validators["user-email"] = "^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z_]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$"; validators["friends-email"] = "^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z_]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$"; validators["fullName"] = "[^ \\n]+"; validators["full-name"] = "[^ \\n]+"; validators["first-name"] = "[^ \\n]+"; validators["surname"] = "[^ \\n]+"; validators["event-name"] = "[^ \\n]+"; validators["event-date"] = "[^ \\n]+"; validators["event-time"] = "[^ \\n]+"; validators["event-venue"] = "[^ \\n]+"; validators["name"] = "[^ \\n]+"; validators["letter"] = "[^ \\n]+"; validators["address"] = "[^ \\n]+"; validators["yourAddress"] = "[^ \\n]+"; validators["street-address"] = "[^\\n]+"; validators["phone"] = "^[^a-zA-Z]{6,}$" // non-alphabetical validators["yourPhone"] = "^[^a-zA-Z]{6,}$" // non-alphabetical validators["ltotelephone"] = "^[^a-zA-Z]{6,}$" // non-alphabetical validators["location"] = "[^ \\n]+"; validators["suburb"] = "[^ \\n]+"; validators["postcode"] = "[^ \\n]+"; validators["yourTown"] = "[^ \\n]+"; validators["comment"] = "[^ \\n]+"; validators["comments"] = "[^ \\n]+"; validators["yourComments"] = "[^ \\n]+"; validators["my-comment"] = "[^ \\n]+"; validators["email"] = "^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z_]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$"; validators["rcptName"] = "[^ \\n]+"; validators["yourName"] = "[^ \\n]+"; validators["yourEmail"] = "^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z_]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$"; validators["rcptEmail"] = "^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z_]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$"; validators["option"] = true; validators["yourState"] = true; /* matchfields for use with passwords.*/ matchfields = new Array(); matchfields["pwd"] = "pwdvalidate"; /* error messages go here */ messages = new Array(); messages["Contact"] = "Please enter a vaild contact name"; messages["Position"] = "Please enter a valid position"; messages["Media-Outlets"] = "Please enter a valid media outlet"; messages["phone-business"] = "Please enter a valid phone number"; messages["user-email"] = "Please enter a valid email address"; messages["friends-email"] = "Please enter a valid email address for your friend"; messages["default"] = "Please check the value of field '1', it does not validate."; // 1 will be replaced by name of form element messages["fullName"] = "Please enter your name"; messages["full-name"] = "Please enter your name"; messages["first-name"] = "Please enter your first name"; messages["surname"] = "Please enter your last name"; messages["event-name"] = "Please enter the name of this event"; messages["event-date"] = "Please enter the date this event occurs"; messages["event-time"] = "Please enter the time this event commences/ends"; messages["event-venue"] = "Please enter the venue/location of this event"; messages["name"] = "Please enter your name"; messages["email"] = "Please enter your (valid) email address"; messages["address"] = "Please enter your street address"; messages["yourAddress"] = "Please enter your street address"; messages["street-address"] = "Please enter your street address"; messages["letter"] = "Please enter your letter to the editor"; messages["phone"] = "Please enter your phone number"; messages["yourPhone"] = "Please enter your phone number"; messages["yourTown"] = "Please enter your suburb/town"; messages["suburb"] = "Please enter your suburb/town"; messages["postcode"] = "Please enter your postcode"; messages["ltotelephone"] = "Please enter your phone number"; messages["location"] = "Please enter your location"; messages["comment"] = "Please enter your comments"; messages["comments"] = "Please enter your comments"; messages["yourComments"] = "Please enter your comments"; messages["my-comment"] = "Please enter your comments"; messages["rcptName"] = "Please enter a name for recipient"; messages["rcptEmail"] = "Please enter valid email address for recipient"; messages["yourName"] = "Please enter a name for sender"; messages["yourEmail"] = "Please enter a valid email address for sender"; messages["option"] = "Please select an option"; /* Called on form submit */ function validate(form) { var out = ""; for (var i=0; i 0) out += "
"; out += ((messages[element.name])?messages[element.name]:messages["default"]).replace(/\1/g, element.name); element.className += " error-highlight"; element.onfocus = function() { this.className = this.className.replace("error-highlight", ""); } } else { if((element.className != "") && (element.className != "undefined") && (element.className != null)) { element.className = element.className.replace("error-highlight", ""); } } } if(document.getElementById("comment")) { if(!(assertCharLimit(document.getElementById("comment")))) { return false; document.getElementById("comment").className += " error-highlight"; document.getElementById("comment").onfocus = function() { document.getElementById("comment").className = document.getElementById("comment").className.replace("error-highlight", ""); } } } if (out.length > 0) { if(typeof(singleErrorMessage) != "undefined") { out = singleErrorMessage; } if(!(document.getElementById("single-error"))) { var errorAlert = document.createElement("p"); errorAlert.className = "error"; errorAlert.id = "single-error"; } else { var errorAlert = document.getElementById("single-error"); errorAlert.innerHTML = ""; } //var errorAlertText = document.createTextNode(out); //errorAlert.appendChild(errorAlertText); errorAlert.innerHTML = out; formFieldset = form.getElementsByTagName("fieldset")[0]; if(formFieldset) { formErrorLegend = formFieldset.getElementsByTagName("legend")[0]; if(formErrorLegend) { if((formFieldset.className).indexOf("error-parent") >= 0 ) { formErrorLegend.innerHTML = out; formErrorLegend.id = "single-error"; formErrorLegend.className += " error"; } } else if((formFieldset.className).indexOf("error-parent") >= 0 ) { formFieldset.insertBefore(errorAlert, formFieldset.firstChild); } else { form.insertBefore(errorAlert, form.firstChild); } } else { form.insertBefore(errorAlert, form.firstChild); } return false; } else return true; } function validateRadio(element, theForm) { var elements = theForm.getElementsByTagName("input"); if(validators[element.name]) { var redundant = false; var firstEncounter = -1; for (var i=0; i= 0) { inputToValidate = document.getElementById(keySaltEncrypt(element.name, document.getElementById("form-num").value)); } if (validators[element.name]) { switch (typeof validators[element.name]) { case "string":var re = new RegExp(validators[element.name]); // use the value from the salted input to validate return re.test(inputToValidate.value); case "function": return validators[element.name](element); } return true; } else return true; } function validateCheckbox(element) { if (validators[element.name]) { switch (typeof validators[element.name]) { case "string": return (element.checked); case "function": return validators[element.name](element); } return true; } else return true; } function validateSelect(element) { if (validators[element.name]) { switch (typeof validators[element.name]) { case "string": return (element.value.length > 0); case "function": return validators[element.name](element); } return true; } else return true; } function validateSelectOne(element) { if (validators[element.name]) { switch (typeof validators[element.name]) { case "string": return (element.value.length > 0); case "function": return validators[element.name](element); } return true; } else return true; } function validateSelectMultiple(element) { if (validators[element.name]) { switch (typeof validators[element.name]) { case "string": return (element.value.length > 0); case "function": return validators[element.name](element); } return true; } else return true; } function validatePassword(element) { if (matchfields[element.name]) { return (element.value==element.form.elements[matchfields[element.name]].value); } else return true; } function assertCharLimit(caller) { if(caller.className.indexOf("char-limit") < 0) { return true; } if (caller.value.length > 1200) { if(!(document.getElementById("single-error"))) { var errorAlert = document.createElement("p"); errorAlert.className = "error"; errorAlert.id = "single-error"; } else { var errorAlert = document.getElementById("single-error"); errorAlert.innerHTML = ""; } errorAlert.innerHTML += "Unable to submit your comment as it exceeds the character limit of 1200 characters. If you need to send a longer message, please send us an email at "; if(document.getElementById("story-your-say")) { parentForm = document.getElementById("story-your-say"); } else { nd = caller; while(nd.parentNode) { nd = nd.parentNode; if(nd.nodeName === "FORM") { parentForm = nd; break; } } } parentForm.insertBefore(errorAlert, parentForm.firstChild); return false; } else { return true; } } function pollValidate(pollForm) { var option = selectedValue(pollForm.option); var formAction = pollForm.getAttribute("action"); if(formAction.indexOf("#") === 0) { formAction = formAction.replace("#", ""); var ky = "6"; pollForm.setAttribute("action", getFormLocation(formAction, ky)); } var addr = pollForm.getAttribute("action") + "?option="+option; if(validate(pollForm)) { popUp("nipoll", addr); } return false; } function getFormLocation(str, pwd) { var postLocation = str; str = str.split(",")[2]; if(str == null || str.length < 8) { return; } if(pwd == null || pwd.length <= 0) { return; } var prand = ""; for(var i=0; i 10) { prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString(); } prand = (mult * prand + incr) % modu; var enc_chr = ""; var enc_str = ""; for(var i=0; i