	// Copyright Ian Grant 2003/2004, unless otherwise specified 

// checks whether cookies are enabled
function checkCookies() {
	// try setting a cookie
	cookiestring = "test=1;";
	document.cookie = cookiestring;
	
	// find out if it was set
	if (! document.cookie) {
		alert('To be able to add items to your shopping basket,\nyour browser must be configured to accept cookies.');
		return false;
	} else {
		return true;
	}
}
	
// runs a check on a form that's been used for reordering
function checkReorder(formid) {
	var success;
	success = true;
	var checkstr;
	checkstr = ",";
	
	// in a reordering form, all text elements should be numbers and must be different
	if (document.getElementById(formid).elements.length > 0) {
		for (var i=0;i<document.getElementById(formid).elements.length;i++) {
			// only bother with text fields
			if (document.getElementById(formid).elements[i].type=="text") {
				// must be numbers...
				if (document.getElementById(formid).elements[i].value=="") {
					alert("Fields must not be empty");
					success = false;
				} else if (isNaN(document.getElementById(formid).elements[i].value)) {
					alert("Values must be numbers");
					success = false;
				} else {
					// and they must not be duplicated...
					if (checkstr.indexOf("," + document.getElementById(formid).elements[i].value + ",") >= 0) {
						document.getElementById(formid).elements[i].style.backgroundColor="FFCCCC";
						alert("Values must be different");
						success = false;
					}
					// add the number to the check string, so that we can see if it turns up again
					checkstr = checkstr + document.getElementById(formid).elements[i].value + ",";
				}
			}
		}
	}

	// return the result...
	return success;
}

// runs a check on a standard form 
function checkStandard(formid) {
	var success;
	success = true;
	var value;
	value = "";
	
	if (document.getElementById(formid)) {
		// run through the elements in the form
		for (var i=0;i<document.getElementById(formid).elements.length;i++) {
			// if we have a list of required fields...				
			if (document.getElementById(formid).elements("requiredfields")) {
				// if this field appears in the required list
				if ((document.getElementById(formid).elements("requiredfields").value=="ALL") || (document.getElementById(formid).elements("requiredfields").value.indexOf(document.getElementById(formid).elements[i].name + ",") != -1)) {
					// if it's a text box or a text area....
					if ((document.getElementById(formid).elements[i].type=="text") || (document.getElementById(formid).elements[i].type=="textarea") || (document.getElementById(formid).elements[i].type=="password")) {
						if (document.getElementById(formid).elements[i].value == "") {
							document.getElementById(formid).elements[i].style.backgroundColor="FFCCCC";
							alert("The following field must not be empty: " + document.getElementById(formid).elements[i].name);
							success = false;
						}
					// or if it's a selection list
					} else if ((document.getElementById(formid).elements[i].type=="select-one") || (document.getElementById(formid).elements[i].type=="select-multiple")) {
						if (document.getElementById(formid).elements[i].selectedIndex <= 0) {
							document.getElementById(formid).elements[i].style.backgroundColor="FFCCCC";
							alert("An item must be selected from the following list: " + document.getElementById(formid).elements[i].name);
							success = false;
						}
					}
				}
			}
			
			// if we have a list of numerical fields...				
			if (document.getElementById(formid).elements("numberfields")) {
				// if this field appears in the required list
				if ((document.getElementById(formid).elements("numberfields").value=="ALL") || (document.getElementById(formid).elements("numberfields").value.indexOf(document.getElementById(formid).elements[i].name + ",") != -1)) {
					// if it's a text box or a text area....
					if ((document.getElementById(formid).elements[i].type=="text") || (document.getElementById(formid).elements[i].type=="textarea") || (document.getElementById(formid).elements[i].type=="password")) {
						// not a number
						if (isNaN(document.getElementById(formid).elements[i].value)) {
							document.getElementById(formid).elements[i].style.backgroundColor="FFCCCC";
							alert("The value in the following field must be a number: " + document.getElementById(formid).elements[i].name);
							success = false;
						// field is blank, so make it zero instead
						} else if (document.getElementById(formid).elements[i].value=="") {
							document.getElementById(formid).elements[i].value = 0;
						}
					}
				}
			}

			// if we have a list of integer fields...				
			if (document.getElementById(formid).elements("wholenumberfields")) {
				// if this field appears in the required list
				if ((document.getElementById(formid).elements("wholenumberfields").value=="ALL") || (document.getElementById(formid).elements("wholenumberfields").value.indexOf(document.getElementById(formid).elements[i].name + ",") != -1)) {
					// if it's a text box or a text area....
					if ((document.getElementById(formid).elements[i].type=="text") || (document.getElementById(formid).elements[i].type=="textarea") || (document.getElementById(formid).elements[i].type=="password")) {
						// not a number
						if (document.getElementById(formid).elements[i].value.indexOf(".") >= 0) {
							document.getElementById(formid).elements[i].style.backgroundColor="FFCCCC";
							alert("The value in the following field must be a whole number: " + document.getElementById(formid).elements[i].name);
							success = false;
						}
					}
				}
			}

			// if we have fields that must be equal....
			if (document.getElementById(formid).elements("equalfields")) {
				// if this field appears in the list
				if (document.getElementById(formid).elements("equalfields").value.indexOf(document.getElementById(formid).elements[i].name + ",") != -1) {
					// if it's a text box or a text area....
					if ((document.getElementById(formid).elements[i].type=="text") || (document.getElementById(formid).elements[i].type=="textarea") || (document.getElementById(formid).elements[i].type=="password")) {
						if (value!="") {
							// if the values don't match...
							if (document.getElementById(formid).elements[i].value!=value) {
								document.getElementById(formid).elements[i].style.backgroundColor="FFCCCC";
								alert("The value in the following field is not correct: " + document.getElementById(formid).elements[i].name);
								success = false;
							} 
						} else {
							// store the value that must be matched by the other fields...
							// NOTE that this currently only allows for one match to be checked
							value = document.getElementById(formid).elements[i].value;
						}
					}
				}
			}
		}
	}

	// return the result...
	return success;
}

// runs a check on a payment form 
function checkPayment(formid) {
	if (document.getElementById(formid).elements("Method").value != "Cheque") {
		return checkStandard(formid);
	} else {
		return true;
	}
}
