/** 
 * Pure Tasmania Quick Book jQuery
 * -------------------------------
 * @author: Jeremy Manoto
 * @version: 0.2
 */

	/** Variables **/
	var xml;
	var pricing, property_id;
		
	var locationname, tempname, accomname, accom_id, tour_id, cruise_id = 1684, railway_id = 1682, count, icon, rname, adult;
	var accomstatus, accomcount, tourstatus, tourcount, cruisestatus = false, cruisecount = 12, railwaystatus = false, railwaycount = 16, henryjonesstatus, henryjonescount;
	var output, output_days, output_dates, oDate, process = false;
	var fromYear, fromMonth, fromDay, fromDate;





	$(document).ready(function() {
		QuickBook_Init();
	});
	
	
	/**
	 * Initialize the Quickbook module.
	 */
	function QuickBook_Init() {
		
		// Set Date Picker event
		$("#fromDate").datepicker({
			gotoCurrent: true,
			currentText: 'Current',
			dateFormat: 'dd/mm/yy'
		}).val("Select Date").click(function() {
			var value = $(this).val();
			if (value == "Select Date") {
				$(this).val("");
			}
		});
		
		// Map the click event for the radio buttons to the label click event
		$(".quickbook input[name='type']").mouseup(function() {
			var label = $(this).next();
			label.click();
		})
		
		// Handle the Accommodation/Experience category changes.
		$(".modeswitch").click(function () {
			var checkbox = $(this).prev();
			checkbox.select();
			
			switchQuickbookTab(checkbox.val());
			
		});
		
		
		
		/*/ Set Experience Level 1 Change event
		$("#accommodationproperty").change(function() {
			var value = $(this).val();
			switch(value) {
				case "0":
					$(".roomtype").hide();
					$('.checkin-select').hide();
					$('.checkin-title-item').hide();
					$('#btnCheckAvailability').hide();
					$('#nights-selection').hide();
					break;
				default:
					$(".roomtype").show();
					$('.checkin-select').show();
					$('.checkin-title-item').show();
					$('#btnCheckAvailability').show();
					$('#nights-selection').show();
					break;
					
			}
		});*/

		$("#experienceproperty").change(function() {
			var value = $(this).val();
			
			switch (value) {
				case "0": // None Selected
					$('#experiencetype').hide();
					$('#btnCheckAvailability').hide();
					$('.checkin-select').hide();
					$('.checkin-title-item').hide()
					break;
				case "1684": // Strahan
				case "1683":
				case "1682":
					$('#experiencetype').empty();
					var experiences = [
						{id: 0, title: "Choose Experience", propertyID: 1682},
						{id: 5050, title: "Gordon River Cruise", propertyID: 1682}, 
						{id: 5067, title: "West Coast Wilderness Railway", propertyID: 1684}, 
						{id: 5045, title: "Piners & Miners", propertyID: 1683},
						{id: 6875, title: "Gordon River Paddle", propertyID: 1683},
						{id: 5044, title: "Jet Boating", propertyID: 1683},
						{id: 7003, title: "Wine and Cheese Tasting", propertyID: 1683},
						{id: 7002, title: "The Bonnet Island Experience", propertyID: 1683}
						];
					for (var experience in experiences) {
						if (IsNumeric(experience)) {
							var option = "<option value=" + experiences[experience].id + ">" + experiences[experience].title + "</option>"
							$('#experiencetype').append(option);
						}
						
					}
					$('#experiencetype').show();
					$('#btnCheckAvailability').show();
					$('.checkin-select').show();
					$('.checkin-title-item').show().text("Date");
					$("#experiencetype").change();
					break;
				case "1823": // Hobart
					$('#experiencetype').empty();
					var experiences = [
						{id: 0, title: "Choose Experience"},
						{id: 6984, title: "Peppermint Bay Cruise"}, 
						{id: 6979, title: "Bruny Wildlife Adventure"}];
					for (var experience in experiences) {
						if (IsNumeric(experience)) {
							var option = "<option value=" + experiences[experience].id + ">" + experiences[experience].title + "</option>"
							$('#experiencetype').append(option);
						}
					}
					$('#experiencetype').show();
					$('#btnCheckAvailability').show();
					$('.checkin-select').show();
					$('.checkin-title-item').show().text("Date");
					break;
					
				case "1681":
					$('#experiencetype').empty();
					var experiences = [
						{id: 0, title: "Choose Experience"},
						{id: 6770, title: "Wineglass to Wine Glass"},
						{id: 6988, title: "'Oysters On The Bay' Cruise"}
					];
					for (var experience in experiences) {
						if (IsNumeric(experience)) {
							var option = "<option value=" + experiences[experience].id + ">" + experiences[experience].title + "</option>"
							$('#experiencetype').append(option);
						}
					}
					$('#experiencetype').show();
					$('#btnCheckAvailability').show();
					$('.checkin-select').show();
					$('.checkin-title-item').show().text("Date");
					break;
					
				case "1680":
					$('#experiencetype').empty();
					var experiences = [
						{id: 0, title: "Choose Experience"},
						{id: 7000, title: "Cradle Mountain Summit Walk"},
						{id: 7001, title: "Crater Lake Walk"},
						{id: 5031, title: "Marion's Lookout Walk"},
						{id: 5030, title: "Dove Lake Circuit Walk"},
						{id: 5033, title: "Wildlife Spotlight Tour"},
						{id: 5034, title: "Dove Lake Canoe"}

					];
					for (var experience in experiences) {
						if (IsNumeric(experience)) {
							var option = "<option value=" + experiences[experience].id + ">" + experiences[experience].title + "</option>"
							$('#experiencetype').append(option);
						}
					}
					$('#experiencetype').show();
					$('#btnCheckAvailability').show();
					$('.checkin-select').show();
					$('.checkin-title-item').show().text("Date");
					break;
			}
		})
		
		
		$("#experiencetype").change(function() {
			var value = $(this).val();
			
			switch (value) {
				case "5050":
					$("#experienceproperty option:contains('Strahan')").val("1682");
					break;
				case "5067":
					$("#experienceproperty option:contains('Strahan')").val("1684");
					break;
				case "5045":
				case "5044":
				case "7003":
				case "7002":
				case "6875":
					$("#experienceproperty option:contains('Strahan')").val("1683");
					break;
			}
		});

		
		$("#type_accommodation").attr("checked", true);
		switchQuickbookTab("1");
		
		//Initialize Form Fields
		$("#experienceproperty").val("0");
		$("#experiencetype").val("0");
		$("#accommodationproperty").val("0");
	}
	
	
	
	function switchQuickbookTab(iid) {
		var sImg;
		switch (iid) {
			case "0": //None Selected
				$(".instructions").show();
				$('#accommodations').hide();
				$('#experienceproperty').hide();
				$('#experiencetype').hide();
				$('#btnCheckBooking').hide();
				$('#btnCheckAvailability').hide();
				$('#nights-selection').hide();
				$('.checkin-select').hide();
				$('.checkin-title-item').hide();
				break;
			case "1": //Accommodation
				$(".instructions").hide();
				$('#accommodations').show();
				$(".roomtype").show();
				$('#experiencetype').hide();
				$('#experienceproperty').hide();
				$('#btnCheckBooking').hide();
				$('#btnCheckAvailability').show();
				$('#nights-selection').show();
				$('.checkin-select').show();
				$('.checkin-title-item').show().text("Check In");
				break;
			case "2": //Experiences
				$(".instructions").hide();
				$('#accommodations').hide();
				$('#experienceproperty').show();
				$('#btnCheckBooking').hide();
				$('#btnCheckAvailability').show();
				$('#nights-selection').hide();
				$('.checkin-select').show();
				$('.checkin-title-item').show().text("Date");
				$('#experiencetype').show();
				
				break;
		}
	}
	
	
	
