function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function imgPopup(strUrl, iWidth, iHeight)
	{
	window.open("imgpopup.php?"  		+
				"url=" + escape(strUrl)	+
				"&w=" + iWidth			+
				"&h=" + iHeight,
    			"_blank",
				"scrollbars=yes,resizable=yes,width=600,height=500");
	return false;
	}


function pagePopup(strUrl, iWidth, iHeight)
	{
	window.open(strUrl,"_blank","toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes,width=" + iWidth + ",height=" + iHeight);
	return false;
	}


function submitForm(strFormId, strUrl)
	{
	// Submits the named form, but with the URL changed to that specified
	docForm = document[strFormId];
	docForm.action = strUrl;
	docForm.submit();
	}


function bookingCheck()
	{
	var myFrm = document.frmBooking;
	var strRadioValue = "";

	if (!isValidDate(myFrm.nArriveD.value, myFrm.nArriveM.value, myFrm.nArriveY.value))
		{
		alert("Sorry, the specified Arrival Date is invalid.");
		return false;
		}
		
	if (!isValidDate(myFrm.nDepartD.value, myFrm.nDepartM.value, myFrm.nDepartY.value))
		{
		alert("Sorry, the specified Departure Date is invalid.");
		return false;
		}
		
    var testDate = new Date(myFrm.nArriveY.value, myFrm.nArriveM.value - 1, myFrm.nArriveD.value);		
		
    if (testDate <= new Date())
		{
		alert("Sorry, the Arrival Date must be after today")
		return false;
		}	
	
	strRadioValue = radioValue(myFrm.payonline);
	if (strRadioValue != "t" && strRadioValue != "f")
		{
		alert("Sorry, you must specify the method you'd like to use to pay the deposit"); 
		return false;
		}
		
	return true;
	}


function depositCheck()
	{
	if (!document.frmBooking.txtName.value ||
		!document.frmBooking.txtPhone.value ||

		!document.frmBooking.txtStreet.value ||
		!document.frmBooking.txtSuburb.value ||
		!document.frmBooking.txtCountry.value ||
		!document.frmBooking.txtPostcode.value ||
		!document.frmBooking.txtEmail.value ||
		!document.frmBooking.txtArriveTime.value ||
		!document.frmBooking.nNoGuests.value )
		{
		alert ("Sorry, all fields marked with an asterix (*) must be completed");
		return false;
		}


	if (document.frmBooking.chkLimo[0].checked == false && (!document.frmBooking.txtFlightNo.value || !document.frmBooking.txtFlightArrival.value))
		{
		alert ("Sorry, you have indicated you required limousine pick-up from the airport: You must also supply both the Flight Number and Flight Arrival Time.");
		return false;
		}

	return true;
	}


function creditCardCheck()
	{
	if (!radioValue(document.frmDeposit.txtCardType) ||
		!document.frmDeposit.txtNameOnCard.value ||
		!document.frmDeposit.txtCardNumber.value ||
		!document.frmDeposit.txtExpiryMonth.value ||
		!document.frmDeposit.txtExpiryYear.value
		)
		{
		alert ("Sorry, all fields marked with an asterix (*) must be completed");
		return false;
		}

	if ((0 + document.frmDeposit.txtExpiryMonth.value) > 12 || (0 + document.frmDeposit.txtExpiryMonth.value) < 1)
		{
		alert ("Sorry, you have specified an invalid expiry month for your card.");
		return false;
		}

	return true;
	}


function radioValue(objRadioButtonGroup)
	{
	var strRadioValue = "";
	for (var i=0; i< objRadioButtonGroup.length; i++)
		{
		if (objRadioButtonGroup[i].checked)
			{
			strRadioValue = objRadioButtonGroup[i].value;
			}
		}
		
	return strRadioValue;
	}


