var errors;
var popup;
var VAT_rate = 1.15;
var amount_basic = 0.00;
var amount_non_vat = 0.00;

//var professionalDropdowns = new Array("day1_workshop_1","day1_workshop_2","day1_workshop_3","day2_workshop_1","day2_workshop_2","day2_workshop_3");
//var parentDropdowns = new Array("day3_workshop_1","day3_workshop_2","day3_workshop_3","day3_workshop_4");

function init(){
	// make sure no package is selected by default
	showHideDropdowns()
	
	// set no discount applied by default
	discount_applied = false;
}
window.onload = init;

function formatAsMoney(mnt) {
	mnt -= 0;
	mnt = (Math.round(mnt*100))/100;
	return (mnt == Math.floor(mnt)) ? mnt + '.00' : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt);
}

function submitForm(){

	function emailCatch(email){	
		if (email.length>4){	
			var ampers=0;
			var dots=0;		
			for (i=0;i<(email.length);i++){
				if (email.substring(i,(i+1))=="@"){
					ampers++;
				}
			}		
			for (i=0;i<(email.length);i++){
				if (email.substring(i,(i+1))=="."){
					dots++;
				}
			}		
		}
		if ((email.length<5)||(ampers!=1)||(dots==0)){
			return true;
		}
	}
	
	errors = 0;
	popup = "Your form entries are incomplete:\n";
	
	var txtFields=new Array("title","first_name","last_name","address1","city","postcode","tel_no");
	for (var i=0; i<txtFields.length; i++){
		if (eval("document.Form1." + txtFields[i] + ".value") == "") {
			eval("document.getElementById('r_" + txtFields[i] + "').style.visibility='visible'");
			errors++;
		}else{
			eval("document.getElementById('r_" + txtFields[i] + "').style.visibility='hidden'");
		}
	}
	// check email field
	if (emailCatch(document.getElementById('email').value)){
		eval("document.getElementById('r_email').style.visibility='visible'");
		errors++;
		popup+="\nPlease enter a valid email address\n";			
	}else{
		eval("document.getElementById('r_email').style.visibility='hidden'");
	}
	// check a delegate package has been selected
	if (packageCount() == 0){
		errors++;
		popup+="\nPlease select a delegate package\n";
	}

	// have the Workshop options dropdowns been selected?
		var workshop_option_errors = 0;
		if (document.forms.Form1.professional_package.checked == true){
			var choice = document.getElementById("workshop_thurs_fri").options[document.getElementById("workshop_thurs_fri").selectedIndex].value;	
			if (choice == "") workshop_option_errors++;
		}
		if (document.forms.Form1.parent_package.checked == true){
			var choice = document.getElementById("workshop_sat").options[document.getElementById("workshop_sat").selectedIndex].value;	
			if (choice == "") workshop_option_errors++;
		}
		if (workshop_option_errors > 0){	
			popup+="\nPlease choose workshop option(s)\n";		
			errors++;
		}
		
	if (document.forms.Form1.tandc.checked!=true){
   		popup+="\nPlease tick to confirm that you have read and\nagree with the Terms and Conditions.\n";
		eval("document.getElementById('r_tandc').style.visibility='visible'");
		errors++;
	}else{
		eval("document.getElementById('r_tandc').style.visibility='hidden'");	
	}
	
	if (errors > 0){
		popup+="\nPlease complete the fields marked\nwith a red * and then re-submit.\n";
		alert(popup);
	}else{
		var payable_amount = calculateFee();
/*		var msg = "The payable amount is " + payable_amount + ". Continue?";
		if (confirm(msg)){
			// finally add the VAT
			var inc_vat = formatAsMoney((amount_non_vat)*(VAT_rate));
			document.getElementById("amount").value = inc_vat;
			// submit the form
			document.forms.Form1.submit();
		}
*/			
		// finally add the VAT
		var inc_vat = formatAsMoney((amount_non_vat)*(VAT_rate));
		document.getElementById("amount").value = inc_vat;
		// submit the form
		document.forms.Form1.submit();
	}

}

