//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 charactè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 = "You have " + (textarea.getAttribute('charLimit') - textarea.value.length) + " characters left (" + textarea.getAttribute('charLimit') + " characters 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 = "You have " + numberLeft + " character left (" + limite  + " characters maximum)";
		} else {
			divChrLeft.innerHTML = "You have " + numberLeft + " characters left (" + limite  + " characters maximum)";
		}
	}
	
}

addEvent(window, 'load', addChrLeftDiv, false);
