function ajax_object(url, callbackFunction)
{
  var aj=this;
  this.updating = false;
  this.abort = function()
  {
    if (aj.updating)
    {
      aj.updating=false;
      aj.xhtpr.abort();
      aj.xhtpr=null;
    }
  }
  this.update = function(passData,postMethod)
  {
    if (aj.updating) { return false; }
    aj.xhtpr = null;
    if (window.XMLHttpRequest)
    {
      aj.xhtpr=new XMLHttpRequest();
    }
    else
    {
      aj.xhtpr=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (aj.xhtpr==null)
    {
      return false;
    }
    else
    {
      aj.xhtpr.onreadystatechange = function()
      {
        if (aj.xhtpr.readyState==4)
        {
          aj.updating=false;
          aj.callback(aj.xhtpr.responseText,aj.xhtpr.status,aj.xhtpr.responseXML);
          aj.xhtpr=null;
        }
      }
      aj.updating = new Date();
      if (/post/i.test(postMethod))
      {
        var uri=urlCall+'?'+aj.updating.getTime();
        aj.xhtpr.open("POST", uri, true);
        aj.xhtpr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        aj.xhtpr.setRequestHeader("Content-Length", passData.length);
        aj.xhtpr.send(passData);
      }
      else
      {
        var uri=urlCall+'?'+passData+'&timestamp='+(aj.updating.getTime());
        aj.xhtpr.open("GET", uri, true);
        aj.xhtpr.send(null);
      }
      return true;
    }
  }
  var urlCall = url;
  this.callback = callbackFunction || function () { };
}


function build_post_data(form_name){
    var form_ref = document.forms[form_name];
    var els = form_ref.elements;

    var em_len = els.length;

    var aj_query = "";

    for(var x=0; x < em_len; x++){
        var new_val = "";
        var new_name = "";
        if(els[x].type == "select"){
            new_val = els[x].options[els[x].selectedIndex];
            new_name = els[x].name;
        }else {
            new_name = els[x].name;
            new_val = els[x].value;
        }
        //alert("query part = " + aj_query);
        if(x > 0)aj_query += "&";
        aj_query += escape(new_name) + "=" + escape(new_val);
    }
    aj_query += "&ajax=true";
    //alert(aj_query);
    return aj_query;
}

