ReviewLoader = function() {
  this.onSuccess = new YAHOO.util.CustomEvent('ReviewLoader_Success', this);

  this.handleSuccess = function(o) {
    function filter(key,val) {
      var date;
      if (key == 'whenCreated') {
        date = new Date();
        date.setTime(val);
        return date;
      }
      else if (key == 'whenUpdated') {
        date = new Date();
        date.setTime(val);
        return date;
      }
      else {
        return val;
      }
    }

    var result;
    try {
      result = YAHOO.lang.JSON.parse(o.responseText, filter);
    }
    catch (e) {
      result = new Object();
      result.error = true;
      result.errors = {
        '_GLOBAL_' : [ 'an internal error occurred. please try again later' ]
      };
    }

    if (result.redirectTo) {
      window.location = result.redirectTo;
    }
    else {
      this.onSuccess.fire(result);
    }
  };

  this.handleFailure = function(o) {
  };

  this.loadReview = function(id) {
    var callback = {
      success : this.handleSuccess,
      failure : this.handleFailure,
      scope : this
    };

    YAHOO.util.Connect.asyncRequest('POST', GLOBALS.contextPath + '/ajax/loadReview', callback, 'id=' + id); 
  };
};
