/*
	Cindy Network Code
*/

	function cn_createxml () {

		var req = {
			error: false,
			url: arguments.length ? arguments[0] : false,
			type: arguments.length > 1 ? arguments[1] : 0,
			async: arguments.length > 2 ? true : false,
			callback: arguments.length > 2 ? arguments[2] : false,
			method: arguments.length > 3 ? "POST" : "GET",
			data: arguments.length > 3 ? arguments[3] : null
		}; try {
			req.xml = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			try {
				req.xml = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					req.xml = new XMLHttpRequest();
				} catch (e) {
					req.error = true;
					return xml;
				}				
			}
		} req.perform = function () {
			req.xml.open(this.method,this.url,this.async);
			if (this.method == "POST") {
				req.xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				req.xml.setRequestHeader("Content-length", this.data.length);
				req.xml.setRequestHeader("Connection", "close");
			} if (this.async && this.callback) {
				req.xml.onreadystatechange = function () {
					if (req.xml.readyState != 4) {
						return;
					} clearTimeout(req.timeout);
					if (req.xml.status != 200) {
						if (req.timeout) {
							req.callback(new Error(101,'XML_BAD_REQUEST'),false);
						} else {
							req.callback(new Error(102,'XML_SERVER_TIMEOUT'),false);
						}
					} else {						
						req.callback(req.type ? req.xml.responseXML : req.xml.responseText,true);
					}
				}; req.timeout = setTimeout (
					function () {
						req.timeout = false;
						req.xml.abort();
					},
				15000);
				req.xml.send(this.data);
			} else {
				alert(this.data.length);
				req.xml.send(this.data);
				if (req.xml.status != 200) {
					throw new Error(101,'XML_BAD_REQUEST');
				} return this.type ? req.xml.responseXML : req.xml.responseText;
			}
		}; return req;
			
	}

	function cindy_xml () {

		var obj = this;
		this.createXml = cn_createxml;
		this.fetchString = function (u) {var r = obj.createXml(u); if (r.error) return false; return r.perform();}
		this.getString = function (u,f) {var r = obj.createXml(u,0,f); if (r.error) return false; return r.perform();}
		this.sendString = function (u,d) {var r = obj.createXml(u,0,false,d); r.perform(); return true;}
		this.postString = function (u,d,f) {var r = obj.createXml(u,0,f,d); r.perform(); return true;}
		this.fetchXml = function (u) {var r = obj.createXml(u,1); return r.perform();}
		this.getXml = function (u,f) {var r = obj.createXml(u,1,f); r.perform(); return true;}

	}
