// JavaScript Document

// AJAX Calls

// Create AJAX Handler.
if( typeof XMLHttpRequest == "undefined" )
  var XMLHttpRequest = function() {
    try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP") }     catch(e) {}
    try { return new ActiveXObject("Microsoft.XMLHTTP") }  catch(e) {}
    throw new Error( "This browser does not support XMLHttpRequest or XMLHTTP." )
  };

var http = new XMLHttpRequest();

function chkCalendarMax( date, dir )
{
	var tenant_id = $("#tenant_id").val();
	$.ajax(
	{
		type: "GET",
		url: "system/service/checkcalmax.php",
		data: "date=" + date + "&tenant_id=" + tenant_id + "&dir=" + dir,
		success: function(data)
		{
			if( data == 1 )
				$("#down_arrow").hide();
			else
				$("#down_arrow").show();
		}
	})
}

// Get dynamic calendars
function getCalendars(sel_unit_id,dir)
{
	var unit_id = "";
	if( document.getElementById( "cal_unit_id" ) != null )
	{
		var cal_unit_id = document.getElementById("cal_unit_id");
		if( sel_unit_id == 0 && cal_unit_id.value != 0 )
			unit_id = cal_unit_id.value;
		else
			unit_id = sel_unit_id;
	}

	var url = 'system/service/getcalendars.php?';
	var type = document.getElementById("type").value;
	var date = document.getElementById("cal_date").value;
	var myrand = parseInt( Math.random() * 999999999999999 );
	var modurl = url + "unit_id=" + unit_id + "&dir=" + dir + "&date=" + date + "&type=" + type;
	if( dir == "" )
	{
		var start_date = document.getElementById( "start_date" ).value;
		var end_date = document.getElementById( "end_date" ).value;

		modurl += "&start_date=" + start_date + "&end_date=" + end_date;
	}

	chkCalendarMax( date, dir );

	modurl += "&rand=" + myrand;
	http.onreadystatechange = calHttpResponse;
	http.open( "GET", modurl, true );
	http.send( null );
}

function calHttpResponse()
{
	var loader = '<div style="margin-top:50px;"><img src="system/service/images/ajax_loader_blue.gif"></div>';

	if( http.readyState == 4 )
	{
		if( http.status == 200 )
		{
			document.getElementById( "calendars" ).innerHTML = http.responseText;

			if( document.getElementById( "start_date" ).value != "" )
			{
				chkBooked();
			}
		}
		else
			alert( "Failed to get response." );
	}
	else
	{
		document.getElementById( "calendars" ).innerHTML = loader;
	}
}


// Begin Reservation Process
function startReservation(unit_id, d_start_date, d_end_date)
{
	var url = 'system/service/startreservation.php?';
	var myrand = parseInt( Math.random() * 999999999999999 );
	var depart = "";
	var arrive = "";
	var start_time = "";
	var end_time = "";
   var coupon = "";

   if( $("#coupon"))
		coupon = $("#coupon").val();

	if( d_start_date == "" )
	{
		if ( document.getElementById("start_date").value == "" )
		{
			alert ( 'Choose select an arrival date on the calendar.');
			document.getElementById("start_date").focus();
			return false;
		}
		else
		{
			arrive = document.getElementById("start_date").value;

			if( document.getElementById( "start_time" ) )
			{
				start_time = document.getElementById( "start_time" ).value;
				end_time = document.getElementById( "end_time" ).value;
			}

			if( document.getElementById("end_date").value == "" )
			{
				depart = arrive;
			}
			else
			{
				depart = document.getElementById("end_date").value;
			}
		}
	}
	else
	{
		arrive = d_start_date;
		depart = d_end_date;
	}

	var modurl = url + "unit_id=" + unit_id + "&arrive=" + arrive + "&depart=" + depart;

	if( document.getElementById( "start_time" ) )
	{
		modurl += "&start_time=" + start_time + "&end_time=" + end_time;
	}

   if( coupon )
		modurl += "&coupon=" + coupon;

	modurl += "&rand=" + myrand;
	http.onreadystatechange = resHttpResponse;
	http.open( "GET", modurl, true );
	http.send( null );
}

function resHttpResponse()
{
	var loader = '<div style="margin-top:200px;"><img src="system/service/images/ajax_loader_blue.gif"></div>';
	if( http.readyState == 4 )
	{
		if( http.status == 200 )
		{
			document.getElementById( "left_panel" ).innerHTML = http.responseText;
			document.getElementById( "ezbook" ).style.display = "none";
			//document.getElementById( "arrows" ).style.visibility = "hidden";

		}
		else
			alert( "Failed to get response." );
	}
	else
	{
		document.getElementById( "left_panel" ).innerHTML = loader;
	}
}

// Check Login Status
function guestLogin(unit_id,type)
{
	var url = 'system/service/guestinfo.php?';
	var myrand = parseInt( Math.random() * 999999999999999 );
	var modurl = url + "&unit_id=" + unit_id;

	if( type == "new" )
		modurl += "&type=" + type;

	modurl += "&rand=" + myrand;
	http.onreadystatechange = logHttpResponse;
	http.open( "GET", modurl, true );
	http.send( null );
}

