web/res/metadataplayer/test/interface 1.2/source/iautoscroller.js
changeset 99 6cb4d10f0b8b
child 133 9578d3ddce17
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/res/metadataplayer/test/interface 1.2/source/iautoscroller.js	Wed Apr 06 16:26:16 2011 +0200
@@ -0,0 +1,112 @@
+/**
+ * Interface Elements for jQuery
+ * Autoscroller
+ * 
+ * http://interface.eyecon.ro
+ * 
+ * Copyright (c) 2006 Stefan Petre
+ * Dual licensed under the MIT (MIT-LICENSE.txt) 
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *   
+ *
+ */
+
+/**
+ * Utility object that helps to make custom autoscrollers.
+ * 
+ * @example
+ *		$('div.dragMe').Draggable(
+ *			{
+ *				onStart : function()
+ *				{
+ *					$.iAutoscroller.start(this, document.getElementsByTagName('body'));
+ *				},
+ *				onStop : function()
+ *				{
+ *					$.iAutoscroller.stop();
+ *				}
+ *			}
+ *		);
+ *
+ * @description Utility object that helps to make custom autoscrollers
+ * @type jQuery
+ * @cat Plugins/Interface
+ * @author Stefan Petre
+ */
+
+jQuery.iAutoscroller = {
+	timer: null,
+	elToScroll: null,
+	elsToScroll: null,
+	step: 10,
+	/**
+	 * This is called to start autoscrolling
+	 * @param DOMElement el the element used as reference
+	 * @param Array els collection of elements to scroll
+	 * @param Integer step the pixels scroll on each step
+	 * @param Integer interval miliseconds between each step
+	 */
+	start: function(el, els, step, interval)
+	{
+		jQuery.iAutoscroller.elToScroll = el;
+		jQuery.iAutoscroller.elsToScroll = els;
+		jQuery.iAutoscroller.step = parseInt(step)||10;
+		jQuery.iAutoscroller.timer = window.setInterval(jQuery.iAutoscroller.doScroll, parseInt(interval)||40);
+	},
+	
+	//private function
+	doScroll : function()
+	{
+		for (i=0;i<jQuery.iAutoscroller.elsToScroll.length; i++) {
+				if(!jQuery.iAutoscroller.elsToScroll[i].parentData) {
+					jQuery.iAutoscroller.elsToScroll[i].parentData = jQuery.extend(
+						jQuery.iUtil.getPositionLite(jQuery.iAutoscroller.elsToScroll[i]),
+						jQuery.iUtil.getSizeLite(jQuery.iAutoscroller.elsToScroll[i]),
+						jQuery.iUtil.getScroll(jQuery.iAutoscroller.elsToScroll[i])
+					);
+				} else {
+					jQuery.iAutoscroller.elsToScroll[i].parentData.t = jQuery.iAutoscroller.elsToScroll[i].scrollTop;
+					jQuery.iAutoscroller.elsToScroll[i].parentData.l = jQuery.iAutoscroller.elsToScroll[i].scrollLeft;
+				}
+				
+				if (jQuery.iAutoscroller.elToScroll.dragCfg && jQuery.iAutoscroller.elToScroll.dragCfg.init == true) {
+					elementData = {
+						x : jQuery.iAutoscroller.elToScroll.dragCfg.nx,
+						y : jQuery.iAutoscroller.elToScroll.dragCfg.ny,
+						wb : jQuery.iAutoscroller.elToScroll.dragCfg.oC.wb,
+						hb : jQuery.iAutoscroller.elToScroll.dragCfg.oC.hb
+					};
+				} else {
+					elementData = jQuery.extend(
+						jQuery.iUtil.getPositionLite(jQuery.iAutoscroller.elToScroll),
+						jQuery.iUtil.getSizeLite(jQuery.iAutoscroller.elToScroll)
+					);
+				}
+				if (
+					jQuery.iAutoscroller.elsToScroll[i].parentData.t > 0
+					 && 
+					jQuery.iAutoscroller.elsToScroll[i].parentData.y + jQuery.iAutoscroller.elsToScroll[i].parentData.t > elementData.y) {
+					jQuery.iAutoscroller.elsToScroll[i].scrollTop -= jQuery.iAutoscroller.step;
+				} else if (jQuery.iAutoscroller.elsToScroll[i].parentData.t <= jQuery.iAutoscroller.elsToScroll[i].parentData.h && jQuery.iAutoscroller.elsToScroll[i].parentData.t + jQuery.iAutoscroller.elsToScroll[i].parentData.hb < elementData.y + elementData.hb) {
+					jQuery.iAutoscroller.elsToScroll[i].scrollTop += jQuery.iAutoscroller.step;
+				}
+				if (jQuery.iAutoscroller.elsToScroll[i].parentData.l > 0 && jQuery.iAutoscroller.elsToScroll[i].parentData.x + jQuery.iAutoscroller.elsToScroll[i].parentData.l > elementData.x) {
+					jQuery.iAutoscroller.elsToScroll[i].scrollLeft -= jQuery.iAutoscroller.step;
+				} else if (jQuery.iAutoscroller.elsToScroll[i].parentData.l <= jQuery.iAutoscroller.elsToScroll[i].parentData.wh && jQuery.iAutoscroller.elsToScroll[i].parentData.l + jQuery.iAutoscroller.elsToScroll[i].parentData.wb < elementData.x + elementData.wb) {
+					jQuery.iAutoscroller.elsToScroll[i].scrollLeft += jQuery.iAutoscroller.step;
+				}
+		}
+	},
+	/**
+	 * This is called to stop autoscrolling
+	 */
+	stop: function()
+	{
+		window.clearInterval(jQuery.iAutoscroller.timer);
+		jQuery.iAutoscroller.elToScroll = null;
+		jQuery.iAutoscroller.elsToScroll = null;
+		for (i in jQuery.iAutoscroller.elsToScroll) {
+			jQuery.iAutoscroller.elsToScroll[i].parentData = null;
+		}
+	}
+};
\ No newline at end of file