window.onload = function() {

  /* change these value to manually adjust the position of the cursor */
  var offsetManual = {
      x: 3,
      y: -25
  }

  var cursor = document.getElementById("cursor");
  resetCursor();
  var elems = document.getElementById("submenu").getElementsByTagName("a");
  for (var i = 0; i < elems.length; i++) {
      elems[i].onmouseover = function(e) {
         cursor.style.top =  pageY(this) + this.offsetHeight + offsetManual.y + "px";
         cursor.style.left = pageX(this) + this.offsetWidth + offsetManual.x + "px";
      };
   }
   
   document.onmouseout = function(e) {
      e = e || window.event;
      var target = e.toElement || e.target;
      if (!checkParent(target)) {
         resetCursor();
      }
   }
   
   function resetCursor() {
     cursor.style.display = "block";
     if (document.getElementById("currId")) {
        var currId = document.getElementById("currId").value;
        var curr =  document.getElementById(currId);
        cursor.style.top =  pageY(curr) + curr.offsetHeight + offsetManual.y + "px";
        cursor.style.left = pageX(curr) + curr.offsetWidth + offsetManual.x + "px";
     }
  }

function pageX(elem) {
   return elem.offsetParent ? elem.offsetLeft + pageX(elem.offsetParent) : elem.offsetLeft;
}

function pageY(elem) {
   return elem.offsetParent ? elem.offsetTop + pageY(elem.offsetParent) : elem.offsetTop;
}

function checkParent(elem) {
   if (elem && elem.parentNode) {
      if (elem.parentNode.id == "submenu") {
         return true;
      } 
      return checkParent(elem.parentNode);
   }
   return false;
}
}
