function createAjaxObj() {
	var httprequest=false
	if (window.XMLHttpRequest) {
		httprequest=new XMLHttpRequest();
		if (httprequest.overrideMimeType) { httprequest.overrideMimeType('text/xml'); }
	} else if (window.ActiveXObject) {
		try {
			httprequest=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				httprequest=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) { /* do nothing */ }
		}
	}
	return httprequest
}

var ajaxslide;
var ajaxpack=new Object();
ajaxpack.basedomain="http://"+window.location.hostname;
ajaxpack.ajaxobj=createAjaxObj();
ajaxpack.filetype="txt";
ajaxpack.addrandomnumber=1;

ajaxpack.postAjaxRequest = function(url, parameters, callbackfunc, filetype) {
	ajaxpack.ajaxobj=createAjaxObj();
	if (this.ajaxobj) {
		this.filetype=filetype;
		this.ajaxobj.onreadystatechange = callbackfunc;
		this.ajaxobj.open('POST', url, true);
		this.ajaxobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		this.ajaxobj.setRequestHeader("Content-length", parameters.length);
		this.ajaxobj.setRequestHeader("Connection", "close");
		this.ajaxobj.send(parameters);
	}
}

function processGetPost() {
	var myajax=ajaxpack.ajaxobj;
	var myfiletype=ajaxpack.filetype;
	if (myajax.readyState == 4) {
		if (document.getElementById("ajaxprocessing").style.visibility == "visible") {
			hideAjax();
			if (myajax.status==200 || window.location.href.indexOf("http")==-1) { 
				if (myfiletype=="txt") {
					document.getElementById("results").innerHTML = myajax.responseText;
				} else {
					document.getElementById("results").innerHTML = myajax.responseXML;
				}
			} else if (myajax.status!=200 && window.location.href.indexOf("http")!=-1) {
				var errormsg = "Sorry, unable to check,<br/>please try again later";
				if (myajax.status != 200) {
					errormsg += "<br/><small><small>(error code: " + myajax.status + ")</small></small>";
				}
				document.getElementById("results").innerHTML = errormsg;
			}
		}
	}
}


function checkAvailability() {
	var today = new Date();
	today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	//alert(document.getElementById("skdjskdjs").value);
	var arrival = new Date(document.getElementById("arrivalDate_Year_ID").options[document.getElementById("arrivalDate_Year_ID").selectedIndex].text, 
				document.getElementById("arrivalDate_Month_ID").selectedIndex, 
				document.getElementById("arrivalDate_Day_ID").selectedIndex+1);
	var departure = new Date(document.getElementById("departureDate_Year_ID").options[document.getElementById("departureDate_Year_ID").selectedIndex].text, 
				document.getElementById("departureDate_Month_ID").selectedIndex, 
				document.getElementById("departureDate_Day_ID").selectedIndex+1);
//	alert(today + "\n" + arrival + "\n" + departure);
	var error = "";
	var minNights = parseInt(document.getElementById("minNights").value);
	var maxNights = parseInt(document.getElementById("maxNights").value);
	var modNights = parseInt(document.getElementById("modNights").value);
	if (minNights <= 0) { minNights = 1; }
	if (maxNights < minNights || maxNights > 365) { maxNights = 28; } 
	var numNights = Math.floor(((departure - arrival)/86400000));
	if (departure <= arrival) {
		error = "Please select a departure date<br/>later than the arrival date";	
	} else if (arrival < today) {
		error = "Please select dates in the future";
	} else if (numNights < minNights) {
		error = "The minimum stay is " + minNights + " nights,<br/>please adjust the selected dates.";
	} else if (numNights > maxNights) {
		error = "The maximum stay is " + maxNights + " nights,<br/>please adjust the selected dates.";
	} else if (modNights > 1 && numNights % modNights != 0) {
		if (modNights == 7) {
			error = "The duration must be in blocks of whole weeks (7 nights)<br/>please adjust the selected dates.";
		} else {
			error = "The duration must be in blocks of " + modNights + " nights<br/>please adjust the selected dates.";
		}
	} 
	document.getElementById("results").innerHTML = "";
	document.getElementById("errors").innerHTML = error;
	if (error != "") { return; }
	showAjax();
	var siteName = document.getElementById("siteName");
	var roomCode = document.getElementById("roomCode");
	var roomName = "";
	if (roomCode.length > 0) {
		roomName = roomCode.options[roomCode.selectedIndex].text; 
	}
	var poststr="id=" + siteName.value + "&roomCode=" + roomCode.value + "&roomName=" + roomName + "&arrivalD=" + arrival.getDate() + "&arrivalM=" + (arrival.getMonth()+1) + "&arrivalY=" + arrival.getFullYear() +
			"&departureD=" + departure.getDate() + "&departureM=" + (departure.getMonth()+1) + "&departureY=" + departure.getFullYear();
	ajaxpack.postAjaxRequest('availcheckajax.php', poststr, processGetPost, 'txt');
}

function showAjax() {
	var browser=navigator.appName;
	var version=parseFloat(navigator.appVersion);
	if (browser=="Microsoft Internet Explorer" && version >= 4) {
		var resultDiv = document.getElementById("results");
		if (resultDiv.style.position != "relative") {
			resultDiv.style.position = "relative";
			resultDiv.style.top = "-20px";
		}
	}
	document.getElementById("formSubmit").disabled = true;
	document.getElementById("ajaxprocessing").style.height = "100px";
	document.getElementById("ajaxprocessing").style.overflow = "visible";
	document.getElementById("ajaxprocessing").style.visibility = "visible";
}

function hideAjax() {
	document.getElementById("formSubmit").disabled = false;
	document.getElementById("ajaxprocessing").style.height = "0px";
	document.getElementById("ajaxprocessing").style.overflow = "hidden";
	document.getElementById("ajaxprocessing").style.visibility = "hidden";
}
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
function submitForm(phone, address, info) {
	var items = new Array();
	var names = new Array("your name", "e-mail address", "telephone number", "postal address", "additional information");
	var validation = new Array(1, 1, phone, address, info);
	items[0] = document.getElementById('name');
	items[1] = document.getElementById('email');
	items[2] = document.getElementById('phone');
	items[3] = document.getElementById('address');
	items[4] = document.getElementById('info');
	var message = "";
	var count = 0;
	var item = -1;
	for (var i = 0; i < 5; i++) {
		if (items[i] != undefined && items[i] != null) {
			items[i].value = items[i].value.trim();
			if (validation[i] == 1 && items[i].value == "") {
				if (item == -1) { item = i; }
				count++;
				message += names[i] + "\n";
			}
		}
	}
	if (count > 0) {
		if (count == 1) {
			alert("Please enter " + message.replace("\n",""));
		} else {
			alert("Please enter the following items: \n\n" + message);
		}
		items[item].focus();
	} else {
		if (checkEmail(items[1])) { document.request.submit(); }
	}
}
function checkEmail(email) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(email.value)) {
		alert('Please enter a valid email address');
		email.focus();
		return false;
	}
	return true;
}
