/* content loader Object */
var startSOAP='<?xml version="1.0" encoding="UTF-8" ?>\n'
	     +'<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"'
	     +' xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"'
	     +' xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"'
	     +' xmlns:xsd="http://www.w3.org/1999/XMLSchema"'
	     +' SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">\n'
             +'<SOAP-ENV:Body>';
var endSOAP='</SOAP-ENV:Body></SOAP-ENV:Envelope>';

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.proxy="/htbin/cgiproxy.pl";

net.ContentLoader=function(url,onload,onerror,method,params,contentType,headers,soap,proxy,secure,plz,show) {
this.req=null;
this.onload=onload;
this.onerror=(onerror) ? onerror : this.defaultError;
this.secure=secure;
this.proxy=proxy;
this.plz=plz;
this.show=show;
if (soap) {
	params=startsoap+params+endsoap;
}
this.loadXMLDoc(url,method,params,contentType,headers);
}

net.ContentLoader.prototype={
	loadXMLDoc:function(url,method,params,contentType,headers) {
		if (!method) {
			method="GET";
		}
		if (contentType && method=="POST") {
			contentType="application/x-www-form-urlencoded";
		}
		if (typeof window.XMLHttpRequest != "undefined") {
			this.req=new XMLHttpRequest();
		} else if (typeof window.createRequest!= "undefined") {
			this.req=new window.createRequest();	
		} else if (typeof window.ActiveXObject != "undefined"){
			try {
			  this.req = new ActiveXObject("Msxml2.XMLHTTP");
			 } catch (e) {
			  try {
			   this.req = new ActiveXObject("Microsoft.XMLHTTP");
			  } catch (E) {
			  }
			 } 
		}

		if (this.req) {
			try {
				try {
					if (this.secure && netscape 
					&& netscape.security.PrivilegeManager.enablePrivilege) {
						netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
					}
				} catch (err) {
//					alert("privilege error");
				}
				if (this.proxy!= '') {
					this.req.open(method,net.proxy,true);
					this.req.setRequestHeader('REALREQUEST', url);
				} else {
					this.req.open(method,url,true);
				}
				if(contentType) {
					this.req.setRequestHeader('Content-Type', contentType);
				}
				if(headers) {
					for (h in headers) {
						this.req.setRequestHeader(h,headers[h]);
					}
				}
				var loader=this;
				this.req.onreadystatechange=function() {
					loader.onReadyState.call(loader);
				}
				this.req.send(params);
			} catch (err) {
				this.onerror.call(this);
			}
		} else {
	alert("XML Object nicht gefunden");
		}
	},

	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) {
				try {
					if (this.secure && netscape 
					&& netscape.security.PrivilegeManager.enablePrivilege) {
						netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
					}
				} catch(err) {}
				this.onload.call(this);
			} else {
				this.onerror.call(this);
			}
		}
	},
	defaultError:function() {
		alert("error fetching data!"
			+"\nReadyState:"+this.req.readyState
			+"\nStatus:    "+this.req.status
			+"\nheaders:   "+this.req.getAllResponseHeaders()
		);
	
	}
}
