if(!net){
	var net={};
}
net.READY_STATAE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;
net.XMLHTTP={
    loadXMLDoc: function(methodType,url,formData,dataFunc,errorFunc,reqHeader,userName,password){
        this.dataFunc=(typeof dataFunc=="function")?dataFunc:this.defaultDataFunc;
        this.errorFunc=(typeof errorFunc=="function")?errorFunc:this.defaultError;
		this.reqHeader=(typeof reqHeader=="object")?reqHeader:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"};
		formData=(typeof formData=="object")?formData:{};
		var arr=new Array()
		for(var v in formData){
			if(typeof formData[v]!="function")
			arr[arr.length]=escape(v)+"="+escape(formData[v])
		}
		formData="data="+encodeURIComponent(base.JSONstring.make(formData));
		if(window.XMLHttpRequest){
            this.req=new XMLHttpRequest();
		}else if(window.ActiveXObject){
	            this.req=new ActiveXObject("Microsoft.XMLHTTP");
		}
        var pThis=this;
        this.req.onreadystatechange=function(){
            pThis.onReadyStateHandler.call(pThis);
        }
		if(typeof this.userName=="string" && userName.length>0){
            this.req.open(methodType,url,true,userName,password);
        }else{
            this.req.open(methodType,url+"?"+formData,true);
        }
		for(var idx in this.reqHeader){
            this.req.setRequestHeader(idx,this.reqHeader[idx]);
        }
		this.req.send(formData);
    },
    onReadyStateHandler: function(){
        if(this.req.readyState==net.READY_STATE_COMPLETE){
            if(this.req.status==200||this.req.status==400){
                this.dataFunc.call(this);
            }else{
                this.errorFunc.call(this);
            }
        }
    },
    defaultError: function(){
        var errString="error fetching data!\n\nreadyState:"+this.req.readyState
        errString+="\n\nstatus: "+this.req.status+" status text: "+this.req.statusText
        errString+="\n\nheaders: "+this.req.getAllResponseHeaders();
        alert(errString);
    },
    defaultDataFunc: function(){
        var el=document.createElement("div");
        el.innerHTML="default handler:<p>"+this.req.responseText;
        var body=document.getElementsByTagName("body")[0];
        body.appendChild(el);
    }
}

