﻿function set_classname(el_id, className) {
    document.getElementById(el_id).className = className;
}

function set_imageSrc(el_id, src) {
    document.getElementById(el_id).src = src;
}

function hide_batchMenuContainer() {
    document.getElementById("batchMenuItems").className = "hidden";
    set_imageSrc("batchEditMenuBtn", "i3/menu_BatchEditOff.gif");
}

function show_batchMenuContainer() {
    document.getElementById("batchMenuItems").className = "";
    set_imageSrc("batchEditMenuBtn", "i3/menu_BatchEditOn.gif");
}

function batchMenu_rollout(event) {
    if (!event)
        var event = window.event;

    var destEl = null;

    if (event.relatedTarget)
        destEl = event.relatedTarget.id;
    else if (event.toElement)
        destEl = event.toElement.id;

    if (destEl == "batchAddTagsBtn" || destEl == "batchEditMenuBtn" || destEl == "batchDeletePhotosBtn") {
        return;
        //e.cancelBubble = true;
        //if (e.stopPropagation) e.stopPropagation();
    }
    else {
        hide_batchMenuContainer();
    }
}

function batchAddTagsBtn_rollover() {
    set_imageSrc("batchAddTagsBtn", "i3/menu_AddTagsOn.gif");
}

function batchAddTagsBtn_rollout() {
    set_imageSrc("batchAddTagsBtn", "i3/menu_AddTagsOff.gif");
}

function batchDeletePhotosBtn_rollover() {
    set_imageSrc("batchDeletePhotosBtn", "i3/menu_DeleteOn.gif");
}

function batchDeletePhotosBtn_rollout() {
    set_imageSrc("batchDeletePhotosBtn", "i3/menu_DeleteOff.gif");
}

function set_diag_state(diag_id, show) {
    var section = document.getElementById(diag_id);
    section.className = show ? "popUpContainer" : "hidden";
    section = null;
}

function show_delete_album_diag() {
    set_diag_state("deleteAlbumConfDiag", true);
}

function hide_delete_album_diag() {
    set_diag_state("deleteAlbumConfDiag", false);
}

// Firefox initializes object height to 0px instead of filling parent height.
function ResizeSLViewerObj() {
    var hostDiv = document.getElementById("pageContent");

    if (hostDiv.clientHeight) {
        var slObject = document.getElementById("PhotoZoomCollectionViewer");

        if (!slObject)
            return;

        var oldHeight = slObject.clientHeight;
        var offsetHeight = document.getElementById("pageHeader").clientHeight +
                document.getElementById("content").offsetTop +
                75 +
                document.getElementById("pageFooter").clientHeight;

        var newHeight = Math.max(450, hostDiv.clientHeight - offsetHeight);
        slObject.style.height = newHeight + "px";
        //alert("resized old:" + oldHeight + " to: " + newHeight + " final: " + slObject.clientHeight);
    }
}

window.onresize = ResizeSLViewerObj;
var failedCount = 0;

function InitializeCollectionViewer() {
    try {
        var slObject = document.getElementById("PhotoZoomCollectionViewer");

        if (slObject)
            slObject.Content.CollectionViewer.InitializePage();
    }
    catch (e) {
        failedCount++;
        setTimeout(InitializeCollectionViewer, 1);
    }
}

function OnLoadPage() {
    ResizeSLViewerObj();
    InitializeCollectionViewer();
}

// Dean Edwards/Matthias Miller/John Resig

function init() {
    // quit if this function has already been called
    if (arguments.callee.done) return;

    // flag this function so we don't do the same thing twice
    arguments.callee.done = true;

    // kill the timer
    if (_timer) clearInterval(_timer);

    OnLoadPage();
};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, false);
}

/* for Internet Explorer */
/*@cc_on@*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
    if (this.readyState == "complete") {
        init(); // call the onload handler
    }
};
/*@end@*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
    var _timer = setInterval(function() {
        if (/loaded|complete/.test(document.readyState)) {
            init(); // call the onload handler
        }
    }, 10);
}

/* for other browsers */
window.onload = init;

function uninit() {
    // do nothing.  the presence of this forces browser not to cache/reconstruct DOM, so load event fires on back button.
}

window.onunload = uninit;


function set_diag_state(diag_id, show) {
    var section = document.getElementById(diag_id);
    section.className = show ? "popUpContainer" : "hidden";
    section = null;
}

function show_delete_photos_diag() {
    document.getElementById("selectedPhotosToDeleteMsg").innerHTML = "<b>" + getNumPhotosSelected() + "</b> Photos selected";
    set_diag_state("deletePhotosConfDiag", true);
}

function getNumPhotosSelected() {
    var cbEls = document.getElementsByName("selectedPhotos");
    var num = 0;

    if (cbEls) {
        for (var i = 0; i < cbEls.length; i++) {
            if (cbEls[i].checked)
                num++;
        }
    }

    return num;
}

