// Cool Essentials Product Selector and Order Page Scripts
//
// Date: 5th February 2008. Author: M J Knight
//
var netTotal = 0.00;
var orderTotal = 0.00;
var delivery = 0.00;
var deductAmount = 0.00;
var products = new Array("Argan_Beauty_Oil","Moisturising_Lotion","Skin_Silk_Lotion","Skin_Refresher","Cleansing_Gel","Exfoliating_Cleanser","Normal_to_Oily_skin","Normal_to_Dry_skin","Mini_Mir_Set_A","Mini_Mir_Set_B","Argan_Beauty_Oil_x2","Trial_Body_Wash","Trial_Body_Wash_x2","Mir_Extras_Mask");
var productNames = new Array("Argan Beauty Oil","Moisturising Lotion","Skin Silk Lotion","Skin Refresher","Cleansing Gel","Exfoliating Cleanser","Normal to Oily skin","Normal to Dry skin","Trial Pack A","Trial Pack B","Argan Beauty Oil x 2","Trial Body Wash","Trial Body Wash x 2","Pure Rhassoul Powder Mask");
var prices = new Array(17.50,21.50,33.00,19.50,19.50,22.00,93.00,103.50,14.00,16.95,29.50,9.50,16.50,9.50);
var quantities = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0);

function ReadCookie() {
	// Ask the great Cookie Monster for some data and store the results in the quantities array
	if (document.cookie.length > 0) {
		for (i=0; i < products.length; i++) {
		    cookieStart = document.cookie.indexOf(products[i] + "=") + products[i].length + 1;
            cookieEnd = document.cookie.indexOf(";", cookieStart);
            if (cookieEnd == -1) { cookieEnd = document.cookie.length; }
            quantities[i] = parseInt(unescape(document.cookie.substring(cookieStart,cookieEnd)));
		}
	}
    cookieStart = document.cookie.indexOf("deduct_amount=") + 14;
    cookieEnd = document.cookie.indexOf(";", cookieStart);
    if (cookieEnd == -1) { cookieEnd = document.cookie.length; }
    deductAmount = parseFloat(unescape(document.cookie.substring(cookieStart,cookieEnd)));
	if (isNaN(deductAmount)) { deductAmount = 0; }
	for (i=0; i < products.length; i++) {
		if (isNaN(quantities[i])) { quantities[i] = 0; }
	}
}

function WriteCookie() {
	// Updated our data so time to feed the Cookie Monster
	for (i=0; i < products.length; i++) {
		document.cookie = products[i] + "=" + escape(quantities[i]);
	}
	document.cookie = "deduct_amount=" + escape(deductAmount);
}
function ClearOrder() {
	for (i=0; i < products.length; i++) {
		quantities[i] = 0;
	}
	deductAmount = 0;
	WriteCookie();
	BuildOrder();
	document.getElementById("promoCode").value = "";
	document.getElementById("b_title").focus();
}

function AddToOrder(productName) {
	ReadCookie();
	// Update the quantity
	for (i=0; i < products.length; i++) {
		if (productName == products[i]) {
			quantities[i] = quantities[i] + 1;
		}
	}
	WriteCookie();
	// Go to the Order Page
	window.location.href = "order_page.html";
}

