//Afin que ce script s'applique sur un textarea, il faut lui créer un attribut custom «charLimit» contentant le nombre maximum de caractères permis dans le champ.

function addEvent(elm, evType, fn, useCapture)  
// cross-browser event handling for IE5+, NS6+ and Mozilla/Gecko
// By Scott Andrew
{
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);  
		return true;  
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);  
		return r;  
	} else {
		elm['on' + evType] = fn;
	}
}

function addChrLeftDiv(){
	if(!document.getElementById || !document.getElementsByTagName || !document.createElement)
		return;
	
	//On récupère tous les textarea
	var all_textarea = document.getElementsByTagName('textarea');
	
	//On créer un div contenant le nombre de caractère restants pour le textarea
	for (var i = 0; i < all_textarea.length; i++) {
		var textarea = all_textarea[i];
		if(textarea.getAttribute('charLimit') > 0)
		{
		    addEvent(textarea, 'keyup', updateChrLeft, false);
		    var newDiv = document.createElement('div');
		    newDiv.innerHTML = "Il vous reste " + (textarea.getAttribute('charLimit') - textarea.value.length) + " caract&egrave;res (" + textarea.getAttribute('charLimit') + " caract&egrave;res maximum)";
		    textarea.parentNode.appendChild(newDiv);
		}
	}
}

function updateChrLeft(ev){
	
	var e = window.event ? window.event : ev;
	var t = e.target ? e.target : e.srcElement;
	var row = t.parentNode;
	var limite = t.getAttribute('charLimit');

	var divChrLeft;
	
	for(var i = 0; i < row.childNodes.length; i++){

		if(row.childNodes[i].nodeName.toLowerCase() == "div"){
			divChrLeft = row.childNodes[i];
		}
	}
	
	if (t.value.length > limite) {
		t.value = t.value.substring(0, limite);
	} else {
		var numberLeft = limite - t.value.length;
		if(numberLeft <= 1){
			divChrLeft.innerHTML = "Il vous reste " + numberLeft + " caract&egrave;re (" + limite + " caract&egrave;res maximum)";
		} else {
			divChrLeft.innerHTML = "Il vous reste " + numberLeft + " caract&egrave;res (" + limite + " caract&egrave;res maximum)";
		}
	}
	
}

addEvent(window, 'load', addChrLeftDiv, false);