var QuickAnswer = new Class({

  Implements: Options,

  initialize: function(element, options){
    this.element = document.id(element);
    this.setOptions(options);

    var tabEl = this.element.getElement('.tabPanel');
    var tab = new QuickAnswer.TabPanel(tabEl, tabEl.getElements('.tabItem'), tabEl.getElements('.tabContent'));
    tab.elements.each(function(el1){
      var acc1El = el1.getElement('.accordion');
      if (acc1El){
        var acc1 = QuickAnswer.accordion(acc1El);
        acc1.elements.each(function(el2){
          var acc2El = el2.getElement('.accordion');
          if (acc2El) QuickAnswer.accordion(acc2El);
        });
      }
    });
  }

});

window.addEvent('domready', function(){
  $$('.quickAnswer').each(function(el){
    new QuickAnswer(el);
  });
});

QuickAnswer.TabPanel = new Class({

  initialize: function(container, togglers, elements){
    this.container = document.id(container);
    this.togglers = $$(togglers);
    this.elements = $$(elements);
    this.previous = -1;
    this.togglers.each(function(item, index){
      item.getElement('a').addEvent('click', QuickAnswer.ignoreLink);
      item.addEvent('click', this.display.bind(this, index));
      if (item.hasClass('active')) this.previous = index;
    }, this);
  },

  display: function(index){
    if (index == this.previous) return;
    if (this.previous >= 0){
      this.togglers[this.previous].removeClass('active');
      this.elements[this.previous].removeClass('active');
    }
    this.togglers[index].addClass('active');
    this.elements[index].addClass('active');
    this.previous = index;
  }

});

QuickAnswer.accordion = function(el){
  var togglers = [];
  var elements = [];
  var show = false;
  $$(el.childNodes).each(function(item){
    if (item.hasClass('toggler')){
      item.getElement('a').addEvent('click', QuickAnswer.ignoreLink);
      if (item.hasClass('active')) show = togglers.length;
      togglers.push(item);
    } else if (item.hasClass('element')){
      elements.push(item);
    }
  });
  return new Accordion(el, togglers, elements, {
    show: show,
    onActive: function(toggler, element){
      toggler.addClass('active');
    },
    onBackground: function(toggler, element){
      toggler.removeClass('active');
    }
  });
};

QuickAnswer.ignoreLink = function(e){
  e.preventDefault();
};
