﻿
	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.ContentLoader=function(url,onload,onerror,method,params,contentType){
		this.url=url;
		this.req=null;
		this.onload=onload;
		this.onerror=(onerror) ? onerror : this.defaultError;
		this.loadXMLDoc(url,method,params,contentType);
	}
	net.ContentLoader.prototype={
		loadXMLDoc:function(url,method,params,contentType){
			if(!method){
				method="GET";
			}
			if(!contentType&&method=="POST"){
				contentType="application/x-www-form-urlencoded";
			}
			if (window.XMLHttpRequest){
				this.req=new XMLHttpRequest();
			} else if (window.ActiveXObject){
				this.req=new ActiveXObject("Microsoft.XMLHTTP");
			}
			if (this.req){
				try{
					var loader=this;
					this.req.onreadystatechange=function(){
						loader.onReadyState.call(loader);
					}
					this.req.open(method,url,true);
					if(contentType){
						this.req.setRequestHeader("Content-Type",contentType);
					}
					//if(!params){
					//	params=null;
					this.req.send(params);
				}catch (err){
					this.onerror.call(this);
				}
			}
		},
		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){
					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());
		}
	}