/*
 * 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);

