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;
      //show(me);
      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});
      //postUrl("/ajaxinterface.php", data, true, me.saveDone);
    }
    
    meclasspro.saveDone=function(req){
      //alert("aha");
      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 felulirod?");
  	      if (answer){
  	        window['videa']['classes']['PlayList'].prototype.save.call(me,true);
            //me.save(true);
          }
        }else{
          alert("Hibás válasz!");//+req.responseText);
        }
      }
    }
    
    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);
        //postUrl("/ajaxinterface.php", data, true, me.delDone);
        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!");//+req.responseText);
        }
      }
    }
  
    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});
      //postUrl("/ajaxinterface.php", data, true, me.renameDone);
    }
    
    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!");//+req.responseText);
        }
      }
    }

  }

  /**********************************
   *   QuickList Extends PlayList   *
   **********************************/
  window['videa']['classes']['QuickList']=function(){
    var me=this;
    this.classname="QuickList";
    var contdiv=null;
    me.rendered=false;  
    videos={};
  }
 
  window['videa']['classes']['QuickList'].inheritsFrom(window['videa']['classes']['PlayList']);

  window['videa']['classes']['QuickList'].prototype.init=function(){
    var me=this;
    me.quickListChanged=new videa.Event(me);
    me.listChanged.addhandler(me.onListChanged,me);
    //me.listSaved.addhandler(me.onListSaved,me);
    me.videoRemoved.addhandler(me.onVideoRemoved,me);
    var vcodelist=new Array();
    var cookiestr=getCookie("quicklist");
    if(cookiestr){
      var nandl=cookiestr.split("#");
      me.setName(nandl[0]);
      var _vcodes=nandl[1].split(",");
      for(var i=0;i<_vcodes.length;i++){
        if(_vcodes[i] && _vcodes[i]!="")
          vcodelist.push(_vcodes[i]);
      }
      
      me.create(vcodelist);
    }
  }

  window['videa']['classes']['QuickList'].prototype.onListChanged=function(sender){
    var me=this;
    me.saveQLCookie();
    me.getVideosData();
  }  
  
  window['videa']['classes']['QuickList'].prototype.onVideoRemoved=function(sender,args){
    var me=this;
    /*var divs=getElementsByClassName("play_add");
    for(var i=0;i<divs.length;i++){
      var div=divs[i];
      var str=div.onclick.toString()
      if(str.indexOf(args)>-1){
        //remove next sibling
        div.style.display="block";
        alert(args);
       
      }
    }*/
  }  
  
  window['videa']['classes']['QuickList'].prototype.saveQLCookie=function(){
    var me=this;
    var cookiestr="";
    for(var i=0;i<me.order.length;i++){
      if(cookiestr!="") cookiestr+=",";
      cookiestr+=me.order[i];
    }
    setCookie("quicklist",me.getName()+"#"+cookiestr,null,"/");
  }
  

  

  
  window['videa']['classes']['QuickList'].prototype.loadandplay=function(name,vcodelist,videourl){
    var me=this;
    me.order=vcodelist;
    me.setName(name);
    me.saveQLCookie();
    me.play(videourl);
  }
  
  window['videa']['classes']['QuickList'].prototype.play=function(videourl){
    var me=this;
    top.location=videourl+"?play=1";
  }

  window['videa']['classes']['QuickList'].prototype.getVideosData=function(req){
    var me=this;
    if(!req) req={};
    //ha AJAX requestbol tretunk vissza, akkor dolgozuk fel a visszakapott json adatokat
    if(req && req.json){
      var resp=req.json;
      if(resp.response.code!=0){
        alert("Nem sikerült lekérni a gyorslista videoinak adatait!");
        me.clear();
        return false;
      }
      var v=resp.response.videos;
      for(var i=0;i<v.length;i++){
        videos[v[i].vcode] = new Video(v[i].fid, v[i].uid, v[i].fileName, v[i].fileSize, v[i].width, v[i].height, v[i].createDate, v[i].mode, v[i].title, v[i].description, v[i].category, v[i].featured, v[i].vcode, v[i].duration, v[i].originalFilename, v[i].disk, v[i].url, v[i].flagged, v[i].thumbnailNo, v[i].ugid, v[i].uploadStatus, v[i].viewCount, v[i].viewCount24, v[i].viewCount168, v[i].lastViewDate, v[i].lastViewIp, v[i].ratingCount, v[i].ratingSum, v[i].ratingAvg, v[i].ratingCount24, v[i].ratingSum24, v[i].ratingAvg24, v[i].ratingCount168, v[i].ratingSum168, v[i].ratingAvg168, v[i].lastVoteDate, v[i].lastVoteIp, v[i].commentCount, v[i].commentCount24, v[i].commentCount168, v[i].favouritedCount, v[i].flagCount, v[i].countersLastUpdated, v[i].tags, v[i].comments, v[i].userName, v[i].categoryName, v[i].ugName, v[i].chid, v[i].chName, v[i].own, v[i].playUrl, v[i].categoryUrl, v[i].userUrl, v[i].usergroupUrl, v[i].stillUrls);
      }
      req._callback=req.params.callback;
      me=req.params.callbackObj;
    }
    //ha nincs renderelve a lsita felesleges tovább foglalkozni vele    
    if(!me.rendered) return;
    
    //megvizsgaljuk hogy hianyzik-e valamelyik listaban szereplo video adatai, és ha igen elkuldjuk az ajax requestet
    var data="";
    for (var i=0;i<me.order.length;i++){
      if(videos[me.order[i]]==null){
        if(data!="") data+="&";
        data+="vcode[]="+me.order[i];
      }
    }
    
    if(data!=""){
      data="cmd=getvideosdata&"+data;
      var _req=videa.AJAX.newRequest();
      _req.send("/ajaxinterface.php?cmd=getvideosdata",me.getVideosData,{"reqparams":data,"callback":req._callback,"callbackObj":me});
      //postUrl("/ajaxinterface.php", data, true, me.refreshHTMLList);
    }else{
      me.quickListChanged.raise();
      if(req._callback) req._callback.call(me);
    }
  }

  

