﻿///<reference path="jquery-1.2.6-vsdoc.js"/>

//$(
//   function() {
//      var tabber = new $m.tabber("divTabs");
//      tabber.addTab("Design", "divPage1");
//      tabber.addTab("Design cont.", "divPage2");
//      tabber.addTab("Watchmaker", "divPage3");
//      tabber.addTab("Intelligent Design", "divPage4");
//      tabber.addTab("Anthropic Principle", "divPage5");
//      tabber.showTab(0);
//    }//function
//);

(function(namespace_) {
   //
   // Converts a set of container elements into tabbed pages
   // the tab buttons go into a div specified by tabButtonsDivId
   //
   function tabber(tabButtonsDivId_) {
      var me = this;
      var tabButtonsDivId = tabButtonsDivId_;
      var jQ = {};

      jQ.tabButtonsDiv = $("#" + tabButtonsDivId_);
      jQ.tabPages = [];

      var unSelectedClass = "unSelectedTab";
      var selectedClass = "selectedTab";


      //
      //Adds a container as a tab page,  the title
      //will appear in the tab button
      //
      this.addTab = function(tabTitle_, tabContainerId_) {

         var page = $("#" + tabContainerId_);

         var anchor = $(document.createElement("a"));
         page.append(anchor);
         page.anchor = anchor;

         anchor.text("back to top")
                  .attr("href", "javascript: scroll(0, 0)")
                  .wrap("<p></p>");


         var btn = $(document.createElement("input"));
         btn.attr("id", tabTitle_)
               .attr("type", "button")
               .attr("value", tabTitle_)
               .click(function() { onTabClick(page); });

         page.button = btn;
         jQ.tabPages.push(page);

         jQ.tabButtonsDiv.append(btn);

         me.showTab(0);
      } //addTab

      //
      //adds a link that navigates to the tab page specified
      // by the tab id
      //
      this.addLink = function(linkId_, tabContainerId_) {

         for (p in jQ.tabPages) {
            var pg = jQ.tabPages[p];

            if (pg[0].id == tabContainerId_) {
               $("#" + linkId_).click(function() { onTabClick(pg); });
               return;
            } //if

         } //for
      } //addLink


      //
      // makes the selected page visible and navigates to the top
      // hides all other pages
      //
      function onTabClick(jQPage_) {

         jQPage_.show();
         jQPage_.button.removeClass(unSelectedClass).addClass(selectedClass).focus();
         javascript: scroll(0, 0);
         
         for (p in jQ.tabPages) {
            var pg = jQ.tabPages[p];

            if (pg != jQPage_) {
               pg.hide();
               pg.button.removeClass(selectedClass).addClass(unSelectedClass);
            }
         } //foreach

      } //onTabClick

      //
      //Used to set the displayed tab
      //
      this.showTab = function(tabIndex_) {
         var index = tabIndex_ || 0;
         onTabClick(jQ.tabPages[index]);
      } //showTab

      this.setSelectedTabClass = function(class_) { selectedClass = class_; }
      this.setUnSelectedTabClass = function(class_) { unSelectedClass = class_; }
   } //tabber


   window[namespace_] = { "tabber": tabber }

} ("$m"));
