/** Скрипт для автоматического растягивания поля (Textarea) по вертикали
-----------------------------------------------------------------------------
# Для работы скрипта высота textarea не должна быть определена жёстко (НЕ должно быть определено CSS свойство height),
# вместо height можно использовать min-height или лучше задать высоту через rows=''.
# Также, можно ограничить максимальную высоту растяжки через CSS свойство max-height
*/
function _resizer(){
	var textarea = 'comments'; // id атрибут тега textarea
	var repeat = 500; // время пересчета (1000=1сек).
	var cof = 55; // коэффициент. Увеличте, если появляеться прокрутка.
	
	textarea = document.getElementById(textarea);
	textarea.onfocus = do_resize;
	textarea.onblur = stop_resize;
	
	//функция подсчета строк
	function countLines(strtocount) {
		var hard_lines = 0;
		var str = strtocount.split("\n");
		hard_lines = str.length;
		
		var letter_width = textarea.clientHeight/textarea.rows*cof/100; // приблизительная ширина одной буквы в пикселях
		var chars_in_line = textarea.clientWidth/letter_width; //сколько букв в строке

		var lines = 0;
		var temp = 0;
		for(i=0; i<=(hard_lines-1); i++){ //hard_lines-1 = количество элементов в массиве
			temp = Math.floor( str[i].length / chars_in_line );
			if(temp>0) lines += temp;
		}	

		return lines+hard_lines;
	}
	// Ресайз поля
	function do_resize() {
		if(!textarea){ return; }
		textarea.rows = countLines(textarea.value);
		timeout_resize = setTimeout(function(){ do_resize(); }, repeat);
	}

	function stop_resize(){ clearTimeout(timeout_resize); }
}

if (window.addEventListener)
	window.addEventListener("load", _resizer, false);
else if (window.attachEvent)
	window.attachEvent("onload", _resizer);
