// order_form_functions.js for trrs.org NameARose
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_postage = 1;

function initForm1() {
	writeout('hidejsreq', "");
}

function initForm2() {
	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();
	parsePresetDate(document.orderform.del_presetdate.selectedIndex);
//	writeout('hidejsreq', "");
	setVisibility('hidejsreq', false);
	document.orderform.rose_image.value = "";
	if (types.length > 1) {
		for (i=0;i<document.orderform.type.length;i++) {
			document.orderform.type[i].checked = false;
		}
	}
	parseType(types[0].ordercode);
	document.orderform.userimage.checked = false;
	tickUserImage(false);
	document.orderform.display_price.disabled = true;
	recalculatePrice();
}

function Validate1(form) {
	if (!checkBlank("your Rose Name!", form.rose_name)) return false;
	if (form.rose_name.value.length > 30) {
	  	return formError("The Rose Name is too long. The maximum length is 30 characters.", form.rose_name);
	}
	if (hasBlank(form.rose_name.value)) {
 		return formError("Spaces aren't allowed in the Rose Name. Try a - (hyphen) or _ (underscore) instead.", form.rose_name);
	}
	var goodchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
	for (i=0;i<form.rose_name.value.length;i++) {
		letter = form.rose_name.value.charAt(i);
		if (goodchars.indexOf(letter) == -1) return formError("The Rose Name contains an invalid character. Only uppercase letters (A-Z), lowercase letters (a-z), numbers (0-9), underscores (_) and hyphens (-) are allowed.", form.rose_name);
	}
	return true;
}

function Validate2(form) {
// Initialize the variables
	form.orderinfo.value = "";
	form.order_description.value = "";
	form.uploadimage_url.value = "";
	form.rose_garden.value = "";
	form.garden_name.value = "";
	form.rose_url.value = "";
	form.rose_type.value = "";
	form.code_type.value = "";
	form.amount.value = "";
	form.extra_gifts.value = "";
	form.code_gifts.value = "";
	form.delivery_method.value = "Email";
	form.code_postage.value = "";
	form.special_offer.value = "None";
	form.del_textdate.value = "";
	form.del_address.value = "";
// Rose name
	form.orderinfo.value = form.rose_name.value;
	form.order_description.value = "The "+form.rose_name.value+" Rose";
// Certificate URL
	form.cert_url.value = form.homeurl.value + "/cgi-bin/createcertificate.pl?rose_name=" + form.rose_name.value + "&password=" + form.cert_password.value;
// Rose image
	if (form.rose_image.value == "") {
		return(formError("Please select an image for your rose"));
	} else if (form.rose_image.value == "user_supplied" ) {
		form.uploadimage_url.value = "\nVERY IMPORTANT INFORMATION\nYou have chosen to supply your own rose image and therefore need to visit the following link to upload it :-\n"+ form.homeurl.value +"/cgi-bin/uploadimage.pl?orderref="+ form.orderref.value +"&rose_name="+ form.rose_name.value +"\n";
	}
// Rose garden
	var orderGarden = get_gardensObject(get_gardensRealIndex(form.garden.selectedIndex));
	if (orderGarden.orderinfo != "none") {
		form.rose_garden.value = orderGarden.gardendirectory;
		form.garden_name.value = orderGarden.orderinfo;
		// Build URL for customer email
		form.rose_url.value = form.homeurl.value + "/" + form.rose_garden.value + "/the_" + form.rose_name.value + "_rose.html";
	} else {
		return(forError("Please choose which garden you want your rose to be planted in", form.garden));
	}
// Rose message
	if (!checkBlank("your Rose Message", form.rose_message)) return false;
// Rose presentation
	selectedType = -1;
	if (types.length == 1) {
		selectedType = 0;
	} else {
		for (i=0;i<form.type.length;i++) {
			if (form.type[i].checked) {
				selectedType = i;
				break;
			}
		}
	}
	if (selectedType == -1) {
		return(formError("Please choose how you would like your rose presented", null));
	}
	var orderType = get_typesObject(get_typesRealIndex(selectedType));
	form.rose_type.value = orderType.orderinfo;
	form.code_type.value = orderType.ordercode;
	form.amount.value = "" + parseInt(orderType.cost);
	form.orderinfo.value += ", " + form.code_type.value;
	form.order_description.value += " sent " + form.rose_type.value;
	if (orderType.ordercode == "post") {
// Gifts
		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;
		}
// Postage
		var orderPostage = get_postageObject(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));
		}
	} else if (orderType.ordercode == "email") {
		if (form.code_gifts.value == "") {
			form.code_gifts.value = "none";
		}
		form.orderinfo.value += ", " + form.code_gifts.value;
		form.delivery_method.value = "Email";
		form.code_postage.value = "email";
	} else if (orderType.ordercode == "no_del") {
		if (form.code_gifts.value == "") {
			form.code_gifts.value = "none";
		}
		form.orderinfo.value += ", " + form.code_gifts.value;
		form.delivery_method.value = "N/A";
		form.code_postage.value = "none";
	}
