// Convertit les caractères non HTML par des vrais (&qqch) sauf les espaces insécables et les & et < et >
function convertHtml(str) {
	var thtml = new Array("&aacute;", "&acirc;", "&acute;", "&aelig;", "&agrave;", "&aring;", "&atilde;", "&auml;",
				"&brvbar;", "&ccedil;", "&cedil;", "&cent;", "&copy;", "&deg;", "&divide;", "&eacute;", "&ecirc;",
				"&egrave;", "&eth;", "&euml;", "&frac12;", "&frac14;", "&frac34;", "&iacute;", "&icirc;", "&iexcl;",
				"&igrave;", "&iquest;", "&iuml;", "&laquo;", "&macr;", "&micro;", "&middot;", "&not;", "&ntilde;",
				"&oacute;", "&ocirc;", "&ograve;", "&ordf;", "&ordm;", "&oslash;", "&otilde;", "&ouml;", "&para;", "&plusmn;",
				"&pound;", "&raquo;", "&reg;", "&sect;", "&shy;", "&sup1;", "&sup2;", "&sup3;", "&szlig;", "&thorn;",
				"&times;", "&uacute;", "&ucirc;", "&ugrave;", "&uml;", "&uuml;", "&yacute;", "&yen;", "&yuml;" , "", "");
	var ttxt = new Array("á", "â", "´", "æ", "à", "å", "ã", "ä",
				"¦", "ç", "¸", "¢", "©", "°", "÷", "é", "ê",
				"è", "ð", "ë", "½", "¼", "¾", "í", "î", "¡",
				"ì", "¿", "ï", "«", "¯", "µ", "·", "¬", "ñ",
				"ó", "ô", "ò", "ª", "º", "ø", "õ", "ö", "¶", "±",
				"£", "»", "®", "§", "­", "¹", "²", "³", "ß", "þ",
				"×", "ú", "û", "ù", "¨", "ü", "ý", "¥", "ÿ" , "\n", "\r");
	var el;
	var reg;
	for(i=0 ; i < ttxt.length ; i++) {
		reg = new RegExp(ttxt[i]);
		el=str.split(reg);
		str=el.join(thtml[i]);
	}
	return str;
}

// Lance une boite de dialogue proposant 3 choix : oui, non, ou annuler
// renvoie ensuite 1 pour oui, 0 pour non et -1 pour annuler
function confirmYesNoCancel(txt, hauteur) {
	var sFeatures;
	sFeatures = "dialogHeight:"+hauteur+"px;dialogWidth:450px;help:no;scroll:no;status:no";

	var aArguments;
	aArguments = new Array();

	return window.showModalDialog("_msgbox.php?message="+txt+"&type=1&titre=Confirmation", aArguments, sFeatures);
}

