/*
* Call on start up.
*
*/
$.ready = function(){ 
	var availableDates = eval("["+ $('#availableDates').val() + "]");
	 
	//get values from date string yyyy,mm,dd
	//var dateElements = eval("["+availableDates[0]+"]");
	//var dateFromEval = new Date(dateElements[0], dateElements[1], dateElements[2]);
	//var dateFromString = new Date(2010,6,6)
	//alert(availableDates.length + " available dates\n"+"availableDates[0]: "+availableDates[0]+"\nDate from eval: "+dateFromEval+"\nDate from string: "+dateFromString);
	$("#tourDate").datepicker( 	{ minDate: +1,
																maxDate: +365, 
															  beforeShowDay: function(date) { 
															  	var x = 0;
															  	var d;
																	for(x = 0; x < availableDates.length; x++){
																		var dateElements = eval("["+availableDates[x]+"]");
																		d = new Date(dateElements[0], dateElements[1], dateElements[2]);
																		if (d.getTime() == date.getTime()){
																			//if date == one of the dates in the available dates array
																			//alert('got one');
																			return [true,''];  
																		}
																	}
											        		//date was not found
											        		return [false,''];
											        	}
											        }
	 													); 
	calculateCost();
}

/*
* Called to display the calendar.
*
*
*/
function showCalendar(){
	$('#tourDate').blur();
	$('#tourDate').focus();
}

/**
 * This function is called when a tour detail page is loaded
 * and when user booking options are changed
 */
function doTour(){
	var tourCode = $('#tourCode').val();
	var tourDate = $('#tourDate').val();
	//alert( tourDate );
	var eventCode = $('#departureTime').val();
	if(eventCode == 'switch-to-lanai-sunrise'){
		window.location = '/lanai/discover/sunrise/#book';
	}
	if(eventCode == 'switch-to-lanai-sunset'){
		window.location = '/lanai/discover/#book';
	}

	//save user-selected qty
	var userSelectedQty = new Array();
	$.each($(".addon").find("select"), function(i, optionData) {
		var selectElement = $(optionData);
		//alert(selectElement.val());
		userSelectedQty[i] = selectElement.val();
	});

	//alert('Processing. Click ok to continue. '+tourCode+' '+tourDate);
	showLoadingImage();
	$.ajax({
		type: "POST",
		url: "/alpro/load-tour-data.php",
		data: "tourCode="+tourCode+"&tourDate="+tourDate+"&eventCode="+eventCode,
		success: function(response){
			//alert(response);
			eval(response);
			//Need to keep user-selected values
			//Also need to reload the availability so each DDL is rewritten
			//loop over each add-on to calculate the cost.
			$.each($(".addon").find("select"), function(i, optionData) {
				var selectElement = $(optionData);
				//alert(userSelectedQty[i]);
				selectElement.val(userSelectedQty[i]);
			});
			calculateCost();
			hideLoadingImage();
		},
		failure: function(response){
			//alert("Fail");
		}
	});
	
	
}

/**
 * Check if addons are available via ajax
 */
function getAddonsAvailability(productCode, date){
	$.ajax({
		type: "POST",
		url: "/alpro/get-addons-availability.php",
		data: "productCode="+productCode+"&date="+date,
		success: function(response){
			$('#debug').append(response);
			eval(response);
			for(var x = 0; x < addons.length; x++){
				$('#addons').append('<p>'+addons[x]+'</p>');
			}
			
		}
	});	
}



/**
 * Displays a "loading" message in the booking box
 */
function showLoadingImage(){
	$('#loading').html('<img src="/images/loading.gif" />');
}
/**
 * Hides the "loading" message in the booking box
 */
function hideLoadingImage(){
	$('#loading').html("");
	$('#debug').append('----------------------<br />');
}


/**
 * Gets a list of addons for product
 * Does not check for availability;
 */
function getAddonsList(tourCode, productCode, date){
	$.ajax({
		type: "POST",
		url: "/alpro/get-addons-list.php",
		data: "productCode="+productCode+"&date="+date,
		success: function(response){
			$('#debug').append('Call to getAddonsList() : SUCCESS<br />'+response+'<br />');
			$('#addons').html(response);
			
			//set onchange event for each add-on pull-down.
			$(".addon").find("select").change(function(evt) {
				evt.preventDefault();
				calculateCost();
			});	
		},
		failure: function(response){
			//$('#debug').append('Call to getAddonsList() : FAIL<br />');
		}		
	});
}


