function createRequestObject(){
  var xmlhttp;

  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}

/////GET
function doAsyncRequest(url,funcion) {
    var http = createRequestObject();
    if(http.readyState!=0 && http.readyState!=4) return false;
    http.open('GET',url,true);
    http.onreadystatechange = function () {
        if(http.readyState==0 || http.readyState==4) if(funcion) eval(funcion+"(http)");
    }
    http.send(null);
    return http;
}

function doAsyncRequestExt(url,onCompleta,onProgreso) {
    var http = createRequestObject();
    if(http.readyState!=0 && http.readyState!=3 && http.readyState!=4) return false;
    http.open('GET',url,true);
//    http.onprogress =  function () {
//        if(onProgress) eval(onProgress+"(http)");
//    }
    http.onreadystatechange = function () {
        if(http.readyState==3) if(onProgreso) eval(onProgreso+"(http)");
        if(http.readyState==0 || http.readyState==4) if(onCompleta) eval(onCompleta+"(http)");
    }
    http.send(null);
    return http;
}

function doSyncRequest(url) {
    var http = createRequestObject();
    if(http.readyState!=0 && http.readyState!=4) return false;
    http.open('GET',url,false);
    http.send(null);
    if(http.readyState == 4){
        try{ var st=http.status; } catch(e) {var st=-1;}
        if(st==200) {
            return http;
        } else {
            return false;
        }
    } else {
        return false;
    }
    
}

/////POST
function doAsyncPOST(url,funcion,parametros) {
    var http = createRequestObject();
    if(http.readyState!=0 && http.readyState!=4) return false;
    http.open('POST', url, true);
    http.onreadystatechange = function () {
        if(funcion) eval(funcion+"(http)");
    }
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", parametros.length);
    http.setRequestHeader("Connection", "close");
    http.send(parametros);
    return http;
}

function doSyncPOST(url,parametros) {
    var http = createRequestObject();
    if(http.readyState!=0 && http.readyState!=4) return false;
    http.open('POST', url, false);
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", parametros.length);
    http.setRequestHeader("Connection", "close");
    http.send(parametros);
    if(http.readyState == 4){
        try{ var st=http.status; } catch(e) {var st=-1;}
        if(st==200) {
            return http;
        } else {
            return false;
        }
    } else {
        return false;
    }
    
}

function doSyncJsonPOST(url,parametros) {
    var http = createRequestObject();
    if(http.readyState!=0 && http.readyState!=4) return false;
    http.open('POST', url, false);
    http.setRequestHeader("Content-type", "text/plain");
    http.setRequestHeader("Content-length", parametros.length);
    http.setRequestHeader("Connection", "close");
    http.send(parametros);
    if(http.readyState == 4){
        try{ var st=http.status; } catch(e) {var st=-1;}
        if(st==200) {
            return http;
        } else {
            return false;
        }
    } else {
        return false;
    }
    
}