/******************************************************************************************************************************************
	Regroupement de fonctions utilitaires pouvant être utilisés sur n'importe quelle application web
	
	Liste des fonctions A-Z:
	
	- ApplyFilter
	- DateAdd
	- DimensionImage
	- SetCookie
	- GetCookie
	- DelCookie
	- fadeIn
	- fadeOut
	- FormatDateHeure
	- FormatNumber
	- FormatNumerique (dépréciée)
	- FormatMonetaire
	- FormatSMD
	- getLeft
	- getTop
	- getScrollX
	- getScrollY
	- GetXmlHttpObject
	- LancerEvenement
	- Left
	- MemorisePosition
	- Replace
	- Right
	- RTrim
	- Split
	- SupprimerAccents
	- Val
	- ValidationCourriel
******************************************************************************************************************************************/

var strSepDecClient = ('' + 1/2).substring(1, 2);

//Constantes pour format de dates
var smdHeureCourte = 1;
var smdHeureAbregee = 2;
var smdHeureLongue = 3;
var smdHeureComplete = 4;
var smdDateCourte = 10;
var smdDateAbregee = 20;
var smdDateAbregeeSansAnnee = 30;
var smdDateLongue = 40;
var smdDateComplete = 50;

//Les 2 caractères Hexa du LCID correspondant à la langue
var HexLCID_Anglais = '09';
var HexLCID_Francais = '0C';

function Split(strChaine, strSeparateur)
{
	//Redifinition de la fonction Split de VB
	
	var arrSplit = new Array();
	var i = 0;
			
	while (strChaine.indexOf(strSeparateur) >= 0) {
		arrSplit[i] = strChaine.substring(0, strChaine.indexOf(strSeparateur));
		strChaine = strChaine.substring(strChaine.indexOf(strSeparateur) + strSeparateur.length, strChaine.length);
		i++;
	}
	arrSplit[i] = strChaine
		
	return(arrSplit);
}


function DimensionImage(image, width, height)
{
	//Dimensionne une image aux valeurs maximum souaitées en conservant le ratio

	if (image.width > width)	{
		intRatio = (width / image.width);
		image.height = image.height * intRatio;
		image.width = width;
	}
	
	if (image.height > height) {
		intRatio = (height / image.height);
		image.width = image.width * intRatio;
		image.height = height;
	}
}

function FormatNumber(v_Number)
{
	//Routine qui récupère un nombre et ajoute un espace comme séparateur de milliers si nécessaire
	var data2 = "";
	var jsArray = new Array();
	var i=0;
	var str;
	var pos;
	var strBefore = "";
	var strAfter = "";
	var Formated_Str;
	var v_length = 0;
				
	data2 = ""+v_Number;
	v_length = data2.length;
				
	// Find the point 
	var found = false;
	var car = "";
	for(i = 0; i < v_length; i++)
	{
		car = data2.substring(i,i+1);
					
		if(car == '.')
		{
			strBefore = data2.substring(0,i);
			strAfter = data2.substring(i+1,v_length);
			found = true;
			break;
		}
	}
	i = 0;
	// parses the sring 
	if(found==true && strBefore != "")
	{
		data2 = strBefore;
	}
				
	Nb_Car = data2.length;
				
	if(Nb_Car > 3)
	{
		while(Nb_Car > 0)
		{
			if(Nb_Car < 3) 
			{
				str = data2.substring(0, Nb_Car)
			}
			else
			{
				str = data2.substring((Nb_Car - 3), Nb_Car)
			}
			jsArray[i] = str;
			i++;
			Nb_Car = Nb_Car - str.length;
		}
		Formated_Str = "";
		for(j = i-1; j>= 0 ; j--)
		{
			if(jsArray[j] != "")
			{
				if(Formated_Str == "")
				{
					Formated_Str = jsArray[j]
				}
				else
				{
					Formated_Str = Formated_Str + ' ' + jsArray[j];
				}
			}
		}
		if(found)
		{
			Formated_Str = Formated_Str + '.' + strAfter;
		}
	}
	else
	{
		Formated_Str = v_Number;
	}
				
	return Formated_Str
}			
			
