﻿var postArgs = Array();

var xHttpReq = getXMLHttpRequest();

function AddPostArgs(name,value)
{
	try{
		value = encodeURIComponent(value);
	}
	catch(e){
		value = escape(value);
		value.replace("+","%2B");
		value.replace("/","%2F");
		value.replace("@","%40");
		value.replace("*","%2A");
	}
	postArgs[postArgs.length] = Array(name,value);
}

function getXMLHttpRequest() {
	var req;
	try {
		req = new XMLHttpRequest(); /* e.g. Firefox */
	} catch(e) {
		try {
			var XmlVersions = new Array('MSXML2.XMLHTTP.6.0',
										'MSXML2.XMLHTTP.5.0',
										'MSXML2.XMLHTTP.4.0',
										'MSXML2.XMLHTTP.3.0',
										'MSXML2.XMLHTTP.2.0',
										'MSXML2.XMLHTTP',
										'Microsoft.XMLHTTP');
			for(var i=0;i<XmlVersions.length && !req;i++){
				try{
					req = new ActiveXObject(XmlVersions[i]);
				}
				catch(e){}
			}
		} catch (e) {
				req = false;
		}
	}
	return req;
}

function showProgress(str,pageElement){
	document.getElementById(pageElement).innerHTML = '<table><tr><td class="dlprogress">'+str+'</td></tr></table>';
}

function showError(errstr,pageElement){
	document.getElementById(pageElement).innerHTML = '<table><tr><td class="dlprogress">'+errstr+'</td></tr></table>';
}

function checkRequest(errMsg,pageElement){
	if(!xHttpReq){
		showError(errMsg,pageElement);
		return false;
	}
	if(xHttpReq.readyState>0&&xHttpReq.readyState<4)
		xHttpReq.abort;
	delete xHttpReq;
	xHttpReq = getXMLHttpRequest();
	return true;
}

function postAjax(url, pageElement, callMsg, errMsg){
	//showProgress(callMsg,pageElement);
	if(!checkRequest(errMsg,pageElement))
		return;
	xHttpReq.onreadystatechange = function() {responseAjax(pageElement, errMsg);};
	xHttpReq.open("POST",url,true);
	var post_str = "";
	for(var i=0;i<postArgs.length;i++)
	{
		if(i!=0)
			post_str+='&';
		post_str += postArgs[i][0]+'='+postArgs[i][1];
	}
	postArgs.clear;
	xHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xHttpReq.send(post_str);
}

function responseAjax(pageElement, errorMessage) {
	var output = '';
	if(xHttpReq.readyState == 4) {
		if(xHttpReq.status == 200) {
			output = xHttpReq.responseXML;
			document.getElementById(pageElement).setOutput(output);
		} else {
			//showError(errorMessage,pageElement);
		}
	}
}

function getEl(id){
	return document.getElementById(id);
}

function postRequest(elementId,callMsg,errMsg){
	postAjax('/stones.php',elementId,callMsg, errMsg);
}
