/*
				JALIS JGO
----------------------------------------------
/////////////le flash killer//////////////////
>v0.1
----------------------------------------------
librairie d'effets javascript basee sur jquery
----------------------------------------------

REQUIS :
jquery 1.4.4 minimum appellé avant dans le HTML

*/


var isGoodNav = getGoodNav();


/*////////////////////////////////////////////////////
  					JBOUTON
////////////////////////////////////////////////////*/

/*jBouton*/

function jBoutonSlide()
{
	var parametres = new Object();
	parametres.duree = 200;
	parametres.obj = '.jBoutonSlide';
	parametres.autoinit = true;
	
	if(arguments[0]) parametres.duree = arguments[0];
	if(arguments[1]) parametres.obj = arguments[1];
	if(arguments[2]) parametres.autoinit = arguments[2];
	
	
	this.parametres = parametres;
	
	this.init = function()
	{
		if($(parametres.obj).html() != null)
		{
			
			$(parametres.obj).mouseenter(
				function()
				{
					var hauteur_bt = getHauteur($(this).children("div"));
					$(this).animate({marginTop:0-hauteur_bt+'px'},{queue:false, duration:parametres.duree});
				}
			);
			
			
			
			$(parametres.obj).mouseleave(
				function()
				{
					$(this).animate({marginTop:'0px'},{queue:false, duration:parametres.duree});
				}
			);
			
		}
	}
	
	if(parametres.autoinit == true) this.init();
}








function jBoutonPad()
{
	var parametres = new Object();
	parametres.bouton	= ".jBoutonPad";
	parametres.padOver	= "15px";
	parametres.padOut	= "0px";
	parametres.typePad	= "paddingLeft";
	parametres.duree	= 250;
	parametres.autoinit	= true;
	
	if(arguments[0]) parametres.bouton = arguments[0];
	if(arguments[1]) parametres.padOver = arguments[1];
	if(arguments[2]) parametres.padOut = arguments[2];
	if(arguments[3]) parametres.typePad = arguments[3];
	if(arguments[4]) parametres.duree = arguments[4];
	if(arguments[5]) parametres.autoinit = arguments[5];
	
	this.parametres = parametres;
	
	this.init = function()
	{
		$(parametres.bouton).mouseenter(
			function()
			{
				var propAnim = {};
				propAnim[parametres.typePad] = parametres.padOver;
				
				$(this).animate(propAnim,{queue:false, duration:parametres.duree});
			}
		);
		
		$(parametres.bouton).mouseleave(
			function()
			{
				var propAnim = {};
				propAnim[parametres.typePad] = parametres.padOut;
				
				$(this).animate(propAnim,{queue:false, duration:parametres.duree});
			}
		);
	}
	
	if(parametres.autoinit == true) this.init();
}













/*////////////////////////////////////////////////////
  					JMENU
////////////////////////////////////////////////////*/

function jMenuHDeroulant()
{
	var parametres = new Object();
	parametres.btMenu = ".menu_bt";
	parametres.sousMenu = ".sous_menu";
	parametres.conteneur = ".conteneur_sous_menu";
	parametres.dureeAnim = 150;
	parametres.autoinit = true;
	
	if(arguments[0]) parametres.btMenu = arguments[0];
	if(arguments[1]) parametres.sousMenu = arguments[1];
	if(arguments[2]) parametres.conteneur = arguments[2];
	if(arguments[3]) parametres.dureeAnim = arguments[3];
	if(arguments[4]) parametres.autoinit = arguments[4];
	
	this.parametres = parametres;
	
	this.init = function()
	{
		$(parametres.sousMenu).css({position:'absolute', height:'0px', overflow:'hidden'})
		
		
		$(parametres.btMenu).mouseenter(
			function()
			{
				
				if(isSousMenu($(this),parametres.sousMenu))
				{
					var hauteur_sous_menu = getHauteur($(this).children(parametres.sousMenu).children(parametres.conteneur));
					$(this).children(parametres.sousMenu).animate({height:hauteur_sous_menu+'px'},{queue:false, duration:parametres.dureeAnim});
				}
				
			}
		);
		
		
		$(parametres.btMenu).mouseleave(
			function()
			{
				
				if(isSousMenu($(this),parametres.sousMenu))
				{
					$(this).children(parametres.sousMenu).animate({height:'0px'},{queue:false, duration:parametres.dureeAnim});
				}
			}
		);
	}
	
	
	if(parametres.autoinit == true) this.init();
}
















