/**
 * objectplanet.Dimmer.js This module dims the web page until clicked. 
 **/

/* Set up the name space */
var objectplanet;
if (!objectplanet) objectplanet = {};
objectplanet.Dimmer = {};

/* Expose only public methods in the name space  */
(function() {

	/* The name of the dimmer element */
	var DIMMER = "objectplanet.Dimmer.background";
	
	/* The element displayed over the dimmer and to be closed */
	var elementToClose = null;
	
	/* Dims the web page, and closes the specified element when hidden*/
	function dim(element) {
		elementToClose = element ? element : null;
		getDimmer().style.visibility = 'visible';
	};

	/* Hides the dimmer */
	function hide() {
		getDimmer().style.visibility = 'hidden';
	};

	// assign function to the global namespace
	objectplanet.Dimmer.dim = dim;
	objectplanet.Dimmer.hide = hide;
	objectplanet.Dimmer.DIMMER = DIMMER;

	
// private methods

	
	/* Creates the background */
	function getDimmer() {
		// create and add if not done so already
		var dimmer = document.getElementById(DIMMER);
		if (!dimmer) {
			// create and set the style
			dimmer = document.createElement("div");
			dimmer.id = DIMMER;
			dimmer.style.position = 'fixed';
			dimmer.style.left = '0px';
			dimmer.style.top = '0px';
			dimmer.style.right = '0px';
			dimmer.style.bottom = '0px';
			dimmer.style.zOrder = 100;
			
			// make it transparent
			dimmer.style.backgroundColor = 'black';
			if (navigator.appName.indexOf('icrosoft') >= 0) {
				dimmer.style.filter = 'alpha(opacity=60)';
			}
			else {
				dimmer.style.opacity = '0.6';
			}
			
			// add the close event handler
			dimmer.onclick = function() {
				getDimmer().style.visibility = 'hidden';
				if (elementToClose != null) {
					elementToClose.style.visibility = 'hidden';
				}
			};
			
			// add to the document
			document.body.appendChild(dimmer);
		}
		
		// set up event handler
		return dimmer;
	}
})();

