неделю мучаюсь.
Скиньте наработки. За вас никто не делать не будет.
А какие проблемы? Делаете переменную "таскается", которая по умолчанию равна false. На mousedown делаете ее true, на mouseup обратно false. На mousemove делаете проверку, если "таскается" равна true, то высчитываем координату X мыши, и двигаем блок на эту координату. Еще можно высчитывать координату мыши относительно двигающегося блока, чтобы можно было хватать за любое место.
Для перетаскивания учите drag&drop события.