var movementX;
var movementY;
var optionsY;
var optionsStatus=0;
var velocity=1;
var xpad=ypad=6;
var imageWait;
var imgID=imgpID=imgnID=0;
var imgObj=[];
var imgthumbObj=[];
var imgalreadyLoaded=[];
var iCounter=0;
var toppad=60;
var boardtop=60;
var lightboxready=false;
var lbreadytest;
var objopacity;
var btype=testforBrowser();
var tmppath="";

function getEsc(e){
 var k=getEvents.keycodes(e);
 if(k && k[0]==27){
  startstopLightbox(0);
 }
}
function initLightbox(){
 if(!lightboxready){
  //PREPARE LIGHTBOX
  var l=getObject("lightboxOuterDiv");
  var fd=document.createElement('div');
  fd.id="fadedDiv";
  l.appendChild(fd).appendChild(document.createTextNode(" "));
  
  //BOARD / TOP BOARD
  var bod=document.createElement('div');
  bod.id="boardOuterDiv";
  var btd=document.createElement('div');
  btd.id="boardtopDiv";
  var bd=document.createElement('div');
  bd.id="boardDiv";
  var od=document.createElement('div');
  od.id="optionsDiv";
  l.appendChild(bod);
  bod.appendChild(btd).appendChild(document.createTextNode(" "));
  bod.appendChild(bd).appendChild(document.createTextNode(" "));
  bod.appendChild(od).appendChild(document.createTextNode(" "));
  getObject("boardtopDiv").innerHTML='<div id="boardtopDetails"></div>';
  getObject("optionsDiv").innerHTML='<div id="optionDetails"></div>';
  
  //LOADING
  var lod=document.createElement('div');
  lod.id="loadingOuterDiv";
  var ld=document.createElement('div');
  ld.id="loadingDiv";
  l.appendChild(lod);
  lod.appendChild(ld).appendChild(document.createTextNode(" "));
  getObject("loadingDiv").innerHTML='<img src="graphics/loading.gif" alt="Loading" title="Loading" id="loadingImg" /><a href="javascript:startstopLightbox(0)">Cancel Loading...</a>';
  
  //PREVNEXT
  var pnod=document.createElement('div');
  pnod.id="pnOuterDiv";
  var pnid=document.createElement('div');
  pnid.id="pnInnerDiv";
  var nd=document.createElement('div');
  nd.id="nextDiv";
  var pd=document.createElement('div');
  pd.id="prevDiv";
  l.appendChild(pnod);
  pnod.appendChild(pnid);
  pnid.appendChild(nd).appendChild(document.createTextNode(" "));
  pnid.appendChild(pd).appendChild(document.createTextNode(" "));
  getObject("nextDiv").innerHTML='<a href="javascript:loadLightboxImage(++imgID)" id="nexttext">Next</a>';
  getObject("prevDiv").innerHTML='<a href="javascript:loadLightboxImage(--imgID)" id="prevtext">Prev</a>';
 
  var cd=document.createElement('div');
  cd.id="closegalleryDiv";
  nd.appendChild(cd).appendChild(document.createTextNode(" "));
  getObject("closegalleryDiv").innerHTML='<div id="closegalleryDetails" onclick="startstopLightbox(0)"><img src="graphics/close_gallery2.png" alt="close gallery" /></div>';
 
  //PREVNEXT IMAGE
  var pniod=document.createElement('div');
  pniod.id="pnimageOuterDiv";
  var pniid=document.createElement('div');
  pniid.id="pnimageInnerDiv";
  var nid=document.createElement('div');
  nid.id="nextimageDiv";
  var pid=document.createElement('div');
  pid.id="previmageDiv";
  l.appendChild(pniod);
  pniod.appendChild(pniid);
  pniid.appendChild(nid).appendChild(document.createTextNode(" "));
  pniid.appendChild(pid).appendChild(document.createTextNode(" "));
  getObject("nextimageDiv").innerHTML='<a href="javascript:loadLightboxImage(++imgID)"><img src="" alt="" title="" id="nextimage" /></a>';
  getObject("previmageDiv").innerHTML='<a href="javascript:loadLightboxImage(--imgID)"><img src="" alt="" title="" id="previmage" /></a>';
   
  //CANVAS
  var cod=document.createElement('div');
  cod.id="canvasOuterDiv";
  var cd=document.createElement('div');
  cd.id="canvasDiv";
  l.appendChild(cod);
  cod.appendChild(cd).appendChild(document.createTextNode(" ")); 
  getObject("canvasDiv").innerHTML='<img src="" alt="" title="" id="canvasImg" onload="showLightboxImage()" />'; 
  
  //PREPARE LISTENERS
  var d=getObjDims("boardDiv");
  movementX=new moveObj(d.l,d.l);
  movementY=new moveObj(d.h,d.h);
  optionsY=new moveObj(d.t,d.t);
  window.setInterval(updateBoardDims, 20);
  window.setInterval(updateOptionsDims, 20);
  
  lightboxready=true;
 }
}
function lightbox(id){
 imgID=id;
 startlightboxifready();
}
function startlightboxifready(){
 if(lbreadytest){
  clearInterval(lbreadytest);
 }
 lbreadytest=setInterval(islightboxready,20);
}
function islightboxready(){
 if(lightboxready){
  if(lbreadytest){
   clearInterval(lbreadytest);
  }
  startstopLightbox(1);
 }
}
function startstopLightbox(f){
 if(f){
  setLightboxPosition();
  loadLightboxImage(imgID);
 }else{
  hvisibleElements();
 }
 hsLightbox(f);
 hsOuterDivs(f);
 hsFaded(f);
 hsBoard(f);
}
function loadLightboxImage(id){
 hvisibleElements();
 
 id=(id<0)?imgf.length-1:((id>imgf.length-1)?0:id);
 imgID=id;
 imgpID=id-1;
 imgnID=id+1;
 imgnID=(imgnID<0)?imgf.length-1:((imgnID>imgf.length-1)?0:imgnID);
 imgpID=(imgpID<0)?imgf.length-1:((imgpID>imgf.length-1)?0:imgpID);
 if(!imgObj[imgID])imgObj[imgID]=new Image();
 imgObj[imgID].src=tmppath+"graphics/IMG_"+imgf[imgID]+".jpg";
 getObject("optionDetails").innerHTML="";
 getObject("boardtopDetails").innerHTML="";
 
 imgthumbObj[imgnID]=new Image();
 imgthumbObj[imgnID].src=tmppath+"graphics/IMG_"+imgf[imgnID]+"thumb.jpg";
 imgthumbObj[imgpID]=new Image();
 imgthumbObj[imgpID].src=tmppath+"graphics/IMG_"+imgf[imgpID]+"thumb.jpg";
 
 optionsStatus=(optionsStatus==0)?0:1;
 waitforImagetoLoad();
}
function waitforImagetoLoad(){
 if(imageWait){
  clearInterval(imageWait);
 }
 imageWait=setInterval(setImageSrc,20);
}
function setImageSrc(){
 var i=imgObj[imgID];
 if(imgLoaded(i) || imgalreadyLoaded[imgID]){
 
  //RESIZE TO IMAGE H/W
  if(imgalreadyLoaded[imgID]){
   if(imageWait){
    clearInterval(imageWait);
   }  
   optionsStatus=3;
   
   //TEST IMAGE DIMENSIONS
   if(testLightboxImageSize()){
    resizeBoard(imgw[imgID],imgh[imgID]);
   }
  }else{
   optionsStatus=2;
  }
 }else{
  imgalreadyLoaded[imgID]=false;
 
  //INITIAL SET-UP
  if(optionsStatus==0){
   optionsStatus=1;
   resizeBoard(400,400);
  }else if(optionsStatus==1){
   hsCanvas(0);
  }
 }
}
function resizeBoard(w,h){
 if(movementX.getVelocity()==0){
  movementX.setVelocity(velocity);
  movementY.setVelocity(velocity);
 }
 movementX.setTarget(w+(2*xpad));
 movementY.setTarget(h+(2*ypad));
}
function updateBoardDims(){
 with(getStyle("boardDiv")){
  width=movementX.updatePosition()+"px";
  height=movementY.updatePosition()+"px"; 
 }
 getStyle("boardtopDiv").width=movementX.updatePosition()+"px";
 if(movementX.hasStopped() && movementY.hasStopped()){
  if(optionsStatus==1){
   if(!imgalreadyLoaded[imgID]){
    hsPrevNext(1);
    hsLoading(1);
    hsCanvas(0);
   }else{
    hsPrevNext(0);
    hsLoading(0);
   }
  }else if(optionsStatus==2 || (imgalreadyLoaded[imgID] && optionsStatus==3)){
   var i=imgObj[imgID];
   with(getStyle("canvasDiv")){
    if(imgw[imgID]!=undefined && imgh[imgID]!=undefined){
     width=imgw[imgID]+"px";
     height=imgh[imgID]+"px";
    }
   }
   with(getObject("canvasImg")){
    src=i.src;
    var altst=imgalt[imgID].replace(/&pound;/g,"œ").replace(/&amp;/g,"and");
    alt="Image: "+altst;
    title="Image: "+altst;
   }
  }
  if(optionsStatus==3){
   hsCanvas(1);
   hsPrevNext(1);
   hsOptions(1);
  }
 }else{
  hsPrevNext(0);
  hsLoading(0);
 }
}
function showLightboxImage(){
 imgalreadyLoaded[imgID]=true;
}

