function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter;
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var LeftCharsID='chc'+x[i].id;
			counter=document.getElementById(LeftCharsID);

			counter.relatedElement = x[i];
			counter.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength');
			x[i].counterID = counter.id;
			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
		}
	}
}


function updateCounter(ID,textik) {
	var counter=document.getElementById(ID);
	counter.getElementsByTagName('span')[0].firstChild.nodeValue=textik;

	if (counter.relatedElement.updateTimer)
		counter.relatedElement.updateTimer=false;
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength) {
		this.value=this.value.substr(0,maxLength);
		currentLength = this.value.length;
	}

	if (this.updateTimer) {
		clearTimeout(this.updateTimer);
	}

	this.updateTimer=setTimeout('updateCounter("'+this.counterID+'","'+currentLength+'")', 500);
//	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}

 function addEvent(elm, evType, fn, useCapture)
 // addEvent and removeEvent
 // cross-browser event handling for IE5+,  NS6 and Mozilla
 // 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 {
  alert("Handler could not be removed");
   }
 }

addEvent(window, "load", setMaxLength);