// JavaScript Document

jQuery(function($){

	

$.fn.vSlider = function(options){

	

/* ================================================================================================ */

/* ======================================== Plugin Options ======================================== */

/* ================================================================================================ */	

	var defaults = {

		              time:4000,

					  width:720,

					  height:350,

					  effect:'none',

					  autoplay:true,

					  blocksize: {height:'',width:'' },

					  maskInduration:300,

					  maskOutduration:900,

					  listControls:true,

					  arrowControls:true,

					  customblocksize:{

						  maskvertical:{ height:100,width:70 },

						  // image transitions global settings

						  cubegrow:{ height:130,width:130 },

						  cubesidegrow:{ height:110,width:110 },

						  stripfade:{ height:100,width:60 },

						  striphalf:{ height:100,width:40 },

						  block:80,

						  strip:30

						  

						  },

					  callback:function(){   } 

					  

					  

					};

	

	

	var options = $.extend(defaults, options);

/* ================================================================================================ */

/* ==================================== Variables & Precaching ==================================== */

/* ================================================================================================ */	

	

	return this.each(function()

		{	

		var root = $(this).addClass('mainslider');

		root.wrap('<div class="vSlider" />');	

		var parent = root.parent();

		var li = root.find("li");

	    var images = li.find("img");

		var pos,random_no,timer,image_timer,counter,arr,wait,index,block,w,h,src,parent,im,override=false,in_animation = false,controls,canvas,html5_flag=false,imageData,canvas,context,root_parent;

	    var current = li.eq(1).toggleClass('active'),prev = li.first().addClass("reset");

		var bool = true,first_bool = true;

		

		root.css({

			width: options.width,

			height: options.height

			});	

			

		parent.css({

			width: options.width,

			height: options.height

			});	

			

		li.first().find("span").css("display","block");

		type= "img";

		current.find(type).hide();	

		 canvas = document.createElement('canvas');

    if (!canvas.getContext) {

      options.mode= "default";

	  

	   if(!isNaN(options.effect)&&parseInt(options.effect)>=7)

	   options.effect='none';

	   

    }

		if(options.listControls==true)

	    appendControls();

	    if(options.arrowControls==true)

		appendarrowControls()		

/* ================================================================================================ */

/* ======================================== Switcher Module ======================================= */

/* ================================================================================================ */			

		function switcher()

			{

				prev = (current.prev().length>0) ? current.prev() : li.last();

				prev.removeClass("reset");

				current.toggleClass("active reset");

				current = (current.next().length>0) ? current.next() : li.first();

								 

				current.find(type).hide();

				current.addClass("active");

				options.callback(current.find(type)[0]);

		  

		   }



/* ================================================================================================ */

/* ======================================== Custom Effects ======================================== */

/* ================================================================================================ */	



	function Maskvertical(image)

	{

		in_animation =true;

		 im = image;

		

		

			 if(options.blocksize.width!=''){

		 w = Math.floor(options.blocksize.width);

		 h = Math.floor(options.blocksize.height);

		 }

		 else

		 {

		w = Math.floor(options.customblocksize.maskvertical.width);

		 h = Math.floor(options.customblocksize.maskvertical.height);	 

		 }

		

		 parent = im.parent();

		 arr = new Array(); i =0;  j =0; index = 0;

		 block = $("<div />",{



					css:{

						position:"absolute",

						width:w,

						height:options.height,

						'background-color':"#fff",

						'border':options.maskborder,

						zIndex:99,

						display:'none'

						}

							

							}).addClass('disblock');

		

		

		 while(i<options.width)

		 {

			

				arr[index] = block.clone().css({left:i ,top:j,backgroundPosition:-i+"px 0px" });

				 parent.append( arr[index++].fadeIn(i*4+4));

			

			i = i + w;

		 }

		 

			var wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

			animateout();	

			  }

		  }, 40);

		

		function animateout()

		{

		im.fadeIn(500); 

		i=0;

		random_no = random_array(arr.length);

	    timer = setInterval(function(){

				

				if(i>=arr.length)

				{ 

				

				clearInterval(timer);

				var wait = setInterval(function() {

			      if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

			      endeffect(image);

			        }

		          }, 80);

				return;

				

				}

									 

				

				arr[random_no[i]].stop(true,true).fadeOut({duration:options.maskOutduration,easing:'easeInSine'});

				i++;

				},90);

		

		

		}

		

	  };

	  

    function striphalf(image)

	{

	in_animation = true;

	w = (options.blocksize.width!='') ? Math.floor(options.blocksize.width) : Math.floor(options.customblocksize.striphalf.width);

	h = options.height;

	parent = image.parent();

	arr = new Array(); i =0;  j =0;

	src = image.attr("src");

	block = $("<div />",{

		css:{

				position:"absolute",

				width:w,

				height:h/2,

				'background-image':'url('+src+')',

				'background-color':options.maskbg,

				'border':options.maskborder,

				 zIndex:99,

				 display:'block',

				 opacity:0

			}

	}).addClass('disblock');

		

	 counter = 60;

	 while(i<options.width)

		 {

			j=0;

			while(j<h)

			{

				if(j==0)

				css ={left:i,top:j ,backgroundPosition:-i+"px "+(-j)+"px" ,marginTop: -(h/2)};

				else

				css ={left:i,top:j ,backgroundPosition:-i+"px "+(-j)+"px" ,marginTop: h};

				parent.append(block.clone().css(css).delay(counter).animate({opacity:1,marginTop:0},{duration: 700, easing:'easeOutBack'}));

				j = j + h/2;

				counter = counter + 45;

			}

			i = i + w;

		 }

		 

		i=0;

		wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

				 endeffect(image);

			  }

		  }, 100);

		

	}

	function waveleft(image)

	{

	in_animation = true;

	w = 16;

	h = options.height;

	parent = image.parent();

	arr = new Array(); i =0;  j =0;

	src = image.attr("src");

	block = $("<div />",{

		css:{

				position:"absolute",

				width:w,

				height:h,

				'background-image':'url('+src+')',

				'background-color':options.maskbg,

				'border':options.maskborder,

				 zIndex:99,

				 display:'block',

				 opacity:0

			}

	}).addClass('disblock');

		

	 counter = 10;

	 while(i<options.width)

		 {

				css ={left:i,top:j ,backgroundPosition:-i+"px "+(-j)+"px" ,marginTop: h};

				parent.append(block.clone().css(css).delay(counter).animate({opacity:1,marginTop:0},{duration: 700, easing:'easeOutBack'}));

				counter = counter + 35;

			

			i = i + w;

		 }

		 

		i=0;

		wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

				 endeffect(image);

			  }

		  }, 40);

		

	}

	

	 function cubegrow(image)

	{

		in_animation = true;

		 im = image;

		if(options.blocksize.width!=''){

		 w = Math.floor(options.blocksize.width);

		 h = Math.floor(options.blocksize.height);

		 }

		 else

		 {

		w = Math.floor(options.customblocksize.cubegrow.width);

		 h = Math.floor(options.customblocksize.cubegrow.height);	 

		 }

		 parent = im.parent();

		 arr = new Array(); i =0;  j =0; index = 0;

		 src = im.attr("src");

		 block = $("<div />",{

					css:{

						position:"absolute",

						width:0,

						height:0,

						'background-image':'url('+src+')',

						'background-color':options.maskbg,

						'border':options.maskborder,

						zIndex:99

						

						}

							

							}).addClass('disblock');

		

		counter = 40;

		 while(i<options.width)

		 {

			

		    j=0;

			while(j<options.height)

			{

				

				

				parent.append( block.clone().css({left:i ,top:j,backgroundPosition:-i+"px "+-j+"px" }).delay(counter).animate({height:h,width:w},options.maskOutduration));

			j = j + h; counter = counter + 50;

			}

			

			i = i + w;

		 }



		

	  	wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

				 endeffect(image);

			  }

		  }, 40);

	};	

	function cubesidegrow(image)

	{

		in_animation =true;

		 im = image;

		if(options.blocksize.width!=''){

		 w = Math.floor(options.blocksize.width);

		 h = Math.floor(options.blocksize.height);

		 }

		 else

		 {

		w = Math.floor(options.customblocksize.cubesidegrow.width);

		 h = Math.floor(options.customblocksize.cubesidegrow.height);	 

		 }

		 parent = im.parent();

		 arr = new Array(); i =0;  j =0; index = 0;

		 src = im.attr("src");

		 block = $("<div />",{

					css:{

						position:"absolute",

						width:0,

						height:0,

						opacity:0,

						top:options.height,

						'background-image':'url('+src+')',

						'background-color':options.maskbg,

						'border':options.maskborder,

						zIndex:99

						

						}

							

							}).addClass('disblock');

		

		

		 while(i<options.width)

		 {

			

		    j=0;

			while(j<options.height)

			{

				

				arr[index] = block.clone().css({left:i ,top:j,backgroundPosition:-i+"px "+-j+"px" });

				parent.append(arr[index++]);

			j = j + h;

			}

			

			i = i + w;

		 }

		 

		i=0;

		random_no = random_array(arr.length);

	    timer = setInterval(function(){

				

				if(i>=arr.length)

				{

				

				wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

				 endeffect(image);

			  }

		  }, 40);

		  

					

				

				 clearInterval(timer);

					return;

				}

									 

				arr[random_no[i++]].animate({height:h,width:w,opacity:1}, options.maskOutduration);

				

				},60);

		

	};	

	 function randombricks(image)

	{

		in_animation =true;

	 im = image;

		if(options.blocksize.width!=''){

		 w = Math.floor(options.blocksize.width);

		 h = Math.floor(options.blocksize.height);

		 }

		 else

		 {

		w = Math.floor(options.customblocksize.block);

		 h = Math.floor(options.customblocksize.block);	 

		 }

		 parent = im.parent();

		 arr = new Array(); i =0;  j =0; index = 0;

		 src = im.attr("src");

		 block = $("<div />",{

					css:{

						position:"absolute",

						width:w,

						height:h,

						opacity:0,

						top:options.height,

						'background-image':'url('+src+')',

						'background-color':options.maskbg,

						'border':options.maskborder,

						zIndex:99

						

						}

							

							}).addClass('disblock');

		

		

		 while(i<options.width)

		 {

			

		    j=0;

			while(j<options.height)

			{

				

				arr[index] = block.clone().css({left:i ,top:j,backgroundPosition:-i+"px "+-j+"px" });

				parent.append(arr[index++]);

			j = j + h;

			}

			

			i = i + w;

		 }

		 

		i=0;

		random_no = random_array(arr.length);

	    timer = setInterval(function(){

				

				if(i>=arr.length)

				{

				wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

				 endeffect(image);

			  }

		  }, 80);	

				 clearInterval(timer);

					return;

				}

									 

				arr[random_no[i++]].animate({opacity:1},{duration:1100, easing:'easeOutCubic'});

				

				},30);

	};

	

	function curtainsright(image)

	{

		in_animation = true;

		if(options.blocksize.width!='')

		w = Math.floor(options.blocksize.width);

		else

		w = Math.floor(options.customblocksize.stripfade.width);

		

		h = options.height;

		 parent = image.parent();

		 i = options.width; 

		 src = image.attr("src");

		 var css,flag=true;

		 block = $("<div />",{

					css:{

						position:"absolute",

						width:w,

						height:h,

						'background-image':'url('+src+')',

						'background-color':options.maskbg,

						'border':options.maskborder,

						zIndex:99,

						marginTop:options.height,

						opacity:0

						}

							

							}).addClass('disblock');

		

		counter = 0;

		 while(i>-w)

		 {

			

			

				css = {left:i ,backgroundPosition:-i+"px 0px",marginTop:-options.height };

				flag = true;

			

			

			parent.append(block.clone().css(css).delay(counter).animate({marginTop:0,opacity:1},options.maskOutDuration));

			

			i = i - w; counter = counter + 60;

		 }

		 

		

			wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

				 endeffect(image);

			  }

		  }, 40);

	};

	function stripfade(image)

	{

		in_animation = true;

		if(options.blocksize.width!='')

		w = Math.floor(options.blocksize.width);

		else

		w = Math.floor(options.customblocksize.stripfade.width);

		

		h = options.height;

		

		

		 parent = image.parent();

		 arr = new Array(); i =0;  j =0; index = 0;

		 src = image.attr("src");

		 block = $("<div />",{

					css:{

						position:"absolute",

						width:w,

						height:h,

						'background-image':'url('+src+')',

						'background-color':options.maskbg,

						'border':options.maskborder,

						zIndex:99,

						opacity:0

						

						}

							

							}).addClass('disblock');

		

		counter = 0;

		 while(i<options.width)

		 {

		parent.append(block.clone().css({left:i ,backgroundPosition:-i+"px 0px" }).delay(counter).animate({opacity:1},{duration: 700, easing:'easeOutSine'}));

			

			i = i + w;counter = counter + 50;

		 }

		 

		i=0;

			var wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

				endeffect(image);

			  }

		  }, 40);

		

	};	

	function blindsleft(image)

	{

		in_animation = true;

		if(options.blocksize.width!='')

		w = Math.floor(options.blocksize.width);

		else

		w = Math.floor(options.customblocksize.strip);

		

		h = options.height;

		

		

		 parent = image.parent();

		 arr = new Array(); i =0;  j =0; index = 0;

		 src = image.attr("src");

		 block = $("<div />",{

					css:{

						position:"absolute",

						width:0,

						height:h,

						'background-image':'url('+src+')',

						'background-color':options.maskbg,

						'border':options.maskborder,

						zIndex:99,

						opacity:0

						

						}

							

							}).addClass('disblock');

		

		counter = 0;

		 while(i<options.width)

		 {

		parent.append(block.clone().css({left:i ,backgroundPosition:-i+"px 0px" }).delay(counter).animate({width:w,opacity:1},{duration: 700, easing:'easeOutSine'}));

			

			i = i + w;counter = counter + 50;

		 }

		 

		i=0;

			var wait = setInterval(function() {

			  if( ! parent.find(".disblock").is(":animated") ) {

				  clearInterval(wait);

				endeffect(image);

			  }

		  }, 40);

		

	};	

	

	