function submitQuickBooking() {
  var quickform = document.quickfrm;
  var property_id;
  var room_id;
  //var fromDay = parseInt(quickform.fromDay.value);
  //var fromMonth = parseInt(quickform.fromMonth.value);
  //var fromYear = parseInt(quickform.fromYear.value);
  
  	var fromDate = quickform.fromDate.value
	var dateHolder = quickform.fromDate.value.split("/");
	var nights =  parseInt(quickform.nights.value)
	
	var d = new Date(dateHolder[2] + "/" + dateHolder[1] + "/" + dateHolder[0]);
	d.setDate(d.getDate()+ nights);
	
	toDate = d.getDate() +"/"+ (d.getMonth()+1) +"/"+ d.getFullYear();

  //alert(toDate)
  
  if (fromDate == "Select Date") fromDate = "";
  var sAlert = "";

	if ($('#accommodations').is(':visible'))	{	// Accommodation
		property_id = quickform.property.value;
		room_id = quickform.roomtype.value;
		sAlert = "To continue you must choose a destination and room type.\nPlease select one of each before proceeding.";
	}
	else	{	// Experiences
		property_id = quickform.experienceproperty.value;
		room_id = quickform.experiencetype.value;
		sAlert = "To continue you must choose an experience and type.\nPlease select one of each before proceeding.";
	}

	//alert("property_id " + property_id + ", room_id: " + room_id);
	if (property_id == 0 || room_id == 0) {
		alert(sAlert);
		return;
	}
	

  var currentstatus = true;
  //if (fromDay < currentDay && fromMonth == currentMonth && fromYear == currentYear) currentstatus = false;
  //if (fromDay >= currentDay && fromMonth < currentMonth && fromYear == currentYear) currentstatus = false;
  //if (fromDay < currentDay && fromMonth < currentMonth && fromYear == currentYear) currentstatus = false;

  if (!currentstatus) {
    alert("The dates selected cannot be less than the present date.\nThe select boxes will be reset.\n\nPlease select a different date range.");
    quickform.fromDay.selectedIndex = currentDay - 1;
    quickform.fromMonth.selectedIndex = currentMonth - 1;
    return;
  } else {
    //quickform.action = "functions/addroom.asp?itinerary_id=0&property_id="+ property_id +"&room_id="+ room_id +"&rtype=3";
    quickform.action = "default.asp?property_id="+ property_id +"&room_id="+ room_id + "&fdate=" + fromDate + "&tdate=" + toDate
    quickform.submit();
  }
}

