/** * * @access public * @return void **/ function ImageBox(name,images){ this.name=name; this.canvas; this.descPanel; this.imgBox; this.imgHolder; this.btnClose; this.img=new Image(); this.maxOpacity = 80; this.actOpacity = 0; this.difOpacity = 20; this.dirOpacity = 1; this.dlyOpacity = 50; this.timeout; this.imgMargin = 30; this.maxWidth = 800; this.maxHeight = 600; this.minMargin = 30; this.relPath = ''; this.scrolledPos = 0; this.init=function(){ if(this.isIE()){ this.imgBox=document.createElement('
');
} else {
this.btnClose=document.createElement('img');
this.btnClose.setAttribute('src',this.relPath+'images/inslideshow/closelabel.gif');
this.btnClose.setAttribute('onclick',this.name+'.hide()');
}
this.btnClose.style.position='absolute';
this.btnClose.style.top='8px';
this.btnClose.style.cursor=(this.isIE())?'hand':'pointer';
this.canvas.appendChild(this.btnClose);
}
this.show=function(src,desc){
this.dirOpacity=1;
this.imgBox.style.display='block';
this.opacityTo(this.imgBox,this.difOpacity,this.maxOpacity,'prepareCanvas()');
this.img.src=src;
this.canvas.style.background='white';
this.imgHolder.style.display='none';
this.imgBox.style.height=this.max(this.imgBox.offsetHeight,document.body.offsetHeight+20,document.documentElement.clientHeight)+'px';
this.imgBox.style.width=this.max(this.imgBox.offsetWidth,document.body.offsetWidth,document.documentElement.clientWidth)+'px';
if(desc){
this.descPanel.innerHTML=desc;
this.descPanel.style.display='block';
this.descPanel.style.visibility='visible';
} else {
this.descPanel.innerHTML='';
this.descPanel.style.display='none';
this.descPanel.style.visibility='hidden';
}
}
this.prepareCanvas=function(){
if(!this.img.complete){
this.timeout=setTimeout(this.name+'.prepareCanvas()',100);
return true;
}
var w=this.img.width;
var h=this.img.height;
if(this.maxWidth&&(w>this.maxWidth)){
h=(this.maxWidth/w)*h;
w=this.maxWidth;
}
if(this.maxHeight&&(h>this.maxHeight)){
w=(this.maxHeight/h)*w;
h=this.maxHeight;
}
this.canvas.style.width=(w+2*this.imgMargin)+'px';
this.canvas.style.height=(h+2*this.imgMargin)+'px';
this.opacity(this.canvas,0);
this.canvas.style.display='block';
this.canvas.style.top=(((document.documentElement.clientHeight-this.canvas.offsetHeight)/2)>this.minMargin)?(parseInt((document.documentElement.clientHeight-this.canvas.offsetHeight)/2)+this.scrolledPos)+'px':this.minMargin+'px';
this.canvas.style.left=(((document.documentElement.clientWidth-this.canvas.offsetWidth)/2)>this.minMargin)?(parseInt((document.documentElement.clientWidth-this.canvas.offsetWidth)/2))+'px':this.minMargin+'px';
this.opacity(this.canvas,100);
if(this.isIE()) this.imgHolder.src=this.img.src;
else this.imgHolder.setAttribute('src',this.img.src);
this.imgHolder.style.width=w+'px';
this.imgHolder.style.height=h+'px';
this.imgHolder.style.display='block';
this.descPanel.style.top=(-(this.descPanel.offsetHeight))+'px';
this.btnClose.style.left=(this.canvas.offsetWidth-this.btnClose.offsetWidth-8)+'px';
}
this.hide=function(){
this.dirOpacity=-1;
this.opacityTo(this.imgBox,this.actOpacity-this.difOpacity,this.maxOpacity,false);
this.canvas.style.display='none';
this.descPanel.style.display='none';
this.imgHolder.setAttribute('src','');
this.img=new Image();
}
this.remove=function(){
document.body.removeChild(this.imgBox);
}
this.onscroll=function(){
if(this.canvas.style.display=='block')
this.canvas.style.top=(((document.documentElement.clientHeight-this.canvas.offsetHeight)/2)>this.minMargin)?(parseInt((document.documentElement.clientHeight-this.canvas.offsetHeight)/2)+this.scrolledPos)+'px':this.minMargin+'px';
this.scrolledPos=this.getScrollXY()[1];
}
this.getScrollXY=function() {
var scrOfX = 0, scrOfY = 0;
if( typeof( window.pageYOffset ) == 'number' ) {
//Netscape compliant
scrOfY = window.pageYOffset;
scrOfX = window.pageXOffset;
} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
//DOM compliant
scrOfY = document.body.scrollTop;
scrOfX = document.body.scrollLeft;
} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
//IE6 standards compliant mode
scrOfY = document.documentElement.scrollTop;
scrOfX = document.documentElement.scrollLeft;
}
return [ scrOfX, scrOfY ];
}
this.opacityTo=function(element,value,max,onready){
if(value<=max){
this.actOpacity=value;
this.opacity(element,this.actOpacity);
var nextOpacity=((this.actOpacity+this.dirOpacity*this.difOpacity)<=max)?(this.actOpacity+this.dirOpacity*this.difOpacity):max;
if(value