﻿var pbPhotosPerPage = 8;
var pbPhotoCount = 0;
var pbPageCount = 0;
var pbPage = 0;
//var pbPhotos = new Array('1000001_0001.jpg', '1000001_0002.jpg', '1000001_0003.jpg', '1000001_0004.jpg', '1000001_0005.jpg', '1000001_0006.jpg', '1000001_0007.jpg', '1000001_0008.jpg', '1000001_0009.jpg', '1000001_0010.jpg', '1000001_0011.jpg', '1000001_0012.jpg', '1000001_0013.jpg', '1000001_0014.jpg', '1000001_0015.jpg', '1000001_0016.jpg', '1000001_0017.jpg', '1000001_0018.jpg', '1000001_0019.jpg', '1000001_0020.jpg', '1000001_0021.jpg', '1000001_0022.jpg', '1000001_0023.jpg', '1000001_0024.jpg', '1000001_0025.jpg', '1000001_0026.jpg');
var pbPhotos = new Array();
var pbCache;
var pbPhotoPrefix = '/photos/';
var pbPhotoBack = '/images/pbphotoback.gif';
var pbPhotoBlank = '/images/pbphotoblank.gif';
var pbLoader = '/images/loadersmall.gif';
var pbSlidePlay = '/images/pbplay.gif';
var pbSlidePause = '/images/pbpause.gif';
var pbBorderColour = '#283991';
var pbBorderColourNone = '#E7E7E7';
var pbFade = 500;
var pbStart = 200;
var pbCacheTimer = false;
var pbStartTimer = false;
var pbNextSlide = 1;
var pbSlideshow = false;
var pbHesitate = false;
var pbSlideDelay = 3000;
var pbSlideShowOn = false;
var pbHelpShown = false;
var pbActive = true;
var pbPrint = false;

$(document).ready(function() { PbInit() });

function PbInit() {
    if ($('#photobrowser').length == 0) {
        pbActive = false;
    }
    else {
        $('#photobrowser .pbmainimage1').fadeOut(0);
        $('#photobrowser .pbmainimage2').fadeOut(0);

        for (count = 0; count < pbPhotos.length; count++) {
            pbPhotos[count] = pbPhotoPrefix + pbPhotos[count];
        }

        pbPhotoCount = pbPhotos.length;
        pbCache = new Array(pbPhotoCount);

        pbPageCount = Math.floor(pbPhotoCount / pbPhotosPerPage);
        if (pbPageCount * pbPhotosPerPage < pbPhotoCount) pbPageCount++;

        if (document.images) {
            var images = new Array(14);
            images[0] = new Image();
            images[0].onload = function() { PbAddBorders(); }
            images[0].src = pbPhotos[0];
            images[7] = new Image();
            images[7].src = '/images/loaderbig.gif';
            images[8] = new Image();
            images[8].src = '/images/loadersmall.gif';
            images[9] = new Image();
            images[9].src = '/images/pbphotoback.gif';
            images[10] = new Image();
            images[10].src = '/images/pbphotoblank.gif';
            images[1] = new Image();
            images[1].src = '/images/pbleftenabled.gif';
            images[2] = new Image();
            images[2].src = '/images/pbleftdisabled.gif';
            images[3] = new Image();
            images[3].src = '/images/pblefthover.gif';
            images[4] = new Image();
            images[4].src = '/images/pbrightenabled.gif';
            images[5] = new Image();
            images[5].src = '/images/pbrightdisabled.gif';
            images[6] = new Image();
            images[6].src = '/images/pbrighthover.gif';
            images[11] = new Image();
            images[11].src = pbSlidePlay;
            images[12] = new Image();
            images[12].src = pbSlidePause;
            images[13] = new Image();
            images[13].src = '/images/pbclosered.gif';
        }

        $('#photobrowser .pbslideshow img').animate({
            opacity: 0
        }, 0).stop(true, true);
        $('#photobrowser .pbhelp').hide().stop(true, true);

        if (pbPhotoCount > 0) {
            $('#photobrowser .pbmainimage1')[0].src = pbPhotos[0];
        }
        else {
            $('#photobrowser .pbmainimage1')[0].src = pbPhotoBlank;
        }
        $('#photobrowser .pbmainimage1').fadeIn(pbFade).addClass('active');
        $('#photobrowser .pbmainimage2').addClass('inactive');

        $('#photobrowser').css("display", "block");

        $('#photobrowser .pbleft').click(function() {
            PbPreviousPage();
        });

        $('#photobrowser .pbright').click(function() {
            PbNextPage();
        });

        $('#photobrowser .pbthumbnail img').hover(function() {
            var newSrc = $(this)[0].src;
            var newId = $(this)[0].id;
            //pbNextSlide = parseInt(newId.substring(2, 3));

            if ($('#photobrowser .active')[0].src != newSrc && newSrc.indexOf(pbPhotoBlank) == -1) {
                $('#photobrowser img').stop(false, true);
                PbPauseSlideshow();
                //pbStartTimer = setTimeout("PbDoSwap('" + newSrc + "')", pbStart);
                pbStartTimer = setTimeout("PbDoSwap2('" + newId + "')", pbStart);
            }
        }, function() { clearTimeout(pbStartTimer); });

        if (pbPhotoCount > 0) {
            $('#photobrowser .pbmainphotoc').hover(function() {
                pbHesitate = true;
                $('#photobrowser .pbslideshow img').animate({
                    opacity: 0.5
                }, 250);
            }, function() {
                pbHesitate = false;
                $('#photobrowser .pbslideshow img').animate({
                    opacity: 0
                }, 250);
            });
            $('#photobrowser .pbslideshow img').click(function() {
                PbToggleSlideshow();
            });
        }
        $('#photobrowser .pbhelpclick').click(function(event) {
            PbToggleHelp();
            event.preventDefault();
        });

        $('#photobrowser .pbhelpclose').click(function(event) {
            PbHideHelp();
            event.preventDefault();
        });

        $('#photobrowser .pbhelp').click(function() {
            PbHideHelp();
        });

        PbLoadPage(true);
        if (pbPhotoCount > 0) {
            PbStartSlideshow();
        }
    }
}

