if (typeof Photozou == 'undefined') Photozou = {}

JSAN.require('Photozou.Model')

Photozou.Model.Photo = function() {}

Photozou.Model.Photo.prototype = new Photozou.Model

Photozou.Model.Photo.prototype.retrieve_partly = function(user_id, album_id, offset, func) {
  var self = this
  var url = '/xml/photo_list/' + user_id + '/' + album_id + '/?for_thumbnails=true&offset=' + offset + '&format=json&v=' + (new Date).getTime()
  new Ajax.Request(url, {
    method: 'get',
    onComplete: function(req) { func(req) },
    onFailure: function(req) {}
  })
}

Photozou.Model.Photo.prototype.find_by_album_id_and_user_id = function(album_id, user_id, opt) {/*{{{*/
  var self = this
  var url = '/xml/photo_list/'+user_id+'/'+album_id+'?id_only=true&v='+(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) { opt.callback(self.req2photos(req)) },
    onFailure: function(req) { opt.errback(req) }
  })
}/*}}}*/

Photozou.Model.Photo.prototype.remove = function(photo_id, ott, opt) {/*{{{*/
  var url = '/xml/photo_remove/'+photo_id
  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: 'post',
    parameters: {'ott':ott},
    onComplete: function(req) { opt.callback(req) },
    onFailure: function(req) { opt.errback(req) }
  })
}/*}}}*/

Photozou.Model.Photo.prototype.get_description = function(photo_id, opt) {
  var url = '/xml/photo_description/' + photo_id + '?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) { opt.callback(req); },
    onFailure: function(req) { opt.errback(req) }
  })
}

Photozou.Model.Photo.prototype.req2photos = function(req) {/*{{{*/
  var obj = this.dom2obj(req.responseXML.documentElement)
  var photos = [];
  if (typeof obj.photo_list.photo != 'undefined') {
    if (obj.photo_list.photo.length > 0) {
      photos = obj.photo_list.photo
    } else {
      photos.push(obj.photo_list.photo)
    }
  }
  return photos
}/*}}}*/


Photozou.Model.Photo.prototype.req2photo = function(req) {
  var obj = this.dom2obj(req.responseXML.documentElement)
  return obj.photo
}


