// order_form_functions.js for InterHamper.co.uk
var days = new Array("none","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");
var months = new Array("none","January","February","March","April","May","June","July","August","September","October","November","December");
var years = new Array("none");
var timeoffset = 0;
var productName;

/*
var time_threshold = 16; // i.e. 1600 or 4pm
var time_threshold_words = "4pm (UK time)";

var sat_time_threshold = 12;
var sat_time_threshold_words = "12pm (UK time)";
*/

var default_upgrade = 1;
var default_postage = 1;

function initForm() {
	productName = document.orderform.product.value;
	for (i=1; i<document.orderform.del_year.length; i++) {
		years[years.length] = document.orderform.del_year[i].value;
	}
	now = new Date();
	timeoffset = (document.orderform.serverdate.value * 1000) - now.getTime();
	parseHamper(document.orderform.type_hamper.selectedIndex);
	parsePresetDate(document.orderform.del_presetdate.selectedIndex);
	writeout('hidejsreq', "");
	document.orderform.display_price.disabled = true;
	recalculatePrice();
}

function Validate(form) {
// Initialize the variables
	form.orderinfo.value = "";
	form.order_description.value = "";
	form.amount.value = "";
	form.hamper.value = "";
	form.delivery_method.value = "1st Class Post";
	form.deluxe.value = "Standard";
	form.extra_gifts.value = "None";
	form.tickbox1_description.value = "";
	form.tickbox2_description.value = "";
	form.tickbox3_description.value = "";
	form.special_offer.value = "None";
	form.code_hamper.value = "";
	form.code_gifts.value = "";
	form.code_deluxe.value = "";
	form.code_postage.value = "";
	form.code_tickbox1.value = "";
	form.code_tickbox2.value = "";
	form.code_tickbox3.value = "";
	form.st_tickbox1name.value = "";
	form.st_tickbox2name.value = "";
	form.st_tickbox3name.value = "";
	form.st_tickbox1value.value = "";
	form.st_tickbox2value.value = "";
	form.st_tickbox3value.value = "";
	form.st_txttickbox1.value = "";
	form.st_txttickbox2.value = "";
	form.st_txttickbox3.value = "";
	var orderHamper;
// Hampers
	orderHamper = get_hamperObject(form.type_hamper.selectedIndex);
	if (orderHamper.orderinfo == "none") {
		return(formError("Please select a type of " + productName, form.type_hamper));
	}
	form.hamper.value = orderHamper.orderinfo;
	form.code_hamper.value = orderHamper.ordercode;
	form.amount.value = "" + parseInt(orderHamper.cost);
	form.orderinfo.value = form.code_hamper.value;
	form.order_description.value = form.hamper.value;
/*
// Deluxe
	if (orderHamper.upgrade != "Any") {
		form.deluxe.value = orderHamper.upgrade;
		form.code_deluxe.value = orderHamper.upgradecode;
	} else {
		var orderUpgrade = get_upgradesObject(form.upgradeslist.value, form.upgrades.selectedIndex);
		if (orderUpgrade.orderinfo != "none") {
			form.deluxe.value = orderUpgrade.orderinfo;
			form.code_deluxe.value = orderUpgrade.ordercode;
			form.amount.value = "" + (parseInt(orderUpgrade.cost) + parseInt(form.amount.value));
		} else {
			form.upgrades.selectedIndex = 0;
		}
	}
	form.orderinfo.value = form.code_deluxe.value + " " + form.orderinfo.value;
	form.order_description.value = form.deluxe.value + " " + form.order_description.value;
*/
// Gifts
	if (orderHamper.gifts != "Any") {
		form.extra_gifts.value = orderHamper.gifts;
		form.code_gifts.value = orderHamper.giftscode;
	} else {
		var orderGift = get_giftsObject(form.gifts.selectedIndex);
		if (orderGift.orderinfo != "none") {
			form.extra_gifts.value = orderGift.orderinfo;
			form.code_gifts.value = orderGift.ordercode;
			form.amount.value = "" + (parseInt(orderGift.cost) + parseInt(form.amount.value));
		} else {
			form.gifts.selectedIndex = 0;
		}
	}
	if (form.code_gifts.value == "") {
		form.code_gifts.value = "none";
	}
	form.orderinfo.value += ", " + form.code_gifts.value;
	if (form.code_gifts.value != "none") {
		form.order_description.value += " with " + form.extra_gifts.value;
	}
// Tickbox1 (if enabled)
	if (form.tickbox1_tick) {
		form.st_tickbox1name.value = tickbox[0].header + ":";
		form.st_tickbox1value.value = "No";
		form.st_txttickbox1.value = tickbox[0].header + " : ";
		if (form.tickbox1_tick.checked) {
			form.st_tickbox1value.value = "Yes";
			form.code_tickbox1.value = tickbox[0].ordercode;
			form.tickbox1_description.value = tickbox[0].orderinfo;
			form.amount.value = "" + (parseInt(tickbox[0].cost) + parseInt(form.amount.value));
		}
		form.st_txttickbox1.value += form.st_tickbox1value.value + "\n";
		if (form.code_tickbox1.value == "") {
			form.code_tickbox1.value = "none";
		}
		form.orderinfo.value += ", " + form.code_tickbox1.value;
		if (form.code_tickbox1.value != "none") {
			form.order_description.value += " and " + form.tickbox1_description.value;
		}
	}
// Tickbox2 (if enabled)
	if (form.tickbox2_tick) {
		form.st_tickbox2name.value = tickbox[1].header + ":";
		form.st_tickbox2value.value = "No";
		form.st_txttickbox2.value = tickbox[1].header + " : ";
		if (form.tickbox2_tick.checked) {
			form.st_tickbox2value.value = "Yes";
			form.code_tickbox2.value = tickbox[1].ordercode;
			form.tickbox2_description.value = tickbox[1].orderinfo;
			form.amount.value = "" + (parseInt(tickbox[1].cost) + parseInt(form.amount.value));
		}
		form.st_txttickbox2.value += form.st_tickbox2value.value + "\n";
		if (form.code_tickbox2.value == "") {
			form.code_tickbox2.value = "none";
		}
		form.orderinfo.value += ", " + form.code_tickbox2.value;
		if (form.code_tickbox2.value != "none") {
			form.order_description.value += " and " + form.tickbox2_description.value;
		}
	}
// Tickbox3 (if enabled)
	if (form.tickbox3_tick) {
		form.st_tickbox3name.value = tickbox[2].header + ":";
		form.st_tickbox3value.value = "No";
		form.st_txttickbox3.value = tickbox[2].header + " : ";
		if (form.tickbox3_tick.checked) {
			form.st_tickbox3value.value = "Yes";
			form.code_tickbox3.value = tickbox[2].ordercode;
			form.tickbox3_description.value = tickbox[2].orderinfo;
			form.amount.value = "" + (parseInt(tickbox[2].cost) + parseInt(form.amount.value));
		}
		form.st_txttickbox3.value += form.st_tickbox3value.value + "\n";
		if (form.code_tickbox3.value == "") {
			form.code_tickbox3.value = "none";
		}
		form.orderinfo.value += ", " + form.code_tickbox3.value;
		if (form.code_tickbox3.value != "none") {
			form.order_description.value += " and " + form.tickbox3_description.value;
		}
	}
// Postage
	if (orderHamper.postage != "Any") {
		form.delivery_method.value = orderHamper.postage;
		form.code_postage.value = orderHamper.postagecode;
	} else {
		var orderPostage = get_postageObject(form.postagelist.value, form.postage.selectedIndex);
		if (orderPostage.orderinfo != "none") {
			form.delivery_method.value = orderPostage.orderinfo;
			form.code_postage.value = orderPostage.ordercode;
			form.amount.value = "" + (parseInt(orderPostage.cost) + parseInt(form.amount.value));
		} else {
			return(formError("Please select a delivery method", form.postage));
		}
	}
// Offers
	if (!isBlank(form.offer.value)) {
		var tempOffer;
		for (i=0;i<offers.length;i++) {
			tempOffer = get_offersObject(i);
			if (b64_md5(form.offer.value.toUpperCase()) == tempOffer.hashvalue) {
				form.amount.value = "" + Math.round((1 - (parseInt(tempOffer.percent) / 100)) * parseInt(form.amount.value));
				form.special_offer.value = tempOffer.orderinfo;
				break;
			}
		}
	}
// TESTLINE
// Take the two // characters off the start of the next line to test
//alert("OrderNo : " + form.orderref.value + "\n\nhamper: " + form.hamper.value + " ("+form.code_hamper.value+")\ndeluxe: " + form.deluxe.value + " ("+form.code_deluxe.value+")\nextra_gifts: " + form.extra_gifts.value + " ("+form.code_gifts.value+")\ntickbox1: " + form.tickbox1_description.value + " ("+form.code_tickbox1.value+")\ntickbox2: " + form.tickbox2_description.value + " ("+form.code_tickbox2.value+")\ntickbox3: " + form.tickbox3_description.value + " ("+form.code_tickbox3.value+")\ndelivery_method: " + form.delivery_method.value + " ("+form.code_postage.value+")\nspecial_offer: " + form.special_offer.value + "\namount: " + form.amount.value + " pence\n\nOrderDescription: " + form.order_description.value + "\norderinfo: " + form.orderinfo.value);
// Preset Messages
	if (!isBlank(form.message.value) && !isBlank(form.presetmessage.value)) {
		return(formError("Please select either your own message OR a preset message, not both", form.presetmessage));
	}
// Presetdates
	var orderPresetdate = get_presetdatesObject(form.del_presetdate.selectedIndex);
	if ((orderHamper.occasion != "Any") && (orderHamper.occasion != orderPresetdate.occasion)) {
		var tempPresetdate;
		for (i=0;i<presetdates.length;i++) {
			tempPresetdate = get_presetdatesObject(i);
			if (tempPresetdate.occasion == orderHamper.occasion) {
				return(formError("Sorry, your selected " + productName + " can only be delivered on " + tempPresetdate.description, form.del_presetdate));
			}
		}
	}
	if (form.del_presetdate.selectedIndex != 0) {
		if (orderPresetdate.occasion != "none") {
			if ((form.del_day.selectedIndex != parseInt(orderPresetdate.day))
			|| (form.del_month.selectedIndex != parseInt(orderPresetdate.month))
			|| (form.del_year.selectedIndex != parseInt(orderPresetdate.yearindex))) {
				return(formError("You have chosen delivery dates of both " + orderPresetdate.description + " and " + days[form.del_day.selectedIndex] + " / " + months[form.del_month.selectedIndex] + " / " + years[form.del_year.selectedIndex] + "\nPlease select just one delivery date.", form.del_presetdate));
			}
		}
		form.del_textdate.value = orderPresetdate.description;
	} else {
		today = new Date();
		today.setTime(timeoffset + today.getTime());
		todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
		if (!formDateCheck("delivery", form.del_day, form.del_month, form.del_year, todayDate, years)) return false;
		deliveryDate = new Date(years[form.del_year.selectedIndex], form.del_month.selectedIndex-1, form.del_day.selectedIndex);
		daysAhead = (deliveryDate.getTime() - todayDate.getTime()) / 86400000; // (24 * 60 * 60 * 1000)
		if (deliveryDate.getDay() == 0) { // sunday
			return(formError("Sorry, Sunday deliveries not available", form.del_day));
		} else if (deliveryDate.getDay() == 6) { // saturday
			return(formError("Sorry, Saturday deliveries are only available via telephone orders, as there is an additional carraige charge applicable", form.del_day));
		} else if (daysAhead < parseInt(orderHamper.daysnotice)) {
			return(formError("Sorry, your chosen hamper must be ordered at least " + parseInt(orderHamper.daysnotice) + " days in advance", form.del_day));			
		}
/* ignore all this for now because of daysnotice
		} else if (deliveryDate.getDay() == 1) { // monday
		//	return(formError("Sorry, Monday deliveries not available", form.del_day));
			if (daysAhead == 1) { // today is Sunday
				return(formError("Sorry, Monday deliveries can't be ordered on Sunday", form.del_day));
			} else if (daysAhead ==  2) { // today is Saturday
				if (today.getHours() >= sat_time_threshold) {
					return(formError("Sorry, deliveries for Monday must be ordered before " + sat_time_threshold_words + " on Saturdays", form.del_day));
				}
			}
		}
		if (daysAhead == 1) { // tommorow
			if (today.getHours() >= time_threshold) {
				return(formError("Sorry, deliveries for the following day must be ordered before " + time_threshold_words, form.del_day));
			}
		}
*/
		var tempBaddate;
		for (i=0;i<baddates.length;i++) {
			tempBaddate = get_baddatesObject(i);
			if (deliveryDate.valueOf() == tempBaddate.date.valueOf()) {
				return(formError(tempBaddate.message, form.del_day));
			}
		}
		form.del_textdate.value = days[form.del_day.selectedIndex] + " / " + months[form.del_month.selectedIndex] + " / " + years[form.del_year.selectedIndex];
	}
	if (!checkBlank("the Delivery Name", form.del_name)) return false;
	if (!checkBlank("your Name", form.name)) return false;
	if (!checkEmail("your E-mail Address", form.email)) return false;
	if (!checkBlank("your Address", form.address)) return false;
	if (!checkBlank("your Town", form.town)) return false;
	if (!checkBlank("your County", form.county)) return false;
	if (!checkBlank("your Country", form.country)) return false;
	if (!checkBlank("your Postcode", form.postcode)) return false;
	if (isBlank(form.del_address.value)) {
		form.del_address.value = form.address.value + "\n" + form.town.value + "\n" + form.county.value + "\n" + form.postcode.value + "\n" + form.country.value;
	}
	if (!checkBlank("a Telephone No.", form.telephone)) return false;
	form.del_presetdate.disabled = false;
	form.del_day.disabled = false;
	form.del_month.disabled = false;
	form.del_year.disabled = false;
	escapeField(form.message);
	escapeField(form.signature);
	escapeField(form.del_address);
	escapeField(form.additional);
	return true;
}

