var RequestAJAX;
var Pid;
// crea un oggetto AJAX
function CreateXmlHttpRequest(Handler) {
  var http_request;
  browser = navigator.userAgent.toUpperCase();
  if (window.XMLHttpRequest) {
    http_request = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    var Versions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
    for (i = 0; i < Versions.length; i++) {
      try {
        http_request = new ActiveXObject(Versions[i]);
        break;
      } catch (xmlHttpRequestObjectError) {}
    }
  } else {
    http_request = null;
  }
  if (http_request) {
    http_request.onreadystatechange = Handler;
  }
  return http_request;
}
// funzioni che vengono passate all'oggeto AJAX
function Handler() {
  if (RequestAJAX.readyState == 4 && RequestAJAX.status == 200) {
    if (RequestAJAX.responseText) {
      var dataJSON = jQuery.parseJSON(RequestAJAX.responseText);
      if (dataJSON.pid == Pid) {
        var i, tag, type, j;
        for (i = 0; i < dataJSON.response.length; i++) {
          tag = document.getElementById(dataJSON.response[i].name);
          type = tag.tagName.toLowerCase();
          if ((type == "input") || (type == "textarea")) {
            tag.value = dataJSON.response[i].value;
            if (tag.type == "checkbox"){
              tag.value = dataJSON.response[i].value;
              tag.checked = (dataJSON.response[i].value == 0);
            }
          } else if (type == "select") {
            if (isInteger(dataJSON.response[i].value)){
              tag.selectedIndex = (dataJSON.response[i].value - 1);
            }else if(typeOf(dataJSON.response[i].value) == 'array'){
              for(j = tag.options.length-2; j >= 0; j--)
                tag.remove(j);
              for (j = 0; j < dataJSON.response[i].value.length; j++)
                tag.options[tag.options.length] = new Option(dataJSON.response[i].value[j].text,dataJSON.response[i].value[j].value);
              tag.options[tag.options.length] = tag.options[0];
            }else if((typeOf(dataJSON.response[i].value) == 'string')){
              for(j = 0; j < tag.options.length; j++){
                if(tag.options[j].text == dataJSON.response[i].value)
                  tag.selectedIndex = j;
              }
            }
          } else if (type == "img") {
            tag.src = dataJSON.response[i].value;
          } else // div spam
            tag.innerHTML = dataJSON.response[i].value.replace(/\n/g,'<br />\n');
          tag.disabled = !dataJSON.response[i].enabled;
        }
      }
    }
  }
}
// invia richiesta
function sendAJAX(method, file, params) {
  Pid = (new Date()).getTime() % 1000000000;
  var str = "pid=" + Pid + "&" + params;
//  window.open(file + "?" + str, "", "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=300,height=270");
  RequestAJAX = CreateXmlHttpRequest(Handler);
  if (method = "GET") {
    RequestAJAX.open(method, file + "?" + str, true);
    RequestAJAX.send(null);
  } else if (method = "POST") {
    RequestAJAX.open(method, file, true);
    RequestAJAX.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    RequestAJAX.setRequestHeader("Content-length", str.length);
    RequestAJAX.send(str);
  }
}