function currencyCheck(){
	// which currency has been selected?
	if (document.getElementById("currency_gbp").checked == true){
		currency_choice = "gbp";
		currency_code = "\u00A3";
		document.getElementById("currency").value = "gbp";
	}else if (document.getElementById("currency_euro").checked == true){
		currency_choice = "euro";
		currency_code = "\u20AC";
		document.getElementById("currency").value = "eur";
	}else if (document.getElementById("currency_usd").checked == true){
		currency_choice = "usd";
		currency_code = "\u0024";
		document.getElementById("currency").value = "usd";
	}	
}
function packageCount(){
	// how many packages have been selected?
	var package_count = 0;
	if (document.forms.Form1.professional_package.checked == true) package_count ++;
	if (document.forms.Form1.parent_package.checked == true) package_count ++;
	return package_count;
}
function packageCheck(){
	
	// reset payable amount
	amount_basic = 0.00;
	chosen_rate = 0.00;
	
	// which delegate package has been selected?
	// NOTE: enter prices below NOT INCLUDING VAT
	if (currency_choice == 'gbp'){
		if (document.forms.Form1.professional_package.checked == true){
			chosen_rate += 360.00;
		}
		if (document.forms.Form1.parent_package.checked == true){
			chosen_rate += 120.00;
		}				
	}else if (currency_choice == 'euro'){
		if (document.forms.Form1.professional_package.checked == true){
			chosen_rate += 430.00;
		}
		if (document.forms.Form1.parent_package.checked == true){
			chosen_rate += 150.00;	
		}
	}else if (currency_choice == 'usd'){
		if (document.forms.Form1.professional_package.checked == true){
			chosen_rate += 580.00;
		}
		if (document.forms.Form1.parent_package.checked == true){
			chosen_rate += 190.00;	
		}
	}
	amount_basic = formatAsMoney((chosen_rate)*1);	
}