function parsePresetDate(index) {
	var selectPresetdate = get_presetdatesObject(index);
	day = 0;
	month = 0;
	year = 0;
	disable = false;
	if ((selectPresetdate.occasion != "none") && (selectPresetdate.occasion != "asbelow")) {
		day = parseInt(selectPresetdate.day);
		month = parseInt(selectPresetdate.month);
		year = parseInt(selectPresetdate.yearindex);
		disable = true;
	}
	document.orderform.del_day.selectedIndex = day;
	document.orderform.del_month.selectedIndex = month;
	document.orderform.del_year.selectedIndex = year;
	document.orderform.del_day.disabled = disable;
	document.orderform.del_month.disabled = disable;
	document.orderform.del_year.disabled = disable;
}

function parseHamper(index) {
	var selectHamper = get_hamperObject(index);
	if (selectHamper.orderinfo != "none") {
		// Check hamper occasion
		parseOccasion(selectHamper.occasion);
/*
		// Check hamper upgrades
		if (selectHamper.upgrade == "Any") {
			showCategory("upgrades", parseInt(selectHamper.upgradecategory), "orderform", "recalculatePrice()");
		} else {
			setList("upgrades", 0, "<OPTION>" + selectHamper.upgrade + "</OPTION>", "orderform", "");
		}
*/
		// Check hamper gifts
		if (selectHamper.gifts == "Any") {
			setList("gifts", 1, giftslist, "orderform", "recalculatePrice()");
		} else {
			setList("gifts", 0, "<OPTION>" + selectHamper.gifts + "</OPTION>", "orderform", "");
		}
		// Check hamper postage
		if (selectHamper.postage == "Any") {
			showCategory("postage", parseInt(selectHamper.postagecategory), "orderform", "recalculatePrice()");
		} else {
			setList("postage", 0, "<OPTION>" + selectHamper.postage + "</OPTION>", "orderform", "");
		}
		update_preview_image(selectHamper.smallimageurl, ''); // selectHamper.ordercode
	} else {
		// Reset all to defaults
//		showCategory("upgrades", default_upgrade, "orderform", "recalculatePrice()");
		setList("gifts", 1, giftslist, "orderform", "recalculatePrice()");
		showCategory("postage", default_postage, "orderform", "recalculatePrice()");
		document.orderform.del_presetdate.disabled = false;
		update_preview_image('', '');
	}
}


