﻿/*
Code based on
http://blogs.msdn.com/howard_dierking/archive/2007/04/23/polymorphic-javascript-well-kind-of.aspx
http://blogs.vertigo.com/personal/aanttila/Blog/archive/2007/03/14/javascript-differences-in-firefox-and-internet-explorer.aspx
http://www.javascriptkit.com/javatutors/navigator.shtml
*/

var fw_Menu_Unhover;
var fw_Menu_HoverDynamic;

function SetupInterceptors() {   // called by onload event
    fw_Menu_HoverDynamic = Menu_HoverDynamic;
    Menu_HoverDynamic = my_Menu_HoverDynamic;
    fw_Menu_Unhover = Menu_Unhover;
    Menu_Unhover = my_Menu_Unhover;
}

function my_Menu_HoverDynamic(item) {
    fw_Menu_HoverDynamic(item);
    var x = Menu_FindParentItem(item);
    if (x && x.tagName.toLowerCase() != "body") {
        switch (true) {
            case (/MSIE (\d+\.\d+);/.test(navigator.userAgent)): //test for MSIE x.x
                x.fireEvent("onmouseover");
                break;
            case (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)):
                //opera should use the default, but it appears broken
                //if you uncomment the next line it will work without the mouse over effect
                //break;
            default:
                var mouseEvent = window.document.createEvent("MouseEvent");
                mouseEvent.initEvent("mouseover", true, true);
                x.dispatchEvent(mouseEvent);
                break;
        }
    }
}

function my_Menu_Unhover(item) {
    fw_Menu_Unhover(item);
    var x = Menu_FindParentItem(item);
    if (x && x.tagName.toLowerCase() != "body") {
        switch (true) {
            case (/MSIE (\d+\.\d+);/.test(navigator.userAgent)): //test for MSIE x.x
                x.fireEvent("onmouseout");
                break;
            case (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)):
                //opera should use the default, but it appears broken
                //if you uncomment the next line it will work without the mouse over effect
                //break;
            default:
                var mouseEvent = window.document.createEvent("MouseEvent");
                mouseEvent.initEvent("mouseout", true, true);
                x.dispatchEvent(mouseEvent);
                break;
        }
    }
}