function PbLoadPage(doHide) {
    var count = 0;
    var firstPhoto = pbPage * pbPhotosPerPage;
    var lastPhoto = firstPhoto + pbPhotosPerPage - 1;
    var fadeDelay = (pbPrint ? 0 : pbFade);
    if (lastPhoto > pbPhotoCount - 1) lastPhoto = pbPhotoCount - 1;

    if (typeof (pbCache[firstPhoto]) == 'undefined') {
        PbDoCache(firstPhoto, lastPhoto);
    }
    
    if (doHide) {
        $('#photobrowser .pbthumbnail').each(function() {
            if (typeof (pbCache[firstPhoto]) != 'undefined' && pbCache[firstPhoto].complete) {
                $(this).css("background-image", "url('" + pbPhotoBlank + "')");
            }
            else {
                $(this).css("background-image", "url('" + pbLoader + "')");
            }
            $('img', this).fadeOut(0);
            $('img', this)[0].src = pbPhotoBack;
        });
        if (pbPage > 0) {
            $('#photobrowser .pbleft').removeClass('pbleftdisabled');
            $('#photobrowser .pbleft').addClass('pbleftenabled');
        }
        else {
            $('#photobrowser .pbleft').removeClass('pbleftenabled');
            $('#photobrowser .pbleft').addClass('pbleftdisabled');
        }

        if (pbPage < pbPageCount - 1) {
            $('#photobrowser .pbright').removeClass('pbrightdisabled');
            $('#photobrowser .pbright').addClass('pbrightenabled');
        }
        else {
            $('#photobrowser .pbright').removeClass('pbrightenabled');
            $('#photobrowser .pbright').addClass('pbrightdisabled');
        }
    }

    var allDone = true;
    count = firstPhoto;
    $('#photobrowser .pbthumbnail').each(function() {
        if (count >= pbPhotoCount) {
            $('img', this)[0].src = pbPhotoBlank;
            $('img', this).fadeIn(fadeDelay);
            $(this).css("border-color", pbBorderColourNone);
        }
        else if (typeof (pbCache[count]) != 'undefined' && pbCache[count].complete) {
            $('img', this)[0].src = pbCache[count].src; //.src = pbPhotos[count];
            $('img', this).fadeIn(fadeDelay);
            $(this).css("border-color", pbBorderColour);
        }
        else {
            allDone = false;
        }
        count++;
    });

    if (!allDone) { pbCacheTimer = setTimeout('PbLoadPage(false)', 10); }
}

function PbDoSwap2(id) {
    var newSrc = $('#' + id)[0].src;
    pbNextSlide = parseInt(id.substring(2, 3));
    PbDoSwap(newSrc);
}

