﻿//Function called by Flash client to announce a game event/request
function onGameEvent(event) {
    $.publish(event.eventType, [{ category: event.eventCategory || null, data: event.eventData || null}]);
}

(function (global, undefined) {

    var Huzu = global;

    Huzu.Virtual = {

        Services: {
            Achievements: {
                getAllAchievements: "/API/HuzuVirtual/GetAllAchievements",
                getUserAchievements: "/API/HuzuVirtual/GetUserAchievements/{username}",
                getNewUserAchievements: "/API/HuzuVirtual/GetNewUserAchievements/{username}"
            }
        },

        Assets: {
            Achievements: {
                icons: (typeof HV_BASE !== "undefined")? HV_BASE + "/assets/achievement/icon/" : "http://dev-huzu.dyndns.org/assets/achievement/icon/"
            }
        },


        loadWorld: function (swf, width, height, target, settings) {
            var flashvars = {
                userid: settings.userid,
                logintoken: settings.logintoken,
                timestamp: settings.timestamp,
                ws: settings.ws,
                gaprofile: settings.gaprofile,
                worldid: settings.worldid,
                huruendpoint: settings.huruendpoint,
                huruport: settings.huruport
            };

            var params = {
                scale: "noscale",
                wmode: "opaque",
                allowscriptaccess: "always",
                menu: "false",
                base: settings.base
            };

            var attributes = {};

            swfobject.embedSWF(settings.base + swf, target, width, height, "10.0.0", false, flashvars, params, attributes);
        },

        OverlayController: {

            showContent: function (width, height, id, eventData) {
                var contentID = id + "-content";
                if ($("#" + contentID).length === 0) { $('<div />', { id: contentID }).appendTo('#' + id); }
                if (eventData.isFlash) {
                    Huzu.Virtual.OverlayController.loadFlashContent(width, height, contentID, eventData);
                } else {
                    Huzu.Virtual.OverlayController.loadHTMLContent(contentID, eventData);
                }
                $('#' + id).fadeIn(500);
            },

            hideContent: function (id) {
                var contentID = id + "-content";
                $('#' + id).fadeOut(500, function () { $('#' + contentID).remove(); });
            },

            loadFlashContent: function (width, height, target, eventData) {

                var flashvars = {};
                var params = {};
                var attributes = {};

                params.scale = "noscale";
                params.allowscriptaccess = "always";
                params.wmode = "transparent";
                params.menu = "false";
                params.base = eventData.settings.base;

                swfobject.embedSWF(eventData.settings.base + eventData.url, target, width, height, "10.0.0", false, flashvars, params, attributes);
                if (typeof eventData.callback === 'function') { eventData.callback(); }
                else if (typeof eventData.callback === 'string') { Huzu.Utils.parseFunctionString(eventData.callback, window)(); }
            },

            loadHTMLContent: function (target, eventData) {
                $("#" + target).load(eventData.url + " .ajax-content", function () {
                    $(this).prepend("<a id=\"overlay-close\" href=\"javascript:$.publish('overlay-close', []);\" class=\"icon close fr\">Close</a>")
                    $('form:not(.non-modal)', this).each(function () {
                        $(this).submit(function (e) {
                            e.preventDefault();
                            Huzu.Utils.FormManager.postForm(this, function (response) {
                                if (!response.Successful) {
                                    $.publish('error/validation', [response]);
                                } else {
                                    $.publish('overlay-close', []);
                                }
                            });
                        });
                    });
                    if (typeof eventData.callback === 'function') { eventData.callback(); }
                    else if (typeof eventData.callback === 'string') { Huzu.Utils.parseFunctionString(eventData.callback, window)(); }
                });
            }
        }
    };

    return (window.Huzu = Huzu);

})(window.Huzu || {});
