// JavaScript Document
// Dives web AJAX Class Object
function DivesAjax() {
	var url; // public variable (String)
	var urlparameter; // public variable (String)
	var ShowDivElement; // private variable (Object)
	var ShowDivElementName; // public variable (String)
	var OldContents; // private variable. If error executed we must return contents on old element
	var onCompletion;
	var http_request;
	var error;
	var method;
	
	this.http_request=null;
	this.error=false;
	this.method='GET';
	
	this.createAJAXInstance = function() {
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			this.http_request = new XMLHttpRequest();
			if (this.http_request.overrideMimeType) {
				this.http_request.overrideMimeType('text/html');
			}
		} else if (window.ActiveXObject) { // IE
			try {
				this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		if (!this.http_request) {
			alert('Cannot create XMLHTTP instance');
			return false;
		}
	}
	
	this.getStatus=function(_status) {
		var s = _status.toString().split(",");
		switch(Number(s)) {
			case 404:
				alert ('There was a problem with the request: 404 File Not Found');
				this.error=true;
				return false;
			break;
			default: return true; break;
		}
	}
	
	this.runAJAXInstance=function () {
		if (!this.error) {
			this.ShowDivElement=document.getElementById(this.ShowDivElementName);
			this.OldContent=this.ShowDivElement.innerHTML;
			this.createAJAXInstance();
			if (this.http_request) {
				var self = this;
				if (this.onCompletion) {
					this.http_request.onreadystatechange=this.onCompletion;
				} else {
					this.http_request.onreadystatechange = function() {
																						if (self.http_request.readyState == 4) {
																							if (self.getStatus(self.http_request.status)) {
																								var result = self.http_request.responseText;
																								self.ShowDivElement.innerHTML=result;
																								self.ShowDivElement.style.display="block";
																								return true;
																							} else {
																								self.ShowDivElement.innerHTML=self.OldContent;
																								return false;
																							}
																						}
																					}
				}
				// DEBUG */ alert (fullurl);
				if (this.method=='POST') {
					var fullurl=this.url;
					this.http_request.open(this.method,fullurl, true);
					this.http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
					this.http_request.setRequestHeader("Content-length", this.urlparameter.length);
					this.http_request.setRequestHeader("Connection", "close");
					this.http_request.send(this.urlparameter);
				} else {
					var fullurl=this.url+'?'+this.urlparameter;
					this.http_request.open(this.method,fullurl, true);
					this.http_request.send(null);
				}
				return true;
			}
		} else alert("AJAX instance not started");
	}
}
