var req;
var isWorking = false;

function getURL(url) {
  if(isWorking == true) { setTimeout("getURL(\""+url+"\")", "10"); return false; }

  isWorking = true;
  if (window.XMLHttpRequest) {
	req = new XMLHttpRequest();
	req.onreadystatechange = handleHttpResponse;
	req.open("GET", url, true);
	req.send(null);
  } else if (window.ActiveXObject) { // IE
	try {
		req = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (req) {
		req.onreadystatechange = handleHttpResponse;
		req.open("GET", url, true);
		req.send();
	} else {
		alert("shockingly, your browser does not support ajax");
	}
  } else {
	alert("shockingly, your browser does not support ajax");
  }

  return false;
}

function postURL(url,outbuf) {
  if(isWorking == true) { setTimeout("postURL(\""+url+"\",\""+outbuf+"\")", "10"); return false; }

  isWorking = true;

  var browser = navigator.appName;
  if(browser != "Microsoft Internet Explorer") {
    req = new XMLHttpRequest();
    req.onreadystatechange = handleHttpResponse;
    req.open("POST", url, true);
    req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    req.send(outbuf);
  } else if (window.ActiveXObject) { // IE
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      req.onreadystatechange = handleHttpResponse;
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
      req.send(outbuf);
    }
  }

  return false;
}

function handleHttpResponse() {
	if (req.readyState == 4) {
	        if(req.responseText.charAt(0) == "<") {
			if(req.responseText.charAt(1) != "!") {
				alert(req.responseText);
			} else {
				alert("Your session has expired! Please relogin");
			}
	        } else {
  		  eval(req.responseText);
		}
		isWorking = false;	
	}
}


function removeCR(inbuf) {
        var outbuf = "";
        for (var i = 0; i < inbuf.length; i++) {
                if (inbuf.charCodeAt(i) == 10) {
                        outbuf += "%0A";
                } else if (inbuf.charCodeAt(i) == 13) {
                        outbuf += "%0D";
                } else if (inbuf.charCodeAt(i) == 9) {
                        outbuf += "%09";
                } else {
                        outbuf += inbuf.charAt(i);
                }
        }
        return outbuf;
}

function escapeURL(inbuf) {
        var outbuf=inbuf;
        outbuf=outbuf.replace(/\%/g,"%25");
        outbuf=outbuf.replace(/!/g,"%21");
        outbuf=outbuf.replace(/\"/g,"%22");
        outbuf=outbuf.replace(/\#/g,"%23");
        outbuf=outbuf.replace(/\$/g,"%24");
        outbuf=outbuf.replace(/&/g,"%26");
        outbuf=outbuf.replace(/'/g,"%27");
        outbuf=outbuf.replace(/\^/g,"%5E");
        outbuf=outbuf.replace(/\(/g,"%28");
        outbuf=outbuf.replace(/\)/g,"%29");
        outbuf=outbuf.replace(/=/g,"%3D");
        outbuf=outbuf.replace(/,/g,"%2C");
        outbuf=outbuf.replace(/`/g,"%60");
        outbuf=outbuf.replace(/\[/g,"%5B");
        outbuf=outbuf.replace(/\]/g,"%5D");
        outbuf=outbuf.replace(/\{/g,"%7B");
        outbuf=outbuf.replace(/\}/g,"%7D");
        outbuf=outbuf.replace(/\?/g,"%3F");
        outbuf=outbuf.replace(/;/g,"%3B");
        outbuf=outbuf.replace(/:/g,"%3A");
        outbuf=outbuf.replace(/\|/g,"%7C");
        outbuf=outbuf.replace(/~/g,"%7E");
        outbuf=outbuf.replace(/ /g,"%20");
        outbuf=outbuf.replace(/\\/g,"%5C");
        outbuf=outbuf.replace(/\+/g,"%2B");

        return removeCR(outbuf);
}