function updateOptionsDims(){
 if(optionsStatus==4){
  with(getStyle("optionsDiv")){
   display="block";
   top=optionsY.updatePosition()+"px";
  }
  if(optionsY.hasStopped()){
   optionsStatus=5;
   //var od="<ul>";
   //od+="<li><b>Description:</b> "+imgdes[imgID]+"</li>";
   //od+="<li><b>Dimensions:</b> "+((imgdim[imgID]=="")?"No Details.":imgdim[imgID])+"</li>";
   //getObject("optionDetails").innerHTML=od+"</ul>";
   getObject("boardtopDetails").innerHTML='<ul><li>'+imgalt[imgID]+'</li></ul>';
   getStyle("boardtopDetails").display="block";
   setLightboxPosition();
  }
 }
}
function setLightboxPosition(){
 var d=getObjDims("boardDiv");
 var bh=d.h+boardtop+getObject("optionsDiv").offsetHeight+getObject("boardtopDiv").offsetHeight;
 var wh=docProperties.windowHeight();
 var oldp=getStyle("boardOuterDiv").position;
 if(wh>bh){
  var newp=(btype.isIE && !btype.isgtIE6)?"absolute":"fixed";
 }else{
  var newp="absolute";
 }
 if(oldp!=newp){
  toppad=boardtop+((newp=="absolute")?docProperties.scrollTop():0);
  for(var n in a=["fadedDiv", "boardOuterDiv", "loadingOuterDiv", "canvasOuterDiv", "pnOuterDiv", "pnimageOuterDiv"]){
   getStyle(a[n]).position=newp;
  }
 
  //SET LAYOUT VALUES
  getStyle("boardtopDiv").top=toppad+"px";
  getStyle("boardDiv").top=toppad+"px";
  getStyle("optionsDiv").top=toppad+"px";
  getStyle("loadingDiv").top=(toppad+xpad+boardtop)+"px";
  getStyle("canvasDiv").top=(toppad+xpad+boardtop)+"px";
  getStyle("pnInnerDiv").top=(toppad+xpad+30+boardtop)+"px";
  getStyle("pnimageInnerDiv").top=(toppad+xpad+100+boardtop)+"px";
 }
}
function testLightboxImageSize(){
 var iw=imgw[imgID];
 var sw=docProperties.screenAvailWidth();
 var m=Math.round(0.9*sw);
 
 if(iw==0 || iw==undefined){
  return false;
 }else{
  if(iw>m){
   var ar=imgh[imgID]/iw;
   imgw[imgID]=m;
   imgh[imgID]=Math.round(m*ar);
  }
  return true;
 }
}
function winstatus(){
 window.status=optionsStatus+", "+imgalreadyLoaded[imgID];
}







