function XMLHttp(){
//netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}


XMLHttp.prototype.create = function(){
 
	if (typeof XMLHttpRequest == 'undefined') {
		  XMLHttpRequest = function () {
		    var msxmls = ['MSXML3', 'MSXML2', 'Microsoft']
  			  for (var i=0; i < msxmls.length; i++) {
			      try {
			        return new ActiveXObject(msxmls[i]+'.XMLHTTP')
    			  }
			      catch (e) { }
    		 }
    		 throw new Error("No XML component installed!")
  		}
	}

	return new XMLHttpRequest();	
} 


XMLHttp.prototype.browserIsCompatible = function(){
	var bool = false;

	if (typeof XMLHttpRequest == 'undefined') {
	      var msxmls = ['MSXML3', 'MSXML2', 'Microsoft']
  		  for (var i=0; i < msxmls.length; i++) {
		      try {
		        if (new ActiveXObject(msxmls[i]+'.XMLHTTP')){
					bool = true;	
					break;
				}
    		  }
		      catch (e) { }
    	 }
	}else{
		bool = true;
	}

	
	return bool;
}

XMLHttp.prototype.requestURL = function(  url, method, postData, handler  ){
	if ( ! url ) 	{ alert("No URL Specified for Request"); return }
	if ( ! method ) { method = 'GET'; } else { method = method.toUpperCase(); }



	//Create a new request object
    var req = this.create();
    req.open(method, url, true);
    req.onreadystatechange = function(){ handler(req) };

	// Set the request header and build the post string
	// If the method is post
	var postDataString = null;
	if ( method == 'POST'){
    	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	
		postDataString = '';
		for( var i = 0; postData.length > i; i++ ){
			if ( postDataString.length > 0 ){ postDataString += "&"; }
			postDataString += postData[i].key +"=" + encodeURI( postData[i].value  );
		}
		
	}

    /* Send the request */
    req.send( postDataString );
}

XMLHttp.prototype.setHandler = function(handler) {
	this.handler = handler;
}

//Decode a base64 string
XMLHttp.prototype.getBase64Decoded = function(input) {
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var output = "";
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;

    // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

    do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
           output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
           output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
 }

XMLHttp.prototype.getObjTextData = function(htmlElement, field){
    return htmlElement.getElementsByTagName( field  )[0].firstChild.data;
}

