/*
* Slides, A Slideshow Plugin for jQuery
* Intructions: http://slidesjs.com
* By: Nathan Searles, http://nathansearles.com
* Version: 1.1.8
* Updated: June 1st, 2011
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function(A)
{
	A.fn.slides=function(B)
	{
		B=A.extend({},A.fn.slides.option,B);
		return this.each(function()
		{
			A("."+B.container,A(this)).children().wrapAll('<div class="slides_control"/>');
			
			var V=A(this),
			J=A(".slides_control",V),
			Z=J.children().size(),Q=J.children().outerWidth(),
			M=J.children().outerHeight(),
			D=B.start-1,
			L=B.effect.indexOf(",")<0?B.effect:B.effect.replace(" ","").split(",")[0],
			S=B.effect.indexOf(",")<0?L:B.effect.replace(" ","").split(",")[1],
			O=0,N=0,C=0,P=0,U,H,I,X,W,T,K,F;
			
			function E(c,b,a)
			{
				if(!H&&U)
				{
					H=true;
					B.animationStart(P+1);
					switch(c)
					{
						case"next":N=P;O=P+1;
							O=Z===O?0:O;X=Q*2;c=-Q*2;P=O;
							break;
						case"prev":N=P;O=P-1;
							O=O===-1?Z-1:O;X=0;c=0;P=O;
							break;
						case"pagination":O=parseInt(a,10);
							N=A("."+B.paginationClass+" li."+B.currentClass+" a",V).attr("href").match("[^#/]+$");
							if(O>N)
							{
								X=Q*2;c=-Q*2;
							}else
							{
								X=0;c=0;
							}
							P=O;
						break;
					}
					if(b==="fade")
					{
						if(B.crossfade)
						{
							J.children(":eq("+O+")",V).css({zIndex:10}).fadeIn(B.fadeSpeed,B.fadeEasing,
							function()
							{
								if(B.autoHeight)
								{
									J.animate({height:J.children(":eq("+O+")",V).outerHeight()},B.autoHeightSpeed,
									function()
									{
										J.children(":eq("+N+")",V).css({display:"none",zIndex:0});J.children(":eq("+O+")",V).css({zIndex:0});
										B.animationComplete(O+1);H=false;
									});
								}
								else
								{
									J.children(":eq("+N+")",V).css({display:"none",zIndex:0});
									J.children(":eq("+O+")",V).css({zIndex:0});
									B.animationComplete(O+1);
									H=false;
								}
							});
						}
						else
						{
							J.children(":eq("+N+")",V).fadeOut(B.fadeSpeed,B.fadeEasing,
							function()
							{
								if(B.autoHeight)
								{
									J.animate(
									{
										height:J.children(":eq("+O+")",V).outerHeight()
									},
									B.autoHeightSpeed,
									function()
									{
										J.children(":eq("+O+")",V).fadeIn(B.fadeSpeed,B.fadeEasing);
									}
									);
								}
								else
								{
									J.children(":eq("+O+")",V).fadeIn(B.fadeSpeed,B.fadeEasing,
									function()
									{
										if(A.browser.msie)
										{
											A(this).get(0).style.removeAttribute("filter");
										}
									}
									);
								}
								B.animationComplete(O+1);
								H=false;
							});
						}
					}
					else
					{
						J.children(":eq("+O+")").css({left:X,display:"block"});
						if(B.autoHeight)
						{
							J.animate({left:c,height:J.children(":eq("+O+")").outerHeight()},
							B.slideSpeed,B.slideEasing,
							function()
							{
								J.css({left:-Q});
								J.children(":eq("+O+")").css({left:Q,zIndex:5});
								J.children(":eq("+N+")").css({left:Q,display:"none",zIndex:0});
								B.animationComplete(O+1);H=false;
							});
						}
						else
						{
							J.animate({left:c},B.slideSpeed,B.slideEasing,
							function()
							{
								J.css({left:-Q});
								J.children(":eq("+O+")").css({left:Q,zIndex:5});J.children(":eq("+N+")").css({left:Q,display:"none",zIndex:0});
								B.animationComplete(O+1);
								H=false;
							}
							);
						}
					}
					if(B.pagination)
					{
						A("."+B.paginationClass+" li."+B.currentClass,V).removeClass(B.currentClass);
						A("."+B.paginationClass+" li:eq("+O+")",V).addClass(B.currentClass);
					}
				}
			}
			function R()
			{
				clearInterval(V.data("interval"));
			}
			function G()
			{
				if(B.pause)
				{
					clearTimeout(V.data("pause"));
					clearInterval(V.data("interval"));
					K=setTimeout(function()
					{
						clearTimeout(V.data("pause"));
						F=setInterval(function(){E("next",L);},B.play);
							V.data("interval",F);
					},
					B.pause);
					V.data("pause",K);
				}
				else
				{
					R();
				}
			}
			if(Z<2)
			{
				return ;
			}
			if(D<0)
			{
				D=0;
			}
			if(D>Z)
			{
				D=Z-1;
			}
			if(B.start)
			{
				P=D;
			}
			if(B.randomize)
			{
				J.randomize();
			}
			A("."+B.container,V).css({overflow:"hidden",position:"relative"});
			J.children().css({position:"absolute",top:0,left:J.children().outerWidth(),zIndex:0,display:"none"});
			J.css({position:"relative",width:(Q*3),height:M,left:-Q});A("."+B.container,V).css({display:"block"});
			if(B.autoHeight)
			{
				J.children().css({height:"auto"});
				J.animate({height:J.children(":eq("+D+")").outerHeight()},B.autoHeightSpeed);
			}
			if(B.preload&&J.find("img:eq("+D+")").length)
			{
				A("."+B.container,V).css({background:"url("+B.preloadImage+") no-repeat 50% 50%"});
				var Y=J.find("img:eq("+D+")").attr("src")+"?"+(new Date()).getTime();
				if(A("img",V).parent().attr("class")!="slides_control")
				{
					T=J.children(":eq(0)")[0].tagName.toLowerCase();
				}
				else
				{
					T=J.find("img:eq("+D+")");
				}
					J.find("img:eq("+D+")").attr("src",Y).load(function()
				{
					J.find(T+":eq("+D+")").fadeIn(B.fadeSpeed,B.fadeEasing,
					function()
					{
						A(this).css({zIndex:5});
						A("."+B.container,V).css({background:""});
						U=true;
						B.slidesLoaded();
					});
				});
			}
			else
			{
				J.children(":eq("+D+")").fadeIn(B.fadeSpeed,B.fadeEasing,
				function()
				{
					U=true;
					B.slidesLoaded();
				}
				);
			}
			if(B.bigTarget)
			{
				J.children().css({cursor:"pointer"});
				J.children().click(function()
				{
					E("next",L);
					return false;
				});
			}
			if(B.hoverPause&&B.play)
			{
				J.bind("mouseover",function()
				{
					R();
				});
				J.bind("mouseleave",function()
				{
					G();
				});
			}
			if(B.generateNextPrev)
			{
				A("."+B.container,V).after('<a href="#" class="'+B.prev+'">Prev</a>');
				A("."+B.prev,V).after('<a href="#" class="'+B.next+'">Next</a>');
			}
			A("."+B.next,V).click(function(a)
			{
				a.preventDefault();
				if(B.play)
				{
					G();
				}
				E("next",L);
			});
			A("."+B.prev,V).click(function(a)
			{
				a.preventDefault();if(B.play)
				{
					G();
				}
				E("prev",L);
			});
			if(B.generatePagination)
			{
				if(B.prependPagination)
				{
					V.prepend("<ul class="+B.paginationClass+"></ul>");
				}
				else
				{
					V.append("<ul class="+B.paginationClass+"></ul>");
				}
				J.children().each(function()
				{
					A("."+B.paginationClass,V).append('<li><a href="#'+C+'">'+(C+1)+"</a></li>");C++;
				});
			}
			else
			{
				A("."+B.paginationClass+" li a",V).each(function()
				{
					A(this).attr("href","#"+C);
					C++;
				});
			}
			A("."+B.paginationClass+" li:eq("+D+")",V).addClass(B.currentClass);
			A("."+B.paginationClass+" li a",V).click(function()
			{
				if(B.play)
				{
					G();
				}
				I=A(this).attr("href").match("[^#/]+$");
				if(P!=I)
				{
					E("pagination",S,I);
				}
				return false;
			});
			A("a.link",V).click(function()
			{
				if(B.play)
				{
					G();
				}
				I=A(this).attr("href").match("[^#/]+$")-1;
				if(P!=I)
				{
					E("pagination",S,I);
				}
				return false;
			});
			if(B.play)
			{
				F=setInterval(function()
				{
					E("next",L);
				},
				B.play);
				V.data("interval",F);
			}
		});
	};
	A.fn.slides.option=
	{
		preload:false,
		preloadImage:"/img/loading.gif",
		container:"slides_container",
		generateNextPrev:false,
		next:"next",
		prev:"prev",
		pagination:true,
		generatePagination:false,
		prependPagination:false,
		paginationClass:"pagination",
		currentClass:"current",
		fadeSpeed:750,
		fadeEasing:"",
		slideSpeed:750,
		slideEasing:"",
		start:1,
		effect:"slice",
		crossfade:false,
		randomize:false,
		play:0,
		pause:0,
		hoverPause:false,
		autoHeight:false,
		autoHeightSpeed:350,
		bigTarget:false,
		animationStart:function(){},
		animationComplete:function(){},
		slidesLoaded:function(){}
	};
	A.fn.randomize=function(C)
	{
		function B()
		{
			return(Math.round(Math.random())-0.5);
		}
		return(A(this).each(function()
		{
			var F=A(this);
			var E=F.children();
			var D=E.length;
			if(D>1)
			{
				E.hide();
				var G=[];
				for(i=0;i<D;i++)
				{
					G[G.length]=i;
				}
				G=G.sort(B);
				A.each(G,function(I,H)
				{
					var K=E.eq(H);
					var J=K.clone(true);
					J.show().appendTo(F);
					if(C!==undefined)
					{
						C(K,J);
					}
					K.remove();
				});
			}
		}));
	};
})
(jQuery);