function contrainte(e,type) {
	e=e?e:window.event;
	key=e.keyCode?e.keyCode:e.which;
	switch (type)
	{
		case 'G':
			resultat=(key!='"'.charCodeAt());
			break;
		case 'N':	// numeriques uniquement
			resultat=(key>='0'.charCodeAt() && key<='9'.charCodeAt()) || (key==8) || (key==13) || (key==27);
			break;
		case 'T':	// numeriques uniquement + espace + '+' + ()
			resultat=(key>='0'.charCodeAt() && key<='9'.charCodeAt()) || (key=='+'.charCodeAt()) || (key=='('.charCodeAt()) ||(key==')'.charCodeAt()) || (key==32) || (key==8) || (key==13) || (key==27);
			break;
		case 'D':	// décimaux uniquement
			resultat=(key>='0'.charCodeAt() && key<='9'.charCodeAt()) || (key==8) || (key==27) || (key==','.charCodeAt()) || (key=='.'.charCodeAt()) || (key==13);
			break;
		case 'U':	// majuscules uniquement
			resultat=(key>='A'.charCodeAt() && key<='Z'.charCodeAt()) || (key==8) || (key==13) || (key==27);
			break;
		case 'L':	// minuscules uniquement
			resultat=(key>='a'.charCodeAt() && key<='z'.charCodeAt()) || (key==8) || (key==13) || (key==27);
			break;
		case 'a':	// alphabétique.
			resultat=(key>='A'.charCodeAt() && key<='Z'.charCodeAt()) || (key>='a'.charCodeAt() && key<='z'.charCodeAt()) || (key==8) || (key==13) || (key==27);
			break;
		case 'A':	// alphanumérique.
			resultat=(key>='A'.charCodeAt() && key<='Z'.charCodeAt()) || (key>='a'.charCodeAt() && key<='z'.charCodeAt()) || (key>='0'.charCodeAt() && key<='9'.charCodeAt()) || (key==8) || (key==13) || (key==27);
			break;
		case 'S':	// alphanumérique avec espaces & - (adresse, ville, nom...).
			resultat=(key>='A'.charCodeAt() && key<='Z'.charCodeAt()) || (key>='a'.charCodeAt() && key<='z'.charCodeAt()) || (key>='0'.charCodeAt() && key<='9'.charCodeAt()) || (key==8) || (key==13) || (key==32) || (key==45) || (key==27);
			break;
		case 'M':	// alphanumérique avec .-@ (format mail)
			resultat=(key>='A'.charCodeAt() && key<='Z'.charCodeAt()) || (key>='a'.charCodeAt() && key<='z'.charCodeAt()) || (key>='0'.charCodeAt() && key<='9'.charCodeAt()) || key=='.'.charCodeAt() || key=='-'.charCodeAt() || key=='_'.charCodeAt() || key=='@'.charCodeAt() || (key==8) || (key==13)|| (key==27) ;
			break;
	}
	if(!resultat && key==9) resultat=true;
	return resultat;
}


/**
* fonction permettant d'introduire un delay dans l'execution d'un code javascript
*/
function delay(timer) {
	var today=new Date();
	var now=today.getTime();
	var today2; now2;

	while (1)
	{
	today2=new Date();
	var now2=today2.getTime();
	if (now2-now>=timer) {break;}
	}
}

/**
* Fonction de changement du sous-titre d'une page
*/
function set_sstitre(txt){
	document.getElementById('sstitrepage').innerHTML=txt;
}

/**
*
*/
function get_fenSauve()  {
	return window.open('about:blank', 'sauve', 'titlebar=0,location=0,menubar=0,resizable,scrollbars=0,statusbar=0,width=200, height=30, top='+window.screenTop+' left='+window.screenLeft);
}

/**
* Fonction qui créer une miniature d'une image
* @param $taille : la taille en px2 désirée
* @param $l : la largeur d'origine du fichier
* @param $h : la hauteur d'origine du fichier
* @return dim[] : 1 tableau contenant la nouvelle largeur (0) et la nouvelle hauteur (1)
*/
function get_taillePx2(taille,l,h){
	ratio=l/h;
	nl=Math.sqrt(taille*ratio);
	nh=Math.sqrt(taille/ratio);
	dim=new Array();
	dim[0]=nl;
	dim[1]=nh;
	return dim;
}

/**
* Vire les espaces avant et après une chaine
*/
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

/**
* change dynamiquement l'attribut readonly d'un input
*/
function inputenable(id,state) {
 var divObj = null;
  if (document.getElementById) {
  divObj = document.getElementById(id);
 } else if(document.all) {
  divObj = document.all(id);
 } else if (document.layers) {
  divObj = document.layers[id];
 }
 if(state && divObj) {
 	divObj.removeAttribute("readOnly");
 } else if(divObj) {
  divObj.setAttribute("readOnly","readOnly");
 }
}

/**
* Renvoie la valeur numérique d'une chaine
* si ce n'est pas un nombre, renvoie 0
**/
function getInt(val) {
	if(isNaN(val)) return 0;
	else return parseInt(val);
}
