function DisplayerClass (aDarkOverlayElementName){
	/**
	 * private properties
	 */
	var darkOverlay = null;
	
	
	/**
	 * private functions
	 */
	function initialize ()
	{
		try
		{
			darkOverlay = dojoWrapper.getById ( aDarkOverlayElementName );
		}
		catch ( error )
		{
			console.error ( "Displayer: Initialization failed. " + error );
		}
	}
	
	
	/**
	 * public functions
	 */
	this.show = function(aContainer, aOnEndAgent){
		try {
			
			var browserWidth = dojoWrapper.getBrowserWidth();
			var marginLeft = (browserWidth - 970) / 2;
			marginLeft += "px";
			
			dojoWrapper.removeClass(darkOverlay, "invisible");
			dojoWrapper.setStyle(darkOverlay, "opacity", "0");
			
			dojoWrapper.setStyle(darkOverlay, "zIndex", "1000");
			dojoWrapper.setStyle(aContainer, "zIndex", "1001");
			
			var property = {
				opacity: {
					start: 0,
					end: 0.6
				}
			}
			
			var onEndAgent = function(){
				dojoWrapper.removeClass(aContainer, "invisible");
				
				dojoWrapper.setStyle(aContainer, "left", marginLeft);
				
				aOnEndAgent ();
			}
			
			dojoWrapper.animateProperty(darkOverlay, 1000, property, onEndAgent).play();
			
			
		} 
		catch (err) {
			console.error("DisplayerClass: showing failed. " + err);
		}
	}
	
	this.hide = function(aContainer){
		try {
			var property = {
				opacity: {
					start: 0.6,
					end: 0
				}
			}
			
			var onEndAgent = function(){
				dojoWrapper.setStyle(darkOverlay, "zIndex", "1");
				dojoWrapper.setStyle(aContainer, "zIndex", "1");
				
				dojoWrapper.addClass(darkOverlay, "invisible");
				dojoWrapper.addClass(aContainer, "invisible");
			}
			
			dojoWrapper.animateProperty(darkOverlay, 1000, property, onEndAgent).play();
			
		} 
		catch (err) {
			console.error("DisplayerClass: hiding failed. " + err);
		}
	}
	
	
	initialize ();
}
		