var xmlHttp = false;

build_ajax_obj();

function build_ajax_obj() {
  if (window.XMLHttpRequest) {           // Mozilla, Safari, ...
    xmlHttp = new XMLHttpRequest();
  } else if (window.ActiveXObject) {     // IE
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
}

//arg 0              1     2                3           4
//    xml_obj_name   file, update_function, parameters, form_name
function ajaxRead() {
  if((arguments[0].readyState == 0) || (arguments[0].readyState == 4)) {
    // Open a connection to the server
    arguments[0].open("POST", arguments[1], true);

    // Setup a function for the server to run when it's done
    //reset on ready state change function
    arguments[0].onreadystatechange = function() {};
    if(arguments[2]) {
      var update_function=arguments[2];
      if(arguments[4] || arguments[4]===0) {
        var form_name=arguments[4];
        arguments[0].onreadystatechange = function() { eval(update_function+"('"+form_name+"');"); };
      } else {
        arguments[0].onreadystatechange = eval(update_function);
      }
    }

    arguments[0].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    arguments[0].setRequestHeader("Content-length", arguments[3].length);
    arguments[0].setRequestHeader("Connection", "close");
    arguments[0].send(arguments[3]);

  } else { //retry if ajax obj busy
    xmlHttp=arguments[0];
    var cmd="ajaxRead(xmlHttp";
    if(arguments[1]) {
      cmd=cmd + ", '"+arguments[1]+"'";
      if(arguments[2]) {
        cmd=cmd + ", '"+arguments[2]+"'";
        if(arguments[3]) {
          cmd=cmd + ", '"+arguments[3]+"'";
          if(arguments[4]) {
            cmd=cmd + ", '"+arguments[4]+"'";
          }
        }
      }
    }
    cmd=cmd + ");";
    //alert(cmd);
    setTimeout(cmd, 10);
  }
}

//arg 0      1
//xml_doc,   xml_elem
function get_xml_elem() {
  var xml_elem=arguments[0].getElementsByTagName(arguments[1]);

  return xml_elem;
}

//arg 0      1            2
//xml_doc,   xml_elem,    item_nr
function get_xml_elem_value() {

  var xml_elem=arguments[0].getElementsByTagName(arguments[1]);

  var item_nr=0;
  if(arguments[2]) {
    item_nr=arguments[2];
  }

  var elem_value='';
  if(xml_elem) {
    try {
      elem_value=xml_elem[item_nr].childNodes[0].nodeValue;
    } catch(err) {
      //alert(arguments[1] + " " + err);
    }
  }
  return elem_value;
}

//arg 0        1            2          3
//xml_doc,     xml_elem,    item_nr    attribute_name
function get_xml_elem_attrib_value() {

  var xml_elem=arguments[0].getElementsByTagName(arguments[1]);

  var item_nr=0;
  if(arguments[2]) {
    item_nr=arguments[2];
  }

  var attrib_value='';
  if(xml_elem) {
    attrib_value=xml_elem[item_nr].getAttribute(arguments[3]);
  }
  return attrib_value;
}

//arg 0        1            2           3          4         5
//xml_doc,     html_elem,   html_prop,  xml_elem,  item_nr,  attribute_name
function elem_xml_to_html() {
  var xml_elem_name;
  if(!arguments[3]) {
    xml_elem_name=arguments[1];
  } else {
    xml_elem_name=arguments[3];
  }
  xml_elem_name=xml_elem_name.toUpperCase();

  var item_nr=0;
  if(arguments[4]) {
    item_nr=arguments[4];
  }

  if(arguments[5]) {   //attribute value
    var xml_elem_value=get_xml_elem_attrib_value(arguments[0], xml_elem_name, item_nr, arguments[5]);
  } else {             //element value
    var xml_elem_value=get_xml_elem_value(arguments[0], xml_elem_name, item_nr);
  }
  if(xml_elem_value != '') {
    if(arguments[2]=='checked') {
      var arr_options=Array(false, true);
      xml_elem_value = arr_options[xml_elem_value];
    }
    //alert("document.getElementById('"+arguments[1]+"')."+arguments[2]+"=xml_elem_value;");
    eval("document.getElementById('"+arguments[1]+"')."+arguments[2]+" = xml_elem_value;");
  }
}

//arg 0        1            2          4         5
//xml_doc,     html_elem,   xml_elem,  item_nr,  attribute_name
//pentru grupuri cu acelasi nume si id-uri diferite (radio buttons)
function elem_xml_to_html_radio() {
  var xml_elem_name;
  xml_elem_name=arguments[2];
  xml_elem_name=xml_elem_name.toUpperCase();

  var item_nr=0;
  if(arguments[3]) {
    item_nr=arguments[3];
  }

  if(arguments[4]) {   //attribute value
    var xml_elem_value=get_xml_elem_attrib_value(arguments[0], xml_elem_name, item_nr, arguments[5]);
  } else {             //element value
    var xml_elem_value=get_xml_elem_value(arguments[0], xml_elem_name, item_nr);
  }

  for(var i=0; i<arguments[1].length; i++) {
    if(arguments[1][i].value==xml_elem_value) {
      arguments[1][i].checked=true;
      break;
    }
  }
}

function read_form(frm) {
  var poststr='';
  var frm=document.getElementById(frm);
  //var val_radio='';
  var chk_value;
  if(frm) {
    for(var i=0; i<frm.length; i++) {
      //alert(frm[i].name);
      if(frm[i].name!='') {
        //alert(frm[i].type);
        switch (frm[i].type) {
          case 'radio':
            if(frm[i].checked) {
              //val_radio=frm[i].value;
              poststr = poststr + url_element(frm[i].name, frm[i].value);
            }
            //daca urmatorul input e diferit de cel curent
            //if(frm[i].name != frm[i+1].name) {
            //  poststr = poststr + url_element(frm[i].name, val_radio);
            //  val_radio='';
            //}
            break;
          case 'checkbox':
            //alert(frm[i].checked);
            chk_value=0;
            if(frm[i].checked) {
              chk_value=1;
            }
            poststr = poststr + url_element(frm[i].name, chk_value);
            break;
          default:
            poststr = poststr + url_element(frm[i].name, frm[i].value);
            break;
        }
      }
    }
  }
  return poststr;
}

