
function XHConn()
{
	var xmlhttp, bComplete = false;

	if (navigator.userAgent.indexOf('MSIE') != -1){
		// microsoft explorer
  		try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      }
  		catch (e){
  			  try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
  			    catch (e) { 				      try {
                  xmlhttp = new XMLHttpRequest();
                  // nuevo para firefox
                  if (xmlhttp.overrideMimeType) {
                      xmlhttp.overrideMimeType('text/xml');
                  }
              }
 				      catch (e) {
                  xmlhttp = false;
              }
  		      }
		      }
	    }else{		    // otros
		      try {
              xmlhttp = new XMLHttpRequest();
          }
		      catch (e) {
              xmlhttp = false;
          }
	    }

  	  if (!xmlhttp) return null;

  	this.connect = function(sURL, sMethod, sVars, fnDone){
		if (!xmlhttp) return false;
    	bComplete = false;
    	sMethod = sMethod.toUpperCase();
    	try {
//alert(sMethod);
      		if (sMethod == "GET"){
        		xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        		sVars = "";
      		}else{
        		xmlhttp.open(sMethod, sURL, true);
        		xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      		}

      		xmlhttp.onreadystatechange = function(){
       			if (xmlhttp.readyState == 4 && !bComplete){
          			bComplete = true;
//alert("done");
          			fnDone(xmlhttp);
        		}
        	};
			xmlhttp.send(sVars);
		}
    	catch(z) { return false; }
    	return true;
	};
  	return this;
}

function XHConnBase64()
{
	var xmlhttp, bComplete = false;

	if (navigator.userAgent.indexOf('MSIE') != -1){
  		try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  		catch (e){
  			try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
  			catch (e) {
 				try { xmlhttp = new XMLHttpRequest(); }
 				catch (e) { xmlhttp = false; }
  			}
		}
	}else{
		try { xmlhttp = new XMLHttpRequest(); }
		catch (e) { xmlhttp = false; }
	}
  	if (!xmlhttp) return null;
  	this.connect = function(sURL, sMethod, sVars, fnDone){
		if (!xmlhttp) return false;
    	bComplete = false;
    	sMethod = sMethod.toUpperCase();
    	try {
      		if (sMethod == "GET"){
        		xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        		sVars = "";
      		}else{
        		xmlhttp.open(sMethod, sURL, true);
        		xmlhttp.setRequestHeader("Method", "POST "+sURL);
//        		xmlhttp.setRequestHeader("Content-Type", "text/plain; charset=iso-8859-1");
        		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//        		xmlhttp.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");
        		xmlhttp.setRequestHeader("Content-transfer-encoding", "base64");
      		}
      		xmlhttp.onreadystatechange = function(){
       			if (xmlhttp.readyState == 4 && !bComplete){
          			bComplete = true;
          			fnDone(xmlhttp);
        		}
        	};
			xmlhttp.send(sVars);
		}
    	catch(z) { return false; }
    	return true;
	};
  	return this;
}
