function validateForders(form) {
var isValid = true,
notBlanks, numericValues, notDefaultDropdowns, emailValues,
groupsToValidate,
i;
notBlanks = [
{field: form.fName, error: "Please enter your name"},
{field: form.address, error: "Please enter your address"},
{field: form.suburb, error: "Please enter your suburb"},
{field: form.postcode, data: {focus: true}, error: "Please enter a valid Post Code"},
{field: form.homeP, data: {focus: true}, error: "Please enter a valid Home phone number"},
{field: form.dStreet, data: {dependsOn: form.Group1[1]}, error: "Please enter your delivery address"},
{field: form.dSuburb, data: {dependsOn: form.Group1[1]}, error: "Please enter your delivery suburb or town"},
{field: form.Dpostcode, data: {dependsOn: form.Group1[1]}, error: "Please enter valid delivery postcode"},
{field: form.message, data: {dependsOn: form.card}, error: "Please enter your personal message in the text area"}
];
numericValues = [
{field: form.postcode, data: {size: 4, focus: true}, error: "Please enter a valid Post Code"},
{field: form.homeP, data: {size: 10, focus: true}, error: "Please enter a valid Home phone number"},
{field: form.workP, data: {size: 10, focus: true}, error: "Please enter a valid Work phone number"},
{field: form.faxP, data: {size: 10, focus: true}, error: "Please enter a valid fax number"},
{field: form.Dpostcode, data: {dependsOn: form.Group1[1], size: 4}, error: "Please enter a valid delivery postcode"}
];
notDefaultDropdowns = [
{field: form.aState, error: "Please select a State"},
{field: form.cCard, error: "Please choose your card type"},
{field: form.emonth, error: "Please select card expiry month"},
{field: form.eyear, error: "Please select card expiry year"},
{field: form.basket, error: "Please make a basket choice"},
/*{field: form.quan, error: "You have chosen 1 basket"},*/
{field: form.dState, data: {dependsOn: form.Group1[1]}, error: "Please select a state for delivery"},
{field: form.Dday, data: {dependsOn: form.Group1[1]}, error: "Please select a date for delivery"},
{field: form.Dmonth, data: {dependsOn: form.Group1[1]}, error: "Please select a month for delivery"},
{field: form.Dyear, data: {dependsOn: form.Group1[1]}, error: "Please select a year for delivery"}
];
emailValues = [
{field: form.eMail, error: "Not a valid e-mail address"}
];
groupsToValidate = [
{group: notBlanks, validator: nBlank},
{group: numericValues, validator: numVal},
{group: notDefaultDropdowns, validator: cDefault},
{group: emailValues, validator: valEmail},
];
for (i = 0; i < groupsToValidate.length; i += 1) {
if (validate(groupsToValidate.group, groupsToValidate.validator) === false) {
valid = false;
break;
}
}
return isValid;
}
function validate(fieldsToCheck, func) {
var field,
data,
error,
i;
for (i = 0; i < fieldsToCheck.length; i += 1) {
field = fieldData[i].field;
data = fieldData[i].data;
error = fieldData[i].error;
if (checkDependency(data.dependsOn) && func(field, error, data) === false) {
alert(error);
if (data.focus === true) {
field.focus();
}
return false;
}
}
}
function checkDependency(field) {
if (field.type === 'checkbox') {
return field.checked;
}
if (field.type === 'radio') {
return field.selected;
}
if (field.type === 'text') {
return (field.value.length > 0 && field.value !== field.defaultValue);
}
}
function nBlank(field) {
return (field.value.length == 0 || field.value == field.defaultValue);
}
function cDefault(field) {
return (field.selectedIndex === 0);
}
function numVal(field, data) {
return (isNum(field.value) || field.value.length != data.size);
}
function valEmail(field) {
var email = field.value
var at = email.indexOf("@");
var dot = email.lastIndexOf(".");
return ((at >= 1 && dot - at >= 2 && str.length - dot >= 2) === false);
}