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


  /****************
   *   Playlist   *
   ****************/
  if (!window['videa']['classes']['VideoList'])
  window['videa']['classes']['VideoList'] = function() {
    var me = this;
    var meclasspro = me.constructor.prototype;
    me.classname = "VideoList";
    meclasspro.videos = new Array();
    meclasspro.searchParams = {};
    meclasspro.filters = new Array();
    meclasspro.totalhits = null;

    meclasspro.init = function(inputParams) {
      var caller = this;
      caller.searchParams = inputParams.searchParams;
      caller.filters = inputParams.filters;
      caller.initFilters();

      var searchCookies = new Object();
      searchCookies.methodCookie = getCookie('search_method');
      searchCookies.paramCookie = getCookie('search_param');
      searchCookies.sortCookie = getCookie('search_sort');
      searchCookies.intervalCookie = getCookie('search_interval');
      searchCookies.categoryCookie = getCookie('search_category');
      searchCookies.usergroupCookie = getCookie('search_usergroup');
      searchCookies.offsetCookie = getCookie('search_offset');
      searchCookies.pageCookie = getCookie('search_page');
      searchCookies.countCookie = getCookie('search_count');
      searchCookies.whichCookie = getCookie('search_which');
      if (getCookie('page_player_loading') != null || getCookie('page_player_back') != null) {
      //if (searchCookies.methodCookie == caller.searchParams.method && searchCookies.paramCookie == caller.searchParams.param) {
      //if (searchCookies.methodCookie == caller.searchParams.method && searchCookies.paramCookie == caller.searchParams.param && (searchCookies.usergroupCookie == null || searchCookies.usergroupCookie == caller.searchParams.usergroup)) {
        if (searchCookies.sortCookie != null) caller.searchParams.sort = parseInt(searchCookies.sortCookie);
        if (searchCookies.intervalCookie != null) caller.searchParams.interval = parseInt(searchCookies.intervalCookie);
        if (searchCookies.categoryCookie != null) caller.searchParams.category = parseInt(searchCookies.categoryCookie);
        if (searchCookies.usergroupCookie != null) caller.searchParams.usergroup = parseInt(searchCookies.usergroupCookie);
        if (searchCookies.offsetCookie != null) caller.searchParams.offset = parseInt(searchCookies.offsetCookie);
        if (searchCookies.pageCookie != null) caller.searchParams.page = parseInt(searchCookies.pageCookie);
        if (searchCookies.whichCookie != null) caller.searchParams.which = searchCookies.whichCookie;
        deleteCookie('page_player_loading','/');
        deleteCookie('page_player_back','/');
      } else {
        setCookie('search_method', caller.searchParams.method, false, '/');
        setCookie('search_param', caller.searchParams.param, false, '/');
        deleteCookie('search_sort','/');
        deleteCookie('search_interval','/');
        deleteCookie('search_category','/');
        deleteCookie('search_usergroup','/');
        deleteCookie('search_offset','/');
        deleteCookie('search_page','/');
        deleteCookie('search_which','/');
      }
      if (searchCookies.countCookie != null) caller.searchParams.count = parseInt(searchCookies.countCookie);
    }

    meclasspro.initFilters = function() {
      var caller = this;
      for (var i=0; i<caller.filters.length; i++) {
        switch (caller.filters[i].name) {
          case "sortorders": var value = caller.searchParams.sort; break;
          case "intervals": var value = caller.searchParams.interval; break;
          case "categories": var value = caller.searchParams.category; break;
          case "usergroups": var value = caller.searchParams.usergroup; break;
        }
        caller.filters[i].selectedIndex = caller.getFilterSelectedIndex(caller.filters[i].values, value);
      }
    }

    meclasspro.getFilterSelectedIndex = function(filter, value) {
      //console.log(filter);
      var selectedIndex = 0;
      //var i = 0;
      //while (i<filter.length && filter[i].value != value) i++;
      //if (i<filter.length) selectedIndex = i;
      
      for(var i in filter){
        if(filter[i].value==value)
           selectedIndex=i;
      }
      
      return selectedIndex;
    }

    meclasspro.changePage=function(page){
      var caller=this;
      caller.searchParams.page=page;
      setCookie('search_page', caller.searchParams.page, false, '/');
      caller.refreshHtmlList();
    }

    meclasspro.changeCount=function(c){
      var caller=this;
      first = caller.searchParams.count * (caller.searchParams.page-1) + 1;
      caller.searchParams.count = c;
      setCookie('search_count', c, false, '/');
      caller.searchParams.page = Math.ceil(first / caller.searchParams.count);
      setCookie('search_page', caller.searchParams.page, false, '/');
      caller.refreshHtmlList();
    }

    meclasspro.changeFilter=function(params){
      var caller = this;
      switch (params.name) {
        case "sortorders":
          caller.searchParams.sort = params.value;
          setCookie('search_sort', params.value, false, '/');
          caller.searchParams.interval = 0;
          setCookie('search_interval', 0, false, '/');
          break;
        case "intervals":
          caller.searchParams.interval = params.value;
          setCookie('search_interval', params.value, false, '/');
          break;
        case "categories":
          caller.searchParams.category = params.value;
          setCookie('search_category', params.value, false, '/');
          break;
        case "usergroups":
          caller.searchParams.usergroup = params.value;
          setCookie('search_usergroup', params.value, false, '/');
          break;
      }
      caller.searchParams.offset = 0;
      setCookie('search_offset', searchParams.offset, false, '/');
      caller.searchParams.page = 1;
      setCookie('search_page', searchParams.page, false, '/');
      caller.videos = new Array();
      caller.totalhits = null;
      caller.initFilters();
      caller.refreshHtmlList();
    }

    meclasspro.refreshHtmlList=function(){
      var caller=this;
      var toIndex=caller.searchParams.page*caller.searchParams.count-1;
      if(caller.totalhits!=null && toIndex>caller.totalhits-1) toIndex=caller.totalhits-1;
      var fromIndex=(caller.searchParams.page-1)*caller.searchParams.count;
      if(caller.totalhits==null || (caller.totalhits>0 && !caller.videos[toIndex])){
        caller.getVideos();
        return {'isCached':false,'toIndex':toIndex,'fromIndex':fromIndex};
      }else{
        return {'isCached':true,'toIndex':toIndex,'fromIndex':fromIndex};
      }
    }

    meclasspro.getVideos=function(){
      var caller=this;
      caller.searchParams.offset=Math.ceil((caller.searchParams.page*caller.searchParams.count)/100)-1;
      //caller.searchParams.offset=Math.ceil(caller.searchParams.page/10)-1;
      var data="";
      data+="cmd=search";
      data+="&category="+caller.searchParams.category;
      data+="&interval="+caller.searchParams.interval;
      data+="&method="+caller.searchParams.method;
      data+="&offset="+caller.searchParams.offset;
      data+="&param="+escape(caller.searchParams.param);
      data+="&sort="+caller.searchParams.sort;
      data+="&usergroup="+caller.searchParams.usergroup;
      data+="&app_id="+caller.searchParams.app_id;

      var _req=videa.AJAX.newRequest();
      //_req.send.call(this,"/ajaxinterface.php",caller.getVideosDone,{"reqparams":data,"callbackObj":caller});
      _req.send("/ajaxinterface.php?cmd=search&method="+caller.searchParams.method,caller.getVideosDone,{"reqparams":data},caller);

    }

    meclasspro.getVideosDone=function(req){
      var caller=this;
      if(req){
        var resp=req.json;
        if(resp.response.code==0){
          caller.totalhits=resp.response.totalhits;
          var v=resp.response.videos;
          for(var i=0;i<v.length;i++){
            var video = new Video(v[i]);
            var index=(caller.searchParams.offset*100)+i;
            caller.videos[index]=video;
          }
          caller.refreshHtmlList();
        }
      }else{
        alert("Hibás válasz!");//+req.responseText);
      }
    }


  }

