var DocumentList = new Class({
  initialize: function(){
    this.cookie = Cookie.read('fe_typo_user').substr(0,4)+':tx_xcibdocuments';
    this.values = (Cookie.read(this.cookie) || '').split('-');
  },
  
  has: function(key){
    return this.values.contains(key);
  },
  
  set: function(key,value){
    if(value){
      if(!this.has(key)){
        this.values.push(key);
      }
    }else{
      if(this.has(key)){
         this.values.erase(key);
      }
    }
  },
                   
  store: function(){
     Cookie.write(this.cookie, this.values.join('-'), {duration: 355});
  }
});

window.addEvent('domready', function(){
  if($('tx_xcibdocuments_list')){    
    var clist = new DocumentList();
    $('tx_xcibdocuments_list').getElements('li.folder').each(function(obj, idx_li){
      var id = 'g'+obj.getProperty('id');
      var flabel = $(id);
      if(flabel){
        flabel.addEvent('click', function(){
          if(this.hasClass('closed')){
            clist.set(id, 1);
            this.removeClass('closed').addClass('open');
            obj.getElement('ul').setStyle('display', 'block');
          }else{
            clist.set(id, 0);
            this.removeClass('open').addClass('closed');
            obj.getElement('ul').setStyle('display', 'none');
            obj.getElements('li.folder').each(function(lab){
              var iid = 'g'+lab.getProperty('id');
              clist.set(iid,0);
              var fflabel = $(iid);
              if(fflabel){
                fflabel.removeClass('open').addClass('closed');
                lab.getElements('ul').setStyle('display', 'none');
              }
            });
          }
          clist.store();
        });
        if(clist.has(id)){
          flabel.removeClass('closed').addClass('open');
          obj.getElements('ul').setStyle('display', 'block');
        }else{
          flabel.removeClass('open').addClass('closed');
          obj.getElements('ul').setStyle('display', 'none');
        }
      }
    });
    $('tx_xcibdocuments_list').setStyle('display', 'block');
  }
});
