// JavaScript Document

function Hijax() {

	var container,url,canvas,data,loading,callback,request,errorhandler,timer;
	
	this.setContainer = function(value) {
		container = value;
	};
	this.setUrl = function(value) {
		url = value;
	};
	this.setCanvas = function(value) {
		canvas = value;
	};
	this.setLoading = function(value) {
		loading = value;
	};
	this.setCallback = function(value) {
		callback = value;
	};
	this.setErrorhandler = function(value) {
		errorhandler = value;
	};
 

	this.captureData = function() {
		if (container.nodeName.toLowerCase() == "form") {
			var query = "";
			for (var i=0; i<container.elements.length; i++) {
			
				if (container.elements[i].tagName == "INPUT") {
				
					if (container.elements[i].type == "text") {
						query+= container.elements[i].name + "=" + escape(container.elements[i].value) + "&";
					}
					
					if (container.elements[i].type == "hidden") {
						query+= container.elements[i].name + "=" + escape(container.elements[i].value) + "&";
					}
					
					if (container.elements[i].type == "checkbox") {
						if (container.elements[i].checked) {
							query+= container.elements[i].name + "=" + escape(container.elements[i].value) + "&";
						}
					}
				}
			
				if (container.elements[i].tagName == "SELECT") {
					var sel = container.elements[i];
					query+= sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
				}
				
				if (container.elements[i].tagName == "TEXTAREA") {
					query+= container.elements[i].name + "=" + escape(container.elements[i].value) + "&";
				}
			}
			data = query;
			return !start();
		};
	};
 
 
	var getHTTPObject = function() {
		var xmlhttp = false;
		if (window.XMLHttpRequest) {
			xmlhttp = new XMLHttpRequest();
		} else if(window.ActiveXObject) {
				try {
					xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
				try {
					 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					 xmlhttp = false;
				}
			}
		}
		return xmlhttp;
	};
 

	var start = function() {
		request = getHTTPObject();
		if (!request || !url) {
			alert('no process page');
			return false;
		} else {
			initiateRequest();
			return true;
		}
	};

	var initiateRequest = function() {
		DisableEnableForm(container,true);
		
		if(loading) {
			loading();
		}
		request.onreadystatechange = completeRequest;
		
		if (data) {
			request.open("POST", url, true);
			request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			request.send(data);
		} else {
			request.send(null);
		}
	};

	var completeRequest = function() {
		if (request.readyState == 4) {
			if (request.status == 200 || request.status == 304) {
				
				if (canvas) {
					canvas.innerHTML = request.responseText;
					container.reset();
				}
				if (callback) {
					callback();
				}
			} else {
				if(errorhandler) {
					errorhandler();
					DisableEnableForm(container,false);
				}
			}
		}
	};

}


//Activate/Deactive Form
function DisableEnableForm(xForm,xHow){
	objElems = xForm.elements;
	for(i=0;i<objElems.length;i++){
		if (objElems[i].type == "submit") {
		objElems[i].disabled = xHow;
		}
		return;
	}
}

