// Global variables for platform branching
var isNav, isIE
if (parseInt(navigator.appVersion) >= 4) {
  if (navigator.appName == "Netscape") {
    isNav = true
  } else {
    isIE = true
  }
}

// ***Begin Utility Functions***
// Set element background color (only works dynamically in IE)
function setBorderColor(obj, color) {
  obj.borderColor = color
}
// Position an object at a specific pixel coordinate
function shiftTo(obj, x, y) {
  if (isNav4) {
    obj.moveTo(x,y)
  } else {
    obj.left = x + "px"
    obj.top  = y + "px"
  }
}
// ***End Utility Functions***

// Global holds reference to selected element
var selectedObj
// Globals hold location of click relative to element
var offsetX, offsetY
// Globals to  store previous event holders
var P_onmousedown;
var P_onmousemove;
var P_onmouseup;

// Find out which element has been clicked on
function setSelectedElem(evt) {
  if(is5up){
  	selectedObj=document.getElementById('tb').style;
        if (selectedObj) {
          setBorderColor(selectedObj, "red")
          return
        }
  } else if (isNav) {
    var clickX = evt.pageX
    var clickY = evt.pageY
    var testObj
    for (var i = document.layers.length - 1; i >= 0; i--) {
      testObj = document.layers[i]
      if ((clickX > testObj.left) && 
        (clickX < testObj.left + testObj.clip.width) && 
        (clickY > testObj.top) && 
        (clickY < testObj.top + testObj.clip.height)) {
        selectedObj = testObj
        if (selectedObj) {
          setBorderColor(selectedObj, "red")
          return
        }
      }
    }
  } else {
    var imgObj = window.event.srcElement
    selectedObj = imgObj.parentElement.style
    if (selectedObj) {
      setBorderColor(selectedObj, "red")
      return
    }
  }
  selectedObj = null
  return
}
// Drag an element
function dragIt(evt) {
  if (selectedObj) {
    if (isNav4) {
      shiftTo(selectedObj, (evt.pageX), (evt.pageY));
      return false
    } else if (isNav)
    {
      shiftTo(selectedObj, (evt.pageX - 50), (evt.pageY - 15));
      return false
    } else {
      shiftTo(selectedObj, (window.event.clientX - offsetX), 
      (window.event.clientY - offsetY))
      // prevent further system response to dragging
      return false
    }
  }
}
// Turn selected element on
function engage(evt) {
    setSelectedElem(evt);
    if (isNav) {
      offsetX = evt.pageX - selectedObj.left;
      offsetY = evt.pageY - selectedObj.top;
    } else {
      offsetX = window.event.offsetX;
      offsetY = window.event.offsetY;
    }
  return false
}

function DRAG_init()
{
  if (isNav) setNSEventCapture();
  // Store previous event holders
  P_onmousedown= document.onmousedown;
  P_onmousemove= document.onmousemove;
  P_onmouseup= document.onmouseup;
  // Set event Holder 
  document.onmousedown = engage;
  document.onmousemove = dragIt;
  document.onmouseup = release;
}

function DRAG_unload()
{
  // Restore event Holder 
  document.onmousedown = P_onmousedown;
  document.onmousemove = P_onmousemove;
  document.onmouseup = P_onmouseup;
}
// Turn selected element off
function release(evt) {
  if (selectedObj) {
    setBorderColor(selectedObj, "black")
    selectedObj = null
  }
}

// Set event capture for Navigator
function setNSEventCapture() {
  if (isNav) {
    document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP)
  }
}