﻿var slideshow = false;
var widthSizer = 0;
var heightSizer = 0;
var targetWidth = 640;
var targetHeight = 480;
var loopCount = 0;
var menuLoopCount = 0;
var imageFadeCount = 0;
var slideShowCount = 0;
var timer;
var menuTimer;
var slideshowTimer;
var imageFadeTimer;
var ViewerActive = true;
var windowHeight = document.body.offsetHeight;
currentImage = 0;
var ImageDescrHeight = 0;


function closeImageViewer(){
    clearTimeout(timer);
    clearTimeout(menuTimer);
    clearTimeout(slideshowTimer);
    clearTimeout(imageFadeTimer);
    ViewerActive = false;
    document.getElementById("PageOverlay").className = "Hidden";
    document.getElementById("ImageOverlay").className = "Hidden";
    document.getElementById("ImageContainer").className = "Hidden";
    document.getElementById("ImageHolder").className = "HiddenIMG";
}

function loadImage(id){
    if(imageFadeCount == 0){
        document.getElementById("PageOverlay").className = "PageOverlay";
        document.getElementById("DescrHolder").className = "HiddenDESCR";
        document.getElementById("ImageOverlay").className = "ImageOverlay";
    }
    if(imageFadeCount < 11){
        document.getElementById("Sizer").className = "Sizer BGFill";
        if (document.getElementById("Sizer").filters) {
            try {
                document.getElementById("Sizer").filters.item("DXImageTransform.Microsoft.Alpha").opacity = imageFadeCount * 10;
            } catch (e) {
                document.getElementById("Sizer").style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + imageFadeCount * 10 + ')';
            }
        } else {
            document.getElementById("Sizer").style.opacity = imageFadeCount / 10;
        }
        imageFadeCount++;
        imageFadeTimer = setTimeout("loadImage(" + id + ");",1);
    }else{
        document.getElementById("Sizer").className = "Sizer BGFill";
        imageFadeCount = 0;
        currentImage = id;
        document.getElementById("ImageHolder").className = "HiddenIMG";
        document.getElementById("ImageHolder").src = "";
        document.getElementById("ImageHolder").onload = function(){getNextImage()};
        document.getElementById("ImageHolder").src = PictureList[currentImage];
        document.getElementById("PhotoCredits").innerHTML = PhotoCredits[currentImage];
        document.getElementById("PhotoDescr").innerHTML = (PhotoTitle[currentImage].length > 0 ? "<b>" + PhotoTitle[currentImage] + "</b><br />" : "") + PhotoDescr[currentImage];        
    }
}

function getNextImage(){
    ViewerActive = true;
    document.getElementById("ImageOverlay").className = "ImageOverlay";
    document.getElementById("Sizer").className = "Sizer BGFill";
    document.getElementById("ImageContainer").className = "ImageContainer";
    clearTimeout(timer);
    targetWidth = document.getElementById("ImageHolder").offsetWidth;
    targetHeight = document.getElementById("ImageHolder").offsetHeight;
    loopCount = 0;
    
    updateImgHolderSize();
}

