aboutsummaryrefslogtreecommitdiff
path: root/subsonic-main/src/main/webapp/script/smooth-scroll.js
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2012-07-02 21:24:02 -0700
committerScott Jackson <daneren2005@gmail.com>2012-07-02 21:24:02 -0700
commita1a18f77a50804e0127dfa4b0f5240c49c541184 (patch)
tree19a38880afe505beddb5590379a8134d7730a277 /subsonic-main/src/main/webapp/script/smooth-scroll.js
parentb61d787706979e7e20f4c3c4f93c1f129d92273f (diff)
downloaddsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.tar.gz
dsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.tar.bz2
dsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.zip
Initial Commit
Diffstat (limited to 'subsonic-main/src/main/webapp/script/smooth-scroll.js')
-rw-r--r--subsonic-main/src/main/webapp/script/smooth-scroll.js102
1 files changed, 102 insertions, 0 deletions
diff --git a/subsonic-main/src/main/webapp/script/smooth-scroll.js b/subsonic-main/src/main/webapp/script/smooth-scroll.js
new file mode 100644
index 00000000..9199732b
--- /dev/null
+++ b/subsonic-main/src/main/webapp/script/smooth-scroll.js
@@ -0,0 +1,102 @@
+/*--------------------------------------------------------------------------
+ * Smooth Scroller Script, version 1.0.1
+ * (c) 2007 Dezinerfolio Inc. <midart@gmail.com>
+ *
+ * For details, please check the website : http://dezinerfolio.com/
+ *
+/*--------------------------------------------------------------------------*/
+
+Scroller = {
+ // control the speed of the scroller.
+ // dont change it here directly, please use Scroller.speed=50;
+ speed:10,
+
+ // returns the Y position of the div
+ gy: function (d) {
+ gy = d.offsetTop
+ if (d.offsetParent) while (d = d.offsetParent) gy += d.offsetTop
+ return gy
+ },
+
+ // returns the current scroll position
+ scrollTop: function (){
+ body=document.body
+ d=document.documentElement
+ if (body && body.scrollTop) return body.scrollTop
+ if (d && d.scrollTop) return d.scrollTop
+ if (window.pageYOffset) return window.pageYOffset
+ return 0
+ },
+
+ // attach an event for an element
+ // (element, type, function)
+ add: function(event, body, d) {
+ if (event.addEventListener) return event.addEventListener(body, d,false)
+ if (event.attachEvent) return event.attachEvent('on'+body, d)
+ },
+
+ // kill an event of an element
+ end: function(e){
+ if (window.event) {
+ window.event.cancelBubble = true
+ window.event.returnValue = false
+ return;
+ }
+ if (e.preventDefault && e.stopPropagation) {
+ e.preventDefault()
+ e.stopPropagation()
+ }
+ },
+
+ // move the scroll bar to the particular div.
+ scroll: function(d){
+ i = window.innerHeight || document.documentElement.clientHeight;
+ h=document.body.scrollHeight;
+ a = Scroller.scrollTop()
+ if(d>a)
+ if(h-d>i)
+ a+=Math.ceil((d-a)/Scroller.speed)
+ else
+ a+=Math.ceil((d-a-(h-d))/Scroller.speed)
+ else
+ a = a+(d-a)/Scroller.speed;
+ window.scrollTo(0,a)
+ if(a==d || Scroller.offsetTop==a)clearInterval(Scroller.interval)
+ Scroller.offsetTop=a
+ },
+ // initializer that adds the renderer to the onload function of the window
+ init: function(){
+ Scroller.add(window,'load', Scroller.render)
+ },
+
+ // this method extracts all the anchors and validates then as # and attaches the events.
+ render: function(){
+ a = document.getElementsByTagName('a');
+ Scroller.end(this);
+ window.onscroll
+ for (i=0;i<a.length;i++) {
+ l = a[i];
+ if(l.href && l.href.indexOf('#') != -1 && ((l.pathname==location.pathname) || ('/'+l.pathname==location.pathname)) ){
+ Scroller.add(l,'click',Scroller.end)
+ l.onclick = function(){
+ Scroller.end(this);
+ l=this.hash.substr(1);
+ a = document.getElementsByTagName('a');
+ for (i=0;i<a.length;i++) {
+ if(a[i].name == l){
+ clearInterval(Scroller.interval);
+ Scroller.interval=setInterval('Scroller.scroll('+Scroller.gy(a[i])+')',10);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+// invoke the initializer of the scroller
+Scroller.init();
+
+
+/*------------------------------------------------------------
+ * END OF CODE
+/*-----------------------------------------------------------*/ \ No newline at end of file