/*
 * jQuery xFade 1.0
 * http://labs.firmanw.com/jquery-xfade
 * Copyright (c) 2011 Firman Wandayandi
 * Dual licensed under the MIT and GPL licenses.
 */
(
	function(c)
	{
		var b=[];
		var a=[];
		c.fn.xfade=function(d)
			{
				return this.each(
								function(e)
									{
										a.push(c(this));
										b[e]=
											{
											 container:null,
											 settings:{effect:"fade",speed:3000,order:"random-start",timeout:5000,height:"auto",containerClass:false,children:false,onBefore:false},
											 timeout:200,
											 current:1,
											 last:0,
											 init:function(f,g)
														{
														var j=this;
														j.container=f;
														if(g)
															{
															c.extend(j.settings,g)
															}
														var k=j.items();
														if(k.length>1)
															{
															c(j.container).css
															(
																{
																	position:"relative",height:j.settings.height
																}
															);
														if(j.settings.containerClass)
															{
																c(j.container).addClass(j.settings.containerClass)
															}
														for(var h=0;h<k.length;h++)
															{
																c(k[h]).css("z-index",String(k.length-h)).css("position","absolute").hide()
															}
														if(j.settings.order=="sequence")
															{
																j.onBefore(0,null,c(k[0]),null,k);
																j.timeout=setTimeout(function(){j.next()},j.settings.timeout);
																c(k[j.last]).show()
															}
														else
															{
																if(j.settings.order=="random")
																	{
																		j.last=Math.floor(Math.random()*k.length);
																		do{j.current=Math.floor(Math.random()*k.length)
																	}
																while(j.last==j.current);
																	j.onBefore(j.current,j.last,c(k[j.current]),c(k[j.last]),k);
																	j.timeout=setTimeout(function(){j.next()},j.settings.timeout);
																	c(k[j.current]).show()}else{if(j.settings.order=="random-start"){j.settings.order="sequence";
																	j.current=Math.floor(Math.random()*k.length);
																	j.onBefore(j.current,j.last,c(k[j.current]),c(k[j.last]),k);
																	j.timeout=setTimeout(function(){j.next()},j.settings.timeout);
																	c(k[j.current]).show()}else{alert("xfade:order must either be 'sequence', 'random' or 'random-start'")}}}}},items:function(){var f=this;if(f.settings.children){return c(f.container).children()}else{return c(f.container).children(f.settings.children)}},next:function(){var f=this;var g=f.items();f.onBefore(f.current,f.last,c(g[f.current]),c(g[f.last]),g);if(f.settings.effect=="slide"){c(g[f.last]).slideUp(f.settings.speed);c(g[f.current]).slideDown(f.settings.speed)}else{if(f.settings.effect=="fade"){c(g[f.last]).fadeOut(f.settings.speed);c(g[f.current]).fadeIn(f.settings.speed,function(){removeFilter(c(this)[0])})}else{alert("xfade:effect must either be 'slide' or 'fade'")}}if(f.settings.order=="sequence"){if((f.current+1)<g.length){f.current+=1;f.last=f.current-1}else{f.current=0;f.last=g.length-1}}else{if(f.settings.order=="random"){f.last=f.current;while(f.current==f.last){f.current=Math.floor(Math.random()*g.length)}}else{alert("xfade:order must either be 'sequence', 'random' or 'random-start'")}}f.timeout=setTimeout((function(){f.next(g)}),f.settings.timeout)},to:function(f){var g=this;if(typeof(f)=="object"&&f.jquery){if(f.length==0){return false}c.each(g.items(),function(h){if(c(this)[0]==f[0]){f=h}})}c.each(g.items(),function(){if(c(this).css("display")!="none"){c(this).fadeOut()}});clearTimeout(g.timeout);g.current=f;g.next()},refresh:function(){var f=this;var g=f.items();c.each(g,function(h){c(this).css({"z-index":String(g.length-h),position:"absolute"});if(h!=f.last){c(this).css({display:"none"})}})},onBefore:function(k,i,f,g,j){var h=this;if(typeof(h.settings.onBefore)=="function"){h.settings.onBefore(k,i,f,g,j)}}};b[e].init(this,d)})};c.xfadeInstance=function(d){var e=0;do{if(c(a[e]).get(0)==c(d).get(0)){return b[e]}e++}while(e<a.length-1);return false};c.fn.xfadeNext=function(){var d=c.xfadeInstance(this);if(d){d.next()}};c.fn.xfadeTo=function(e){var d=c.xfadeInstance(this);if(d){d.to(e)}};c.fn.xfadeRefresh=function(e){var d=c.xfadeInstance(this);if(d){d.refresh(e)}}})(jQuery);function removeFilter(a){if(a.style.removeAttribute){a.style.removeAttribute("filter")}};