/*////////////////////////////////////////////////////
  					JEFFET
////////////////////////////////////////////////////*/

/*jEffetOpacite*/
function jEffetOpacite()
{
	var parametres = new Object();
	parametres.duree = 200;
	parametres.obj = ".jEffetOpacite"
	parametres.alphaOut = 0.7;
	parametres.alphaOver = 1;
	parametres.autoinit = true;
	
	if(arguments[0]) parametres.duree = arguments[0];
	if(arguments[1]) parametres.obj = arguments[1];
	if(arguments[2]) parametres.alphaOver = arguments[2];
	if(arguments[3]) parametres.alphaOut = arguments[3];
	if(arguments[4]) parametres.autoinit = arguments[4];
	
	this.parametres = parametres;
	
	this.init = function()
	{
		if($(parametres.obj).html() != null)
		{
			$(parametres.obj).css('opacity',parametres.alphaOut);
			
			
			$(parametres.obj).mouseenter(
				function()
				{
					$(this).animate({opacity:parametres.alphaOver},{queue:false, duration:parametres.duree});
				}
			);
			
			
			
			$(parametres.obj).mouseleave(
				function()
				{
					$(this).animate({opacity:parametres.alphaOut},{queue:false, duration:parametres.duree});
				}
			);
			
		}
	}
	
	if(parametres.autoinit == true && isGoodNav == true) this.init();
}





/*jEffetBox*/
function jEffetBox()
{
	var parametres = new Object();
	parametres.duree = 		250;
	parametres.obj = 		".jEffetBox";
	parametres.objClick = 	".jEffetBoxTitre";
	parametres.objHidden = 	".jEffetBoxContenu";
	parametres.openAtStart=	false;
	parametres.closeOthersOnClick = true;
	parametres.autoinit = 	true;
	
	if(arguments[0]) parametres.duree 	= 	arguments[0];
	if(arguments[1]) parametres.obj 	=	arguments[1];
	if(arguments[2]) parametres.objClick = 	arguments[2];
	if(arguments[3]) parametres.objHidden = arguments[3];
	if(arguments[4]) parametres.openAtStart = arguments[4];
	if(arguments[5]) parametres.closeOthersOnClick = arguments[5];
	if(arguments[6]) parametres.autohide = 	arguments[6];
	
	this.parametres = parametres;
	
	this.init = function()
	{
		if($(parametres.obj).html() != null)
		{
			if(parametres.openAtStart == false)
			{
				$(parametres.obj).children(parametres.objHidden).css('overflow','hidden');
				$(parametres.obj).children(parametres.objHidden).css('height','0px');
			}
			
			$(parametres.obj).children(parametres.objClick).click(
				function()
				{
					if(parametres.closeOthersOnClick == true)
					{
						$(this).parent().children(parametres.objHidden).animate({height:'0px'},{queue:false,duration:parametres.duree});
					}
					
					if($(this).parent().children(parametres.objHidden).innerHeight() == 0)
					{
						var hauteurobj = $(this).parent().children(parametres.objHidden).children("div").outerHeight();
						$(this).parent().children(parametres.objHidden).animate({height:hauteurobj},{queue:false,duration:parametres.duree});
					}
					else
					{
						$(this).parent().children(parametres.objHidden).animate({height:'0px'},{queue:false,duration:parametres.duree});
					}
				}
			);
		}
	}
	
	if(parametres.autoinit == true) this.init();
	
}





