var LightBox = function(){

  this.options = {
    loadingSrc:'images/light_loading.gif',
    lightBackOpacity:'0.65',
    width:800,
    height:600
  };
  this.initialize = function(options){ 
    for(var property in options)this.options[property] = options[property];
  };

};

var Lp = LightBox.prototype = {
    
  setLightBack: function(){  
    var lightBack = addElement('div',{
      id:'light_back',
      styles:{position:'absolute',top:0,left:0,background:'#000',zIndex:10,width:'100%'},
      opacity:this.options.lightBackOpacity
    });
    $css("body")[0].insertBefore(lightBack, $css("body")[0].firstChild);
    lightBack.style.height = Window.scrollHeight()+'px'; 
  },
  
  setLightBox: function(widthBox,heightBox){  
    var lightBox = addElement('div',{id:'light_box',styles:{visibility:'hidden'}});
    $css("body")[0].insertBefore(lightBox, $css("body")[0].firstChild);
    setStyles(lightBox,{
      position:'absolute',
      zIndex:100,
      width:(widthBox)+'px',
      height:(heightBox+20)+'px'
    });
    this.centerObj(lightBox);
    var lightTop = addElement('div',{id:'light_top'});
    lightBox.appendChild(lightTop);
    lightBox.onclick = function(){
      lightBox.style.display = 'none';
      $('light_back').style.display = 'none';
    };
    return lightBox;
  },
  
  centerObj: function(obj){
    var winX = Window.width(),winY = Window.height();
    var topPos = ((winY - obj.offsetHeight)>0)? (winY - obj.offsetHeight) : 10;
    var leftPos = ((winX - obj.offsetWidth)>0)? (winX - obj.offsetWidth) : 10;
    obj.style.top = (topPos/2)+Window.scrollTop() + 'px';
    obj.style.left = (leftPos/2)+Window.scrollLeft() + 'px';		
    obj.style.visibility='visible';
  },
  
  showAjax: function(srcAjax){
    this.options.width;
    var objContent = document.createElement('div',{
      id:'light_content',
      styles:{width:this.options.width+'px',height:this.options.height+'px'}
    });  
    $('light_loading').style.display = 'none';
    Lp.setLightBox(this.options.width,this.options.height);
    $('light_box').appendChild(objContent);
    $('light_top').innerHTML = srcAjax.getElementsByTagName('title')[0].firstChild.nodeValue;
    objContent.innerHTML = srcAjax.getElementsByTagName('content')[0].firstChild.nodeValue;
  },
  
  showLoading: function(){
  
    objloading = addElement('img',{id:'light_loading',src:this.options.loadingSrc});
    $css("body")[0].insertBefore(objloading, $css("body")[0].firstChild);
    setStyles(objloading,{'visibility':'hidden','position':'absolute','zIndex':'100'});
    objloading.src = this.options.loadingSrc;
  
    var imagesLoading=new Image();
    imagesLoading.onload = function() {         
      setTimeout(function(){   
        Lp.centerObj(objloading);
      }, 100);                
    };
    imagesLoading.src = this.options.loadingSrc;
  },
  
  showImg: function(srcPhoto,titlePhoto,descPhoto){
   
    var imagesLoader=new Image();
    imagesLoader.onload = function() {         
      setTimeout(function(){
      
        objloading.style.display = 'none';
        var objImg = addElement('img',{id:'light_photo'});
        $css("body")[0].insertBefore(objImg, $css("body")[0].firstChild);
        setStyles(objImg,{'visibility':'hidden','position':'absolute','zIndex':100});
        objImg.src=srcPhoto;

        if(descPhoto){
          var lightDesc = addElement('div',{id:'light_description'});
          lightDesc.innerHTML = descPhoto;         
          var lightBox = Lp.setLightBox((objImg.offsetWidth+10),(objImg.offsetHeight+30));
          lightBox.appendChild(objImg);
          lightBox.appendChild(lightDesc);
        }else{
          Lp.setLightBox((objImg.offsetWidth+10),(objImg.offsetHeight+10));
          lightBox.appendChild(objImg);
        }       
        if(titlePhoto) $('light_top').innerHTML = titlePhoto;
        
        setStyles(objImg,{'visibility':'visible','position':'relative'});
        
      }, 200);                
    };
    imagesLoader.src=srcPhoto;
  }
 
};

function lightBoxImg(srcPhoto,titlePhoto,descPhoto){ 
  var light = new LightBox();
  light.setLightBack();
  light.showLoading();
  light.showImg(srcPhoto,titlePhoto,descPhoto);  
}

function lightBoxAjax(xmlSrc){ 
  var ajax = new ajaxRequest(xmlSrc); 
  ajax.callBack(setAjaxBox);
  ajax.get();
}

function setAjaxBox(data){   
  var setAjax = new LightBox();
  setAjax.setLightBack();
  setAjax.showLoading();
  setAjax.initialize({lightBackOpacity:'0.5',width:600,height:400});
  setAjax.showAjax(data.responseXML);
}