function FormatNumerique(strNombre, strDevise, strLang, strSepDecServ)
{	
	//DÉPRÉCIÉE
	//Format un nombre selon la langue demandée, pouvant égalemetn inclure un symbole monétaire
    if(strLang == "")
    {
		strLang = 'FR';
	}

	strNombre = Val(strNombre);
			    
    dblNombre = parseFloat(strNombre);
			    
    if(strLang == 'FR')
    {
		strFormat = FormatNumber(dblNombre.toFixed(2)) + ' ' + strDevise;
		if(strFormat.indexOf(strSepDecClient) >= 0)
		{
			strFormat = strFormat.substring(0, strFormat.indexOf(strSepDecClient)) + ',' + strFormat.substring(strFormat.indexOf(strSepDecClient) + 1, strFormat.length);
		}
	}
	else
	{
		strFormat = strDevise.substring(0, 1) + FormatNumber(dblNombre.toFixed(2)) + strDevise.substring(1, strDevise.length);
		if(strFormat.indexOf(strSepDecClient) >= 0)
		{
			strFormat = strFormat.substring(0, strFormat.indexOf(strSepDecClient)) + '.' + strFormat.substring(strFormat.indexOf(strSepDecClient) + 1, strFormat.length);
		}
	}
				
	return(strFormat);
}

function FormatMonetaire(curMontant, strSymbolDevise, strLang, strSepDecServ)
{	
	var strFormat;

    //Simule la fonction FormatCurrency mais avec une devise paramétrable
	strFormat = Replace(FormatNumber(curMontant.toFixed(2)), strSepDecClient, strSepDecServ);
    if (strLang == 'EN')
		strFormat = strSymbolDevise + ' ' + strFormat;
	else
		strFormat += ' ' + strSymbolDevise;
				
	return(strFormat);
}

function FormatSMD(datFormat, strFormat, LCID)
{	
	//Redifinition javascript de la fonction Format de VB (prend en charge les dates uniquement)
	var intI;
	var intAnnee;
	var intMois;
	var intJour;
	var intJourSem;
	var intHeure;
	var intMinute;
	var intSeconde;
	var strFormat;
	var strFormatTemp;
	var bolFormat = true;

	if (!LCID) LCID = 4105; //en-us par défaut
	
	if (LCID.toString(16) == HexLCID_Francais) {
		var strJour = new Array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi');
		var strJourCourt = new Array('dim', 'lun', 'mar', 'mer', 'jeu', 'ven', 'sam');
		var strMois = new Array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');
		var strMoisCourt = new Array('jan', 'fév', 'mars', 'avr', 'mai', 'juin', 'juil', 'août', 'sept', 'oct', 'nov', 'déc');
	}
	else {
		var strJour = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
		var strJourCourt = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
		var strMois = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
		var strMoisCourt = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
	}
	//YYYY Années
	//MM Mois
	//DD Jours
	//HH Heures (format 24h)
	//hh Heures (format 12h)
	//NN Minutes
	//SS Secondes

	intAnnee = datFormat.getFullYear();
	intMois = datFormat.getMonth();
	intJour = datFormat.getDate();
	intJourSem = datFormat.getDay();
	intHeure = datFormat.getHours();
	intMinute = datFormat.getMinutes();
	intSeconde = datFormat.getSeconds();

	strRetour = '';
	intI = 0;
	while(intI < strFormat.length)
	{
		strFormatTemp = '';
		while (bolFormat || strFormat.substring(intI, intI + 1) == strFormat.substring(intI-1, intI))
		{
			strFormatTemp = strFormatTemp + strFormat.substring(intI, intI+1);
			bolFormat = false;
			intI++;
		}
		
		bolFormat = true;
		switch(strFormatTemp)
		{
			case 'YYYY':
			case 'yyyy':
				strRetour += intAnnee;
				break;
			case 'YY':
			case 'yy':
				strRetour += Right('00' + intAnnee, 2);
				break;
			case 'MMMM':
			case 'mmmm':
				strRetour += strMois[intMois];
				break;
			case 'MMM':
			case 'mmm':
				strRetour += strMoisCourt[intMois];
				break;
			case 'MM':
			case 'mm':
				strRetour += Right('00' + (intMois + 1), 2);
				break;
			case 'M':
			case 'm':
				strRetour += (intMois + 1);
				break;
			case 'DDDD':
			case 'dddd':
				strRetour += strJour[intJourSem];
				break;
			case 'DDD':
			case 'ddd':
				strRetour += strJourCourt[intJourSem];
				break;
			case 'DD':
			case 'dd':
				strRetour += Right('00' + intJour, 2);
				break;
			case 'D':		
			case 'd':		
				strRetour += intJour;
				break;
			case 'HH':
				strRetour += Right('00' + intHeure, 2);
				break;
			case 'H':
				strRetour += intHeure;
				break;
			case 'hh':
				if (intHeure > 12)
					strRetour += Right('00' + (intHeure - 12), 2);
				else
					strRetour += Right('00' + (intHeure), 2);
				break;
			case 'h':
				if (intHeure > 12)
					strRetour += (intHeure - 12);
				else
					strRetour += intHeure;
				break;
			case 'NN':
			case 'nn':
				strRetour += Right('00' & intMinute, 2);
				break;
			case 'N':
			case 'n':
				strRetour += intMinute;
				break;
			case 'SS':
			case 'ss':
				strRetour += Right('00' + intSeconde, 2);
				break;
			case 'S':
			case 's':
				strRetour += intSeconde;
				break;
			default:
				strRetour += strFormatTemp;
				break;
		}
	}
	return(strRetour);
}

