var VAT_rate = 1.15;

function checkMulti(){
	if (Request.QueryString("multi").Count>0) { 
		window.document.Form1.multi.value="yes";
		window.document.Form1.multiID.value=Request.QueryString("multiID");
		window.document.Form1.amount.value=Request.QueryString("amount");
//		document.getElementById("Submitmore").style.visibility='hidden';
	}else{
		window.document.Form1.amount.value = 0.00;
	}
}

function showHidePartnerRows(response){
	// create partner details rows array
	var partnerRowNames = new Array();
	for (var i=0; i<=16; i++){
		partnerRowNames[i] = "partner_details" + (i+1);
	}
	if (response == "No") {
		for (var i=0; i<partnerRowNames.length; i++){			
			htmlItem = document.getElementById(partnerRowNames[i]);
			htmlItem.style.display = 'none';
		}
	}else{
		for (var i=0; i<partnerRowNames.length; i++){			
			htmlItem = document.getElementById(partnerRowNames[i]);
			htmlItem.style.display = '';
		}		
	}
}

var attendeeRowNames 	= new Array("attendee_type_row1","attendee_type_row2","attendee_type_row3","attendee_type_row4");
var fullRowNames 		= new Array("row_full1","row_full2");
var confOnlyRowNames 	= new Array("row_conf_only1","row_conf_only2");
var dayRowNames 		= new Array("row_day1","row_day2");
var workersRowNames 	= new Array("workers_row1","workers_row2","workers_row3","workers_row4","workers_row5","workers_row6");

function showHidePackageRows(choice){

	if (choice == "Day delegate"){
		for (var i=0; i<dayRowNames.length; i++){				
			document.getElementById(dayRowNames[i]).style.display = '';
		}
		for (var i=0; i<fullRowNames.length; i++){				
			document.getElementById(fullRowNames[i]).style.display = 'none';
		}
		for (var i=0; i<confOnlyRowNames.length; i++){				
			document.getElementById(confOnlyRowNames[i]).style.display = 'none';
		}		
		// make 'conf_package_day' radio button checked
		document.getElementById("conf_package_day").checked = true;
		
	}else if (choice == "Member delegate"){
		for (var i=0; i<dayRowNames.length; i++){				
			document.getElementById(dayRowNames[i]).style.display = '';
		}
		for (var i=0; i<fullRowNames.length; i++){				
			document.getElementById(fullRowNames[i]).style.display = '';
		}
		for (var i=0; i<confOnlyRowNames.length; i++){				
			document.getElementById(confOnlyRowNames[i]).style.display = '';
		}
		
	}else{
		for (var i=0; i<dayRowNames.length; i++){				
			document.getElementById(dayRowNames[i]).style.display = '';
		}
		for (var i=0; i<fullRowNames.length; i++){				
			document.getElementById(fullRowNames[i]).style.display = '';
		}
		for (var i=0; i<confOnlyRowNames.length; i++){				
			document.getElementById(confOnlyRowNames[i]).style.display = '';
		}		
		// make 'conf_package_day' radio button checked
		document.getElementById("conf_package_day").checked = false;
		clearRadioSet("day_delegate");
	}
}
function fridayOptions(checked){
	if (checked == true){
		// force 'Day Delegate' > 'Friday - sessions including evening reception' radio button to be checked
		// but only if the currently selected radio button is 'Friday - sessions only'
		if (radioCheckboxDetect("day_delegate_fri")){
			selectRadioCheckbox("day_delegate_fri_reception");	
		}
	}
}
function deselectFridayEvening(){
	document.getElementById("friday_evening_networking").checked = false;
}
	
var errors;
var popup;