function loadRoomTypeSelect() {

  var roomselect = document.quickfrm.roomtype;
  var roomlength = roomselect.length;
  
  

  if (!xml) {
    var property_id = document.quickfrm.property.value;

	if (property_id.indexOf("http://") != -1 || property_id.indexOf("https://") != -1)	{
		// refresh room type dropdown list
		roomselect.options.length = 0;
		roomselect.options[0] = new Option("Room Type", 0);
		// open in a new window
		window.open(property_id);
	}
	else	{
	    // remove existing options
	    for (i = 0; i < roomlength; i++)
	      roomselect.remove(0);

	    if (property_id != 0) {
	      roomselect.options[0] = new Option("Choose Room", "0");
	      loadXMLDoc("includes/searchproperty.asp?property_id="+ property_id +"&quickbook=true&ran="+ getRan());
	    } else	{
	      roomselect.options[0] = new Option("Choose Room", "0");
	    }
	}
  } else {
	    var roomtypes = xml.responseXML.documentElement.getElementsByTagName("roomtype");

	    // remove loading option
	    //roomselect.remove(0);

	    // replace with new options
	    for (i = 0; i < roomtypes.length; i++)
	      roomselect.options[i] = new Option(roomtypes[i].getAttribute("name"), roomtypes[i].getAttribute("id"));

	    xml = null;
  }
}

function loadExperienceTypeSelect() {
	var experiencetypeselect = document.quickfrm.experiencetype;
	var property_id = document.quickfrm.experienceproperty.value;
	var objOptions;
// Hard-coded experiences quickbook

	objOptions = experiencetypeselect.options;
	// clear the type select.
	objOptions.length = 0;

	switch (parseInt(property_id,10))	{
		case 1682:	// Strahan - Gordon River Cruises
			objOptions[objOptions.length] = new Option("Captains Premier Upper Deck", 5048);
			objOptions[objOptions.length] = new Option("Atrium", 5050);
			objOptions[objOptions.length] = new Option("Window Recliner", 6925);
			break;
		case 1683:	// Strahan - Tours
			objOptions[objOptions.length] = new Option("Piners and Miners", 5045);
			objOptions[objOptions.length] = new Option("Gordon River Paddle", 6875);
			objOptions[objOptions.length] = new Option("Gordon River Scenic Flights", 5046);
			objOptions[objOptions.length] = new Option("Strahan Helicopters", 5047);
			objOptions[objOptions.length] = new Option("Jet Boating", 5044);
			break;
		case 1684:	// Strahan - West Coast Wilderness Railway
			objOptions[objOptions.length] = new Option("Premier from Strahan", 5067);
			objOptions[objOptions.length] = new Option("Tourist from Strahan", 5071);
			objOptions[objOptions.length] = new Option("Premier from Queenstown", 5077);
			objOptions[objOptions.length] = new Option("Tourist from Queenstown", 5081);
			break;
		case 1681:	// Freycinet Tours
			objOptions[objOptions.length] = new Option("Wineglass to wine glass", 6770);
			objOptions[objOptions.length] = new Option("Bluestone Bay 4WD Tour", 5036);
			objOptions[objOptions.length] = new Option("Taste of Tasmania", 5037);
			objOptions[objOptions.length] = new Option("Wineglass Bay Lookout Guided Walk", 5039);
			objOptions[objOptions.length] = new Option("Wineglass Bay Self Discovery Walk", 5040);
			objOptions[objOptions.length] = new Option("Oysters on The Bay Morning", 6988);
			objOptions[objOptions.length] = new Option("Oysters on The Bay Morning", 6989);
			break;
		case 1823:	// Hobart Experiences
			objOptions[objOptions.length] = new Option("Bruny Wildlife Adventure", 6979);
			objOptions[objOptions.length] = new Option("Peppermint Bay Cruise", 6984);
			break;
	}
}

function getRan() {
	var ran = new Date();
	ran = ran.getDate() +""+ ran.getMonth() +""+ ran.getYear() +""+ ran.getHours() +""+ ran.getMinutes() +""+ ran.getSeconds() +""+ ran.getMilliseconds();
	return ran;
}


function IsNumeric(sText) {
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	
	
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
}

