﻿$(document).ready(function() {

    $(".navBlogCategoryList").mouseout(function(event) {
        if (checkMouseOut(this, event)) {
            HideCategories();
        }
    });

    $("div#headerWrapper .header .nav>ul>li>a").hover(function() {
        if ($(this).hasClass(".navBlogCategories")) {
            $(".navBlogCategoryList").show();
        } else {
            HideCategories();
        }
    });
});

function HideCategories() {
    $(".navBlogCategoryList").hide();
}

// Check whether the mouse has really left the element
function checkMouseOut(elem, evt) {
    var boundaries = getBoundaries(elem);
    return (evt.clientX <= boundaries.left || evt.clientX >= boundaries.right || evt.clientY <= boundaries.top || evt.clientY >= boundaries.bottom);
}

//top, right, bottom, left - the four corners of the element
function getBoundaries(elem) {
    var boundaries = getRealOffsets(elem);
    boundaries.right = boundaries.left + elem.clientWidth;
    boundaries.bottom = boundaries.top + elem.clientHeight;
    return boundaries;
}

function getRealOffsets(elem) {
    var offsets = new Object();
    offsets.left = elem.offsetLeft;
    offsets.top = elem.offsetTop;
    var parent = elem.offsetParent;
    while (parent != undefined && parent != document.body) {
        offsets.left += parent.offsetLeft;
        offsets.top += parent.offsetTop;
        parent = parent.offsetParent;
    }
   //accomodate for scroll offsets
    var iebody = (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
    var scrollOffsetLeft = document.all ? iebody.scrollLeft : pageXOffset;
    var scrollOffsetTop = document.all ? iebody.scrollTop : pageYOffset;
    offsets.left -= scrollOffsetLeft;
    offsets.top -= scrollOffsetTop;
    return offsets;
}
