var gLangue = new Array();
gLangue['fr'] = "fr_FR";
gLangue['en'] = "en_GB";
gLangue['de'] = "de_DE";
gLangue['es'] = "es_ES";


var SPACE = ' '; // Code ASCII 32 (0x20)
var EXCLAMATION_MARK = '!'; // Code ASCII 33 (0x21)
var QUOTATION_MARK = '"'; // Code ASCII 34 (0x22)
var NUMBER_SIGN = '#'; // Code ASCII 35 (0x23)
var DOLLAR_SIGN = '$'; // Code ASCII 36 (0x24)
var PERCENT_SIGN = '%'; // Code ASCII 37 (0x25)
var AMPERSAND = '&'; // Code ASCII 38 (0x26)
var APOSTROPHE = "'"; // Code ASCII 39 (0x27)
var PARENTHESIS = '()'; // Code ASCII 40,41 (0x28,0x29)
var ASTERISK = '*'; // Code ASCII 42 (0x2A)
var PLUS_SIGN = '+'; // Code ASCII 43 (0x2B)
var COMMA = ','; // Code ASCII 44 (0x2C)
var MINUS_SIGN = '-'; // Code ASCII 45 (0x2D)
var PERIOD = '.'; // Code ASCII 46 (0x2E)
var SLASH = '/'; // Code ASCII 47 (0x2F)
var DIGIT = '0123456789'; // Code ASCII 48..57 (0x30..0x39)
var COLON = ':'; // Code ASCII 58 (0x3A)
var SEMICOLON = ';'; // Code ASCII 59 (0x3B)
var LESS_GREATER_SIGN = '<>'; // Code ASCII 60,62 (0x3C,0x3E)
var EQUAL_SIGN = '='; // Code ASCII 61 (0x3D)
var QUESTION_MARK = '?'; // Code ASCII 63 (0x3F)
var AT = '@'; // Code ASCII 64 (0x40)
var ALPHA_UPPER = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // Code ASCII 65..90 (0x41..0x5A)
var SQUARE_BRACKET = '[]'; // Code ASCII 91,93 (0x5B..0x5D)
var BACKSLASH = '\\'; // Code ASCII 92 (0x5C)
var CIRCUMFLEX_ACCENT = '^'; // Code ASCII 94 (0x5E)
var UNDERSCORE = '_'; // Code ASCII 95 (0x5F)
var GRAVE_ACCENT = '`'; // Code ASCII 96 (0x60)
var ALPHA_LOWER = 'abcdefghijklmnopqrstuvwxyz'; // Code ASCII 97..122 (0x61..0x7A)
var BRACE = '{}'; // Code ASCII 123,125 (0x7B, 0x7D)
var VERTICAL_BAR = '|'; // Code ASCII 124 (0x7C)
var TILDE_ACCENT = '~'; // Code ASCII 126 (0x7E)
var POUND_STERLING_SIGN = '£'; // Code ASCII 163 (0xA3)

var A_UPPER_ACCENT = 'ÀÁÂÃÄÅ'; // Code ASCII 192..197 (0xC0..0xC5)
var C_UPPER_CEDILLA = 'Ç'; // Code ASCII 199 (0xC7)
var E_UPPER_ACCENT = 'ÈÉÊË'; // Code ASCII 200..203 (0xC8..0xCB)
var I_UPPER_ACCENT = 'ÌÍÎÏ'; // Code ASCII 204..207 (0xCC..0xCF)
var N_UPPER_TILDE_ACCENT = 'Ñ'; // Code ASCII 209 (0xD1)
var O_UPPER_ACCENT = 'ÒÓÔÕÖ'; // Code ASCII 210..214 (0xD2..0xD6)
var U_UPPER_ACCENT = 'ÙÚÛÜ'; // Code ASCII 217..220 (0xD9..0xDC)
var Y_UPPER_ACCENT = 'Ý'; // Code ASCII 221 (0xDD)

var A_LOWER_ACCENT = 'àáâãäå'; // Code ASCII 224..229 (0xE0..0xE5)
var C_LOWER_CEDILLA = 'ç'; // Code ASCII 231 (0xE7)
var E_LOWER_ACCENT = 'èéêë'; // Code ASCII 232..235 (0xE8..0xEB)
var I_LOWER_ACCENT = 'ìíîï'; // Code ASCII 236..239 (0xEC..0xEF)
var N_LOWER_TILDE_ACCENT = 'ñ'; // Code ASCII 241 (0xF1)
var O_LOWER_ACCENT = 'òóôõö'; // Code ASCII 242..246 (0xF2..0xF6)
var U_LOWER_ACCENT = 'ùúûü'; // Code ASCII 249..252 (0xF9..0xFC)
var Y_LOWER_ACCENT = 'ýÿ'; // Code ASCII 253,255 (0xFD, 0xFF)