/* ================================================================================================ */

/* ================================= Effects Switching & Ending =================================== */

/* ================================================================================================ */		

	

	function endeffect(image)

	{

        if(options.listControls==true)

			   {

			   controls.removeClass("control_active");

			   controls.eq(current.index()).addClass("control_active");

			   }

		clearInterval(timer);

		setTimeout(function(){

				  image.show(); // show the real image

				  parent.find(".disblock").remove(); // remove the divs

				  current.find("span").fadeIn('normal');

				  

				 

				  in_animation = false;

				  

				  if(override==false) // Return if manually triggered

				  image_timer = setTimeout(function() {  current.find("span").fadeOut('fast');    switcher(); effects();  },(options.time-800)); 

			  },1000);

				  

						

	};

	function effects()

	{

		 if(root.find(".disblock").is(":animated"))

		 return;

		 

		var ch = Math.floor(Math.random()* 10);

		

		if(!isNaN(options.effect))

		ch = options.effect;

		  

		if(bool==true)

		 {

			li.first().find("span").hide();

			bool=false;

		     first_bool = false;

		 } 

		

		 switch(ch)

		 {

		 case 0:$(current.find(type)).fadeIn("slow",function(){

			 

			 endeffect($(this));

			  

			 });break;

		 case 1: blindsleft(current.find("img"));break;

		 case 2: blindsleft(current.find("img"));break;

		 case 3: blindsleft(current.find("img"));break;

		 case 4: blindsleft(current.find("img"));break;

		 case 5: blindsleft(current.find("img"));break;

		 case 6: blindsleft(current.find("img"));break;

		 case 7: blindsleft(current.find("img"));break;

		 case 8: blindsleft(current.find("img"));break;

		 case 9: blindsleft(current.find("img"));break;



		 

		

		 

		 

		

		 }

	}