function FormatDateHeure(datFormat, TypeFormat, LCID)
{
	//FONCTION SEMBLABLE À FormatDateTime de VB
	var strAM_PM;
	var bolDate;
	var strRetour = '';
	var datFormat2 = new Date(datFormat.getFullYear(), datFormat.getMonth(), datFormat.getDate(), datFormat.getHours(), datFormat.getSeconds());
		
	bolDate = false;

	if (!LCID) LCID = 4105; //en-us par défaut

	//################# FORMATAGE DE LA DATE #################	
	if (TypeFormat >= smdDateComplete) {
		//Lundi 24 janvier 2005
		
		switch(LCID) {
			case 1033:
			case 4105:	//Cas particulier pour Anglais Canada et US (jour et mois inversés)
				strRetour = FormatSMD(datFormat2, 'DDDD, MMMM D, YYYY');
				break;
			default:
				strRetour = FormatSMD(datFormat2, 'DDDD D MMMM YYYY');
				break;
		}
			
		bolDate = true;
		TypeFormat = TypeFormat - smdDateComplete;
	}
	else {
		if(TypeFormat >= smdDateLongue) {
			//Lun 24 janvier 2005
			
			switch(LCID) {
				case 1033:
				case 4105:	//Cas particulier pour Anglais Canada et US (jour et mois inversés)
					strRetour = FormatSMD(datFormat2, 'DDD, MMMM D, YYYY');
					break;
				default:
					strRetour = FormatSMD(datFormat2, 'DDD D MMMM YYYY');
					break;
			}
				
			bolDate = true;
			TypeFormat = TypeFormat - smdDateLongue;
		}
		else {
			if(TypeFormat >= smdDateAbregeeSansAnnee) {
				//Lun 24 jan

				switch(LCID) {
					case 1033:
					case 4105:	//Cas particulier pour Anglais Canada et US (jour et mois inversés)
						strRetour = FormatSMD(datFormat2, 'DDD, MMM D');
						break;
					default:
						strRetour = FormatSMD(datFormat2, 'DDD D MMM');
						break;
				}

				bolDate = true;
				TypeFormat = TypeFormat - smdDateAbregeeSansAnnee;
			}
			else {
				if(TypeFormat >= smdDateAbregee) {
					//Lun 24 jan 05
						
					switch(LCID) {
						case 1033:
						case 4105:	//Cas particulier pour Anglais Canada et US (jour et mois inversés)
							strRetour = FormatSMD(datFormat2, 'DDD, MMM D, YY');
							break;
						default:
							strRetour = FormatSMD(datFormat2, 'DDD D MMM YY');
							break;
					}

					bolDate = true;
					TypeFormat = TypeFormat - smdDateAbregee;
				}
				else {
					if(TypeFormat >= smdDateCourte) {
						//24-01-2005

						switch(LCID) {
							case 1033:
							case 4105:	//Cas particulier pour Anglais Canada et US (jour et mois inversés)
								strRetour = FormatSMD(datFormat2, 'MM/DD/YYYY');
								break;
							default:
								strRetour = FormatSMD(datFormat2, 'DD/MM/YYYY');
								break;
						}

						bolDate = true;
						TypeFormat = TypeFormat - smdDateCourte;
					}
				}
			}
		}
	}
	
	//################# FORMATAGE DE L'HEURE #################
	switch(TypeFormat) {
		case smdHeureCourte:
		case smdHeureAbregee:
		case smdHeureLongue:
			if (datFormat2.getHours() > 0 || datFormat2.getMinutes() > 0) {
				if (bolDate) {
					//Virgule entre la date et l'heure
					strRetour += ', ';			
				}

 				switch(Right(LCID.toString(16), 2)) {
					case HexLCID_Francais:
						//Langue française, on affiche l'heure au format 24h
						//avec un 'h' comme séparateur
						
						if (datFormat2.getMinutes() || TypeFormat >= smdHeureAbregee)
							strRetour += FormatSMD(datFormat2, 'H') + 'h' + FormatSMD(datFormat2, 'NN');
						else
							strRetour += FormatSMD(datFormat2, 'H') + 'h';

						break;
				
					case HexLCID_Anglais:
						//Langue anglaise, on affiche la date format 12h avec a.m./p.m.
					
						//Afficher les dates avec format a.m./p.m.
						if (datFormat2.getHours() > 11)
							strAM_PM = 'p.m.';
						else
							strAM_PM = 'a.m.';
						
						if (datFormat2.getHours() > 12)
							datFormat2.setHours(datFormat2.getHours() - 12);
							
						if (datFormat2.getMinutes() > 0)
							strRetour += ' ' + FormatSMD(datFormat2, 'H:NN');
						else
							strRetour += ' ' + FormatSMD(datFormat2, 'H');
						
						strRetour = strRetour + ' ' + strAM_PM;
						break;
						
					default:
 						//Dans tous les autres cas on utilise ':' comme séparateur
						//avec un format 24h
						strRetour += FormatSMD(datFormat2, 'HH:NN');
				}
			}
			break;
			
		case smdHeureComplete:
			if (bolDate) {
				//Virgule entre la date et l'heure
				strRetour += ', '
			}
			strRetour += datFormat2.toLocaleTimeString;
			break;
	}
	
	return(strRetour);
}