/*jEffetCentre*/
function jEffetCentre()
{
	var parametres = new Object();
	parametres.conteneur = ".jEffetCentre";
	parametres.image = "img";
	parametres.scaleMode = "showAll";
	parametres.autoinit = true;
	
	if(arguments[0]) parametres.conteneur = arguments[0];
	if(arguments[1]) parametres.image = arguments[1];
	if(arguments[2]) parametres.scaleMode = arguments[2];
	if(arguments[3]) parametres.autoinit = arguments[3];
	
	this.parametres = parametres;
	
	this.init = function()
	{
		if ($(parametres.conteneur).html() != null) 
		{	
			
			$(parametres.conteneur).css('overflow',"hidden");
			
			positionneImages();

		}
		
	}
	
	
	
	function positionneImages()
	{
		$(parametres.conteneur).each(
			function()
			{
				var objet = $(this);
				
				$(this).children(parametres.image).each(
					
					function()
					{
						var image = $(this);
						//style appliques a l'image
						$(this).css('position', 'absolute');
						
						
						switch (parametres.scaleMode) 
						{
							case "showAll":
								showAll(image, objet);
								break;
							case "exactFit":
								exactFit(image, objet);
								break;
						}
						
						
						//centrage des images
						var posy = Math.round((($(objet).outerHeight()) - ($(this).outerHeight())) / 2);
						var posx = Math.round(($(objet).outerWidth() - $(this).outerWidth()) / 2);
						
						$(this).css('top', posy);
						$(this).css('left', posx);
					}
				);
			}
		);
	}
	
	
	
	$(window).resize(
		function()
		{
			positionneImages();
		}
	);
	
	
	if(parametres.autoinit == true) this.init();
}





/*jEffetDiaporama*/
function jEffetDiaporama()
{
	var parametres = new Object();
	parametres.duree		= 4000;
	parametres.tempsFondu	= 1000;
	parametres.conteneur 	= ".jEffetDiaporama";
	parametres.contenu 		= "img";
	parametres.scaleMode	= "showAll";
	parametres.autoinit		= true;
	
	if(arguments[0]) parametres.duree = arguments[0];
	if(arguments[1]) parametres.tempsFondu = arguments[1];
	if(arguments[2]) parametres.conteneur = arguments[2];
	if(arguments[3]) parametres.contenu = arguments[3];
	if(arguments[4]) parametres.scaleMode = arguments[4];
	if(arguments[5]) parametres.autoinit = arguments[5];
	
	
	this.parametres = parametres;
	
	
	var nb_images = -1;
	var current = -1;
	var gonext = true;
	var minuteur = "";
	
	
	this.init = function()
	{
		$(parametres.conteneur).css('overflow', 'hidden');
		prepareImages();
	}
	
	this.reset = function()
	{
		clearTimeout(minuteur);
		gonext = false;
		nb_images = -1;
	}
	
	
	function setTimer()
	{
		if(gonext == true)minuteur = setTimeout(changeImage, parametres.duree);
	}
	
	
	function changeImage ()
	{
		var onComplete = setTimer;
		
		if (nb_images == 1) onComplete = null;
		
		var oldimg = current;
		
		if (current == nb_images) 
		{
			current = 0;
		}
		else {
			current++;
		}
		
		$(parametres.conteneur).children(parametres.contenu).each(function()
		{
			if ($(this).index() == oldimg) 
			{
				$(this).animate({opacity: 0}, {queue: false,duration: parametres.tempsFondu});
			}
			
			if ($(this).index() == current) 
			{
				$(this).animate({opacity: 1	}, {queue: false, duration: parametres.tempsFondu, complete: setTimer});
			}
		});
	}
	
	
	
	function prepareImages()
	{
		reset();
		
		$(parametres.conteneur).children(parametres.contenu).each(function(){
			
			//style appliques aux images
			$(this).css('opacity', 0);
			$(this).css('position', 'absolute');
			
			
			switch(parametres.scaleMode)
			{
				case "showAll"	: showAll(this,parametres.conteneur); break;
				case "exactFit"	: exactFit(this, parametres.conteneur); break;
			}
		
			
			//centrage des images
			var posy = Math.round((($(parametres.conteneur).outerHeight()) - ($(this).outerHeight())) / 2);
			var posx = Math.round(($(parametres.conteneur).outerWidth() - $(this).outerWidth()) / 2);
			
			$(this).css('top', posy);
			$(this).css('left', posx);
			
			
			nb_images++;
		});
		
		gonext = true;
		changeImage();
	}
	
	
	
	$(window).resize(
		function()
		{
			prepareImages();
		}
	);
	
	
	
	if(parametres.autoinit == true) this.init();
}





