if (typeof Photozou == "undefined") {
  Photozou = {};
}

JSAN.require("Photozou.Model");

Photozou.Model.PhotoFavorite = function() {};

Photozou.Model.PhotoFavorite.prototype = new Photozou.Model;

Photozou.Model.PhotoFavorite.prototype.add = function(userId, photoId, opt) {

  var self = this;
  var url = "/xml/photo_favorite_add/" + userId + "/" + photoId + "?t=" + (new Date).getTime();

  var opt = (function(d, s) { for (var p in s) d[p] = s[p]; return d; })({
    callback: new Function,
    errback: self.raiseError
  }, opt || {});

  new Ajax.Request(url, {
    method: "get",
    onComplete: function(req) {
      if (self.isOk(req)) {
        opt.callback(self.req2fav(req))
      } else {
        opt.errback(req)
      }
    },
    onFailure: function(req) { opt.errback(req) }
  });
};

Photozou.Model.PhotoFavorite.prototype.remove = function(userId, photoId, opt) {

  var self = this;
  var url = "/xml/photo_favorite_remove/" + userId + "/" + photoId + "?t=" + (new Date).getTime();

  var opt = (function(d, s) { for (var p in s) d[p] = s[p]; return d; })({
    callback: new Function,
    errback: self.raiseError
  }, opt || {});

  new Ajax.Request(url, {
    method: "get",
    onComplete: function(req) {
      if (self.isOk(req)) {
        opt.callback(self.req2fav(req))
      } else {
        opt.errback(req)
      }
    },
    onFailure: function(req) { opt.errback(req) }
  });
};

Photozou.Model.PhotoFavorite.prototype.isOk = function(req) {
  var result = this.dom2obj(req.responseXML.documentElement);
  return (result["@stat"] == "ok");
};

Photozou.Model.PhotoFavorite.prototype.req2fav = function(req) {
  var obj = this.dom2obj(req.responseXML.documentElement);
  var user = obj.photo_favorite;
  return user;
};



