	function trimAll(sString) {
		while (sString.substring(0,1) == ' ') {
			sString = sString.substring(1, sString.length);
		}
		while (sString.substring(sString.length-1, sString.length) == ' ') {
			sString = sString.substring(0,sString.length-1);
		}
		return sString;
	}
		
	function createXMLHttp() {
		if (typeof XMLHttpRequest != "undefined") {
			var oXmlHttp = new XMLHttpRequest();
			return oXmlHttp;
		} else 
			if (window.ActiveXObject) {
				var aVersions = [ "MSXML2.XMLHttp.5.0",
					"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
					"MSXML2.XMLHttp","Microsoft.XMLHttp"
				];
				for (var i = 0; i < aVersions.length; i++) {
					try {
						var oXmlHttp = new ActiveXObject(aVersions[i]);
						return oXmlHttp;
					} catch (oError) {
						//Do nothing
					}
				}
			}
		throw new Error("XMLHttp object could be created.");
	}
	
	function CallAjax(url, type, obj, mode) {
		var oXmlHttp = createXMLHttp();
		oXmlHttp.open("get", url, mode);
		
		oXmlHttp.onreadystatechange = function () {
	  		if (oXmlHttp.readyState == 4) {
				var status = "";
				try {
  					status = oXmlHttp.status;
		   	 	}
				catch(e){
  					status = "Trouble accessing it";
				}
        		if (status == 200) {
  					if (type == 1) {
						//return to a function;
						obj(oXmlHttp.responseText);
					}
					if (type == 2) {
						// return to form element
						obj.value = trimAll(oXmlHttp.responseText);
						return true;
					}
					if (type == 3) {
						// return to a div element
						obj.innerHTML = trimAll(oXmlHttp.responseText);
						return true;
					}
				} else {
					//alert("An error occurred: " + oXmlHttp.statusText);
				}
    		}
		};
		
		oXmlHttp.send(null);
	}
