web/rsln/res/metadataplayer/test/interface 1.2/source/ifxscrollto.js
author Samuel Huron <samuel.huron@centrepompidou.fr>
Fri, 18 Feb 2011 19:37:15 +0100
changeset 50 a1636b31eb98
permissions -rw-r--r--
polemical timeline
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     1
/**
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     2
 * Interface Elements for jQuery
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     3
 * FX - scroll to
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     4
 * 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     5
 * http://interface.eyecon.ro
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     6
 * 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     7
 * Copyright (c) 2006 Stefan Petre
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     8
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     9
 * and GPL (GPL-LICENSE.txt) licenses.
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    10
 *   
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    11
 *
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    12
 */
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    13
/**
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    14
 * Applies a scrolling effect to document until the element gets into viewport
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    15
 */
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    16
jQuery.fn.extend (
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    17
	{
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    18
		/**
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    19
		 * @name ScrollTo
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    20
		 * @description scrolls the document until the lement gets into viewport
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    21
		 * @param Mixed speed animation speed, integer for miliseconds, string ['slow' | 'normal' | 'fast']
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    22
		 * @param String axis (optional) whatever to scroll on vertical, horizontal or both axis ['vertical'|'horizontal'|null]
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    23
		 * @param String easing (optional) The name of the easing effect that you want to use.
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    24
		 * @type jQuery
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    25
		 * @cat Plugins/Interface
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    26
		 * @author Stefan Petre
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    27
		 */
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    28
		ScrollTo : function(speed, axis, easing) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    29
			o = jQuery.speed(speed);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    30
			return this.queue('interfaceFX',function(){
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    31
				new jQuery.fx.ScrollTo(this, o, axis, easing);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    32
			});
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    33
		},
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    34
		/**
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    35
		 * @name ScrollToAnchors
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    36
		 * @description all links to '#elementId' will animate scroll
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    37
		 * @param Mixed speed animation speed, integer for miliseconds, string ['slow' | 'normal' | 'fast']
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    38
		 * @param String axis (optional) whatever to scroll on vertical, horizontal or both axis ['vertical'|'horizontal'|null]
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    39
		 * @param String easing (optional) The name of the easing effect that you want to use.
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    40
		 * @type jQuery
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    41
		 * @cat Plugins/Interface
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    42
		 * @author Stefan Petre
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    43
		 */
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    44
		/*inspired by David Maciejewski www.macx.de*/
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    45
		ScrollToAnchors : function(speed, axis, easing) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    46
			return this.each(
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    47
				function()
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    48
				{
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    49
					jQuery('a[@href*="#"]', this).click(
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    50
						function(e)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    51
						{
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    52
							parts = this.href.split('#');
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    53
							jQuery('#' + parts[1]).ScrollTo(speed, axis, easing);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    54
							return false;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    55
						}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    56
					);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    57
				}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    58
			)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    59
		}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    60
	}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    61
);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    62
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    63
jQuery.fx.ScrollTo = function (e, o, axis, easing)
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    64
{
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    65
	var z = this;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    66
	z.o = o;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    67
	z.e = e;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    68
	z.axis = /vertical|horizontal/.test(axis) ? axis : false;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    69
	z.easing = easing;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    70
	p = jQuery.iUtil.getPosition(e);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    71
	s = jQuery.iUtil.getScroll();
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    72
	z.clear = function(){clearInterval(z.timer);z.timer=null;jQuery.dequeue(z.e, 'interfaceFX');};
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    73
	z.t=(new Date).getTime();
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    74
	s.h = s.h > s.ih ? (s.h - s.ih) : s.h;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    75
	s.w = s.w > s.iw ? (s.w - s.iw) : s.w;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    76
	z.endTop = p.y > s.h ? s.h : p.y;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    77
	z.endLeft = p.x > s.w ? s.w : p.x;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    78
	z.startTop = s.t;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    79
	z.startLeft = s.l;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    80
	z.step = function(){
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    81
		var t = (new Date).getTime();
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    82
		var n = t - z.t;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    83
		var p = n / z.o.duration;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    84
		if (t >= z.o.duration+z.t) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    85
			z.clear();
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    86
			setTimeout(function(){z.scroll(z.endTop, z.endLeft)},13);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    87
		} else {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    88
			if (!z.axis || z.axis == 'vertical') {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    89
				if (!jQuery.easing || !jQuery.easing[z.easing]) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    90
					st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.endTop-z.startTop) + z.startTop;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    91
				} else {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    92
					st = jQuery.easing[z.easing](p, n, z.startTop, (z.endTop - z.startTop), z.o.duration);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    93
				}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    94
			} else {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    95
				st = z.startTop;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    96
			}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    97
			if (!z.axis || z.axis == 'horizontal') {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    98
				if (!jQuery.easing || !jQuery.easing[z.easing]) {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    99
					sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.endLeft-z.startLeft) + z.startLeft;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   100
				} else {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   101
					sl = jQuery.easing[z.easing](p, n, z.startLeft, (z.endLeft - z.startLeft), z.o.duration);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   102
				}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   103
			} else {
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   104
				sl = z.startLeft;
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   105
			}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   106
			z.scroll(st, sl);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   107
		}
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   108
	};
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   109
	z.scroll = function (t, l){window.scrollTo(l, t);};
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   110
	z.timer=setInterval(function(){z.step();},13);
a1636b31eb98 polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   111
};