function Replace(strTexte, strRecherche, strRemplace)
{
	//Redéfinition de la fonction Replace de VB, remplace une expression de caractère par une autre dans une chaîne

	var i = 0;
	i = strTexte.indexOf(strRecherche);
	while (i >= 0) {
		strTexte = strTexte.substring(0, i) + strRemplace + strTexte.substring(i+strRecherche.length, strTexte.length);
		i = strTexte.indexOf(strRecherche, i + 1);
	}
	
	return(strTexte);
}

function Left(strTexte, intNombre)
{
	//Redéfinition de la fonction Left de VB, retourne les caractères de gauche d'une chaine
	return(strTexte.substring(0, intNombre));
}

function Right(strTexte, intNombre)
{
	//Redéfinition de la fonction Right de VB, retourne les caractères de droite d'une chaine
	return(strTexte.substring(strTexte.length - intNombre, strTexte.length));
}

function DateAdd(strType, intNombre, datDate)
{
	//Redifinition de la fonction DateAdd de VB, augmente une date du nombre demandé

	var datNouvelle = new Date(datDate.getFullYear(), datDate.getMonth(), datDate.getDate(), datDate.getHours(), datDate.getMinutes(), datDate.getSeconds());
	
	switch(strType) {
		case 'y':	datNouvelle.setFullYear(datNouvelle.getFullYear() + intNombre); break;
		case 'm':	datNouvelle.setMonth(datNouvelle.getMonth() + intNombre); break;
		case 'd':	datNouvelle.setDate(datNouvelle.getDate() + intNombre); break;
		case 'h':	datNouvelle.setHours(datNouvelle.getHours() + intNombre); break;
		case 'n':	datNouvelle.setMinutes(datNouvelle.getMinutes() + intNombre); break;
		case 's':	datNouvelle.setSeconds(datNouvelle.setSeconds() + intNombre); break;
	}

	return(datNouvelle);
}

function Val(strChaine)
{
	//Retourne les caractères numériques d'une expression de caractères

	var strChaine2 = '';
	var intI;
	
	for (intI = 0; intI < strChaine.length; intI++) {
		if(("0123456789" + strSepDecClient).indexOf(strChaine.charAt(intI)) >= 0) {
			strChaine2 = strChaine2 + strChaine.charAt(intI);
		}
	}
	
	return (strChaine2);
}

