/*
* 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:true,
		prependPagination:false,
		paginationClass:"pagination",
		currentClass:"current",
		fadeSpeed:350,
		fadeEasing:"",
		slideSpeed:350,
		slideEasing:"",
		start:1,
		effect:"slide",
		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);
