
(function($)
{$.fn.EffectChain=function(options)
{var opts=$.extend({},$.fn.EffectChain.defaults,options);var $duration=opts.duration*1000;var $effect=opts.effect;var $onComplete=opts.onComplete;var $onStep=opts.onStep;var $delay=opts.delay*1000;var $order=String(opts.order).toLowerCase();var $animateParams=opts.animateParams;var $fadeToOpacity=opts.fadeToOpacity;var $aItems=new Array();var $counter=0;var $nItems=this.length;var $nInterval=0;this.each(function(){var _this=$(this);$aItems.push(_this);});switch($order)
{case"reverse":$aItems.reverse();break;case"random":$aItems=ArrayShuffler($aItems);break;}
startNextStep();function startNextStep()
{if($delay){clearInterval($nInterval);}
switch($effect)
{case"animate":if(!$animateParams){return false;}
$aItems[$counter][$effect]($animateParams,$duration,validateNextStep);break;case"fadeTo":$aItems[$counter][$effect]($duration,$fadeToOpacity,validateNextStep);break;default:$aItems[$counter][$effect]($duration,validateNextStep);break;}};function validateNextStep()
{if($onStep){$onStep();}
$counter++;if($counter<$nItems)
{if($delay)
{$nInterval=setInterval(startNextStep,$delay);}
else
{startNextStep();}}
else
{if($onComplete){$onComplete();}
$aItems=null;}};function ArrayShuffler(v){for(var j,x,i=v.length;i;j=parseInt(Math.random()*i),x=v[--i],v[i]=v[j],v[j]=x);return v;};return this;}
$.fn.EffectChain.defaults={duration:1,order:null,effect:"hide",animateParams:null,fadeToOpacity:0.1,delay:0,onStep:null,onComplete:null};})(jQuery);