function XmlHttp(method, url, callback, callbackParams) {
  this.method = method;
  this.url    = url;
  this.requestor = null;
  this.sendText  = sendToHostText;
  this.sendXml   = sendToHostXml;
  this.callback  = callback;
  this.callbackParams = callbackParams;

  if(window.XMLHttpRequest){
    this.requestor = new XMLHttpRequest();
  }else
  if(window.ActiveXObject){
    try{
      this.requestor = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e){
      this.requestor = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
}
//XmlHttp.sendToHostText
  function sendToHostText(data) {
    if(this.requestor) {
      var req = this.requestor;
      var cb  = this.callback;
      var params = this.callbackParams;
      this.requestor.onreadystatechange = function() {
        if(req.readyState == 4) {
          cb(req.status, req.responseText, params);
        }
      };
      
      if(this.method.toLowerCase() == 'post') {
          //this.requestor.overrideMimeType("text/html; charset=shift_jis");
	      this.requestor.open("POST", this.url, true);
          this.requestor.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
          this.requestor.send(data);
      }
      if(this.method.toLowerCase() == 'get') {
          //this.requestor.overrideMimeType("text/html; charset=shift_jis");
          if(data) {
		      this.requestor.open("GET", this.url+"?"+data, true);
          }else{
		      this.requestor.open("GET", this.url, true);
          }
          this.requestor.setRequestHeader("Cache-Control", "no-chace");
          this.requestor.setRequestHeader("Pragma", "no-chace");
          this.requestor.send(data);
      }
    }
  };
//XmlHttp.sendToHostXml
  function sendToHostXml(data) {
    if(this.requestor) {
      var req = this.requestor;
      var cb  = this.callback;
      var params = this.callbackParams;
      this.requestor.onreadystatechange = function() {
        if(req.readyState == 4) {
          cb(req.status, req.responseXML, params);
        }
      };
      
      if(this.method.toLowerCase() == 'post') {
	      this.requestor.open("POST", this.url, true);
          this.requestor.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
          this.requestor.send(data);
      }
      if(this.method.toLowerCase() == 'get') {
          if(data) {
		      this.requestor.open("GET", this.url+"?"+data, true);
          }else{
		      this.requestor.open("GET", this.url, true);
          }
          this.requestor.setRequestHeader("Cache-Control", "no-chace");
          this.requestor.setRequestHeader("Pragma", "no-chace");
          this.requestor.send(null);
      }
    }
  };