function submitForm(type){
	
//	alert('before anything: '+document.getElementById("amount").value);

	errors = 0;
	popup = "Your form entries are incomplete:\n";
	checkMulti();
	
	// check all mandatory regular text fields
	var textFieldNames = new Array("title","first_name","last_name","organisation","address1","city","postcode","tel_no");
	for (var i=0; i<textFieldNames.length; i++){
		textCheck(textFieldNames[i]);
	}
	
	// check email field and display additional email error message
	if (!emailCheck("email")){
		popup+="\nPlease check that all email addresses are valid\n";
	}
	
	// check all mandatory radio button sets - "field name", number of options
	radioSetCheck("gender",2);
	// only check 'bringing a partner' field if a promo code is not being used
	if (document.getElementById("promotional_code").value == "") radioSetCheck("bringing_partner",2);	
	// bringing a partner, check the name has been filled
	if (radioCheckboxDetect("bringing_partner_yes")){
		textCheck("partner_name");
	}else{
		document.getElementById("r_partner_name").style.visibility = 'hidden';
		// reset all fields within the 'partner_options' fieldset
//		resetTextfieldsSet("partner_options");
	}

	// if visible in the form, check that an attendee type option has been chosen
	// use hidden promo code field value to check if we need to check this field
	if (document.getElementById("promotional_code").value == ""){
		var dropdownFieldNames = new Array("attendee_type");	
		for (var i=0; i<dropdownFieldNames.length; i++){
			dropdownCheck(dropdownFieldNames[i]);
		}		
	}
	// Has a conference package option been chosen?
	if (radioSetCheck("conf_package")){
		document.getElementById("r_conf_package").style.visibility 			= 'hidden';
		document.getElementById("r_conf_package_workers").style.visibility 	= 'hidden';
	}else{
		errors++;
		document.getElementById("r_conf_package").style.visibility 			= 'visible';
		document.getElementById("r_conf_package_workers").style.visibility 	= 'visible';		
	}

	
	// if 'Day Delegate' radio is checked then check that a day has been chosen
	if (radioCheckboxDetect("conf_package_day")){
		radioSetCheck("day_delegate",4);
	}else{
		clearRadioSet("day_delegate");
	}
	
	// check that Terms and Conditions checkbox has been checked
	if (!checkboxCheck("tandc")){
		popup+="\nPlease tick to confirm that you have read and\nagree with the Terms and Conditions\n";
	}
	
	if (type=="multi") {
		window.document.Form1.multi.value="yes";
	}else{
		window.document.Form1.multi.value="no";
	}
	
//	alert('after field checking: '+document.getElementById("amount").value);
	
	if (errors > 0){
		popup+="\nPlease complete the fields marked\nwith a red * and then re-submit.\n";
		alert(popup);
	}else{
		// calculate sum from this submission only
		var IndividualAmount_net = formatAsMoney(calculateFee(type));
		var IndividualAmount = formatAsMoney((IndividualAmount_net)*(VAT_rate));
		// populate hidden 'IndividualAmount' field with net value
		document.getElementById("IndividualAmount").value = IndividualAmount_net;
		// create text string with this info
		var IndividualAmount_str = "£" + IndividualAmount_net + " + VAT = £" + IndividualAmount;
		
		if (type=="multi") {
			var msg = "The payable amount for this delegate is " + IndividualAmount_str + ". Continue?";
			if (confirm(msg)){
				document.forms.Form1.submit();
			}
		}else{
			var payable_amount = document.getElementById("amount").value;
			// for total_amount field we need figure inc VAT
			document.getElementById("total_amount").value = formatAsMoney(payable_amount * VAT_rate);

			// create total amount payable string
			var totalAmount_str = payable_amount + " + VAT = £" + document.getElementById("total_amount").value; 
			
			// make sure 'amount' field has inc VAT value now that form is being fully submitted 
			document.getElementById("amount").value = document.getElementById("total_amount").value;
			// also fill 'net_amount' and 'vat_amount' fields accordingly
			document.getElementById("net_amount").value = payable_amount;
			document.getElementById("vat_amount").value = formatAsMoney(document.getElementById("total_amount").value - payable_amount);
			
			var msg = "The payable amount for this delegate is " + IndividualAmount_str + ".\n";			
			msg += "The total payable amount is £" + totalAmount_str + ". Continue?";
			if (confirm(msg)){
				document.forms.Form1.submit();
			}
		}		
	}
}
function calculateFee(type){
	
	// initialise sum value
	var sum = 0;

	// chosen delegate type
	var attendee_type = document.getElementById("attendee_type").options[document.getElementById("attendee_type").selectedIndex].value;

	// chosen Conference package
	if (document.getElementById("conf_package_full").checked == true){
		conf_package_choice = "Full";
		// also now make hidden 'accom_fri_26_june' and 'accom_sat_27_june' fields have value 'Yes'
		document.getElementById("accom_fri_26_june").value="Yes";
		document.getElementById("accom_sat_27_june").value="Yes";
	}else if (document.getElementById("conf_package_only").checked == true){
		conf_package_choice = "Conference only";
	}else if (document.getElementById("conf_package_day").checked == true){
		conf_package_choice = "Day";
	}else if (document.getElementById("conf_package_workers_option1").checked == true){
		conf_package_choice = "Worker option 1";
	}else if (document.getElementById("conf_package_workers_option2").checked == true){
		conf_package_choice = "Worker option 2";
	}

	if ((attendee_type == "Official Member delegate")||(attendee_type == "Member delegate")){
		if (conf_package_choice == "Full"){
			sum = (sum*1) + 550.00;
		}else if (conf_package_choice == "Conference only"){
			sum = (sum*1) + 250.00;
		}else if (conf_package_choice == "Day"){
			// which day
			if (radioCheckboxDetect("day_delegate_fri")) sum = (sum*1) + 80.00;
			if (radioCheckboxDetect("day_delegate_fri_reception")) sum = (sum*1) + 100.00;
			if (radioCheckboxDetect("day_delegate_sat")||radioCheckboxDetect("day_delegate_sun")) sum = (sum*1) + 130.00;
		}
	}else if ((attendee_type == "Non-Member delegate")||(attendee_type == "International delegate")||(attendee_type == "Day delegate")){
		if (conf_package_choice == "Full"){
			sum = (sum*1) + 650.00;
		}else if (conf_package_choice == "Conference only"){
			sum = (sum*1) + 350.00;
		}else if (conf_package_choice == "Day"){
			// which day
			if (radioCheckboxDetect("day_delegate_fri")) sum = (sum*1) + 120.00;
			if (radioCheckboxDetect("day_delegate_fri_reception")) sum = (sum*1) + 150.00;
			if (radioCheckboxDetect("day_delegate_sat")||radioCheckboxDetect("day_delegate_sun")) sum = (sum*1) + 180.00;
		}			
	}else{
		if (conf_package_choice == "Worker option 1"){
			sum = (sum*1) + 225.00;
		}else if (conf_package_choice == "Worker option 2"){
			sum = (sum*1) + 360.00;
		}
	}
	
	// gala dinner
	if (radioCheckboxDetect("presidents_dinner")){
		if ((attendee_type == "Official Member delegate")||(attendee_type == "Member delegate")){
			sum = (sum*1) + 60.00;
		}else if ((attendee_type == "Non-Member delegate")||(attendee_type == "International delegate")||(attendee_type == "Day delegate")){
			sum = (sum*1) + 80.00;
		}
		// if a Worker:
		else{
			sum = (sum*1) + 60.00;
		}
		// bringing children
		var presidents_dinner_children = document.getElementById("presidents_dinner_children").options[document.getElementById("presidents_dinner_children").selectedIndex].value;
		sum = (sum*1) + (presidents_dinner_children * 20.00);
	}

	// partner options
	if (document.getElementById("bringing_partner_yes").checked == true){
		sum = (sum*1) + 120.00;
		if (radioCheckboxDetect("member_partner")) sum = (sum*1) + 60.00;
		if (radioCheckboxDetect("non_member_partner")) sum = (sum*1) + 80.00;
	}
	
//	sum = formatAsMoney(sum);
//	alert('before: '+document.getElementById("amount").value);
	document.getElementById("amount").value = formatAsMoney((document.getElementById("amount").value*1) + (sum*1));
//	alert('after: ' +document.getElementById("amount").value);

	return sum;	
}