var ALPHA_UPPERS = ALPHA_UPPER + A_UPPER_ACCENT + C_UPPER_CEDILLA + E_UPPER_ACCENT + I_UPPER_ACCENT + N_UPPER_TILDE_ACCENT
	+ O_UPPER_ACCENT + U_UPPER_ACCENT + Y_UPPER_ACCENT;

var ALPHA_LOWERS = ALPHA_LOWER + A_LOWER_ACCENT + C_LOWER_CEDILLA + E_LOWER_ACCENT + I_LOWER_ACCENT + N_LOWER_TILDE_ACCENT
	+ O_LOWER_ACCENT + U_LOWER_ACCENT + Y_LOWER_ACCENT;

var ALPHA = ALPHA_UPPERS + ALPHA_LOWERS;

var ALPHANUM = ALPHA + DIGIT;

var OTHER = SPACE + EXCLAMATION_MARK + QUOTATION_MARK + NUMBER_SIGN + DOLLAR_SIGN + PERCENT_SIGN + AMPERSAND + APOSTROPHE + PARENTHESIS + ASTERISK
 + PLUS_SIGN + COMMA + MINUS_SIGN + PERIOD + SLASH + COLON + SEMICOLON + LESS_GREATER_SIGN + EQUAL_SIGN + QUESTION_MARK + AT + SQUARE_BRACKET
 + BACKSLASH + CIRCUMFLEX_ACCENT + UNDERSCORE + GRAVE_ACCENT + BRACE + VERTICAL_BAR + TILDE_ACCENT + POUND_STERLING_SIGN;

var ALL = ALPHANUM + OTHER;

// Caractères spéciaux
var CR = unescape('%0D'); // Carriage Return '\r'
var LF = unescape('%0A'); // Line Feed '\n'



/****************************************************************************************************
	function setPatternString(pPatternStr, pSubstituteStrArray)
	Cette fonction permet de remplacer dans une chaine de caractères pPatternStr plusieurs pattern par plusieurs chaines
	de caractères de substitution.
	Pour cela, pPatternStr doit contenir des expressions du type "{$i}" où i >= 1.
	La fonction a pour tâche de remplacer {$1} par la première chaine de substitution, {$2} par la 2ème chaine de substitution ...
	Remarque : Cette fonction est basée sur les expressions régulières.
	En entrée :
		pPatternStr = La chaine de caractères modèle que l'on souhaite modifier
		pSubstituteStrArray = Le tableau de chaines de caractères de substitution
	En sortie : Renvoie la chaine de caractères initiale mais alimentée des chaines de caractères de substitution

	Exemple de code :
		var vSubstituteStrArray = new Array();
		vSubstituteStrArray[0] = 'maison';
		vSubstituteStrArray[1] = 'feu';
		var vNewString = setPatternString('la $1 est en $2', vSubstituteStrArray);
		=> vNewString vaut 'la maison est en feu'
	
	Exemple de code :		
		var vNewString = setPatternString('la {$1} est en {$2}', ['télévision', 'couleur']);
		=> vNewString vaut 'la télévision est en couleur'

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					19/04/2002 			OLD							IE4+ et Netscape4+				Code original
*/
function setPatternString(pPatternStr, pSubstituteStrArray) {
	var vNewStr = null;

	if ((typeof(pPatternStr) == 'string') && (typeof(pSubstituteStrArray) == 'object')) {
		vNewStr = pPatternStr;
		var vNbSubstituteStr = pSubstituteStrArray.length;

		if ((vNewStr.length > 0) && (vNbSubstituteStr > 0)) {
			for (var vNumSubstituteStr = 0; vNumSubstituteStr < vNbSubstituteStr; vNumSubstituteStr++) {
				// Remplacement des pattern par chacun des paramètres
				vNewStr = vNewStr.replace(new RegExp('{\\$' + (vNumSubstituteStr + 1) + '}', 'g'), pSubstituteStrArray[vNumSubstituteStr]);
			}
		}
	}
	
	return vNewStr;
}



/****************************************************************************************************
 * Tableau de correspondance caractère Html -> caractère texte
 * ISO 8859-1 (Latin-1) Characters List
 */