function logHttpResponse()
{
	var loader = '<div style="margin-top:200px;"><img src="system/service/images/ajax_loader_blue.gif"></div>';
	if( http.readyState == 4 )
	{
		if( http.status == 200 )
		{
			document.getElementById( "right_panel" ).innerHTML = http.responseText;
			document.getElementById( "confirm" ).style.visibility = "hidden";
		}
		else
			alert( "Failed to get response." );
	}
	else
	{
		document.getElementById( "right_panel" ).innerHTML = loader;
	}
}

// Check Login Status
function doLogin(unit_id)
{
	var url = 'system/service/guestinfo.php?';
	var myrand = parseInt( Math.random() * 999999999999999 );
	var un = document.getElementById("username").value;
	var pw = document.getElementById("password").value;

	var modurl = url + "&unit_id=" + unit_id + "&un=" + un + "&pw=" + pw + "&rand=" + myrand;
	http.onreadystatechange = dologHttpResponse;
	http.open( "GET", modurl, true );
	http.send( null );
}

function dologHttpResponse()
{
	var loader = '<div style="margin-top:200px;"><img src="system/service/images/ajax_loader_blue.gif"></div>';
	if( http.readyState == 4 )
	{
		if( http.status == 200 )
		{
			document.getElementById( "right_panel" ).innerHTML = http.responseText;
		}
		else
			alert( "Failed to get response." );
	}
	else
	{
		document.getElementById( "right_panel" ).innerHTML = loader;
	}
}

// Validate Reservation Info ///////////////////////////////////////////////////////////////////////////
function validateResInfo( type )
{
   var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
   var email_valid = false;

	if( document.getElementById( "first_name" ).value == "" )
	{
		alert( "Please enter your first name." );
		document.getElementbyId( "first_name" ).focus();
		return false;
	}

	if( document.getElementById( "last_name" ).value == "" )
	{
		alert( "Please enter your last name." );
		document.getElementbyId( "last_name" ).focus();
		return false;
	}

	if( document.getElementById( "email" ).value == "" )
	{
		alert( 'Please enter an email address.');
		document.getElementById( "email" ).value.focus();
		return false;
	}

	if( document.getElementById( "email" ).value.match(emailExp) )
	{
		email_valid = true;
	}

	if( email_valid == false )
	{
		alert( 'Please enter a valid email address.');
		document.getElementById( "email" ).value.focus();
		return false;
	}

	if( document.getElementById( "phone" ).value == "" )
	{
		alert( "Please enter your phone number." );
		document.getElementbyId( "phone" ).focus();
		return false;
	}

	if( document.getElementById( "address1" ).value == "" )
	{
		alert( "Please enter your street address." );
		document.getElementbyId( "address1" ).focus();
		return false;
	}

	if( document.getElementById( "city" ).value == "" )
	{
		alert( "Please enter your City." );
		document.getElementbyId( "city" ).focus();
		return false;
	}

	if( document.getElementById( "state_id" ).value == "" )
	{
		alert( "Please choose a state." );
		document.getElementbyId( "state" ).focus();
		return false;
	}

	if( document.getElementById( "zip" ).value == "" )
	{
		alert( "Please enter your zip code." );
		document.getElementbyId( "zip" ).focus();
		return false;
	}

	if( type == "return" )
	{
		confirmInfo();
	}
	else
	{
		doTransaction();
	}
}

// Confirm Personal Information ////////////////////////////
function confirmInfo()
{
	$("#info_dialog").dialog(
	{
		bgiframe: true,
		resizable: false,
		height:650,
		width: 650,
		modal: true,
		buttons:
		{
			'Make Some Changes': function()
			{
				$(this).dialog('destroy');
			},
			'Info Is Correct': function()
			{
				$(this).dialog('destroy');
            finalResCheck();
			}
		}
	});
}

