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;
        }	
		
		// ADD: get width of viewport
		var x;
		if (self.innerHeight) // all except Explorer
		{
			x = self.innerWidth - 63;
			// minus 63 to move arrow over width of arrow plus width of qmark, in not IE
		}
		else if (document.documentElement && document.documentElement.clientHeight)
			// Explorer 6 Strict Mode
		{
			x = document.documentElement.clientWidth - 45;
			// minus 45 to move arrow over width of arrow plus width of qmark, in IE
		}
		else if (document.body) // other Explorers
		{
			x = document.body.clientWidth - 45;
			// minus 45 to move arrow over width of arrow plus width of qmark, in IE
		}
		
		// ADD: width of viewport - x location of question mark top = distance from right
		var xPos = x - curleft;
		
	    //curleft-=-12;
	    //elem.style.left=curleft+"px";
		
		//ADD: set arrow position and display
	    arrow.style.right=xPos+"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+"px";
			
			curtop += 11;
			elem.style.top=curtop+"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('moreOptions4','block'); 
	    } catch (e) {}
    try {
        showHide('moreOptions5','block'); 
	    } catch (e) {}	    
    try {
        showHide('moreOptions6','block'); 
	    } catch (e) {}	    
	try {
	    showHide('seeMore1','none');
        } catch (e) {}
	try {
	    showHide('seeMore2','none');
        } catch (e) {}
	try {
	    showHide('seeMore3','none');
		} catch (e) {}	
	try {
	    showHide('seeMore4','none');
		} catch (e) {}	
	try {
	    showHide('seeMore5','none');
		} catch (e) {}		
	try {
	    showHide('seeMore6','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');}   
	try {
        if ( document.getElementById('moreOptions4').innerHTML != "") {
            showHide('seeMore4','block');
        }
    } catch (e) {showHide('seeMore4','none');}
	try {
        if ( document.getElementById('moreOptions5').innerHTML != "") {
            showHide('seeMore5','block');
        }
    } catch (e) {showHide('seeMore5','none');}      
	try {
        if ( document.getElementById('moreOptions6').innerHTML != "") {
            showHide('seeMore6','block');
        }
    } catch (e) {showHide('seeMore6','none');}              
	showHide('moreOptions1','none');
	showHide('moreOptions2','none');
	showHide('moreOptions3','none');
	showHide('moreOptions4','none');
	showHide('moreOptions5','none');
	showHide('moreOptions6','none');

	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));
}
