﻿//this is the older brother of the jDisplayLargeImageSingle.js module
//the contents are essentially the same with the Single module being a
//little better because it was created later. I am not documenting this
//module as this will be redundant. See documentation in the Single module.

function showLargeImage(imageIndex, numImagesCurrPage)
{
    var theLargeImage;
    var largeImagesTableId;
    var largeImagesTableObj;

    globalNumImagesCurrPage = numImagesCurrPage;
    globalCurrLargeImageId = imageIndex;
    
    theLargeImage = createLargeImage(imageIndex, numImagesCurrPage);
    createTitle(imageIndex, numImagesCurrPage);
    largeImagesTableObj = createWhiteTable(imageIndex, numImagesCurrPage, theLargeImage);
    fadeIn(largeImagesTableObj);
    setTimeout(darkenIfNeeded, 200);
}

function fadeIn(obj)
{
    var OpacityValue = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
    //var t = [50, 100, 150, 200, 255, 310, 365, 425, 485, 545];
    var t = [350, 400, 450, 500, 550, 600, 650, 700, 750, 800];

    if (typeof document.body.style.opacity != 'undefined') //FF
    {
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[0]) }, t[0]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[1]) }, t[1]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[2]) }, t[2]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[3]) }, t[3]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[4]) }, t[4]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[5]) }, t[5]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[6]) }, t[6]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[7]) }, t[7]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[8]) }, t[8]);
        setTimeout(function() { OpacAnyObj(obj, OpacityValue[9]) }, t[9]);
    }
    else if (typeof document.body.style.filter != 'undefined') //IE
    {
        setTimeout(function() { OpacAnyObj(obj, 20) }, 0);
        setTimeout(function() { OpacAnyObj(obj, 40) }, 200);
        setTimeout(function() { OpacAnyObj(obj, 60) }, 400);
        setTimeout(function() { OpacAnyObj(obj, 80) }, 600);
        setTimeout(function() { OpacAnyObj(obj, 100) }, 800);
    }
}

function createTitle(imageIndex, numImagesCurrPage)
{
    var i;
    var reTitles = new RegExp("titleLabel");
    var titles = getAllDomObjects("span", reTitles);
    
    for (i = 0; i < titles.length; i++)
    {
        if (i == imageIndex)
        {
            titles[i].style.display = "inline";
        }
    }
}

function createLargeImage(imageIndex, numImagesCurrPage)
{
    var reImages = new RegExp("largeImage");
    var largeImages = getAllDomObjects("img", reImages);

    for (i = 0; i < largeImages.length; i++)
    {
        if (i == imageIndex)
        {
            prepareLargeImageForDispaly(largeImages,i);
        }
    }
    return largeImages[imageIndex];
}

function prepareLargeImageForDispaly(arr, idx)
{
    arr[idx].style.height = (pageHeight() * 0.7) + "px";
    arr[idx].style.display = "inline";
    arr[idx].style.cursor = "pointer";
    arr[idx].onclick = function() { hideLargeImageDisplay() };
    arr[idx].ondblclick = function() { hideLargeImageDisplay() };
}

function createWhiteTable(imageIndex, numImagesCurrPage, theLargeImage)
{
    var i, j, whiteTable,factoredWidth;
    var reLargeImagesTable = new RegExp("largeImagesTable");
    var largeImageTable = getSingleDomObj("table", reLargeImagesTable);

    //factor the image width according to the scaling done to the height
    factoredWidth = Math.floor(theLargeImage.width * ((pageHeight() * 0.7)/theLargeImage.height));

    largeImageTable.style.opacity = "0.0";
    largeImageTable.style.filter = "alpha(opacity=0)";
    largeImageTable.style.zIndex = 100;
    largeImageTable.style.position = "absolute";
    largeImageTable.style.top = "5%";
    largeImageTable.style.left = ((pageWidth() - factoredWidth - 20) / 2 - 15) + "px";
    largeImageTable.style.backgroundColor = "#ffffff";
    largeImageTable.style.visibility = "visible";
    largeImageTable.style.display = "inline";
    
    return largeImageTable;
}

function darkenIfNeeded()
{
    darkDivObj = document.getElementById("darkDiv");
    if (darkDivObj == null)
    {
        darken();
    }
}

