//{{{ modules.loadActions.prototype.tabSets = function(){
modules.loadActions.prototype.tabSets = function(){
  var tabs = this.tabSets;
  
  /* Defined in SiteVars object - loaded in via the tab's display.xsl */
  tabs.rootClassName    = SiteVars.modules.Tabs.className;
  tabs.tabItemClassName = SiteVars.modules.Tabs.tabItemClassName;
  tabs.panelClassName   = SiteVars.modules.Tabs.panelClassName;
  tabs.defaultClassName = SiteVars.modules.Tabs.defaultTabClassName;
  tabs.ids              = SiteVars.modules.Tabs.idPatterns;
  tabs.loadingMSG       = SiteVars.modules.Tabs.loadingMSG;
  tabs.rememberLastTab  = SiteVars.modules.Tabs.rememberLastTab;
  
  tabs.itemids       = 'tab';
  tabs.panelids      = 'panel';
  tabs.activeTab     = false; // leave blank for now - set when needed to switch when always fetching new content for panels
  tabs.previousTab   = false;
  
  
  tabs.load = function(){
      tabs.tabSets = $$('.'+tabs.rootClassName);
      if(typeof(tabs.tabSets)!='undefined'){
        
        tabs.tabSets.each(function(set){
          
          set.tabItems = Element.select(set, '.'+tabs.tabItemClassName);
          set.tabItems.each(function(item){
            item.element = Element.select(item, 'a')[0];
            item.num = item.id.substring(item.id.indexOf(tabs.ids)+tabs.ids.length+tabs.itemids.length)
            item.panel = $(tabs.ids + tabs.panelids + item.num);
            item.show = false;
            item.isDefault = Element.hasClassName(item, tabs.defaultClassName);
            item.parentSetId = set.id;
            item.parentSet = set;
            tabs.behaviour(item);
            
          });
        });
      }
  }
  
  tabs.behaviour = function(item){
    
    item.relAttribute = (Element.readAttribute(item.element, 'rel'))? Element.readAttribute(item.element, 'rel') : '';
    
    if(item.relAttribute.indexOf('params')!=-1 || item.relAttribute.indexOf('url')!=-1){;
      item.getAjaxDirective = modules.sanitizeResponse(item.relAttribute, {});
      if(item.getAjaxDirective){
        item.hasContent = false;
        item.getAjaxDirective.isStatic = (Element.hasClassName(item, 'static')) ? true : false;
        if(item.getAjaxDirective.isStatic){
          item.getAjaxDirective.sendMethod = 'get';
        }
        item.getAjaxDirective.onLoad = function(){
          item.panel.innerHTML = tabs.loadingMSG;
          item.panel.style.height = tabs.activeTab.panel.style.height;
        }
        item.getAjaxDirective.onSuccess = function(){
          tabs.updateProps(item);
          cmsMenusUI.build();
          console.dir(cmsMenusUI);
        };
        item.getAjaxDirective.onComplete = function(){
          
        }
        item.getAjaxDirective.updateElem = item.panel.id;
      }
      item.element.removeAttribute('rel');
    }
    
    Event.observe(item.element, 'click', function(e){
      tabs.tabSets.each(function(set){
        set.tabItems.each(function(allitems){
          if(allitems.getAjaxDirective){
            tabs.activeTab.panel.style.visibility = 'hidden';
          }
          else{
            allitems.panel.style.display = 'none';
          }
          allitems.show = false;
          Element.removeClassName(allitems, 'active');
        });
        if(item.getAjaxDirective){
          item.getAjaxDirective.onLoad = function(){};
        }
        tabs.showPanel(item);
      });
      Event.stop(e);
    }.bind(tabs));
    
    if(item.isDefault){
      if(item.getAjaxDirective){
        item.getAjaxDirective.onLoad = function(){};
      }
      tabs.showPanel(item);
    }
    else{
      item.panel.style.display = 'none';
    } 
  }
  
  
  tabs.showPanel = function(item){
    
    Element.addClassName(item, 'active');
    
    if(item.getAjaxDirective){
      if(item.hasContent != true || item.getAjaxDirective.isStatic == false ){
        modules.sendAsync(item.getAjaxDirective);
        item.hasContent = true;
      }
      else if(item.getAjaxDirective.isStatic == true && item.hasContent == true){
        tabs.updateProps(item);
      }
    }
    else {
      tabs.updateProps(item);
    }
           
    if(tabs.rememberLastTab == 'true'){
      var tabOptions = {
        name:item.parentSetId + 'Default',
        value:item.element.id
      }
      modules.setCMSSiteVar(tabOptions);
    }
    
  }
  
  
  tabs.updateProps = function(item){
    tabs.previousTab = tabs.activeTab;
    
    Element.removeClassName(item.parentSet, 'active-' + tabs.panelids + tabs.previousTab.num);
    
    item.panel.style.display = 'block';
    item.panel.style.height = 'auto';
    tabs.activeTab = item;
    tabs.activeTab.panel.style.visibility = 'visible';
    if(tabs.previousPanel){
      tabs.previousPanel.style.display = 'none';
    }
    
    Element.addClassName(item.parentSet, 'active-' + tabs.panelids + tabs.activeTab.num);
    item.show = true;
  }
  
  if($$('.'+tabs.rootClassName)[0]) {
    tabs.load();
  }
} //}}}

