cyber,
ясн ... 

 готовый алгоритм - скучно(и длинный он больно) ... прост тут вродь ваще кодов почти нет 
Если поставить события в этих полупрозрачных div, которые и вызывают функции
<div class=Drag onmousedown="Yes(this)"  onmousemove="Funk1(this)" onmouseout="Funk2(this)" data="IDисходника, X0,Y0"></div>
функции всего три 
1.Yes(this) Разрешаем обработку onmousemove присваиваем Доп.класс vidible для видимости
2. Funk1(this) отслеживаем мышь и перемещаем объект при наличии  наличии onmousedown
3. Funk2(this) - удаляем класс  vidible - принимаем решение: перетаскивать объект или возвращаемcz на исходную
скрытие и показ полупрозрачных div  - css