// Offers
	var orderOffer = findOffer(form.offer.value);
	if (orderOffer != null) {
		form.amount.value = "" + applyOffer(orderOffer, parseInt(form.amount.value));
		form.special_offer.value = orderOffer.orderinfo;
	}
// TESTLINE
// Take the two // characters off the start of the next line to test
//alert("OrderNo : " + form.orderref.value + "\n\nrose_name: " + form.rose_name.value + "\ngarden_name: "+ form.garden_name.value +"\n\nrose_type: " + form.rose_type.value + " (" + form.code_type.value + ")\n\nrose_image: " + form.rose_image.value + "\nextra_gifts: " + form.extra_gifts.value + " ("+form.code_gifts.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);
// Presetdates
	if (orderType.ordercode != "no_del") {
		var orderPresetdate = get_presetdatesObject(form.del_presetdate.selectedIndex);
		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() == 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 badMessage = findBaddatesMessage(deliveryDate);
			if (badMessage != '') {
				return(formError(badMessage, 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 (orderType.ordercode == "email") {
		if (!checkEmail("the Delivery E-mail Address", form.del_email1)) return false;
		if (!checkEmail("the Confirmation Delivery E-mail Address", form.del_email2)) return false;
		if (form.del_email1.value != form.del_email2.value) {
			return(formError("Please check both E-mail addresses match", form.del_email2));
		}
		form.del_address.value = form.del_email1.value;
	}
	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 (orderType.ordercode == "post") {
		if (isBlank(form.del_address_form.value)) {
			form.del_address_form.value = form.address.value + "\n" + form.town.value + "\n" + form.county.value + "\n" + form.postcode.value + "\n" + form.country.value;
		}
		form.del_address.value = form.del_address_form.value;
	}
	if (!checkBlank("a Telephone No.", form.telephone)) return false;
	if (orderType.ordercode != "no_del") {
		form.del_presetdate.disabled = false;
		form.del_day.disabled = false;
		form.del_month.disabled = false;
		form.del_year.disabled = false;
		escapeField(form.rose_message);
		escapeField(form.del_message);
		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 tickUserImage(ticked) {
	if (ticked) {
		writeout('image_select', "");
		document.orderform.rose_image.value = 'user_supplied';
		alert("Instructions to upload your own rose image will be E-mailed to you immediatly after your order has been placed");
	} else {
		document.orderform.rose_image.value = '';
		writeout('image_select', "Or if you prefer you can <A HREF=\"javascript:newWindow('/popup_roseimages.html',350,350)\">click here</A> to choose from one of our own Name a Rose images.<BR><A HREF=\"javascript:newWindow('/popup_roseimages.html',350,350)\"><IMG SRC='images/logo_nar.gif' NAME='rose_image' WIDTH=90 HEIGHT=90 BORDER=0 ALT=''></A>");
	}
}

function parseType(type) {
	if (type == "post") {
		writeout('js_postage1a', "DELIVERY METHOD:<BR>");
		writeout('js_postage1b', "Please check your delivery method carefully!");
		writeout('js_postage2', "*");
		writeout('js_postage3', "<SELECT NAME='postage' onChange='recalculatePrice()'>" + postage_html + "</SELECT>&#32;<A HREF=\"javascript:newWindow('/delivery_method.html',370,420)\">Click for info.</A>");

		writeout('js_gifts1a', "MAKE YOUR NAME A ROSE GIFT EXTRA SPECIAL:<BR>");
		writeout('js_gifts1b', "Make your worldwide Name a Rose Gift even more special with a little something from our range of wonderful extras!");
		writeout('js_gifts2', "&nbsp;");
		writeout('js_gifts3', "<SELECT NAME='gifts' onChange='recalculatePrice()'>" + gifts_html + "</SELECT>");

		writeout('js_delmessage1a', "YOUR ROSE DELIVERY MESSAGE:<BR>");
		writeout('js_delmessage1b', "This is the message that will be written inside your Name a Rose Presentation Card. If this is left blank we will use your Rose Message!");
		writeout('js_delmessage2', "");
		writeout('js_delmessage3', "<TEXTAREA NAME='del_message' COLS='30' ROWS='7' WRAP='VIRTUAL'></TEXTAREA>");

//		writeout('js_deldate1a', "DELIVERY DATE:<BR>");
//		writeout('js_deldate1b', "Please check your delivery date and day carefully!");
//		writeout('js_deldate2', "*");
////		writeout('js_deldate3', "");
//		setVisibility('js_deldate3', true);
		setVisibility('js_deldate', true);

		writeout('js_delname1', "DELIVERY NAME:<BR>");
		writeout('js_delname2', "*");
		writeout('js_delname3', "<INPUT TYPE=TEXT NAME='del_name' SIZE='30'>");

		writeout('js_deladdress1a', "DELIVERY ADDRESS:<BR>");
		writeout('js_deladdress1b', "If the Delivery Address is the same as your Contact Address please leave this blank.");
		writeout('js_deladdress2', "&nbsp;");
		writeout('js_deladdress3', "<TEXTAREA NAME='del_address_form' COLS='30' ROWS='7' WRAP='virtual'></TEXTAREA>");

		writeout('js_delphone1a', "DELIVERY PHONE NUMBER:");
		writeout('js_delphone1b', "");
		writeout('js_delphone2', "&nbsp;");
		writeout('js_delphone3', "<INPUT TYPE=TEXT NAME='del_phone' SIZE='30'>");

		document.orderform.gifts_label_html.value = "Extra Gifts:";
		document.orderform.gifts_label_txt.value = "\nExtra Gifts :";
		document.orderform.del_phone_label_txt.value = "\nPhone :";
		document.orderform.del_date_label_html.value = "Delivery Date:";
		document.orderform.del_date_label_txt.value = "\n\nDelivery Date :";
		document.orderform.del_name_label_txt.value = "\n\nDelivery Name :";
		document.orderform.del_address_label_txt.value = "\nDelivery Address :";
		document.orderform.del_message_label_txt.value = "\nDelivery Message :";
	} else if (type == "email") {
		writeout('js_postage1a', "");
		writeout('js_postage1b', "");
		writeout('js_postage2', "");
		writeout('js_postage3', "");

		writeout('js_gifts1a', "");
		writeout('js_gifts1b', "");
		writeout('js_gifts2', "");
		writeout('js_gifts3', "");

		writeout('js_delmessage1a', "YOUR ROSE DELIVERY MESSAGE:<BR>");
		writeout('js_delmessage1b', "This is the message that will be sent along with your Name a Rose Presentation Email. (This can be left blank if you prefer)");
		writeout('js_delmessage2', "");
		writeout('js_delmessage3', "<TEXTAREA NAME='del_message' COLS='30' ROWS='7' WRAP='VIRTUAL'></TEXTAREA>");

//		writeout('js_deldate1a', "DELIVERY DATE:<BR>");
//		writeout('js_deldate1b', "Please check your delivery date and day carefully!");
//		writeout('js_deldate2', "*");
////		writeout('js_deldate3', "");
//		setVisibility('js_deldate3', true);
		setVisibility('js_deldate', true);

		writeout('js_delname1', "DELIVERY NAME:<BR>");
		writeout('js_delname2', "*");
		writeout('js_delname3', "<INPUT TYPE=TEXT NAME='del_name' SIZE='30'>");

		writeout('js_deladdress1a', "DELIVERY E-MAIL ADDRESS:");
		writeout('js_deladdress1b', "");
		writeout('js_deladdress2', "*");
		writeout('js_deladdress3', "<INPUT TYPE=TEXT NAME='del_email1' SIZE='30'>");

		writeout('js_delphone1a', "CONFIRM DELIVERY E-MAIL ADDRESS:<BR>");
		writeout('js_delphone1b', "To prevent any mistakes");
		writeout('js_delphone2', "*");
		writeout('js_delphone3', "<INPUT TYPE=TEXT NAME='del_email2' SIZE='30'>");

		document.orderform.gifts_label_html.value = "";
		document.orderform.gifts_label_txt.value = "";
		document.orderform.del_phone_label_txt.value = "";
		document.orderform.del_date_label_html.value = "Delivery Date:";
		document.orderform.del_date_label_txt.value = "\n\nDelivery Date :";
		document.orderform.del_name_label_txt.value = "\n\nDelivery Name :";
		document.orderform.del_address_label_txt.value = "\nDelivery Address :";
		document.orderform.del_message_label_txt.value = "\nDelivery Message :";
	} else if (type == "no_del") {
		writeout('js_postage1a', "");
		writeout('js_postage1b', "");
		writeout('js_postage2', "");
		writeout('js_postage3', "");

		writeout('js_gifts1a', "");
		writeout('js_gifts1b', "");
		writeout('js_gifts2', "");
		writeout('js_gifts3', "");
		


//		writeout('js_deldate1a', "");
//		writeout('js_deldate1b', "");
//		writeout('js_deldate2', "");
//// 		writeout('js_deldate3', "");
//		setVisibility('js_deldate3', false);
		setVisibility('js_deldate', false);
		
		
//		delmessage1a', "NO DELIVERY INFORMATION REQUIRED???? WRONG SPOT... ASK ANDY
		writeout('js_delmessage1a', "");
		writeout('js_delmessage1b', "");
		writeout('js_delmessage2', "");
		writeout('js_delmessage3', "");
		
		writeout('js_delname1', "");
		writeout('js_delname2', "");
		writeout('js_delname3', "");

		writeout('js_deladdress1a', "");
		writeout('js_deladdress1b', "");
		writeout('js_deladdress2', "");
		writeout('js_deladdress3', "");

		writeout('js_delphone1a', "");
		writeout('js_delphone1b', "");
		writeout('js_delphone2', "");
		writeout('js_delphone3', "");

		document.orderform.gifts_label_html.value = "";
		document.orderform.gifts_label_txt.value = "";
		document.orderform.del_phone_label_txt.value = "";
		document.orderform.del_date_label_html.value = "";
		document.orderform.del_date_label_txt.value = "";
		document.orderform.del_name_label_txt.value = "";
		document.orderform.del_address_label_txt.value = "";
		document.orderform.del_message_label_txt.value = "";
	}
}

function recalculatePrice() {
	cost = 0;
	selectedType = -1;
	if (types.length == 1) {
		selectedType = 0;
	} else {
		for (i=0;i<document.orderform.type.length;i++) {
			if (document.orderform.type[i].checked) {
				selectedType = i;
			}
		}
	}
	if (selectedType != -1) {
		var orderType = get_typesObject(selectedType);
		cost += parseInt(orderType.cost);
		if (orderType.ordercode == "post") {
			var selectGift = get_giftsObject(document.orderform.gifts.selectedIndex);
			if (selectGift.orderinfo != "none") {
				cost += parseInt(selectGift.cost);
			}
			var selectPostage = get_postageObject(document.orderform.postage.selectedIndex);
			if (selectPostage.orderinfo != "none") {
				cost += parseInt(selectPostage.cost);
			}
		}
		if (cost != 0) {
			var orderOffer = findOffer(document.orderform.offer.value);
			if (orderOffer != null) {
				cost = applyOffer(orderOffer, cost);
			}
		}
	}
	document.orderform.display_price.value = formatPenceAs(cost, "£");
}

function setVisibility(spanid, value) {
	if (document.getElementById) {
		spanNode = document.getElementById(spanid);
		if (value) {
			spanNode.style.display = 'block';
		} else {
			spanNode.style.display = 'none';
		}
	
	}
}

