$(function() {
    if ($("#dot").width() > 8)
        $("#calendar td h4 div span").addClass("sm");

    $(".gcfixme, #globe").fixPng();
    if ($("#calendar").get(0) || $("#edit").get(0) || $("#editNoPhotos").get(0))
        ArchiveCal.init();
    $(".ff .addFf").click(onFfClick);
    
    $("#edit").mouseout(function() { $("#edit tr").removeClass("selected"); });

    $("#edit tr.highlight td").mouseover(function(e) {
        e.preventDefault();
        e.stopPropagation();
        $("#edit tr").removeClass("selected");
        $(this).parent().addClass("selected");
    });
    
    $(".editLink a").click(function(e) {
        e.preventDefault();
        linkUrl = makeUrlAjax(e.target.toString());
        $.get(linkUrl, function(data) {
            $("#editModule td#data").append(data);
            updateCharCount();
            initEditForm();
            
            cal1 = new Calendar(); //requires calendar.js
            $('#openCal').click(function(e) {
                e.preventDefault();
                e.stopPropagation();
                cal1.showCal(dateIn);
                $("body").click(function() { cal1.closeCal(); $("body").unbind("click"); });
            });
            
            $("#editDelete a.closeLink").click(function(e) { e.preventDefault(); dimmer("#editModule"); $("#editModule td#data").empty(); });
            dimmer("#editModule");
        });
    });
    
    $(".editLink span").mouseover(function() {
        easyPositionItem($(this), $("#message"));
        $("#message").show();
        $("#message").mouseover(function(e) { e.stopPropagation(); });
        $("body").mouseover(function() { $("#message").hide(); $("body").unbind("mouseover"); });
    });
    
    initEditForm();

    $("#delSelected").click(function(e) {
        e.preventDefault();
        var checked = $("#listForm :checked").length;
        if (checked > 0) {
            if (checked == 1)
                $("#deleteSelected h3.one").show();
            else
                $("#deleteSelected h3.many var").html(checked).parent().show();
            $("#deleteForm a.closeLink").click(function(e) { e.preventDefault(); dimmer("#deleteConfirm"); $("#deleteSelected h3").hide(); });
            dimmer("#deleteConfirm");

            $("#listForm").submit(function(e) {
                $(this).prepend("<input type='hidden' name='authForm' value='true'>");
            });
        }
    });
});

function initEditForm() {
    $("#editCaption").keyup(updateCharCount);
    $(".bold, .italic").click(enableFotologSyntax);
    $(".deleteTab").click(function(e) {
        e.preventDefault();
        $("#editView").hide();
        $("#deleteView").show();
    });
    $(".editTab").click(function(e) {
        e.preventDefault();
        $("#deleteView").hide();
        $("#editView").show();
    });
}

function makeUrlAjax(url) {
    if (url.indexOf('?') != -1)
        url = url + "&ajax=true";
    else
        url = url + "?ajax=true";
    return url;
}

function onFfClick(event) {
    var container = $(event.target);
    var options = {
        indicator:      container.siblings(".ajaxIndicator"),
        errorContainer: container.siblings(".errorBox"),
        update:         container.parent()
    };

    $.fAjaxLinkTarget(event, container, options);
}

function enableFotologSyntax(e) {
    e.preventDefault();
    var chr = $(this).html().toLowerCase();
    var openTag = "[" +chr+ "]";
    var closeTag = "[/" +chr+ "]"
    if (window.getSelection) {
        var txtArea = $("#editCaption");
        var tx = txtArea[0];
        var selection = tx.value.substring(tx.selectionStart, tx.selectionEnd);
        if (selection.length)
            txtArea.val(tx.value.substring(0, tx.selectionStart) + openTag + selection + closeTag + tx.value.substring(tx.selectionEnd, tx.value.length));
    }
    else if (document.selection) {
        var selection = document.selection.createRange();
        if (selection.parentElement().tagName == "TEXTAREA" && (selection.text.length > 0)) {
            selection.text = openTag + selection.text + closeTag;
            document.selection.empty();
        }
    }
}

function updateCharCount() {
    diff = window.captionMax - $("#editCaption").val().length;
    if (diff == 0) diff = "0";
    $("#caption_limit var").html(diff);
    if (diff < 1) $("#caption_limit").addClass("over");
    else $("#caption_limit").removeClass("over");
}


function easyPositionItem(reference, element, positionOffset) {
    theOffset = $(reference).offset();
    
    var topOffset = (positionOffset == undefined ? 15 : positionOffset.top);
    var leftOffset = (positionOffset == undefined ? -25 : positionOffset.left);

    var windowSize = new WindowSize();
    var scrollPos = new ScrollPosition();

    $(element).css("top", theOffset.top + topOffset);
    $(element).css("left", theOffset.left + leftOffset);
}