var xb =
{
	evtHash: [],

	ieGetUniqueID: function(_elem)
	{
		if (_elem === window) { return 'theWindow'; }
		else if (_elem === document) { return 'theDocument'; }
		else { return _elem.uniqueID; }
	},

	addEvent: function(_elem, _evtName, _fn, _useCapture)
	{
		if (typeof _elem.addEventListener != 'undefined')
		{
			if (_evtName == 'mouseenter')
				{ _elem.addEventListener('mouseover', xb.mouseEnter(_fn), _useCapture); }
			else if (_evtName == 'mouseleave')
				{ _elem.addEventListener('mouseout', xb.mouseEnter(_fn), _useCapture); } 
			else
				{ _elem.addEventListener(_evtName, _fn, _useCapture); }
		}
		else if (typeof _elem.attachEvent != 'undefined')
		{
			var key = '{FNKEY::obj_' + xb.ieGetUniqueID(_elem) + '::evt_' + _evtName + '::fn_' + _fn + '}';
			var f = xb.evtHash[key];
			if (typeof f != 'undefined')
				{ return; }
			
			f = function()
			{
				_fn.call(_elem);
			};
		
			xb.evtHash[key] = f;
			_elem.attachEvent('on' + _evtName, f);
	
			// attach unload event to the window to clean up possibly IE memory leaks
			window.attachEvent('onunload', function()
			{
				_elem.detachEvent('on' + _evtName, f);
			});
		
			key = null;
			//f = null;   /* DON'T null this out, or we won't be able to detach it */
		}
		else
			{ _elem['on' + _evtName] = _fn; }
	},	

	removeEvent: function(_elem, _evtName, _fn, _useCapture)
	{
		if (typeof _elem.removeEventListener != 'undefined')
			{ _elem.removeEventListener(_evtName, _fn, _useCapture); }
		else if (typeof _elem.detachEvent != 'undefined')
		{
			var key = '{FNKEY::obj_' + xb.ieGetUniqueID(_elem) + '::evt' + _evtName + '::fn_' + _fn + '}';
			var f = xb.evtHash[key];
			if (typeof f != 'undefined')
			{
				_elem.detachEvent('on' + _evtName, f);
				delete xb.evtHash[key];
			}
		
			key = null;
			//f = null;   /* DON'T null this out, or we won't be able to detach it */
		}
	},
	
	mouseEnter: function(_pFn)
	{
		return function(_evt)
		{
			var relTarget = _evt.relatedTarget;				
			if (this == relTarget || xb.isAChildOf(this, relTarget))
				{ return; }

			_pFn.call(this, _evt);
		}
	},
	
	isAChildOf: function(_parent, _child)
	{
		if (_parent == _child) { return false };
		
		while (_child && _child != _parent)
			{ _child = _child.parentNode; }
		
		return _child == _parent;
	}
};

var opacity1 = 0;
var opacity2 = 0;

function init()
{
	var theList = document.getElementById('css_menu');
	xb.addEvent(theList, 'mouseenter', enter, false);
	xb.addEvent(theList, 'mouseleave', leave, false);
}

function enter(e)
{
	doGreyOut();
}

function leave(e)
{
	//alert('mouseleave: ' + this.id);
	stopGreyOut();
}


function keep_mouseover (myDiv) {
	var myDiv_image_on = "http://www.calamos.com/~/media/images/new_splash/" + myDiv + "_on.ashx";
	var myDiv_image_id = myDiv + "_img";
	//alert('in keep_mouseover: ' + myDiv_image_on);
	document.getElementById(myDiv_image_id).src=myDiv_image_on;
	//alert('in keep_mouseover: ' + document.getElementById('institutional_img').src);
	document.getElementById('css_menu').style.zIndex="10010";
}

function drop_mouseover (myDiv) {
	var myDiv_image_off = "http://www.calamos.com/~/media/images/new_splash/" + myDiv + ".ashx";
	var myDiv_image_id = myDiv + "_img";
	opacity1 = 0;
	opacity2 = 0;
	//alert('in keep_mouseover: ' + myDiv);
	document.getElementById(myDiv_image_id).src=myDiv_image_off;
}

function doGreyOverlayOpacity() {
	//alert ("In greyopacity");
	//document.getElementById('grey_overlay').style.opacity = 0.0;
	//document.getElementById('grey_overlay').style.filter = "alpha(opacity=0)";
	opacity1 = opacity1 + .03;
	opacity2 = opacity2 + 3;
	document.getElementById('grey_overlay').style.opacity = opacity1;
	document.getElementById('grey_overlay').style.filter = "alpha(opacity=" + opacity2 + ")";
	//alert ("In greyopacity: " + document.getElementById('grey_overlay').style.opacity);
	//alert ("In greyopacity: " + opacity1 + " - " + opacity2);
	if (opacity1 < .2){
	  setTimeout(doGreyOverlayOpacity,10); 
	}

	if (opacity2 < 10){
		  setTimeout(doGreyOverlayOpacity,10); 
	}
		
}


function doGreyOut() {
	document.getElementById('grey_overlay').style.opacity = 0.0;
	document.getElementById('grey_overlay').style.filter = "alpha(opacity=0)";
	document.getElementById('grey_overlay').style.display="inline";
	document.getElementById('grey_overlay').style.zIndex="2";
	//alert("docheight: " + document.body.offsetHeight);
	document.getElementById('grey_overlay').style.height = document.body.offsetHeight;
	document.getElementById('grey_overlay').style.width = document.body.offsetWidth;
	opacity1 = 0;
	opacity2 = 0;
	doGreyOverlayOpacity();
	opacity1 = 0;
	opacity2 = 0;
}

function stopGreyOut() {
	document.getElementById('grey_overlay').style.opacity = 0.0;
	document.getElementById('grey_overlay').style.filter = "alpha(opacity=0)";
	document.getElementById('grey_overlay').style.display="none";
	document.getElementById('grey_overlay').style.zIndex="2";

}

