mousedown, в нём ставите флаг = true.mousemove(over), в нём проверяется установлен ли флаг из п.1. Если флаг === true, делаем что нас интересует.mouseup, в нём флаг устанавливается в false.
У вас там какое-то безумие: вы на каждое событие mousemove добавляете ещё один обработчик.
addEventListener('click') и чем он отличается от onclick.
Если структура организована правильно