function BuildOrder() {
	var orderTotal = 0.00;
	var itemTotal = 0.00;
	var fieldName = "";
	ReadCookie();
	for (i=0; i < products.length; i++) {
		fieldName = "quantity" + i;
		if (quantities[i] == 0) {
			document.getElementById(fieldName).innerHTML = "&nbsp;";
		} else {
			document.getElementById(fieldName).innerHTML = "<B>" + quantities[i] + "</B>";
		}
		itemTotal = parseFloat(prices[i]) * quantities[i];
		orderTotal = orderTotal + itemTotal;
		fieldName = "total" + i;
		if (itemTotal == 0.00) {
		    document.getElementById(fieldName).innerHTML = "&nbsp;";
		} else {
			document.getElementById(fieldName).innerHTML = "<B>&pound;" + itemTotal.toFixed(2) + "</B>";
		}
	}
	document.getElementById("orderTotal").innerHTML = "<B>" + orderTotal.toFixed(2) + "</B>";
	CalculateDelivery();
}
function CalculateDelivery() {
	var delivery = 0;
	var numberItems = 0;
	var numberDoubleItems = 0;
	var numberCompleteItems = 0;
	for (i=0; i < products.length; i++) {
		if (i == 6 || i == 7) {
			numberCompleteItems = numberCompleteItems + quantities[i];
		} else {
			if (i == 10 || i == 12) {
				numberDoubleItems = numberDoubleItems + quantities[i];
			} else {
				numberItems = numberItems + quantities[i];
			}
		}
	}
	if (numberItems > 0) {
		if (document.getElementById("useDeliveryAddress").checked == 1) {
			if (document.getElementById("d_country").value.substring(0,1) == "1") {
				delivery = (2.60 + (0.60 * (numberItems - 1)));
			} else {
				if (document.getElementById("d_country").value.substring(0,1) == "2") {
					delivery = (5.00 + (1.50 * (numberItems - 1)));
				} else {
					if (document.getElementById("d_country").value != "0") {
						delivery = (7.00 + (2.50 * (numberItems - 1)));
					}
				}
			}
		} else {
			if (document.getElementById("b_country").value.substring(0,1) == "1") {
				delivery = (2.60 + (0.60 * (numberItems - 1)));
			} else {
				if (document.getElementById("b_country").value.substring(0,1) == "2") {
					delivery = (5.00 + (1.50 * (numberItems - 1)));
				} else {
					if (document.getElementById("b_country").value != "0") {
						delivery = (7.00 + (2.50 * (numberItems - 1)));
					}
				}
			}
		}
	}
	if (numberCompleteItems > 0) {
		if (document.getElementById("useDeliveryAddress").checked == 1) {
			if (document.getElementById("d_country").value.substring(0,1) == "1") {
				if (delivery == 0) {
					delivery = (5.00 + (0.60 * ((numberCompleteItems - 1) * 5)));
				} else {
					delivery = delivery + (0.60 * (numberCompleteItems  * 5));
				}
			} else {
				if (document.getElementById("d_country").value.substring(0,1) == "2") {
					if (delivery == 0) {
						delivery = (11.00 + (1.50 * ((numberCompleteItems - 1) * 5)));
					} else {
						delivery = delivery + (1.50 * (numberCompleteItems * 5));
					}
				} else {
					if (document.getElementById("d_country").value != "0") {
						if (delivery == 0) {
							delivery = (17.00 + (2.50 * ((numberCompleteItems - 1) * 5)));
						} else {
							delivery = delivery + (2.50 * (numberCompleteItems * 5));
						}
					}
				}
			}
		} else {
			if (document.getElementById("b_country").value.substring(0,1) == "1") {
				if (delivery == 0) {
					delivery = (5.00 + (0.60 * ((numberCompleteItems - 1) * 5)));
				} else {
					delivery = delivery + (0.60 * (numberCompleteItems  * 5));
				}
			} else {
				if (document.getElementById("b_country").value.substring(0,1) == "2") {
					if (delivery == 0) {
						delivery = (11.00 + (1.50 * ((numberCompleteItems - 1) * 5)));
					} else {
						delivery = delivery + (1.50 * (numberCompleteItems * 5));
					}
				} else {
					if (document.getElementById("b_country").value != "0") {
						if (delivery == 0) {
							delivery = (17.00 + (2.50 * ((numberCompleteItems - 1) * 5)));
						} else {
							delivery = delivery + (2.50 * (numberCompleteItems * 5));
						}
					}
				}
			}
		}
	}
	if (numberDoubleItems > 0) {
		if (document.getElementById("useDeliveryAddress").checked == 1) {
			if (document.getElementById("d_country").value.substring(0,1) == "1") {
				if (delivery == 0) {
					delivery = (3.20 + (0.60 * ((numberDoubleItems - 1) * 2)));
				} else {
					delivery = delivery + (0.60 * (numberDoubleItems  * 2));
				}
			} else {
				if (document.getElementById("d_country").value.substring(0,1) == "2") {
					if (delivery == 0) {
						delivery = (6.50 + (1.50 * ((numberDoubleItems - 1) * 2)));
					} else {
						delivery = delivery + (1.50 * (numberDoubleItems * 2));
					}
				} else {
					if (document.getElementById("d_country").value != "0") {
						if (delivery == 0) {
							delivery = (9.50 + (2.50 * ((numberDoubleItems - 1) * 2)));
						} else {
							delivery = delivery + (2.50 * (numberDoubleItems * 2));
						}
					}
				}
			}
		} else {
			if (document.getElementById("b_country").value.substring(0,1) == "1") {
				if (delivery == 0) {
					delivery = (3.20 + (0.60 * ((numberDoubleItems - 1) * 2)));
				} else {
					delivery = delivery + (0.60 * (numberDoubleItems  * 2));
				}
			} else {
				if (document.getElementById("b_country").value.substring(0,1) == "2") {
					if (delivery == 0) {
						delivery = (6.50 + (1.50 * ((numberDoubleItems - 1) * 2)));
					} else {
						delivery = delivery + (1.50 * (numberDoubleItems * 2));
					}
				} else {
					if (document.getElementById("b_country").value != "0") {
						if (delivery == 0) {
							delivery = (9.50 + (2.50 * ((numberDoubleItems - 1) * 2)));
						} else {
							delivery = delivery + (2.50 * (numberDoubleItems * 2));
						}
					}
				}
			}
		}
	}
	document.getElementById("delivery").innerHTML = "<B>" + delivery.toFixed(2) + "</B>";
	CalculateTotal();
}
function CalculateTotal() {
	var voucherAmount = 0.00;
	netTotal = 0.00;
	for (i=0; i < products.length; i++) {
		itemTotal = parseFloat(prices[i]) * quantities[i];
		netTotal = netTotal + itemTotal;
	}
	delivery = parseFloat(document.getElementById("delivery").innerHTML.substr(3, document.getElementById("delivery").innerHTML.length - 7));
	orderTotal = netTotal + delivery - deductAmount;
	document.getElementById("netTotal").innerHTML = "<B>" + netTotal.toFixed(2) + "</B>";
	document.getElementById("orderTotal").innerHTML = "<B>" + orderTotal.toFixed(2) + "</B>";
}
	
