// Heads Up Display.  A Nice Popup Web2.0 Kinda Thing.
// Eric Vitiello : evitiello@ribbitt.com
// Lots of code from wayfaring.com.  Thanks!!

var Hud = Class.create();
Hud.prototype = {
	initialize: function() {
		this.containerHTML = '<div id="hud_overlay" style="display:none;position:absolute;top:0px;left:0px;z-index:90;width:100%;height:100%"></div>'+
		'<div id="hud_data" style="display:none;">';
		'<img src="/images/close.gif" onclick="hideBox()" alt="Close" title="Close this window" style="position:absolute;top:-5px;right:-5px;cursor:pointer;" />';
		'<div id="hud_content"></div>'+
		'</div>';
		
		this.content = '';
	},

	// Hide it!
	//
	Hide : function() {
		TAF_Element.hide("hud_overlay");
		TAF_Element.hide("hud_data");
		
		// show the embedded items we hid.
		embeddedObjects = document.getElementsByTagName("embed");
		for (obj = 0; obj < embeddedObjects.length; obj++) {
			TAF_Element.show(embeddedObjects[obj]);
		}

		// show the embedded items we hid.
		embeddedObjects = document.getElementsByTagName("object");
		for (obj = 0; obj < embeddedObjects.length; obj++) {
			TAF_Element.show(embeddedObjects[obj]);
		}
		
	},

	// Display it, baby.
	//
	Show : function() {

		// we need to hide all objects -- they get rendered
		// over top of our HUD.
		embeddedObjects = document.getElementsByTagName("embed");
		for (obj = 0; obj < embeddedObjects.length; obj++) {
			TAF_Element.hide(embeddedObjects[obj]);
		}
		embeddedObjects = document.getElementsByTagName("object");
		for (obj = 0; obj < embeddedObjects.length; obj++) {
			TAF_Element.hide(embeddedObjects[obj]);
		}	23
		hudOverlay = $('hud_overlay');
		if (!hudOverlay) {
			// TODO: Add code here to add in the default HUD code [this.containerHTML]
		}
		hudContent = $('hud_content');
		
		// load the content
		if (this.content!='') {hudContent.innerHTML = this.content;}
		// we need to make the HUD as big as the body node, or the window, whichever is bigger.
		bodyHeight = TAF_Element.getHeight(document.body);
		windowSizes = this.WindowSize();
		newHeight = (bodyHeight > windowSizes.height) ? bodyHeight : windowSizes.height ;
		hudOverlay.style.height = newHeight+"px";

		TAF_Element.show("hud_overlay");
		this.Center("hud_data");
		TAF_Element.show("hud_data");
	},
	
	Center : function(element) {
		try {
			element = document.getElementById(element);
		} catch(e) {return;}
		
		windowSizes = this.WindowSize(); 
		
		element.style.position='absolute';
		element.style.zIndex=99;
		var scrollY=0;
		if (document.documentElement && document.documentElement.scrollTop) {
			scrollY=document.documentElement.scrollTop;
		} else if (document.body && document.body.scrollTop){
			scrollY=document.body.scrollTop;
		} else if(window.pageYOffset){
			scrollY=window.pageYOffset;
		} else if(window.scrollY){
			scrollY=window.scrollY;
		}
		var elementDimensions=TAF_Element.getDimensions(element);
		var setX=(windowSizes.width-elementDimensions.width)/2;
		var setY=(windowSizes.height-elementDimensions.height)/2+scrollY;
		setX=(setX<0)?0:setX;
		setY=(setY<0)?0:setY;
		element.style.left=setX+"px";
		element.style.top=setY+"px";
		element.style.display='block';
	},
	
	WindowSize : function() {
		var myWidth = 0, myHeight = 0;
		if( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			myWidth = window.innerWidth;
			myHeight = window.innerHeight;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			myWidth = document.body.clientWidth;
			myHeight = document.body.clientHeight;
		}
		returnObject = new Object();
		returnObject.width = myWidth;
		returnObject.height = myHeight;
		return returnObject;
	}

}
