
// ---------------------- získá objekt XMLHttpRequest --------------------------

var _majax_request_objects          = new Array(false);
var _majax_request_response_hanlers = new Array(false);
var _majax_request_timeout          = new Array(false);

function MAjax_GetRequestObject()
{
  var request = false;
  try
  {
     // IE 7, Firefox, Opera 8...
    request = new XMLHttpRequest();
  }
  catch(e)
  {
    try
    {
      // IE 5.x, IE 6
      request = new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch(e) {}
  }
  
  if (request)
  {
    request_id = _majax_request_objects.length;
    _majax_request_objects[request_id]          = request;
    _majax_request_response_hanlers[request_id] = "";
    _majax_request_timeout[request_id]          = false;
    return request_id;
  }
  else
  {
    return false;
  }

}



function MAjax_RequestData(request_obj_id,url,url_params,response_handler)
{

  _majax_request_response_hanlers[request_obj_id] = response_handler;

  // provede se pouze pokud objekt neni zaneprazdneny
  if (_majax_request_objects[request_obj_id].readyState == 4 || _majax_request_objects[request_obj_id].readyState == 0)
  {
    // tvorba parametrov pre SQL
    var url_param_item;
    var url_params_arr = url_params.split('&');
    var url_params_encoded = "";

    for (var i=0;i< url_params_arr.length;i++)
    {
      url_param_item = url_params_arr[i].split("=");
      url_params_encoded += (i>0?"&":"")+url_param_item[0]+"="+encodeURIComponent(url_param_item[1]);
    }

    // send request
    _majax_request_objects[request_obj_id].open('POST', url, true);
    _majax_request_objects[request_obj_id].setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    _majax_request_objects[request_obj_id].onreadystatechange = function () { MAjax_ProcesResponse(request_obj_id) };
    // pošle žiadost na server
    _majax_request_objects[request_obj_id].send(url_params_encoded);
  }
  // ak spojenie je zaneprázdnené, pokús sa opäť o pol sekundy
  else
  {
    if (_majax_request_timeout[request_obj_id]) clearTimeout(_majax_request_timeout[request_obj_id]);
    _majax_request_timeout[request_obj_id] = setTimeout("MAjax_RequestData("+request_obj_id.toString()+",'"+url+"','"+url_params+"','"+response_handler+"')",500);
  }
}


function MAjax_ProcesResponse(request_obj_id)
{

  var request = _majax_request_objects[request_obj_id];


  if (_majax_request_objects[request_obj_id].readyState == 4 && _majax_request_objects[request_obj_id].status == 200)
  {
     eval(_majax_request_response_hanlers[request_obj_id]+"(_majax_request_objects[request_obj_id].responseText?request.responseText:'');");
  }
  //return eval (_majax_request_response_hanlers[request_obj_id]+"('');");
}

