function checkAutosizeTextarea(id, e) {
var text_area = ge(id);
var val = text_area.value;
if (e) {
if ((e.keyCode == 13) && (!e.ctrlKey) && (!e.altKey)) {
val += '\n';
}
}
if (val == eval(id + '_params_wrapper["old_v"]')) {
return;
}
setFieldValue(eval(id + '_params_wrapper'), 'old_v', val);
var text_area_div = ge(id + 'sdfasta');
var htmled_val = val.replace(/&/g,'&').replace(/"/g,'"').replace(/'/g,''').replace(/</g,'<').replace(/>/g,'>').replace(/\n/g,'<br />');
text_area_div.innerHTML = htmled_val;
text_area = ge(id);
text_area_div = ge(id + 'sdfasta');
var new_height = (text_area_div.clientHeight + eval(id + '_params_wrapper["font_s"]') * 2);
var min_height = eval(id + '_params_wrapper["min_h"]');
if (new_height < min_height) {
new_height = min_height;
}
text_area.style.height = new_height + "px";
}
function autosizeTextareaUpdated(id, pass_event) {
return function(e) {
checkAutosizeTextarea(id, pass_event ? e : false);
};
}
function setFieldValue(obj, field, value) {
obj[field] = value;
}
function makeAutosizeTextarea(id, min_height) {
var div_for_autosize_textareas = ge('div_for_autosize_textareas');
if (!div_for_autosize_textareas) {
div_for_autosize_textareas = document.createElement('div');
div_for_autosize_textareas.id = "div_for_autosize_textareas";
document.body.appendChild(div_for_autosize_textareas);
}
div_for_autosize_textareas.innerHTML += '<div id="' + id + 'sdfasta" style="position: absolute; left: -10000px; top: -10000px;"></div>';
var text_area = ge(id);
var text_area_div = ge(id + 'sdfasta');
text_area.style.overflowX = 'hidden';
text_area.style.overflowY = 'hidden';
var div_width = css.getStyle(text_area, 'width', true);
if (!div_width) {
div_width = parseInt(text_area.style.width);
}
/* if (rdyMgr.isOp) {
div_width -= 0;
} else if (rdyMgr.isIE) {
div_width -= 0;
} else if (rdyMgr.isSaf) {
div_width -= 0;
} else if (rdyMgr.isFF) {
div_width -= 0;
} else if (rdyMgr.isGC) {
div_width -= 0;
}*/
text_area_div.style.width = div_width + "px";
text_area_div.style.fontFamily = css.getStyle(text_area, 'fontFamily', false);
text_area_div.style.fontSize = css.getStyle(text_area, 'fontSize', true) + 'px';
text_area_div.style.lineHeight = css.getStyle(text_area, 'lineHeight');
events.addEvent(text_area, 'keydown', autosizeTextareaUpdated(id, true));
events.addEvent(text_area, 'keypress', autosizeTextareaUpdated(id, true));
events.addEvent(text_area, 'keyup', autosizeTextareaUpdated(id, false));
var old_v = '';
var min_h = css.getStyle(text_area, 'height', true);
if (!min_h) {
min_h = text_area.clientHeight;
}
if (!min_h) {
min_h = parseInt(text_area.style.height);
}
if (min_height) {
min_h = min_height;
}
var font_s = css.getStyle(text_area_div, 'fontSize', true);
eval(id + '_params_wrapper = new Object()');
setFieldValue(eval(id + '_params_wrapper'), 'old_v', old_v);
setFieldValue(eval(id + '_params_wrapper'), 'min_h', min_h);
setFieldValue(eval(id + '_params_wrapper'), 'font_s', font_s);
checkAutosizeTextarea(id);
}
function autosizeTextarea(id, min_height) {
onDomReady(function() {
makeAutosizeTextarea(id, min_height);
});
}