function hide_delete_photos_diag() {
    set_diag_state("deletePhotosConfDiag", false);
}

function onImageClick(elId) { toggleSelection(elId, true); }
function onCheckboxClick(elId) { toggleSelection(elId, false); }
function toggleSelection(elId, toggleCheck) {
    var el = document.getElementById(elId);
    var container = el.parentNode;

    if (toggleCheck)
        el.checked = !el.checked;

    if (el.checked)
        container.className = "individualPhotoItem checked";
    else
        container.className = "individualPhotoItem";

    el = null;
    container = null;
}

function photo_over(elId) {
    photo_edit_btn_updateClass(elId, "editPropertiesButton");
}

function photo_out(elId) {
    photo_edit_btn_updateClass(elId, "hidden");
}

function photo_edit_btn_updateClass(pvElId, className) {
    var btnId = "btn-" + pvElId.toString();
    set_classname(btnId, className);
}

function photo_edit_delete_tag(tagName) {
    var tags = parseTagList(document.getElementById("peTagList").value);
    var newTags = new Array();

    for (var i = 0; i < tags.length; i++) {
        if (tags[i] != tagName)
            newTags[newTags.length] = tags[i];
    }

    document.getElementById("peTagList").value = buildTagList(newTags);
    updatePeTagListDisplay(newTags);
}

function photo_edit_add_tag_input() {
    var tagName = document.getElementById("addTagName").value;
    photo_edit_add_tag(tagName);
    document.getElementById("addTagName").value = "";
}

function photo_edit_add_tag(tagName) {
    var tags = parseTagList(document.getElementById("peTagList").value);
    tags[tags.length] = tagName;
    document.getElementById("peTagList").value = buildTagList(tags);
    updatePeTagListDisplay(tags);
}

function parseTagList(tagList) {
    var tags = tagList ? tagList.split(' ') : new Array();

    for (var i = 0; i < tags.length; i++)
        tags[i] = unescape(tags[i]);

    return tags;
}

function buildTagList(tags) {
    var tagList = "";
    var lastTagNum = tags.length - 1;
    for (var i = 0; i <= lastTagNum; i++) {
        tagList += escape(tags[i]);
        if (i < lastTagNum)
            tagList += ' ';
    }

    return tagList;
}

function populate_photo_edit_diag(elId) {
    var imageUrl = document.getElementById("img-" + elId).src;
    var name = document.getElementById("cap-" + elId).innerHTML;
    var dateTakenStr = document.getElementById("dt-" + elId).value;
    var dateTaken = dateTakenStr == null ? null : Date.parse(dateTakenStr);
    var dateUploaded = Date.parse(document.getElementById("du-" + elId).value);
    var tagList = document.getElementById("tags-" + elId).value;
    var tags = parseTagList(tagList);

    var dateFormatString = "MMM d, yyyy h:mmtt";
    document.getElementById("peElId").value = elId;
    document.getElementById("peTagList").value = tagList;
    document.getElementById("pePhoto").src = imageUrl;
    document.getElementById("peName").value = name;
    document.getElementById("peDT").value = dateTaken ? dateTaken.toString(dateFormatString) : "";
    document.getElementById("peDU").value = dateUploaded.toString(dateFormatString);
    updatePeTagListDisplay(tags);
    updatePeRecentTagListDisplay(tags);
}

function updatePeTagListDisplay(tags) {
    var tagDispHtml = "";
    for (var i = 0; i < tags.length; i++) {
        tagDispHtml += "<img src=\"i3/delBtn.gif\" class=\"button\" onclick=\"photo_edit_delete_tag('" + tags[i] + "')\"/><span>" + tags[i] + "</span>";
    }

    document.getElementById("peTagListDisplay").innerHTML = tagDispHtml;
}

function updatePeRecentTagListDisplay(tags) {
    var recentTagListHtml = "";
    for (var i = 0; i < tags.length; i++) {
        recentTagListHtml += "<a href=\"#\" onclick=\"photo_edit_add_tag('" + tags[i] + "')\">" + tags[i] + "</a>&nbsp;";
    }

    document.getElementById("peRecentTagListDisplay").innerHTML = recentTagListHtml;
}

function show_photo_edit_diag(elId) {
    populate_photo_edit_diag(elId);
    set_diag_state("editPhotoPropertiesDiag", true);
}

function hide_photo_edit_diag() {
    set_diag_state("editPhotoPropertiesDiag", false);
}

function copyEmbedCodeToClipboard(tbElId) {
    window.clipboardData.setData("Text", document.getElementById(tbElId).value);
}

function selectAll(tbElId) {
    document.getElementById(tbElId).focus();
    document.getElementById(tbElId).select();
}
