var capX, capY;
var capture = false;

function init(){
  d = document.getElementsByTagName('div');
 
  // Set up event listener for mouseover on the viewport.
  document.getElementsByTagName('html')[0].addEventListener("mousemove",doMove,true);
  for (i = 0; i < d.length; i++){
    if (d[i].className.substr(0, 6) == "window") { 
      // add event listener for when you mouse down over a window.  
      d[i].addEventListener("mousedown",eFocus,false);
      // Event listener for mousedown on a "window" header. To enable dragging.
      d[i].getElementsByTagName('h1')[0].addEventListener("mousedown",startMove,false);
      // Event listener to release window move.
      d[i].getElementsByTagName('h1')[0].addEventListener("mouseup",endMove,false);
    }
  }
}

function eFocus(ev){
  // Give focus to a window when it is clicked.
  m = ev.currentTarget;
  window.location.hash = m.id;
  return false;
}


function startMove(ev){
  // Enable window dragging.
  var m = ev.currentTarget.parentNode;
  // Find the offset values, so that the window doesn't
  // "jump" when moved
  if (!capX){ capX = ev.clientX - m.offsetLeft; }
  if (!capY){ capY = ev.clientY - m.offsetTop; }
  capture = ev.currentTarget.parentNode;
  return true;
}


function endMove(ev){
  // End window dragging
  capX = false;
  capY = false;
  capture = false;
  return true;
  }

function doMove(ev){
  // If the startMove has enabled capture, this window
  // will enable moving of windows.
  if (capture){
   var m = ev.currentTarget;
   capture.style.left = (ev.clientX - capX)+"px";
   capture.style.top = (ev.clientY - capY)+"px";
  }
}

window.onload = init;
