// order_form_functions.js for InterBalloon.com
var years = new Array("none");
var timeoffset = 0;
var productName;

var time_threshold = 17; // i.e. 1700 or 5pm
var time_threshold_words = "5pm (UK time)";

var sat_time_threshold = 12;
var sat_time_threshold_words = "12pm (UK time)";

var megalloons = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numberlloons = "0123456789";

var default_upgrade = 1;
var default_balloonbouquet = 1;
var default_postage = 1;

var agreed_to_first = false;

// var first_question = "We can see that you have selected 1st class post as your delivery method.\n\nPlease remember 1st class post is not a guaranteed next day service and your\norder will be despatched 2 days prior to your requested delivery date if possible.\n\nYour order may take anywhere between 1 and 4 days to arrive so please if\nthis is unacceptable click the cancel button and select from one of our guaranteed\ndelivery options.";

var first_question  = 'Please remember 1st class post is not a guaranteed next day service and your\n';
    first_question += 'order will be despatched 2 days prior to your requested delivery date if possible.\n\n';
    first_question += 'If this is for Valentine\'s Day then please note that you order will be despatched on\n';
    first_question += 'Saturday 11th February and may arrive on Monday 13th February so please if this\n';
    first_question += 'is unacceptable then click ‘Cancel’ and select from one of our guaranteed delivery options.';

