// 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;
}


function contrainte(e,type) {
	e=e?e:window.event;
	key=e.keyCode?e.keyCode:e.which;
	var resultat=true;
	if(key==9) return true;
	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;
	}
	return resultat;
}

/**
* 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;
}

function toUpAll(o) {
	o.value=o.value.toUpperCase();
}

function toUpFirst(o) {
	var txt=o.value.toLowerCase();
	var charToSplit=new Array("-", "'", " ");

	for(var k=0 ; k < charToSplit.length ; k++) {
		var mots=txt.split(charToSplit[k]);
		var res="";
		var i=0;
		for(i=0 ; i < mots.length-1 ; i++) {
			res += upFirstWord(mots[i])+charToSplit[k];
		}
		res += upFirstWord(mots[i]);
		txt=res;
	}

	o.value=txt;
	return true;

	function upFirstWord(s) {
		if(s=="") return "";
		return s.charAt(0).toUpperCase() + s.substr(1);
	}
}

// permet d'obtenir le value d'un bouton appartenant ? un groupe de bouton de m?me nom
function getValuefromCheckedRadio(rad){
	if(rad){
		for(var k=0;k<rad.length;k++) {
			if(rad[k].checked) {
				return rad[k].value ;
			}
		}
	}
	return null ;
}
function getCheckedValues(e, sep) {
	if(!sep) sep="|";
	var d="";
	if(e.length) {
		for(var k=0 ; k < e.length ; k++) {
			if(e[k].checked) {
				if(d!="") d+=sep;
				d+=e[k].value ;
			}
		}
	} else {
		if(e.checked) {
			d+=e.value;
		}
	}
	return d;
}
function getValue(e, sep) {
	if(!sep) sep="|";
	if(e.length && isNaN(e.selectedIndex)) return getCheckedValues(e, sep);
	var etype;
	var etag=e.tagName.toLowerCase();
	var ename=e.name;
	if(e.type) etype=e.type.toLowerCase();
	var d="";
	if(ename && ename!= "") {
		if(etag=="input") {
			if(etype=="radio") {
				d=getCheckedValues(e, sep);
			} else if(etype=="checkbox") {
				d=getCheckedValues(e, sep);
			} else {
				d=e.value;
			}
		} else if(etag=="select" || etag=="option") {
			for(var i=0;i<e.options.length;i++) {
				if(e.options[i].selected) {
					if(d!="") d+=sep;
					d+=e.options[i].value;
				}
			}
		} else {
			d=e.value;
		}
	}
	return d;
}

function urlencode(url){
	// url : une url

	// urlencode une url mais prend	garde que les espaces soit remplac?s par des %20
	// et non des +
	// et que les +	soient remplac?s par des %2B (bug internet explorer...)

	url_encoded=escape(url);

	kjv=0;	// indice dans la chaine encod?e...
	kjv2=0;	// indice dans la chaine finale...
	vjk=0;	// indice dans la chaine non encod?e...
	url_encoded_space=url_encoded;
	while (kjv<url_encoded.length)
	{
			curcar=url_encoded.charAt(kjv);

			if (curcar=='+'	&& url.charAt(vjk)==' ')
					url_encoded_space=url_encoded_space.substring(0,kjv2)
															+'%20'
															+url_encoded_space.substring(kjv2+1);
			else if	(curcar=='+')
					url_encoded_space=url_encoded_space.substring(0,kjv2)
															+'%2B'
															+url_encoded_space.substring(kjv2+1);
			else if	(curcar=='%')
					kjv+=2;
			else
					kjv2-=2;

			kjv2+=3;
			kjv++;
			vjk++;
	}

	return url_encoded_space;
}