	function getObject(objectName) {
		var obj = null;
		if (document.getElementById) {
			obj = document.getElementById(objectName);
		}
		else if (document.all) {
			obj = document.all[objectName];
		}
		else if (document.layers) {
			obj = document.layers[objectName];
		}
		return obj;
	}
	function rotateVisibility(objectName, objectNamesToHide) {
		if (objectNamesToHide != null && objectNamesToHide != "") {
			objectNamesToHideArr = objectNamesToHide.split(" ");
			for (i = 0; i<objectNamesToHideArr.length; i++) {
				obj	= getObject(objectNamesToHideArr[i]);
				if (obj != null) {
					obj.style.display = "none";
				}
	
			}
		}
		obj = getObject(objectName);		
		if (obj != null) {
			if (obj.style.display != "block") {
				obj.style.display = "block";
			} else {
				obj.style.display = "none";
			}
			return true;
		} else {
			return false;	
		}
	}
	function isArray(testObject) {
		if (testObject instanceof Array) {
			return true;	
		} else {
			return false;	
		}
	}
	function optionalParameter(optionVar, defaultValue) {
		if (typeof optionVar == "undefined") {
			optionVar = defaultValue;
		
		}
		return optionVar;
	}
	function decInputField(objectName, minNumber) {
		var o = getObject(objectName);
		var v = null;
		var i = 0;
		minNumber = optionalParameter(minNumber, 1);
		if (o != null) {
			v = o.value;
			if (v == "" || v == null) { v = "0"; }
			i = parseInt(v);
			i--;
			if (i < minNumber) { i = minNumber; }
			o.value = i;
		}
	}
	function incInputField(objectName, maxNumber) {
		var o = getObject(objectName);
		var v = null;		
		var i = 0;
		maxNumber = optionalParameter(maxNumber, 255);	
		if (o != null) {
			v = o.value;
			if (v == "" || v == null) { v = "0"; }
			i = parseInt(v);	
			i++;
			if (i > maxNumber) { i = maxNumber; }
			o.value = i;
		}
	}
	function numericInputFieldKeyDown(obj, e) {
		if((e.keyCode == 189 || e.keyCode == 109) || (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105) || (e.keyCode == 46) || (e.keyCode == 8) || (e.keyCode == 36) || (e.keyCode == 35) || (e.keyCode == 45) || (e.keyCode == 33) || (e.keyCode == 34) || (e.keyCode == 37) || (e.keyCode == 39)) {
			return true;
		} else {
			return false;
		}
	}
	function submitForm(formName) {
		var f = null;
		f = getObject(formName);
		if (f != null) {
			if (f.submit) {
				f.submit();
			}
		}
	}
	function trim(stringToTrim) {
		return stringToTrim.replace(/^\s+|\s+$/g,"");
	}
	function ltrim(stringToTrim) {
		return stringToTrim.replace(/^\s+/,"");
	}
	function rtrim(stringToTrim) {
		return stringToTrim.replace(/\s+$/,"");
	}
	function isEmail(emailAddr) {
		return (emailAddr.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1);
	}
	function redirectToURL(link) {
		window.location.href = link;
	}
	function redirectToURLTimeout(link, seconds) {
		var t = setTimeout("redirectToURL(\"" + link + "\");", seconds * 1000);
	}	
	function uncheckRadioButtons(objectNameList) {
		var objectNameArr = Array();
		var objectNameList2 = null;
		var obj;
		objectNameList2 = trim(objectNameList);
		objectNameArr = objectNameList2.split(" ");		
		for (i=0; i<objectNameArr.length; i++) {
			if (objectNameArr[i] != null && objectNameArr != "") {
				obj = getObject(objectNameArr[i]);
				if (obj != null) {
					if (obj.checked) { obj.checked = false; }	
				}
			}
		}
	}
	function warningProcessorArraySetup(objectArray, valueArray, warningMessageArray, checkTypeArray, checkType, fieldName, warningMessage) {
		var obj = null;
		var positionObjectArray, positionValueArray, positionCheckTypeArray, positionWarningMessageArray;
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;

		if (isArray(fieldName)) {
			obj = fieldName;
		} else {
			obj = getObject(fieldName);
		}
		if (obj != null) {
			if (objectArray == null) { objectArray = Array(); }
			if (valueArray == null) { valueArray = Array(); }
			if (warningMessageArray == null) { warningMessageArray = Array(); }
			if (checkTypeArray == null) { checkTypeArray = Array(); }
			
			positionObjectArray = objectArray.length;
			positionValueArray = valueArray.length;
			positionCheckTypeArray = checkTypeArray.length;
			positionWarningMessageArray = warningMessageArray.length;
			
			objectArray[positionObjectArray] = obj;
			checkTypeArray[positionCheckTypeArray] = checkType;
			warningMessageArray[positionWarningMessageArray] = warningMessage;
			valueArray[positionValueArray] = obj.value;	
		}
	}
	function warningProcessor(objectArray, valueArray, warningMessageArray, checkTypeArray, warningMessage) {
		var i = null;
		var j = null;
		var p = null;
		var pass = Array();
		var o = null;
		var elementWarn = null;
		var focusSet = false;
	
		var errors = Array();
		var errorMessage = null;
		
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		var CHECK_MORE_THAN_ZERO = 5;
		
		if (objectArray == null || valueArray == null || checkTypeArray == null || warningMessageArray == null) { return true; }
		if (objectArray.length != valueArray.length || objectArray.length != warningMessageArray.length) { return true; }
		for (i=0; i<objectArray.length; i++) {
			elementWarn = false;
			if (checkTypeArray[i] == CHECK_EMAIL_VALID) {
				if (!isEmail(valueArray[i])) {
					elementWarn = true;
				}
			} else if (checkTypeArray[i] == CHECK_NOT_EMPTY) {
				if (valueArray[i] == null || valueArray[i] == "") {
					elementWarn = true;
				}
			} else if (checkTypeArray[i] == CHECK_MORE_THAN_ZERO) {
				if (valueArray[i] == null || valueArray[i] == "") {
					elementWarn = true;
				} else {
					var x = parseInt(valueArray[i]);
					if (x == null || x == "" || x <= 0) {
						elementWarn = true;						
					}
				}
			} else if (checkTypeArray[i] == CHECK_PASSWORD_MATCHES) {
				for (p=0; p<objectArray[i].length; p++) {
					o = getObject(objectArray[i][p]);
					if (o != null) {
						pass[pass.length] = o.value;
					}
				}
				for (p=0; p<pass.length; p++) {
					if (p+1 < pass.length) {
						if (pass[p] != pass[p+1]) {
							elementWarn = true;
							break;
						}
					}
				}
				
			} else if (checkTypeArray[i] == CHECK_PASSWORD_SECURITY) {
				
			}
			
			if (elementWarn) {
				errors[errors.length] = i;
				if (!isArray(objectArray[i])) {
					objectArray[i].style.backgroundColor = "#FF6666";
	
					if (!focusSet) {	
						objectArray[i].focus();
						focusSet = true;
					}
				} else {
					for (p=0; p<objectArray[i]; p++) {
						o = getObject(objectArray[i][p]);
						if (!isArray(o)) {
							o.style.backgroundColor = "#FF6666";
							if (!focusSet) {	
								o.focus();
								focusSet = true;
							}							
						}
					}
				}
			} else {
				if (!isArray(objectArray[i])) {
					if (objectArray[i].style.backgroundColor != null && objectArray[i].style.backgroundColor != "") {
						objectArray[i].style.backgroundColor = "";
					}
				}
			}
		}
		
		if (errors.length > 0) {
			if (warningMessage != null && warningMessage != "") {
				errorMessage = warningMessage + "\r\n";
			}
			for (j=0; j<errors.length; j++) {
				if (warningMessageArray[errors[j]] != null && warningMessageArray[errors[j]] != "") {
					errorMessage += warningMessageArray[errors[j]] + "\r\n";
				}
			}
			if (errorMessage != null && errorMessage != "") {
				alert(errorMessage);
			}
			return false;
		} else {
			return true;	
		}
	}
	
	function subscription2FormValidation() {
		var objArr = Array();
		var valArr = Array();
		var checkArr = Array();
		var warnArr = Array();
		var result = null;		
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		var CHECK_MORE_THAN_ZERO = 5;		
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_EMAIL_VALID, "email", "- a valid email address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "first_name", "- your billing first name");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "last_name", "- your billing last name");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "address1", "- the first line of your billing address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "city", "- the city of your billing address");
		//warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "state", "- the state or country of your billing address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "zip", "- the zip or postal code of your billing address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "country", "- the country of your billing address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "delivery_first_name", "- your delivery first name");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "delivery_last_name", "- your delivery last name");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "delivery_address1", "- the first line of your delivery address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "delivery_city", "- the city of your delivery address");
		//warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "delivery_state", "- the state of county of your delivery address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "delivery_zip", "- the zip or postal code of your delivery address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "delivery_country", "- the country of your delivery address");
		result = warningProcessor(objArr, valArr, warnArr, checkArr, "Please specify...");
		return result;		
	}
	
	function subscription1FormValidation(objectNameList) {
		var objArr = Array();
		var valArr = Array();
		var checkArr = Array();
		var warnArr = Array();
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		var CHECK_MORE_THAN_ZERO = 5;
		var objectNameArr = Array();
		var objectNameList2 = "";
		var obj = null;
		var obj2 = null;
		var i = null;
		var objectName = null;
		var result = null;
		
		objectNameList2 = trim(objectNameList);
		objectNameArr = objectNameList2.split(" ");	
		for (i=0; i<objectNameArr.length; i++) {
			objectName = objectNameArr[i];		
			if (objectName != "" && objectName != null) {
				obj = getObject(objectName);
				if (obj != null) {
					if (obj.checked != "" && obj.checked != null && obj.checked != "false" && obj.checked != false) {	
						warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_MORE_THAN_ZERO, objectName.replace("item_id", "item_quantity"), "- the quantity you require");
						result = warningProcessor(objArr, valArr, warnArr, checkArr, "Please specify...");
						if (!result) { return result; }
						return true;
					}
				}
			}
		}
		alert("Please ensure you have selected an item to purchase.");
		return false;
	}
	function searchFormValidation() {
		var o = getObject("SearchInput");
		var objArr = Array();
		var valArr = Array();
		var checkArr = Array();
		var warnArr = Array();
		var result = null;
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		var CHECK_MORE_THAN_ZERO = 5;
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_EMAIL_VALID, "SearchInput", "");
		result = warningProcessor(objArr, valArr, warnArr, checkArr, "");
		return result;				
	}
	function registrationVerificationFormValidation() {
		var objArr = Array();
		var valArr = Array();
		var checkArr = Array();
		var warnArr = Array();
		var result = null;
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		var CHECK_MORE_THAN_ZERO = 5;
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "n", "- your registered username");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_EMAIL_VALID, "u", "- your registered email address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "c", "- the verification code which we sent to your registered email address");		
		result = warningProcessor(objArr, valArr, warnArr, checkArr, "Please specify");
		return result;		
	}
	function registrationVerificationEmailFormValidation() {
		var objArr = Array();
		var valArr = Array();
		var checkArr = Array();
		var warnArr = Array();
		var result = null;
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "registrationVerificationEmailUsername", "- your registered username");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_EMAIL_VALID, "registrationVerificationEmailEmailAddress", "- your registered email address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "registrationVerificationEmailPassword", "- password");		
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "registrationVerificationEmailPassword2", "- retype password");				
		result = warningProcessor(objArr, valArr, warnArr, checkArr, "Please specify");
		return result;		
	}
	function registrationFormValidation() {
		var objArr = Array();
		var valArr = Array();
		var checkArr = Array();
		var warnArr = Array();	
		var result = null;
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "userRegistrationUsername", "- username");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_EMAIL_VALID, "userRegistrationEmailAddress", "- a valid email address");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "userRegistrationPassword", "- password");		
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "userRegistrationPassword2", "- retype password");				
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_PASSWORD_MATCHES, Array("userRegistrationPassword", "userRegistrationPassword2"), "- a password that matches!");
		result = warningProcessor(objArr, valArr, warnArr, checkArr, "Please specify");
		if (result) {
			// warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_PASSWORD_SECURITY, "userRegistrationPassword", "- a stronger password!");
			// result = warningProcessor(objArr, valArr, warnArr, checkArr, "Please specify");
			// CHECK PASSWORD MATCHES and LENGTH > 6
		}
		return result;		
	}
	function loginFormValidation() {
		var objArr = Array();
		var valArr = Array();
		var checkArr = Array();
		var warnArr = Array();	
		var result = null;
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "userLoginUsername", "- a valid username");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "userLoginPassword", "- a valid password");
		result = warningProcessor(objArr, valArr, warnArr, checkArr, "Please specify");
		return result;		
	}
	function loginFormValidationB() {
		var objArr = Array();
		var valArr = Array();
		var checkArr = Array();
		var warnArr = Array();
		var result = null;
		var CHECK_NOT_EMPTY = 1;
		var CHECK_EMAIL_VALID = 2;
		var CHECK_PASSWORD_MATCHES = 3;
		var CHECK_PASSWORD_SECURITY = 4;
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "userLoginUsernameB", "- a valid username");
		warningProcessorArraySetup(objArr, valArr, warnArr, checkArr, CHECK_NOT_EMPTY, "userLoginPasswordB", "- a valid password");
		result = warningProcessor(objArr, valArr, warnArr, checkArr, "Please specify");
		return result;		
	}
	function copyInputField(srcName, destName) {
		var src = null;
		var dest = null;
		src = getObject(srcName);
		dest = getObject(destName);
		if (src != null && dest != null) {
			dest.value = src.value;
		}
	}
	function copyBillingAddressToShippingAddress() {
		copyInputField("first_name", "delivery_first_name");	
		copyInputField("last_name", "delivery_last_name");	
		copyInputField("address1", "delivery_address1");	
		copyInputField("address2", "delivery_address2");	
		copyInputField("city", "delivery_city");	
		copyInputField("state", "delivery_state");	
		copyInputField("zip", "delivery_zip");	
		copyInputField("country", "delivery_country");	
		copyInputField("day_phone_a", "delivery_day_phone_a");	
		copyInputField("day_phone_b", "delivery_day_phone_b");	
		copyInputField("night_phone_a", "delivery_night_phone_a");		
	}