function PbDoSwap(newSrc) {
    clearTimeout(pbStartTimer);
    if (pbPhotoCount > 0) {
        $('#photobrowser .inactive')[0].src = newSrc;
        $('#photobrowser .active').fadeOut(pbFade).removeClass('active').addClass('wait');
        $('#photobrowser .inactive').fadeIn(pbFade).removeClass('inactive').addClass('active');
        $('#photobrowser .wait').removeClass('wait').addClass('inactive');
        $('#photobrowser .pbmainphotoc').css("background-image", "url('" + pbPhotoBlank + "')");
        /*if (pbPage == 0 && pbNextSlide == 1) {
            $('.pbover').show();
        }
        else {
            $('.pbover').hide();
        }*/
    }
}

function PbAddBorders() {
    $('#photobrowser .pbmainimage1').addClass('pbborder');
    $('#photobrowser .pbmainimage2').addClass('pbborder');

}

function PbPreviousPage() {
    if (pbPage > 0) {
        clearTimeout(pbCacheTimer);
        PbPauseSlideshow();
        if (pbHelpShown) {
            PbHideHelp();
        }
        pbPage--;
        pbNextSlide = 0;
        PbLoadPage(true);
    }
}

function PbNextPage() {
    if (pbPage < pbPageCount - 1) {
        clearTimeout(pbCacheTimer);
        PbPauseSlideshow();
        if (pbHelpShown) {
            PbHideHelp();
        }
        pbPage++;
        pbNextSlide = 0;
        PbLoadPage(true);
    }
}

function PbDoCache(fromPhoto, toPhoto) {
    for (count = fromPhoto; count <= toPhoto; count++) {
        if (typeof (pbCache[count]) == 'undefined') {
            pbCache[count] = new Image();
            pbCache[count].src = pbPhotos[count];
        }
    }
}

function PbStartSlideshow() {
    if (pbPhotoCount > 1) {
        pbSlideShowOn = true;
        $('#photobrowser .pbslideshow img')[0].src = '/images/pbpause.gif';
        $('#photobrowser .pbslideshow img')[0].alt = _pbMessage8; //'Click to pause the slideshow';
        $('#photobrowser .pbslideshow img')[0].title = _pbMessage8; //'Click to pause the slideshow';
        pbSlideshow = setInterval("PbShowNextSlide()", pbSlideDelay);
    }
    else {
        PbPauseSlideshow();
    }
}

function PbPauseSlideshow() {
    pbSlideShowOn = false;
    $('#photobrowser .pbslideshow img')[0].src = '/images/pbplay.gif';
    $('#photobrowser .pbslideshow img')[0].alt = _pbMessage9; //'Click to start the slideshow';
    $('#photobrowser .pbslideshow img')[0].title = _pbMessage9; //'Click to start the slideshow';
    clearInterval(pbSlideshow);
}

function PbBeforePrint() {
    pbHesitate = true;
    pbPrint = true;
    clearTimeout(pbCacheTimer);
    if (pbPage != 0) {
        pbPage = 0;
        PbLoadPage(true);
    }
    pbNextSlide = 1;
    $('#photobrowser .active')[0].src = pbCache[0].src;
    //$('#photobrowser .pbthumbnail img').show();
    pbPrint = false;
}

function PbAfterPrint() {
    pbHesitate = false;
}

function PbToggleSlideshow() {
    if (pbSlideShowOn) PbPauseSlideshow();
    else PbStartSlideshow();
}

function PbShowNextSlide() {
    if (!pbHesitate) {
        var index = pbNextSlide + pbPage * pbPhotosPerPage;
        if (pbNextSlide >= pbPhotosPerPage || index >= pbPhotoCount) {
            pbPage++;
            pbNextSlide = 0;
            if (index >= pbPhotoCount) {
                pbPage = 0;
                index = 0;
            }
            index = pbNextSlide + pbPage * pbPhotosPerPage;
            PbLoadPage(true);
        }
        if (typeof (pbCache[index]) != 'undefined' && pbCache[index].complete) {
            pbNextSlide++;
            
            PbDoSwap(pbCache[index].src);
        }
    }
}

function PbShowHelp() {
    $('#photobrowser .pbthumbnails').fadeOut(pbFade);
    //$('#photobrowser .pbhelp').css("display", "block");
    $('#photobrowser .pbhelp').fadeIn(pbFade);
    pbHelpShown = true;
}

function PbHideHelp() {
    $('#photobrowser .pbhelp').fadeOut(pbFade);
    $('#photobrowser .pbthumbnails').fadeIn(pbFade);
    pbHelpShown = false;
}

function PbToggleHelp() {
    if (pbHelpShown) {
        PbHideHelp();
    }
    else {
        PbShowHelp();
    }
}
