// JavaScript Document


dojo.require("dijit._base.place");


//  lightBoxContainer (2009-12-07)
//  this object make global elements and services for lightBoxes


function lightBoxContainer(parentObject,sourceElemID,sourceHTML) {
  var self = this;
  this.appended = false; //
  this.darkElem = null; // popup dark or light background element
  this.innerElem = null; // popup container element
  this.innerIFrame = null; // iframe element for overlaing form elements
  this.parentObject = parentObject; // JS object that contains (use) lightBox object
  this.sourceElemID = sourceElemID; //
  this.sourceHTML = sourceHTML; // sourceHTML can be inserted 1. into show function 2. into new lightBox object 3. into some object with id sourceElemID
  //
  this.init = function() {
    self.darkElem = document.createElement('div');
    self.darkElem.className = 'hidden';
    self.innerElem = document.createElement('div');
    self.innerElem.className = 'hidden';
    self.innerIFrame = document.createElement('iframe');
    self.innerIFrame.className = 'hidden';
  };
  //
  this.show = function(sourceHTML) {
    if (!self.appended) self.appendElems();
    if (self.sourceElemID) {
      var sourceElem = dojo.byId(self.sourceElemID);
      freeElemsRemover(sourceElem);
      self.sourceHTML = sourceElem.innerHTML;
    }
    if (sourceHTML) self.sourceHTML = sourceHTML;
    self.innerElem.innerHTML = self.sourceHTML;
    dojo.connect(dojo.query('a.lightbox-close',self.innerElem)[0],"onclick",self.close);
    self.darkElem.className = 'lightbox-bg';
    self.innerElem.className = 'lightbox-inner';
    self.innerIFrame.className = 'lightbox-iframe';
  };
  //
  this.centering = function() {
    var viewport = dijit.getViewport();
    self.darkElem.style.width = viewport.w+'px';
    self.darkElem.style.height = viewport.h+'px';
    var left = Math.round((viewport.w/2-self.innerElem.offsetWidth/2));
    var top = Math.round((viewport.h/2-self.innerElem.offsetHeight/2));
    left = (left>0?left:0);
    top = (top>0?top:0);
    self.innerElem.style.left = left+'px';
    self.innerElem.style.top = top+'px';
    self.innerIFrame.style.left = left+'px';
    self.innerIFrame.style.top = top+'px';
  };
  //
  this.iframeResize = function(size) {
    self.innerIFrame.style.width = size.width;
    self.innerIFrame.style.height = size.height;
  };
  //
  this.appendElems = function() {
    var body = dojo.body();
    body.insertBefore(self.darkElem,body.firstChild);
    body.insertBefore(self.innerElem,body.firstChild);
    body.insertBefore(self.innerIFrame,body.firstChild);
    dojo.connect(window,"onresize",self.centering);
    self.appended = true;
  };
  //
	this.close = function(evt) {
    if (self.parentObject) self.parentObject.close();
    self.darkElem.className = 'hidden';
    self.innerElem.className = 'hidden';
    self.innerIFrame.className = 'hidden';
    if (evt) dojo.stopEvent(evt);
	};
  //
  return self.init();
}


// end of document

