couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nsla...@apache.org
Subject svn commit: r1310551 - /couchdb/site/script/smooth.js
Date Fri, 06 Apr 2012 19:02:18 GMT
Author: nslater
Date: Fri Apr  6 19:02:18 2012
New Revision: 1310551

URL: http://svn.apache.org/viewvc?rev=1310551&view=rev
Log:
Added missing script

Added:
    couchdb/site/script/smooth.js

Added: couchdb/site/script/smooth.js
URL: http://svn.apache.org/viewvc/couchdb/site/script/smooth.js?rev=1310551&view=auto
==============================================================================
--- couchdb/site/script/smooth.js (added)
+++ couchdb/site/script/smooth.js Fri Apr  6 19:02:18 2012
@@ -0,0 +1,98 @@
+/*--------------------------------------------------------------------------
+ *  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) // going down
+			a+=Math.ceil((d-a)/Scroller.speed)
+		else // going up
+			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
+/*-----------------------------------------------------------*/



Mime
View raw message