// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// tabbed.js
//
// by drow@ipHouse.com
// licensed under a Creative Commons Attribution-Share Alike 3.0 License
// http://creativecommons.org/licenses/by-sa/3.0/
//
// uses Prototype
// http://www.prototypejs.org/
//
// version 1.0  2010-02-03 initial release
// version 1.1  added support for nested tab blocks

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// global data

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// init tabs

  function init_tabs () {
    if (blocks = $$('div.tab_block')) {
      var B = {}; Builder.dump(B);

      blocks.each(function (block) {
        block_attr = { 'class': 'tab_nav' };
        items = [];

        if (tabs = get_tabs(block)) {
          tabs.each(function (tab) {
            tbd_id = tab.identify();

            if (link = tab.readAttribute('href')) {
              a_attr = { 'href': link };
            } else {
              a_attr = { 'onclick': "lift_tab(this,'" + tbd_id + "')" };
            }
            items.push(B.LI({},B.A(a_attr,tab.title)));
            tab.addClassName('inactive');
          });
          block.insert({ 'top': B.UL(block_attr,items) });
          lift_tab(block.down('ul').down('a'),tabs[0].identify());
        }
      });
    }
  }
  function get_tabs (block) {
    return select_children(block,'div.tab');
  }
  function select_children (parent,desc) {
    return parent.childElements().grep(new Selector(desc));
  }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// lift tab

  function lift_tab (link,tbd_id) {
    link.up('ul').select('a').each(function (a) {
      a.removeClassName('active');
    });
    link.addClassName('active');

    get_tabs(link.up('div')).each(function (d) {
      d.addClassName('inactive');
    });
    $(tbd_id).removeClassName('inactive');
  }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// showtime

  document.observe('dom:loaded',init_tabs);

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
