// document ready
$(function(){
	
	$("#feature").loopedSlider({
		slidespeed: 500,
		autoStart: 5000,
		restart: 5000
	});
	
});





// slideScroll
$.fn.slideScroll = function(){
	return this.click(function(){
		var slidingTarget = $.support.boxModel ? navigator.appName.match(/Opera/) ? "html" : "html,body" : "body";
		var targetPos = $(this.hash).offset().top;
		$(slidingTarget).animate({scrollTop:targetPos},{duration:400,easing:'easeOutQuad',queue:false});
		return false;
	});
};

(function($) {
	


/*
 * 	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+
 *
 */

	$.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);
					var nums = slides;
					
					if(slides <5){
						var addCont = $(o.slides,$t).html();
						$(o.slides,$t).append(addCont);
						slides = $(o.slides,$t).children().size();
					}

					if(o.addPagination && !$(pagination).length){
						var buttons = nums;
						$($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);}
							}
							//$(this).fadeTo("fast", 0).fadeTo("slow",1);
						} return false;
					});

					$(".previous",$t).click(function(){
						if(active===false) {	
							animate("prev",true);
							if(o.autoStart){
								if (o.restart) {autoStart();}
								else {clearInterval(sliderIntervalID);}
							}
							//$(this).fadeTo("fast", 0).fadeTo("slow",1);
						
						} 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");
						if(times>nums){
							times = times-nums;
						};
						$(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);}
								$(o.slides,$t).animate({
										left: -width
									},{
										duration:o.slidespeed,
										easing:o.easing,
										queue:false,
										complete:function(){	
											$(o.slides,$t).css({left:0},function(){$(o.slides,$t).animate({left:distance})});
											var nowCont = times-1;
											var prevCont = nowCont-1;
											var prevCont2 = nowCont-2;
											if(prevCont==-1){
												prevCont = slides-1;
											}
											if(prevCont2==-1){
												prevCont2=slides-1;
											}else if(prevCont2==-2){
												prevCont2 = slides-2;
											}
											var leftWidth = 0;
											for(i=0;i<slides;i++){
												var eqIn = nowCont+i;
												if(eqIn>slides-1){
													eqIn = eqIn-(slides);
												}
											
												$(o.slides,$t).children(":eq("+eqIn+")").css({left:leftWidth});
												leftWidth += width;
											}
											$(o.slides,$t).children(":eq("+prevCont+")").css({left:-width});
											$(o.slides,$t).children(":eq("+prevCont2+")").css({left:-width-width});
											if (times===slides+1) {
												times = 1;
											}
										active = false;
										o.callback();
										}
								});
								break;
							case "prev":
								times = times-1;
								distance = (-(times*width-width));
								current(times);
								if(o.autoHeight){autoHeight(times);}
								$(o.slides,$t).animate({
									left: width
								},{
									duration:o.slidespeed,
									easing:o.easing,
									queue:false,
									complete:function(){
											$(o.slides,$t).css({left:0},function(){$(o.slides,$t).animate({left:distance})});
											if (times===0) {
												times = slides;
											}
											var nowCont = times-1;
											var prevCont = nowCont-1;
											var prevCont2 = nowCont-2;
											if(prevCont==-1){
												prevCont= slides-1;
											}
											if(prevCont2==-1){
												prevCont2=slides-1;
											}else if(prevCont2==-2){
												prevCont2 = slides-2;
											}
											//console.log(prevCont,prevCont2)
											var leftWidth = 0;
											for(i=0;i<slides;i++){
												var eqIn = nowCont+i;
												if(eqIn>slides-1){
													eqIn = eqIn-(slides);
												}
												$(o.slides,$t).children(":eq("+eqIn+")").css({left:leftWidth});
												leftWidth += width;
											}
											$(o.slides,$t).children(":eq("+prevCont+")").css({left:-width});
											$(o.slides,$t).children(":eq("+prevCont2+")").css({left:-width-width});
										active = false;
										o.callback();
									}
								});
								break;
							case "fade":
								times = [times]*1;
								current(times);
								if(o.autoHeight){autoHeight(times);}
								$(o.slides,$t).children().fadeOut(o.fadespeed, function(){
										$(o.slides,$t).css({left:0},function(){$(o.slides,$t).animate({left:distance})});
										var nowCont = times-1;
										var prevCont = nowCont-1;
										var prevCont2 = nowCont-2;
										if(prevCont==-1){
											prevCont = slides-1;
										}
										if(prevCont2==-1){
											prevCont2=slides-1;
										}else if(prevCont2==-2){
											prevCont2 = slides-2;
										}
										var leftWidth = 0;
										for(i=0;i<slides;i++){
											var eqIn = nowCont+i;
											if(eqIn>slides-1){
												eqIn = eqIn-(slides);
											}
											$(o.slides,$t).children(":eq("+eqIn+")").css({left:leftWidth});
											leftWidth += width;
										}
										$(o.slides,$t).children(":eq("+prevCont+")").css({left:-width});
										$(o.slides,$t).children(":eq("+prevCont2+")").css({left:-width-width});
										if (times===slides+1) {
											times = 1;
										}
									$(o.slides,$t).children().fadeIn(o.fadespeed);
									active = false;
								});
								break; 
							default:
								break;
						}			
					};
				}
			);
		}
	});
	$.fn.loopedSlider.defaults = {
		container: "#gallery", //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: 800, //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: true, //Add pagination links based on content? true/false
		easing: "easeOutQuad",
		callback: function(){}
	};
})(jQuery);

// easing
$.extend($.easing,
	{
		def: 'easeOutQuad',
		swing: function (x, t, b, c, d) {
		return $.easing[$.easing.def](x, t, b, c, d);
	},
		easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
		easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
		easeInBack: function (x, t, b, c, d, s) {
			if (s == undefined) s = 1.70158;
			return c*(t/=d)*t*((s+1)*t - s) + b;
	},
		easeOutBack: function (x, t, b, c, d, s) {
			if (s == undefined) s = 1.70158;
			return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	}
});


/*
 *
 * TERMS OF USE - EASING EQUATIONS
 *
 * Open source under the BSD License.
 *
 * Copyright c 2001 Robert Penner
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this list of
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list
 * of conditions and the following disclaimer in the documentation and/or other materials
 * provided with the distribution.
 *
 * Neither the name of the author nor the names of contributors may be used to endorse
 * or promote products derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */


