/**
 * Ajax Client
 */
function AjaxClient(url)
{
  if (url.replace(/ /g, "") == "")
  {
    alert("Invalid URL");
    return null;
  }

  this.url = url;
  this.data = {d : ""};
  this.dataType = "json";
  this.type = "POST";
}
AjaxClient.prototype.error = function(request, type)
{
  var msg = type + "\r\n" + this.url + "\r\n" + this.data;
  alert("Ajax Error : " + msg);
}
AjaxClient.prototype.callback = function(){}
AjaxClient.prototype.success = function(responseData)
{
  if (!AjaxClient.verifyResult(responseData, this.dataError))
  {
    return;
  }

  var params = "";
  for(var a = 0; a < arguments.length; a++)
  {
    if (a > 0)
      params += ", ";
    params += "arguments[" + a + "]";
  }

  try
  {
    eval("this.callback(" + params + ", 'success');");
  } catch (e) { alert(e.message) }
}
AjaxClient.prototype.dataError = null;
AjaxClient.prototype.invoke = function()
{
  $.ajax(this);
}
AjaxClient.verifyResult = function(result, errorHandler)
{
  if (result != null)
  if (result.message)
  {
    if (typeof(errorHandler) == 'function')
      errorHandler(result);
    else
      alert(result.message);
    return false;
  }

  return true;
}
