Код так себе... // запрет выделения elem.onmousedown = elem.onselectstart = function() { return false; } Почему тут не используется addEvent? А если мне нужно будет на эти события навесить какой-то свой обработчик? Получается, что mousedown я использовать не смогу? Те же проблемы и с обработчиками событий документа. Две глобальных переменных addEvent и removeEvent. Это очень плохо, а если какой-то другой код перезапишет их и это будут не функции, а что-то еще? Для вашего случая идеально подходит паттерн Singleton, пример которого можно увидеть тут. Кроссбраузерность так себе: в ИЕ8 не работает, т.к. там не поддерживается getComputedStyle. Это не обязательно, но считается хорошим тоном объявлять все переменные в начале кода, вот так: var elem = document.getElementById(options.elem), position = (options.position) ? options.position : 0, inner = {}, elemStyle = {}, innerStyle = {}; // и т.д. А потом уже в коде записывать туда нужную информацию. Всё-таки считается очень плохой практикой опускать брекеты ("{" и "}") после if. Пишите их всегда и люди, которые потому будут читать ваш код и, возможно, дорабатывать его, скажут вам спасибо.