// site.js
// all js code neccessary for site
// uses jquery library, include script tag to jquery.js before calling this file
//
// E. Wrubel 2009-10-17
//----------------------------------------------------------

// Global variables
var MenuBar;
var PopupMenus;


// main OnDocumentReady handler
// Do all initialization here
$(document).ready(function() {
  SetupMenuPopups();
}
);

// SetupMenuPopups: Set JQuery objects for Menu Bar and hidden Popup Menus
// sets positions of Popup Menus
function SetupMenuPopups() {
  // Get the DOM objects as JQuery objects
  MenuBar = $('#menubar a');
  PopupMenus = $('#popupmenus div');
  
  // Hide popup div (which has to be visible for JQuery fadeIn/fadeOut to work and has a porition outside the window)
  // before seting to the correct position
  PopupMenus.hide();

  // for each menu item in the menubar set event handlers and position popups
  MenuBar.each(function(i) {
//    alert(i+', mb:'+MenuBar.eq(i).offset().left+', pm:'+PopupMenus.eq(i).scrollLeft()+'/'+PopupMenus.eq(i).attr('id'));
    // Set position of popup at left edge of menu bar item
    PopupMenus.eq(i).css('left',MenuBar.eq(i).offset().left);
    // Set event handlers for animation of popups
    MenuBar.eq(i).bind("mouseenter mouseleave",{index: i}, MenuPopupHover);
    PopupMenus.eq(i).bind("mouseenter mouseleave",{index: i}, MenuPopupHover);
    // timer number for popup hide
    PopupMenus.eq(i).data('timer',false);
  });
}

// MenuPopupHover: event handler for mouseenter und mouseleave events on
// menubar item and popup menu
function MenuPopupHover(e) {
//  window.status='type:'+e.type+', id:'+this.id+', index:'+e.data.index+', e.rel:'+e.relatedTarget.id;
//  window.alert('type:'+e.type+', id:'+this.id+', index:'+e.data.index+', e.rel:'+e.relatedTarget.id);

// retrieve item index of menu item
  i = e.data.index;
  switch (e.type) {
    case 'mouseenter':
      // if mouseleave is pending for this item, kill fadeOut timer
      if (PopupMenus.eq(i).data('timer')) {
        clearTimeout(PopupMenus.eq(i).data('timer'));
//        window.alert('in: '+PopupMenus.eq(i).data('timer'));
        PopupMenus.eq(i).data('timer',false);
      }
      PopupMenus.eq(i).fadeIn('normal');
      break;
    case 'mouseleave':
      // set timer for fadeout to give mouseenter event on popup menu a chance
      // to kill it
      PopupMenus.eq(i).data('timer',setTimeout('HidePopupMenu('+i+')',100));
//      window.alert('out: '+PopupMenus.eq(i).data('timer'));
      break;
  }
  
  return false;
}

function HidePopupMenu(i) {
  PopupMenus.eq(i).data('timer',false);
  PopupMenus.eq(i).fadeOut("normal");
}