//************************************************************************************* 
// File     :   listToSlideshow.js
// Requires :   mf_domLibrary.0.1.js, prototype.js
// Author   :   marcus Stenbeck (mjas)
// Origin   :   mindfly.com
// Purpose  :   Transforms an unordered list to a slideshow
//*************************************************************************************


//  Purpose :   Returns number of list items in an element by id
//  Author  :   Marcus Stenbeck
//  Origin  :   mindfly.com
//  Modified:   11/08/2007

function listNodes(nodeClassID)
{
    var nodes = $$('li.' + nodeClassID);
    return nodes;
}




//  Purpose :   Displays active node and hides inactive ones - also updates nav numbering
//  Author  :   Marcus Stenbeck
//  Origin  :   mindfly.com
//  Modified:   11/08/2007

function displayActiveNode(HTMLObjects, activeNode)
{
    for(i = 0; i < HTMLObjects.length; i++)
    {
        if(i != activeNode)
            HTMLObjects[i].style.display = "none";
        else
            HTMLObjects[i].style.display = "block";
    }
    
    updateNumbering();
}


//  Purpose :   Generates simple navigation
//  Author  :   Marcus Stenbeck
//  Origin  :   mindfly.com
//  Modified:   11/08/2007

function createNav()
{
    var previousDiv = document.createElement('div');
    previousDiv.setAttribute('id', 'previous');
    previousDiv.innerHTML = '<a alt="Click to view previous image" onclick="switchActiveNode(-1)">Previous</a>';
    
    var nextDiv = document.createElement('div');
    nextDiv.setAttribute('id', 'next');
    nextDiv.innerHTML = '<a alt="Click to view next image" onclick="switchActiveNode(1)">Next</a>';
    
    var numberingDiv = document.createElement('div');
    numberingDiv.setAttribute('id', 'numbering');
    numberingDiv.innerHTML = 'numbering';
    
    $('gallery').appendChild(previousDiv);
    $('gallery').appendChild(nextDiv);
    $('gallery').appendChild(numberingDiv);
}



//  Purpose :   Switches the active node
//  Author  :   Marcus Stenbeck
//  Origin  :   mindfly.com
//  Modified:   11/08/2007

function switchActiveNode(rawOffset)
{
    offset = rawOffset % maxNodes;
    
    if(activeNode <= 0 && offset < 0)
        activeNode = maxNodes + offset;
    else if(activeNode >= (maxNodes - 1) && offset > 0)
        activeNode = offset - 1;
    else
        activeNode += offset;
    
    displayActiveNode(nodeList, activeNode);
}



//  Purpose :   Updated the navigational numbering of the nodes
//  Author  :   Marcus Stenbeck
//  Origin  :   mindfly.com
//  Modified:   11/08/2007

function updateNumbering()
{
    nodeNumber = activeNode + 1;
    $('numbering').update(nodeNumber + ' of ' + maxNodes);
}



//  Purpose :   Initiates gallery
//  Author  :   Marcus Stenbeck
//  Origin  :   mindfly.com
//  Modified:   11/08/2007

function initGallery()
{
    activeNode = 0;
    nodeList = listNodes('liGalleryImages');
    maxNodes = nodeList.length;

    createNav();
    displayActiveNode(nodeList, activeNode);
}


// Initiate on page load
addLoadEvent(initGallery);
