
var fileLoadingImage="images/loading.gif";
var fileBottomNavCloseImage="images/closelabel.gif";
var animate=true;
var resizeSpeed=7;
var borderSize=10;
var imageArray=new Array;
var activeImage;
if(animate==true){
    overlayDuration=0.2;
    if(resizeSpeed>10){
        resizeSpeed=10;
    }
    if(resizeSpeed<1){
        resizeSpeed=1;
    }
    resizeDuration=(11-resizeSpeed)*0.15;
}else{
    overlayDuration=0;
    resizeDuration=0;
}
Object.extend(Element,{
    getWidth:function(element){
        element=$(element);
        return element.offsetWidth;
    },
    setWidth:function(element,w){
        element=$(element);
        element.style.width=w+"px";
    },
    setHeight:function(element,h){
        element=$(element);
        element.style.height=h+"px";
    },
    setTop:function(element,t){
        element=$(element);
        element.style.top=t+"px";
    },
    setSrc:function(element,src){
        element=$(element);
        element.src=src;
    },
    setHref:function(element,href){
        element=$(element);
        element.href=href;
    },
    setInnerHTML:function(element,content){
        element=$(element);
        element.innerHTML=content;
    }
});
Array.prototype.removeDuplicates=function(){
    for(i=0;i<this.length;i++){
        for(j=this.length-1;j>i;j--){
            if(this[i][0]==this[j][0]){
                this.splice(j,1);
            }
        }
        }
    }
Array.prototype.empty=function(){
    for(i=0;i<=this.length;i++){
        this.shift();
    }
    }
