//Ajax Multi- XMLHttpRequest

var xmlreqs = new Array();

function getCount(infile){
	url = infile + "ccount=1";
	xmlreqGET(url);
}
function validateform(id){
	var f=document.forms['form'+id]
	for (var i=0;i<f.elements.length;i++) {
		if (f.elements[i].value=='') {
			return false;
		}
	}
	return true;
}
function disableform(id){
	var f=document.forms['form'+id]
	for (var i=0;i<f.elements.length;i++) {
		f.elements[i].disabled=true;
	}
}
function enableform(id){
	var f=document.forms['form'+id]
	for (var i=0;i<f.elements.length;i++) {
		f.elements[i].disabled=false;
	}
}

function myload(status, id, page, infile) {
	var waiting = "<div align=center><img src=\"comments/pics/waiting.gif\" id=wait" + id + " class=wait border=0></div>";
	var newstatus = '';
	var mssg = '';
	switch (status){
		case 'close' :
		newstatus = 'open';
		break
		case 'hide' :
		newstatus = 'show';
		document.getElementById('hide'+id).style.display='none';
		break
		case 'open' :
		url = infile + "status=" + status + "&id=" + id + "&page=" + page;
		if(document.getElementById('hide'+id)){document.getElementById('hide'+id).innerHTML = waiting;}
		xmlreqGET(url);
		newstatus = 'hide';
		break
		case 'show' :
		newstatus = 'hide';
		document.getElementById('hide'+id).style.display='block';
		break
		case 'send' :
		if (validateform(id)==false){
			mssg = "required fields not filled";
		}
		else {
			url = infile + "status=" + status + "&id=" + id + "&page=" + page;
			var data = "action=postcomment&msg=" + encodeURI(document.getElementById('msg'+id).value) +
			"&uname=" + encodeURI(document.getElementById('u'+id).value) +
			"&verify=" + encodeURI(document.getElementById('verify'+id).value);
			document.getElementById('hide'+id).innerHTML = waiting;
			xmlreqPOST(url,data);
		}
		document.getElementById('m'+id).innerHTML = mssg;
		newstatus = 'hide';
		break
	}
	
	var ccount = (document.getElementById('count'+id)) ? document.getElementById('count'+id).firstChild.nodeValue : 0;

	var Message = "<div onClick=\"myload('" + newstatus + "', " + id + ", " + page + ", '" + infile + "')\" class=cc_link>+ Comments(<span id=count" + id + ">"+ccount+"</span>):</div>";
	document.getElementById(id).innerHTML = Message;
}

function CXMLReq(freed) {
	this.freed = freed;
	this.xmlhttp = false;
	if (window.XMLHttpRequest) {
		this.xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function xmlreqGET(url) {
	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); }
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].freed = 0;
		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,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); }
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].freed = 0;
		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) {
		if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
			xmlDocumentElement = xmlreqs[pos].xmlhttp.responseXML.documentElement;

			if (xmlDocumentElement.nodeName == 'comments'){
				id = xmlDocumentElement.childNodes[0].firstChild.nodeValue;
				var newtext = xmlDocumentElement.childNodes[1].firstChild.nodeValue;
				document.getElementById('hide'+id).innerHTML = newtext;
				if(xmlDocumentElement.childNodes[2]){
				var message= xmlDocumentElement.childNodes[2].firstChild.nodeValue;
				document.getElementById('m'+id).innerHTML = message;
				}
			}
			else if(xmlDocumentElement.nodeName == 'array'){

				for(var i=0; i<xmlDocumentElement.childNodes.length; i++){
					id = xmlDocumentElement.childNodes[i].firstChild.firstChild.nodeValue;
					var value = xmlDocumentElement.childNodes[i].lastChild.firstChild.nodeValue;
					document.getElementById('count'+id).innerHTML = value;
				}

			}
		} else {
			handle_error();
		}
		xmlreqs[pos].freed = 1;
	}
}

