test/emission_fichiers/jquery.js
author hamidouk
Mon, 19 Dec 2011 15:25:22 +0100
branchpopcorn-port
changeset 481 a46cfeee6d77
parent 0 c357d5b60635
permissions -rw-r--r--
using jquery ui draggable changes the state of an element from absolute to relative positioning, which breaks the way our seek button expands itself, so we need to force absolute positioning, quite uglily, using jquery.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/**
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * jQuery.timers - Timer abstractions for jQuery
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * Date: 2009/02/08
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 *
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 * @author Blair Mitchelmore
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * @version 1.1.2
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 *
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 **/
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
jQuery.fn.extend({
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
	everyTime: function(interval, label, fn, times, belay) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
		return this.each(function() {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
			jQuery.timer.add(this, interval, label, fn, times, belay);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
		});
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
	},
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
	oneTime: function(interval, label, fn) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
		return this.each(function() {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
			jQuery.timer.add(this, interval, label, fn, 1);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
		});
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
	},
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
	stopTime: function(label, fn) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
		return this.each(function() {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
			jQuery.timer.remove(this, label, fn);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
		});
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
	}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
});
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
jQuery.event.special
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
jQuery.extend({
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
	timer: {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
		global: [],
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		guid: 1,
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
		dataKey: "jQuery.timer",
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
		regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
		powers: {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
			// Yeah this is major overkill...
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
			'ms': 1,
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
			'cs': 10,
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
			'ds': 100,
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
			's': 1000,
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
			'das': 10000,
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
			'hs': 100000,
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
			'ks': 1000000
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
		},
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
		timeParse: function(value) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
			if (value == undefined || value == null)
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
				return null;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
			var result = this.regex.exec(jQuery.trim(value.toString()));
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
			if (result[2]) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
				var num = parseFloat(result[1]);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
				var mult = this.powers[result[2]] || 1;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
				return num * mult;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
			} else {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
				return value;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
			}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		},
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
		add: function(element, interval, label, fn, times, belay) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
			var counter = 0;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
			if (jQuery.isFunction(label)) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
				if (!times) 
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
					times = fn;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
				fn = label;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
				label = interval;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
			}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
			interval = jQuery.timer.timeParse(interval);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
			if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
				return;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
			if (times && times.constructor != Number) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
				belay = !!times;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
				times = 0;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
			}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
			times = times || 0;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
			belay = belay || false;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
			var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
			if (!timers[label])
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
				timers[label] = {};
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
			fn.timerID = fn.timerID || this.guid++;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
			var handler = function() {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
				if (belay && this.inProgress) 
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
					return;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
				this.inProgress = true;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
					jQuery.timer.remove(element, label, fn);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
				this.inProgress = false;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
			};
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
			handler.timerID = fn.timerID;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
			if (!timers[label][fn.timerID])
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
				timers[label][fn.timerID] = window.setInterval(handler,interval);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
			this.global.push( element );
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
		},
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
		remove: function(element, label, fn) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
			var timers = jQuery.data(element, this.dataKey), ret;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
			
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
			if ( timers ) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
				
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
				if (!label) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
					for ( label in timers )
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
						this.remove(element, label, fn);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
				} else if ( timers[label] ) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
					if ( fn ) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
						if ( fn.timerID ) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
							window.clearInterval(timers[label][fn.timerID]);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
							delete timers[label][fn.timerID];
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
						}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
					} else {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
						for ( var fn in timers[label] ) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
							window.clearInterval(timers[label][fn]);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
							delete timers[label][fn];
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
						}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
					}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
					
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
					for ( ret in timers[label] ) break;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
					if ( !ret ) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
						ret = null;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
						delete timers[label];
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
					}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
				}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
				
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
				for ( ret in timers ) break;
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
				if ( !ret ) 
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
					jQuery.removeData(element, this.dataKey);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
			}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
		}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
	}
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
});
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
jQuery(window).bind("unload", function() {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
	jQuery.each(jQuery.timer.global, function(index, item) {
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
		jQuery.timer.remove(item);
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
	});
c357d5b60635 First import. Last version from France culture
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
});