function updateImgHolderSize(){
    if(loopCount == 0){
        rawHeightSizer = (targetHeight - document.getElementById("Sizer").offsetHeight + 2)/20;
        rawWidthSizer = Math.floor((targetWidth - document.getElementById("Sizer").offsetWidth + 2)/20);
        if(rawHeightSizer > 0){
            heightSizer = Math.floor(rawHeightSizer);
        }else if(rawHeightSizer < 0){
            heightSizer = Math.ceil(rawHeightSizer);
        }else{
            heightSizer = 0;
        }
        if(rawWidthSizer > 0){
            widthSizer = Math.floor(rawWidthSizer);
        }else if(rawWidthSizer < 0){
            widthSizer = Math.ceil(rawWidthSizer);
        }else{
            widthSizer = 0;
        }
        
    }
    if(loopCount < 19){
        width = document.getElementById("Sizer").offsetWidth - 2 + widthSizer;
        height = document.getElementById("Sizer").offsetHeight - 2 + heightSizer;
        document.getElementById("Sizer").style.width = width + "px";
        document.getElementById("Sizer").style.height = height + "px";
        
        loopCount++;
        timer = setTimeout("updateImgHolderSize();",10);
    }else{
        if(PhotoTitle[currentImage].length > 0 || PhotoDescr[currentImage].length > 0 || PhotoCredits[currentImage].length > 0){
            document.getElementById("DescrHolder").className = "HiddenDescr";
            document.getElementById("DescrHolder").style.height = "auto";
            ImageDescrHeight = document.getElementById("DescrHolder").offsetHeight;
        }else{
            ImageDescrHeight = 0;
        }  
    
        document.getElementById("Sizer").style.width = targetWidth + "px";
        document.getElementById("Sizer").style.height = targetHeight + "px";
        document.getElementById("ImageHolder").className = "VisibleIMG";
        document.getElementById("DescrHolder").style.width = targetWidth + "px";
        document.getElementById("DescrHolder").style.height = "0px";
        document.getElementById("MenuControls").style.top = (targetHeight - 42) + "px";
        document.getElementById("DescrHolder").className = "DescrHolder";
        loopCount = 0;
        menuTimer = setTimeout("expandControls();",500);
        fadeinImage();
    }
}

function fadeinImage(){
    if(imageFadeCount < 11){
        document.getElementById("Sizer").className = "Sizer BGFill";
        if (document.getElementById("Sizer").filters) {
            try {
                document.getElementById("Sizer").filters.item("DXImageTransform.Microsoft.Alpha").opacity = 100 - (imageFadeCount * 10);
            } catch (e) {
                document.getElementById("Sizer").style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + 100 - (imageFadeCount * 10) + ')';
            }
        } else {
            document.getElementById("Sizer").style.opacity = 1 - (imageFadeCount / 10);
        }
        imageFadeCount++;
        imageFadeTimer = setTimeout("fadeinImage();",1);
    }else{
        if (document.getElementById("Sizer").filters) {
            document.getElementById("Sizer").style.filter = '';
        } else {
            document.getElementById("Sizer").style.opacity = '';
        }
        imageFadeCount = 0;
        document.getElementById("Sizer").className = "Sizer";
    }
}

function expandControls(){
    if(ImageDescrHeight > 0){
        if(menuLoopCount < 10){
            document.getElementById("DescrHolder").style.height = Math.ceil((100 - ((10 - menuLoopCount)*(10 - menuLoopCount)))/100 * ImageDescrHeight) + "px";
            menuTimer = setTimeout("expandControls();",10);
            menuLoopCount++;
        }else{
            document.getElementById("DescrHolder").style.height = ImageDescrHeight + "px";
            menuLoopCount = 0;
            if(slideshow){
                document.getElementById("Clock").className = "Clock" + (slideShowCount + 1);
                slideshowTimer = setTimeout("slideShowTimer();",100);
            }
        }
    }else{
        if(slideshow){
            document.getElementById("Clock").className = "Clock" + (slideShowCount + 1);
            slideshowTimer = setTimeout("slideShowTimer();",100);
        }
    }
}

