
var gold_price = 349;
var silver_price = 265;
var bronze_price = 219;

var bronze_silver_additional_night = 30;
var gold_additional_night = 42;

function updateVisibleGuests(numberOfGuests)
{
	for(var i = 1; i <= numberOfGuests; i++)
	{
		$('#guest_box_' + i).slideDown("fast");
	}

	for(var i = ((numberOfGuests*1)+1); i <= 8; i++)
	{
		$('#guest_box_' + i).slideUp("fast");
	}
}

function reviewAirportTransfers()
{
	if(document.getElementById('no_transfers_available'))
	{
		var transfer_to_available = false;
		var transfer_from_available = false;
		//check if number_of_nights exists and if it does check if it's set to three
		if(document.getElementById('number_of_nights') && document.getElementById('number_of_nights').selectedIndex == 1)
		{
			if(document.getElementById('which_3_nights') && document.getElementById('which_3_nights').selectedIndex == 0)
			{
				transfer_to_available = true;
			}

			if(document.getElementById('which_3_nights') && document.getElementById('which_3_nights').selectedIndex == (document.getElementById('which_3_nights').options.length-1))
			{
				transfer_from_available = true;
			}
		}
		else
		{
			//set to true because it must not exist or be set to 7
			transfer_to_available = true;
			transfer_from_available = true;
		}

		//check if they have additional hotel nights booked
		if(document.getElementById('additional_nights_from_start') && document.getElementById('additional_nights_from_start').options[document.getElementById('additional_nights_from_start').selectedIndex].value != 0)
		{
			transfer_to_available = false;
		}

		if(document.getElementById('additional_nights_from_end') && document.getElementById('additional_nights_from_end').options[document.getElementById('additional_nights_from_end').selectedIndex].value != 0)
		{
			transfer_from_available = false;
		}

		//now do the work to make them available or not
		if(transfer_to_available)
		{
			//just make sure it's visible, don't worry about the checkbox

			$('#transfer_to_option').slideDown("fast");
			//document.getElementById('transfer_to_option').style.display = 'block';
		}
		else
		{
			//uncheck the check box
			if(document.getElementById('airport_transfer_to_checkbox'))
			{
				document.getElementById('airport_transfer_to_checkbox').checked = false;
			}
			//$('#transfer_to').slideUp("fast");
			$('#transfer_to_option').slideUp("fast");
			document.getElementById('transfer_to').style.display = 'none';
			//document.getElementById('transfer_to_option').style.display = 'none';
		}

		//now do the work to make them available or not
		if(transfer_from_available)
		{
			//just make sure it's visible, don't worry about the checkbox
			//document.getElementById('transfer_from_option').style.display = 'block';
			$('#transfer_from_option').slideDown("fast");
		}
		else
		{
			//uncheck the check box
			if(document.getElementById('airport_transfer_from_checkbox'))
			{
				document.getElementById('airport_transfer_from_checkbox').checked = false;
			}

			//$('#transfer_from').slideUp("fast");
			$('#transfer_from_option').slideUp("fast");
			document.getElementById('transfer_from').style.display = 'none';
			//document.getElementById('transfer_from_option').style.display = 'none';
		}

		if(transfer_to_available == false && transfer_from_available == false)
		{
			document.getElementById('no_transfers_available').style.display = 'block';
		}
		else
		{
			document.getElementById('no_transfers_available').style.display = 'none';
		}
	}
}

