function jsRPC(href)
{
  this.href = href;
  this.execute = fc;
  this.sendForm = jsRPC_sendForm;
  this.first = 1;
  this.last = '';
}

function jb()
{
  var A=null;
  try
  {
    A=new ActiveXObject("Msxml2.XMLHTTP")
  }
  catch(e)
  {
    try
    {
      A=new ActiveXObject("Microsoft.XMLHTTP")
    }
    catch(oc)
    {
      A=null
    }
  }
  if(!A&&typeof XMLHttpRequest!="undefined")
  {
    A=new XMLHttpRequest()
  }
  return A
}    
var k = new Object();
var ki = 0;
function fc(Rb)
{
  if (!Rb) Rb = this.href;
  var i = ki++;
  k[i]=jb();
  if(k[i])
  {
    var d = new Date();
    if (Rb.indexOf('?') == -1)
      Rb += '?'; else Rb += '&';
    Rb += 'tz=' + escape(d.getTimezoneOffset()) + '&rnd=' + Math.random();
    k[i].open("GET", Rb, true);
    k[i].onreadystatechange = fch(i);
    k[i].send(null)
  }
}

function fch(i) {

  return (
    function handler()
    {
      if(k[i].readyState==4 && k[i].responseText)
      {
//        try
//        {
          eval(k[i].responseText);
//        }
//        catch(e)
//        {
//          alert(k[i].responseText);
//        }
        k[i] = null;
      }
    }
  );
}

function jsRPC_sendForm(form)
{
  // collect all the values
  var qs = new Array();
  for (var i = 0; i < form.elements.length; i++)
  {
    // determine which type of field it is then add it to the array
    el = form.elements[i];
    if (el.type == 'textarea')
    {
      var t = new Object();
      t.name = el.name;
      t.value = el.value;
      qs[qs.length] = t;
    }
    
    if (el.type == 'hidden')
    {
      var t = new Object();
      t.name = el.name;
      t.value = el.value;
      qs[qs.length] = t;
    }
    
    if (el.type == 'text')
    {
      var t = new Object();
      t.name = el.name;
      t.value = el.value;
      qs[qs.length] = t;
    }

    if (el.type == 'checkbox')
    {
      if (el.checked)
      {
        var t = new Object();
        t.name = el.name;
        t.value = el.value;
        qs[qs.length] = t;
      }
    
    }

    if (el.type == 'radio')
    {
      if (el.checked)
      {
        var t = new Object();
        t.name = el.name;
        t.value = el.value;
        qs[qs.length] = t;
      }    
    }

    if (el.options && (el.type == 'select-one'))
    {
      var t = new Object();
      t.name = el.name;
      t.value = el.options[el.options.selectedIndex].value;
      qs[qs.length] = t;
    }
    
    if (el.options && (el.type == 'select-multiple'))    
    {
      for (var j = 0; j < el.options.length; j++)
        if (el.options[j].selected)
        {
          var t = new Object();
          t.name = el.name;
          t.value = el.options[j].value;
          qs[qs.length] = t;
        }
    }
  }
  
  // create a query string
  var qs_text = '';
  for (var i = 0; i < qs.length; i++)
  {
    qs_text += escape(qs[i].name) + '=' + escape(qs[i].value) + '&';
  }
  
  // post the data
  var href = this.href + '?' + qs_text;
  fc(href);
}