/* ================================================================================================ */

/* ======================================== Control Options ======================================= */

/* ================================================================================================ */	



	function appendarrowControls()

	{

		var prev = jQuery("<a href='#'>").addClass('q-prev');

		parent.append(prev);

		var next = jQuery("<a href='#'>").addClass('q-next');

		parent.append(next);

		

		parent.find(".q-prev").bind("click",function(e){

			 var index = current.index()-1;

			 if(first_bool==true&&index==0)

			 index = 4; 

			 

			 if(index<0)

			 index = li.length-1;

			 setImage(index);  

			 e.preventDefault();

			});

		parent.find(".q-next").bind("click",function(e){

			 var index = current.index()+1;

			 if(first_bool==true&&index==2)

			 index = 1; 

			 

			 if(index>li.length-1)

			 index = 0;

			 setImage(index);  

			 e.preventDefault();

			});	

		

	}

		 function appendControls()

	 {

		var str = "<ul class='controls'>";

		for(var i=0;i<li.length;i++)

		str = str + "<li>"+(i+1)+"</li>";

		str = str+"</ul>";

		

		 root.after(str);

		 

		 controls = parent.find(".controls li");

		controls.first().addClass("control_active");

		

		controls.bind({

		click:function(){ setImage($(this).index()); 	},

		mouseover:function(){ $(this).toggleClass("control_hover"); },

		mouseout:function(){ $(this).toggleClass("control_hover"); }

		  });

		 

		

	 }



