function K_getHTTPObject() {
  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;
}

function K_loadAJAX(file, callback)
{
	var http=K_getHTTPObject();
	var js_load=false;
	var ended=false;
	if (file.substr(file.length-3,3)=='.js')
		js_load=true;

	var pos=file.indexOf("?");
	if (pos>-1)
		file+='&K_rand='+Math.random();
	else
		file+='?K_rand='+Math.random();

	http.open("GET", file, true);
	http.onreadystatechange = function()
	{
		if (http.readyState==4)
		{
			if (http.status == 200)
			{
				if (ended) return; ended=true;
				if (js_load==false)
				{
					var xmlDoc = http.responseXML;
					var stat= xmlDoc.getElementsByTagName('stat')[0].firstChild.data;
					if (!K_parseXMLres(stat))
						return;
					eval (callback+"(xmlDoc);");
				}
				else
				{
					eval(http.responseText);
					pos=callback.indexOf("(");
					if (pos>-1)
						eval(callback);
					else
						eval (callback+"();");
				}
			}
			else
				alert('Archivo '+file+' no encontrado');
		}
	};
	http.send(null);
}

function K_parseXMLres(res)
{
	if (res=='NOK')
	{
		alert('Error en procedimiento remoto');
		return 0;
	}
	if (res=='DBERR')
	{
		alert('Error de base de datos');
		return 0;
	}
	if (res=='AUTHERR')
	{
		alert('Error de autentificación');
		return 0;
	}
	return 1;
}