/* functions used by in-page multi-availability search */
function padZero(x) {
	x = "" + x;
	if (x.length == 1) {
		x = "0" + x;
	}
	return x;
}

function writeResDate(date) {
	return date.getFullYear() + "-" + padZero(date.getMonth()+1) + "-" + padZero(date.getDate());	
}

function isDate(dateStr) {
	var datePat = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null) {
		return false;
	}
	day = matchArray[1];
	month = matchArray[3]; // p@rse date into variables
	year = matchArray[5];

	if (month < 1 || month > 12) { return false; }
	if (day < 1 || day > 31) { return false; }
	if ((month==4 || month==6 || month==9 || month==11) && day==31) { return false; }
	if (month == 2) { 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) { return false; }
	}
	return true;
}


function getLocationPath() {
	var data = location.href;
    var e = /^((http|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+\.[^#?\s]+)(#[\w\-]+)?$/;

    if (data.match(e)) {
       /*  return  {url: RegExp['$&'],
                protocol: RegExp.$2,
                host:RegExp.$3,
                path:RegExp.$4,
                file:RegExp.$6,
                hash:RegExp.$7}; */
				return RegExp.$4;
    } else {
       // return  {url:"", protocol:"",host:"",path:"",file:"",hash:""};
	   return "";
    }
}

function trackChooseRoomClick(data) {
	data = data.replace(/ /g,"_");
	//alert(data);
	pageTracker._trackPageview(data);
	ecTracker._trackPageview(data);
}

function getTotalResultsFromComment(html) {
	var start = "<!--##total:";
	html = html.substring(html.indexOf(start) + start.length);
	html = html.substring(0, html.indexOf("$$"));
	return html;	
}

function checkMultiAvailability(locationId, arrivalDateString, nights) {
	if (!isDate(arrivalDateString)) {
		alert("You seem to have entered an invalid\narrival date.\n\nPlease make sure the date is correct,\nand that it uses dd/mm/yyyy format.\n\nThank you!");
		return;
	}
	var arrivalDate = new Date();
	arrivalDate.setDate(parseInt(arrivalDateString.substring(0,2),10));
	arrivalDate.setMonth(parseInt(arrivalDateString.substring(3,5),10)-1);
	arrivalDate.setYear(parseInt(arrivalDateString.substring(6,10),10));
	var dateNow = new Date();
	if (arrivalDate.getTime() < dateNow.getTime()) {
		alert("Please enter an arrival date in the future.\n\nThank you!");
		return;
	}
	var departureDate = new Date(arrivalDate.getTime() + (nights * 86390000));
	var qs = "locationId=" + locationId;
	qs += "&arrivalDate=" + writeResDate(arrivalDate);
	qs += "&departureDate=" + writeResDate(departureDate);
	qs += "&adults=2";
	qs += "&rooms=1";
	qs += "&tunnel=true";
	//var url = "res_proxy.php?" + qs;
       var url = "/res_proxy.php?" + qs;
	openOverlay(arrivalDate, nights);
	pageTracker._trackPageview(getLocationPath() + "multi/start");
	ecTracker._trackPageview(getLocationPath() + "multi/start");
	//alert(getLocationPath() + "multi/start");
	ajaxRequest(url, "multiResults", "closeOverlay()");
}

function ajaxRequest(url, div, alsoExecute) {
	var AJAX;
	try {  
		AJAX = new XMLHttpRequest(); 
	} catch(e) {  
		try {    
			AJAX = new ActiveXObject("Msxml2.XMLHTTP");    
		} catch(e) {    
			try {
				AJAX = new ActiveXObject("Microsoft.XMLHTTP");      
			} catch(e) {      
				alert("Your browser does not support AJAX.");      
				return false;      
			}    
		}
	}
	AJAX.onreadystatechange = function() {
		if (AJAX.readyState == 4) {
			if (AJAX.status == 200) {
				result = AJAX.responseText;
				document.getElementById(div).innerHTML = result;  
				// parse for total results
				
				if (alsoExecute != "") {
					eval(alsoExecute);
				}
				pageTracker._trackPageview(getLocationPath() + "multi/end/" + getTotalResultsFromComment(result));
				ecTracker._trackPageview(getLocationPath() + "multi/end/" + getTotalResultsFromComment(result));
				//alert(getLocationPath() + "multi/end/" + getTotalResultsFromComment(result));
			} else {
				alert("Error: "+ AJAX.statusText +" "+ AJAX.status);
			}
  		}  
 	}
	AJAX.open("get", url, true);
	AJAX.send(null);
}


function formatDate(d) {
	var mons = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
	return d.getDate() + " " + mons[d.getMonth()] + " " + d.getFullYear();
}

function openOverlay(arrivalDate, nights) {
	var d = "from " + formatDate(arrivalDate) + " for " + nights + " night";
	if (nights > 1) { d += "s"; }
	document.getElementById("userChoice").innerHTML = d;
	$j("#prompt").overlay({
		expose: {
			color: '#372333',
			loadSpeed: 200,
			opacity: 0.9
		},
		api: true,
		closeOnClick: false
	}).load();
}

function closeOverlay() {
	$j("#prompt").overlay().close();
}