function showHideAttendeeRows(showHide){	
	if (showHide == 'hide'){
		for (var i=0; i<attendeeRowNames.length; i++){				
			document.getElementById(attendeeRowNames[i]).style.display = 'none';
		}
		// reset attendee type dropdown
		resetDropdown("attendee_type");
	}else{
		for (var i=0; i<attendeeRowNames.length; i++){				
			document.getElementById(attendeeRowNames[i]).style.display = '';
		}
	}
}
function showHideFullRows(showHide){	
	if (showHide == 'hide'){
		for (var i=0; i<fullRowNames.length; i++){				
			document.getElementById(fullRowNames[i]).style.display = 'none';
		}
		// deselect Full radio option
		document.getElementById("conf_package_full").checked = false;
	}else{
		for (var i=0; i<fullRowNames.length; i++){				
			document.getElementById(fullRowNames[i]).style.display = '';
		}
	}
}
function showHideConfOnlyRows(showHide){	
	if (showHide == 'hide'){
		for (var i=0; i<confOnlyRowNames.length; i++){				
			document.getElementById(confOnlyRowNames[i]).style.display = 'none';
		}
		// deselect Conference only radio option
		document.getElementById("conf_package_only").checked = false;
	}else{
		for (var i=0; i<confOnlyRowNames.length; i++){				
			document.getElementById(confOnlyRowNames[i]).style.display = '';
		}
	}
}
function showHideDayOnlyRows(showHide){	
	if (showHide == 'hide'){
		for (var i=0; i<dayRowNames.length; i++){				
			document.getElementById(dayRowNames[i]).style.display = 'none';
		}
		// deselect Day only radio option
		document.getElementById("conf_package_day").checked = false;
		// reset 'day_delegate' radio options set
		clearRadioSet("day_delegate");
	}else{
		for (var i=0; i<dayRowNames.length; i++){				
			document.getElementById(dayRowNames[i]).style.display = '';
		}
	}
}
function showHideWorkerRows(showHide){
	if (showHide == 'hide'){
		for (var i=0; i<workersRowNames.length; i++){				
			document.getElementById(workersRowNames[i]).style.display = 'none';
		}
		// deselect both Workers radio options
		document.getElementById("conf_package_workers_option1").checked = false;
		document.getElementById("conf_package_workers_option2").checked = false;
	}else{
		for (var i=0; i<workersRowNames.length; i++){				
			document.getElementById(workersRowNames[i]).style.display = '';
		}		
	}
}

function init(){
	checkMulti();

	// reset all input and select elements
//	resetAllTextfields();
//	resetAllDropdowns();
//	resetAllRadios();
//	resetAllCheckboxes();
	
	// hide all partner details rows by default
	showHidePartnerRows('No');
	showHideWorkerRows('hide');
}
window.onload = init;
