function validateGiftForm() {
	var f = document.giftForm;
	var error = "";
	
	var totalAmount = vRadioVal(f.ewayTotalAmount);
	if (totalAmount == "") { error += "Please select gift amount\n"; setError("ewayTotalAmount","Required field"); }
	else if (totalAmount == "Other") {
			if (vIsBlank(f.ewayOtherAmount.value)) { error += "Please enter the amount you would like to give\n"; setError("ewayTotalAmount","Required field"); }
			else if (!vIsMoney(f.ewayOtherAmount.value)) { error += "Please enter an amount in dollars and cents\n"; setError("ewayTotalAmount","Invalid amount"); }
			else { setError("ewayTotalAmount",""); }
	} else { setError("ewayTotalAmount",""); }
	
	if(vRadioVal(f.useFor) == '') { error += "Please select where you would like your gift to be assigned to\n"; setError("useFor","Required field"); } else { setError("useFor",""); }
	
	if (vIsBlank(f.ewayCustomerFirstName.value)) { error += "Please enter your First Name\n"; setError("ewayCustomerFirstName","Required field"); } else { setError("ewayCustomerFirstName",""); }
	if (vIsBlank(f.ewayCustomerLastName.value)) { error += "Please enter your Last Name\n"; setError("ewayCustomerLastName","Required field"); } else { setError("ewayCustomerLastName",""); }
	
	if (vIsBlank(f.ewayCustomerEmail.value)) { error += "Please enter your Email Address\n"; setError("ewayCustomerEmail","Required field"); }
	else if (!vIsEmailAddress(f.ewayCustomerEmail.value)) { error += "Please enter a valid Email Address\n"; setError("ewayCustomerEmail","Invalid email address"); }
	else { setError("ewayCustomerEmail",""); }
	
	if (vIsBlank(f.ewayCustomerStreet.value)) { error += "Please enter your Address\n"; setError("ewayCustomerStreet","Required field"); } else { setError("ewayCustomerStreet",""); }
	if (vIsBlank(f.ewayCustomerSuburb.value)) { error += "Please enter your Suburb or Town\n"; setError("ewayCustomerSuburb","Required field"); } else { setError("ewayCustomerSuburb",""); }
	if (vIsBlank(f.ewayCustomerPostcode.value)) { error += "Please enter your Postcode\n"; setError("ewayCustomerPostcode","Required field"); } else { setError("ewayCustomerPostcode",""); }
	if (vSelectedVal(f.ewayCustomerCountry) == '') { error += "Please select your Country\n"; setError("ewayCustomerCountry","Required field"); } else { setError("ewayCustomerCountry",""); }
	
	if (vIsBlank(f.ewayCardNumber.value)) { error += "Please enter your Credit Card Number\n"; setError("ewayCardNumber", "Required field"); }
	else if (!vIsCCNumber(f.ewayCardNumber.value)) { error += "Please enter a valid Credit Card Number\n"; setError("ewayCardNumber", "Invalid Card Number"); }
	else { setError("ewayCardNumber",""); }
	if (vIsBlank(f.ewayCardHoldersName.value)) { error += "Please enter the Name on your Credit Card\n"; setError("ewayCardHoldersName","Required field"); } else { setError("ewayCardHoldersName",""); }
	
	if(error != "") {
		alert(error);
		return false;
	} else {
		$('submit-button').value = 'processing';
		$('submit-button').disabled = true;
		return true;
	}
}

function setError(fieldname,error) {
	$(fieldname+'-error').update(error);
}

function vIsBlank(str) { var re = /^[\s]*$/; return (re.test(str)); }
function vSelectedVal(formField) {
	var val = "";
	if(formField.type == 'select-multiple') {
		for(i=0;i<formField.length;i++) {
			if(formField[i].selected) {
				if(val != "") { val += ",";}
				val += formField[i].value;
			}
		}
	} else {
		val = formField.options[formField.selectedIndex].value;
	}
	return val;
}
function vRadioVal(formField) {
	var val = "";
	if(!formField.length || formField.length == 1) {
		if(formField.checked) { val = formField.value; }
	} else {
		for(i=0;i<formField.length;i++) {
			if(formField[i].checked) { val = formField[i].value; break; }
		}
	}
	return val;
}
function vCheckBoxVals(formField) {
	var val = "";
	if(!formField.length || formField.length == 1) {
		if(formField.checked) { val = formField.value; }
	} else {
		for(i=0;i<formField.length;i++) {
			if(formField[i].checked) {
				if(val != "") { val += ",";}
				val += formField[i].value;
			}
		}
	}
	return val;
}
function vIsEmailAddress(string) {
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/; // valid
	if(reg1.test(string) || !reg2.test(string)) { return false; } else { return true; }
}
function vIsMoney(string) {
	var re = /^[\d]+(\.[\d]{2})?$/;
	if(!re.test(string)) { return false; } else { return true; }
}
function vIsCCNumber(string) {
	var re = /^[\d]{15,16}$/;
	if(!re.test(string)) { return false; } else { return true; }
}
function vIsCCExpiry(string) {
	var re = /^[\d]{2}\/[\d]{2}$/;
	if(!re.test(string)) { return false; } else { return true; }
}
