function ref(instance_or_id){
	return(typeof(instance_or_id)=="string")?document.getElementById(instance_or_id):instance_or_id;
}

function hasAncestor(element,ancestor){
	var el=ref(element);
	var an=ref(ancestor);
	while (el!=document&&el!=null){
		if(el==an) return true;
		el=el.parentNode;
	}
	return false;
}


var addListener = function() {
	if(window.addEventListener){
		return function(el,type,fn){
			el.addEventListener(type,fn,false);
		};
	} else if(window.attachEvent) {
		return function(el,type,fn) {
			var f	=	function()	{
				fn.call(el,window.event);
				};
			el.attachEvent('on'+type,f);
		};
	} else {
		return function(el,type,fn){
			el['on'+type]=fn;
		}
	}
} ();

function show(name, visible) {
	var layer = document.getElementById(name);
	
	if (layer) {
		if (visible) {
			layer.style.display = "block";
		} else {
			layer.style.display = "none";
		}
	}
}