/**
 * Dateiname       : javascript/Overlayer.js
 * Erzeugungsdatum : 07.02.2008
 * Autor           : Carsten Kube
 * Version         : 1.0
 * Letzte Akt.     : 08.02.2008 (CK)
 * 
 * (c) Copyright SECRA GmbH
 */

var secra, Geometry, Handler;
if(!secra) {secra = {};}
else if(typeof secra !== "object") {throw new Error("secra ist kein Objekt!");}
if(secra.Overlayer) {throw new Error("secra.Overlayer existiert bereits!");}

secra.Overlayer = function(imagefolder) {
  if(!secra.Secrautility) {throw new Error("secra.Secrautility (V1.0) nicht geladen!");}
  if(!Geometry) {throw new Error("Geometry.js (V1.0) nicht geladen!");}
  if(!Handler) {throw new Error("Handler.js (V1.0) nicht geladen!");}
  secra.Overlayer.objCounter += 1;
  this.objId = secra.Overlayer.objCounter;
  this.imagefolder = imagefolder;

  this.htmlObjects = document.getElementsByTagName("object");
  this.htmlSelects = document.getElementsByTagName("select");
  this.divlayer = document.createElement("div");
  this.divcont  = document.createElement("div");

  this.init();
};

secra.Overlayer.objCounter = 0;

secra.Overlayer.prototype.init = function() {
  this.divlayer.style.zIndex = "100";
  this.divlayer.style.position = "absolute";
  this.divlayer.style.left = "0px";
  this.divlayer.style.top = "0px";
  this.divlayer.style.backgroundImage = "url("+this.imagefolder+"grau.gif)";
  this.divlayer.style.visibility = "hidden";

  this.divcont.style.zIndex = "101";
  this.divcont.style.position = "relative";
  this.divcont.style.left = "0px";
  this.divcont.style.top = "0px";
  this.divcont.style.visibility = "hidden";

  this.zerosize();

  this.divlayer.appendChild(this.divcont);
  document.body.appendChild(this.divlayer);

  var thisobj = this;
  Handler.add(window, "resize", function(){ /* closure */ thisobj.resize();});
};

secra.Overlayer.prototype.show = function() {
  this.hideHTMLElements('htmlObjects');
  this.hideHTMLElements('htmlSelects');
	this.resize();
	this.divlayer.style.visibility = "visible";
};

secra.Overlayer.prototype.hide = function() {
  this.unhideHTMLElements('htmlObjects');
  this.unhideHTMLElements('htmlSelects');
	this.zerosize();
	this.divlayer.style.visibility = "hidden";
};

secra.Overlayer.prototype.resize = function() {
	this.divlayer.style.width = Geometry.getDocumentWidth() + "px";
	this.divlayer.style.height = Geometry.getDocumentHeight() + "px";
};

secra.Overlayer.prototype.repositionContainer = function() {
	this.divlayer.style.width = Geometry.getDocumentWidth() + "px";
	this.divlayer.style.height = Geometry.getDocumentHeight() + "px";
};

secra.Overlayer.prototype.zerosize = function() {
	this.divlayer.style.width = "0px";
	this.divlayer.style.height = "0px";
	this.divcont.style.width = "0px";
	this.divcont.style.height = "0px";
};

secra.Overlayer.prototype.hideHTMLElements = function(prop) { // private
	// alten Status sichern, dann unsichtbar
  for(var i = 0, k = this[prop].length; i < k; i += 1){
    this[prop][i].oldvisibility = this[prop][i].style.visibility;
	  this[prop][i].style.visibility = "hidden";
  }
};

secra.Overlayer.prototype.unhideHTMLElements = function(prop) { // private
	for(var i = 0, k = this[prop].length; i < k; i += 1){
	  this[prop][i].style.visibility = this[prop][i].oldvisibility;
	}
};

secra.Overlayer.prototype.getContainer = function() {
	return this.divcont;
};

secra.Overlayer.prototype.toString = function() {
  return "Object [Overlayer Id: "+this.objId+"]";
};