function updatePrice()
{
	var total_cost = 0;

	if(document.getElementById('number_of_guests_select'))
	{
		//get number of guests
		var number_of_guests = document.getElementById('number_of_guests_select').options[document.getElementById('number_of_guests_select').selectedIndex].value;

		//check none of them will be deleted
		var original_number_of_guests = number_of_guests;
		for(var i = 1; i <= original_number_of_guests; i++)
		{
			if(document.getElementById('delete_on_save_' + i) && document.getElementById('delete_on_save_' + i).checked)
			{
				number_of_guests = number_of_guests - 1;
			}
		}

		var cost_per_guest = 0;

		if(document.getElementById('club_only'))
		{
			//club only package

			//get package
			var number_of_nights_selected_index = document.getElementById('number_of_nights').selectedIndex;

			cost_per_guest = 150;

			if(document.getElementById('number_of_nights').options[document.getElementById('number_of_nights').selectedIndex].value == 3)
			{
				//they've selected 3 nights
				var cost_per_guest = 90;
			}

		}
		else if(document.getElementById('holiday_package'))
		{
			//full holiday package
			cost_per_guest = 349;

			//additional_nights
			var additional_nights = (document.getElementById('additional_nights_from_start').options[document.getElementById('additional_nights_from_start').selectedIndex].value * 1) + (document.getElementById('additional_nights_from_end').options[document.getElementById('additional_nights_from_end').selectedIndex].value * 1);

			//packages
			if(document.getElementById('package_gold') && document.getElementById('package_gold').checked == true)
			{
				cost_per_guest = gold_price + (additional_nights * gold_additional_night);
				document.getElementById('hotel_night_cost').innerHTML = gold_additional_night;
			}
			if(document.getElementById('package_silver') && document.getElementById('package_silver').checked == true)
			{
				cost_per_guest = silver_price + (additional_nights * bronze_silver_additional_night);
				document.getElementById('hotel_night_cost').innerHTML = bronze_silver_additional_night;
			}
			if(document.getElementById('package_bronze') && document.getElementById('package_bronze').checked == true)
			{
				cost_per_guest = bronze_price + (additional_nights * bronze_silver_additional_night);
				document.getElementById('hotel_night_cost').innerHTML = bronze_silver_additional_night;
			}
		}
		else if(document.getElementById('club_only_iitd_2010'))
		{
			var packageElement = document.getElementById('package');
			var packageSelected = packageElement.options[packageElement.selectedIndex].value;

			if(packageSelected > 0)
			{
				cost_per_guest = cost_per_guest + packagePrices[packageSelected];
			}
		}

		//now check transfers
		if(document.getElementById('airport_transfer_to_checkbox') && document.getElementById('airport_transfer_to_checkbox').checked)
		{
			//they are having a transfer "to"
			cost_per_guest = cost_per_guest + costForTransfer('airport_transfer_to');
		}

		if(document.getElementById('airport_transfer_from_checkbox') && document.getElementById('airport_transfer_from_checkbox').checked)
		{
			//they are having a transfer "from"
			cost_per_guest = cost_per_guest + costForTransfer('airport_transfer_from');
		}

		total_cost = total_cost + (cost_per_guest * number_of_guests);

		if(document.getElementById('delivery_international') && document.getElementById('delivery_international').style.display == 'none')
		{
			total_cost = total_cost + 4.95;
		}


		document.getElementById('price').innerHTML = total_cost;
	}

}

function costForTransfer(element_id)
{
	var airport_code = document.getElementById(element_id).options[document.getElementById(element_id).selectedIndex].value;
	if(airport_code == "GRO")
	{
		return 17;
	}
	else
	{
		return 25;
	}
}

function updatePayPalTotals(additional_amount, deposit, total_remaining, discount)
{
	var amount_paying = (additional_amount*1) + (deposit*1);
	if(discount > 0)
	{
		if(amount_paying == ((total_remaining*1) + (deposit*1)))
		{
			//discount can be applied
			amount_paying = amount_paying - (discount*1);
			document.getElementById('discount_field').innerHTML = "-" + discount.toFixed(2);
		}
		else
		{
			document.getElementById('discount_field').innerHTML = "N/A";
		}
	}
	var three_percent = Math.round(((amount_paying) * 0.03)*100)/100;
	document.getElementById('paypal_surcharge').innerHTML = three_percent.toFixed(2);
	var total = Math.round(((three_percent*1) + amount_paying)*100)/100;
	document.getElementById('paypal_amount_input').value = total.toFixed(2);
	document.getElementById('paypal_custom').value = (additional_amount*1) + (deposit*1);
	document.getElementById('paypal_total').innerHTML = total.toFixed(2);
}

