function dropdown(element, height,maxheight){
	if(element.drop){
		clearTimeout(element.drop)
	}
	element.style.height = height + "px";
	//set base case
	if(height == maxheight){
		return;
	}
	var newheight = height + Math.ceil((maxheight-height)/5);
	if(newheight == height){
		return;
	}
	
	var repeat = function(){
		dropdown(element,newheight,maxheight)
	}
	element.drop = setTimeout(repeat,50);
}

function toggle(elm,minheight, maxheight){
	element = document.getElementById(elm);
	var height = element.clientHeight;
	if((maxheight - height) > (height-minheight)){
		dropdown(element,height,maxheight);
	}
	else{
		dropdown(element,height,minheight);
	}
	return false;
}
function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength');
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];

			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
		}
	}
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength) {
		this.relatedElement.className = 'required';
	}
	else {
		this.relatedElement.className = '';
	}
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}

addLoadEvent(setMaxLength);