function supportersClub(){
	
	// these fees DO NOT INCLUDE VAT	
	var supporters_fee = 0.00;
	if (currency_choice == 'gbp'){
		if (document.forms.Form1.supportersclub[1].checked == true){
			supporters_fee = 26.086956521739130434782608695652;
		}else if (document.forms.Form1.supportersclub[2].checked == true){
			supporters_fee = 52.17391304;
		}else if (document.forms.Form1.supportersclub[3].checked == true){
			supporters_fee = 52.17391304;
		}else if (document.forms.Form1.supportersclub[4].checked == true){
			supporters_fee = 104.34782608;
		}			
	}else if (currency_choice == 'euro'){
		if (document.forms.Form1.supportersclub[1].checked == true){
			supporters_fee = 33.043478260869565217391304347826;
		}else if (document.forms.Form1.supportersclub[2].checked == true){
			supporters_fee = 65.21739130434782608695652173913;	
		}else if (document.forms.Form1.supportersclub[3].checked == true){
			supporters_fee = 65.21739130434782608695652173913;	
		}else if (document.forms.Form1.supportersclub[4].checked == true){
			supporters_fee = 130.43478260869565217391304347826;	
		}
	}else if (currency_choice == 'usd'){
		if (document.forms.Form1.supportersclub[1].checked == true){
			supporters_fee = 41.739130434782608695652173913043;
		}else if (document.forms.Form1.supportersclub[2].checked == true){
			supporters_fee = 82.608695652173913043478260869565;	
		}else if (document.forms.Form1.supportersclub[3].checked == true){
			supporters_fee = 82.608695652173913043478260869565;	
		}else if (document.forms.Form1.supportersclub[4].checked == true){
			supporters_fee = 165.21739130434782608695652173913;	
		}
	}
	
	// has a discount been applied already? if not, apply a 10% discount
	// to the delegate fee here if 1, 2, 3 or 4 have been selected
	if ((document.forms.Form1.supportersclub[1].checked == true)||(document.forms.Form1.supportersclub[2].checked == true)||(document.forms.Form1.supportersclub[3].checked == true)||(document.forms.Form1.supportersclub[4].checked == true)){
//		alert('eligible');
		if (discount_applied == false){
			// override previously calculated 'amount_basic' value
			amount_basic = formatAsMoney((amount_basic * 0.9)*1);
//			discount_applied = true;
//			alert('discount_applied: ' + discount_applied);
		}
	}
//	alert('supporters_fee: ' + supporters_fee);
	return supporters_fee;
}
function accommodation(){
	
	var accommodation_fee = 0.00;
	var nights_booked = 0;
	
	if (document.getElementById("eventid").value == "260"){
		if (document.forms.Form1.accom_3rd.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_4th.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_5th.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_6th.checked == true){ nights_booked++; }
		
		// these fees DO NOT INCLUDE VAT
		if (currency_choice == 'gbp'){
			nightly_rate = 100.00;
		}else if (currency_choice == 'euro'){
			nightly_rate = 120.00;
		}else if (currency_choice == 'usd'){
			nightly_rate = 160.00;
		}	
	}else if (document.getElementById("eventid").value == "266"){
		if (document.forms.Form1.accom_30th.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_1st.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_2nd.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_3rd.checked == true){ nights_booked++; }
		
		// these fees DO NOT INCLUDE VAT
		if (currency_choice == 'gbp'){
			nightly_rate = 84.2608;
		}else if (currency_choice == 'euro'){
			nightly_rate = 96.5217;
		}else if (currency_choice == 'usd'){
			nightly_rate = 134.7826087;
		}
	}else if (document.getElementById("eventid").value == "267"){
		if (document.forms.Form1.accom_4th.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_5th.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_6th.checked == true){ nights_booked++; }
		if (document.forms.Form1.accom_7th.checked == true){ nights_booked++; }
		
		// these fees DO NOT INCLUDE VAT
		if (currency_choice == 'gbp'){
			nightly_rate = 100.00;
		}else if (currency_choice == 'euro'){
			nightly_rate = 120.00;
		}else if (currency_choice == 'usd'){
			nightly_rate = 160.00;
		}
	}
	
	accommodation_fee = (nights_booked * nightly_rate);
	return accommodation_fee;
}
function calculateFee(){
	currencyCheck();
	
	// if a promo code discount has NOT been applied, then recalculate the delegate fee here
	// this is important so that a Supporters club 10% discount can be applied to the correct fee (if applicable)
	if (discount_applied == false){
		packageCheck();		
	}
	
	// any extras to add?
	var addons = 0.00;
	var supporters_fee = supportersClub();
	var accommodation_fee = accommodation();
	
	addons = formatAsMoney((supporters_fee*1) + (accommodation_fee*1));

	amount_non_vat = formatAsMoney((amount_basic*1) + (addons*1));

	var inc_vat = formatAsMoney((amount_non_vat)*(VAT_rate));
	
	if (currency_choice == "gbp"){
		return currency_code + inc_vat + " inc VAT (" + currency_code + amount_non_vat + " + VAT)";
	}else{
		return currency_code + inc_vat;
	}
}

function codeCheck(){
	
	// get codes from input box
	var promo_code = document.getElementById("promotional_code").value.toUpperCase().replace(/^\s+|\s+$/g, '');

	// check a delegate package has been selected
	if (packageCount() == 0){
		document.getElementById("error_package").style.display = 'block';
		return;
	}else{
		document.getElementById("error_package").style.display = 'none';
	}
	currencyCheck();
	packageCheck();	
	
	if (promo_code != ''){
		// display 'Checking...' text and hide button
		document.getElementById("check_button").style.display = 'none';
		document.getElementById("checking_text").style.display = 'inline';
		
		// ajax request
		var url = "scripts/codecheck_ver2.aspx";
		request.open("POST", url, true);
		request.onreadystatechange = function(){updateFee(promo_code,amount_basic,currency_code);};
		request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		
		var sendString = "code=" + promo_code;
		request.send(sendString);
	}
	
}

var xmldoc;
var element;

