//	Smart Mini Tabs by Rob L Glazebrook.
//	Last edited: Feb. 10, 2006
//	This script is based on slayeroffice's focus slide navigation:
//	http://slayeroffice.com/code/focus_slide/

var d=document;			// These four variables
var activeLI = 0;		// should not be
var currentLI = 0;		// edited unless you
var zInterval = null;	// really know your stuff

var SLIDE_STEP = 15;		// # of pixels to slide each step (higher is faster)
var RESIZE_STEP = 5;	// # of pixels to resize each step (higher is faster)

function init_slider() {
  if(!document.getElementById || window.opera)return;

  mObj = d.getElementById("navheader");
  liObj = mObj.getElementsByTagName("li");
  aObj = mObj.getElementsByTagName("a");

  for(i=0;i<liObj.length;i++) { // create mouseovers/mouseouts for the li's and the ul
    liObj[i].xid = i;
    liObj[i].onmouseover = function() { initSlide(this.xid); }
  }
  mObj.onmouseout = function() { initSlide(currentLI); }

  // create the slider object
  slideObj = mObj.appendChild(d.createElement("div"));
  slideObj.id = "slider";

  // position the slider over the current li
  initActive();
  x = liObj[activeLI].offsetLeft;
  y = liObj[activeLI].offsetTop-3;
  slideObj.style.top = y + "px";
  slideObj.style.left = x + "px";
  slideObj.style.width = liObj[activeLI].offsetWidth + "px";
}

function initActive() { // discover the current tab by comparing anchor hrefs to the window href
  for(i=0;i<liObj.length;i++) {
    if(liObj[i].className == "active") {
      activeLI = currentLI = i;
    }
  }
}

function initSlide(objIndex) {
  if(objIndex == activeLI)return;
  clearInterval(zInterval);
  activeLI = objIndex;
  destX = liObj[activeLI].offsetLeft;		// the desination location
  destW = liObj[activeLI].offsetWidth;	// the destination size
  intervalMethod = function() { doSlide(destX); }
  zInterval = setInterval(intervalMethod,10);
}

function doSlide(dX) { // move the slider div
  x = slideObj.offsetLeft;
  if(x+SLIDE_STEP<dX) {
    // if the x-value is less than its destination, move it to the right
    x+=SLIDE_STEP;
    slideObj.style.left = x + "px";
    doResize(destW);
    } else if (x-SLIDE_STEP>dX) {
      // if the x-value is more than its destination, move to the left
      x-=SLIDE_STEP;
      slideObj.style.left = x + "px";
      doResize(destW);
      } else  {
        // if the div is within SLIDE_STEP pixels, move it to the proper location
        slideObj.style.left = dX + "px";
        slideObj.style.width = destW +"px";
        clearInterval(zInterval);
        zInterval = null;
      }
    }

function doResize(dW) { // resize the slider div -- similar in execution to doSlide
  w = slideObj.offsetWidth;
  if (slideObj.offsetWidth!=dW) {
    if (w+RESIZE_STEP<dW) {
      w+=RESIZE_STEP;
      slideObj.style.width = w + "px";
      } else if (w-RESIZE_STEP>dW) {
        w-=RESIZE_STEP;
        slideObj.style.width = w + "px";
        } else {
          slideObj.style.width = dW + "px";
        }
      }
    }

if (window.addEventListener) {
  window.addEventListener("load", function () { init_slider(); }, false);
}
else if (window.attachEvent) {
  window.attachEvent('on' + "load", function () { init_slider(); });
}