var TEXT_CHAR = new Array();
TEXT_CHAR['&quot;'] = '"'; // quotation mark
TEXT_CHAR['&amp;'] = '&'; // ampersand
TEXT_CHAR['&lt;'] = '<'; // less-than sign
TEXT_CHAR['&gt;'] = '>'; // greater-than sign
TEXT_CHAR['&nbsp;'] = ''; // non-breaking space
TEXT_CHAR['&iexcl;'] = '¡'; // inverted exclamation
TEXT_CHAR['&cent;'] = '¢'; // cent sign
TEXT_CHAR['&pound;'] = '£'; // pound sterling
TEXT_CHAR['&curren;'] = '¤'; // general currency sign
TEXT_CHAR['&yen;'] = '¥'; // yen sign
TEXT_CHAR['&brvbar;'] = '¦'; // broken vertical bar
TEXT_CHAR['&sect;'] = '§'; // section sign
TEXT_CHAR['&uml;'] = '¨'; // umlaut (dieresis)
TEXT_CHAR['&copy;'] = '©'; // copyright
TEXT_CHAR['&ordf;'] = 'ª'; // feminine ordinal
TEXT_CHAR['&laquo;'] = '«'; // left angle quote, guillemotleft
TEXT_CHAR['&not;'] = '¬'; // not sign
TEXT_CHAR['&shy;'] = '­'; // soft hyphen
TEXT_CHAR['&reg;'] = '®'; // registered trademark
TEXT_CHAR['&macr;'] = '¯'; // macron accent
TEXT_CHAR['&deg;'] = '°'; // degree sign
TEXT_CHAR['&plusmn;'] = '±'; // plus or minus
TEXT_CHAR['&sup2;'] = '²'; // superscript two
TEXT_CHAR['&sup3;'] = '³'; // superscript three
TEXT_CHAR['&acute;'] = '´'; // acute accent
TEXT_CHAR['&micro;'] = 'µ'; // micro sign
TEXT_CHAR['&para;'] = '¶'; // paragraph sign
TEXT_CHAR['&middot;'] = '·'; // middle dot
TEXT_CHAR['&cedil;'] = '¸'; // cedilla
TEXT_CHAR['&sup1;'] = '¹'; // superscript one
TEXT_CHAR['&ordm;'] = 'º'; // masculine ordinal
TEXT_CHAR['&raquo;'] = '»'; // right angle quote, guillemotright
TEXT_CHAR['&frac14;'] = '¼'; // fraction one-fourth
TEXT_CHAR['&frac12;'] = '½'; // fraction one-half
TEXT_CHAR['&frac34;'] = '¾'; // fraction three-fourths
TEXT_CHAR['&iquest;'] = '¿'; // inverted question mark
TEXT_CHAR['&Agrave;'] = 'À'; // capital A, grave accent
TEXT_CHAR['&Aacute;'] = 'Á'; // capital A, acute accent
TEXT_CHAR['&Acirc;'] = 'Â'; // capital A, circumflex accent
TEXT_CHAR['&Atilde;'] = 'Ã'; // capital A, tilde
TEXT_CHAR['&Auml;'] = 'Ä'; // capital A, dieresis or umlaut mark
TEXT_CHAR['&Aring;'] = 'Å'; // capital A, ring
TEXT_CHAR['&AElig;'] = 'Æ'; // capital AE diphthong (ligature)
TEXT_CHAR['&Ccedil;'] = 'Ç'; // capital C, cedilla
TEXT_CHAR['&Egrave;'] = 'È'; // capital E, grave accent
TEXT_CHAR['&Eacute;'] = 'É'; // capital E, acute accent
TEXT_CHAR['&Ecirc;'] = 'Ê'; // capital E, circumflex accent
TEXT_CHAR['&Euml;'] = 'Ë'; // capital E, dieresis or umlaut mark
TEXT_CHAR['&Igrave;'] = 'Ì'; // capital I, grave accent
TEXT_CHAR['&Iacute;'] = 'Í'; // capital I, acute accent
TEXT_CHAR['&Icirc;'] = 'Î'; // capital I, circumflex accent
TEXT_CHAR['&Iuml;'] = 'Ï'; // capital I, dieresis or umlaut mark
TEXT_CHAR['&ETH;'] = 'Ð'; // capital Eth, Icelandic
TEXT_CHAR['&Ntilde;'] = 'Ñ'; // capital N, tilde
TEXT_CHAR['&Ograve;'] = 'Ò'; // capital O, grave accent
TEXT_CHAR['&Oacute;'] = 'Ó'; // capital O, acute accent
TEXT_CHAR['&Ocirc;'] = 'Ô'; // capital O, circumflex accent
TEXT_CHAR['&Otilde;'] = 'Õ'; // capital O, tilde
TEXT_CHAR['&Ouml;'] = 'Ö'; // capital O, dieresis or umlaut mark
TEXT_CHAR['&times;'] = '×'; // multiply sign
TEXT_CHAR['&Oslash;'] = 'Ø'; // capital O, slash
TEXT_CHAR['&Ugrave;'] = 'Ù'; // capital U, grave accent
TEXT_CHAR['&Uacute;'] = 'Ú'; // capital U, acute accent
TEXT_CHAR['&Ucirc;'] = 'Û'; // capital U, circumflex accent
TEXT_CHAR['&Uuml;'] = 'Ü'; // capital U, dieresis or umlaut mark
TEXT_CHAR['&Yacute;'] = 'Ý'; // capital Y, acute accent
TEXT_CHAR['&THORN;'] = 'Þ'; // capital THORN, Icelandic
TEXT_CHAR['&szlig;'] = 'ß'; // small sharp s, German (sz ligature)
TEXT_CHAR['&agrave;'] = 'à'; // small a, grave accent
TEXT_CHAR['&aacute;'] = 'á'; // small a, acute accent
TEXT_CHAR['&acirc;'] = 'â'; // small a, circumflex accent
TEXT_CHAR['&atilde;'] = 'ã'; // small a, tilde
TEXT_CHAR['&auml;'] = 'ä'; // small a, dieresis or umlaut mark
TEXT_CHAR['&aring;'] = 'å'; // small a, ring
TEXT_CHAR['&aelig;'] = 'æ'; // small ae diphthong (ligature)
TEXT_CHAR['&ccedil;'] = 'ç'; // small c, cedilla
TEXT_CHAR['&egrave;'] = 'è'; // small e, grave accent
TEXT_CHAR['&eacute;'] = 'é'; // small e, acute accent
TEXT_CHAR['&ecirc;'] = 'ê'; // small e, circumflex accent
TEXT_CHAR['&euml;'] = 'ë'; // small e, dieresis or umlaut mark
TEXT_CHAR['&igrave;'] = 'ì'; // small i, grave accent
TEXT_CHAR['&iacute;'] = 'í'; // small i, acute accent
TEXT_CHAR['&icirc;'] = 'î'; // small i, circumflex accent
TEXT_CHAR['&iuml;'] = 'ï'; // small i, dieresis or umlaut mark
TEXT_CHAR['&eth;'] = 'ð'; // small eth, Icelandic
TEXT_CHAR['&ntilde;'] = 'ñ'; // small n, tilde
TEXT_CHAR['&ograve;'] = 'ò'; // small o, grave accent
TEXT_CHAR['&oacute;'] = 'ó'; // small o, acute accent
TEXT_CHAR['&ocirc;'] = 'ô'; // small o, circumflex accent
TEXT_CHAR['&otilde;'] = 'õ'; // small o, tilde
TEXT_CHAR['&ouml;'] = 'ö'; // small o, dieresis or umlaut mark
TEXT_CHAR['&divide;'] = '÷'; // division sign
TEXT_CHAR['&oslash;'] = 'ø'; // small o, slash
TEXT_CHAR['&ugrave;'] = 'ù'; // small u, grave accent
TEXT_CHAR['&uacute;'] = 'ú'; // small u, acute accent
TEXT_CHAR['&ucirc;'] = 'û'; // small u, circumflex accent
TEXT_CHAR['&uuml;'] = 'ü'; // small u, dieresis or umlaut mark
TEXT_CHAR['&yacute;'] = 'ý'; // small y, acute accent
TEXT_CHAR['&thorn;'] = 'þ'; // small thorn, Icelandic
TEXT_CHAR['&yuml;'] = 'ÿ'; // small y, dieresis or umlaut mark


