/*
* jQuery Advanced Effect Queues
*/

(function(jQuery){var fxQueue=function(){return{isFxQueue:true,paused:false,pause:function(){if(this[0]){this.paused=true;var playing=(this[0].isScope)?this[0]:this[0].elem;playing.stop()}},stop:function(){if(this[0]){this.paused=false;var playing=(this[0].isScope)?this[0]:this[0].elem;playing.stop();this.length=0}},start:function(){if(this[0]){this.paused=false;this[0]()}},getScope:function(scopeName){for(var i=0;i<this.length;i++){if(this[i].isScope&&this[i].called==scopeName)return this[i]}return false}}};var fxScope=function(scopeName){var newScope=function(){for(var i=0;i<newScope.items.length;i++){newScope.items[i]()}};newScope.called=scopeName;newScope.isScope=true;newScope.finishedItems=0;newScope.stop=function(){for(var i=0;i<newScope.items.length;i++){newScope.items[i].elem.stop()}};newScope.items=[];return newScope};var animate=jQuery.fn.animate;jQuery.fn.animate=function(props,speed,easing,callback){if(this.length<1)return this;if(typeof speed=="object"&&speed.queue===false){return animate.apply(this,arguments)}else{var options=(typeof speed=="object")?speed:jQuery.speed(speed,easing,callback);var opts=jQuery.extend({queue:"fx",position:"end",limit:-1,preDelay:0,postDelay:0,complete:function(){}},options);var elem=this;var queueName=opts.queue;var root=opts.queue!="fx"?document:this;var queue=jQuery(root).queue(opts.queue);if(!queue.isFxQueue){jQuery.extend(queue,fxQueue())}var complete=opts.complete;opts.complete=function(){if(elem[0]==this){var isScope=(queue[0]&&queue[0].isScope);if(isScope){var queueItems=queue[0].items;for(var i=0;i<queueItems.length;i++){if(this==queueItems[i].elem[0]&&!queueItems[i].finished){queueItems[i].finished=true;queue[0].finishedItems++}}}setTimeout(function(){if(!isScope||(queue[0]&&queue[0].finishedItems==queueItems.length)){jQuery(root).dequeue(queueName)}},opts.postDelay)}if(jQuery.isFunction(complete))return complete.apply(this,arguments)};opts.queue=false;var fn=function(){setTimeout(function(){jQuery(fn.elem).animate(props,opts)},opts.preDelay)};fn.elem=this;var scope=queue.getScope(opts.scope);if(scope){scope.items.push(fn);if(queue[0].isScope&&queue[0].called==opts.scope)fn();return this}if(opts.limit<0||queue.length<opts.limit){var add=null;if(opts.scope){add=fxScope(opts.scope);add.items.push(fn)}else{add=fn}if(opts.position=="end"){queue.push(add)}else if(opts.position=="front"){queue.splice(1,0,add)}if(queue.length==1)queue[0]()}return this}};jQuery.fn.stop=function(clearQueue,gotoEnd,playNext){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1)}});if(playNext)this.dequeue();return this};jQuery.speed=function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||function(){}&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])||400;return opt};jQuery.fxqueue=function(queueName){return jQuery(document).queue(queueName)}})(jQuery);