// Process The Transaction
function doTransaction()
{
	var url = 'system/service/gettransactionresult.php?';
	var myrand = parseInt( Math.random() * 999999999999999 );
	var formData = "";
	var adults = $("#guest_adult").val();
	var children = $("#guest_child").val();

	var start_date = $( "#res_start" ).val();
	formData += "start_date=" + start_date;

	var end_date = $( "#res_end" ).val();
	formData += "&end_date=" + end_date;

	var unit_id = $( "#res_unit" ).val();
	formData += "&unit_id=" + unit_id;

	var sub_total = $( "#res_subtotal" ).val();
	formData += "&sub_total=" + sub_total;

	var fees = $( "#res_fees" ).val();
	formData += "&fees=" + fees;

	var fee_total = $( "#res_fee_total" ).val();
	formData += "&fee_total=" + fee_total;

	var tax_total = $( "#res_tax_total" ).val();
	formData += "&tax_total=" + tax_total;

	var state_tax = $("#res_state_tax").val();
	formData += "&state_tax=" + state_tax;

	var county_tax = $("#res_county_tax").val();
	formData += "&county_tax=" + county_tax;

	var municipal_tax = $("#res_municipal_tax").val();
	formData += "&municipal_tax=" + municipal_tax;

	var tourism_tax = $("#res_tourism_tax").val();
	formData += "&tourism_tax=" + tourism_tax;

	var misc_tax = $("#res_misc_tax").val();
	formData += "&misc_tax=" + misc_tax;

	var deposit = $( "#res_deposit" ).val();
	formData += "&deposit=" + deposit;

	var total = $( "#res_total" ).val();
	formData += "&total=" + total;

	var notes = $( "#notes" ).val();
	formData += "&notes=" + notes;

	var first_name = $( "#first_name" ).val();
	formData += "&first_name=" + first_name;

	var last_name = $( "#last_name" ).val();
	formData += "&last_name=" + last_name;

	var middle_name = $( "#middle_name" ).val();
	formData += "&middle_name=" + middle_name;

	var email = $( "#email" ).val();
	formData += "&email=" + email;

	var phone = $( "#phone" ).val();
	formData += "&phone=" + phone;

	var cell = $( "#cell" ).val();
	formData += "&cell=" + cell;

	var fax = $( "#fax" ).val();
	formData += "&fax=" + fax;

	var address1 = $( "#address1" ).val();
	formData += "&address1=" + address1;

	var address2 = $( "#address2" ).val();
	formData += "&address2=" + address2;

	var city = $( "#city" ).val();
	formData += "&city=" + city;

	var state_id = $( "#state_id" ).val();
	formData += "&state_id=" + state_id;

	var zip = $( "#zip" ).val();
	formData += "&zip=" + zip;

	var country_id = $( "#country_id" ).val();
	formData += "&country_id=" + country_id;

	var cc_type = $( "#cc_type" ).val();
	formData += "&cc_type=" + cc_type;

	var cc_number = $( "#cc_number" ).val();
	formData += "&cc_number=" + cc_number;

      if( $("#res_coupon" ) )
      {
         var discount = $("#res_discount").val();
         var coupon = $("#res_coupon").val();
         var prevSubTotal = $("#res_prev_total").val();

         formData += "&prevSubTotal=" + prevSubTotal + "&coupon=" + coupon + "&discount=" + discount;
      }

      if( $("#res_coupon" ) )
      {
         var unit_discount = $("#res_discount").val();
         var msg = $("#res_coupon").val();
			var prevSubTotal2 = $("#res_prev_total").val();

         if( !$("#res_coupon") )
				formData += "&prevSubTotal=" + prevSubTotal2;

			formData += "&msg=" + msg + "&unit_discount=" + unit_discount;
      }

	var sel_mon = document.getElementById( "cc_exp_month" );
	var sel_year = document.getElementById( "cc_exp_year" );
	var cc_exp_month = sel_mon.options[ sel_mon.selectedIndex ].value;
	var cc_exp_year = sel_year.options[ sel_year.selectedIndex ].value;

	var cc_exp_date = cc_exp_month + "-" + cc_exp_year;
	formData += "&cc_exp_date=" + cc_exp_date;

	var cc_code = document.getElementById( "cc_code" ).value;
	formData += "&cc_code=" + cc_code;

	if( document.getElementById( "contact_id" ).value != "" )
	{
		var contact_id = document.getElementById( "contact_id" ).value;
		formData += "&contact_id=" + contact_id;
	}

	formData += "&adults=" + adults + "&children=" + children;

	$.ajax(
	{
		type: "GET",
		url: "system/service/gettransactionresult.php",
		data: formData,
		success: function(data)
		{
			var originalDiv= document.getElementById('right_panel');
			var tempDiv = document.createElement('tempDiv');
			tempDiv.innerHTML = data;
			document.getElementById( "guest_info" ).style.display = "none";

			originalDiv.appendChild(tempDiv);
		}
	});
}

// Failed Credit Card ////////////////////////////////////////////////////////////////////////

function transFail( data, type )
{
	var url = 'system/service/guestinfo.php?';
	var myrand = parseInt( Math.random() * 999999999999999 );
	var modurl = url + data + "&type=" + type + "&rand=" + myrand;
	http.onreadystatechange = transFailHttpResponse;
	http.open( "GET", modurl, true );
	http.send( null );
}

function transFailHttpResponse()
{
	var loader = '<div style="margin-top:200px;"><img src="system/service/images/ajax_loader_blue.gif"></div>';
	if( http.readyState == 4 )
	{
		if( http.status == 200 )
		{
			document.getElementById( "right_panel" ).innerHTML = http.responseText;
			document.getElementById( "msg" ).style.visibility = "visible";
		}
		else
			alert( "Failed to get response." );
	}
	else
	{
		document.getElementById( "right_panel" ).innerHTML = loader;
	}
}
