/*
 * 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+'"></a>');
				A("."+B.prev,V).after('<a href="#" class="'+B.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);
