// JavaScript Document 
var net = new Object();
net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;
net.AjaxLoader=function(onload,onerror){
	this.debug=false;
	this.req=null;
	this.onload=onload;
	this.onerror=(onerror) ? onerror : this.defaultError;
	this.parameters=new Array();
	this.values=new Array();
	this.init();
}
net.AjaxLoader.prototype={
	init:function(){
		if(window.XMLHttpRequest){
			this.req = new XMLHttpRequest();
		}else{
			this.req = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if(this.req){
			try{
				var loader=this;
				this.req.onreadystatechange=function(){
					loader.onReadyState.call(loader);
				}
			}catch (err){
				this.onerror.call(this)
			}
		}
	},
	setDebug:function(mode){
		this.debug=mode;
	},
	get:function(url){
		try{
			this.req.open('GET', url, true);
			this.req.send(null);
		}catch (err){
			this.onerror.call(this)
		}
	},
	post:function(url, parameters){
		try{
			this.req.open('POST', url, true);
      		this.req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      		this.req.setRequestHeader("Content-length", parameters.length);
      		this.req.setRequestHeader("Connection", "close");
      		this.req.send(parameters);
		}catch (err){
			this.onerror.call(this)
		}
	},
	postForm:function(theForm){
		try{
			url=theForm.action;
			data = "";			
			for(i=0; i<theForm.elements.length; i++){
				if(theForm.elements[i].type == "text" || theForm.elements[i].type == "hidden" || theForm.elements[i].type == "textarea" || theForm.elements[i].type == "button"){
					if(i>0) data+="&";
					data += theForm.elements[i].name+"="+theForm.elements[i].value;
				}
				else if(theForm.elements[i].type == "checkbox" && theForm.elements[i].checked){
					if(i>0) data+="&";
					data += theForm.elements[i].name+"="+theForm.elements[i].value;
				}
				else if(theForm.elements[i].type == "radio" && theForm.elements[i].checked){
					if(i>0) data+="&";
					data += theForm.elements[i].name+"="+theForm.elements[i].value;
				}
				else if(theForm.elements[i].type == "select-one"){
					if(i>0) data+="&";
					data += theForm.elements[i].name+"="+theForm.elements[i].options[theForm.elements[i].selectedIndex].text;
				}
				else if(theForm.elements[i].type == "select-multiple"){
					for(j=0; j < theForm.elements[i].options.length; j++){					
						if(theForm.elements[i].options[j].selected){
							if(i>0) data+="&";
							data += theForm.elements[i].name+"="+theForm.elements[i].options[j].text;
						}
					}
				}
			}
			this.post(url,data);
		}catch (err){
			this.onerror.call(this)
		}
		return false;
	},
	onReadyState:function(){
		var req=this.req;
		var ready=req.readyState;
		if(ready==net.READY_STATE_COMPLETE){
			var httpStatus=req.status;
			if(httpStatus==200 || httpStatus==0){
				if(this.debug)alert(req.responseText);
				commands = this.req.responseXML.getElementsByTagName("AjaxLoaderCommand");
				for(x=0;x<commands.length;x++)
				{
					eval(commands[x].firstChild.data);
				}
				this.onload.call(this);
			}else{
				this.onerror.call(this);
			}
		}
	},
	defaultError:function(){
		alert("error fetching data!"
			  +"\n\nreadyState: "+this.req.readyState
			  +"\nstatus: "+this.req.status
			  +"\nheaders: "+this.req.getAllResponseHeaders());
	}
}