function ValidateOrder() {
	var error = 0;
	var total = parseFloat(document.getElementById("orderTotal").innerHTML.substr(3, document.getElementById("orderTotal").innerHTML.length - 7));
	if (total <= 0) {
		error = 1;
		alert("The order total must be greater than zero");
	}
	if (error == 0) {
		if (document.getElementById("agreeTerms").checked != 1) {
			error = 1;
			alert("You must agree to the terms and conditions before placing your order");
		}
	}
	if (error == 0) {
		if (document.getElementById("b_surname").value == "") {
			error = 1;
			alert("Please enter your surname");
			document.getElementById("b_surname").select();
			document.getElementById("b_surname").focus();
		} else {
			if (document.getElementById("b_forename").value == "") {
				error = 1;
				alert("Please enter your forename");
				document.getElementById("b_forename").select();
				document.getElementById("b_forename").focus();
			} else {
				if (document.getElementById("b_address1").value == "") {
					error = 1;
					alert("Please enter your address");
					document.getElementById("b_address1").select();
					document.getElementById("b_address1").focus();
				} else {
					if (document.getElementById("b_town").value == "") {
						error = 1;
						alert("Please enter your town");
						document.getElementById("b_town").select();
						document.getElementById("b_town").focus();
					} else {
						if (document.getElementById("b_postcode").value == "") {
							error = 1;
							alert("Please enter your postcode");
							document.getElementById("b_postcode").select();
							document.getElementById("b_postcode").focus();
						} else {
							if (document.getElementById("b_country").value == "0") {
								error = 1;
								alert("Please enter your country");
								document.getElementById("b_country").focus();
							} else {
								if (document.getElementById("b_email").value == "") {
									error = 1;
									alert("Please enter your email");
									document.getElementById("b_email").focus();
								}
							}	
						}
					}
				}
			}
		}
	}
	if (error == 0) {
		if (document.getElementById("useDeliveryAddress").checked == 1) {
			if (document.getElementById("d_surname").value == "") {
				error = 1;
				alert("Please enter your surname");
				document.getElementById("d_surname").select();
				document.getElementById("d_surname").focus();
			} else {
				if (document.getElementById("d_forename").value == "") {
					error = 1;
					alert("Please enter your forename");
					document.getElementById("d_forename").select();
					document.getElementById("d_forename").focus();
				} else {
					if (document.getElementById("d_address1").value == "") {
						error = 1;
						alert("Please enter your address");
						document.getElementById("d_address1").select();
						document.getElementById("d_address1").focus();
					} else {
						if (document.getElementById("d_town").value == "") {
							error = 1;
							alert("Please enter your town");
							document.getElementById("d_town").select();
							document.getElementById("d_town").focus();
						} else {
							if (document.getElementById("d_postcode").value == "") {
								error = 1;
								alert("Please enter your postcode");
								document.getElementById("d_postcode").select();
								document.getElementById("d_postcode").focus();
							} else {
								if (document.getElementById("d_country").value == "0") {
									error = 1;
									alert("Please enter your country");
									document.getElementById("d_country").focus();
								}
							}
						}
					}
				}
			}
		}
	}
	if (error == 0) {
		var holdCountry = "";
		var billingCountry = "";
		var deliveryCountry = "";
		var deliveryText = "";
		var orderDescription = "";
		var voucherAmount = 0.00;
		var fieldName = "";
		var itemNumber = 0;
		if (document.getElementById("b_country").value != 0) {
			holdCountry = document.getElementById("b_country").value;
			if (holdCountry.length == 2) {
				billingCountry = holdCountry;
			} else {
				billingCountry = holdCountry.substr(1,2);
			}
		}
		if (document.getElementById("d_country").value != 0) {
			holdCountry = document.getElementById("d_country").value;
			if (holdCountry.length == 2) {
				deliveryCountry = holdCountry;
			} else {
				deliveryCountry = holdCountry.substr(1,2);
			}
		}
		var now = new Date();
		document.orderform.cartId.value = now.getTime();
		document.orderform.amount.value = document.getElementById("orderTotal").innerHTML.substr(3, document.getElementById("orderTotal").innerHTML.length - 7);
		// Build the billing name
		document.orderform.name.value = "";
		if (document.getElementById("b_title").value != "") {
			document.orderform.name.value = document.getElementById("b_title").value;
		}
		if (document.getElementById("b_forename").value != "") {
			if (document.orderform.name.value == "") {
				document.orderform.name.value = document.getElementById("b_forename").value;
			} else {
				document.orderform.name.value = document.orderform.name.value + " " + document.getElementById("b_forename").value;
			}
		}
		if (document.getElementById("b_surname").value != "") {
			if (document.orderform.name.value == "") {
				document.orderform.name.value = document.getElementById("b_surname").value;
			} else {
				document.orderform.name.value = document.orderform.name.value + " " + document.getElementById("b_surname").value;
			}
		}
		// Build the billing address
		document.orderform.address.value = "";
		if (document.getElementById("b_address1").value != "") {
			document.orderform.address.value = document.getElementById("b_address1").value;
		}
		if (document.getElementById("b_address2").value != "") {
			if (document.orderform.address.value == "") {
				document.orderform.address.value = document.getElementById("b_address2").value;
			} else {
				document.orderform.address.value = document.orderform.address.value + ", " + document.getElementById("b_address2").value;
			}
		}
		if (document.getElementById("b_town").value != "") {
			if (document.orderform.address.value == "") {
				document.orderform.address.value = document.getElementById("b_town").value;
			} else {
				document.orderform.address.value = document.orderform.address.value + ", " + document.getElementById("b_town").value;
			}
		}
		if (document.getElementById("b_county").value != "") {
			if (document.orderform.address.value == "") {
				document.orderform.address.value = document.getElementById("b_county").value;
			} else {
				document.orderform.address.value = document.orderform.address.value + ", " + document.getElementById("b_county").value;
			}
		}
		// Set other billing items
		document.orderform.postcode.value = document.getElementById("b_postcode").value;
		document.orderform.country.value = billingCountry;
		document.orderform.email.value = document.getElementById("b_email").value;
		document.orderform.tel.value = document.getElementById("b_tel").value;
		document.orderform.M_comments.value = document.getElementById("comments").value;
		document.orderform.M_deliverycharge.value = document.getElementById("delivery").innerHTML.substr(3, document.getElementById("delivery").innerHTML.length - 7);
		// Build delivery name
		document.orderform.delvName.value = "";
		if (document.getElementById("d_title").value != "") {
			document.orderform.delvName.value = document.getElementById("d_title").value;
		}
		if (document.getElementById("d_forename").value != "") {
			if (document.orderform.delvName.value == "") {
				document.orderform.delvName.value = document.getElementById("d_forename").value;
			} else {
				document.orderform.delvName.value = document.orderform.delvName.value + " " + document.getElementById("d_forename").value;
			}
		}
		if (document.getElementById("d_surname").value != "") {
			if (document.orderform.delvName.value == "") {
				document.orderform.delvName.value = document.getElementById("d_surname").value;
			} else {
				document.orderform.delvName.value = document.orderform.delvName.value + " " + document.getElementById("d_surname").value;
			}
		}
		// Build delivery address
		document.orderform.delvAddress.value = "";
		if (document.getElementById("d_address1").value != "") {
			document.orderform.delvAddress.value = document.getElementById("d_address1").value;
		}
		if (document.getElementById("d_address2").value != "") {
			if (document.orderform.delvAddress.value == "") {
				document.orderform.delvAddress.value = document.getElementById("d_address2").value;
			} else {
				document.orderform.delvAddress.value = document.orderform.delvAddress.value + ", " + document.getElementById("d_address2").value;
			}
		}
		if (document.getElementById("d_town").value != "") {
			if (document.orderform.delvAddress.value == "") {
				document.orderform.delvAddress.value = document.getElementById("d_town").value;
			} else {
				document.orderform.delvAddress.value = document.orderform.delvAddress.value + ", " + document.getElementById("d_town").value;
			}
		}
		if (document.getElementById("d_county").value != "") {
			if (document.orderform.delvAddress.value == "") {
				document.orderform.delvAddress.value = document.getElementById("d_county").value;
			} else {
				document.orderform.delvAddress.value = document.orderform.delvAddress.value + ", " + document.getElementById("d_county").value;
			}
		}
		// Other delivery items
		document.orderform.delvPostcode.value = document.getElementById("d_postcode").value;
		document.orderform.delvCountry.value = deliveryCountry;
		if (document.orderform.delvName.value == "") { document.orderform.delvName.value = document.orderform.name.value; }
		if (document.orderform.delvAddress.value == "") { document.orderform.delvAddress.value = document.orderform.address.value; }
		if (document.orderform.delvPostcode.value == "") { document.orderform.delvPostcode.value = document.orderform.postcode.value; }
		if (document.orderform.delvCountry.value == "") { document.orderform.delvCountry.value = document.orderform.country.value; }
		//voucherAmount = parseFloat(document.getElementById("voucherAmount").value);
		for (i=0; i < products.length; i++) {
			if (quantities[i] != 0) {
				if (orderDescription != "") { orderDescription = orderDescription + ", "; }
				orderDescription = orderDescription + quantities[i] + " x " + productNames[i];
				itemNumber++;
				fieldName = "M_order_item_" + itemNumber;
				document.getElementById(fieldName).value = quantities[i] + " x " + productNames[i] + " at " + prices[i].toFixed(2) + " each"
			}
		}
		if (document.getElementById("promoCode").value != "") {
			orderDescription = orderDescription + ". Promotional Code Used: " + document.getElementById("promoCode").value + ", Promotional Amount: " + deductAmount.toFixed(2) + "CR";
		}
		if (delivery != 0) {
			orderDescription = orderDescription + ". Delivery: " + delivery.toFixed(2);
		}
		document.orderform.desc.value = orderDescription;
		//alert(orderDescription);
		//ClearOrder();
		return true;
		//return false;
	} else {
		return false;
	}
}
// **************************************************************** //
// ***                                                          *** //
// *** Deduct Voucher                                           *** //
// ***                                                          *** //
// **************************************************************** //
function validate_date(checkDate) {
         // Check date in DDMYY format
         errorCode = 0;
         days = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
         today = new Date();
         todayDate = ""
		 todayTime = "";
		 voucherDate = "";
         todayDay = today.getDate();
         todayMonth = today.getMonth() + 1;
         todayYear = today.getFullYear();
		 todayHours = today.getHours();
		 todayMinutes = today.getMinutes();
         startYear = todayYear;
         endYear = todayYear + 1;
         // Build newToday as today's date in yyyymmdd format
         todayDate = todayYear;
         if (todayMonth < 10) {
            todayDate = todayDate + "0" + todayMonth;
         } else {
            todayDate = todayDate + "" + todayMonth;
         }
         if (todayDay < 10) {
            todayDate = todayDate + "0" + todayDay;
         } else {
            todayDate = todayDate + "" + todayDay;
         }
         if (todayHours < 10) {
            todayTime = todayTime + "0" + todayHours;
         } else {
            todayTime = todayTime + "" + todayHours;
         }
         if (todayMinutes < 10) {
            todayTime = todayTime + "0" + todayMinutes;
         } else {
            todayTime = todayTime + "" + todayMinutes;
         }

         checkDay = parseInt(checkDate.substring(0,2),10);
         monthLetter = checkDate.substring(2,3);
		 if (monthLetter == "A") { checkMonth = 1; }
		 if (monthLetter == "B") { checkMonth = 2; }
		 if (monthLetter == "C") { checkMonth = 3; }
		 if (monthLetter == "D") { checkMonth = 4; }
		 if (monthLetter == "E") { checkMonth = 5; }
		 if (monthLetter == "F") { checkMonth = 6; }
		 if (monthLetter == "G") { checkMonth = 7; }
		 if (monthLetter == "H") { checkMonth = 8; }
		 if (monthLetter == "I") { checkMonth = 9; }
		 if (monthLetter == "J") { checkMonth = 10; }
		 if (monthLetter == "K") { checkMonth = 11; }
		 if (monthLetter == "L") { checkMonth = 12; }
         checkYear = parseInt(checkDate.substring(3,5),10) + 2000;
         // Check for leap year
         febCheck1 = parseInt((checkYear / 4),10);
       	 febCheck2 = febCheck1 * 4;
       	 if (febCheck2 == checkYear) {
       	    days[1] = 29;
       	 }
         if ((checkDay < 1) || (checkDay > days[checkMonth])) {
         	errorCode = 1;
       	 }
		 if (errorCode == 0) {
			 voucherDate = checkYear;
	         if (checkMonth < 10) {
    	        voucherDate = voucherDate + "0" + checkMonth;
        	 } else {
	            voucherDate = voucherDate + "" + checkMonth;
    	     }
        	 if (checkDay < 10) {
            	voucherDate = voucherDate + "0" + checkDay;
	         } else {
    	        voucherDate = voucherDate + "" + checkDay;
        	 }
			 if ((voucherDate < todayDate) || (voucherDate == todayDate && todayTime > "0010")) {
				 errorCode = 2;
			 }
		 }
         // Check the error code and display a suitable message if <> 0
         //if (errorCode == 0) {
         //   return true;
         //} else {
         //   return false;
         //}
		 return errorCode;
}
function CheckVoucher() {
	var error = 0;
	var validN = "0123456789";
	var validA = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var validD = "ABCDEFGHIJKL";
	var validNumber = 1;
	var returnedCode = 0;
	var codePart = new Array();
	var newTotal = 0.00;
	var numericAmount = 0.00;
	var percentage = 0;
	var decimalPointCount = 0;	
	var promoCode = document.getElementById("promoCode").value;
	if (promoCode.length != 17) {
		error = 1;
	}
	if (error == 0) {
		if (promoCode.substr(3,1) != "-" || promoCode.substr(9,1) != "-" || promoCode.substr(13,1) != "-") {
			error = 1;
		}
	}
	if (error == 0) {
		codePart = promoCode.split("-");
		if (codePart.length != 4) {
			error = 1;
		}
	}
	if (error == 0) {
		if (codePart[0].length != 3 || codePart[1].length != 5 || codePart[2].length != 3 || codePart[3].length != 3) {
			error = 1;
		}
	}
	if (error == 0) {
		if (validA.indexOf(codePart[0].charAt(0)) == -1 || validA.indexOf(codePart[0].charAt(1)) == -1 || validA.indexOf(codePart[0].charAt(2)) == -1) {
			error = 1;
		}
	}
	if (error == 0) {
		if (validN.indexOf(codePart[1].charAt(1)) == -1 || validN.indexOf(codePart[1].charAt(3)) == -1 || validN.indexOf(codePart[1].charAt(4)) == -1) {
			error = 1;
		} else {
			if (validN.indexOf(codePart[1].charAt(0)) == -1 && codePart[1].charAt(0) != "P") {
				error = 1;
			} else {
				if (validN.indexOf(codePart[1].charAt(2)) == -1 && validD.indexOf(codePart[1].charAt(2)) == -1) {
					error = 1;
				}
			}
		}
	}
	if (error == 0) {
		if (validA.indexOf(codePart[2].charAt(0)) == -1 || validA.indexOf(codePart[2].charAt(1)) == -1 || validA.indexOf(codePart[2].charAt(2)) == -1) {
			error = 1;
		}
	}
	if (error == 0) {
		if (validN.indexOf(codePart[3].charAt(0)) == -1 || validN.indexOf(codePart[3].charAt(1)) == -1 || validA.indexOf(codePart[3].charAt(2)) == -1) {
			error = 1;
		}
	}
	if (error == 0) {
		if (validD.indexOf(codePart[1].charAt(2)) != -1) {
			percentage = parseFloat(codePart[3].substr(0,2));
			if (percentage < 0 || percentage > 25) {
				error = 1;
			} else {
				returnedCode = validate_date(codePart[1].substr(0,5));
				if (returnedCode > 0) {
					error = 1;
				}
			}
		}
	}
	if (returnedCode == 2) {
		alert("Sorry. This promotional code has now expired");
		document.getElementById("promoCode").select();
		document.getElementById("promoCode").focus();
	} else {
		if (error == 1) {
			alert("Please enter a valid code");
			document.getElementById("promoCode").select();
			document.getElementById("promoCode").focus();
		} else {
			if (validD.indexOf(codePart[1].charAt(2)) == -1) {
				numericAmount = parseFloat(codePart[1].substr(1,4)) / 100;
				if (codePart[1].charAt(0) == "P") {
					numericAmount = numericAmount * -1;
				}
			}
			if (numericAmount > netTotal && codePart[1].charAt(0) != "P" && validD.indexOf(codePart[1].charAt(2)) == -1) {
				alert("The order total must not fall below zero. The promotional amount has not therefore been deducted from the Order.");
				document.getElementById("promoCode").select();
				document.getElementById("promoCode").focus();
			} else {
				if (validD.indexOf(codePart[1].charAt(2)) == -1) {
					deductAmount = numericAmount;
				} else {
					deductAmount = netTotal * (percentage / 100);
				}
				CalculateDelivery();
				if (codePart[1].charAt(0) == "P") {
					alert("The Order Total has been updated and the promotional amount of " + (numericAmount * -1).toFixed(2) + " has been added.");
				} else {
					if (validD.indexOf(codePart[1].charAt(2)) != -1) {
						alert("The Order Total has been updated and " + percentage + "% has been deducted.");
					} else {
						alert("The Order Total has been updated and the promotional amount of " + numericAmount.toFixed(2) + " has been deducted.");
					}
				}
				WriteCookie();
			}
		}
	}
}
function VoucherSetFocus() {
	document.getElementById("promoCode").select();
	document.getElementById("promoCode").focus();
}
function AddQuantity(productNumber) {
	var newQuantity = quantities[productNumber] + 1;
	var fieldName = "quantity" + productNumber;
	if (newQuantity < 1000) {
		document.getElementById(fieldName).innerHTML = "<B>" + newQuantity + "</B>";
		quantities[productNumber] = quantities[productNumber] + 1;
	} else {
		alert ("Sorry, you cannot order more than 999");
	}
	itemTotal = parseFloat(prices[productNumber]) * quantities[productNumber];
	orderTotal = orderTotal + itemTotal;
	fieldName = "total" + productNumber;
	if (itemTotal == 0.00) {
	    document.getElementById(fieldName).innerHTML = "&nbsp;";
	} else {
		document.getElementById(fieldName).innerHTML = "<B>&pound;" + itemTotal.toFixed(2) + "</B>";
	}
	CalculateDelivery();
	document.getElementById("orderTotal").innerHTML = "<B>" + orderTotal.toFixed(2) + "</B>";
	WriteCookie();
}
function SubtractQuantity(productNumber) {
	if (quantities[productNumber] > 0) {
		var newQuantity = quantities[productNumber] - 1;
		var fieldName = "quantity" + productNumber;
		if (newQuantity == 0) {
			document.getElementById(fieldName).innerHTML = "&nbsp;";
		} else {
			document.getElementById(fieldName).innerHTML = "<B>" + newQuantity + "</B>";
		}
		quantities[productNumber] = quantities[productNumber] - 1;
		itemTotal = parseFloat(prices[productNumber]) * quantities[productNumber];
		orderTotal = orderTotal + itemTotal;
		fieldName = "total" + productNumber;
		if (itemTotal == 0.00) {
	    	document.getElementById(fieldName).innerHTML = "&nbsp;";
		} else {
			document.getElementById(fieldName).innerHTML = "<B>&pound;" + itemTotal.toFixed(2) + "</B>";
		}
		CalculateDelivery();
		document.getElementById("orderTotal").innerHTML = "<B>" + orderTotal.toFixed(2) + "</B>";
		WriteCookie();
	}
}