1. Старайтесь обойтись без определения браузера. Определяйте возможности браузера, а не его самого.
if (getBrowserName() == 'IE') textarea_tr = checkElement.parentNode.parentNode.nextSibling;
else textarea_tr = checkElement.parentNode.parentNode.nextSibling.nextSibling;
Здесь, сдается мне, Вы хотите получить следующий за родителем элемент, но в IE появляется какой-то другой (текстовый?) промежуточный узел. Такое же возможно и в других браузерах, поэтому лучше перебирать все следующие за родителем элементы, пока их nodeType не станет равным 1 (это значение для элементов, для текстовых узлов. например, 2).
2. Если Вы автоматически вызываете функцию, обрамите её тело в скобки (даже если она уже является частью выражения). Иначе может быть непонятно, что будет результатом выражения - то ли функция. то ли результат её выполнения.
3. Нет необходимости в таймауте в 1мс. Браузеры не будут так быстро реагировать, а Вы будете их только зря нагружать. 40мс должно быть достаточно.