// Requires : prototype
function checkMe() {
	if (mainWin != null){
		if (mainWin.loaded == true) {
			window.close();
			return;
		} else {
			setTimeout('checkMe()',1000);
		}
	}
}

var mainWin = null;

function setMainWin (m) {
	if (m != null) {
		mainWin = m;
		setTimeout('checkMe()', 3000);
	}
}

var WaitScreen = new Object ({
  element: 'waitOverlay',
  relativeTo: document.viewport,
  hideButtons: true,
  
  show: function() {    
    this.element = $(this.element);
    if (this.boundCOS == null) this.boundCOS = WaitScreen.centerOnScreen.bindAsEventListener(WaitScreen);
    if (this.element != null) {
      this.centerOnScreen();
      this.element.show();      
      Event.observe(window, 'resize', this.boundCOS);
      Event.observe(window, 'scroll', this.boundCOS);
      Event.observe(window, 'unload', WaitScreen.hide.bindAsEventListener(WaitScreen));
      
      if (this.hideButtons) $$('input[type="button"]', 'button', 'input[type="submit"]', 'input[type="reset"]').each(function (el) {el.hide(); el.addClassName("_WaitScreen_hide_");});
      if (Prototype.Browser.IE && navigator.appVersion.indexOf("MSIE 6") > -1) $$('select').each(function (el) {el.hide(); el.addClassName("_WaitScreen_hide_");});
      if (Prototype.Browser.IE) { setTimeout("WaitScreen.reloadImages()", 500);}
      this.showCallback();
    } else {
      alert("No waiting...");  
    }
  },  
  
  hide: function() {
    this.element.hide();
    Event.stopObserving(window, 'resize', this.boundCOS);
    Event.stopObserving(window, 'scroll', this.boundCOS);
    $$('input._WaitScreen_hide_').each(function(el) {el.show(); el.removeClassName("_WaitScreen_hide_");});
    $$('select._WaitScreen_hide_').each(function(el) {el.show(); el.removeClassName("_WaitScreen_hide_");});
    
    this.hideCallback();
  },
  
  boundCOS: null,
  centerOnScreen: function () {
    if (this.element == null) return;
    var elementHeight = this.element.getHeight();
    var elementWidth = this.element.getWidth();
    var viewportHeight = this.relativeTo.getHeight();
    var viewportWidth = this.relativeTo.getWidth();
    var offsetTop = 0;
    var offsetLeft = 0;
    
    if (Object.isFunction(this.relativeTo.getScrollOffsets)) {
      offsetTop = this.relativeTo.getScrollOffsets().top
      offsetLeft = this.relativeTo.getScrollOffsets().left
    } else {
      offsetTop = this.relativeTo.cumulativeOffset().top;
      offsetLeft = this.relativeTo.cumulativeOffset().left; 
    }

    var debugString = " elementHeight:"+elementHeight
        + "\n elementWidth:"+elementWidth
        + "\n viewportHeight:"+viewportHeight
        + "\n viewportWidth:"+viewportWidth
        + "\n offsetTop:"+offsetTop
        + "\n offsetLeft:"+offsetLeft

    if (elementHeight == 0 || elementWidth == 0) {
      //alert("Oopsie !" + "\n" + debugString );
      return;
    } else {
      var elementTop = (viewportHeight - elementHeight)/ 2 + offsetTop;
      var elementLeft = (viewportWidth - elementWidth)/ 2 + offsetLeft;
      
      if (viewportHeight <= elementHeight) elementTop = offsetTop;
      if (viewportWidth <= elementWidth) elementLeft = offsetLeft;
      
      this.element.absolutize();
      this.element.style.top = elementTop + 'px';
      this.element.style.left = elementLeft + 'px';
      /*
      this.element.style.height = elementHeight + 'px';
      this.element.style.width = elementWidth + 'px';
      */
      this.element.style.zIndex = 1000;
    }
  },

  reloadImages: function () {
    this.element.select('img').each(function (img) {var s = img.src; img.src = ''; img.src = s; window.status=s});    
  },
  
  showCallback: Prototype.emptyFunction,
  hideCallback: Prototype.emptyFunction
});
