web/rsln/res/metadataplayer/test/interface 1.2/source/iautoscroller.js
changeset 50 a1636b31eb98
equal deleted inserted replaced
47:068e7fad0b4f 50:a1636b31eb98
       
     1 /**
       
     2  * Interface Elements for jQuery
       
     3  * Autoscroller
       
     4  * 
       
     5  * http://interface.eyecon.ro
       
     6  * 
       
     7  * Copyright (c) 2006 Stefan Petre
       
     8  * Dual licensed under the MIT (MIT-LICENSE.txt) 
       
     9  * and GPL (GPL-LICENSE.txt) licenses.
       
    10  *   
       
    11  *
       
    12  */
       
    13 
       
    14 /**
       
    15  * Utility object that helps to make custom autoscrollers.
       
    16  * 
       
    17  * @example
       
    18  *		$('div.dragMe').Draggable(
       
    19  *			{
       
    20  *				onStart : function()
       
    21  *				{
       
    22  *					$.iAutoscroller.start(this, document.getElementsByTagName('body'));
       
    23  *				},
       
    24  *				onStop : function()
       
    25  *				{
       
    26  *					$.iAutoscroller.stop();
       
    27  *				}
       
    28  *			}
       
    29  *		);
       
    30  *
       
    31  * @description Utility object that helps to make custom autoscrollers
       
    32  * @type jQuery
       
    33  * @cat Plugins/Interface
       
    34  * @author Stefan Petre
       
    35  */
       
    36 
       
    37 jQuery.iAutoscroller = {
       
    38 	timer: null,
       
    39 	elToScroll: null,
       
    40 	elsToScroll: null,
       
    41 	step: 10,
       
    42 	/**
       
    43 	 * This is called to start autoscrolling
       
    44 	 * @param DOMElement el the element used as reference
       
    45 	 * @param Array els collection of elements to scroll
       
    46 	 * @param Integer step the pixels scroll on each step
       
    47 	 * @param Integer interval miliseconds between each step
       
    48 	 */
       
    49 	start: function(el, els, step, interval)
       
    50 	{
       
    51 		jQuery.iAutoscroller.elToScroll = el;
       
    52 		jQuery.iAutoscroller.elsToScroll = els;
       
    53 		jQuery.iAutoscroller.step = parseInt(step)||10;
       
    54 		jQuery.iAutoscroller.timer = window.setInterval(jQuery.iAutoscroller.doScroll, parseInt(interval)||40);
       
    55 	},
       
    56 	
       
    57 	//private function
       
    58 	doScroll : function()
       
    59 	{
       
    60 		for (i=0;i<jQuery.iAutoscroller.elsToScroll.length; i++) {
       
    61 				if(!jQuery.iAutoscroller.elsToScroll[i].parentData) {
       
    62 					jQuery.iAutoscroller.elsToScroll[i].parentData = jQuery.extend(
       
    63 						jQuery.iUtil.getPositionLite(jQuery.iAutoscroller.elsToScroll[i]),
       
    64 						jQuery.iUtil.getSizeLite(jQuery.iAutoscroller.elsToScroll[i]),
       
    65 						jQuery.iUtil.getScroll(jQuery.iAutoscroller.elsToScroll[i])
       
    66 					);
       
    67 				} else {
       
    68 					jQuery.iAutoscroller.elsToScroll[i].parentData.t = jQuery.iAutoscroller.elsToScroll[i].scrollTop;
       
    69 					jQuery.iAutoscroller.elsToScroll[i].parentData.l = jQuery.iAutoscroller.elsToScroll[i].scrollLeft;
       
    70 				}
       
    71 				
       
    72 				if (jQuery.iAutoscroller.elToScroll.dragCfg && jQuery.iAutoscroller.elToScroll.dragCfg.init == true) {
       
    73 					elementData = {
       
    74 						x : jQuery.iAutoscroller.elToScroll.dragCfg.nx,
       
    75 						y : jQuery.iAutoscroller.elToScroll.dragCfg.ny,
       
    76 						wb : jQuery.iAutoscroller.elToScroll.dragCfg.oC.wb,
       
    77 						hb : jQuery.iAutoscroller.elToScroll.dragCfg.oC.hb
       
    78 					};
       
    79 				} else {
       
    80 					elementData = jQuery.extend(
       
    81 						jQuery.iUtil.getPositionLite(jQuery.iAutoscroller.elToScroll),
       
    82 						jQuery.iUtil.getSizeLite(jQuery.iAutoscroller.elToScroll)
       
    83 					);
       
    84 				}
       
    85 				if (
       
    86 					jQuery.iAutoscroller.elsToScroll[i].parentData.t > 0
       
    87 					 && 
       
    88 					jQuery.iAutoscroller.elsToScroll[i].parentData.y + jQuery.iAutoscroller.elsToScroll[i].parentData.t > elementData.y) {
       
    89 					jQuery.iAutoscroller.elsToScroll[i].scrollTop -= jQuery.iAutoscroller.step;
       
    90 				} 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) {
       
    91 					jQuery.iAutoscroller.elsToScroll[i].scrollTop += jQuery.iAutoscroller.step;
       
    92 				}
       
    93 				if (jQuery.iAutoscroller.elsToScroll[i].parentData.l > 0 && jQuery.iAutoscroller.elsToScroll[i].parentData.x + jQuery.iAutoscroller.elsToScroll[i].parentData.l > elementData.x) {
       
    94 					jQuery.iAutoscroller.elsToScroll[i].scrollLeft -= jQuery.iAutoscroller.step;
       
    95 				} 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) {
       
    96 					jQuery.iAutoscroller.elsToScroll[i].scrollLeft += jQuery.iAutoscroller.step;
       
    97 				}
       
    98 		}
       
    99 	},
       
   100 	/**
       
   101 	 * This is called to stop autoscrolling
       
   102 	 */
       
   103 	stop: function()
       
   104 	{
       
   105 		window.clearInterval(jQuery.iAutoscroller.timer);
       
   106 		jQuery.iAutoscroller.elToScroll = null;
       
   107 		jQuery.iAutoscroller.elsToScroll = null;
       
   108 		for (i in jQuery.iAutoscroller.elsToScroll) {
       
   109 			jQuery.iAutoscroller.elsToScroll[i].parentData = null;
       
   110 		}
       
   111 	}
       
   112 };