function serverCall(method, url, params, status)
{
  var currentStatus = status;
  var q = url;
  var connector = '?';
  for(var field in params)
  {
    if(params[field] == undefined || typeof params[field] == 'function')
      continue;
    q += connector + field + "=" + escape(params[field]);
    connector = '&';
  }

  try
  {
    addStatus(status);
    var text = JwacsLib.fetchData(method, q);
    currentStatus = null;
    removeStatus(status);
    return unpackResponse(text);
  }
  catch(e)
  {
    // Just passing through
    if(currentStatus)
      removeStatus(currentStatus);
    alert("Sorry, an error occurred while " + status + ".");
    throw e;
  }
}

function fetchEvent(eventID)
{
  var rows = serverCall("GET",
                        serviceRootPath + "/event-query",
                        {id: eventID},
                        "fetching event #" + eventID);
  return rows[0];
}