var g_req_num = 10;

var g_delimiter = "&nbsp;";

var g_req = new Array(g_req_num);
var g_container = new Array(g_req_num);
for (i = 0; i < g_container.length; i++) {
	g_container[i] = 0;
}

function loadXMLDoc(rid, url, func) {
	//alert("request:"+rid);
    if (window.XMLHttpRequest) {
		//alert("XMLHttpRequest OK");
        g_req[rid] = new XMLHttpRequest();
        g_req[rid] .onreadystatechange =function () {
			func(rid);
		}
        g_req[rid] .open("GET", url, true);
        g_req[rid] .send(null);
    } else if (window.ActiveXObject) {
		//alert("ActiveXObject OK");
        g_req[rid]  = new ActiveXObject("Microsoft.XMLHTTP");
        if (g_req[rid] ) {
            g_req[rid] .onreadystatechange =function () {
			  func(rid);
		    }
            g_req[rid] .open("GET", url, true);
            g_req[rid] .send();
        }
    } else {
		alert("Cannot send request, maybe you need Firefox");
	}
}



function process_req(rid) {   
	if (g_container[rid] == 0) return;
	if (g_req[rid].readyState == 4) {
		if (g_req[rid].status == 200) {
			 var mytext=g_req[rid].responseText;
			 var txt="<font color=red>undef error</font>";

			 txts=mytext.search("TX!");
			 if(txts>=0) {
				 txts=txts+3;
				 txte=mytext.search("!TX");
				 txte=txte-txts;
				 txt=mytext.substr(txts,txte);
			 }
			 //alert(rid);
			 g_container[rid].innerHTML=txt;
			 g_container[rid]=0;

			 jscs=mytext.search("JS!");
			 if(jscs>=0) {
				 jscs=jscs+3;
				 jsce=mytext.search("!JS");
				 jsce=jsce-jscs;
				 jscd=mytext.substr(jscs,jsce);
				 eval(jscd);
			 }
        } else {
			 s = g_container[rid].innerHTML;
             if (s.indexOf(g_delimiter) != -1) {
				 g_container[rid].innerHTML = s.substr(0, s.indexOf(g_delimiter)) + g_delimiter +"<br>Error or Aborted";
			 } else {
				 g_container[rid].innerHTML += g_delimiter +"<br>Error or Aborted";
			 }
             g_container[rid]=0;
        }
    }  
}


function process_test_req(rid) {   
	//alert(rid);
    if (g_container[rid] == 0) return;
	if (g_req[rid].readyState == 4) {
		if (g_req[rid].status == 200) {
			 var mytext=g_req[rid].responseText;
			 var txt="<font color=red>undef error</font>";             
			 //alert(mytext);

			 txts=mytext.search("TX!");
			 if(txts>=0) {
				 txts=txts+3;
				 txte=mytext.search("!TX");
				 txte=txte-txts;
				 txt=mytext.substr(txts,txte);
			 } else {
				txt = mytext;
			 }
			 //g_container.innerHTML=txt;   
			 s = g_container[rid].innerHTML;
		 	 g_container[rid].innerHTML = s.substr(0, s.indexOf(g_delimiter)) + g_delimiter + "<br>" + txt;
		 	 g_container[rid]=0;

			 jscs=mytext.search("JS!");
			 if(jscs>=0) {
				 jscs=jscs+3;
				 jsce=mytext.search("!JS");
				 jsce=jsce-jscs;
				 jscd=mytext.substr(jscs,jsce);
				 eval(jscd);
			 } 

        } else {
			 s = g_container[rid].innerHTML;
			 if (s.indexOf(g_delimiter) != -1) {
				 g_container[rid].innerHTML = s.substr(0, s.indexOf(g_delimiter)) + g_delimiter +"<br>Error or Aborted";
			 } else {
				 g_container[rid].innerHTML += g_delimiter +"<br>Error or Aborted";
			 }
             g_container[rid]=0;
        }
    }  
}

function request_abort(rid)
{
	g_req[rid].abort();
	if (g_container[rid] != 0) {
		s = g_container[rid].innerHTML;
		if (s.indexOf(g_delimiter) != -1) {
			g_container[rid].innerHTML = s.substr(0, s.indexOf(g_delimiter)) + g_delimiter +"<br>Aborted";
		} else {
			g_container[rid].innerHTML += g_delimiter +"<br>Aborted";
		}
		g_container[rid]=0;
	}
}

function proxy_checkout(id)
{
	rid = -1;
	for (i = 0; i < g_container.length; i++) {
		if (g_container[i] == 0) {
			rid = i;
			break;
		}
	}

	if(rid == -1){ 
		alert("Please wait, too many requests");
	} else {
	  g_container[rid] = document.getElementById(id);
	  if (g_container[rid] == null) alert("Internal error, contact site manager please");
	  g_container[rid].innerHTML="<font color=#4444AA>checking out...</font>";
	  var url = 'proxy_checkout_private.php?id=' + id;
	  loadXMLDoc(rid, url, process_req);    
    }
}

function proxy_test(id, param)
{
	rid = -1;
	for (i = 0; i < g_container.length; i++) {
		if (g_container[i] == 0) {
			rid = i;
			break;
		}
	}

	if(rid == -1){  
		alert("Please wait, too many requests");
	} else {
	  g_container[rid] = document.getElementById(id);
	  if (g_container[rid] == null) alert("Internal error, contact site manager please");
	  //alert(g_container.innerHTML);
	  g_container[rid].innerHTML += g_delimiter + "<br><font color=#4444AA>Testing..." +
			"<a title='Click to abort' href='javascript:request_abort("+rid+");'>X</a></font>";
	  var url = 'proxy_checkout_private.php?test=1&id=' + id + param;
	  loadXMLDoc(rid, url, process_test_req);    
    }
}