/*
* Calculate rates and savings.
*
*/
function calculateCost(){

	// Retail price
	var retail = new Number(  
		( document.getElementById('adultPassengers').value * document.getElementById('adultRegularRate').value ) + 
		( document.getElementById('youthPassengers').value * document.getElementById('teenRegularRate').value) + 
		( document.getElementById('childPassengers').value * document.getElementById('childRegularRate').value ) +
		( document.getElementById('child-8-18Passengers').value * document.getElementById('child-8-18RegularRate').value ) +
		( document.getElementById('child-3-7Passengers').value * document.getElementById('child-3-7RegularRate').value ) +
		( document.getElementById('riderPassengers').value * document.getElementById('riderRegularRate').value ) +
		( document.getElementById('rider-8-18Passengers').value * document.getElementById('rider-8-18RegularRate').value )
	);
	
	// Subtotal
	var subtotal = new Number(  
		( document.getElementById('adultPassengers').value * document.getElementById('adultOnlineRate').value ) + 
		( document.getElementById('youthPassengers').value * document.getElementById('teenOnlineRate').value ) + 
		( document.getElementById('childPassengers').value * document.getElementById('childOnlineRate').value ) +
		( document.getElementById('child-8-18Passengers').value * document.getElementById('child-8-18OnlineRate').value ) +
		( document.getElementById('child-3-7Passengers').value * document.getElementById('child-3-7OnlineRate').value ) +
		( document.getElementById('riderPassengers').value * document.getElementById('riderOnlineRate').value ) +
		( document.getElementById('rider-8-18Passengers').value * document.getElementById('rider-8-18RegularRate').value )
	);
	
	//calculate adult savings amount(regular cost - online cost).
	var adultSavingsAmount = (document.getElementById('adultPassengers').value * document.getElementById('adultRegularRate').value) - (document.getElementById('adultPassengers').value * document.getElementById('adultOnlineRate').value);
	
	//calculate teen savings amount(regular cost - online cost).
	var teenSavingsAmount = (document.getElementById('youthPassengers').value * document.getElementById('teenRegularRate').value) - (document.getElementById('youthPassengers').value * document.getElementById('teenOnlineRate').value);
	
	//calculate child savings amount(regular cost - online cost).
	var childSavingsAmount = (document.getElementById('childPassengers').value * document.getElementById('childRegularRate').value) - (document.getElementById('childPassengers').value * document.getElementById('childOnlineRate').value);

	//calculate child 3-7 savings amount(regular cost - online cost).
	var child_3_7SavingsAmount = (document.getElementById('child-3-7Passengers').value * document.getElementById('child-3-7RegularRate').value) - (document.getElementById('child-3-7Passengers').value * document.getElementById('child-3-7OnlineRate').value);

	//calculate child 8-18 savings amount(regular cost - online cost).
	var child_8_18SavingsAmount = (document.getElementById('child-8-18Passengers').value * document.getElementById('child-8-18RegularRate').value) - (document.getElementById('child-8-18Passengers').value * document.getElementById('child-8-18OnlineRate').value);

	//calculate child 8-18 savings amount(regular cost - online cost).
	var riderSavingsAmount = (document.getElementById('riderPassengers').value * document.getElementById('riderRegularRate').value) - (document.getElementById('riderPassengers').value * document.getElementById('riderOnlineRate').value);

	//calculate child 8-18 savings amount(regular cost - online cost).
	var rider_8_18SavingsAmount = (document.getElementById('rider-8-18Passengers').value * document.getElementById('rider-8-18RegularRate').value) - (document.getElementById('rider-8-18Passengers').value * document.getElementById('rider-8-18OnlineRate').value);
	
	//convert the savings amount to a Number.
	var savings = new Number(adultSavingsAmount + teenSavingsAmount + childSavingsAmount + child_3_7SavingsAmount + child_8_18SavingsAmount + riderSavingsAmount + rider_8_18SavingsAmount);
	
	//variable to store the add-on total price.
	var addOnTotalPrice = 0;
	
	//loop over each add-on to calculate the cost.
	$.each($(".addon").find("select"), function(i, optionData) {
		var selectElement = $(optionData);
		var selectElementValue = selectElement.val();
		//only calculate the add-on price if the selected option, number of people, is greater than zero(0).
		if(selectElementValue > 0){
			//alert("selectElementValue: "+selectElementValue+"\nAddon price: "+$("#" + i + "_price").val());
			var addOnPrice = $("#" + i + "_price").val();
			addOnTotalPrice += addOnPrice * selectElementValue;
		}
	});
	
	//add the add-on total to the subtotal.
	//alert(subtotal+' '+addOnTotalPrice);
	subtotal = new Number(subtotal + addOnTotalPrice);
	retail = new Number(retail + addOnTotalPrice);
	
	//updat the subtotal.
	document.getElementById('showSubtotal').innerHTML = "$" + subtotal.toFixed(2);
	//document.getElementById('subtotal').value = "$" + subtotal.toFixed(2);

	document.getElementById('retail').innerHTML = "$" + retail.toFixed(2);
	
	//update the savings.
	document.getElementById('showSavings').innerHTML = "$" + savings.toFixed(2);
	//document.getElementById('savings').value = "$" + savings.toFixed(2);
	
	/*
	var coupon_code = document.getElementById('coupon_code').value;
	if(coupon_code > 0){
		//alert('got coupon');
		//update the subtotal.
		document.getElementById('showSubtotal').innerHTML = "$0.00";
		document.getElementById('showSavings').innerHTML = document.getElementById('retail').innerHTML;
		//document.getElementById('savings').value = "$" + savings.toFixed(2);
	}else{
		//alert('no coupon');
	}
	*/
}

/**
 * Process coupon
 */
function processCoupon(coupon_code){
	$.post(	"/booking/process_coupon.php", 
					{ coupon_code: coupon_code },
					function(discount) {
						//alert(discount);
						if(discount != 0){
							calculateCost();
						}else{
							//DISPLAY MESSAGE THAT SAYS THE COUPON IS NOT VALID
							calculateCost();
							alert("This coupon code is not valid");
						}
					});
}

