var SlideScript_Timeout; var SlideScript_TargetScroll; var SlideScript_LastScroll; var SlideScript_Velocity = 5; function SlideScript_GetElementPosition(obj) { var position = {x:0, y:0, width:0, height:0}; var curleft = curtop = 0; var currentObject = obj; if (currentObject.offsetParent) { curleft = currentObject.offsetLeft; curtop = currentObject.offsetTop; while (currentObject = currentObject.offsetParent) { curleft += currentObject.offsetLeft; curtop += currentObject.offsetTop; } } position.x = curleft; position.y = curtop; position.width = obj.offsetWidth; position.height = obj.offsetHeight; return position; } function SlideScript_GetScroll() { var x,y; if (self.pageYOffset) { x = self.pageXOffset; y = self.pageYOffset; } else if (document.documentElement && document.documentElement.scrollTop) { x = document.documentElement.scrollLeft; y = document.documentElement.scrollTop; } else if (document.body) { x = document.body.scrollLeft; y = document.body.scrollTop; } return [x,y]; } function SlideScript_GetWindowSize() { var winW = 0; var winH = 0; if( typeof( window.innerWidth ) == 'number' ) { winW = window.innerWidth; winH = window.innerHeight; } else if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { winW = document.documentElement.clientWidth; winH = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { winW = document.body.clientWidth; winH = document.body.clientHeight; } return [winW,winH]; } function SlideTo(anchor) { var element = document.getElementById(anchor); var position = SlideScript_GetElementPosition(element); var windowSize = SlideScript_GetWindowSize(); SlideScript_TargetScroll = parseInt(position.y - 30); if(SlideScript_TargetScroll < 0)SlideScript_TargetScroll = 0; clearTimeout(SlideScript_Timeout); var scroll = SlideScript_GetScroll(); SlideScript_LastScroll = scroll[1]; SlideScript_Timeout = setTimeout("SlideScript_MoveTo();", 1); } function SlideScript_SetScroll(xScroll, yScroll) { window.scrollTo(xScroll, yScroll); } function SlideScript_MoveTo() { var scroll = SlideScript_GetScroll(); if(scroll[1] != SlideScript_LastScroll)return; var scrollToSet = scroll[1]; if(scroll[1] == SlideScript_TargetScroll)return; if(Math.abs(scroll[1] - SlideScript_TargetScroll) < 5) { scrollToSet = SlideScript_TargetScroll; SlideScript_SetScroll(scroll[0], scrollToSet); SlideScript_LastScroll = scrollToSet; } else { scrollToSet = parseInt(scroll[1] * 0.95 + SlideScript_TargetScroll * 0.05); SlideScript_SetScroll(scroll[0], scrollToSet); SlideScript_LastScroll = scrollToSet; SlideScript_Timeout = setTimeout("SlideScript_MoveTo();", 10); } }