var xmlreqs = new Array();
var imageDB = new Array();

function replaceImage(newsrc)
{
 if (newsrc.indexOf('/images/')>-1)
 {
  hashkey=newsrc.substring(newsrc.indexOf('/images/'));
  if (typeof imageDB[hashkey]!='undefined') return imageDB[hashkey].src;
 }
 return newsrc;
}

function CXMLReq(freed,tag) {
	this.freed = freed;
	this.xmlhttp = false;
	this.tag=tag;
	if (window.XMLHttpRequest) {
		this.xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function xmlreqGET(url,tag) {
	var pos = -1;
	for (var i=0; i<xmlreqs.length; i++) {
	if ((xmlreqs[i].freed==0) && (xmlreqs[i].tag==tag)) return;
	}
	for (var i=0; i<xmlreqs.length; i++) {
		if (xmlreqs[i].freed == 1) { pos = i; break; }
	}
	if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new CXMLReq(1,tag); }
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].freed = 0;
		xmlreqs[pos].tag = tag;
		xmlreqs[pos].xmlhttp.open("GET",url,true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function() {
			if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos); }
		}
		if (window.XMLHttpRequest) {
			xmlreqs[pos].xmlhttp.send(null);
		} else if (window.ActiveXObject) {
			xmlreqs[pos].xmlhttp.send();
		}
	}
}

function xmlreqPOST(url,tag,data) {
	var pos = -1;
	for (var i=0; i<xmlreqs.length; i++) {
		if (xmlreqs[i].freed == 1) { pos = i; break; }
	}
	if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new CXMLReq(1,tag); }
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].freed = 0;
		xmlreqs[pos].tag = tag;
		xmlreqs[pos].xmlhttp.open("POST",url,true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function() {
			if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos); }
		}
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlreqs[pos].xmlhttp.send(data);
	}
}

function xmlhttpChange(pos) {
	if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) {
		try {
			if ((xmlreqs[pos].xmlhttp.responseText!="") && (xmlreqs[pos].xmlhttp.responseText!=" ")) {
				if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
					//handle_response(xmlreqs[pos].xmlhttp.responseXML);
					handle_response("handle_response_"+xmlreqs[pos].tag,xmlreqs[pos].xmlhttp.responseText);
				} else {
					//handle_error();
				}
			}
		} catch (e) {}
		xmlreqs[pos].freed = 1;
	}
}



function handle_response(tagfunc,data)
{
 if (typeof this[tagfunc] == 'function')
 {
  this[tagfunc](data);
 }
}
