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 boardtop=60;
var toppad=60;
var lightboxready=false;
var newp;
startwithscroll=0;
var lbreadytest;
var objopacity;
var btype=testforBrowser();
var imgpath="staff/upload/publicimages/";

function getEsc(e){
 var k=getEvents.keycodes(e);
 if(k && k[0]==27){
  startstopLightbox(0);
 }
}
function initLightbox(){
 //PREPARE LIGHTBOX
 var l=getObject("lightboxOuterDiv");
 var fd=document.createElement('div');
 fd.id="fadedDiv";
 l.appendChild(fd).appendChild(document.createTextNode(" "));
 
 //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><div id="closeDiv"><a href="javascript:startstopLightbox(0)" class="close">Close</a></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);

 addEvents(window,'scroll',updatestartwithscroll,false);
 addEvents(window,'resize',updatestartwithscroll,false);

 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){
 var flv1=getStyle("flvplayer1");
 var flv2=getStyle("flvplayer2");
 var flv3=getStyle("flvplayer3");
 if(f){
  if(flv1)flv1.display="none";
  if(flv2)flv2.display="none";
  if(flv3)flv3.display="none";
  setLightboxPosition();
  loadLightboxImage(imgID);
 }else{
  hvisibleElements();
  if(flv1)flv1.display="block";
  if(flv2)flv2.display="block";
  if(flv3)flv3.display="block";
 }
 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=imgpath+imgf[imgID];
 
 imgthumbObj[imgnID]=new Image();
 imgthumbObj[imgnID].src=imgpath+imgf[imgnID].substr(0,imgf[imgnID].length-4)+"_small"+imgf[imgnID].substr(imgf[imgnID].length-4);
 getObject("nextimage").alt=imgn[imgnID];
 getObject("nextimage").title=imgn[imgnID];
 getObject("nextimage").width=thw[imgnID];
 getObject("nextimage").height=thh[imgnID];
 
 imgthumbObj[imgpID]=new Image();
 imgthumbObj[imgpID].src=imgpath+imgf[imgpID].substr(0,imgf[imgpID].length-4)+"_small"+imgf[imgpID].substr(imgf[imgpID].length-4);
 getObject("previmage").alt=imgn[imgpID];
 getObject("previmage").title=imgn[imgpID];
 getObject("previmage").width=thw[imgpID];
 getObject("previmage").height=thh[imgpID];
 
 getObject("optionDetails").innerHTML="";
 getObject("boardtopDetails").innerHTML="";
 
 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=imgObj[imgID].width+"px";
     height=imgObj[imgID].height+"px";
     
     imgw[imgID]=imgObj[imgID].width;
     imgh[imgID]=imgObj[imgID].height;
    }
   }
   with(getObject("canvasImg")){
    src=i.src;
    alt=imgn[imgID];
    title=imgn[imgID];
   }
  }
  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="Ferry";
   var btopst="<li>"+imgn[imgID]+"</li>";
   btopst+="<li style=\"font-weight:normal\">"+imgc[imgID]+"</li>";
   getObject("boardtopDetails").innerHTML="<ul>"+btopst+"</ul>";

   getObject("optionDetails").innerHTML="<ul><li>"+imgd[imgID]+"</li></ul>";
  }
  setLightboxPosition();
 }
}
function setLightboxPosition(){
 var d=getObjDims("boardDiv");
 var bh=parseFloat(d.h+boardtop+getObject("optionsDiv").offsetHeight+getObject("boardtopDiv").offsetHeight+90);
 var wh=parseFloat(docProperties.windowHeight());
 var oldp=getStyle("boardOuterDiv").position;
 if(wh>bh){
  newp=(btype.isIE && !btype.isIE7 && !btype.isIE8)?"absolute":"fixed";
 }else{
  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 ih=imgh[imgID];
 var sw=docProperties.screenAvailWidth();
 var mw=600;
 var mh=600;
 
 if(iw==0 || iw==undefined){
  return false;
 }else{
  if(iw>mw){
   var ar=imgh[imgID]/iw;
   imgw[imgID]=mw;
   imgh[imgID]=Math.round(mw*ar);
  }
  if(ih>mh){
   var ar=imgw[imgID]/ih;
   imgh[imgID]=mh;
   imgw[imgID]=Math.round(mh*ar);
  }
  imgObj[imgID].width=imgw[imgID];
  imgObj[imgID].height=imgh[imgID];
  
  var tObj=getStyle("canvasImg");
  tObj.width=imgw[imgID]+"px";
  tObj.height=imgh[imgID]+"px";
  return true;
 }
}
function winstatus(){
 window.status=optionsStatus+", "+imgalreadyLoaded[imgID];
}







//-------------SHOW HIDE LAYERS
function fadeinout(n,f){
 var o=getStyle(n);
 if(f){
  o.display="block";
  if(typeof(o.opacity)=="string"){
   o.opacity=0;
   o.MozOpacity=0;
  }else{
   getObject(n).filter="alpha(opacity=0)";
  }
 }
 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: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){
  o.display="block";
  if(typeof(o.opacity)=="string"){
   o.opacity=(v+i)/100;
   o.MozOpacity=(v+i)/100;
  }else{
   getObject(n).filter="alpha(opacity="+(v+i)+")";
  }
 }
}
function hsLightbox(f){
 var o=getStyle("lightboxOuterDiv");
 if(checkDisplay(o,f))o.display=(f)?"block":"none";
 if(btype.isIE60 || btype.isIE55){
  var m1=getStyle("island");
  var m2=getStyle("sailing");
  if(m1)m1.visibility=(f)?"hidden":"visible";
  if(m2)m2.visibility=(f)?"hidden":"visible";
 }
}
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";
}
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
  if(!ntest){
   getStyle("nexttext").display="none";
   getStyle("nextDiv").background="none";
  }
  getStyle("prevDiv").display=(ptest)?"block":"none"; 
  
  var pr=getObjDims("boardDiv").w;
  pr=(pr==0 || pr=="undefined")?400:pr;
  getStyle("closegalleryDiv").left=(pr-xpad-4)+"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";
  var scrollamount=parseFloat(docProperties.scrollTop());
  updatestartwithscroll();
  
  var beginscroll=0;
  if(startwithscroll==boardtop){
   beginscroll=scrollamount+toppad;
  }else{
   beginscroll=startwithscroll;
  }

  if(newp=="absolute"){
   optionsY.setPosition(beginscroll-120);
   optionsY.setTarget(beginscroll);
  }else{
   optionsY.setPosition(-60);
   optionsY.setTarget(60);
  }
  optionsStatus=4;
 }else{
  if(checkDisplay(o,f))o.display="none";
 }
}
function updatestartwithscroll(){
 startwithscroll=parseFloat(divStyle.top("boardDiv"));
}
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;
 }
}

