// Глобальная переменная, содержащая ссылку на выделенный элементvar selectedObj;// Координаты щелчка мышью относительно элементаvar offsetX, offsetY;// Установка глобальной ссылки на элемент, который будет пертаскиватьсяfunction setSelectedElem(evt) {    var target = (evt.target) ? evt.target : evt.srcElement;    var dr = target.id.split('-');    var divID = (dr[0] == "drag") ? "pd_"+dr[1] : "";    if (divID) {        if (document.layers) {            selectedObj = document.layers[divID];        } else if (document.all) {            selectedObj = document.all(divID);        } else if (document.getElementById) {            selectedObj = document.getElementById(divID);        }        blockStackLevel += 1;        setZIndex(selectedObj, blockStackLevel);        return;    }    selectedObj = null;    return;}// "Включаем" выбранный элементfunction engage(evt) {    evt = (evt) ? evt : event;    setSelectedElem(evt);    if (selectedObj) {        if (document.body && document.body.setCapture) {            // используем перехват событий в IE/Win            document.body.setCapture();        }        if (evt.pageX) {            offsetX = evt.pageX - ((typeof selectedObj.offsetLeft !=                 "undefined") ?                       selectedObj.offsetLeft : selectedObj.left);            offsetY = evt.pageY - ((selectedObj.offsetTop) ?                       selectedObj.offsetTop : selectedObj.top);        } else if (typeof evt.clientX != "undefined") {            offsetX = evt.clientX - ((selectedObj.offsetLeft) ?                       selectedObj.offsetLeft : 0);            offsetY = evt.clientY - ((selectedObj.offsetTop) ?                       selectedObj.offsetTop : 0);        } else if (evt.offsetX || evt/offsetY) {            offsetX = evt.offsetX - ((evt.offsetX < -2) ?                       0 : document.body.scrollLeft);            offsetX -= (document.body.parentElement &&                      document.body.parentElement.scrollLeft) ?                      document.body.parentElement.scrollLeft : 0            offsetY = evt.offsetY - ((evt.offsetY < -2) ?                       0 : document.body.scrollTop);            offsetY -= (document.body.parentElement &&                      document.body.parentElement.scrollTop) ?                      document.body.parentElement.scrollTop : 0        }        evt.cancelBubble = true;        return false;    }}// Перетаскиваем элементfunction dragIt(evt) {    evt = (evt) ? evt : event;    if (selectedObj) {        if (evt.pageX) {            shiftTo(selectedObj, (evt.pageX - offsetX), (evt.pageY -                 offsetY));        } else if (evt.clientX || evt.clientY) {            shiftTo(selectedObj, (evt.clientX - offsetX), (evt.clientY -                 offsetY));        }        evt.cancelBubble = true;        return false;    }}// "Выключаем" выбранный элементfunction release(evt) {    if (selectedObj) {    		blockStackLevel += 1;        setZIndex(selectedObj, blockStackLevel);        if (document.body && document.body.releaseCapture) {            // прекращам перехват событий в IE/Win            document.body.releaseCapture();        }        selectedObj = null;    }}function blockEvents(evt) {    evt = (evt) ? evt : event;    evt.cancelBubble = true;    return false;}// Установка обработчиков событий, используемых в navigator и в IEfunction initDrag() {    if (document.layers) {        // разрешаем перехват этих событий в модели событий NN4        document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE |                                 Event.MOUSEUP);        return;    } else if (document.body & document.body.addEventListener) {        // разрешаем перехват этих событий в модели событий W3C DOM    	document.addEventListener("mousedown", engage, true);    	document.addEventListener("mousemove", dragIt, true);    	document.addEventListener("mouseup", release, true);    	return;    }  	document.onmousedown = engage;   	document.onmousemove = dragIt;   	document.onmouseup = release;    return;}