function ValidationCourriel(strCourriel) {

	//Valide le format d'une adresse de courrier électronique

	var i;
	var strAlpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var strNum = '0123456789'
	var strSpeciaux = '-_.@';
	var intPosArobas;
	var intPosExtension;
	
	//Vérifier que le courriel entré ne contient que les caractères valides,
	//soit les caractères alphanumériques ainsi que certains caractèrs spéciaux.
	for (i=0; i<strCourriel.length; i++) {
		if ((strAlpha + strNum + strSpeciaux).indexOf(strCourriel.charAt(i)) == -1) {
			return(false);
		}
	}
	
	//Il doit y avoir un et un seul arobas
	intPosArobas = strCourriel.indexOf('@');
	if (intPosArobas == -1 || strCourriel.lastIndexOf('@') != intPosArobas) {
		return(false);
	}
	
	//Il ne peut pas y avoir 2 points consécutifs
	if (strCourriel.indexOf('..') >= 0) {
		return(false);
	}
	
	//Vérifier qu'une extension est présente après l'arobas
	intPosExtension = strCourriel.lastIndexOf('.');
	if (intPosArobas >= intPosExtension) {
		return(false);
	}
	
	/* Vérifier qu'il y a au moins 1 caractère alphabétique:
		- Au début et à la fin du courriel;
		- Au début du domaine du courriel;
		- Au début de l'extension */
	if (strAlpha.indexOf(strCourriel.charAt(0)) == -1 || strAlpha.indexOf(strCourriel.charAt(strCourriel.length-1)) == -1 || strAlpha.indexOf(strCourriel.charAt(intPosArobas + 1)) == -1 || strAlpha.indexOf(strCourriel.charAt(intPosExtension + 1)) == -1) {
		return(false);
	}
	
	return(true);
} 

function getLeft(MyObject)
{
	//Fonction permettant de connaître la position d'un objet
	//par rapport au bord gauche de la page.
	//Cet objet peut être à l'intérieur d'un autre objet.

    if (MyObject.offsetParent)
        return (MyObject.offsetLeft + getLeft(MyObject.offsetParent));
    else 
        return (MyObject.offsetLeft);
} 
    
function getTop(MyObject)
{
	//Fonction permettant de connaître la position d'un objet
	//par rapport au bord haut de la page.
	//Cet objet peut être à l'intérieur d'un autre objet.

    if (MyObject.offsetParent)
        return (MyObject.offsetTop + getTop(MyObject.offsetParent));
    else
        return (MyObject.offsetTop);
}

function ApplyFilter(strChaine, strFiltre, bolCaseSensitive)
{
	//Fonction permettant de filtrer le contenu d'une string
	//Ne retourne que les caractères contenus dans le filtre
	var i;

	if (bolCaseSensitive == undefined)
		bolCaseSensitive = false;
	i=0;
	while(i<strChaine.length) {
		if (strFiltre.indexOf(strChaine.substring(i, i+1)) < 0 || !bolCaseSensitive && (strFiltre.indexOf(strChaine.substring(i, i+1).toUpperCase()) < 0 || strFiltre.indexOf(strChaine.substring(i, i+1).toLowerCase()) < 0)) {
			strChaine = strChaine.replace(strChaine.substring(i, i+1), '');
			i=0;
		}
		else {
			i++;
		}
	}

	return(strChaine);
}

