/**
 * Overlay
 */
var Overlay = Class.create({
  /**
   * Init Overlay
   */
  initialize: function() {
	this.options = Object.extend({
	  elemContent : null,
	  elemTint    : null,
	  nOpacity    : 1
	}, arguments[0] || { });		
	  
	this.overlayElem = this.options.elemContent;
	this.overlayTintElem = this.options.elemTint;
	
	this.fade = new EggFade({elemContent:this.overlayTintElem, nOpacity:this.options.nOpacity});
	this.overlayTintElem.observe('eggfade:hidden', this.onHidden.bind(this));
	
	// ios onorientation change
    if (Prototype.Browser.MobileSafari) {		
      window.onorientationchange = this.repaint.bind(this);
    }	 
	Event.observe(window, 'resize', this.repaint.bind(this));	
	this.repaint();
  },
  
  show: function() {
	this.overlayTintElem.style.display = "inline";	  	  
	this.overlayTintElem.style.visibility = "visible";
	this.overlayElem.style.visibility = "visible";
	
	this.fade.show();
  },

  hide: function() {
    this.hideNow.bind(this).delay(1);
  },
  
  hideNow: function() {
    this.fade.hide();
  },

  repaint: function(evt) {
	var offsets = document.viewport.getScrollOffsets();
	var viewDim = document.viewport.getDimensions();
	
    if (Prototype.Browser.MobileSafari) {	
  	  this.overlayTintElem.style.width = viewDim.width + "px";
	  this.overlayTintElem.style.height = viewDim.height + "px";
  	  // viewDim.height not reliable on ios
  	  var D = document
  	  var nHeight = Math.max(
  	        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
  	        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
  	        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
  	    );
	  this.overlayTintElem.style.height = nHeight + "px";
    }
  },
  
  onHidden: function(evt) {
	this.overlayTintElem.style.display = "none";	  	  
	this.overlayElem.style.visibility = "hidden";
  }
  
});