/*jEffetPopUp*/
function jEffetPopUp()
{
	var parametres = new Object();
	parametres.area = "#jEffetPopUp_area";
	parametres.popup = "#jEffetPopUp_popup";
	parametres.duree = 250;
	parametres.autoinit = true;
	
	if(arguments[0]) parametres.area = arguments[0];
	if(arguments[1]) parametres.popup = arguments[1];
	if(arguments[2]) parametres.duree = arguments[2];
	if(arguments[3]) parametres.autoinit = arguments[3];
	
	this.parametres = parametres;
	
	this.init = function()
	{
		var objet = $(parametres.area);
		var bulle = $(objet).children(parametres.popup);
		
		$(parametres.popup).animate({opacity:0},{duration:1, queue:false});
		
		$(objet).mouseenter(
			function()
			{
				$(this).children(parametres.popup).animate({opacity:1},{duration:parametres.duree, queue:false});
			}
		);
		
		$(objet).mouseleave(
			function()
			{
				$(this).children(parametres.popup).animate({opacity:0},{duration:parametres.duree, queue:false});
			}
		);
		
	}
	
	if(parametres.autoinit == true) this.init();
}






/*jToolsHeight*/
function jToolsHeight()
{
	var parametres = new Object();
	parametres.obj = '.jToolsHeight';
	parametres.autoinit = true;
	
	if(arguments[0]) parametres.obj = arguments[0];
	if(arguments[1]) parametres.autoinit = arguments[1];
	
	var maxHeight = 0;
	
	this.init = function()
	{
		$(parametres.obj).each(
			function(index)
			{
				if(maxHeight < $(this).innerHeight())
				{
					maxHeight = $(this).innerHeight();
				}
			}
		);
		
		
		$(parametres.obj).each(
			function(index)
			{
				if($(this).innerHeight() != maxHeight)
				{
					$(this).css('height',maxHeight+'px');
				}
			}
		);
	}
	
	if(parametres.autoinit == true) this.init();
}


//-------------------------------------------------------------------------------//
//						FONCTION COMMUNES
//-------------------------------------------------------------------------------//



//retourne la hauteur d'un element
function getHauteur(obj)
{
	return $(obj).outerHeight();
}


//redimmensionne pour remplir un cadre homothétiquement
function showAll(obj, cont)
{
	//en largeur
	if ($(cont).children(obj).outerWidth() != $(cont).outerWidth()) 
	{
		//$(this).css('width', $(objet).outerWidth());
		var h1 = $(obj).outerHeight();
		var l1 = $(obj).outerWidth();
		var l2 = $(cont).outerWidth();
		var h2 = Math.ceil((l2 * h1) / l1);
		
		$(cont).children(obj).css('height', h2);
		$(cont).children(obj).css('width', l2);				
	}
	
	
	//en hauteur si necessaire
	if ($(obj).outerHeight() < $(cont).outerHeight()) {
		var h1 = $(obj).outerHeight();
		var l1 = $(obj).outerWidth();
		var h2 = $(cont).outerHeight();
		var l2 = Math.ceil((h2 * l1) / h1);
		
		$(cont).children(obj).css('height', h2);
		$(cont).children(obj).css('width', l2);
	}
}



//redimmensionne pour remplir un cadre en affichant l'integralité d'une image
function exactFit(obj, cont)
{
	//en largeur
	if ($(obj).outerWidth() != $(cont).outerWidth()) 
	{
		//$(this).css('width', $(objet).outerWidth());
		var h1 = $(obj).outerHeight();
		var l1 = $(obj).outerWidth();
		var l2 = $(cont).outerWidth();
		var h2 = Math.ceil((l2 * h1) / l1);
		
		$(cont).children(obj).css('height', h2);
		$(cont).children(obj).css('width', l2);
	}
	
	
	//en hauteur si necessaire
	if ($(obj).outerHeight() > $(cont).outerHeight()) {
		var h1 = $(obj).outerHeight();
		var l1 = $(obj).outerWidth();
		var h2 = $(cont).outerHeight();
		var l2 = Math.ceil((h2 * l1) / h1);
		
		$(cont).children(obj).css('height', h2);
		$(cont).children(obj).css('width', l2);
	}
}


//verifie si un sous menu existe
function isSousMenu(obj, nom_sous_menu)
{
	var etat = false;
	
	if($(obj).children(nom_sous_menu).html() != null)
	{
		etat = true;
	}
	
	return etat;
}


function getGoodNav()
{
	var ret = true;
	if($.browser.msie && parseInt($.browser.version) < 9)
	{
		ret = false;
	}
	return ret;
}

