
function smoothScroll (anchor) {
    
    // Find the destination anchor passed to the function
    var allLinks = document.getElementsByTagName('a');
    var destinationLink = null;
    for (var i=0;i<allLinks.length;i++) {
      var lnk = allLinks[i];
      if (lnk.name && (lnk.name == anchor)) {
        destinationLink = lnk;
        break;
      }
    }
    
    // If we didn't find a destination, give up and let the browser do its thing
    if (!destinationLink) return true;  
    
    // Find the destination's position
    var destx = destinationLink.offsetLeft; 
    var desty = destinationLink.offsetTop;
    var thisNode = destinationLink;
    while (thisNode.offsetParent && 
          (thisNode.offsetParent != document.body)) {
      thisNode = thisNode.offsetParent;
      destx += thisNode.offsetLeft;
      desty += thisNode.offsetTop;
    }    

    // Stop any current scrolling
    //clearInterval(INTERVAL);
    
    cypos = getCurrentYPos();
    ss_stepsize = parseInt((desty-cypos)/STEPS);
    INTERVAL = setInterval('scrollWindow('+ss_stepsize+','+desty+',"'+anchor+'")',10);
}

function scrollWindow(scramount,dest,anchor) {
    wascypos = getCurrentYPos();
    isAbove = (wascypos < dest);
    window.scrollTo(0,wascypos + scramount);
    iscypos = getCurrentYPos();
    isAboveNow = (iscypos < dest);
    if ((isAbove != isAboveNow) || (wascypos == iscypos)) {
      // if we've just scrolled past the destination, or
      // we haven't moved from the last scroll (i.e., we're at the
      // bottom of the page) then scroll exactly to the link
      window.scrollTo(0,dest);
      // cancel the repeating timer
      clearInterval(INTERVAL);
      // and jump to the link directly so the URL's right
      location.hash = anchor;
    }
}

function getCurrentYPos() {
    if (document.body && document.body.scrollTop)
      return document.body.scrollTop;
    if (document.documentElement && document.documentElement.scrollTop)
      return document.documentElement.scrollTop;
    if (window.pageYOffset)
      return window.pageYOffset;
    return 0;
}

STEPS = 25;  