/** * * @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.imgBox=document.createElement('div'); this.imgBox.setAttribute('id','imgBox'); this.imgBox.setAttribute('onclick',this.name+'.hide()'); } this.imgBox.style.position='absolute'; this.imgBox.style.zIndex='10000'; this.imgBox.style.top='0px'; this.imgBox.style.left='0px'; this.imgBox.style.width='100%'; this.imgBox.style.height='100%'; this.imgBox.style.background='black'; this.imgBox.style.display='none'; document.body.appendChild(this.imgBox); this.canvas=document.createElement('div'); this.canvas.style.display='none'; this.canvas.style.position='absolute'; this.canvas.style.zIndex=Number(this.imgBox.style.zIndex)+1; this.canvas.style.background='white'; document.body.appendChild(this.canvas); this.imgHolder=document.createElement('img'); this.imgHolder.style.position='relative'; this.imgHolder.style.top=this.imgMargin+'px'; this.imgHolder.style.left=this.imgMargin+'px'; this.imgHolder.style.border='solid 1px #CCCCCC'; this.imgHolder.style.zIndex=Number(this.canvas.style.zIndex)+1; this.canvas.appendChild(this.imgHolder); if(this.isIE()){ this.descPanel=document.createElement('
'); this.descPanel.style.borderTop='solid 1px gray'; this.descPanel.style.borderBottom='solid 1px gray'; } else { this.descPanel=document.createElement('div'); this.descPanel.setAttribute('onmouseover',this.name+'.opacity(this,90)'); this.descPanel.setAttribute('onmouseout',this.name+'.opacity(this,50)'); this.opacity(this.descPanel,50); } this.descPanel.style.position='relative'; this.descPanel.style.display='none'; this.descPanel.style.top='0px'; this.descPanel.style.left='0px'; this.descPanel.style.width='100%'; this.descPanel.style.background=(this.isIE())?'none':'#AAAAAA'; this.descPanel.style.textAlign='center'; this.descPanel.style.fontSize='14px'; this.descPanel.style.fontWeight='bold'; this.descPanel.style.color='black'; this.descPanel.style.paddingTop='5px'; this.descPanel.style.paddingBottom='5px'; this.descPanel.style.zIndex=Number(this.imgHolder.style.zIndex)+1; this.canvas.appendChild(this.descPanel); if(this.isIE()){ this.btnClose=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(valuemax) max=arguments[i]; return max; } this.opacity=function(element, value){ if(typeof element=="string"){element=document.getElementById(element);} if(!element){return null} value=parseFloat(value); if(isNaN(value)){return null;} if(typeof element.style.opacity!="undefined"){ if(value>1){value/=100;} element.style.opacity=value; return value; } else if(typeof element.style.filter!="undefined"){ if(value<=1 && value>0){value*=100;} element.style.filter="alpha(opacity="+value+")"; return value; } return null; } this.isIE=function(){ return (this.strpos(navigator.userAgent.toLowerCase(),"msie",0)>0); } this.strpos=function( haystack, needle, offset){ var i = haystack.indexOf( needle, offset ); // returns -1 return i >= 0 ? i : false; } this.addScroll=function(name) { var oldQueue = window.onscroll? window.onscroll: function() {}; window.onscroll = function() { eval(name+".onscroll()"); oldQueue(); } } this.addInit=function(name) { var oldQueue = window.onload? window.onload: function() {}; window.onload = function() { eval(name+".init()"); oldQueue(); } } if(images) this.add(images); this.addInit(this.name); this.addScroll(this.name); }