var Lightbox=Class.create();
Lightbox.prototype={
    initialize:function(){
        if(!document.getElementsByTagName){
            return;
        }
        var anchors=document.getElementsByTagName('a');
        var areas=document.getElementsByTagName('area');
        for(var i=0;i<anchors.length;i++){
            var anchor=anchors[i];
            var relAttribute=String(anchor.getAttribute('rel'));
            if(anchor.getAttribute('href')&&(relAttribute.toLowerCase().match('lightbox'))){
                anchor.onclick=function(){
                    myLightbox.start(this);
                    return false;
                }
            }
        }
for(var i=0;i<areas.length;i++){
    var area=areas[i];
    var relAttribute=String(area.getAttribute('rel'));
    if(area.getAttribute('href')&&(relAttribute.toLowerCase().match('lightbox'))){
        area.onclick=function(){
            myLightbox.start(this);
            return false;
        }
    }
}
var objBody=document.getElementsByTagName("body").item(0);
var objOverlay=document.createElement("div");
objOverlay.setAttribute('id','overlay');
objOverlay.style.display='none';
objOverlay.onclick=function(){
    myLightbox.end();
}
objBody.appendChild(objOverlay);
var objLightbox=document.createElement("div");
objLightbox.setAttribute('id','lightbox');
objLightbox.style.display='none';
objLightbox.onclick=function(e){
    if(!e)var e=window.event;
    var clickObj=Event.element(e).id;
    if(clickObj=='lightbox'){
        myLightbox.end();
    }
};

objBody.appendChild(objLightbox);
var objOuterImageContainer=document.createElement("div");
objOuterImageContainer.setAttribute('id','outerImageContainer');
objLightbox.appendChild(objOuterImageContainer);
if(animate)
{
    if(navigator.appVersion.indexOf("MSIE")!=-1)

    {
        Element.setWidth('outerImageContainer',250);
        Element.setHeight('outerImageContainer',250);
    }
}
else
{
    Element.setWidth('outerImageContainer',1);
    Element.setHeight('outerImageContainer',1);
}
var objImageContainer=document.createElement("div");
objImageContainer.setAttribute('id','imageContainer');
objOuterImageContainer.appendChild(objImageContainer);
var objLightboxImage=document.createElement("img");
objLightboxImage.setAttribute('id','lightboxImage');
objImageContainer.appendChild(objLightboxImage);
var objHoverNav=document.createElement("div");
objHoverNav.setAttribute('id','hoverNav');
objImageContainer.appendChild(objHoverNav);
var objPrevLink=document.createElement("a");
objPrevLink.setAttribute('id','prevLink');
objPrevLink.setAttribute('href','#');
objHoverNav.appendChild(objPrevLink);
var objNextLink=document.createElement("a");
objNextLink.setAttribute('id','nextLink');
objNextLink.setAttribute('href','#');
objHoverNav.appendChild(objNextLink);
var objLoading=document.createElement("div");
objLoading.setAttribute('id','loading');
objImageContainer.appendChild(objLoading);
var objLoadingLink=document.createElement("a");
objLoadingLink.setAttribute('id','loadingLink');
objLoadingLink.setAttribute('href','#');
objLoadingLink.onclick=function(){
    myLightbox.end();
    return false;
}
objLoading.appendChild(objLoadingLink);
var objLoadingImage=document.createElement("img");
objLoadingImage.setAttribute('src',fileLoadingImage);
objLoadingLink.appendChild(objLoadingImage);
var objImageDataContainer=document.createElement("div");
objImageDataContainer.setAttribute('id','imageDataContainer');
objImageDataContainer.className='clearfix';
objLightbox.appendChild(objImageDataContainer);
var objImageData=document.createElement("div");
objImageData.setAttribute('id','imageData');
objImageDataContainer.appendChild(objImageData);
var objImageDetails=document.createElement("div");
objImageDetails.setAttribute('id','imageDetails');
objImageData.appendChild(objImageDetails);
var objCaption=document.createElement("span");
objCaption.setAttribute('id','caption');
objImageDetails.appendChild(objCaption);
var objNumberDisplay=document.createElement("span");
objNumberDisplay.setAttribute('id','numberDisplay');
objImageDetails.appendChild(objNumberDisplay);
var objBottomNav=document.createElement("div");
objBottomNav.setAttribute('id','bottomNav');
objImageData.appendChild(objBottomNav);
var objBottomNavCloseLink=document.createElement("a");
objBottomNavCloseLink.setAttribute('id','bottomNavClose');
objBottomNavCloseLink.setAttribute('href','#');
objBottomNavCloseLink.onclick=function(){
    myLightbox.end();
    return false;
}
objBottomNav.appendChild(objBottomNavCloseLink);
var objBottomNavCloseImage=document.createElement("img");
objBottomNavCloseImage.setAttribute('src',fileBottomNavCloseImage);
objBottomNavCloseLink.appendChild(objBottomNavCloseImage);
},
start:function(imageLink){
    function getImageTitle(anchor){
        var ddimageTitle=anchor.getAttribute('title')
        var ddimageTitleURL=(ddimageTitle!=null&&ddimageTitle!="")?anchor.getAttribute('rev'):null
        return ddimageTitleFinal=(ddimageTitleURL!=null&&ddimageTitleURL!="")?'<a href="'+ddimageTitleURL+'" class="ddcaptionurl">'+ddimageTitle+'</a>':ddimageTitle
        };

    hideSelectBoxes();
    hideFlash();
    var arrayPageSize=getPageSize();
    Element.setHeight('overlay',arrayPageSize[1]);
    new Effect.Appear('overlay',{
        duration:overlayDuration,
        from:0.0,
        to:0.8
    });
    imageArray=[];
    imageNum=0;
    if(!document.getElementsByTagName){
        return;
    }
    var anchors=document.getElementsByTagName('a');
    if((imageLink.getAttribute('rel')=='lightbox')){
        imageArray.push(new Array(imageLink.getAttribute('href'),getImageTitle(imageLink)));
    }else{
        for(var i=0;i<anchors.length;i++){
            var anchor=anchors[i];
            if(anchor.getAttribute('href')&&(anchor.getAttribute('rel')==imageLink.getAttribute('rel'))){
                imageArray.push(new Array(anchor.getAttribute('href'),getImageTitle(anchor)));
            }
        }
    imageArray.removeDuplicates();
    while(imageArray[imageNum][0]!=imageLink.getAttribute('href')){
        imageNum++;
    }
}
var arrayPageScroll=getPageScroll();
var lightboxTop=arrayPageScroll[1]+(arrayPageSize[3]/10);
Element.setTop('lightbox',lightboxTop);
Element.show('lightbox');
this.changeImage(imageNum);
},
changeImage:function(imageNum){
    activeImage=imageNum;
    if(animate){
        Element.show('loading');
    }
    Element.hide('lightboxImage');
    Element.hide('hoverNav');
    Element.hide('prevLink');
    Element.hide('nextLink');
    Element.hide('imageDataContainer');
    Element.hide('numberDisplay');
    imgPreloader=new Image();
    imgPreloader.onload=function(){
        Element.setSrc('lightboxImage',imageArray[activeImage][0]);
        myLightbox.resizeImageContainer(imgPreloader.width,imgPreloader.height);
    }
    imgPreloader.src=imageArray[activeImage][0];
},
resizeImageContainer:function(imgWidth,imgHeight){
    if(navigator.appVersion.indexOf("MSIE")!=-1){
        this.widthCurrent=Element.getWidth('outerImageContainer');
        this.heightCurrent=Element.getHeight('outerImageContainer');
    }else{
        this.widthCurrent=Element.setWidth('outerImageContainer',imgWidth+20);
        this.heightCurrent=Element.setHeight('outerImageContainer',imgHeight+10);
    }
    var widthNew=(imgWidth+(borderSize*2));
    var heightNew=(imgHeight+(borderSize*2));
    this.xScale=(widthNew/this.widthCurrent)*100;
    this.yScale=(heightNew/this.heightCurrent)*100;
    wDiff=this.widthCurrent-widthNew;
    hDiff=this.heightCurrent-heightNew;
    if(!(hDiff==0)){
        new Effect.Scale('outerImageContainer',this.yScale,{
            scaleX:false,
            duration:resizeDuration,
            queue:'front'
        });
    }
    if(!(wDiff==0)){
        new Effect.Scale('outerImageContainer',this.xScale,{
            scaleY:false,
            delay:resizeDuration,
            duration:resizeDuration
        });
    }
    if((hDiff==0)&&(wDiff==0)){
        if(navigator.appVersion.indexOf("MSIE")!=-1){
            pause(250);
        }else{
            pause(300);
        }
    }
Element.setHeight('prevLink',imgHeight);
Element.setHeight('nextLink',imgHeight);
Element.setWidth('imageDataContainer',widthNew);
this.showImage();
},
showImage:function(){
    Element.hide('loading');
    if(document.getElementById("horizontal")!=undefined){
        document.getElementById("horizontal").style.visibility="hidden";
        document.getElementById("vertical").style.visibility="hidden";
    }
    if(document.getElementById("rhs1")!=undefined){
        document.getElementById("rhs1").style.visibility="hidden";
        document.getElementById("rhs2").style.visibility="hidden";
        document.getElementById("rhs3").style.visibility="hidden";
        document.getElementById("rhs4").style.visibility="hidden";
    }
    new Effect.Appear('lightboxImage',{
        duration:resizeDuration,
        queue:'end',
        afterFinish:function(){
            myLightbox.updateDetails();
        }
    });
this.preloadNeighborImages();
},
updateDetails:function(){
    Element.show('caption');
    Element.setInnerHTML('caption',imageArray[activeImage][1]);
    if(imageArray.length>1){
        Element.show('numberDisplay');
        Element.setInnerHTML('numberDisplay',"Image "+eval(activeImage+1)+" of "+imageArray.length);
    }
    new Effect.Parallel([new Effect.SlideDown('imageDataContainer',{
        sync:true,
        duration:resizeDuration,
        from:0.0,
        to:1.0
    }),new Effect.Appear('imageDataContainer',{
        sync:true,
        duration:resizeDuration
    })],{
        duration:resizeDuration,
        afterFinish:function(){
            var arrayPageSize=getPageSize();
            Element.setHeight('overlay',arrayPageSize[1]);
            myLightbox.updateNav();
        }
    });
},
updateNav:function(){
    Element.show('hoverNav');
    if(activeImage!=0){
        Element.show('prevLink');
        document.getElementById('prevLink').onclick=function(){
            myLightbox.changeImage(activeImage-1);
            return false;
        }
    }
if(activeImage!=(imageArray.length-1)){
    Element.show('nextLink');
    document.getElementById('nextLink').onclick=function(){
        myLightbox.changeImage(activeImage+1);
        return false;
    }
}
this.enableKeyboardNav();
},
enableKeyboardNav:function(){
    document.onkeydown=this.keyboardAction;
},
disableKeyboardNav:function(){
    document.onkeydown='';
},
keyboardAction:function(e){
    if(e==null){
        keycode=event.keyCode;
        escapeKey=27;
    }else{
        keycode=e.keyCode;
        escapeKey=e.DOM_VK_ESCAPE;
    }
    key=String.fromCharCode(keycode).toLowerCase();
    if((key=='x')||(key=='o')||(key=='c')||(keycode==escapeKey)){
        myLightbox.end();
    }else if((key=='p')||(keycode==37)){
        if(activeImage!=0){
            myLightbox.disableKeyboardNav();
            myLightbox.changeImage(activeImage-1);
        }
    }else if((key=='n')||(keycode==39)){
    if(activeImage!=(imageArray.length-1)){
        myLightbox.disableKeyboardNav();
        myLightbox.changeImage(activeImage+1);
    }
}
},
preloadNeighborImages:function(){
    if((imageArray.length-1)>activeImage){
        preloadNextImage=new Image();
        preloadNextImage.src=imageArray[activeImage+1][0];
    }
    if(activeImage>0){
        preloadPrevImage=new Image();
        preloadPrevImage.src=imageArray[activeImage-1][0];
    }
},
end:function(){
    this.disableKeyboardNav();
    Element.hide('lightbox');
    new Effect.Fade('overlay',{
        duration:overlayDuration
    });
    showSelectBoxes();
    showFlash();
    if(document.getElementById("horizontal")!=undefined){
        document.getElementById("horizontal").style.visibility="visible";
        document.getElementById("vertical").style.visibility="visible";
    }
    if(document.getElementById("rhs1")!=undefined){
        document.getElementById("rhs1").style.visibility="visible";
        document.getElementById("rhs2").style.visibility="visible";
        document.getElementById("rhs3").style.visibility="visible";
        document.getElementById("rhs4").style.visibility="visible";
    }
}
}
function getPageScroll(){
    var yScroll;
    if(self.pageYOffset){
        yScroll=self.pageYOffset;
    }else if(document.documentElement&&document.documentElement.scrollTop){
        yScroll=document.documentElement.scrollTop;
    }else if(document.body){
        yScroll=document.body.scrollTop;
    }
    arrayPageScroll=new Array('',yScroll)
    return arrayPageScroll;
}
function getPageSize(){
    var xScroll,yScroll;
    if(window.innerHeight&&window.scrollMaxY){
        xScroll=document.body.scrollWidth;
        yScroll=window.innerHeight+window.scrollMaxY;
    }else if(document.body.scrollHeight>document.body.offsetHeight){
        xScroll=document.body.scrollWidth;
        yScroll=document.body.scrollHeight;
    }else{
        xScroll=document.body.offsetWidth;
        yScroll=document.body.offsetHeight;
    }
    var windowWidth,windowHeight;
    if(self.innerHeight){
        windowWidth=self.innerWidth;
        windowHeight=self.innerHeight;
    }else if(document.documentElement&&document.documentElement.clientHeight){
        windowWidth=document.documentElement.clientWidth;
        windowHeight=document.documentElement.clientHeight;
    }else if(document.body){
        windowWidth=document.body.clientWidth;
        windowHeight=document.body.clientHeight;
    }
    if(yScroll<windowHeight){
        pageHeight=windowHeight;
    }else{
        pageHeight=yScroll;
    }
    if(xScroll<windowWidth){
        pageWidth=windowWidth;
    }else{
        pageWidth=xScroll;
    }
    arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight)
    return arrayPageSize;
}
function getKey(e){
    if(e==null){
        keycode=event.keyCode;
    }else{
        keycode=e.which;
    }
    key=String.fromCharCode(keycode).toLowerCase();
    if(key=='x'){}
}
function listenKey(){
    document.onkeypress=getKey;
}
function showSelectBoxes(){
    var selects=document.getElementsByTagName("select");
    for(i=0;i!=selects.length;i++){
        selects[i].style.visibility="visible";
    }
    }
function hideSelectBoxes(){
    var selects=document.getElementsByTagName("select");
    for(i=0;i!=selects.length;i++){
        selects[i].style.visibility="hidden";
    }
    }
function showFlash(){
    var flashObjects=document.getElementsByTagName("object");
    for(i=0;i!=flashObjects.length;i++){
        flashObjects[i].style.visibility="visible";
    }
    var flashEmbeds=document.getElementsByTagName("embeds");
    for(i=0;i!=flashEmbeds.length;i++){
        flashEmbeds[i].style.visibility="visible";
    }
    }
function hideFlash(){
    var flashObjects=document.getElementsByTagName("object");
    for(i=0;i!=flashObjects.length;i++){
        flashObjects[i].style.visibility="hidden";
    }
    var flashEmbeds=document.getElementsByTagName("embeds");
    for(i=0;i!=flashEmbeds.length;i++){
        flashEmbeds[i].style.visibility="hidden";
    }
    }
function pause(ms){
    var date=new Date();
    curDate=null;
    do{
        var curDate=new Date();
    }
    while(curDate-date<ms);
}
function initLightbox(){
    myLightbox=new Lightbox();
}
Event.observe(window,'load',initLightbox,false);
