function ajax_create () {
 var xml_http_request;
 try {
  xml_http_request = new XMLHttpRequest();
 } catch (e) {
  try {
   xml_http_request = new ActiveXObject("Msxml2.xml_http_request");
  } catch (e) {
   try {
    xml_http_request = new ActiveXObject("Microsoft.xml_http_request");
   } catch (E) {
    xml_http_request = null;
   }
  }
 }
 return xml_http_request;
}
function ajax_call (_method, _url, _values, _action, _target) {
 uri = _url;
 if (_method == "GET") {
  if (uri.indexOf("?") == -1)
   uri = uri + "?action=" + encodeURIComponent(_action);
  else
   uri = uri + "&action=" + encodeURIComponent(_action);
  for (i = 0; i < _values.length; i++)
   uri = uri + "&values[]=" + encodeURIComponent(args[i]);
  post_data = null;
 } else {
  post_data = "action=" + encodeURIComponent(_action);
  for (i = 0; i < _values.length; i++)
   post_data = post_data + "&values[]=" + encodeURIComponent(_values[i]);
 }
 var xml_http_request = ajax_create();
 if (!xml_http_request) {
  alert("AJAX not supported");
  return false;
 }
 try {
  xml_http_request.open(_method, uri, true);
 } catch (e) {
  if (window.location.hostname == "localhost") {
   alert("Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing.");
  }
  throw e;
 }
 if (_method == "POST") {
  xml_http_request.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
  xml_http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
 }
 xml_http_request.setRequestHeader("Pragma", "cache=yes");
 xml_http_request.setRequestHeader("Cache-Control", "no-transform");
 xml_http_request.onreadystatechange = function () {
  if (xml_http_request.readyState != 4)
   return;
  if (typeof(_target) == 'function') {
   if (xml_http_request.status == 200) _target(xml_http_request.responseText);
   else alert("Error: " + xml_http_request.status + " " + xml_http_request.statusText + " (" + xml_http_request.responseText + ")");
  }
  else {
   if (typeof(_target) == 'object') {
    if (_target.tagName == 'X') {
    } else {
     if (_target.tagName == 'INPUT') {
      if (xml_http_request.status == 200) _target.value = xml_http_request.responseText;
      else alert("Error: " + xml_http_request.status + " " + xml_http_request.statusText + " (" + xml_http_request.responseText + ")");
     }
     else {
      if (_target.tagName == 'SELECT') {
       if (xml_http_request.readyState == 1) {
        _target.length = 0;
        var opcion = document.createElement("option");
        opcion.value = 0;
        opcion.innerHTML = "Cargando...";
        _target.appendChild(opcion);
        _target.disabled = true;
       }
       if (xml_http_request.readyState == 4) {
        _target.parentNode.innerHTML = xml_http_request.responseText;
       }
      } else {
       if (xml_http_request.status == 200) _target.innerHTML = xml_http_request.responseText;
       else _target.innerHTML= "<div class='error'>Error: " + xml_http_request.status + " " + xml_http_request.statusText + " (" + xml_http_request.responseText + ")</div>";
      }
     }
    }
   }
   else {
    alert("bad target for ajax_call: not a function or object: " + _target);
   }
  }
  return;
 }
 xml_http_request.send(post_data);
 delete xml_http_request;

 return true;
}

