﻿/******************************************************************************/
/*	MÉTHODE ShowHideDetail()
/*		Méthode ayant pour but de montrer ou cacher le détail d'une zone
/*	PARMÈTRES :
/*		elementId : Identifiant de l'élément à montrer ou cacher
/*	REMARQUES :
/*		Cette méthode commence par valider si l'élément est visible. À utiliser
/*		lorsque par défaut, la zone est cachée sur la page
/******************************************************************************/
function ShowHideDetail(elementId)
{
	var element = document.getElementById(elementId);
	if (element.style.display == "block") element.style.display = "none";
	else element.style.display = "block"
}

/******************************************************************************/
/*	MÉTHODE HideShowDetail()
/*		Méthode ayant pour but de cacher ou montrer le détail d'une zone
/*	PARMÈTRES :
/*		elementId : Identifiant de l'élément à montrer ou cacher
/*	REMARQUES :
/*		Cette méthode commence par valider si l'élément est visible. À utiliser
/*		lorsque par défaut, la zone est affichée sur la page
/******************************************************************************/
function HideShowDetail(elementId)
{
	var element = document.getElementById(elementId);
	if (element.style.display == "none") element.style.display = "block";
	else element.style.display = "none"
}

/******************************************************************************/
/*	MÉTHODE ShowFloatingContainer()
/*		Montre le menu spécifié
/*	PARMÈTRES :
/*		elementId :		Identifiant du conteneur à charger
/*		widthId :		Élément duquel extraire la coordonnée x du conteneur à afficher
/*		difference :	Déférence à appliquer afin de trouver la coordonnée X
/*		y :	Coordonnnée Y ou afficher le conteneur
/*		b : Booléen indiquant si l'on doit montrer le conteneur
/******************************************************************************/
function ShowFloatingContainer(elementId, widthId, difference, y, b)
{
	var x = document.getElementById(widthId).clientWidth + difference;
	var container = document.getElementById(elementId);
	container.style.left = x + "px";
	container.style.top = y + "px";
	container.style.visibility = b ? "visible" : "hidden";
	DisplaySelect(!b);
}

/******************************************************************************/
/*	MÉTHODE DisplaySelect()
/*		Montre ou cache les éléments Select
/*	PARMÈTRES :
/*		b :	Affichage ou non de la balise Select
/******************************************************************************/
function DisplaySelect(b)
{
	var selects = document.getElementsByTagName("select")
	for (var i = 0; i < selects.length; i++)
		if (selects[i].className != "DateSelector")
			selects[i].style.visibility = b ? "visible" : "hidden";
}

/******************************************************************************/
/*	MÉTHODE AdjustVSize()
/*		Ajustement de la taille verticale de la page
/*	PARMÈTRES :
/*		subHeight : La hauteur à soustraire de la hauteur totale
/*		tdId :		Identifiant de la balise <td> dont on doit ajuster la hauteur
/******************************************************************************/
function AdjustVSize(subHeight, tdId)
{
	try
	{
		document.getElementById(tdId).style.height = (document.documentElement.clientHeight - subHeight) + "px";
	}
	catch(e) {}
}

/******************************************************************************/
/*	MÉTHODE AdjustHSize()
/*		Ajustement de la taille horizontale de la page
/*	PARMÈTRES :
/*		elementId : La hauteur à soustraire de la hauteur totale
/*		tdId :		Identifiant de la balise <td> dont on doit ajuster la hauteur
/******************************************************************************/
function AdjustHSize(elementId)
{
	try
	{
		var element = document.getElementById(elementId);
		if (document.body.clientWidth > 1024) element.style.width = 984 + "px";
		else if (document.body.clientWidth < 800) element.style.width = 760 + "px";
		else element.style.width = document.body.clientWidth - 40 + "px";
	}
	catch(e) {}
}

