//retorna true se browser for IE
var ie5 = (document.getElementById && document.all);

//retorna true se browser for Netscape/FireFox
var ns6 = (!document.all && document.getElementById);

//dunno
var timerID = null;

//dunno too
var active = 0;

//esta função deve ser chamada através de onmouseDown no objeto 
//que deve ser arrastado. Ex.: onmouseDown="start('divName');"
function start(windowName)
{
  if(ie5 || ns6)
  {
    dragWind = document.getElementById(windowName);
    y = coordsY-parseInt(dragWind.style.top);
    x = coordsX-parseInt(dragWind.style.left);
    dragWind.style.zIndex = (start.zCount++);
    active=1;
  }
}

start.zCount=0;


//funcao que efetivamente efetua o dragndrop.
//nao precisa ser explicitamente chamada, pois é chamada por eventos
function drag(e)
{
  if(ie5 || ns6)
  {
    coordsY = ns6?e.clientY:event.clientY;
    coordsX = ns6?e.clientX:event.clientX;
    if(active)
    {
      dragWind.style.top = coordsY-y;
      dragWind.style.left = coordsX-x;
    }
  }
}


document.onmousemove = drag;
document.onmouseup = new Function("active=0");
document.onselectstart = new Function("return false");