﻿(function()
{
    var ajaxManager =
    {
        cache: {},
        get: function(url, callback)
        {
            var ajaxManager = this;
            if (!!ajaxManager.cache[url])
            {
                callback(ajaxManager.cache[url]);
            }
            else
            {
                $.ajax(
                {
                    url: url,
                    success: function(data)
                    {
                        ajaxManager.cache[url] = data;
                        if (!!callback)
                        {
                            callback(data);
                        }
                    }
                });
            }
        }
    };

    $(function()
    {
        $("#ClasesPopupTop img").click(ClosePopupWindow);

        $(document).keyup(function(e)
        {
            if (e.keyCode == 27)
            {
                ClosePopupWindow()
            }
        });

        AddHoverEvent();

        $("#ClassesDescTable td img[id], #CharacterClasses img").each(function()
        {
            var id = $(this).attr("id");
            $(this).addClass("cursor").
            click(function()
            {
                ShowOverlay();
                ajaxManager.get("/Overview/Classes/" + id + ".aspx", function(data)
                {
                    $("#ClassesInfoSub").html(data);
                    PrecacheImages("#UnSelectedIcon a img");
                    AddHoverEvent()
                    var popup = $("#ClassesPopupWindow").appendTo("body");
                    popup.css("left", ($(window).width() / 2 - popup.width() / 2)).show();
                    $("#MidContent")[0].scrollIntoView();
                });
            });
        });

        $("#CharacterClasses a").click(function()
        {
            $(this).blur();
            return false;
        });

        $("#UnSelectedIcon div a").live("click", function()
        {
            var url = $(this).attr("href");
            ajaxManager.get(url, function(data)
            {
                $("#ClassesInfoSub").html(data);
                AddHoverEvent();
            });
            $(this).blur();
            return false;
        });

    });

    function AddHoverEvent()
    {
        $("#UnSelectedIcon li, #CharacterClasses li").each(function()
        {
            if (!$(this).hasClass("selected_race"))
            {
                $(this).find("div a[href]").hover(function()
                {
                    ToggleSrcImage($(this).find("img"));
                    $(this).parent().siblings(".RaceText").show();
                }, function()
                {
                    ToggleSrcImage($(this).find("img"));
                    $(this).parent().siblings(".RaceText").hide();
                });
            }
        });
    }

    function ToggleSrcImage(img)
    {
        var src = $(img).attr("src"),
            toggle = src.match("_off") != null ? "_on" : "_off";
        $(img).attr("src", src.replace(toggle == "_off" ? "_on" : "_off", toggle));
    }

    function ShowOverlay()
    {
        $("<div id=\"Overlay\" />").css(
            {
                width: $(document).width(),
                height: $(document).height()
            }).prependTo("body").click(ClosePopupWindow);
    }

    function ClosePopupWindow()
    {
        $("#ClassesPopupWindow").hide();
        $("#ClassesInfoSub").html("");
        $("#Overlay").remove();
    }
} ());
