
var showUpElement = function(el, callBackFn)
{
	callBackFn = callBackFn || function() {};
	
	try {
		if(document.getElementById('overlay')) return false;

		var overlay = document.createElement('div');
		overlay.id = 'overlay';
		overlay.className = 'overlay';
		overlay.style.width = el.parentNode.parentNode.offsetWidth + 'px';
		overlay.style.height = el.parentNode.parentNode.offsetHeight + 'px';
		overlay.style.zIndex = 100;
		overlay.style.display = 'none';
		
		el.style.zIndex = 101;
		el.parentNode.appendChild(overlay);
		
		Effect.Appear(overlay, {
			duration: 0.5,
			to: 0.5,
			afterFinish: callBackFn
		});
	}
	catch(ex) { }
}

var unShowUpElement = function(el)
{
	try {
		Effect.Fade(document.getElementById('overlay'), {duration: 0.5, from: 0.5, afterFinish: function() {
			document.getElementById('overlay').parentNode.removeChild(document.getElementById('overlay'));
			el.style.zIndex = 0;
		}});
	}
	catch(ex) { }
}

var checkMouseEnter = function(el, e)
{
  if(el.contains && e.fromElement) {
    return !el.contains(e.fromElement);
  }
  else if (e.relatedTarget) {
    return !containsDOM(el, e.relatedTarget);
  }
}

var checkMouseLeave = function(el, e)
{
  if(el.contains && e.toElement) {
    return !el.contains(e.toElement);
  }
  else if (e.relatedTarget) {
    return !containsDOM(el, e.relatedTarget);
  }
}

var containsDOM = function(container, containee)
{
  var isParent = false;
  
  try {
		do {
			if((isParent = container == containee)) break;
			
			containee = containee.parentNode;
		}
		while (containee != null);
	}
	catch(ex) { }
  
  return isParent;
}