﻿function FindPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (1) {
            curtop += obj.offsetTop;
            if (!obj.offsetParent)
                break;
            obj = obj.offsetParent;
        }
    } else if (obj.y) {
        curtop += obj.y;
    }
    return curtop;
}

function FindPosX(obj) {
    var curLeft = 0;
    if (obj.offsetParent)
        while (1) {
        curLeft += obj.offsetLeft;
        if (!obj.offsetParent) {
            break;
        } // end if  
        obj = obj.offsetParent;
    } // end while
    else if (obj.x) {
        curLeft += obj.x;
    } // end else if    
    return curLeft;
} // end function

var IE = document.all ? true : false;
var tempX = 0;
var tempY = 0;

if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;

function getMouseXY(e) {
    if (IE) { // grab the x-y pos.s if browser is IE
        tempX = event.clientX + document.body.scrollLeft
        tempY = event.clientY + document.body.scrollTop
    } else {  // grab the x-y pos.s if browser is NS
        tempX = e.pageX
        tempY = e.pageY
    }
    // catch possible negative values in NS4
    if (tempX < 0) { tempX = 0 }
    if (tempY < 0) { tempY = 0 }
    return true
}

function ShowHideChildMenuOnMouseMove(e, object) {
    if (object.LinkId && object.ChildId && object.TimerId) {
        var parentPosLeft;
        var parentPosTop;
        var parentWidth;
        var parentHeight;
        parentPosLeft = FindPosX(document.getElementById(object.LinkId));
        parentPosTop = FindPosY(document.getElementById(object.LinkId));
        parentWidth = document.getElementById(object.LinkId).style.pixelWidth || document.getElementById(object.LinkId).offsetWidth;
        parentHeight = document.getElementById(object.LinkId).style.pixelHeight || document.getElementById(object.LinkId).offsetHeight;
        //alert('Hello');

        if ((tempX > (parentPosLeft + parentWidth + 7)) && (tempY >= parentPosTop) && (tempY <= (parentPosTop + parentHeight + 5))) {
            HideChildMenu(object);
        }
    }
}

function ShowChildMenu(object) {
    if (object.LinkId && object.ChildId && object.TimerId) {
        var parentPosTop;
        var parentPosLeft;
        var newPositionTop;
        var newPositionLeft;
        parentPosLeft = FindPosX(document.getElementById(object.LinkId));
        parentPosTop = FindPosY(document.getElementById(object.LinkId));
        newPositionTop = (parentPosTop - 5) + 'px';
        newPositionLeft = (parentPosLeft - 1) + 'px';
        document.getElementById(object.ChildId).style.position = 'absolute';
        document.getElementById(object.ChildId).style.top = newPositionTop;
        //document.getElementById(object.ChildId).style.left = newPositionLeft;
        document.getElementById(object.ChildId).style.zIndex = '9999';
        document.getElementById(object.ChildId).style.display = '';
        document.getElementById(object.ChildId).onmousemove = function() {
            if (window.event) {
                ShowHideChildMenuOnMouseMove(event, object);
            }
            else {
                ShowHideChildMenuOnMouseMove(Event, object);
            }
        };

        window.clearTimeout(object.TimerId);
    }
}

function ShowChildMenuFixParent(object) {
    if (object.LinkId && object.ChildId && object.TimerId) {
        var parentPosTop;
        var parentPosLeft;
        var newPositionTop;
        var newPositionLeft;
        parentPosLeft = FindPosX(document.getElementById(object.LinkId));
        parentPosTop = FindPosY(document.getElementById(object.LinkId));
        newPositionTop = (parentPosTop - 5) + 'px';
        newPositionLeft = (parentPosLeft - 1) + 'px';
        document.getElementById(object.ChildId).style.position = 'absolute';
        document.getElementById(object.ChildId).style.top = newPositionTop;
        document.getElementById(object.ChildId).style.left = newPositionLeft;
        document.getElementById(object.ChildId).style.zIndex = '9999';
        document.getElementById(object.ChildId).style.display = '';
        document.getElementById(object.ChildId).onmousemove = function() {
            if (window.event) {
                ShowHideChildMenuOnMouseMove(event, object);
            }
            else {
                ShowHideChildMenuOnMouseMove(Event, object);
            }
        };

        window.clearTimeout(object.TimerId);
    }
}