function initForm() {
	productName = document.orderform.product.value;
	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();
	parseBalloon(document.orderform.type_balloon.selectedIndex);
	var megalloon_size = parseInt(document.orderform.megalloon_size.value);
	if (megalloon_size != 0) {
		var megalloon_value = document.orderform.selectmegalloons.value;
		if (megalloon_value != 'none') {
			document.orderform.megalloon_request.value = megalloon_value;
		}
		update_megalloon_preview(false);
	}
	var numberlloon_size = parseInt(document.orderform.numberlloon_size.value);
	if (numberlloon_size != 0) {
		var numberlloon_value = document.orderform.selectnumberlloons.value;
		if (numberlloon_value != 'none') {
			document.orderform.numberlloon_request.value = numberlloon_value;
		}
		update_numberlloon_preview(false);
	}
	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.balloon.value = "";
	form.delivery_method.value = "1st Class Post";
	form.deluxe.value = "Standard";
	form.bouquet.value = "None";
	form.extra_gifts.value = "None";
	form.tickbox1_description.value = "";
	form.tickbox2_description.value = "";
	form.tickbox3_description.value = "";
	form.tickbox4_description.value = "";
	form.tickbox5_description.value = "";
	form.special_offer.value = "None";
	form.code_balloon.value = "";
	form.code_gifts.value = "";
	form.code_deluxe.value = "";
	form.code_balloonbouquet.value = "";
	form.code_postage.value = "";
	form.code_tickbox1.value = "";
	form.code_tickbox2.value = "";
	form.code_tickbox3.value = "";
	form.code_tickbox4.value = "";
	form.code_tickbox5.value = "";
	form.st_tickbox1name.value = "";
	form.st_tickbox2name.value = "";
	form.st_tickbox3name.value = "";
	form.st_tickbox4name.value = "";
	form.st_tickbox5name.value = "";
	form.st_tickbox1value.value = "";
	form.st_tickbox2value.value = "";
	form.st_tickbox3value.value = "";
	form.st_tickbox4value.value = "";
	form.st_tickbox5value.value = "";
	form.st_txttickbox1.value = "";
	form.st_txttickbox2.value = "";
	form.st_txttickbox3.value = "";
	form.st_txttickbox4.value = "";
	form.st_txttickbox5.value = "";
	form.st_gifts_orderinfo.value = "";
	form.st_tickbox1_orderinfo.value = "";
	form.st_tickbox2_orderinfo.value = "";
	form.st_tickbox3_orderinfo.value = "";
	form.st_tickbox4_orderinfo.value = "";
	form.st_tickbox5_orderinfo.value = "";
// Balloons
	var orderBalloon = get_balloonObject(form.type_balloon.selectedIndex);
	if (orderBalloon.orderinfo == "none") {
		return(formError("Please select a type of " + productName, form.type_balloon));
	}
	form.balloon.value = orderBalloon.orderinfo;
	form.code_balloon.value = orderBalloon.ordercode;
	form.amount.value = "" + parseInt(orderBalloon.cost);
	form.orderinfo.value = form.code_balloon.value;
	form.order_description.value = form.balloon.value;
// Megalloons
	var megalloon_size = parseInt(form.megalloon_size.value);
	if (megalloon_size != 0) {
		if (!update_megalloon_preview(true)) return false;
		if (form.megalloon_request.value.length != megalloon_size) {
			return(formError("Please enter your choice of "+megalloon_size+" Megalloons", form.megalloon_request));
		}
		form.balloon.value += " ("+form.megalloon_request.value+")";
		form.order_description.value += " ("+form.megalloon_request.value+")";
	}
// Numberlloons
	var numberlloon_size = parseInt(form.numberlloon_size.value);
	if (numberlloon_size != 0) {
		if (!update_numberlloon_preview(true)) return false;
		if (form.numberlloon_request.value.length != numberlloon_size) {
			return(formError("Please enter your choice of "+numberlloon_size+" Numberlloons", form.numberlloon_request));
		}
		form.balloon.value += " ("+form.numberlloon_request.value+")";
		form.order_description.value += " ("+form.numberlloon_request.value+")";
	}
// BalloonBouquets
	var orderBalloonbouquet = get_balloonbouquetsObject(form.balloonbouquetslist.value, form.balloonbouquets.selectedIndex);
	if (orderBalloonbouquet.orderinfo != "none") {
		form.bouquet.value = orderBalloonbouquet.orderinfo;
		form.code_balloonbouquet.value = orderBalloonbouquet.ordercode;
		form.amount.value = "" + (parseInt(orderBalloonbouquet.cost) + parseInt(form.amount.value));
	} else {
		form.balloonbouquets.selectedIndex = 0;
	}
	if (form.code_balloonbouquet.value == "") {
		form.code_balloonbouquet.value = "none";
	}
	form.orderinfo.value = form.code_balloonbouquet.value + " " + form.orderinfo.value;
	if (form.code_balloonbouquet.value != "none") {
		form.order_description.value = form.bouquet.value + " " + form.order_description.value;
	}
// Deluxe
	if (orderBalloon.upgrade != "Any") {
		form.deluxe.value = orderBalloon.upgrade;
		form.code_deluxe.value = orderBalloon.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 (orderBalloon.gifts != "Any") {
		form.extra_gifts.value = orderBalloon.gifts;
		form.st_gifts_orderinfo.value = "***  " + bouquet_object.gifts + "\n";
		form.code_gifts.value = orderBalloon.giftscode;
	} else {
		var orderGift = get_giftsObject(form.gifts.selectedIndex);
		if (orderGift.orderinfo != "none") {
			form.extra_gifts.value = orderGift.orderinfo;
			form.st_gifts_orderinfo.value = "***  " + orderGift.orderinfo + "\n";
			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) {
		var orderTickbox1 = get_tickboxObject(0);
		form.st_tickbox1name.value = orderTickbox1.header + ":";
		form.st_tickbox1value.value = "No";
		form.st_txttickbox1.value = orderTickbox1.header + " : ";
		if (form.tickbox1_tick.checked) {
			form.st_tickbox1value.value = "Yes";
			form.code_tickbox1.value = orderTickbox1.ordercode;
			form.tickbox1_description.value = orderTickbox1.orderinfo;
			form.st_tickbox1_orderinfo.value = "***  " + orderTickbox1.orderinfo + "\n";
			form.amount.value = "" + (parseInt(orderTickbox1.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 orderTickbox2 = get_tickboxObject(1);
		form.st_tickbox2name.value = orderTickbox2.header + ":";
		form.st_tickbox2value.value = "No";
		form.st_txttickbox2.value = orderTickbox2.header + " : ";
		if (form.tickbox2_tick.checked) {
			form.st_tickbox2value.value = "Yes";
			form.code_tickbox2.value = orderTickbox2.ordercode;
			form.tickbox2_description.value = orderTickbox2.orderinfo;
			form.st_tickbox2_orderinfo.value = "***  " + orderTickbox2.orderinfo + "\n";
			form.amount.value = "" + (parseInt(orderTickbox2.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 orderTickbox3 = get_tickboxObject(2);
		form.st_tickbox3name.value = orderTickbox3.header + ":";
		form.st_tickbox3value.value = "No";
		form.st_txttickbox3.value = orderTickbox3.header + " : ";
		if (form.tickbox3_tick.checked) {
			form.st_tickbox3value.value = "Yes";
			form.code_tickbox3.value = orderTickbox3.ordercode;
			form.tickbox3_description.value = orderTickbox3.orderinfo;
			form.st_tickbox3_orderinfo.value = "***  " + orderTickbox3.orderinfo + "\n";
			form.amount.value = "" + (parseInt(orderTickbox3.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;
		}
	}
// Tickbox4 (if enabled)
	if (form.tickbox4_tick) {
		var orderTickbox4 = get_tickboxObject(3);
		form.st_tickbox4name.value = orderTickbox4.header + ":";
		form.st_tickbox4value.value = "No";
		form.st_txttickbox4.value = orderTickbox4.header + " : ";
		if (form.tickbox4_tick.checked) {
			form.st_tickbox4value.value = "Yes";
			form.code_tickbox4.value = orderTickbox4.ordercode;
			form.tickbox4_description.value = orderTickbox4.orderinfo;
			form.st_tickbox4_orderinfo.value = "***  " + orderTickbox4.orderinfo + "\n";
			form.amount.value = "" + (parseInt(orderTickbox4.cost) + parseInt(form.amount.value));
		}
		form.st_txttickbox4.value += form.st_tickbox4value.value + "\n";
		if (form.code_tickbox4.value == "") {
			form.code_tickbox4.value = "none";
		}
		form.orderinfo.value += ", " + form.code_tickbox4.value;
		if (form.code_tickbox4.value != "none") {
			form.order_description.value += " and " + form.tickbox4_description.value;
		}
	}
// Tickbox5 (if enabled)
	if (form.tickbox5_tick) {
		var orderTickbox5 = get_tickboxObject(4);
		form.st_tickbox5name.value = orderTickbox5.header + ":";
		form.st_tickbox5value.value = "No";
		form.st_txttickbox5.value = orderTickbox5.header + " : ";
		if (form.tickbox5_tick.checked) {
			form.st_tickbox5value.value = "Yes";
			form.code_tickbox5.value = orderTickbox5.ordercode;
			form.tickbox5_description.value = orderTickbox5.orderinfo;
			form.st_tickbox5_orderinfo.value = "***  " + orderTickbox5.orderinfo + "\n";
			form.amount.value = "" + (parseInt(orderTickbox5.cost) + parseInt(form.amount.value));
		}
		form.st_txttickbox5.value += form.st_tickbox5value.value + "\n";
		if (form.code_tickbox5.value == "") {
			form.code_tickbox5.value = "none";
		}
		form.orderinfo.value += ", " + form.code_tickbox5.value;
		if (form.code_tickbox5.value != "none") {
			form.order_description.value += " and " + form.tickbox5_description.value;
		}
	}
// Postage
	if (orderBalloon.postage != "Any") {
		form.delivery_method.value = orderBalloon.postage;
		form.code_postage.value = orderBalloon.postagecode;
	} else {
		var orderPostage = getPostageObject(form.postagelist.value, form.postage.selectedIndex, parseInt(form.del_weekday.value));
		if (orderPostage != null) {
			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));
		}
	}
// 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)) {
		for (var i=0;i<offers.length;i++) {
			var 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\nballoon: " + form.balloon.value + " ("+form.code_balloon.value+")\nbouquet: " + form.bouquet.value + " ("+form.code_balloonbouquet.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 today = new Date();
	today.setTime(timeoffset + today.getTime());
	var todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	var deliveryDate;
	var is_preset_date = false;
	var is_asap = false;
	var orderPresetdate = get_presetdatesObject(form.del_presetdate.selectedIndex);
	if ((orderBalloon.occasion != "Any") && (orderBalloon.occasion != orderPresetdate.occasion)) {
		for (var i=0;i<presetdates.length;i++) {
			var tempPresetdate = get_presetdatesObject(i);
			if (tempPresetdate.occasion == orderBalloon.occasion) {
				return(formError("Sorry, your selected " + productName + " can only be delivered on " + tempPresetdate.description, form.del_presetdate));
			}
		}
	}
	if (orderPresetdate.occasion == "asap") {
		is_asap = true;
		form.del_textdate.value = orderPresetdate.description;
		form.del_textdaydate.value = orderPresetdate.description;
	} else if (orderPresetdate.occasion != "asbelow") {
		is_preset_date = true;
		if (formfields2date(form.del_day, form.del_month, form.del_year, years).valueOf() != orderPresetdate.date.valueOf()) {
			return(formError("You have chosen delivery dates of both " + orderPresetdate.description + " and " + date2string(deliveryDate, " / ") + "\nPlease select just one delivery date.", form.del_presetdate));
		}
		deliveryDate = orderPresetdate.date;
		form.del_textdate.value = orderPresetdate.description;
		form.del_textdaydate.value = orderPresetdate.description;
	} else {
		if (!formDateIsValid("delivery", form.del_day, form.del_month, form.del_year, years)) return false;
		deliveryDate = formfields2date(form.del_day, form.del_month, form.del_year, years);
		form.del_textdate.value = date2string(deliveryDate, " / ");
		form.del_textdaydate.value = date2daystring(deliveryDate);
	}
	if (!is_asap) {
		var selectfield;
		if (is_preset_date) {
			selectfield = form.del_presetdate;
		} else {
			selectfield = form.del_day;
		}
		// Check not before today
		if (!formDateIsAfterToday("delivery", form.del_day, form.del_month, form.del_year, form.del_presetdate, todayDate, deliveryDate, is_preset_date)) return false;
		// Check not today
		if (!formDateIsNotToday("delivery", selectfield, todayDate, deliveryDate)) return false;
		// Check not more than a year ahead
		if (!formDateIsLessThanYearFromToday("delivery", form.del_day, form.del_month, form.del_year, form.del_presetdate, todayDate, deliveryDate, is_preset_date)) return false;
		if (!is_preset_date) { // don't check day for presetdates e.g. because Mothering Sunday
			// Check baddates
			for (var i=0;i<baddates.length;i++) {
				var tempBaddate = get_baddatesObject(i);
				if (deliveryDate.valueOf() == tempBaddate.date.valueOf()) {
					return(formError(tempBaddate.message, selectfield));
				}
			}
			if (deliveryDate.getDay() == 0) { // sunday
				return(formError("Sorry, Sunday deliveries not available", selectfield));
			}
		}
		var days_until_delivery = getDaysBetweenDates(todayDate, deliveryDate);
		if (deliveryDate.getDay() == 1) { // monday
		//	return(formError("Sorry, Monday deliveries not available", selectfield));
			if (days_until_delivery == 1) { // today is Sunday
				return(formError("Sorry, Monday deliveries can't be ordered on Sunday", selectfield));
			} else if (days_until_delivery ==  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", selectfield));
				}
			}
		}
		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, selectfield));
		}
	}
/*	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;
	disableDateFields(false);
	escapeField(form.message);
	escapeField(form.signature);
/*	escapeField(form.del_address);
	escapeField(form.additional);*/
	return true;
}

function parsePresetDate(index) {
	disableDateFields(false);
	var selectPresetdate = get_presetdatesObject(index);
	var date;
	if ((selectPresetdate.occasion != "asbelow") && (selectPresetdate.occasion != "asap")) {
		date = selectPresetdate.date;
	}
	set_date(date);
	if (selectPresetdate.occasion != "asbelow") {
		disableDateFields(true);
		var new_day;
		if ((selectPresetdate.occasion == "none") || (selectPresetdate.saturdaypostage == "both")) {
			new_day = 9;
		} else if (selectPresetdate.saturdaypostage == "yes") {
			new_day = 6;
		} else if (selectPresetdate.saturdaypostage == "no") {
			new_day = 1;
		}
		updatePostage(new_day, parseInt(document.orderform.postagelist.value));
	}
}

function disableDateFields(disabled) {
	document.orderform.del_day.disabled = disabled;
	document.orderform.del_month.disabled = disabled;
	document.orderform.del_year.disabled = disabled;
}

function parseBalloon(index) {
	var selectBalloon = get_balloonObject(index);
	if (selectBalloon.orderinfo != "none") {
		// Check balloon bouquet
		showCategory("balloonbouquets", parseInt(selectBalloon.bouquetcategory), "orderform", "parseBalloonBouquet(this.selectedIndex);recalculatePrice()");
		// Check balloon upgrades
		checkFieldOptions("upgrades", selectBalloon.upgrade, parseInt(selectBalloon.upgradecategory), "orderform", "recalculatePrice()");
		// Check balloon gifts
		checkNonCategoryFieldOptions("gifts", selectBalloon.gifts, giftslist, "orderform", "recalculatePrice()");
		// Check balloon postage
		if (selectBalloon.postage == "Any") {
			var selectBalloonBouquet = get_balloonbouquetsObject(document.orderform.balloonbouquetslist.value, document.orderform.balloonbouquets.selectedIndex);
			updateBalloonBouquetPostage(selectBalloon, selectBalloonBouquet);
		} else {
			setList("postage", 0, "<OPTION>" + selectBalloon.postage + "</OPTION>", "orderform");
		}
		// Check balloon occasion
		parseOccasion(selectBalloon.occasion);
		// Megalloons
		var megalloonsize = 0;
		if (selectBalloon.ordercode == "mega_1") {
			megalloonsize = 1;
		} else if (selectBalloon.ordercode == "mega_2") {
			megalloonsize = 2;
		} else if (selectBalloon.ordercode == "mega_3") {
			megalloonsize = 3;
		} else if (selectBalloon.ordercode == "mega_4") {
			megalloonsize = 4;
		} else if (selectBalloon.ordercode == "mega_5") {
			megalloonsize = 5;
		}
		showMegalloonText(megalloonsize);
		// Numberlloons
		var numberlloonsize = 0;
		var numberlloonstyle = '';
		if (selectBalloon.ordercode == "pillow_1") {
			numberlloonsize = 1;
			numberlloonstyle = 'pillow';
		} else if (selectBalloon.ordercode == "silver_1") {
			numberlloonsize = 1;
			numberlloonstyle = 'silver';
		} else if (selectBalloon.ordercode == "party_1") {
			numberlloonsize = 1;
			numberlloonstyle = 'party';
		} else if (selectBalloon.ordercode == "junior_1") {
			numberlloonsize = 1;
			numberlloonstyle = 'junior';
		} else if (selectBalloon.ordercode == "pillow_2") {
			numberlloonsize = 2;
			numberlloonstyle = 'pillow';
		} else if (selectBalloon.ordercode == "silver_2") {
			numberlloonsize = 2;
			numberlloonstyle = 'silver';
		} else if (selectBalloon.ordercode == "party_2") {
			numberlloonsize = 2;
			numberlloonstyle = 'party';
		} else if (selectBalloon.ordercode == "junior_2") {
			numberlloonsize = 2;
			numberlloonstyle = 'junior';
		} else if (selectBalloon.ordercode == "pillow_3") {
			numberlloonsize = 3;
			numberlloonstyle = 'pillow';
		} else if (selectBalloon.ordercode == "silver_3") {
			numberlloonsize = 3;
			numberlloonstyle = 'silver';
		} else if (selectBalloon.ordercode == "party_3") {
			numberlloonsize = 3;
			numberlloonstyle = 'party';
		} else if (selectBalloon.ordercode == "junior_3") {
			numberlloonsize = 3;
			numberlloonstyle = 'junior';
		}
		showNumberlloonText(numberlloonsize, numberlloonstyle);
		// Show balloon preview
		if ((megalloonsize == 0) && (numberlloonsize == 0)) {
			update_balloon_preview(selectBalloon.smallimageurl, selectBalloon.ordercode);
		}
	} else {
		// Reset all to defaults
		showCategory("balloonbouquets", default_balloonbouquet, "orderform", "parseBalloonBouquet(this.selectedIndex);recalculatePrice()");
		showCategory("upgrades", default_upgrade, "orderform", "recalculatePrice()");
		setList("gifts", 1, giftslist, "orderform", "recalculatePrice()");
		showPostageCategory(default_postage);
		showMegalloonText(0);
		showNumberlloonText(0, '');
		update_balloon_preview('', '');
		document.orderform.del_presetdate.disabled = false;
	}
}

function showBalloonPreview(label, image1, image2, image3, image4, image5, clickfunc) {
	writeout('preview_label', label);
	document.preview1.src = image1;
	document.preview1.onclick = clickfunc;
	if (clickfunc != null) {
		document.preview1.alt = "Click to Enlarge";
		document.preview1.style.cursor = "pointer";
	} else {
		document.preview1.alt = "";
		document.preview1.style.cursor = "default";
	}
	document.preview2.src = image2;
	document.preview3.src = image3;
	document.preview4.src = image4;
	document.preview5.src = image5;
}

function update_balloon_preview(balloon_image, ordercode) {
	var label = "";
	var image1 = "images/SPACER.gif";
	var image2 = "images/SPACER.gif";
	var image3 = "images/SPACER.gif";
	var image4 = "images/SPACER.gif";
	var image5 = "images/SPACER.gif";
	var clickfunc = null;
	if (balloon_image != '') {
		label = "";
		image1 = balloon_image;
		clickfunc = function() { newWindow('/cgi-bin/balloon_popup.pl?balloon='+ordercode,350,400)};
	}
	showBalloonPreview(label, image1, image2, image3, image4, image5, clickfunc);
}

function update_megalloon_preview(show_error) {
	var returncode = true;
	document.orderform.megalloon_request.value = document.orderform.megalloon_request.value.toUpperCase();
	var order_megalloons = "";
	for (var i=0;i<document.orderform.megalloon_request.value.length;i++) {
		var letter = document.orderform.megalloon_request.value.charAt(i);
		if (megalloons.indexOf(letter) != -1) {
			order_megalloons += letter;
		}
	}
	if (document.orderform.megalloon_request.value.length != order_megalloons.length) {
		document.orderform.megalloon_request.value = order_megalloons;
		returncode = false;
		if (show_error) {
			formError("Only the following Megalloons are available:\n0-9 and A-Z", document.orderform.megalloon_request);
		}
	}
	var label = "";
	var image1 = "images/SPACER.gif";
	var image2 = "images/SPACER.gif";
	var image3 = "images/SPACER.gif";
	var image4 = "images/SPACER.gif";
	var image5 = "images/SPACER.gif";
	var clickfunc = null;
	if (order_megalloons.length > 0) {
		label = "Your selected megalloon preview:";
		image1 = get_megalloon_image(order_megalloons.charAt(0));
	}
	if (order_megalloons.length > 1) {
		image2 = get_megalloon_image(order_megalloons.charAt(1));
	}
	if (order_megalloons.length > 2) {
		image3 = get_megalloon_image(order_megalloons.charAt(2));
	}
	if (order_megalloons.length > 3) {
		image4 = get_megalloon_image(order_megalloons.charAt(3));
	}
	if (order_megalloons.length > 4) {
		image5 = get_megalloon_image(order_megalloons.charAt(4));
	}
	showBalloonPreview(label, image1, image2, image3, image4, image5, clickfunc);
	return returncode;
}

function update_numberlloon_preview(show_error) {
	var returncode = true;
	var order_numberlloons = "";
	for (var i=0;i<document.orderform.numberlloon_request.value.length;i++) {
		var letter = document.orderform.numberlloon_request.value.charAt(i);
		if (numberlloons.indexOf(letter) != -1) {
			order_numberlloons += letter;
		}
	}
	if (document.orderform.numberlloon_request.value.length != order_numberlloons.length) {
		document.orderform.numberlloon_request.value = order_numberlloons;
		returncode = false;
		if (show_error) {
			formError("Only the following Numberlloons are available:\n0 1 2 3 4 5 6 7 8 9", document.orderform.numberlloon_request);
		}
	}
	var label = "";
	var image1 = "images/SPACER.gif";
	var image2 = "images/SPACER.gif";
	var image3 = "images/SPACER.gif";
	var image4 = "images/SPACER.gif";
	var image5 = "images/SPACER.gif";
	var clickfunc = null;
	var numberlloon_style = document.orderform.numberlloon_style.value;
	if (order_numberlloons.length > 0) {
		label = "Your selected numberlloon preview:";
		image1 = get_numberlloon_image(numberlloon_style, order_numberlloons.charAt(0));
	}
	if (order_numberlloons.length > 1) {
		image2 = get_numberlloon_image(numberlloon_style, order_numberlloons.charAt(1));
	}
	if (order_numberlloons.length > 2) {
		image3 = get_numberlloon_image(numberlloon_style, order_numberlloons.charAt(2));
	}
	showBalloonPreview(label, image1, image2, image3, image4, image5, clickfunc);
	return returncode;
}

function parseBalloonBouquet(index) {
	var selectBalloonBouquet = get_balloonbouquetsObject(document.orderform.balloonbouquetslist.value, index);
	var selectBalloon = get_balloonObject(document.orderform.type_balloon.selectedIndex);
	if (selectBalloon.orderinfo != "none") {
		if (selectBalloon.postage == "Any") {
			updateBalloonBouquetPostage(selectBalloon, selectBalloonBouquet);
		}
	}
}

function updateBalloonBouquetPostage(selectBalloon, selectBalloonBouquet) {
	var postage_category;
	if ((selectBalloonBouquet.orderinfo != "none") && (selectBalloonBouquet.postagecategory != "*")) {
		postage_category = parseInt(selectBalloonBouquet.postagecategory);
	} else {
		postage_category = parseInt(selectBalloon.postagecategory);
	}
	showPostageCategory(postage_category);
}

function set_date(date) {
	date2formfields(date, document.orderform.del_day, document.orderform.del_month, document.orderform.del_year, years);
	calculateWeekday(date);
}

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 updatePostage(weekday, postagecategory) {
	setList("postage", postagecategory, getPostageList(postagecategory, weekday), "orderform", "recalculatePrice()");
	recalculatePrice();
}

function showPostageCategory(category) {
	if (parseInt(document.orderform.postagelist.value) != category) {
		updatePostage(parseInt(document.orderform.del_weekday.value), category);
	}
}

function showMegalloonText(size) {
	if (parseInt(document.orderform.megalloon_size.value) != size) {
		label = "";
		required = "";
		text = "<INPUT TYPE=HIDDEN NAME='megalloon_size' VALUE='" + size + "'>";
		text += "<INPUT TYPE=HIDDEN NAME='numberlloon_size' VALUE='0'>";
		if (size > 0) {
			label = "Enter your "+size+" MEGALLOONS:";
			required = "*";
			text += "<INPUT TYPE=TEXT NAME='megalloon_request' SIZE="+size+" MAXLENGTH="+size+">";
			text += " <A HREF='#' onclick='update_megalloon_preview(true);return false'>Display preview</A>";
		}
		writeout('megalloon_label', label);
		writeout('megalloon_required', required);
		writeout('megalloon_text', text);
		if (size > 0) {
			update_megalloon_preview(false);
		}
	}
}

function showNumberlloonText(size, style) {
	if (parseInt(document.orderform.numberlloon_size.value) != size) {
		label = "";
		required = "";
		text = "<INPUT TYPE=HIDDEN NAME='numberlloon_size' VALUE='" + size + "'>";
		text += "<INPUT TYPE=HIDDEN NAME='megalloon_size' VALUE='0'>";
		if (size > 0) {
			label = "Enter your "+size+" NUMBERLLOONS:";
			required = "*";
			text += "<INPUT TYPE=TEXT NAME='numberlloon_request' SIZE="+size+" MAXLENGTH="+size+">";
			text += "<INPUT TYPE=HIDDEN NAME='numberlloon_style' VALUE='"+style+"'>";
			text += " <A HREF='#' onclick='update_numberlloon_preview(true);return false'>Display preview</A>";
		}
		writeout('megalloon_label', label);
		writeout('megalloon_required', required);
		writeout('megalloon_text', text);
		if (size > 0) {
			update_numberlloon_preview(false)
		}
	}
	if (size > 0) {
		if (document.orderform.numberlloon_style.value != style) {
			document.orderform.numberlloon_style.value = style;
			update_numberlloon_preview(false);
		}
	}
}

function parseOccasion(occasion) {
	document.orderform.del_presetdate.disabled = false;
	if (occasion != "Any") {
		for (var i=0;i<presetdates.length;i++) {
			var 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() {
	writeout('special_offer_text', "");
	cost = 0;
	var selectBalloon = get_balloonObject(document.orderform.type_balloon.selectedIndex);
	if (selectBalloon.orderinfo != "none") {
		cost = parseInt(selectBalloon.cost);
		var selectBalloonbouquet = get_balloonbouquetsObject(document.orderform.balloonbouquetslist.value, document.orderform.balloonbouquets.selectedIndex);
		if (selectBalloonbouquet.orderinfo != "none") {
			cost += parseInt(selectBalloonbouquet.cost);
		}
		if (selectBalloon.upgrade == "Any") {
			var selectUpgrade = get_upgradesObject(document.orderform.upgradeslist.value, document.orderform.upgrades.selectedIndex);
			if (selectUpgrade.orderinfo != "none") {
				cost += parseInt(selectUpgrade.cost);
			}
		}
		if (selectBalloon.gifts == "Any") {
			var selectGift = get_giftsObject(document.orderform.gifts.selectedIndex);
			if (selectGift.orderinfo != "none") {
				cost += parseInt(selectGift.cost);
			}
		}
		if (selectBalloon.postage == "Any") {
			var selectPostage = getPostageObject(document.orderform.postagelist.value, document.orderform.postage.selectedIndex, parseInt(document.orderform.del_weekday.value));
			if (selectPostage.orderinfo != "none") {
				cost += parseInt(selectPostage.cost);
			}
		}
		if (document.orderform.tickbox1_tick) {
			if (document.orderform.tickbox1_tick.checked) {
				var selectTickbox1 = get_tickboxObject(0);
				cost += parseInt(selectTickbox1.cost);
			}
		}
		if (document.orderform.tickbox2_tick) {
			if (document.orderform.tickbox2_tick.checked) {
				var selectTickbox2 = get_tickboxObject(1);
				cost += parseInt(selectTickbox2.cost);
			}
		}
		if (document.orderform.tickbox3_tick) {
			if (document.orderform.tickbox3_tick.checked) {
				var selectTickbox3 = get_tickboxObject(2);
				cost += parseInt(selectTickbox3.cost);
			}
		}
		if (document.orderform.tickbox4_tick) {
			if (document.orderform.tickbox4_tick.checked) {
				var selectTickbox4 = get_tickboxObject(3);
				cost += parseInt(selectTickbox4.cost);
			}
		}
		if (document.orderform.tickbox5_tick) {
			if (document.orderform.tickbox5_tick.checked) {
				var selectTickbox5 = get_tickboxObject(4);
				cost += parseInt(selectTickbox5.cost);
			}
		}
		if (!isBlank(document.orderform.offer.value)) {
			for (var i=0;i<offers.length;i++) {
				var tempOffer = get_offersObject(i);
				if (b64_md5(document.orderform.offer.value.toUpperCase()) == tempOffer.hashvalue) {
					writeout('special_offer_text', tempOffer.orderinfo);
					cost = Math.round((1 - (parseInt(tempOffer.percent) / 100)) * cost);
					break;
				}
			}
		}
	}
	document.orderform.display_price.value = formatPenceAs(cost, "£");
}

