diff public_html/static/js/implab/sticky.js @ 6:2d1a0a75fc49

added css, templates
author sergey
date Mon, 12 May 2014 18:05:30 +0400
parents
children d9551c7e7101
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/public_html/static/js/implab/sticky.js	Mon May 12 18:05:30 2014 +0400
@@ -0,0 +1,49 @@
+define([ 'dojo/on', 'dojo/dom-geometry', 'dojo/dom-style' ], function(on, g,
+		css) {
+
+	return function(sticker, options) {
+		var dh, pos;
+
+		var pos = g.position(sticker,true);
+
+		var origLeft = css.get(sticker,'left');
+		var left = pos.x + 'px';
+
+		if (options && options.along) {
+			var along = g.position(options.along,true);
+			dh = along.y + along.h - pos.h - pos.y;
+		} else {
+			dh = window.scrollMaxY - pos.h - pos.y;
+		}
+
+		var fixed = false;
+		
+		var stfn = function() {
+			if(!options || !options.along)
+				dh = window.scrollMaxY - pos.h - pos.y;
+
+			if (window.scrollY >= pos.y && window.scrollY <= pos.y + dh) {
+				if (!fixed) {
+					css.set(sticker, { top : 0, left: left, position : 'fixed' });
+					fixed = true;
+				}
+			} else {
+				if (fixed) {
+					fixed = false;
+					
+					css.set(sticker, { position : 'relative', left: origLeft });
+
+					if (window.scrollY < pos.y) {
+						css.set(sticker, { top : 'auto' });
+					} else {
+						css.set(sticker, { top : dh + 'px' });
+					}
+				}
+			}
+		};
+		
+		stfn();
+
+		on(window, 'scroll', stfn );
+	};
+});
\ No newline at end of file