var gReadyStateNew      = 0;
var gReadyStateFinished = 4;

function getSupportedBrowserType()
{
  if ( window.ActiveXObject ) return "ie";
  if ( document.implementation && document.implementation.createDocument )  return "moz";
  return "";
}

function createRequestObject()
{
  var request = null;
  if ( getSupportedBrowserType() == "ie" )        request = new ActiveXObject( "Microsoft.XMLHTTP" );
  else if ( getSupportedBrowserType() == "moz" )  request = new XMLHttpRequest();

  if ( request && request.readyState != gReadyStateNew ) request = null;
  return request;
}

// generates URI to represent a form submission
function formUri( form )
{
  if ( !form ) return "";

  // form element 'action' may clobber form attribute 'action', so get it out the hard way
  var action = ( ( getSupportedBrowserType() == "ie" )? form.attributes['action'].value : form.getAttribute('action') );
  if ( !action ) return;

  var uri = action + "?";
  for (i=0; i<form.length; i++) {
    if (form[i].tagName == "INPUT") {
      if (form[i].type == "text" || form[i].type == "hidden") {
        uri += form[i].name + "=" + form[i].value + "&";
      }
      if (form[i].type == "checkbox") {
        if (form[i].checked) {
          uri += form[i].name + "=" + form[i].value + "&";
        } else {
          uri += form[i].name + "=&";
        }
      }
      if (form[i].type == "radio") {
        if (form[i].checked) {
          uri += form[i].name + "=" + form[i].value + "&";
        }
      }
    }   
    if (form[i].tagName == "SELECT") {
      var sel = form[i];
      uri += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
    }
  }
  return uri;
}

function randomParam()
{
  return "&rand=" + Math.ceil(Math.random()*99999);
}