function searchCheck(strSearchUrl)
	{
	// Validates search fields
	// If ok converts to a GET string and calls the results page
	// Otherwise alerts and fails

	var myFrm = document.frmSearch;

	if (!isValidDate(myFrm.nArriveD.value, myFrm.nArriveM.value, myFrm.nArriveY.value))
		{
		alert("Sorry, the specified Arrival Date is invalid.");
		return false;
		}
		
	if (!isValidDate(myFrm.nDepartD.value, myFrm.nDepartM.value, myFrm.nDepartY.value))
		{
		alert("Sorry, the specified Departure Date is invalid.");
		return false;
		}
		

    var testDate = new Date(myFrm.nArriveY.value, myFrm.nArriveM.value - 1, myFrm.nArriveD.value);		

    if (testDate <= new Date())
		{
		alert("Sorry, the Arrival Date must be after today")
		return false;
		}
				
	LoadPageWithSearchBarFields(strSearchUrl);
	return false;
	}


function LoadPageWithSearchBarFields(strUrl)
	{
	var myFrm = document.frmSearch;
	var d = new Date();
	var thisyear = d.getFullYear();

	arrArgs = new Array();
	if (myFrm.txtType.value) arrArgs[arrArgs.length] = 'txtType=' + escape(myFrm.txtType.value);
	if (myFrm.nDouble.value) arrArgs[arrArgs.length] = 'nDouble=' + escape(myFrm.nDouble.value);
	if (myFrm.nSingle.value) arrArgs[arrArgs.length] = 'nSingle=' + escape(myFrm.nSingle.value);
	if (myFrm.nBedroom.value) arrArgs[arrArgs.length] = 'nBedroom=' + escape(myFrm.nBedroom.value);
	if (myFrm.txtRange.value) arrArgs[arrArgs.length] = 'txtRange=' + escape(myFrm.txtRange.value);
	if (myFrm.nArriveD.value != 1) arrArgs[arrArgs.length] = 'nArriveD=' + escape(myFrm.nArriveD.value);
	if (myFrm.nArriveM.value != 1) arrArgs[arrArgs.length] = 'nArriveM=' + escape(myFrm.nArriveM.value);
	if (myFrm.nArriveY.value != thisyear) arrArgs[arrArgs.length] = 'nArriveY=' + escape(myFrm.nArriveY.value);
	if (myFrm.nDepartD.value != 1) arrArgs[arrArgs.length] = 'nDepartD=' + escape(myFrm.nDepartD.value);
	if (myFrm.nDepartM.value != 1) arrArgs[arrArgs.length] = 'nDepartM=' + escape(myFrm.nDepartM.value);
	if (myFrm.nDepartY.value != thisyear) arrArgs[arrArgs.length] = 'nDepartY=' + escape(myFrm.nDepartY.value);

	strArgs = arrArgs.join("&");

	if (strUrl.indexOf("?") < 0)
		{
		strFullUrl = strUrl + "?" + strArgs;
		}
	else
		{
		strFullUrl = strUrl + "&" + strArgs;
		}

	window.location.href = strFullUrl;
	}



// date validation

function isValidDate(nDay, nMonth, nYear)
	{
	// Returns true if specified date values are valid, false otherwise
	// Note: Jan is 1, not 0

	var dateVal = new Array ("-", 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) 
	dateVal[2] = (((nYear % 4 == 0) && ( (!(nYear % 100 == 0)) || (nYear % 400 == 0))) ? 29 : 28 );
	
	if (nMonth > 12 || nDay > dateVal[nMonth])
		{
		return false;
		}

	return true;
	}


function GoToProperty(strUrl)
	{
	var myFrm = document.frmJump;
	strArgs = "p=" + escape(0 + myFrm.nPropNo.value);

	if (strUrl.indexOf("?") < 0)
		{
		strFullUrl = strUrl + "?" + strArgs;
		}
	else
		{
		strFullUrl = strUrl + "&" + strArgs;
		}

	window.location.href = strFullUrl;
	return false;
	}


function contactCheck()
	{
	if (!document.frmContact.txtName.value ||
		!document.frmContact.txtEmail.value ||
		!document.frmContact.txtMessage.value)
		{
		alert ("Sorry, all fields marked with an asterix (*) must be completed");
		return false;
		}
	
	return true;
	}