/******************************************************************************/
/*	MÉTHODE RolloverImage()
/*		 Méthode permettant de changer l'image lorsque l'usager passe au dessus de cette dernière
/*	PARMÈTRES :
/*		img : Image à changer
/*		bRollover :	Booléen indiquant si l'on doit montrer l'image spécial ou non
/******************************************************************************/
function RolloverImage(img, bRollover)
{
	var src = img.src.replace("_over", "");
	if (bRollover) img.src = src.replace(".gif", "_over.gif");
	else
	{
		img.src = src;
		ClickImage(img, false);
	}
}
/******************************************************************************/
/*	MÉTHODE ClickImage()
/*		 Méthode permettant de créer un effet de click sur une image (pourrait fonctionner
/*		 avec plusieurs autres contrôles Html
/*	PARMÈTRES :
/*		img : Image à changer
/*		bRollover :	Booléen indiquant si l'on doit montrer l'image spécial ou non
/******************************************************************************/
function ClickImage(img, bClick)
{
	img.style.position = "relative";
	if (bClick) img.style.left = img.style.top = "1px";
	else img.style.left = img.style.top = "0px";
}
/******************************************************************************/
/*	MÉTHODE DisabledImage()
/*		 Changer l'image afin qu'elle ait l'air d'une image désactivé
/*	PARMÈTRES :
/*		img : Image à changer
/*		disabled : Activé ou désactivé l'image
/******************************************************************************/
function DisabledImage(img, disabled)
{
	var src = img.src.replace("_disabled", "");
	if (disabled) img.src = src.replace(".gif", "_disabled.gif");
	else img.src = src;
	img.disabled = disabled;
}
/******************************************************************************/
/*	MÉTHODE SetFirstControlFocus()
/*		 Attribuer le focus sur le premier contrôle de type input="text" ou sur
/*		 l'lément demandé en paramètre
/*	PARMÈTRES :
/*		elementId : Identifiant de l'élément
/******************************************************************************/
function SetFirstControlFocus(elementId)
{
	if (!elementId)
	{
		var inputs = document.getElementsByTagName("input");
		if (inputs.length > 0)
		{
			var i = 0;
			while (i < inputs.length)
			{
				if (inputs[i].type.toLowerCase() == "text")
				{
					try 
					{
						inputs[i].focus();
						i = inputs.length;
					}
					catch (e) { i++; }
				}
				else i++;
			}
		}
	}
	else
	{
		var input = document.getElementById(elementId);
		if (input) input.focus();
	}
}
document.onreadystatechange = function() 
{
	if (document.readyState == "complete")
		SetFirstControlFocus();
}
/******************************************************************************/
/*	MÉTHODE IsUserPressEnter()
/*		 Vérifie si l'usager a appuyé sur le touche "Enter"
/*	PARMÈTRES :
/*		evt : Évènment étant survenu
/******************************************************************************/
function IsUserPressEnter(evt)
{
	if (evt.keyCode == 13) return true;
	else return false;
}
/******************************************************************************/
/*	MÉTHODE IsFirefox()
/*		 Indiquer s'il s'agit du navigateur FireFox
/*	PARAMÈTRES :
/******************************************************************************/
var _isFirefox = null;
function IsFirefox()
{
	if (_isFirefox == null)
	{
		var userAgent = navigator.userAgent.toLowerCase();
		if (userAgent.indexOf("firefox") > -1)
		{
			var contents = userAgent.split(" ");
			var subContents = contents[contents.length - 1].split("/");
			var versions = subContents[1].split(".");

			if (versions.length >= 2)
			{
				var version = new Number(versions[0]) + (new Number(versions[1]) / 10.0);
				_isFirefox = version >= 1;
			}
			else _isFirefox = false;
		}
		else _isFirefox = false;
	}
	return _isFirefox;
}
/******************************************************************************/
/*	MÉTHODE IsOpera()
/*		 Indiquer s'il s'agit du navigateur Opera
/*	PARAMÈTRES :
/******************************************************************************/
var _isOpera = null;
function IsOpera()
{
	if (_isOpera == null)
	{
		var userAgent = navigator.userAgent.toLowerCase();
		var index = userAgent.indexOf(" ");
		userAgent = userAgent.substr(0, index);
		
		if (userAgent.substr(0, 5) == "opera" && new Number(userAgent.substr(6)) > 9)
			_isOpera = true;
		else _isOpera = false;
	}
	return _isOpera;
}
/******************************************************************************/
/*	MÉTHODE IsIE()
/*		 Indiquer s'il s'agit du navigateur Internet Explorer
/*	PARAMÈTRES :
/******************************************************************************/
var _isIE = null;
function IsIE()
{
	if (_isIE == null)
	{
		_isIE = new Object();
		var userAgent = navigator.userAgent.toLowerCase();
		if (userAgent.indexOf("msie") > -1)
		{
			var contents = userAgent.split(" ");
			var strVersion = contents[3].replace(";", "");
			
			var dblVersion = 0;
			try {_isIE.version = new Number(strVersion);}
			catch(e) {_isIE.version = new Number(strVersion.replace(".", ","));}

			_isIE.valide = _isIE.version >= 4;
		}
		else
		{
			_isIE.version = false;
			_isIE.valide = false;
		}
	}
	return _isIE.valide;
}
/******************************************************************************/
/*	MÉTHODE IsNetscape()
/*		 Indiquer s'il s'agit du navigateur Netscape
/******************************************************************************/
var _isNetscape = null;
function IsNetscape()
{
	return false;
}
/******************************************************************************/
/*	MÉTHODE SelectAllCheckboxes()
/*		Sélectionner/déselectionner toutes les case à cocher
/*	PARMÈTRES :
/*		name : nom associé au checkbox
/*		checked : Indique si l'on doit cocher ou décocher les cases
/******************************************************************************/
function SelectAllCheckboxes(name, checked)
{
	var chks = new Array();
	var tmpCheckbox;
	var index = 0;
	while (tmpCheckbox = document.getElementById(name + "_" + index++))
		chks.push(tmpCheckbox);
	for (var i = 0; i < chks.length; i++)
		chks[i].checked = checked;
}
/******************************************************************************/
/*	MÉTHODE GetElementPosition()
/*		Trouver la position absolue d'un élément sur une page, en tenant compte
/*		du fait que ce dernier est inclus dans un élément dont la position est absolute
/*	PARMÈTRES :
/*		element : Élément pour lequel trouver la position.
/******************************************************************************/
function GetElementPosition(element)
{
	var pos = new Object();
	pos.x = element.offsetLeft + element.offsetParent.offsetLeft;
	pos.y = element.offsetTop + element.offsetParent.offsetTop;
	pos.width = element.offsetWidth;
	pos.height = element.offsetHeight;
	return pos;
}
/******************************************************************************/
/*	MÉTHODE OpenIFrame()
/*		Ouverture d'un IFRAME sous la fenêtre afin de pallier au BUG de IE
/*		(régler à parir de la version 7) sur les contrôles de type SELECT et 
/*		ActiveX
/*	PARAMÈTRES :
/*		element : Élément duquel le IFrame devra apparaître en dessous
/******************************************************************************/
function OpenIFrame(element)
{
	if (IsIE() && _isIE.version <= 6)
	{
		var pos = GetElementPosition(element);
		var iframe = GetIFrame(element.id);
		
		iframe.style.left = pos.x + "px";
		iframe.style.top = pos.y + "px";
		iframe.style.width = pos.width + "px";
		iframe.style.height = pos.height + "px";
		iframe.style.visibility = "visible";
		iframe.style.display = "inline";
	}
}
/******************************************************************************/
/*	MÉTHODE Fwk_FermerIFrame()
/*		Fermeture d'un IFRAME sous la fenêtre afin de pallier au BUG de IE
/*		(régler à partir de la version 7) sur les contrôles de type SELECT et ActiveX
/*	PARAMÈTRES :
/*		element : Élément duquel le IFrame devra apparaître en dessous
/******************************************************************************/
function CloseIFrame(element)
{
	if (IsIE() && _isIE.version <= 6)
	{
		var iframe = document.getElementById(element.id + "_ifrm");		
		if (iframe != null)
			iframe.parentNode.removeChild(iframe);
	}
}
/******************************************************************************/
/*	MÉTHODE Fwk_ObtenirIFrame()
/*		Création du IFrame dans un objet afin d'être en mesure de lier le 
/*		IFRAME à l'élément qu'il doit recouvrir
/*	PARAMÈTRES :
/*		elementId : Identifiant de l'élément, servira d'index dans la tableau
/******************************************************************************/
function GetIFrame(elementId)
{
	var iframe = document.getElementById(elementId + "_ifrm");
	if (iframe == null)
	{
		var zIndex = document.getElementById(elementId).style.zIndex;
		iframe = document.createElement("iframe");
		with (iframe)
		{
			id = elementId + "_ifrm";
			src = "about:blank"
			style.position = "absolute";
			style.zIndex = zIndex > 0 ? zIndex - 1 : 0;
			style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
		}
		document.body.appendChild(iframe);
	}
	return iframe;
}