
(function($){jQuery.fn.jomino=function(options){var defaults={interval:"150",duration:"100",easing:'linear',reverse:false,random:false,autostart:false,onAnimate:null,onComplete:null};var opts=jQuery.extend({},defaults,options);var elems=jQuery.makeArray(this);var elemsCollection=new Array;var reverse=opts.reverse;var intervalTimer=null;elems=opts.reverse?elems.reverse():elems;elems=opts.random?elems.sort(function(){return 0.5-Math.random()}):elems;jQuery.jomino={forward:function(){reverse=false;if(!intervalTimer){intervalTimer=fireElement();}},rewind:function(){if(!reverse){jQuery.jomino.stop();reverse=true;intervalTimer=fireElement();}},stop:function(){clearTimeout(intervalTimer);intervalTimer=null;reverse=false;}};function fireElement(){var elemsSize=reverse?elemsCollection.length:elems.length;var nextElem=null;if(elemsSize>0){if(!reverse){nextElem=elems.shift();elemsCollection.push(nextElem);}else{nextElem=elemsCollection.pop();elems.unshift(nextElem);}
jQuery.fn.jomino.animateElement(nextElem,reverse,opts.duration,opts.easing);setTimeout(function(){fireCallback(opts,"onAnimate",nextElem);},opts.duration);intervalTimer=setTimeout(function(){fireElement();},opts.interval);}else if(elemsSize==0){setTimeout(function(){fireCallback(opts,"onComplete",nextElem);},opts.duration);reverse=false;intervalTimer=null;}}
if(opts.autostart)
jQuery.jomino.forward();};jQuery.fn.jomino.animateElement=function(elem,reverse,duration,easemethod){reverse?jQuery(elem).fadeOut(duration,easemethod):jQuery(elem).fadeIn(duration,easemethod);};function fireCallback(opts,name,obj){var fn=opts[name];if($.isFunction(fn)){try{return fn.call(obj);}
catch(error){log("jomino."+name+": ",error);return false;}}
return true;}
function log($txt,$obj){if(window.console&&window.console.log)
window.console.log($txt,$obj);};})(jQuery);
