/**
* 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