/**
 function initDrag()
 function engage(evt)
 function setSelectedElem(evt)
 function dragIt(evt)
 function release(evt)
 function blockEvents(evt)
 */


var selectedObj;
// Global holds reference to selected element
var offsetX, offsetY;
// Globals hold location of click relative to element



/**
 Assign event handlers used by both Navigator and IE
 */
function initDrag()
{
    document.onmousedown = engage;
    document.onmousemove = dragIt;
    document.onmouseup = release;
    //return;
}

/**
 Turn selected element on
 */
function engage(evt)
{
    evt = (evt) ? evt : event;
    setSelectedElem(evt);
    if (selectedObj)
    {
        if (document.body && document.body.setCapture)
        {
            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;
}

/**
 Set global reference to element being engaged and dragged
 */
function setSelectedElem(evt)
{
    var target = (evt.target) ? evt.target : evt.srcElement;
    var divID = (target.className == "titlebar") ? target.parentNode.id : "";
    //var divID = (target.id == "titlebar") ? "SWindow" : "";
    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);
        }
        setZIndex(selectedObj, 100);
        return;
    }
    selectedObj = null;
    return false;
}

/**
 Drag an element
 */
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)
        {
            //alert(" "+selectedObj.id+","+evt.clientX+","+evt.clientY);
            shiftTo(selectedObj, (evt.clientX - offsetX), (evt.clientY - offsetY));
        }
        evt.cancelBubble = true;
    }
    return false;
}

/**
 Turn selected element off
 */
function release(evt)
{
    if (selectedObj)
    {
        setZIndex(selectedObj, 0);
        if (document.body && document.body.releaseCapture)
        {
            document.body.releaseCapture();
        }
        selectedObj = null;
    }
}
function removeEvents()
{
    document.onmousedown = null;
    document.onmousemove = null;
    document.onmouseup = null;
}
function blockEvents(evt)
{
    evt = (evt) ? evt : event;
    evt.cancelBubble = true;
    return false;
}
