var helpObjectActive = false;

function mouseLeaves(element, evt) {
    if (typeof evt.toElement != 'undefined' && evt.toElement && typeof element.contains != 'undefined') {
        return !element.contains(evt.toElement);
    }
    else if (typeof evt.relatedTarget != 'undefined' && evt.relatedTarget) {
        return !contains(element, evt.relatedTarget);
    }
}

function contains(container, containee) {
    while (containee) {
        if (container == containee) {
            return true;
        }
        containee = containee.parentNode;
    }
    return false;
}

function showHelp(obj, popId) {

    try { showHide(popId, 'block') } catch (e) { }

    // if any other popup is open, close it first
    try { closeOpenedHelpWindows(); } catch (e) { }

    try { getSetX(obj, popId); } catch (e) { }
    try { getSetY(obj, popId); } catch (e) { }
    //try { showHide('helpArrow', 'block'); } catch (e) { }
    try {
        var closeID = popId + 'Close';
        document.getElementById(closeID).focus();
    } catch (e) { }
}

function closeOpenedHelpWindows() {

    try {
        helpObjectActive = false;
        try { resetPos('cat0Help'); } catch (e) { }
        try { resetPos('cat1Help'); } catch (e) { }
        try { resetPos('cat2Help'); } catch (e) { }
        try { resetPos('cat3Help'); } catch (e) { }
        try { resetPos('cat4Help'); } catch (e) { }
        try { resetPos('cat5Help'); } catch (e) { }
        try { showHide('helpArrow', 'none'); } catch (e) { }
        try {
            var arrowImg = document.getElementById("helpArrowImg");
            arrowImg.src = "/images/t.gif";
        } catch (e) { }

    } catch (e) {

    }
}

// ADD: close windows on resize
window.onresize = function closeResize() {
    closeOpenedHelpWindows();
}

function sethelpObjectActive() {
    try {
        helpObjectActive = true;
    } catch (e) { }
}
function unsethelpObjectActive() {
    try {
        if (event.srcElement.tagName == 'DIV' && event.srcElement.className == 'catHelp') {
            helpObjectActive = false;
        }
    } catch (e) { }
}

function unsethelpObjectActive1() {
    try {
        helpObjectActive = false;
    } catch (e) { }
}

function handleBlurEvent() {
    try {
        if (helpObjectActive == false) {
            closeOpenedHelpWindows();
        }
    } catch (e) { }
}

function getSetX(obj, popId) {
    try {

        var elem = document.getElementById(popId);
        var arrow = document.getElementById("helpArrow"); // ADD: arrow is separate element
        var curleft = 0;
        if (obj.offsetParent) {
            while (1) {
                curleft += obj.offsetLeft;
                if (!obj.offsetParent) {
                    break;
                }
                obj = obj.offsetParent;
            }
        } else if (obj.x) {
            curleft += obj.x;
        }

        //alert( document.getElementById(popId) + "::curleft: " + curleft + " and current is actually: " + arrow.style.left);
        document.getElementById(popId).style.left = ( curleft + 70) + "px";


    } catch (e) { }

}

function getSetY(obj, popId) {

    try {
        var elem = document.getElementById(popId);
        var arrow = document.getElementById("helpArrow");
        var arrowImg = document.getElementById("helpArrowImg");
        //var elemHeight = popId.offsetHeight; 

        // get top location of question mark
        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;
        }

        // ADD: get height of viewport; get height of popup
        var screenH;
        var popH = elem.offsetHeight;
        if (self.innerHeight) // all except Explorer
        {
            screenH = self.innerHeight;
        }
        else if (document.documentElement && document.documentElement.clientHeight)
        // Explorer 6 Strict Mode
        {
            screenH = document.documentElement.clientHeight;
        }
        else if (document.body) // other Explorers
        {
            screenH = document.body.clientHeight;
        }

        var popTop = (curtop - popH - 13);
        // top of popup (popTop) =  y location of bottom of question mark from top (curtop) - height of popup (popH) - 13px shift for arrow
        var yPos = screenH - curtop;
        // distance from bottom (yPos) = height of viewport (screenH) - y location of question mark top (curtop)

        // set popup to over or under alignment based on top position in viewport
        if (popTop >= 0) {
            // if position from top is positive, display above category
            //arrowImg.src = "/images/popupHelpArrow.gif";
            arrow.style.top = (curtop - 5) + "px";  // 14 is the height of the arrowImg, raise by 5 to align arrow to middle of question mark
            elem.style.top = (curtop - 4 - popH) + "px";
        }
        else {
            // if position from top is negative, display under category
            curtop += 6;
            //arrowImg.src = "/images/popupHelpArrowUnder.gif";
            arrow.style.top = ( curtop - 60) + "px";

            curtop += 11;
            elem.style.top = (curtop - 60) + "px";
        }

    }
    catch (e) { }
}






function resetPos(id) {
    try {
        if (document.getElementById) {
            document.getElementById(id).style.top = "-1000px";
        }
    } catch (e) { }
}


function showHide(id,vis) {
    try {
       if(document.getElementById ) {
          document.getElementById(id).style.display=vis;
       }
    } catch (e) {}
}

function changeClass(elemId, newClass) {
    try {
       var elem = document.getElementById(elemId);
       elem.className=newClass;
    } catch (e) {}       
}

function expandFidget(path) {
	expandAttributes(path);
    expandModules(path);

	return false;
}

function expandModules(path) {
	try {
        showHide('expandChoices','block');
        showHide('gcMoreFewer','block');
	    if(path != null) setCookie("bdc_fidget_opened", "1", null, path, "business.com", false);
	} catch (e) {}

	try {
	    showHide('moreChoices','none');
	} catch (e) {}
	try {
        showHide('fewerChoices', 'inline');
   	} catch (e) {}
    try {
	    showHide('moreFidget','block');
	} catch (e) {}
}

function expandAttributes(path) {

	try {
        showHide('moreOptions1','block');
        } catch (e) {}
    try {
        showHide('moreOptions2','block');
        } catch (e) {}
    try {
        showHide('moreOptions3','block'); 
	    } catch (e) {}
	try {
	    showHide('seeMore1','none');
        } catch (e) {}
	try {
	    showHide('seeMore2','none');
        } catch (e) {}
	try {
	    showHide('seeMore3','none');
	} catch (e) {}	
	

}

function closeFidget(path) {

    if(path != null) setCookie("bdc_fidget_opened", "0", null, path, "business.com", false);


	showHide('expandChoices','block');
	showHide('moreFidget','none');
	showHide('moreChoices','inline');showHide('fewerChoices','none'); //toggle view more/fewer choices links
	try {
        if ( document.getElementById('moreOptions1').innerHTML != "") {
            showHide('seeMore1','block');
        }
    } catch (e) {showHide('seeMore1','none');}
	try {
        if ( document.getElementById('moreOptions2').innerHTML != "") {
            showHide('seeMore2','block');
        }
    } catch (e) {showHide('seeMore2','none');}
	try {
        if ( document.getElementById('moreOptions3').innerHTML != "") {
            showHide('seeMore3','block');
        }
    } catch (e) {showHide('seeMore3','none');}        
	showHide('moreOptions1','none');showHide('moreOptions2','none');showHide('moreOptions3','none'); //hide more fidget options

	return false;
}

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}


function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}