/* ================================================================================================ */

/* ======================================== Image Settings ======================================== */

/* ================================================================================================ */	

	 

      function setImage(index)

	{  

	

     	if(first_bool==true)

	    {

			 if(in_animation==true||current.index()-1==index)

		return;

		}

		else

	  if(in_animation==true||current.index()==index)

		return;

		

		li.removeClass("reset active");

		current.find("span").hide();	

		clearTimeout(image_timer); // Manual Override...

		

		if(first_bool==true)

		li.first().addClass("reset");

		

		current.addClass("reset");

		prev = current;

		current = li.eq(index).addClass("active");

		current.find('img').hide();

		override = true;

		effects();

	

	}

		

			

			if(options.autoplay==true)

			 image_timer = setTimeout(function() {   effects();  },options.time);  // Starting the Slideshow

			

		});

	

	





};



function random_array(maxn)

 {

	

    var array = new Array();

	var temp,i,flag=true;

	var index =0;

	 while(index<maxn)

	 {

		 flag = true;

		 temp = Math.floor(Math.random() * maxn);

		 for(i=0;i<array.length;i++)

		 {

			 if(temp==array[i])

			 {

				flag=false;

				break;

			 }

		 }

		 

		 if(flag==true)

		 array[index++] = temp;

	 }

	 

	 return array;

 };

 

});

	



