// order_form_functions.js for InterMistletoe.co.uk
var years = new Array("0");
var timeoffset = 0;

var time_threshold = 17; // i.e. 1600 or 4pm
var time_threshold_words = "5pm (UK time)";

var sat_time_threshold = 12;
var sat_time_threshold_words = "12pm (UK time)";

var default_postage = 1;

var agreed_to_first = false;
var first_question = "You have selected first class post delivery.\nThis is not a guaranteed next day delivery service and your order will be despatched 2 days prior to your requested delivery date if applicable. We do this because we prefer to deliver early rather than late.\nYou need to Click OK if you are happy with this, or Cancel if you would like to select a different delivery method to continue.";

function initForm() {
	for (var i=1; i<document.orderform.del_year.length; i++) {
		years[years.length] = parseInt(document.orderform.del_year[i].value);
	}
	now = new Date();
	timeoffset = (parseInt(document.orderform.serverdate.value) * 1000) - now.getTime();
	parseMistletoe(document.orderform.type_mistletoe.selectedIndex);
	parseHolly(document.orderform.type_holly.selectedIndex);
	parseWreaths(document.orderform.type_wreaths.selectedIndex);
	parseDeliverydate(document.orderform.delivery_date.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 = "0";
	form.mistletoe.value = "";
	form.holly.value = "";
	form.wreaths.value = "";
	form.delivery_method.value = "1st Class Post";
	form.extra_gifts.value = "None";
	form.tickbox1_description.value = "";
	form.tickbox2_description.value = "";
	form.tickbox3_description.value = "";
	form.special_offer.value = "None";
	form.code_mistletoe.value = "";
	form.code_holly.value = "";
	form.code_wreaths.value = "";
	form.code_gifts.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 = "";
	form.st_gifts_orderinfo.value = "";
	form.st_tickbox1_orderinfo.value = "";
	form.st_tickbox2_orderinfo.value = "";
	form.st_tickbox3_orderinfo.value = "";
// Mistletoe
	var mistletoe_object = getMistletoeObject(form.type_mistletoe.selectedIndex);
	form.mistletoe.value = mistletoe_object.orderinfo;
	if (form.mistletoe.value != 'none') {
		form.code_mistletoe.value = mistletoe_object.ordercode;
		form.amount.value = "" + (parseInt(mistletoe_object.cost) + parseInt(form.amount.value));
		if (form.order_description.value != '') {
			form.order_description.value += ', ';
		}
		form.order_description.value += form.mistletoe.value;
	} else {
		form.code_mistletoe.value = 'none';
	}

	form.orderinfo.value = form.code_mistletoe.value;
// Holly
	var holly_object = getHollyObject(form.type_holly.selectedIndex);
	form.holly.value = holly_object.orderinfo;
	if (form.holly.value != 'none') {
		form.code_holly.value = holly_object.ordercode;
		form.amount.value = "" + (parseInt(holly_object.cost) + parseInt(form.amount.value));
		if (form.order_description.value != '') {
			form.order_description.value += ', ';
		}
		form.order_description.value += form.holly.value;
	} else {
		form.code_holly.value = 'none';
	}

	form.orderinfo.value += ", " + form.code_holly.value;
// Wreaths
	var wreaths_object = getWreathsObject(form.type_wreaths.selectedIndex);
	form.wreaths.value = wreaths_object.orderinfo;
	if (form.wreaths.value != 'none') {
		form.code_wreaths.value = wreaths_object.ordercode;
		form.amount.value = "" + (parseInt(wreaths_object.cost) + parseInt(form.amount.value));
		if (form.order_description.value != '') {
			form.order_description.value += ', ';
		}
		form.order_description.value += form.wreaths.value;
	} else {
		form.code_wreaths.value = 'none';
	}

	form.orderinfo.value += ", " + form.code_wreaths.value;
// Check at least one thing ordered
	if ( (mistletoe_object.orderinfo == 'none') && (holly_object.orderinfo == 'none') && (wreaths_object.orderinfo == 'none') ) {
		return(formError("Please select at least one Mistletoe, Holly or Wreath option", form.type_mistletoe));
	}

// Gifts
	var gift_object = getGiftObject(form.gifts.selectedIndex);
	if (gift_object.orderinfo != "none") {
		form.extra_gifts.value = gift_object.orderinfo;
		form.st_gifts_orderinfo.value = "***  " + gift_object.orderinfo + "\n";
		form.code_gifts.value = gift_object.ordercode;
		form.amount.value = "" + (parseInt(gift_object.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) {
		var tickbox1_object = getTickbox1Object();
		form.st_tickbox1name.value = tickbox1_object.header + ":";
		form.st_tickbox1value.value = "No";
		form.st_txttickbox1.value = tickbox1_object.header + " : ";
		if (form.tickbox1_tick.checked) {
			form.st_tickbox1value.value = "Yes";
			form.code_tickbox1.value = tickbox1_object.ordercode;
			form.tickbox1_description.value = tickbox1_object.orderinfo;
			form.st_tickbox1_orderinfo.value = "***  " + tickbox1_object.orderinfo + "\n";
			form.amount.value = "" + (parseInt(tickbox1_object.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) {
		var tickbox2_object = getTickbox2Object();
		form.st_tickbox2name.value = tickbox2_object.header + ":";
		form.st_tickbox2value.value = "No";
		form.st_txttickbox2.value = tickbox2_object.header + " : ";
		if (form.tickbox2_tick.checked) {
			form.st_tickbox2value.value = "Yes";
			form.code_tickbox2.value = tickbox2_object.ordercode;
			form.tickbox2_description.value = tickbox2_object.orderinfo;
			form.st_tickbox2_orderinfo.value = "***  " + tickbox2_object.orderinfo + "\n";
			form.amount.value = "" + (parseInt(tickbox2_object.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) {
		var tickbox3_object = getTickbox3Object();
		form.st_tickbox3name.value = tickbox3_object.header + ":";
		form.st_tickbox3value.value = "No";
		form.st_txttickbox3.value = tickbox3_object.header + " : ";
		if (form.tickbox3_tick.checked) {
			form.st_tickbox3value.value = "Yes";
			form.code_tickbox3.value = tickbox3_object.ordercode;
			form.tickbox3_description.value = tickbox3_object.orderinfo;
			form.st_tickbox3_orderinfo.value = "***  " + tickbox3_object.orderinfo + "\n";
			form.amount.value = "" + (parseInt(tickbox3_object.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;
		}
	}
// Deliverydates
	var today = new Date();
	today.setTime(timeoffset + today.getTime());
	var todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	var deliverydate_object = getDeliverydateObject(form.delivery_date.selectedIndex);
	if (deliverydate_object.orderinfo == "none") {
		return(formError("Please select your required delivery date", form.delivery_date));
	} else if (deliverydate_object.orderinfo == "As Soon As Possible") {
		form.del_presetdate.value = "As Soon As Possible";
	} else {
		form.del_presetdate.value = "As Below";
		var deliveryDate = deliverydate_object.date;
		// Check not before today
		if (!formDateIsAfterToday("delivery", form.del_day, form.del_month, form.del_year, form.delivery_date, todayDate, deliveryDate, true)) return false;
		// Check not today
		if (!formDateIsNotToday("delivery", form.delivery_date, todayDate, deliveryDate)) return false;
		// Check not more than a year ahead
		if (!formDateIsLessThanYearFromToday("delivery", form.del_day, form.del_month, form.del_year, form.delivery_date, todayDate, deliveryDate, true)) return false;
		var days_until_delivery = getDaysBetweenDates(todayDate, deliveryDate);

		if (deliveryDate.getDay() == 1) { // monday
		//	return(formError("Sorry, Monday deliveries not available", form.delivery_date));
			if (days_until_delivery == 1) {
				return(formError("Sorry, Monday deliveries can't be ordered on Sunday", form.delivery_date));
			} else if (days_until_delivery == 2) {
				if (today.getHours() >= sat_time_threshold) {
					return(formError("Sorry, deliveries for Monday must be ordered before " + sat_time_threshold_words + " on Saturdays", form.delivery_date));
				}
			}
		}
		if ((days_until_delivery == 1) && (today.getHours() >= time_threshold)) { //tomorrow
			return(formError("Sorry, deliveries for the following day must be ordered before " + time_threshold_words, form.delivery_date));
		}
	}
// Postage
	var postage_object = getPostageObject(form.postage.selectedIndex, parseInt(form.del_weekday.value), parseInt(form.postagelist.value));
	if ((postage_object != null) && (postage_object.orderinfo != 'none')) {
		form.delivery_method.value = getPostageOrderInfo(postage_object.ordercode);
		form.code_postage.value = postage_object.ordercode;
		form.amount.value = "" + (parseInt(postage_object.cost) + parseInt(form.amount.value));
	} else {
		return(formError("Please select a delivery method", form.postage));
	}
// Confirm first class
	if ((form.code_postage.value == 'first') && (!agreed_to_first)) {
		if (confirm(first_question)) {
			agreed_to_first = true;
		} else {
			return false;
		}
	}
// Offers
	if (!isBlank(form.offer.value)) {
		var offer_object = getOfferObject(form.offer.value);
		if (offer_object != null) {
			form.amount.value = "" + Math.round((1 - (parseInt(offer_object.percent) / 100)) * parseInt(form.amount.value));
			form.special_offer.value = offer_object.orderinfo;
		}
	}
// TESTLINE
// Take the two // characters off the start of the next line to test
// alert("OrderNo : " + form.orderref.value + "\n\nmistletoe: " + form.mistletoe.value + " ("+form.code_mistletoe.value+")\nholly: " + form.holly.value + " ("+form.code_holly.value+")\nwreaths: " + form.wreaths.value + " ("+form.code_wreaths.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("Select either your own message OR a preset message, not both", form.presetmessage));
	}
	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;
	disableDateFields(false);
	escapeField(form.message);
	escapeField(form.signature);
	escapeField(form.del_address);
	escapeField(form.additional);
	return true;
}

function parseDeliverydate(index) {
	deliverydate_object = getDeliverydateObject(index);
	disableDateFields(false);
	var date;
	if ((deliverydate_object.orderinfo != "none") && (deliverydate_object.orderinfo != "As Soon As Possible")) {
		date = deliverydate_object.date;
	}
	set_date(date);
	disableDateFields(true);
}

function selectHighestPostageCategory() {
	var mistletoe_postage_category = -1;
	var holly_postage_category = -1;
	var wreaths_postage_category = -1;
	var selected_postage_category = default_postage;

	var mistletoe_object = getMistletoeObject(document.orderform.type_mistletoe.selectedIndex);
	if ((mistletoe_object != null) && (mistletoe_object.orderinfo != 'none')) {
		mistletoe_postage_category = parseInt(mistletoe_object.postagecategory);
		if (mistletoe_postage_category > selected_postage_category) {
			selected_postage_category = mistletoe_postage_category;
		}
	}

	var holly_object = getHollyObject(document.orderform.type_holly.selectedIndex);
	if ((holly_object != null) && (holly_object.orderinfo != 'none')) {
		holly_postage_category = parseInt(holly_object.postagecategory);
		if (holly_postage_category > selected_postage_category) {
			selected_postage_category = holly_postage_category;
		}
	}

	var wreaths_object = getWreathsObject(document.orderform.type_wreaths.selectedIndex);
	if ((wreaths_object != null) && (wreaths_object.orderinfo != 'none')) {
		wreaths_postage_category = parseInt(wreaths_object.postagecategory);
		if (wreaths_postage_category > selected_postage_category) {
			selected_postage_category = wreaths_postage_category;
		}
	}

	showPostageCategory(selected_postage_category);
}

function parseMistletoe(index) {
	var mistletoe_object = getMistletoeObject(index);
	if ((mistletoe_object != null) && (mistletoe_object.orderinfo != 'none')) {
		update_mistletoe_preview(mistletoe_object.smallimageurl, ''); // mistletoe_object.ordercode
	} else {
		// Reset all to defaults
		update_mistletoe_preview('', '');
	}
	selectHighestPostageCategory();
}

function update_mistletoe_preview(product_image, ordercode) {
	var label = "";
	var image = "images/SPACER.gif";
	var clickfunc = null;
	if (product_image != '') {
		label = "Preview your choosen Mistletoe:";
		image = product_image;
		if (ordercode != '') {
			clickfunc = function() { newWindow('/cgi-bin/sprig_popup.pl?sprig='+ordercode,350,400)};
		}
	}
	writeout('preview_mistletoe_label', label);
	document.preview_mistletoe.src = image;
	document.preview_mistletoe.onclick = clickfunc;
	if (clickfunc != null) {
		document.preview_mistletoe.alt = "Click to Enlarge";
		document.preview_mistletoe.style.cursor = "pointer";
	} else {
		document.preview_mistletoe.alt = "";
		document.preview_mistletoe.style.cursor = "default";
	}
}

function parseHolly(index) {
	var holly_object = getHollyObject(index);
	if ((holly_object != null) && (holly_object.orderinfo != 'none')) {
		update_holly_preview(holly_object.smallimageurl, ''); // holly_object.ordercode
	} else {
		// Reset all to defaults
		update_holly_preview('', '');
	}
	selectHighestPostageCategory();
}

function update_holly_preview(product_image, ordercode) {
	var label = "";
	var image = "images/SPACER.gif";
	var clickfunc = null;
	if (product_image != '') {
		label = "Preview your choosen Holly:";
		image = product_image;
		if (ordercode != '') {
			clickfunc = function() { newWindow('/cgi-bin/sprig_popup.pl?sprig='+ordercode,350,400)};
		}
	}
	writeout('preview_holly_label', label);
	document.preview_holly.src = image;
	document.preview_holly.onclick = clickfunc;
	if (clickfunc != null) {
		document.preview_holly.alt = "Click to Enlarge";
		document.preview_holly.style.cursor = "pointer";
	} else {
		document.preview_holly.alt = "";
		document.preview_holly.style.cursor = "default";
	}
}

function parseWreaths(index) {
	var wreaths_object = getWreathsObject(index);
	if ((wreaths_object != null) && (wreaths_object.orderinfo != 'none')) {
		update_wreaths_preview(wreaths_object.smallimageurl, ''); // wreaths_object.ordercode
	} else {
		// Reset all to defaults
		update_wreaths_preview('', '');
	}
	selectHighestPostageCategory();
}

function update_wreaths_preview(product_image, ordercode) {
	var label = "";
	var image = "images/SPACER.gif";
	var clickfunc = null;
	if (product_image != '') {
		label = "Preview your choosen Wreath:";
		image = product_image;
		if (ordercode != '') {
			clickfunc = function() { newWindow('/cgi-bin/sprig_popup.pl?sprig='+ordercode,350,400)};
		}
	}
	writeout('preview_wreaths_label', label);
	document.preview_wreaths.src = image;
	document.preview_wreaths.onclick = clickfunc;
	if (clickfunc != null) {
		document.preview_wreaths.alt = "Click to Enlarge";
		document.preview_wreaths.style.cursor = "pointer";
	} else {
		document.preview_wreaths.alt = "";
		document.preview_wreaths.style.cursor = "default";
	}
}

function set_date(date) {
	date2formfields(date, document.orderform.del_day, document.orderform.del_month, document.orderform.del_year, years);
	calculateWeekday(date);
}

function disableDateFields(disabled) {
	document.orderform.del_day.disabled = disabled;
	document.orderform.del_month.disabled = disabled;
	document.orderform.del_year.disabled = disabled;
}


function updateWeekday() {
	calculateWeekday(formfields2date(document.orderform.del_day, document.orderform.del_month, document.orderform.del_year, years));
}

function calculateWeekday(date) {
	var new_day = 9;
	if (date != null) {
		new_day = date.getDay();
	}
	var old_day = parseInt(document.orderform.del_weekday.value);
	if (old_day != new_day) {
		document.orderform.del_weekday.value = new_day;
		if ((new_day == 6) || (old_day == 6) // saturday
			|| (new_day == 9) || (old_day == 9)) // both
		{
			updatePostage(new_day, parseInt(document.orderform.postagelist.value));
		}
	}
}

function showPostageCategory(category) {
	if (parseInt(document.orderform.postagelist.value) != category) {
		updatePostage(parseInt(document.orderform.del_weekday.value), category);
	}
}

function updatePostage(weekday, postagecategory) {
	setList("postage", postagecategory, getPostageList(weekday, postagecategory), "orderform", "recalculatePrice()");
	recalculatePrice();
}

function recalculatePrice() {
	var cost = 0;
	var mistletoe_object = getMistletoeObject(document.orderform.type_mistletoe.selectedIndex);
	if ((mistletoe_object != null) && (mistletoe_object.orderinfo != 'none')) {
		cost += parseInt(mistletoe_object.cost);
	}

	var holly_object = getHollyObject(document.orderform.type_holly.selectedIndex);
	if ((holly_object != null) && (holly_object.orderinfo != 'none')) {
		cost += parseInt(holly_object.cost);
	}

	var wreaths_object = getWreathsObject(document.orderform.type_wreaths.selectedIndex);
	if ((wreaths_object != null) && (wreaths_object.orderinfo != 'none')) {
		cost += parseInt(wreaths_object.cost);
	}

	if (cost != 0) { // something has been selected
		var gift_object = getGiftObject(document.orderform.gifts.selectedIndex);
		if ((gift_object != null) && (gift_object.orderinfo != "none")) {
			cost += parseInt(gift_object.cost);
		}
		var postage_object = getPostageObject(document.orderform.postage.selectedIndex, parseInt(document.orderform.del_weekday.value), parseInt(document.orderform.postagelist.value));
		if ((postage_object != null) && (postage_object.orderinfo != "none")) {
			cost += parseInt(postage_object.cost);
		}
		if (document.orderform.tickbox1_tick) {
			if (document.orderform.tickbox1_tick.checked) {
				var tickbox1_object = getTickbox1Object();
				if (tickbox1_object != null) {
					cost += parseInt(tickbox1_object.cost);
				}
			}
		}
		if (document.orderform.tickbox2_tick) {
			if (document.orderform.tickbox2_tick.checked) {
				var tickbox2_object = getTickbox2Object();
				if (tickbox2_object != null) {
					cost += parseInt(tickbox2_object.cost);
				}
			}
		}
		if (document.orderform.tickbox3_tick) {
			if (document.orderform.tickbox3_tick.checked) {
				var tickbox3_object = getTickbox3Object();
				if (tickbox3_object != null) {
					cost += parseInt(tickbox3_object.cost);
				}
			}
		}
		if (!isBlank(document.orderform.offer.value)) {
			var offer_object = getOfferObject(document.orderform.offer.value);
			if (offer_object != null) {
				cost = Math.round((1 - (parseInt(offer_object.percent) / 100)) * cost);
			}
		}
	}
	document.orderform.display_price.value = formatPenceAs(cost, "£");
}
