if (!window['videa']) window['videa'] = {'name':'videa'};
if (!window['videa']['classes']) window['videa']['classes'] = {};

/****************
*   Playlist   *
****************/
if (!window['videa']['classes']['Playlist']) {
  window['videa']['classes']['Playlist'] = function() {
    var me = this;
    var meclasspro = me.constructor.prototype;
    this.classname = "Playlist";
    me.name = "";
    me.app_name = "";
    me.order = new Array();
    me.listChanged = new videa.Event(me);
    me.listDeleted = new videa.Event(me);
    me.listSaved = new videa.Event(me);
    me.videoRemoved = new videa.Event(me);
    me.setName = function(name) { me.name = name; }
    me.getName = function() { return me.name; }

    meclasspro.create = function(vcodelist) {
      var caller = this;
      caller.order = vcodelist;
      caller.listChanged.raise();
    }

    meclasspro.clear = function() {
      var me = this;
      me.order = new Array();
      me.name = "";
      me.listChanged.raise();
    }

    meclasspro.add = function(vcode) {
      var me = this;
      for (var i=0; i<me.order.length; i++) {
        if (me.order[i] == vcode)  return;
      }
      me.order.push(vcode);
      me.listChanged.raise();
    }

    meclasspro.remove = function(vcode) {
      var me = this;
      for (var i=0; i<me.order.length; i++) {
        if (me.order[i] == vcode) me.order.splice(i,1);
      }
      me.listChanged.raise();
      me.videoRemoved.raise(vcode);
    }

    meclasspro.moveup = function(vcode) {
      var me = this;
      for (var i=1; i<me.order.length; i++) {
        if (me.order[i] == vcode) {
          me.order[i] = me.order[i-1];
          me.order[i-1] = vcode;
        }
      }
      me.listChanged.raise();
    }

    meclasspro.movedown = function(vcode) {
      var me = this;
      for (var i=(me.order.length-2); i>=0; i--) {
        if (me.order[i] == vcode) {
          me.order[i] = me.order[i+1];
          me.order[i+1] = vcode;
        }
      }
      me.listChanged.raise();
    }

    meclasspro.save = function(force) {
      var me = this;
      if (!me.name || me.name == "") {
        alert("Nem adtál meg nevet!");
        return;
      }
      var data = "";
      data = "cmd=saveplaylist";
      data += "&name=" + escape(me.name) + "&app_name=" + escape(me.app_name);
      if (force) data += "&force=1";
      for (var i=0; i<me.order.length; i++) {
        if (data != "") data += "&";
        data += "vcode[]=" + me.order[i];
      }
      var _req = videa.AJAX.newRequest();
      _req.send("/ajaxinterface.php?cmd=saveplaylist", me.saveDone, {"reqparams":data,"callbackObj":me});
    }

    meclasspro.saveDone = function(req) {
      var me = this;
      if (req) {
        var resp = eval("("+req.responseText+")");
        var resp = req.json;
        me = req.params.callbackObj;
        if (resp.response.code == 0) {
          me.listSaved.raise();
        } else if (resp.response.code == 1) {
          alert('a gyorslista mentéséhez be kell jelentkezned');
        } else if (resp.response.code == 2) {
          var answer = confirm("Biztos, hogy felülírod?");
          if (answer) {
            window['videa']['classes']['Playlist'].prototype.save.call(me,true);
          }
        } else {
          alert("Hibás válasz!");
        }
      }
    }

    meclasspro.del = function(name) {
      var me = this;
      var answer = confirm("Biztos, hogy töröljük a '"+name+"' listát?");
      if (answer) {
        var data = "";
        data = "cmd=delplaylist";
        data += "&name=" + escape(name);
        var _req = videa.AJAX.newRequest();
        _req.send("/ajaxinterface.php?cmd=delplaylist", me.delDone, {"reqparams":data,"callbackObj":me});
      }
    }

    meclasspro.delDone = function(req) {
      var me = this;
      if (req) {
        var resp = eval("("+req.responseText+")");
        var resp = req.json;
        me = req.params.callbackObj;
        if (resp.response.code == 0) {
          me.listDeleted.raise();
        } else if (resp.response.code == 1) {
          alert('ehhez be kell jelentkezned');
        } else {
          alert("Hibás válasz!");
        }
      }
    }

    meclasspro.renamelist = function(newname) {
      var me = this;
      if (!newname || newname == "") {
        alert("Nem adtál meg új nevet!");
        return;
      }
      var data = "";
      data = "cmd=renameplaylist";
      data += "&name=" + escape(me.name);
      data += "&newname=" + escape(newname);
      var _req = videa.AJAX.newRequest();
      _req.send("/ajaxinterface.php?cmd=renameplaylist", me.renameDone, {"reqparams":data,"callbackObj":me});
    }

    meclasspro.renameDone = function(req) {
      var me = this;
      if (req) {
        var resp = eval("("+req.responseText+")");
        var resp = req.json;
        me = req.params.callbackObj;
        if (resp.response.code == 0) {
          me.setName(resp.response.request.newname);
          me.listChanged.raise();
        } else if (resp.response.code == 1) {
          alert('ehhez be kell jelentkezned');
        } else {
          alert("Hibás válasz!");
        }
      }
    }
  }
}

