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

JSAN.require('Photozou.Model');

Photozou.Model.PhotoTag = function() {};
Photozou.Model.PhotoTag.prototype = new Photozou.Model;

Photozou.Model.PhotoTag.prototype.save = function(user_id, photo_id, name, ott, opt) {
  var self = this
  var url = '/xml/photo_tag_add/'+user_id+'/'+photo_id
  var opt = Object.extend({
    'callback': new Function,
    'errback': self.raiseError
  }, opt || {})
  new Ajax.Request(url, {
    'method': 'post',
    'parameters': {'ott':ott, 'tag':name},
    'onComplete': function(req) {
      if (self.isOk(req)) {
        opt.callback(self.req2res(req))
      } else {
        opt.errback(req)
      }
    },
    'onFailure': function(req) { opt.errback(req) }
  })
}

Photozou.Model.PhotoTag.prototype.remove = function(photo_tag_id, ott, opt) {
  var self = this
  var url = '/xml/photo_tag_remove/'+photo_tag_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) {
      if (self.isOk(req)) {
        opt.callback(self.req2res(req))
      } else {
        opt.errback(req)
      }
    },
    onFailure: function(req) { opt.errback(req) }
  })
}

Photozou.Model.PhotoTag.prototype.isOk = function(req) {
  var result = this.dom2obj(req.responseXML.documentElement)
  return result['@stat'] == 'ok' ? true : false
}

Photozou.Model.PhotoTag.prototype.req2res = function(req) {
  var obj = this.dom2obj(req.responseXML.documentElement)
  var tags = []
  if (typeof obj.tags == 'undefined') return []
  if (typeof obj.tags.tag != 'undefined') {
    if (obj.tags.tag.length > 0) {
      tags = obj.tags.tag
    } else {
      tags.push(obj.tags.tag)
    }
  }
  var res = {}
  res.tags = tags
  res.login_id = obj.login_id
  return res
}


