﻿
// Constants

var DZI_PATH = "http://static.seadragon.com/content/misc/";

var THUMBS_PATH = "images/gallery/";
var THUMBS_EXT = ".png";

var CLASS_THUMB = "gallery-thumb";
var CLASS_THUMB_SEL = "gallery-thumb-selected";

// Elements

var thumbsContainer;
var viewerContainer;

// Variables

// var data set by gallery-data.js.
var selectedItem;
var viewer = null;

// Core functions

function init() {
    initElements();
    initThumbnails();

    openItem(data[0], false);
}

function initElements() {
    thumbsContainer = $("gallery-thumbs-container");
    viewerContainer = $("gallery-viewer");
}


// Item helpers

function initThumbnails() {
    for (var i = 0; i < data.length; i++) {
        var item = data[i];
        var img = document.createElement("img");
        
        img.src = THUMBS_PATH + item.thumb + THUMBS_EXT;
        img.title = item.title;
        img.className = CLASS_THUMB;

        Seadragon.Utils.addEvent(img, "click",
                Seadragon.Utils.createCallback(this, openItem, item, true));

        thumbsContainer.appendChild(img);
        item.img = $(img);
    }
}

function openItem(item, updateHistory) {
    if (item == selectedItem) {
        return;
    } else if (selectedItem) {
        selectedItem.img.className = CLASS_THUMB;
    }

    selectedItem = null;
    item.img.className = CLASS_THUMB + " " + CLASS_THUMB_SEL;
    // TODO have viewer title and description?
    selectedItem = item;

    if (viewer == null) {
        Seadragon.ComboViewer.createAndOpenDzi(
            viewerContainer, DZI_PATH + item.dzi, item.xml, function(v) {
                viewer = v;
                viewer.setLogoCaption(selectedItem.credit, selectedItem.link);
            });
    } else {
        viewer.openDzi(DZI_PATH + item.dzi, item.xml);
        viewer.setLogoCaption(item.credit, item.link);
    }
}


// TODO ajax history/deep-linking? if so, through google RSH?


// Immediate execution

init();