jQuery.easing['jswing'] = jQuery.easing['swing'];



jQuery.extend( jQuery.easing,

{

	def: 'easeOutQuad',

	swing: function (x, t, b, c, d) {

		//alert(jQuery.easing.default);

		return jQuery.easing[jQuery.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;

	},

	easeInOutQuad: function (x, t, b, c, d) {

		if ((t/=d/2) < 1) return c/2*t*t + b;

		return -c/2 * ((--t)*(t-2) - 1) + b;

	},

	easeInCubic: function (x, t, b, c, d) {

		return c*(t/=d)*t*t + b;

	},

	easeOutCubic: function (x, t, b, c, d) {

		return c*((t=t/d-1)*t*t + 1) + b;

	},

	easeInOutCubic: function (x, t, b, c, d) {

		if ((t/=d/2) < 1) return c/2*t*t*t + b;

		return c/2*((t-=2)*t*t + 2) + b;

	},

	easeInQuart: function (x, t, b, c, d) {

		return c*(t/=d)*t*t*t + b;

	},

	easeOutQuart: function (x, t, b, c, d) {

		return -c * ((t=t/d-1)*t*t*t - 1) + b;

	},

	easeInOutQuart: function (x, t, b, c, d) {

		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;

		return -c/2 * ((t-=2)*t*t*t - 2) + b;

	},

	easeInQuint: function (x, t, b, c, d) {

		return c*(t/=d)*t*t*t*t + b;

	},

	easeOutQuint: function (x, t, b, c, d) {

		return c*((t=t/d-1)*t*t*t*t + 1) + b;

	},

	easeInOutQuint: function (x, t, b, c, d) {

		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;

		return c/2*((t-=2)*t*t*t*t + 2) + b;

	},

	easeInSine: function (x, t, b, c, d) {

		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;

	},

	easeOutSine: function (x, t, b, c, d) {

		return c * Math.sin(t/d * (Math.PI/2)) + b;

	},

	easeInOutSine: function (x, t, b, c, d) {

		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;

	},

	easeInExpo: function (x, t, b, c, d) {

		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;

	},

	easeOutExpo: function (x, t, b, c, d) {

		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;

	},

	easeInOutExpo: function (x, t, b, c, d) {

		if (t==0) return b;

		if (t==d) return b+c;

		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;

		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;

	},

	easeInCirc: function (x, t, b, c, d) {

		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;

	},

	easeOutCirc: function (x, t, b, c, d) {

		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;

	},

	easeInOutCirc: function (x, t, b, c, d) {

		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;

		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;

	},

	easeInElastic: function (x, t, b, c, d) {

		var s=1.70158;var p=0;var a=c;

		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;

		if (a < Math.abs(c)) { a=c; var s=p/4; }

		else var s = p/(2*Math.PI) * Math.asin (c/a);

		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;

	},

	easeOutElastic: function (x, t, b, c, d) {

		var s=1.70158;var p=0;var a=c;

		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;

		if (a < Math.abs(c)) { a=c; var s=p/4; }

		else var s = p/(2*Math.PI) * Math.asin (c/a);

		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;

	},

	easeInOutElastic: function (x, t, b, c, d) {

		var s=1.70158;var p=0;var a=c;

		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);

		if (a < Math.abs(c)) { a=c; var s=p/4; }

		else var s = p/(2*Math.PI) * Math.asin (c/a);

		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;

		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + 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;

	},

	easeInOutBack: function (x, t, b, c, d, s) {

		if (s == undefined) s = 1.70158; 

		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;

		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;

	},

	easeInBounce: function (x, t, b, c, d) {

		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;

	},

	easeOutBounce: function (x, t, b, c, d) {

		if ((t/=d) < (1/2.75)) {

			return c*(7.5625*t*t) + b;

		} else if (t < (2/2.75)) {

			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;

		} else if (t < (2.5/2.75)) {

			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;

		} else {

			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;

		}

	},

	easeInOutBounce: function (x, t, b, c, d) {

		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;

		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;

	}

});



/*

 *

 * TERMS OF USE - EASING EQUATIONS

 * 

 * Open source under the BSD License. 

 * 

 * Copyright © 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. 

 *

 */// JavaScript Document
