/*
 * 	loopedSlider 0.5.6 - jQuery plugin
 *	written by Nathan Searles	
 *	http://nathansearles.com/loopedslider/
 *
 *	Copyright (c) 2009 Nathan Searles (http://nathansearles.com/)
 *	Dual licensed under the MIT (MIT-LICENSE.txt)
 *	and GPL (GPL-LICENSE.txt) licenses.
 *
 *	Built for jQuery library
 *	http://jquery.com
 *	Works with jQuery version 1.3+
 *
 */
//if(typeof jQuery!='undefined'){jQuery(function($){$.fn.extend({loopedSlider:function(options){var settings=$.extend({},$.fn.loopedSlider.defaults,options);return this.each(function(){if($.fn.jquery<'1.3.2'){return}var $t=$(this);var o=$.metadata?$.extend({},settings,$t.metadata()):settings;var distance=0;var times=1;var slides=$(o.slides,$t).children().size();var width=$(o.slides,$t).children().outerWidth();var position=0;var active=false;var number=0;var interval=0;var restart=0;var pagination=$("."+o.pagination+" li a",$t);if(o.addPagination&&!$(pagination).length){var buttons=slides;$($t).append("<ul class="+o.pagination+">");$(o.slides,$t).children().each(function(){if(number<buttons){$("."+o.pagination,$t).append("<li><a rel="+(number+1)+" href=\"#\" >"+(number+1)+"</a></li>");number=number+1}else{number=0;return false}$("."+o.pagination+" li a:eq(0)",$t).parent().addClass("active")});pagination=$("."+o.pagination+" li a",$t)}else{$(pagination,$t).each(function(){number=number+1;$(this).attr("rel",number);$(pagination.eq(0),$t).parent().addClass("active")})}if(slides===1){$(o.slides,$t).children().css({position:"absolute",left:position,display:"block"});return}$(o.slides,$t).css({width:(slides*width)});$(o.slides,$t).children().each(function(){$(this).css({position:"absolute",left:position,display:"block"});position=position+width});$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width});if(slides>3){$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width})}if(o.autoHeight){autoHeight(times)}$(".next",$t).click(function(){if(active===false){animate("next",true);if(o.autoStart){if(o.restart){autoStart()}else{clearInterval(sliderIntervalID)}}}return false});$(".previous",$t).click(function(){if(active===false){animate("prev",true);if(o.autoStart){if(o.restart){autoStart()}else{clearInterval(sliderIntervalID)}}}return false});if(o.containerClick){$(o.container,$t).click(function(){if(active===false){animate("next",true);if(o.autoStart){if(o.restart){autoStart()}else{clearInterval(sliderIntervalID)}}}return false})}$(pagination,$t).click(function(){if($(this).parent().hasClass("active")){return false}else{times=$(this).attr("rel");$(pagination,$t).parent().siblings().removeClass("active");$(this).parent().addClass("active");animate("fade",times);if(o.autoStart){if(o.restart){autoStart()}else{clearInterval(sliderIntervalID)}}}return false});if(o.autoStart){sliderIntervalID=setInterval(function(){if(active===false){animate("next",true)}},o.autoStart);function autoStart(){if(o.restart){clearInterval(sliderIntervalID,interval);clearTimeout(restart);restart=setTimeout(function(){interval=setInterval(function(){animate("next",true)},o.autoStart)},o.restart)}else{sliderIntervalID=setInterval(function(){if(active===false){animate("next",true)}},o.autoStart)}}}function current(times){if(times===slides+1){times=1}if(times===0){times=slides}$(pagination,$t).parent().siblings().removeClass("active");$(pagination+"[rel='"+(times)+"']",$t).parent().addClass("active")};function autoHeight(times){if(times===slides+1){times=1}if(times===0){times=slides}var getHeight=$(o.slides,$t).children(":eq("+(times-1)+")",$t).outerHeight();$(o.container,$t).animate({height:getHeight},o.autoHeight)};function animate(dir,clicked){active=true;switch(dir){case"next":times=times+1;distance=(-(times*width-width));current(times);if(o.autoHeight){autoHeight(times)}if(slides<3){if(times===3){$(o.slides,$t).children(":eq(0)").css({left:(slides*width)})}if(times===2){$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:width})}}$(o.slides,$t).animate({left:distance},o.slidespeed,function(){if(times===slides+1){times=1;$(o.slides,$t).css({left:0},function(){$(o.slides,$t).animate({left:distance})});$(o.slides,$t).children(":eq(0)").css({left:0});$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width})}if(times===slides)$(o.slides,$t).children(":eq(0)").css({left:(slides*width)});if(times===slides-1)$(o.slides,$t).children(":eq("+(slides-1)+")").css({left:(slides*width-width)});active=false});break;case"prev":times=times-1;distance=(-(times*width-width));current(times);if(o.autoHeight){autoHeight(times)}if(slides<3){if(times===0){$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:(-width)})}if(times===1){$(o.slides,$t).children(":eq(0)").css({position:"absolute",left:0})}}$(o.slides,$t).animate({left:distance},o.slidespeed,function(){if(times===0){times=slides;$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:(slides*width-width)});$(o.slides,$t).css({left:-(slides*width-width)});$(o.slides,$t).children(":eq(0)").css({left:(slides*width)})}if(times===2)$(o.slides,$t).children(":eq(0)").css({position:"absolute",left:0});if(times===1)$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width});active=false});break;case"fade":times=[times]*1;distance=(-(times*width-width));current(times);if(o.autoHeight){autoHeight(times)}$(o.slides,$t).children().fadeOut(o.fadespeed,function(){$(o.slides,$t).css({left:distance});$(o.slides,$t).children(":eq("+(slides-1)+")").css({left:slides*width-width});$(o.slides,$t).children(":eq(0)").css({left:0});if(times===slides){$(o.slides,$t).children(":eq(0)").css({left:(slides*width)})}if(times===1){$(o.slides,$t).children(":eq("+(slides-1)+")").css({position:"absolute",left:-width})}$(o.slides,$t).children().fadeIn(o.fadespeed);active=false});break;default:break}}})}});$.fn.loopedSlider.defaults={container:".container",slides:".slides",pagination:"pagination",containerClick:true,autoStart:0,restart:0,slidespeed:300,fadespeed:200,autoHeight:0,addPagination:false}})}


/*
* 	loopedSlider 0.5.6 - jQuery plugin
*	written by Nathan Searles	
*	http://nathansearles.com/loopedslider/
*
*	Copyright (c) 2009 Nathan Searles (http://nathansearles.com/)
*	Dual licensed under the MIT (MIT-LICENSE.txt)
*	and GPL (GPL-LICENSE.txt) licenses.
*
*	Built for jQuery library
*	http://jquery.com
*	Compatible with jQuery 1.3.2+
*
*/

/*
*	markup example for $("#loopedSlider").loopedSlider();
*
*	<div id="loopedSlider">	
*		<div class="container">
*			<div class="slides">
*				<div><img src="01.jpg" alt="" /></div>
*				<div><img src="02.jpg" alt="" /></div>
*				<div><img src="03.jpg" alt="" /></div>
*				<div><img src="04.jpg" alt="" /></div>
*			</div>
*		</div>
*		<a href="#" class="previous">previous</a>
*		<a href="#" class="next">next</a>	
*	</div>
*
*/

if (typeof jQuery != 'undefined') {
	jQuery(function($) {
		$.fn.extend({
			loopedSlider: function(options) {
				var settings = $.extend({}, $.fn.loopedSlider.defaults, options);

				return this.each(
					function() {
						if ($.fn.jquery < '1.3.2') { return; }
						var $t = $(this);
						var o = $.metadata ? $.extend({}, settings, $t.metadata()) : settings;

						var distance = 0;
						var times = 1;
						var slides = $(o.slides, $t).children().size();
						var width = $(o.slides, $t).children().outerWidth();
						var position = 0;
						var active = false;
						var number = 0;
						var interval = 0;
						var restart = 0;
						var pagination = $("." + o.pagination + " li a", $t);

						if (o.addPagination && !$(pagination).length) {
							var buttons = slides;
							$($t).append("<ul class=" + o.pagination + ">");
							$(o.slides, $t).children().each(function() {
								if (number < buttons) {
									$("." + o.pagination, $t).append("<li><a rel=" + (number + 1) + " href=\"#\" >" + (number + 1) + "</a></li>");
									number = number + 1;
								} else {
									number = 0;
									return false;
								}
								$("." + o.pagination + " li a:eq(0)", $t).parent().addClass("active");
							});
							pagination = $("." + o.pagination + " li a", $t);
						} else {
							$(pagination, $t).each(function() {
								number = number + 1;
								$(this).attr("rel", number);
								$(pagination.eq(0), $t).parent().addClass("active");
							});
						}

						if (slides === 1) {
							$(o.slides, $t).children().css({ position: "absolute", left: position, display: "block" });
							return;
						}

						$(o.slides, $t).css({ width: (slides * width) });

						$(o.slides, $t).children().each(function() {
							$(this).css({ position: "absolute", left: position, display: "block" });
							position = position + width;
						});

						$(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ position: "absolute", left: -width });

						if (slides > 3) {
							$(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ position: "absolute", left: -width });
						}

						if (o.autoHeight) { autoHeight(times); }

						$(".next", $t).click(function() {
							if (active === false) {
								animate("next", true);
								if (o.autoStart) {
									if (o.restart) { autoStart(); }
									else { clearInterval(sliderIntervalID); }
								}
							} return false;
						});

						$(".previous", $t).click(function() {
							if (active === false) {
								animate("prev", true);
								if (o.autoStart) {
									if (o.restart) { autoStart(); }
									else { clearInterval(sliderIntervalID); }
								}
							} return false;
						});

						if (o.containerClick) {
							$(o.container, $t).click(function() {
								if (active === false) {
									animate("next", true);
									if (o.autoStart) {
										if (o.restart) { autoStart(); }
										else { clearInterval(sliderIntervalID); }
									}
								} return false;
							});
						}

						$(pagination, $t).click(function() {
							if ($(this).parent().hasClass("active")) { return false; }
							else {
								times = $(this).attr("rel");
								$(pagination, $t).parent().siblings().removeClass("active");
								$(this).parent().addClass("active");
								animate("fade", times);
								if (o.autoStart) {
									if (o.restart) { autoStart(); }
									else { clearInterval(sliderIntervalID); }
								}
							} return false;
						});

						if (o.autoStart) {
							sliderIntervalID = setInterval(function() {
								if (active === false) { animate("next", true); }
							}, o.autoStart);
							function autoStart() {
								if (o.restart) {
									clearInterval(sliderIntervalID);
									clearInterval(interval);
									clearTimeout(restart);
									restart = setTimeout(function() {
										interval = setInterval(function() {
											animate("next", true);
										}, o.autoStart);
									}, o.restart);
								} else {
									sliderIntervalID = setInterval(function() {
										if (active === false) { animate("next", true); }
									}, o.autoStart);
								}
							};
						}

						function current(times) {
							if (times === slides + 1) { times = 1; }
							if (times === 0) { times = slides; }
							$(pagination, $t).parent().siblings().removeClass("active");
							$(pagination + "[rel='" + (times) + "']", $t).parent().addClass("active");
						};

						function autoHeight(times) {
							if (times === slides + 1) { times = 1; }
							if (times === 0) { times = slides; }
							var getHeight = $(o.slides, $t).children(":eq(" + (times - 1) + ")", $t).outerHeight();
							$(o.container, $t).animate({ height: getHeight }, o.autoHeight);
						};

						function animate(dir, clicked) {
							active = true;
							switch (dir) {
								case "next":
									times = times + 1;
									distance = (-(times * width - width));
									current(times);
									if (o.autoHeight) { autoHeight(times); }
									if (slides < 3) {
										if (times === 3) { $(o.slides, $t).children(":eq(0)").css({ left: (slides * width) }); }
										if (times === 2) { $(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ position: "absolute", left: width }); }
									}
									$(o.slides, $t).animate({ left: distance }, o.slidespeed, function() {
										if (times === slides + 1) {
											times = 1;
											$(o.slides, $t).css({ left: 0 }, function() { $(o.slides, $t).animate({ left: distance }) });
											$(o.slides, $t).children(":eq(0)").css({ left: 0 });
											$(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ position: "absolute", left: -width });
										}
										if (times === slides) $(o.slides, $t).children(":eq(0)").css({ left: (slides * width) });
										if (times === slides - 1) $(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ left: (slides * width - width) });
										active = false;
									});
									break;
								case "prev":
									times = times - 1;
									distance = (-(times * width - width));
									current(times);
									if (o.autoHeight) { autoHeight(times); }
									if (slides < 3) {
										if (times === 0) { $(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ position: "absolute", left: (-width) }); }
										if (times === 1) { $(o.slides, $t).children(":eq(0)").css({ position: "absolute", left: 0 }); }
									}
									$(o.slides, $t).animate({ left: distance }, o.slidespeed, function() {
										if (times === 0) {
											times = slides;
											$(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ position: "absolute", left: (slides * width - width) });
											$(o.slides, $t).css({ left: -(slides * width - width) });
											$(o.slides, $t).children(":eq(0)").css({ left: (slides * width) });
										}
										if (times === 2) $(o.slides, $t).children(":eq(0)").css({ position: "absolute", left: 0 });
										if (times === 1) $(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ position: "absolute", left: -width });
										active = false;
									});
									break;
								case "fade":
									times = [times] * 1;
									distance = (-(times * width - width));
									current(times);
									if (o.autoHeight) { autoHeight(times); }
									$(o.slides, $t).children().fadeOut(o.fadespeed, function() {
										$(o.slides, $t).css({ left: distance });
										$(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ left: slides * width - width });
										$(o.slides, $t).children(":eq(0)").css({ left: 0 });
										if (times === slides) { $(o.slides, $t).children(":eq(0)").css({ left: (slides * width) }); }
										if (times === 1) { $(o.slides, $t).children(":eq(" + (slides - 1) + ")").css({ position: "absolute", left: -width }); }
										$(o.slides, $t).children().fadeIn(o.fadespeed);
										active = false;
									});
									break;
								default:
									break;
							}
						};
					}
				);
			}
		});
		$.fn.loopedSlider.defaults = {
			container: ".container", //Class/id of main container. You can use "#container" for an id.
			slides: ".slides", //Class/id of slide container. You can use "#slides" for an id.
			pagination: "pagination", //Class name of parent ul for numbered links. Don't add a "." here.
			containerClick: true, //Click slider to goto next slide? true/false
			autoStart: 0, //Set to positive number for true. This number will be the time between transitions.
			restart: 0, //Set to positive number for true. Sets time until autoStart is restarted.
			slidespeed: 300, //Speed of slide animation, 1000 = 1second.
			fadespeed: 200, //Speed of fade animation, 1000 = 1second.
			autoHeight: 0, //Set to positive number for true. This number will be the speed of the animation.
			addPagination: false //Add pagination links based on content? true/false
		};
	});
}
