f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric LuceYUI.add('queue-promote', function(Y) {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce/**
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * Adds methods promote, remove, and indexOf to Queue instances.
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce *
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * @module queue-promote
841179549b6433e782c164a562eb3422f603533dAndreas Gustafsson * @for Queue
fcc9f7f86c2fa2ceb8a5c16dc934fea7fa6887f2Andreas Gustafsson */
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
fcc9f7f86c2fa2ceb8a5c16dc934fea7fa6887f2Andreas GustafssonY.mix(Y.Queue.prototype, {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce /**
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * Returns the current index in the queue of the specified item
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce *
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * @method indexOf
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * @param needle {MIXED} the item to search for
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * @return {Number} the index of the item or -1 if not found
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce */
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce indexOf : function (callback) {
fcc9f7f86c2fa2ceb8a5c16dc934fea7fa6887f2Andreas Gustafsson return Y.Array.indexOf(this._q, callback);
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce },
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce /**
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * Moves the referenced item to the head of the queue
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce *
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * @method promote
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * @param item {MIXED} an item in the queue
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce */
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce promote : function (callback) {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce var index = this.indexOf(callback);
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce if (index > -1) {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce this._q.unshift(this._q.splice(index,1)[0]);
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce }
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce },
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
fcc9f7f86c2fa2ceb8a5c16dc934fea7fa6887f2Andreas Gustafsson /**
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * Removes the referenced item from the queue
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce *
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * @method remove
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce * @param item {MIXED} an item in the queue
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce */
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce remove : function (callback) {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce var index = this.indexOf(callback);
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce if (index > -1) {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce this._q.splice(index,1);
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce }
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce }
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce});
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce}, '@VERSION@' ,{requires:['yui-base']});
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce