var ss = {fixAllLinks: function() {var allLinks = document.getElementsByTagName('a'); for (var i=0;i<allLinks.length;i++) {var lnk = allLinks[i]; if ((lnk.href && lnk.href.indexOf('#') != -1) && ( (lnk.pathname == location.pathname) || ('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search)) {ss.addEvent(lnk,'click',ss.smoothScroll);}}}, smoothScroll: function(e) {if (window.event) {target = window.event.srcElement;} else if (e) {target = e.target;} else return; if (target.nodeName.toLowerCase() != 'a') {target = target.parentNode;} if (target.nodeName.toLowerCase() != 'a') return; anchor = target.hash.substr(1); 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 (!destinationLink) destinationLink = document.getElementById(anchor); if (!destinationLink) return true; 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;} clearInterval(ss.INTERVAL); cypos = ss.getCurrentYPos(); ss_stepsize = parseInt((desty-cypos)/ss.STEPS); ss.INTERVAL = setInterval('ss.scrollWindow('+ss_stepsize+','+desty+',"'+anchor+'")',10); if (window.event) {window.event.cancelBubble = true; window.event.returnValue = false;} if (e && e.preventDefault && e.stopPropagation) {e.preventDefault(); e.stopPropagation();}}, scrollWindow: function(scramount,dest,anchor) {wascypos = ss.getCurrentYPos(); isAbove = (wascypos < dest); window.scrollTo(0,wascypos + scramount); iscypos = ss.getCurrentYPos(); isAboveNow = (iscypos < dest); if ((isAbove != isAboveNow) || (wascypos == iscypos)) {window.scrollTo(0,dest); clearInterval(ss.INTERVAL); location.hash = anchor;}}, getCurrentYPos: function() {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;}, addEvent: function(elm, evType, fn, useCapture) {if (elm.addEventListener) {elm.addEventListener(evType, fn, useCapture); return true;} else if (elm.attachEvent) {var r = elm.attachEvent("on"+evType, fn); return r;} else {alert("Handler could not be removed");}}}
ss.STEPS = 25; ss.addEvent(window,"load",ss.fixAllLinks);