function checkRemainingBalanceInput(input_value, total_remaining)
{
	if((input_value*1) > (total_remaining*1))
	{
		alert("This value is more than the total remaining balance. Please enter a value less than or equal to " + total_remaining);
		document.getElementById('extra_payment').value = total_remaining.toFixed(2);
		document.getElementById('extra_payment').focus();
	}
}

function deleteBooking(bookingId)
{
	var answer = confirm("Delete booking " + (10000 + (bookingId*1)) + "?")
	if (answer){
		window.location = "/admin/delete/" + bookingId;
	}
}

function deleteHotel(hotelId)
{
	var answer = confirm("Delete hotel " + (hotelId*1) + "?")
	if (answer){
		window.location = "/admin-hotels/" + hotelId;
	}
}


function unarchiveBooking(bookingId)
{
	var answer = confirm("Restore booking " + (10000 + (bookingId*1)) + "?")
	if (answer){
		window.location = "/admin-archived-bookings/" + bookingId;
	}
}

function deleteBookingPayment(paymentId, amount, bookingRef)
{
	var answer = confirm("Delete this payment for " + amount  + "?");
	if (answer){
		window.location = "/view-booking/" + bookingRef + "/delete/" + paymentId;
	}
}

function deleteBookingComment(commentId, bookingRef)
{
	var answer = confirm("Delete this comment?");
	if (answer){
		window.location = "/view-booking/" + bookingRef + "/delete-comment/" + commentId;
	}
}

function deleteEmailTemplate(emailTemplateId, emailTemplateTitle)
{
	var answer = confirm("Delete template " + emailTemplateTitle + "?");
	if (answer){
		window.location = "/admin-email-templates/" + emailTemplateId;
	}
}



function assignPendingPayment(paymentId, amount, description, bookingRef)
{
	var amount = prompt("Enter the actual paid amount", amount);
	if(amount == null)
	{
		return;
	}
	var description = prompt("Enter the method description", description);
	if(description == null)
	{
		return;
	}
	var reference = prompt("Enter the reference", '');
	if(description == null)
	{
		return;
	}
	window.location = "/view-booking/" + bookingRef + "/add-pending-payment/" + paymentId + "/" + urlencode(amount) + "/" + urlencode(description) + "/" + urlencode(reference);
}

function urlencode(str)
{
	return escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
}

function strip_tags(strInputCode)
{
	/*
	This line is optional, it replaces escaped brackets with real ones,
	i.e. &lt; is replaced with < and &gt; is replaced with >
	*/
	strInputCode = strInputCode.replace(/&(lt|gt);/g, function (strMatch, p1){
		return (p1 == "lt")? "<" : ">";
	});
	var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
	return strTagStrippedText;
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function updateBookingSummary(bookingSummarySelected)
{
	var i = 0;
	while(document.getElementById('booking_summary[' + i + ']'))
	{
		document.getElementById('booking_summary[' + i + ']').style.display = 'none';
		i++;
	}
	document.getElementById('booking_summary[' + bookingSummarySelected + ']').style.display = 'block';
}


function check_uncheck_all(link_referrer, checkbox_prefix)
{
	var check_all = link_referrer.innerHTML;
	if(check_all == "Check all")
	{
		for(var i = 0; document.getElementById(checkbox_prefix + i); i++)
		{
			document.getElementById(checkbox_prefix + i).checked = true;
		}
		link_referrer.innerHTML = "Uncheck all";
	}
	else
	{
		for(var i = 0; document.getElementById(checkbox_prefix + i); i++)
		{
			document.getElementById(checkbox_prefix + i).checked = false;
		}
		link_referrer.innerHTML = "Check all";
	}
}

function setDelivery(deliveryType)
{
	if(deliveryType == 'UK')
	{
		document.getElementById('delivery_uk').style.display = 'block';
		document.getElementById('delivery_international').style.display = 'none';
	}
	else
	{
		document.getElementById('delivery_uk').style.display = 'none';
		document.getElementById('delivery_international').style.display = 'block';
	}
	updatePrice();
}

function greyOutDiv(divId, greyOut)
{
	if(greyOut)
	{
		document.getElementById(divId).className = 'form_box greyed_out';
	}
	else
	{
		document.getElementById(divId).className = 'form_box';
	}
}