function SetCookie(name, value, expires, path, domain, secure ) 
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
	( ( path ) ? ";path=" + path : "" ) + 
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function GetCookie( name ) {
	// this function gets the cookie, if it exists
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) &&
	( name != document.cookie.substring( 0, name.length ) ) )
	{
	return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function DelCookie( name, path, domain ) {
	// this deletes the cookie when called
	if ( GetCookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +	
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function fadeIn(object, fadeTimeMs, maxOpacity)
{
	var i=0;
	var j=0;
	while (i+10<maxOpacity)
	{
		i+=10;
		setTimeout('setOpacity(document.getElementById(\'' + object.id + '\'), ' + i + ')', fadeTimeMs/10 * j);
		j++;
	}
	setTimeout('setOpacity(document.getElementById(\'' + object.id + '\'), '+ maxOpacity + ')', fadeTimeMs);
}
function fadeOut(object, fadeTimeMs, minOpacity)
{
	var i=100;
	var j=0;
	while (i-10>minOpacity)
	{
		i-=10;
		setTimeout('setOpacity(document.getElementById(\'' + object.id + '\'), ' + i + ')', fadeTimeMs/10 * j);
		j++;
	}
	setTimeout('setOpacity(document.getElementById(\'' + object.id + '\'), '+ minOpacity + ')', fadeTimeMs);
}
function setOpacity(obj, opacity)
{
	if (obj.style.MozOpacity != undefined)
	{
		obj.style.MozOpacity=opacity/100;
	}
	else if (obj.filters != undefined && obj.filters.alpha != undefined && obj.filters.alpha.opacity != undefined)
	{
		obj.filters.alpha.opacity=opacity;
	}
}

function RTrim( strTexte )
{
	//Redéfinition de la fonction RTrim de VB, enlève les caractères vide de droite
	var i;
	var j = 0;
	for ( i = strTexte.length; i >= 1; i-- ) {
		if ( strTexte.substring( i - 1, i ) == " " ) {
			j++;
		}
		else {
			break;
		}
	}
	return( Left( strTexte, strTexte.length - j ) );
}

var MemPositionCookie = '';
function MemorisePosition(pageId) {
	//Fonction qui mémorise et restore la position vertical lorsque la page se rappelle
	MemPositionCookie = 'PosY_' + pageId;
	var scrollY = GetCookie(MemPositionCookie);
	
	if (!isNaN(scrollY) && scrollY != null && (location.hash == '' || location.hash == undefined))
		window.scrollTo(0, scrollY);

	try {
		window.attachEvent('onunload', MemorisePositionSetCookie);
	}
	catch(err) {
		window.addEventListener('unload', MemorisePositionSetCookie, false);
	}
}

function MemorisePositionSetCookie()
{
	//Faire expirer le cookie dans 5 secondes, afin de ne pas mémoriser la position trop longtemps. 
	//Car si la personne quitte la page et revient plus tard on ne veut pas repositionner au même endroit.
	SetCookie(MemPositionCookie, getScrollY(), 5/86400, '/');	//secondes en fraction de jour = n secondes/86400
}

function getScrollX()
{
	//Retoure la position horizontale dans la page
	var scrollX;
	if (document.all)
	{
		if (!document.documentElement.scrollLeft)
			scrollX = document.body.scrollLeft;
		else
			scrollX = document.documentElement.scrollLeft;
		}   
	else
	{
		scrollX = window.pageXOffset;
	}
	
	return(scrollX);
}
function getScrollY()
{
	//Retoure la position vertical dans la page
	var scrollY;
	if (document.all)
	{
		if (!document.documentElement.scrollTop)
			scrollY = document.body.scrollTop;
		else
			scrollY = document.documentElement.scrollTop;
		}   
	else
	{
		scrollY = window.pageYOffset;
	}
	return(scrollY);
}

function LancerEvenement(evtNom, objet)
{
	//Par défaut, les événements comme le "change" ne sont pas exécutés 
	//automatiquement lorsqu'on modifie la valeur d'un objet par programmation
	//Utiliser cette fonction pour lancer manuellement l'événement 
	
	if (document.createEventObject){   
		// IE   
		var evt = document.createEventObject();   
		objet.fireEvent('on' + evtNom, evt);
	}
	else {  
		var evt = document.createEvent("HTMLEvents");
		evt.initEvent(evtNom, true, true);
		objet.dispatchEvent(evt);
	}
}
function GetXmlHttpObject()
{
	var xmlHttp = null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function SupprimerAccents(strTexte)
{
	//Prend une chaîne et remplace les caractères accentués

	var strChaine1 = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸŠŽàáâãäåçèéêëìíîïñòóôõöùúûüýÿšž";
	var strChaine2 = "AAAAAACEEEEIIIINOOOOOUUUUYYSZaaaaaaceeeeiiiinooooouuuuyysz";
		    
	for (var i = 0; i < strChaine1.length; i++)
	{
		strTexte = strTexte.replace(strChaine1.charAt(i), strChaine2.charAt(i))
    }
	
    return strTexte
}