function loadPrevImage(){
    if(imageFadeCount == 0){
        clearTimeout(slideshowTimer);
        document.getElementById("Clock").className = "Hidden";
        slideShowCount = 0;
        document.getElementById("PageOverlay").className = "PageOverlay";
        document.getElementById("DescrHolder").className = "HiddenDESCR";
        document.getElementById("ImageOverlay").className = "ImageOverlay";
    }
    if(imageFadeCount < 11){
        document.getElementById("Sizer").className = "Sizer BGFill";
        if (document.getElementById("Sizer").filters) {
            try {
                document.getElementById("Sizer").filters.item("DXImageTransform.Microsoft.Alpha").opacity = imageFadeCount * 10;
            } catch (e) {
                document.getElementById("Sizer").style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + imageFadeCount * 10 + ')';
            }
        } else {
            document.getElementById("Sizer").style.opacity = imageFadeCount / 10;
        }
        imageFadeCount++;
        imageFadeTimer = setTimeout("loadPrevImage();",1);
    }else{
        document.getElementById("Sizer").className = "Sizer BGFill";
        imageFadeCount = 0;
        currentImage--;
        if(currentImage < 0){
            currentImage = PictureList.length - 1;
        }
        document.getElementById("ImageHolder").className = "HiddenIMG";
        document.getElementById("ImageHolder").src = "";
        document.getElementById("ImageHolder").src = PictureList[currentImage];
        document.getElementById("PhotoCredits").innerHTML = PhotoCredits[currentImage];
        document.getElementById("PhotoDescr").innerHTML = (PhotoTitle[currentImage].length > 0 ? "<b>" + PhotoTitle[currentImage] + "</b><br />" : "") + PhotoDescr[currentImage]; 
        document.getElementById("ImageHolder").onload = function(){getNextImage()};
    }
}

function loadNextImage(){
    if(imageFadeCount == 0){
        clearTimeout(slideshowTimer);
        document.getElementById("Clock").className = "Clock" + (slideShowCount + 1);
        slideShowCount = 0;

        document.getElementById("PageOverlay").className = "PageOverlay";
        document.getElementById("DescrHolder").className = "HiddenDESCR";
        document.getElementById("ImageOverlay").className = "ImageOverlay";
    }
    if(imageFadeCount < 11){
        document.getElementById("Sizer").className = "Sizer BGFill";
        if (document.getElementById("Sizer").filters) {
            try {
                document.getElementById("Sizer").filters.item("DXImageTransform.Microsoft.Alpha").opacity = imageFadeCount * 10;
            } catch (e) {
                document.getElementById("Sizer").style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + imageFadeCount * 10 + ')';
            }
        } else {
            document.getElementById("Sizer").style.opacity = imageFadeCount / 10;
        }
        imageFadeCount++;
        imageFadeTimer = setTimeout("loadNextImage();",1);
    }else{
        document.getElementById("Sizer").className = "Sizer BGFill";
        imageFadeCount = 0;
        currentImage++;
        if(currentImage == PictureList.length){
            currentImage = 0;
        }
        document.getElementById("ImageHolder").className = "HiddenIMG";
        document.getElementById("ImageHolder").src = "";
        document.getElementById("ImageHolder").src = PictureList[currentImage];
        document.getElementById("PhotoCredits").innerHTML = PhotoCredits[currentImage];
        document.getElementById("PhotoDescr").innerHTML = (PhotoTitle[currentImage].length > 0 ? "<b>" + PhotoTitle[currentImage] + "</b><br />" : "") + PhotoDescr[currentImage]; 
        document.getElementById("ImageHolder").onload = function(){getNextImage()};
    }
}

function startSlideShow(){
    slideShowCount = 0;
    slideshow = true;
    document.getElementById("PlayButton").className = "Hidden";
    document.getElementById("PauseButton").className = "Pause";
    document.getElementById("Clock").className = "Clock" + (slideShowCount + 1);
    slideshowTimer = setTimeout("slideShowTimer();",1000);
}

function stopSlideShow(){
    document.getElementById("PauseButton").className = "Hidden";
    document.getElementById("PlayButton").className = "Play";
    document.getElementById("Clock").className = "Clock";
    clearTimeout(slideshowTimer);
    slideShowCount = 0;
    slideshow = false;
}

function slideShowTimer(){
    slideShowCount++;
    if(slideShowCount < 21){
        document.getElementById("Clock").className = "Clock" + (slideShowCount + 1);
        slideshowTimer = setTimeout("slideShowTimer();",100);
    }else{
        document.getElementById("Clock").className = "Clock1";
        slideShowCount = 0;
        loadNextImage();
    }
}