function updateFee(promo_code,chosen_rate,currency_code){
	if (request.readyState == 4){
		if (request.status == 200) {
			
			xmldoc = request.responseXML;
			element = xmldoc.documentElement;
			var discount = element.firstChild.firstChild.nodeValue;		
		
			// hide any remaining info messages
			document.getElementById("fee_paragraph").style.display = 'none';
			document.getElementById("error_paragraph").style.display = 'none';
			document.getElementById("unchecked_paragraph").style.display = 'none';

			// no discount applied string
			var no_discount_str = '0.00';

			if (discount == no_discount_str){
				document.getElementById("error_paragraph").style.display = 'block';
				discount_applied = false;
			}else if (discount == "NA"){
				document.getElementById("unchecked_paragraph").style.display = 'block';
				discount_applied = false;
			}else{
				// display registration fee info
				var fee_holder = document.getElementById("fee_holder");
				while(fee_holder.hasChildNodes()){
					fee_holder.removeChild(fee_holder.lastChild);
				}
				if (discount == '1.00'){
					var fee_text = document.createTextNode("FREE");
					reduced_rate = 0;
					amount_basic = reduced_rate;
				}else{					
					var discount_multiple = (1 - discount)*1;
					reduced_rate = formatAsMoney((chosen_rate * discount_multiple)*1);
					
					var inc_vat = formatAsMoney(reduced_rate * VAT_rate);
					var vat_amount = formatAsMoney(inc_vat - reduced_rate);
					if (currency_choice == 'gbp'){
						var fee_string = currency_code + reduced_rate + " + VAT (" + currency_code + vat_amount + ") = " + currency_code + inc_vat;
					}else{
						var fee_string = currency_code + inc_vat;
					}
					var fee_text = document.createTextNode(fee_string);
					amount_basic = reduced_rate;		
				}	
				fee_holder.appendChild(fee_text);
				document.getElementById("fee_paragraph").style.display = 'block';
				discount_applied = true;
			}
			
			// hide 'Checking...' text and show button
			document.getElementById("check_button").style.display = 'inline';
			document.getElementById("checking_text").style.display = 'none';
			
//			alert('amount_basic after promo code discount: ' + amount_basic);
		}
	}
}

// create professional dropdowns rows array
var professionalRowNames = new Array();
for (var i=0; i<1; i++){
	professionalRowNames[i] = "professional_row" + (i+1);
}

// create parent dropdowns rows array
var parentRowNames = new Array();
for (var i=0; i<2; i++){
	parentRowNames[i] = "parent_row" + (i+1);
}

function showHideDropdowns(){
	// show/hide professionals dropdowns
	if (document.forms.Form1.professional_package.checked == true){
		// show professional dropdowns rows
		for (var i=0; i<professionalRowNames.length; i++){			
			document.getElementById(professionalRowNames[i]).style.display = '';
		}
	}else{
		// hide professional dropdowns rows
		for (var i=0; i<professionalRowNames.length; i++){			
			document.getElementById(professionalRowNames[i]).style.display = 'none';		
		}
		// reset professional dropdown selection
		document.getElementById("workshop_thurs_fri").selectedIndex = 0;		
	}
	// show/hide parent dropdowns
	if (document.forms.Form1.parent_package.checked == true){
		// show parent dropdowns rows
		for (var i=0; i<parentRowNames.length; i++){			
			document.getElementById(parentRowNames[i]).style.display = '';
		}
	}else{
		// hide parent dropdowns rows
		for (var i=0; i<parentRowNames.length; i++){			
			document.getElementById(parentRowNames[i]).style.display = 'none';
		}
		// reset parent dropdown selection
		document.getElementById("workshop_sat").selectedIndex = 0;
	}
}

function workshopDropdowns(workshopAttendance){
	if (workshopAttendance == "no"){
		// reset workshop option dropdowns
		document.getElementById("workshop_thurs_fri").selectedIndex = 0;
		document.getElementById("workshop_sat").selectedIndex = 0;
	}
}

function radioDetect(fieldName){
	if (document.getElementById(fieldName).checked != true){
		return false;
	}else{
		return true;
	}
}
