/*
 * menuDropdown.js - implements an dropdown menu based on a HTML list
 * Author: Dave Lindquist (http://www.gazingus.org)
 */

ie5 = document.all && document.getElementById && navigator.userAgent.toLowerCase().indexOf('opera')==-1?1:0;
var currentMenu = null;
var widePage = false;

if (!document.getElementById) document.getElementById = function() { return null; }

function initializeMenu(menuId, actuatorId) {
 var menu = document.getElementById(menuId);
 var actuator = document.getElementById(actuatorId);

 if (menu == null || actuator == null) return;
 //if (window.opera) return; // I'm too tired

 actuator.onmouseover = function() {
  if (currentMenu != null && currentMenu != menuId) {
   $("#"+currentMenu).animate({height: 'hide',opacity: 'hide'},"fast");
   currentMenu = null;
   this.showMenu();
  }
 }
  
 actuator.onclick = function() {
  if (currentMenu == null) {
   this.showMenu();
  } else {
   $("#"+currentMenu).animate({height: 'hide',opacity: 'hide'},"fast");
   currentMenu = null;
  }
  return false;
 }

 actuator.showMenu = function() {
  if (document.getElementById('infoActuator').offsetLeft < 10) {
   // IE6 calculates offsetLeft from the edge of the DIV
   menu.style.left = "50%";
   if (widePage) {
    menu.style.marginLeft = -475 + this.offsetLeft + "px";
   } else {
    menu.style.marginLeft = -375 + this.offsetLeft + "px";
   }
  } else {
   // whereas Mozilla calculates it from the left of the page
   menu.style.left = this.offsetLeft + "px";
  }
  // menu.style.left = this.offsetLeft + "px";
  menu.style.visibility = "visible";
  $("#"+menuId).animate({height: 'show',opacity: 'show'},"normal");
  currentMenu = menuId;
 }
}

$(document).ready(initAll);

function initAll() {
 if ($("#container").width() == 950) widePage = true;

 initializeMenu("infoMenu", "infoActuator");
 initializeMenu("deptMenu", "deptActuator");
 initializeMenu("photosMenu", "photosActuator");
 initializeMenu("collegeMenu", "collegeActuator");
 initializeMenu("studyMenu", "studyActuator");
 initializeMenu("extraMenu", "extraActuator");
 initializeMenu("pastoralMenu", "pastoralActuator");
 initializeMenu("africaMenu", "africaActuator");
 initializeMenu("vacMenu", "vacActuator");

 /* Init Pop-up Images */
 if ($.fn.fancybox) $('a.zoomimage').fancybox({overlayShow: true,overlayOpacity: 0.5});

 /* Init Tooltips */
 $("span.tooltipLink").mouseover(tooltipOnEvent);
 $("span.tooltipLink").mouseout(tooltipOffEvent);
 $("span.tooltipLink").mousemove(tooltipOnEvent);

 /* Maths AFL stuff */
 if (document.getElementById('loadingAnimDiv')) {
  document.getElementById('loadingAnimDiv').style.display = "none";
 }
 if (document.getElementById('logDiv')) {
  objDiv = document.getElementById('logDiv');
  if (objDiv.scrollHeight > 0) {
   objDiv.scrollTop = objDiv.scrollHeight;
  } else {
   objDiv.scrollTop = objDiv.offsetHeight;
  }
 }

 /* Make menu fade out if an option is clicked */
 $("ul.menu > li").click(function() {$("#"+currentMenu).animate({height: 'hide',opacity: 'hide'},"fast");currentMenu = null;});
}

function doMenu(id) {
 menuObj = document.getElementById(id);
 if (menuObj.className == 'menu') {
  menuObj.className = 'openmenu';
  $("#"+id).slideDown("fast");
 } else {
  $("#"+id).slideUp("normal",function() {menuObj.className='menu';});
 }
}

function clearDrop() {
 if (currentMenu != null) {
  $("#"+currentMenu).animate({height: 'hide',opacity: 'hide'},"fast");
  currentMenu = null;
  return true;
 }
}

function tooltipOnEvent(oEventParam) {
 if (ie5) {
  var tooltipLinkObj = oEventParam.srcElement;
 } else {
  var tooltipLinkObj = oEventParam.target;
 }

 fullClassName = tooltipLinkObj.className;
 tipId = fullClassName.substr(fullClassName.indexOf(" ")+1);
 
// if (tipId.substr(0,3) == "obj") {
//  var yClear = 30;
//  var xClear = 30;
// } else {
//  var yClear = 30;
//  var xClear = 30;
// }

 boxHeight = document.getElementById(tipId).offsetHeight;
 boxWidth = document.getElementById(tipId).offsetWidth;

 if (boxHeight == undefined) boxHeight = 20;
 if (boxWidth == undefined) boxWidth = 50;
 
 if (!oEventParam.pageX) {
 
  scrollX = getScrollX();
  scrollY = getScrollY();
  
  if (event.clientY + scrollY + (boxHeight + 30) >= document.body.offsetHeight) {
   document.getElementById(tipId).style.top = event.clientY + scrollY - boxHeight - 16 + "px";   
  } else {
   document.getElementById(tipId).style.top = event.clientY + scrollY + "px";
  }
  if (event.clientX + scrollX + (boxWidth + 30) >= document.body.offsetWidth) {
   document.getElementById(tipId).style.left = event.clientX + scrollX - boxWidth - 16 + "px";   
  } else {
   document.getElementById(tipId).style.left = event.clientX + scrollX + "px";
  }
  
 } else {
 
  if (oEventParam.pageY + (boxHeight + 30) >= document.body.offsetHeight) {
   document.getElementById(tipId).style.top = oEventParam.pageY - boxHeight - 16 + "px";
  } else {
   document.getElementById(tipId).style.top = oEventParam.pageY + "px";
  }
  if (oEventParam.pageX + (boxWidth + 30) >= document.body.offsetWidth) {
   document.getElementById(tipId).style.left = oEventParam.pageX - boxWidth - 16 + "px";
  } else {
   document.getElementById(tipId).style.left = oEventParam.pageX + "px";
  }
 }
 
 document.getElementById(tipId).style.visibility = 'visible';
}

function tooltipOffEvent(oEventParam) {
 if (ie5) {
  var tooltipLinkObj = oEventParam.srcElement;
 } else {
  var tooltipLinkObj = oEventParam.target;
 }
 fullClassName = tooltipLinkObj.className;
 tipId = fullClassName.substr(fullClassName.indexOf(" ")+1);
 document.getElementById(tipId).style.visibility = 'hidden';
}

function getScrollX() {
 if (document.documentElement && document.documentElement.scrollLeft) {
  return document.documentElement.scrollLeft;
 } else if (document.body) {
  return document.body.scrollLeft;
 }
}

function getScrollY() {
 if (document.documentElement && document.documentElement.scrollTop) {
  return document.documentElement.scrollTop;
 } else if (document.body) {
  return document.body.scrollTop;
 }
}
