| (function( jQuery ) { |
| |
| jQuery.extend({ |
| queue: function( elem, type, data ) { |
| if ( !elem ) { |
| return; |
| } |
| |
| type = (type || "fx") + "queue"; |
| var q = jQuery._data( elem, type ); |
| |
| // Speed up dequeue by getting out quickly if this is just a lookup |
| if ( !data ) { |
| return q || []; |
| } |
| |
| if ( !q || jQuery.isArray(data) ) { |
| q = jQuery._data( elem, type, jQuery.makeArray(data) ); |
| |
| } else { |
| q.push( data ); |
| } |
| |
| return q; |
| }, |
| |
| dequeue: function( elem, type ) { |
| type = type || "fx"; |
| |
| var queue = jQuery.queue( elem, type ), |
| fn = queue.shift(); |
| |
| // If the fx queue is dequeued, always remove the progress sentinel |
| if ( fn === "inprogress" ) { |
| fn = queue.shift(); |
| } |
| |
| if ( fn ) { |
| // Add a progress sentinel to prevent the fx queue from being |
| // automatically dequeued |
| if ( type === "fx" ) { |
| queue.unshift("inprogress"); |
| } |
| |
| fn.call(elem, function() { |
| jQuery.dequeue(elem, type); |
| }); |
| } |
| |
| if ( !queue.length ) { |
| jQuery.removeData( elem, type + "queue", true ); |
| } |
| } |
| }); |
| |
| jQuery.fn.extend({ |
| queue: function( type, data ) { |
| if ( typeof type !== "string" ) { |
| data = type; |
| type = "fx"; |
| } |
| |
| if ( data === undefined ) { |
| return jQuery.queue( this[0], type ); |
| } |
| return this.each(function( i ) { |
| var queue = jQuery.queue( this, type, data ); |
| |
| if ( type === "fx" && queue[0] !== "inprogress" ) { |
| jQuery.dequeue( this, type ); |
| } |
| }); |
| }, |
| dequeue: function( type ) { |
| return this.each(function() { |
| jQuery.dequeue( this, type ); |
| }); |
| }, |
| |
| // Based off of the plugin by Clint Helfers, with permission. |
| // http://blindsignals.com/index.php/2009/07/jquery-delay/ |
| delay: function( time, type ) { |
| time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; |
| type = type || "fx"; |
| |
| return this.queue( type, function() { |
| var elem = this; |
| setTimeout(function() { |
| jQuery.dequeue( elem, type ); |
| }, time ); |
| }); |
| }, |
| |
| clearQueue: function( type ) { |
| return this.queue( type || "fx", [] ); |
| } |
| }); |
| |
| })( jQuery ); |