function encodeParam(x) {
  if (encodeURIComponent) {
    return encodeURIComponent(x);
  } else {
    return escape(string);
  }
}

function request(url, extra_data, data, cont) {
  var r = null;

  if (window.XMLHttpRequest){
    r = new XMLHttpRequest();
  } else if (window.ActiveXObject){
    r = new ActiveXObject("Microsoft.XMLHTTP"); 
  }

  r.onreadystatechange = function () {
    if (r.readyState == 4 && r.status == 200 && r.responseText) {
      cont(r.responseText);
    }
  };

  var final_data = {};
  for (k in extra_data) { final_data[k] = extra_data[k]; }
  for (k in data)       { final_data[k] = data[k]; }

  var params = "";
  var sep = "?";
  for (k in final_data) {
    params += sep + k + "=" + final_data[k];
    sep = "&";
  }

  r.open("GET", url + params, true);
  r.send(null);
}

