/*
 * $Id$
 *
 * AJAX calls are used to retreive permissions without reloading the page.
 */



function loadData(target,year, month, boat) {
	if (!(targetTag = document.getElementById(target))) { return; }
	
	var xmlObj = new XMLRequestObject('/availability/availability.php','year=' + year + '&month=' + month + '&boat=' + boat,updateControl);
	xmlObj.setTarget(target);
	xmlObj.setLoadMethod('replacekids');
	xmlhttpPost(xmlObj);
}

function UpdateControl() {
	this.executeUpdate = function(xmlObj) {
		var target = document.getElementById(xmlObj.getTarget);
		var doc, div, node;
		div = document.createElement('div');
		div.innerHTML = xmlObj.getData();
		//alert(div.innerHTML);
		
		//Check voor het filteren van xml definitie in mozilla
		if (!( doc = div.childNodes[0]).tagName) doc = div.childNodes[1];
		if (doc.getAttribute('type') == "error") { alert("Er is een fout opgetreden!\nFoutmelding: " + doc.innerHTML); return;}

		//target element
		var tar = document.getElementById(xmlObj.getTarget());
		
		//teller voor childnodes
		var i =0;
		
		switch(xmlObj.getLoadMethod())
		{
			case "replacekids":
				tar.innerHTML = doc.innerHTML; 
				break;
			default: break;
		}
	}
}

function XMLRequestObject(strUrl, strSubmit, updateObj) {
	this.url = strUrl;
	this.submitData = strSubmit;
	this.updateObj = updateObj;
	this.data = "";
	this.target = "";
	this.loadMethod = "";
	
	this.getUrl = function() { return (this.url); };
	this.getSubmitData = function() { return (this.submitData); };
	this.getUpdateObj = function() { return (this.updateObj); };
	this.setData = function(data) { this.data = data; };
	this.getData = function() { return (this.data); };
	this.setTarget = function(target) { return (this.target = target); }
	this.getTarget = function() { return (this.target); }
	this.setLoadMethod = function(method) { this.loadMethod = method; }
	this.getLoadMethod = function () { return (this.loadMethod) ; }
}

function xmlhttpPost(xmlObj) {

	var xmlHttpReq = false;
	
	// Voor Mozilla, Opera en Safari gebruiken we XMLHttpRequest.
	if (window.XMLHttpRequest) {
	  xmlHttpReq = new XMLHttpRequest();
	}
	// Internet Explorer gebruikt een ActiveX Object
	else if (window.ActiveXObject) {
	  xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	// We gebruiken de POST methode om gegevens te versturen.
	// T.o.v. de GET methode is het voordeel hierbij dat je de data
	// niet aan de url hoeft te plakken.
	xmlHttpReq.open('POST', xmlObj.getUrl(), true);
	xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	// Callback functie die aangeroepen wordt wanneer de status van het HttpRequest object veranderd is.
	xmlHttpReq.onreadystatechange = function() {
		// readyState 4 betekent dat de request compleet is
		if (xmlHttpReq.readyState == 4) {
			if (xmlHttpReq.status == 200) {		// status 200 betekent dat de pagina goed ontvangen is
				xmlObj.setData(xmlHttpReq.responseText);
				xmlObj.getUpdateObj().executeUpdate(xmlObj);
			}
			else {
				// Pagina is niet goed ontvangen, response afhandelen;
			}
		}
	}
    xmlHttpReq.send(xmlObj.getSubmitData());
}


var updateControl = new UpdateControl();