//-------------SHOW HIDE LAYERS
function fadeinout(n,f){
 var o=getStyle(n);
 //if(f){
  if(typeof(o.opacity)=="string"){
   o.opacity=0;
   o.MozOpacity=0;
  }else{
   getStyle(n).filter="alpha(opacity=0)";
  }
  o.display="block";
 //}
 if(objopacity){
  clearInterval(objopacity);
 }
 objopacity=setInterval("updateOpacity('"+n+"',"+f+")",20);
 if(!f){
  o.display="none";
 } 
}
function updateOpacity(n,f){
 var v=(document.all)?getObject(n).filters.alpha.opacity:getStyle(n).opacity*100;
 var i=((f)?5:-5);
 setOpacity(n,f,v,i);

 if((f && (v+i)>=100) || (!f && (v+i)<=0)){
  if(objopacity){
   clearInterval(objopacity);
  }
 }
}
function setOpacity(n,f,v,i){
 var o=getStyle(n);
 //if(f){
  if(typeof(o.opacity)=="string"){
   o.opacity=(v+i)/100;
   o.MozOpacity=(v+i)/100;
  }else{
   getStyle(n).filter="alpha(opacity="+(v+i)+")";
  }
  o.display="block";
 //}
}
function hsLightbox(f){
 var o=getStyle("lightboxOuterDiv");
 if(checkDisplay(o,f))o.display=(f)?"block":"none";
}
function hsFaded(f){
 var o=getStyle("fadedDiv");
 if(f){
  o.height=(docProperties.pageHeight()-1)+"px";
  if(checkDisplay(o,f))o.display="block";
 }else{
  if(checkDisplay(o,f))o.display="none";
 }
}
function hsBoard(f){
 var o=getStyle("boardDiv");
 if(checkDisplay(o,f))o.display=(f)?"block":"none";
 var o=getStyle("boardtopDetails");
 if(checkDisplay(o,f))o.display=(f)?"block":"none"; 
}
function hsLoading(f){
 var o=getStyle("loadingDiv");
 if(f){
  var d=getObjDims("boardDiv");
  o.width=(d.w-(2*xpad))+"px";
  o.height=(d.h-(2*xpad))+"px";  
  if(checkDisplay(o,f))o.display="block";
 }else{
  if(checkDisplay(o,f))o.display="none";
 }
}
function hsCanvas(f){
 fadeinout("canvasDiv",f);
}
function hsPrevNext(f){
 var o=getStyle("pnInnerDiv");
 var p=getStyle("pnimageInnerDiv");
 if(f){
  var d=getObjDims("boardDiv");
  o.width=d.w+"px";
  var nw=imgthumbObj[imgnID].width;
  var pw=imgthumbObj[imgpID].width;
  var iw=Math.max(nw,pw);
  p.width=(d.w+(2*(40+iw)))+"px";
  
  var ntest=((imgpID!=imgnID) || (imgpID==imgnID && imgnID>imgID));
  var ptest=((imgpID!=imgnID) || (imgpID==imgnID && imgpID<imgID));  
  
  getObject("nextimage").src=imgthumbObj[imgnID].src;
  getObject("previmage").src=imgthumbObj[imgpID].src;
  getStyle("nextimage").display=(ntest)?"block":"none";  
  getStyle("previmage").display=(ptest)?"block":"none";
  getStyle("nextimageDiv").width=iw+"px";
  getStyle("previmageDiv").width=iw+"px";
  
  //HS NEXT PREV
  getStyle("nexttext").display=(ntest)?"block":"none";
  getStyle("nextDiv").background=(ntest)?"#e0e0e0":"none";
  getStyle("prevDiv").display=(ptest)?"block":"none";

  var pr=getObjDims("boardDiv").w;
  pr=(pr==0 || pr=="undefined")?400:pr;
  getStyle("closegalleryDiv").left=(pr-xpad-6)+"px";
  
  if(checkDisplay(o,f))o.display="block";
  if(checkDisplay(p,f))p.display="block";
 }else{
  if(checkDisplay(o,f))o.display="none";
  if(checkDisplay(p,f))p.display="none";
 }
}
function hsimagePrevNext(f){
 var o=getStyle("pnimageInnerDiv");
 if(f){
  var d=getObjDims("boardDiv");
  o.width=d.w+"px";
  if(checkDisplay(o,f))o.display="block";
 }else{
  if(checkDisplay(o,f))o.display="none";
 }
}
function hsOptions(f){
 var o=getStyle("optionsDiv");
 if(f){
  if(optionsY.getVelocity()==0){
   optionsY.setVelocity(velocity);
  }
  hsOptions(0);
  var d=getObjDims("boardDiv");
  o.width=d.w+"px";
  optionsY.setPosition(toppad-d.h);
  optionsY.setTarget(toppad);
  optionsStatus=4;
 }else{
  if(checkDisplay(o,f))o.display="none";
 }
}
function hsOuterDivs(f){
 var bn=(f)?"block":"none";
 if(checkDisplay(getStyle("boardOuterDiv"),f)){
  for(var n in a=["boardOuterDiv", "loadingOuterDiv", "canvasOuterDiv", "pnOuterDiv", "pnimageOuterDiv"]){
   getStyle(a[n]).display=bn;
  }
 }
}
function hvisibleElements(){
 hsOptions(0);
 hsPrevNext(0);
 hsLoading(0);
 hsCanvas(0);
}
function getDisplay(o){
 return (o)?"":o.display;
}
function checkDisplay(o,f){
 if(o){
  var bn=getDisplay(o);
  return ((f && bn!="block") || (!f && bn!="none"));
 }else{
  return false;
 }
}