function update_preview_image(product_image, ordercode) {
	var label = "";
	var image = "images/SPACER.gif";
	var clickfunc = null;
	if (product_image != '') {
		label = "Preview your choosen Hamper:";
		image = product_image;
		if (ordercode != '') {
			clickfunc = function() { newWindow('/cgi-bin/hamper_popup.pl?sprig='+ordercode,350,400)};
		}
	}
	writeout('preview_image_label', label);
	document.preview_image.src = image;
	document.preview_image.onclick = clickfunc;
	if (clickfunc != null) {
		document.preview_image.alt = "Click to Enlarge";
		document.preview_image.style.cursor = "pointer";
	} else {
		document.preview_image.alt = "";
		document.preview_image.style.cursor = "default";
	}
}

function parseOccasion(occasion) {
	document.orderform.del_presetdate.disabled = false;
	if (occasion != "Any") {
		var tempPresetdate;
		for (i=0;i<presetdates.length;i++) {
			tempPresetdate = get_presetdatesObject(i);
			if (tempPresetdate.occasion == occasion) {
				document.orderform.del_presetdate.selectedIndex = i;
				parsePresetDate(i);
				document.orderform.del_presetdate.disabled = true;
				break;
			}
		}
	}
}

function recalculatePrice() {
	cost = 0;
	var selectHamper = get_hamperObject(document.orderform.type_hamper.selectedIndex);
	if (selectHamper.orderinfo != "none") {
		cost = parseInt(selectHamper.cost);
/*
		if (selectHamper.upgrade == "Any") {
			var selectUpgrade = get_upgradesObject(document.orderform.upgradeslist.value, document.orderform.upgrades.selectedIndex);
			if (selectUpgrade.orderinfo != "none") {
				cost += parseInt(selectUpgrade.cost);
			}
		}
*/
		if (selectHamper.gifts == "Any") {
			var selectGift = get_giftsObject(document.orderform.gifts.selectedIndex);
			if (selectGift.orderinfo != "none") {
				cost += parseInt(selectGift.cost);
			}
		}
		if (selectHamper.postage == "Any") {
			var selectPostage = get_postageObject(document.orderform.postagelist.value, document.orderform.postage.selectedIndex);
			if (selectPostage.orderinfo != "none") {
				cost += parseInt(selectPostage.cost);
			}
		}
		if (document.orderform.tickbox1_tick) {
			if (document.orderform.tickbox1_tick.checked) {
				cost += parseInt(tickbox[0].cost);
			}
		}
		if (document.orderform.tickbox2_tick) {
			if (document.orderform.tickbox2_tick.checked) {
				cost += parseInt(tickbox[1].cost);
			}
		}
		if (document.orderform.tickbox3_tick) {
			if (document.orderform.tickbox3_tick.checked) {
				cost += parseInt(tickbox[2].cost);
			}
		}
		if (!isBlank(document.orderform.offer.value)) {
			var tempOffer;
			for (i=0;i<offers.length;i++) {
				tempOffer = get_offersObject(i);
				if (b64_md5(document.orderform.offer.value.toUpperCase()) == tempOffer.hashvalue) {
					cost = Math.round((1 - (parseInt(tempOffer.percent) / 100)) * cost);
					break;
				}
			}
		}
	}
	document.orderform.display_price.value = formatPenceAs(cost, "£");
}