function HideChildMenu(object) {
    if (object.LinkId && object.ChildId && object.TimerId) {
        object.TimerId = window.setTimeout(function() { DoHideChildMenu(object) }, 200);
    }
}
function DoHideChildMenu(object) {
    //object.IsMouseOver =false;
    document.getElementById(object.ChildId).style.display = 'none';
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if (opacStart > opacEnd) {
        for (i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed));
            timer++;
        }
    } else if (opacStart < opacEnd) {
        for (i = opacStart; i <= opacEnd; i++) {
            setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

/// Create MenuObject
function MenuObject(LinkId, ChildId) {
    this.LinkId = LinkId;
    this.ChildId = ChildId;
    this.TimerId = 'MouseOutTimer' + LinkId;
    this.IsMouseOver = false;
}
MenuObject.prototype.ShowSubMenuFixParent = function(object) {
    if (object.LinkId && object.ChildId && object.TimerId) {
        ShowChildMenuFixParent(object);
        var el = document.getElementById(object.LinkId);
        var ChildDiv = document.getElementById(object.ChildId);

        if (el.addEventListener) {
            el.addEventListener("mouseout", function() {
                HideChildMenu(object);
            }, false);
        } else if (el.attachEvent) {
            el.attachEvent('onmouseout', function() {
                HideChildMenu(object);
            });
        } else {
            el.onmouseout = function() {
                HideChildMenu(object);
            };
        }

        /// Add mouseover event to SubMenu to keep it on
        if (ChildDiv.addEventListener) {
            ChildDiv.addEventListener("mouseover", function() {
                ShowChildMenu(object);
            }, false);
            ChildDiv.addEventListener("mouseout", function() {
                HideChildMenu(object);
            }, false);
        } else if (el.attachEvent) {
            ChildDiv.attachEvent('onmouseover', function() {
                ShowChildMenu(object);
            });
            ChildDiv.attachEvent('onmouseout', function() {
                HideChildMenu(object);
            });
        } else {
            ChildDiv.onmouseover = function() {
                ShowChildMenu(object);
            };
            ChildDiv.onmouseout = function() {
                HideChildMenu(object);
            };
        }
    }
}
// Add ShowChildMenu function to MenuObject
MenuObject.prototype.ShowSubMenu = function(object) {
    if (object.LinkId && object.ChildId && object.TimerId) {
        ShowChildMenu(object);
        var el = document.getElementById(object.LinkId);
        var ChildDiv = document.getElementById(object.ChildId);

        if (el.addEventListener) {
            el.addEventListener("mouseout", function() {
                HideChildMenu(object);
            }, false);
        } else if (el.attachEvent) {
            el.attachEvent('onmouseout', function() {
                HideChildMenu(object);
            });
        } else {
            el.onmouseout = function() {
                HideChildMenu(object);
            };
        }





        /// Add mouseover event to SubMenu to keep it on
        if (ChildDiv.addEventListener) {
            ChildDiv.addEventListener("mouseover", function() {
                ShowChildMenu(object);
            }, false);
            ChildDiv.addEventListener("mouseout", function() {
                HideChildMenu(object);
            }, false);
        } else if (el.attachEvent) {
            ChildDiv.attachEvent('onmouseover', function() {
                ShowChildMenu(object);
            });
            ChildDiv.attachEvent('onmouseout', function() {
                HideChildMenu(object);
            });
        } else {
            ChildDiv.onmouseover = function() {
                ShowChildMenu(object);
            };
            ChildDiv.onmouseout = function() {
                HideChildMenu(object);
            };
        }

    }


}