/* ------------------------------------------------------------------------
	Class: zoombox
	Auteur: Jonathan Boyer (http://www.grafikart.fr)
	Version: 1.0.1
	
	- Historique de Modifications: 
		# BARRY Thierno IB. (ibrahima.br@gmail.com): Lundi 22/12/2008
			+ Prise en charge de la navigation par les touches directionnelles
			+ Sortie de la zoombox avec ESC
------------------------------------------------------------------------- */

$(document).ready(function(){
	zoombox.init();
});
zoombox = {
		// Configure la boite
		/////////////////
		init : function(){
			zoombox.largeurD=450; // Largeur par défaut 
			zoombox.hauteurD=360; // Hauteur par défaut
			zoombox.duree=750;	// Durée des animation en ms
			zoombox.fond="#000000";
			zoombox.lecteurFLV="/zoombox/FLVplayer.swf" // Ou se trouve le lecteur FLV par rapport à la racine
			zoombox.lecteurMP3="/zoombox/mp3player.swf" // Ou se trouve le lecteur MP3 par rapport à la racine
			// Trouve toutes les images
			zoombox.images = new Array();
			galleryRegExp = /\[(?:.*)\]/
			$("a[rel^='zoombox']").each(function(){
					if(!zoombox.images[galleryRegExp.exec($(this).attr("rel"))]){
						zoombox.images[galleryRegExp.exec($(this).attr("rel"))]=new Array();
					}
					zoombox.images[galleryRegExp.exec($(this).attr("rel"))].push($(this));
					$(this).bind('click',function(){
					zoombox.gallerie=galleryRegExp.exec($(this).attr("rel"));
					zoombox.div=$(this);
					zoombox.top=$(this).offset().top-18;
					zoombox.left=$(this).offset().left-18;
					zoombox.largeur=$(this).width();
					zoombox.hauteur=$(this).height();
					if($(this).children("img").length){
						zoombox.hauteur=$(this).children("img").height();
						zoombox.top=$(this).children("img").offset().top-18;
					}
					zoombox.open(); return false;
				});
			});
			$(window).resize(function(){ zoombox.recadrer(); });
		},
		// Création des divs
		///////////////
		open : function(){
			for (i = 0; i < zoombox.images[zoombox.gallerie].length; i++){
				if($(zoombox.images[zoombox.gallerie][i]).attr("href") == zoombox.div.attr("href")){
					zoombox.position=i;
				}
			}
			$("embed").css("visibility","hidden"); // On cache tous les éléments qui pourrait passé par dessus zoombox
			$("object").css("visibility","hidden");
			
			$('body').append("<div id='zoombox'></div>");
			
			zoombox.aplat();
			
			$('#zoombox').append("<div id='zoombox_conteneur'></div>");

			$('#zoombox_conteneur').append("<div id='zoombox_conteneur2'></div>");		
			
			$('#zoombox_conteneur2').append("<div id='zoombox_close'></div>");
			
			$('#zoombox_conteneur2').append("<div id='zoombox_titre'></div>");			
			$('#zoombox_titre').append('<table cellspacing="0" cellpadding="0" border="0" style="margin:0 auto;"><tr><td id="zoombox_titreg"></td><td id="zoombox_titrec"></td><td id="zoombox_titred"></td></tr></table>')
			
			if(zoombox.gallerie){
				$('#zoombox_titre table tr').append('<td width="39"><a id="zoombox_boutond"></a></td>');
				$('#zoombox_titre table tr').prepend('<td width="39"><a id="zoombox_boutong"></a></td>');
				$("#zoombox_boutond").click(function(){zoombox.next()});
				$("#zoombox_boutong").click(function(){zoombox.prev()});
				///////////////////////modification Ibrahima///////////////////////
				//On passe a l'image suivante si on appuie sur Rigth = 39 en ASCII
				//On passe a l'image précédente si on appuie sur Left = 37 en ASCII
      			$(document).keyup(function(event){
      				//Avec ce filtre tu pouras bien t'amuser avec le clavier... il suffit d'imaginer
      				//alert(event.keyCode);
      				if(event.keyCode==39){
      					zoombox.next();
      				}
      				else if(event.keyCode==37){
      					zoombox.prev()
      				}
      			});


				if(zoombox.position==zoombox.images[zoombox.gallerie].length-1){
					$("#zoombox_boutond").hide();
				}
				if(zoombox.position==0){
					$("#zoombox_boutong").hide();
				}
			}
			
			$('#zoombox_conteneur2').append("<div id='zoombox_bg'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_h'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_b'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_d'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_g'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_bg'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_bd'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_hg'></div>");
			$('#zoombox_bg').append("<div class='zoombox_bg_hd'></div>");
			
			$('#zoombox_conteneur2').append("<div id='zoombox_contenu'></div>");
			$('#zoombox_contenu').css({'background-color': zoombox.fond});
			
			$('#zoombox_contenu').hide();
			$('#zoombox_conteneur2').hide();
			
			$('#zoombox_conteneur').css({'top':zoombox.top+"px"});
			$('#zoombox_conteneur').css({'left':zoombox.left+"px"});
			$('#zoombox_conteneur').css({'width':zoombox.largeur+"px"});
			$('#zoombox_conteneur').css({'height':zoombox.hauteur+"px"});
			zoombox.setContent();
			
			$("#zoombox_close").click(function(){
				zoombox.close();
			})
			///////////////////////modification Ibrahima///////////////////////
			//On sort de la zoombox si on appuie sur ESC = 27 en ASCII
			$(document).keyup(function(event){
      			if(event.keyCode==27)
      				zoombox.close();
      		});
			$("#zoombox_aplat").click(function(){
				zoombox.close();
			})
		
		},
		// Fermeture de zoombox
		///////////////
		close : function(){
			div=zoombox.div;
			zoombox.top=div.offset().top-18;
			zoombox.left=div.offset().left-18;
			zoombox.largeur=div.width();
			zoombox.hauteur=div.height();
			$('#zoombox_bg').hide();
			//$('#zoombox_close').fadeOut(zoombox.duree); // plante sur IE7 et Google Chrome
			if(div.children("img").length){
				zoombox.hauteur=div.children("img").height();
				zoombox.top=div.children("img").offset().top-18;
			}
			$('#zoombox_aplat').fadeOut(250);
			$('#zoombox_titre').animate({opacity: 0},zoombox.duree);
			if(zoombox.type!="img"){
				$('#zoombox_contenu').empty();
			}
			$('#zoombox_contenu').animate({opacity: 0},zoombox.duree);
			$('#zoombox_conteneur').animate({
				width: zoombox.largeur+"px",
				height: zoombox.hauteur+"px",
				left: zoombox.left+"px",
				top: zoombox.top+"px"
			},zoombox.duree,function(){
				$("embed").css("visibility","visible"); // On cache tous les éléments qui pourrait passé par dessus zoombox
				$("object").css("visibility","visible");
				$("#zoombox").remove();
			});
		
		},
		// Redimensionnement
		///////////////
		redim : function(){
			if($("#zoombox_conteneur2").is(":hidden") && zoombox.type=="img"){
				$('#zoombox_contenu').append(zoombox.contenu);
			}
			if($('#zoombox_contenu').is(":hidden")){
				$('#zoombox_contenu').fadeIn();
				$('#zoombox_conteneur2').show();
			}
			$("#zoombox_titrec").empty();
			$("#zoombox_titrec").append(zoombox.titre);
			zoombox.left=($(window).width()-zoombox.largeur-36)/2;
			zoombox.top=((zoombox.windowH()-zoombox.hauteur-36)/2)+zoombox.scrollY();	
			$('#zoombox_conteneur').animate({
				width: zoombox.largeur+"px",
				height: zoombox.hauteur+"px",
				left: zoombox.left+"px",
				top: zoombox.top+"px"
			},zoombox.duree,function(){
				// LE redim est terminé
				if($('#zoombox_contenu').is(":empty") || zoombox.type!="img"){
					$('#zoombox_contenu').append(zoombox.contenu);
					if(zoombox.type=="img"){$("#zoombox_contenu img").hide(); $("#zoombox_contenu img").fadeIn();}
					else{$("zoombox_contenu").show();}
				}
				if(($("#zoombox_titre").is(":hidden") && zoombox.gallerie) || (!zoombox.gallerie && $("#zoombox_titre").is(":hidden") && zoombox.titre)){
					$("#zoombox_titre").fadeIn(zoombox.duree);
				}

			});
		
		},
		recadrer : function(){
			if((zoombox.hauteur+120)>zoombox.windowH() && zoombox.type=="img"){
				zoombox.largeur=zoombox.largeur*((zoombox.windowH()-120)/zoombox.hauteur);
				zoombox.hauteur=(zoombox.windowH()-120);
			}
			zoombox.left=($(window).width()-zoombox.largeur-36)/2;
			zoombox.top=((zoombox.windowH()-zoombox.hauteur-36)/2)+zoombox.scrollY();	
			$('#zoombox_conteneur').css("width",zoombox.largeur+"px");
			$('#zoombox_conteneur').css("height",zoombox.hauteur+"px");
			$('#zoombox_conteneur').css("left",zoombox.left+"px");
			$('#zoombox_conteneur').css("top",zoombox.top+"px");
		},
		setContent : function(){
			zoombox.titre=zoombox.div.attr("title");
			zoombox.lien=zoombox.div.attr("href");
			taille=zoombox.div.attr("rel").split(' ');
			if((taille[1])&&(taille[2])){ zoombox.largeur = parseInt(taille[1]); zoombox.hauteur =  parseInt(taille[2]);}
			else{zoombox.largeur=zoombox.largeurD; zoombox.hauteur=zoombox.hauteurD;}
			// mmh des expression régulière 
			// On vérifie le zoombox.lien pour générer le code en fonction
			filtreImg=/(\.jpg)|(\.jpeg)|(\.bmp)|(\.gif)|(\.png)/i
			filtreMP3=/(\.mp3)/i
			filtreFLV=/(\.flv)/i
			filtreSWF=/(\.swf)/i
			filtreQuicktime=/(\.mov)|(\.mp4)/i
			filtreWMV=/(\.wmv)/i
			filtreDailymotion=/(http:\/\/www.dailymotion)|(http:\/\/dailymotion)/i
			filtreVimeo=/(http:\/\/www.vimeo)|(http:\/\/vimeo)/i
			filtreYoutube=/(youtube\.)/i
			filtreKoreus=/(http:\/\/www\.koreus)|(http:\/\/koreus)/i
			filtreDeezer=/(http:\/\/www\.deezer)|(http:\/\/deezer)/i
			zoombox.type="multi";
			// On évite les tailles trop grandes
			if((zoombox.hauteur+120)>zoombox.windowH()){
				zoombox.largeur=zoombox.largeur*((zoombox.windowH()-120)/zoombox.hauteur);
				zoombox.hauteur=(zoombox.windowH()-120);
			}
			if(filtreImg.test(zoombox.lien)){
				img=new Image();
				img.src=zoombox.lien;	
				$('#zoombox').append("<div id='zoombox_loading'></div>");
				zoombox.timer = window.setInterval("zoombox.charger(img)",100);
				zoombox.type="img";
				return true;
			}
			else if(filtreMP3.test(zoombox.lien)){
				zoombox.largeur=300;
				zoombox.hauteur=40;
				zoombox.contenu='<object type="application/x-shockwave-flash" data="'+zoombox.lecteurMP3+'?son='+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'">';
				zoombox.contenu+='<param name="movie" value="'+zoombox.lecteurMP3+'?son='+zoombox.lien+'" /></object>';
			}		
			
			else if(filtreFLV.test(zoombox.lien)){
				zoombox.contenu='<embed src="'+zoombox.lecteurFLV+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" allowscriptaccess="always" allowfullscreen="true" flashvars="file='+zoombox.lien+'&width='+zoombox.largeur+'&height='+zoombox.hauteur+'" wmode="transparent" />';			
			}
			
			else if(filtreSWF.test(zoombox.lien)){
				zoombox.contenu='<object width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="'+zoombox.lien+'" /><embed src="'+zoombox.lien+'" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" wmode="transparent"></embed></object>';		
			}
			
			else if(filtreQuicktime.test(zoombox.lien)){
				zoombox.contenu='<embed src="'+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" controller="true" cache="true" autoplay="true"/>';
			}
			
			else if(filtreWMV.test(zoombox.lien)){
				zoombox.contenu='<embed src="'+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" controller="true" cache="true" autoplay="true" wmode="transparent" />';
			}

			else if(filtreDailymotion.test(zoombox.lien)){
				id=zoombox.lien.split('_');
				id=id[0].split('/');
				id=id[id.length-1];
				zoombox.contenu='<object width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="movie" value="http://www.dailymotion.com/swf/'+id+'&colors=background:000000;glow:000000;foreground:FFFFFF;special:000000;&related=0"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/'+id+'&colors=background:000000;glow:000000;foreground:FFFFFF;special:000000;&related=0" type="application/x-shockwave-flash" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" allowFullScreen="true" allowScriptAccess="always" wmode="transparent" ></embed></object>';
			}
			
			
			else if(filtreVimeo.test(zoombox.lien)){
				id=zoombox.lien.split('/');
				id=id[3];
				zoombox.contenu='<object width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id='+id+'&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00AAEB&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id='+id+'&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00AAEB&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" wmode="transparent" ></embed></object>';
			}
			
			
			else if(filtreYoutube.test(zoombox.lien)){
				id=zoombox.lien.split('watch?v=');
				id=id[1].split('&');
				id=id[0];
				zoombox.contenu='<object width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="movie" value="http://www.youtube.com/v/'+id+'&hl=fr&rel=0&color1=0xFFFFFF&color2=0xFFFFFF"></param><embed src="http://www.youtube.com/v/'+id+'&hl=fr&rel=0&color1=0xFFFFFF&color2=0xFFFFFF" type="application/x-shockwave-flash" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'" wmode="transparent"></embed></object>';
			}
			
			
			else if(filtreKoreus.test(zoombox.lien)){
				zoombox.lien=zoombox.lien.split('.html');
				zoombox.lien=zoombox.lien[0];
				zoombox.contenu='<object type="application/x-shockwave-flash" data="'+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"><param name="movie" value="'+zoombox.lien+'"><embed src="'+zoombox.lien+'" type="application/x-shockwave-flash" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"  wmode="transparent"></embed></object>';
			}
			
			
			else if(filtreDeezer.test(zoombox.lien)){
				zoombox.largeur=220;
				zoombox.hauteur=55;
				id=zoombox.lien.split('/');
				id=id[id.length-1];
				zoombox.contenu='<object width="220" height="55"><param name="movie" value="http://www.deezer.com/embedded/small-widget-v2.swf?idSong='+id+'&colorBackground=0x000000&textColor1=0xFFFFFF&colorVolume=0xFF6600&autoplay=0"></param><embed src="http://www.deezer.com/embedded/small-widget-v2.swf?idSong='+id+'&colorBackground=0x000000&textColor1=0xFFFFFF&colorVolume=0xFF6600&autoplay=0" type="application/x-shockwave-flash" width="220" height="55" wmode="transparent"></embed></object>';
			}
			
			else{
				zoombox.contenu='<iframe src="'+zoombox.lien+'" width="'+zoombox.largeur+'" height="'+zoombox.hauteur+'"></iframe>';
				zoombox.titre=zoombox.titre+' (<a href="'+(zoombox.lien)+'" target="_blank">Ouvrir dans une nouvelle page</a>)';
				$("#zoombox_titrec").append(' (<a href="'+(zoombox.lien)+'" target="_blank">Ouvrir dans une nouvelle page</a>)');
			}	
			$("#zoombox_contenu").empty();
			zoombox.redim();
		},
		next : function(){
			///////////////////////modification Ibrahima///////////////////////
			//On passe a l'image suivante que si nous n'avons pas atteint la limite
			//supérieure d'images dans le tableaux.
			if(zoombox.position<zoombox.images[zoombox.gallerie].length-1){
				zoombox.position++;
				zoombox.div=zoombox.images[zoombox.gallerie][zoombox.position];
				zoombox.setContent();	
			}
			if(zoombox.position==zoombox.images[zoombox.gallerie].length-1){
				$("#zoombox_boutond").fadeOut();
			}
			if($("#zoombox_boutong").is(":hidden")){
				$("#zoombox_boutong").fadeIn();
			}
		},
		prev : function(){
			///////////////////////modification Ibrahima///////////////////////
			//On passe a l'image précédente que si nous n'avons pas atteint la 
			//limite inférieure d'images dans le tableaux.
			if(zoombox.position>0){
				zoombox.position--;
				zoombox.div=zoombox.images[zoombox.gallerie][zoombox.position];
				zoombox.setContent();
			}
			if(zoombox.position==0){
				$("#zoombox_boutong").fadeOut();
			}
			if($("#zoombox_boutond").is(":hidden")){
				$("#zoombox_boutond").fadeIn();
			}
		},
		// Aparition de l'aplat
		///////////////
		aplat : function(){
			
 			$('#zoombox').append("<div id='zoombox_aplat'></div>");
			$('#zoombox_aplat').css({'opacity': 0});
			$('#zoombox_aplat').fadeTo(250,0.4);
			
		},
		// Chargement d'une image
		///////////////	
		charger : function(img){
			if(img.complete){
				$("#zoombox_conteneur").show();
				window.clearInterval(zoombox.timer);
				zoombox.largeur=img.width;
				zoombox.hauteur=img.height;
				zoombox.contenu='<img src="'+img.src+'" width="100%" height="100%"/>';
				$('#zoombox_loading').remove();
				// On évite les tailles trop grandes
				if((zoombox.hauteur+120)>zoombox.windowH()){
					zoombox.largeur=zoombox.largeur*((zoombox.windowH()-120)/zoombox.hauteur);
					zoombox.hauteur=(zoombox.windowH()-120);
				}
				if($('#zoombox_contenu img').length){
					$('#zoombox_contenu img').fadeOut(500,function(){$('#zoombox_contenu').empty(); zoombox.redim();})
				}
				else{
					$('#zoombox_contenu').empty();
					zoombox.redim();
				}
			}	
			// On anim le loader
			if(typeof(j)=='undefined'){j=0;}
 			$('#zoombox_loading').css({'background-position': "0px "+j+"px"});
			j=j-40;
			if(j<(-440)){j=0;}
		},
		scrollY : function() {
		  scrOfY = 0;
		  if( typeof( window.pageYOffset ) == 'number' ) {
			//Netscape compliant
			scrOfY = window.pageYOffset;
		  } else if( document.body && ( document.body.scrollTop ) ) {
			//DOM compliant
			scrOfY = document.body.scrollTop;
		  } else if( document.documentElement && ( document.documentElement.scrollTop ) ) {
			//IE6 standards compliant mode
			scrOfY = document.documentElement.scrollTop;
		  }
		  return scrOfY;
		  alert(scrOfY);
		},
		windowH : function(){
			if (window.innerHeight) return window.innerHeight  ;
			else{return $(window).height();}
		}
}


/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright Â© 2008 George McGinley Smith
 * 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. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
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. 
 *
 */
 
 
 
 
 
 