/****************************************************************************************************
	convertHtmlToText(pString)
	Cette fonction permet de remplacer les codes Html des caractères de la chaine de caractères pString.
	Remarque : Cette fonction utilise le tableau de correspondance TEXT_CHAR (caractère Html/caractère texte).
	En entrée :
		pString = La chaine de caractères que l'on souhaite convertir
	En sortie :
		Renvoie la chaine de caractères convertie

	Exemple de code :
		var vWord = 'T&eacute;l&eacute;phone';
		var vNewWord = convertHtmlToText(vWord);
		=> vNewWord vaut 'Téléphone'

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					26/09/2003 			OLD							IE5+ et Netscape6+				Code original
*/
function convertHtmlToText(pString) {
	var vFound = true;

	if ((typeof(pString) == 'string') && (pString)) {
		while (vFound) {
			vFound = false;	
			var vPosBegin = pString.indexOf('&');
			if (vPosBegin > -1) {
				var vPosEnd = pString.indexOf(';', vPosBegin);

				if (vPosEnd > -1) {
					var vHtmlChar = pString.substring(vPosBegin, vPosEnd + 1);
					
					if (TEXT_CHAR[vHtmlChar]) { 
						// Remplacement d'un code Html par un caractère
						pString = pString.replace(vHtmlChar, TEXT_CHAR[vHtmlChar]);
						vFound = true;
					}
				}
			}
		}
	}
	
	return pString;
}

