client/player/development-bundle/ui/jquery.ui.autocomplete.js
author hurons
Wed, 09 Jun 2010 16:48:35 +0200
changeset 1 436d4791d7ac
permissions -rw-r--r--
premier version du player test de commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     1
/*
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     2
 * jQuery UI Autocomplete 1.8.1
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     3
 *
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     4
 * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     5
 * Dual licensed under the MIT (MIT-LICENSE.txt)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     6
 * and GPL (GPL-LICENSE.txt) licenses.
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     7
 *
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     8
 * http://docs.jquery.com/UI/Autocomplete
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
     9
 *
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    10
 * Depends:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    11
 *	jquery.ui.core.js
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    12
 *	jquery.ui.widget.js
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    13
 *	jquery.ui.position.js
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    14
 */
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    15
(function( $ ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    16
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    17
$.widget( "ui.autocomplete", {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    18
	options: {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    19
		minLength: 1,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    20
		delay: 300
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    21
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    22
	_create: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    23
		var self = this,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    24
			doc = this.element[ 0 ].ownerDocument;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    25
		this.element
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    26
			.addClass( "ui-autocomplete-input" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    27
			.attr( "autocomplete", "off" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    28
			// TODO verify these actually work as intended
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    29
			.attr({
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    30
				role: "textbox",
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    31
				"aria-autocomplete": "list",
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    32
				"aria-haspopup": "true"
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    33
			})
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    34
			.bind( "keydown.autocomplete", function( event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    35
				var keyCode = $.ui.keyCode;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    36
				switch( event.keyCode ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    37
				case keyCode.PAGE_UP:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    38
					self._move( "previousPage", event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    39
					break;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    40
				case keyCode.PAGE_DOWN:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    41
					self._move( "nextPage", event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    42
					break;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    43
				case keyCode.UP:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    44
					self._move( "previous", event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    45
					// prevent moving cursor to beginning of text field in some browsers
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    46
					event.preventDefault();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    47
					break;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    48
				case keyCode.DOWN:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    49
					self._move( "next", event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    50
					// prevent moving cursor to end of text field in some browsers
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    51
					event.preventDefault();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    52
					break;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    53
				case keyCode.ENTER:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    54
					// when menu is open or has focus
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    55
					if ( self.menu.active ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    56
						event.preventDefault();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    57
					}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    58
					//passthrough - ENTER and TAB both select the current element
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    59
				case keyCode.TAB:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    60
					if ( !self.menu.active ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    61
						return;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    62
					}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    63
					self.menu.select( event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    64
					break;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    65
				case keyCode.ESCAPE:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    66
					self.element.val( self.term );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    67
					self.close( event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    68
					break;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    69
				case keyCode.LEFT:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    70
				case keyCode.RIGHT:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    71
				case keyCode.SHIFT:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    72
				case keyCode.CONTROL:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    73
				case keyCode.ALT:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    74
					// ignore metakeys (shift, ctrl, alt)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    75
					break;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    76
				default:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    77
					// keypress is triggered before the input value is changed
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    78
					clearTimeout( self.searching );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    79
					self.searching = setTimeout(function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    80
						self.search( null, event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    81
					}, self.options.delay );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    82
					break;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    83
				}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    84
			})
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    85
			.bind( "focus.autocomplete", function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    86
				self.selectedItem = null;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    87
				self.previous = self.element.val();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    88
			})
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    89
			.bind( "blur.autocomplete", function( event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    90
				clearTimeout( self.searching );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    91
				// clicks on the menu (or a button to trigger a search) will cause a blur event
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    92
				// TODO try to implement this without a timeout, see clearTimeout in search()
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    93
				self.closing = setTimeout(function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    94
					self.close( event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    95
					self._change( event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    96
				}, 150 );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    97
			});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    98
		this._initSource();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
    99
		this.response = function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   100
			return self._response.apply( self, arguments );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   101
		};
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   102
		this.menu = $( "<ul></ul>" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   103
			.addClass( "ui-autocomplete" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   104
			.appendTo( "body", doc )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   105
			.menu({
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   106
				focus: function( event, ui ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   107
					var item = ui.item.data( "item.autocomplete" );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   108
					if ( false !== self._trigger( "focus", null, { item: item } ) ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   109
						// use value to match what will end up in the input, if it was a key event
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   110
						if ( /^key/.test(event.originalEvent.type) ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   111
							self.element.val( item.value );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   112
						}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   113
					}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   114
				},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   115
				selected: function( event, ui ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   116
					var item = ui.item.data( "item.autocomplete" );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   117
					if ( false !== self._trigger( "select", event, { item: item } ) ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   118
						self.element.val( item.value );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   119
					}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   120
					self.close( event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   121
					// only trigger when focus was lost (click on menu)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   122
					var previous = self.previous;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   123
					if ( self.element[0] !== doc.activeElement ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   124
						self.element.focus();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   125
						self.previous = previous;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   126
					}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   127
					self.selectedItem = item;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   128
				},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   129
				blur: function( event, ui ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   130
					if ( self.menu.element.is(":visible") ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   131
						self.element.val( self.term );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   132
					}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   133
				}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   134
			})
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   135
			.zIndex( this.element.zIndex() + 1 )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   136
			// workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   137
			.css({ top: 0, left: 0 })
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   138
			.hide()
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   139
			.data( "menu" );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   140
		if ( $.fn.bgiframe ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   141
			 this.menu.element.bgiframe();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   142
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   143
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   144
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   145
	destroy: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   146
		this.element
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   147
			.removeClass( "ui-autocomplete-input" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   148
			.removeAttr( "autocomplete" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   149
			.removeAttr( "role" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   150
			.removeAttr( "aria-autocomplete" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   151
			.removeAttr( "aria-haspopup" );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   152
		this.menu.element.remove();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   153
		$.Widget.prototype.destroy.call( this );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   154
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   155
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   156
	_setOption: function( key ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   157
		$.Widget.prototype._setOption.apply( this, arguments );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   158
		if ( key === "source" ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   159
			this._initSource();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   160
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   161
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   162
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   163
	_initSource: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   164
		var array,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   165
			url;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   166
		if ( $.isArray(this.options.source) ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   167
			array = this.options.source;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   168
			this.source = function( request, response ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   169
				response( $.ui.autocomplete.filter(array, request.term) );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   170
			};
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   171
		} else if ( typeof this.options.source === "string" ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   172
			url = this.options.source;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   173
			this.source = function( request, response ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   174
				$.getJSON( url, request, response );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   175
			};
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   176
		} else {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   177
			this.source = this.options.source;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   178
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   179
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   180
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   181
	search: function( value, event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   182
		value = value != null ? value : this.element.val();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   183
		if ( value.length < this.options.minLength ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   184
			return this.close( event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   185
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   186
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   187
		clearTimeout( this.closing );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   188
		if ( this._trigger("search") === false ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   189
			return;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   190
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   191
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   192
		return this._search( value );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   193
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   194
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   195
	_search: function( value ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   196
		this.term = this.element
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   197
			.addClass( "ui-autocomplete-loading" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   198
			// always save the actual value, not the one passed as an argument
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   199
			.val();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   200
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   201
		this.source( { term: value }, this.response );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   202
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   203
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   204
	_response: function( content ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   205
		if ( content.length ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   206
			content = this._normalize( content );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   207
			this._suggest( content );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   208
			this._trigger( "open" );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   209
		} else {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   210
			this.close();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   211
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   212
		this.element.removeClass( "ui-autocomplete-loading" );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   213
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   214
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   215
	close: function( event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   216
		clearTimeout( this.closing );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   217
		if ( this.menu.element.is(":visible") ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   218
			this._trigger( "close", event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   219
			this.menu.element.hide();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   220
			this.menu.deactivate();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   221
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   222
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   223
	
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   224
	_change: function( event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   225
		if ( this.previous !== this.element.val() ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   226
			this._trigger( "change", event, { item: this.selectedItem } );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   227
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   228
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   229
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   230
	_normalize: function( items ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   231
		// assume all items have the right format when the first item is complete
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   232
		if ( items.length && items[0].label && items[0].value ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   233
			return items;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   234
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   235
		return $.map( items, function(item) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   236
			if ( typeof item === "string" ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   237
				return {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   238
					label: item,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   239
					value: item
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   240
				};
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   241
			}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   242
			return $.extend({
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   243
				label: item.label || item.value,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   244
				value: item.value || item.label
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   245
			}, item );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   246
		});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   247
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   248
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   249
	_suggest: function( items ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   250
		var ul = this.menu.element
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   251
				.empty()
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   252
				.zIndex( this.element.zIndex() + 1 ),
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   253
			menuWidth,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   254
			textWidth;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   255
		this._renderMenu( ul, items );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   256
		// TODO refresh should check if the active item is still in the dom, removing the need for a manual deactivate
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   257
		this.menu.deactivate();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   258
		this.menu.refresh();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   259
		this.menu.element.show().position({
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   260
			my: "left top",
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   261
			at: "left bottom",
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   262
			of: this.element,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   263
			collision: "none"
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   264
		});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   265
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   266
		menuWidth = ul.width( "" ).width();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   267
		textWidth = this.element.width();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   268
		ul.width( Math.max( menuWidth, textWidth ) );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   269
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   270
	
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   271
	_renderMenu: function( ul, items ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   272
		var self = this;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   273
		$.each( items, function( index, item ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   274
			self._renderItem( ul, item );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   275
		});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   276
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   277
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   278
	_renderItem: function( ul, item) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   279
		return $( "<li></li>" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   280
			.data( "item.autocomplete", item )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   281
			.append( "<a>" + item.label + "</a>" )
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   282
			.appendTo( ul );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   283
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   284
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   285
	_move: function( direction, event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   286
		if ( !this.menu.element.is(":visible") ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   287
			this.search( null, event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   288
			return;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   289
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   290
		if ( this.menu.first() && /^previous/.test(direction) ||
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   291
				this.menu.last() && /^next/.test(direction) ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   292
			this.element.val( this.term );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   293
			this.menu.deactivate();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   294
			return;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   295
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   296
		this.menu[ direction ]( event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   297
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   298
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   299
	widget: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   300
		return this.menu.element;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   301
	}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   302
});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   303
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   304
$.extend( $.ui.autocomplete, {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   305
	escapeRegex: function( value ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   306
		return value.replace( /([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1" );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   307
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   308
	filter: function(array, term) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   309
		var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   310
		return $.grep( array, function(value) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   311
			return matcher.test( value.label || value.value || value );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   312
		});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   313
	}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   314
});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   315
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   316
}( jQuery ));
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   317
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   318
/*
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   319
 * jQuery UI Menu (not officially released)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   320
 * 
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   321
 * This widget isn't yet finished and the API is subject to change. We plan to finish
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   322
 * it for the next release. You're welcome to give it a try anyway and give us feedback,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   323
 * as long as you're okay with migrating your code later on. We can help with that, too.
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   324
 *
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   325
 * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   326
 * Dual licensed under the MIT (MIT-LICENSE.txt)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   327
 * and GPL (GPL-LICENSE.txt) licenses.
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   328
 *
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   329
 * http://docs.jquery.com/UI/Menu
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   330
 *
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   331
 * Depends:
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   332
 *	jquery.ui.core.js
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   333
 *  jquery.ui.widget.js
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   334
 */
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   335
(function($) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   336
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   337
$.widget("ui.menu", {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   338
	_create: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   339
		var self = this;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   340
		this.element
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   341
			.addClass("ui-menu ui-widget ui-widget-content ui-corner-all")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   342
			.attr({
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   343
				role: "listbox",
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   344
				"aria-activedescendant": "ui-active-menuitem"
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   345
			})
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   346
			.click(function( event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   347
				if ( !$( event.target ).closest( ".ui-menu-item a" ).length ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   348
					return;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   349
				}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   350
				// temporary
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   351
				event.preventDefault();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   352
				self.select( event );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   353
			});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   354
		this.refresh();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   355
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   356
	
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   357
	refresh: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   358
		var self = this;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   359
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   360
		// don't refresh list items that are already adapted
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   361
		var items = this.element.children("li:not(.ui-menu-item):has(a)")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   362
			.addClass("ui-menu-item")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   363
			.attr("role", "menuitem");
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   364
		
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   365
		items.children("a")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   366
			.addClass("ui-corner-all")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   367
			.attr("tabindex", -1)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   368
			// mouseenter doesn't work with event delegation
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   369
			.mouseenter(function( event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   370
				self.activate( event, $(this).parent() );
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   371
			})
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   372
			.mouseleave(function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   373
				self.deactivate();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   374
			});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   375
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   376
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   377
	activate: function( event, item ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   378
		this.deactivate();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   379
		if (this.hasScroll()) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   380
			var offset = item.offset().top - this.element.offset().top,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   381
				scroll = this.element.attr("scrollTop"),
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   382
				elementHeight = this.element.height();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   383
			if (offset < 0) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   384
				this.element.attr("scrollTop", scroll + offset);
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   385
			} else if (offset > elementHeight) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   386
				this.element.attr("scrollTop", scroll + offset - elementHeight + item.height());
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   387
			}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   388
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   389
		this.active = item.eq(0)
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   390
			.children("a")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   391
				.addClass("ui-state-hover")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   392
				.attr("id", "ui-active-menuitem")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   393
			.end();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   394
		this._trigger("focus", event, { item: item });
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   395
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   396
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   397
	deactivate: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   398
		if (!this.active) { return; }
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   399
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   400
		this.active.children("a")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   401
			.removeClass("ui-state-hover")
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   402
			.removeAttr("id");
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   403
		this._trigger("blur");
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   404
		this.active = null;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   405
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   406
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   407
	next: function(event) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   408
		this.move("next", ".ui-menu-item:first", event);
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   409
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   410
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   411
	previous: function(event) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   412
		this.move("prev", ".ui-menu-item:last", event);
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   413
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   414
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   415
	first: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   416
		return this.active && !this.active.prev().length;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   417
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   418
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   419
	last: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   420
		return this.active && !this.active.next().length;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   421
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   422
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   423
	move: function(direction, edge, event) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   424
		if (!this.active) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   425
			this.activate(event, this.element.children(edge));
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   426
			return;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   427
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   428
		var next = this.active[direction + "All"](".ui-menu-item").eq(0);
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   429
		if (next.length) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   430
			this.activate(event, next);
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   431
		} else {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   432
			this.activate(event, this.element.children(edge));
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   433
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   434
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   435
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   436
	// TODO merge with previousPage
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   437
	nextPage: function(event) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   438
		if (this.hasScroll()) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   439
			// TODO merge with no-scroll-else
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   440
			if (!this.active || this.last()) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   441
				this.activate(event, this.element.children(":first"));
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   442
				return;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   443
			}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   444
			var base = this.active.offset().top,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   445
				height = this.element.height(),
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   446
				result = this.element.children("li").filter(function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   447
					var close = $(this).offset().top - base - height + $(this).height();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   448
					// TODO improve approximation
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   449
					return close < 10 && close > -10;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   450
				});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   451
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   452
			// TODO try to catch this earlier when scrollTop indicates the last page anyway
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   453
			if (!result.length) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   454
				result = this.element.children(":last");
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   455
			}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   456
			this.activate(event, result);
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   457
		} else {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   458
			this.activate(event, this.element.children(!this.active || this.last() ? ":first" : ":last"));
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   459
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   460
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   461
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   462
	// TODO merge with nextPage
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   463
	previousPage: function(event) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   464
		if (this.hasScroll()) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   465
			// TODO merge with no-scroll-else
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   466
			if (!this.active || this.first()) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   467
				this.activate(event, this.element.children(":last"));
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   468
				return;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   469
			}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   470
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   471
			var base = this.active.offset().top,
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   472
				height = this.element.height();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   473
				result = this.element.children("li").filter(function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   474
					var close = $(this).offset().top - base + height - $(this).height();
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   475
					// TODO improve approximation
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   476
					return close < 10 && close > -10;
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   477
				});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   478
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   479
			// TODO try to catch this earlier when scrollTop indicates the last page anyway
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   480
			if (!result.length) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   481
				result = this.element.children(":first");
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   482
			}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   483
			this.activate(event, result);
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   484
		} else {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   485
			this.activate(event, this.element.children(!this.active || this.first() ? ":last" : ":first"));
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   486
		}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   487
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   488
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   489
	hasScroll: function() {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   490
		return this.element.height() < this.element.attr("scrollHeight");
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   491
	},
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   492
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   493
	select: function( event ) {
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   494
		this._trigger("selected", event, { item: this.active });
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   495
	}
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   496
});
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   497
436d4791d7ac premier version du player test de commit
hurons
parents:
diff changeset
   498
}(jQuery));