﻿App.module("purchase", function (exports, require) {

    var App = require("app");
    var Utils = require("utils");

    App.addActions({
        purchase: function ($el) {
            Utils.formPost({
                action: "purchase",
                $el: $el,
                paramName: "args",
                extraParams: { QueryString: window.location.search },
                success: function (response, formValues) {
                    //App.log(arguments);
                    window.location = response.url;
                }
            });
        },
        Web2MobilePurchase: function ($el) {
            Utils.formPost({
                action: "Web2MobilePurchase",
                $el: $el,
                success: function (response, formValues) {
                    App.displayInfo(response.msg);
                    $("#mobilebuy_step1").fadeOut("slow", function () {
                        $(".qrcode", "#mobilebuy_complete").attr("src", response.img);
                        $("#mobilebuy_complete h3").html(response.msg);
                        $("#mobilebuy_complete").fadeIn("slow");
                    });
                }
            });

        },

        mobileCompatibility: function ($el) {

            function getIds(d) {
                var ret = [],
                    reg = /game.*/i;

                for (var i in d) if (reg.test(i))
                    ret.push(d[i]);
                return ret;
            }

            var form = Utils.getForm($el),
                data = Utils.getFormValues(form),
                ids = getIds(data),
                post = { deviceId: form.find(".device-autocomplete").attr('data-value'), ids: ids },
                indicator = $el.siblings('.mobilecompat-indicator'),
                toggleIndicator = function (cls) { indicator.removeClass("loading valid invalid").addClass(cls); };

            toggleIndicator("loading");

            App.post("MobileCompatability", post, function (err, data) {
                if (err) {
                    App.displayError(err);
                    toggleIndicator("invalid");
                }else if (data) {
                    if (!data.compatible) {
                        form.data("validator").invalidate({ DeviceId: data.msg });
                        toggleIndicator("invalid");
                    } else {
                        toggleIndicator("valid");
                        App.displayInfo(data.msg);
                }
                }
            });
        }
    });
});
