/* Simple Accessible Tab control v1.12 - MJF - 27/05/10 - http://websemantics.co.uk/ */
/*
  Tab navigation block must be id'd, id="tabableNav" by default. Either on the ul or containing div.
  The switched div blocks must reside within an id'd div, id="tabableContent" by default.
  Which blocks get switched depends purely on the href in the tab link.
  There is no limit to the number of tabs or tabbed blocks.

  Limitation: 
    Only one tab nav per page.
    There is a second version of this file for when a second nav is required see accessibleTabsSet2.js 

  Requires:
    hasJS.js
    CSS must include:
      .hasJS .tabbed {display:none}
      .hasJS .on {display:block}

  Example HTML usage:

  <ul id="tabableNav">
    <li class="on"><a href="#tab1">Tab1</a></li>
    <li><a href="#tab2">Tab2</a></li>
    <li><a href="#tab3">Tab3</a></li>
    ...
  </ul>

  <div id="tabableContent">
    <div id="tab1" class="tabbed on">
      ...
    </div>
    <div id="tab2" class="tabbed">
      ...
    </div>
    ...
  </div>

*/
var accessibleTabs=function(){

  var tabNavId='tabableNav',
      onClass='on',
      tabContentId='tabableContent';

  /* author: Simon Willisons - http://simonwillison.net/2004/May/26/addLoadEvent/ */
  function addLoadEvent(f){var o=window.onload;if(typeof window.onload!='function'){window.onload=f;}else{window.onload=function(){if(o){o();}f();};}}

  function clearTabLinks(){
    var lis=document.getElementById(tabNavId).getElementsByTagName('li');
    if (lis){
      for (var j=0;j<lis.length;j++){
        lis[j].className=lis[j].className.replace(onClass,'');
  } } }

  function clearTabContent(){
    var tabContent=document.getElementById(tabContentId);
    if (tabContent){
      var divs=tabContent.getElementsByTagName('div');
      if (divs){
        for (var k=0;k<divs.length;k++){
          divs[k].className=divs[k].className.replace(onClass,'');
  } } } }

  function getAnchorFromURI(uri){
    return uri.slice(uri.lastIndexOf('#')+1);
  }

  function tabClicked(){
    var tabId=getAnchorFromURI(this.href);
    clearTabLinks();
    this.parentNode.className=this.parentNode.className+" "+onClass;
    clearTabContent();
    document.getElementById(tabId).className=document.getElementById(tabId).className+" "+onClass;
    return false;
  }

  function init(){
    addLoadEvent(function(){
      var tabNav=document.getElementById(tabNavId);
      if (tabNav){
        var As=tabNav.getElementsByTagName('a');
        if (As){
          for (var i=0; i<As.length;i++){
            As[i].onclick=tabClicked;
      } } }
    });
  }

  return{init:init};

}();

accessibleTabs.init();