function darken()
{
    var darkDivObj;
    var opacDark = [10, 20, 30, 40, 50, 60, 70];
    var t = [50, 100, 150, 200, 255, 310, 365];

    darkDivObj = createDarkDiv();

    if (typeof document.body.style.opacity != 'undefined') //FF
    {
        setTimeout(function() { OpacAnyObj(darkDivObj, opacDark[0]) }, t[0]);
        setTimeout(function() { OpacAnyObj(darkDivObj, opacDark[1]) }, t[1]);
        setTimeout(function() { OpacAnyObj(darkDivObj, opacDark[2]) }, t[2]);
        setTimeout(function() { OpacAnyObj(darkDivObj, opacDark[3]) }, t[3]);
        setTimeout(function() { OpacAnyObj(darkDivObj, opacDark[4]) }, t[4]);
        setTimeout(function() { OpacAnyObj(darkDivObj, opacDark[5]) }, t[5]);
        setTimeout(function() { OpacAnyObj(darkDivObj, opacDark[6]) }, t[6]);
        setTimeout(function() { OpacAnyObj(darkDivObj, opacDark[7]) }, t[7]);
    }
    else if (typeof document.body.style.filter != 'undefined') //IE
    {
        setTimeout(function() { OpacAnyObj(darkDivObj, 10) }, 0);
        setTimeout(function() { OpacAnyObj(darkDivObj, 25) }, 150);
        setTimeout(function() { OpacAnyObj(darkDivObj, 40) }, 300);
        setTimeout(function() { OpacAnyObj(darkDivObj, 55) }, 450);
        setTimeout(function() { OpacAnyObj(darkDivObj, 70) }, 600);
    }
}

function createDarkDiv()
{
    var darkDiv = document.createElement('div');
    darkDiv.id = "darkDiv";
    document.body.appendChild(darkDiv);

    darkDiv.style.opacity = "0.0";
    darkDiv.style.filter = "alpha(opacity=0)";
    darkDiv.style.zIndex = 90;
    darkDiv.style.position = "absolute";
    darkDiv.style.top = "0";
    darkDiv.style.left = "0";
    darkDiv.style.width = "200%";
    darkDiv.style.height = "200%";
    darkDiv.style.backgroundColor = "#000000";
    darkDiv.onclick = function() { hideLargeImageDisplay() };
    darkDiv.ondblclick = function() { hideLargeImageDisplay() };
    darkDiv.style.cursor = "pointer";

    return darkDiv;
}

function hideLargeImageDisplay()
{
    hideLargeImagesTable();
    hideDarkDiv();
}

function hideLargeImagesTable()
{
    var i;

    var reImages = new RegExp("largeImage");
    var reLargeImagesTable = new RegExp("largeImagesTable");
    var reTitles = new RegExp("titleLabel");

    var largeImages = getAllDomObjects("img", reImages);
    var titles = getAllDomObjects("span", reTitles);
    var largeImagesTable = getSingleDomObj("table", reLargeImagesTable);

    largeImagesTable.style.visibility = "hidden";

    for (i = 0; i < largeImages.length; i++)
    {
        largeImages[i].style.display = "none";
    }

    for (i = 0; i < titles.length; i++)
    {
        titles[i].style.display = "none";
    }
}

function hideLargeImage(idx)
{
    var reImages = new RegExp("largeImage");
    var largeImages = getAllDomObjects("img", reImages);
    
    largeImages[idx].style.display = "none";
}

function hideDarkDiv()
{
    var darkDiv = document.getElementById("darkDiv");
    document.body.removeChild(darkDiv);
}

function showConsequetiveImage(nextOrPrev)
{
    hideLargeImagesTable();
    hideLargeImage(globalCurrLargeImageId);
    setCurrLargeImageId(nextOrPrev);
    showLargeImage(globalCurrLargeImageId, globalNumImagesCurrPage);
}

function setCurrLargeImageId(prevOrNext)
{
    //the following values are set assuming a zero based numbering system for the id's
    
    if (prevOrNext == "prev")
    {
        if (globalCurrLargeImageId % globalNumImagesCurrPage == 0)
        {
            globalCurrLargeImageId = globalNumImagesCurrPage-1;
        }
        else
        {
            globalCurrLargeImageId = globalCurrLargeImageId - 1;
        }
    }
    else if (prevOrNext == "next")
    {
        if (globalCurrLargeImageId % globalNumImagesCurrPage == globalNumImagesCurrPage - 1)
        {
            globalCurrLargeImageId = 0;
        }
        else
        {
            globalCurrLargeImageId = globalCurrLargeImageId + 1;
        }
    }
}



