﻿if (typeof (NSM) == 'undefined') NSM = {};

NSM.SocialMediaAuthorizer = {

    ajaxConnectAction: "connect",

    init: function () {
        $(".oAuthLink").livequery(function () {
            $(this).oAuthLink({ ajax: $(this).hasClass("ajax") });
        });

        $(".facebookConnectButton").livequery(function () {
            var link = $(this);
            link.facebookAuthorizeLink({
                ajax: link.hasClass("ajax"),
                container: $("#MessageAccounts"),
                autoSubmitForm: link.hasClass("autoSubmitForm"),
                callback: link.attr("callback") === "undefined" ? null : eval(link.attr("callback"))
            });
        });

        $(".yelpConnectButton").livequery(function () {
            $(this).yelpAuthorizeLink({
                ajax: $(this).hasClass("ajax"),
                container: $("#MessageAccounts")
            });
        });

        $(".foursquareConnectButton").livequery(function () {
            $(this).fourSquareAuthorizeLink({
                ajax: $(this).hasClass("ajax"),
                container: $("#MessageAccounts")
            });
        });

        $(".citysearchConnectButton").livequery(function () {
            $(this).citySearchAuthorizeLink({
                ajax: $(this).hasClass("ajax"),
                container: $("#MessageAccounts")
            });
        });

        $(".linkedinConnectButton").livequery(function () {
            $(this).linkedInAuthorizeLink({
                ajax: $(this).hasClass("ajax"),
                container: $("#MessageAccounts")
            });
        });
    },

    getAccountsCount: function () {
        var count = 0;
        $('form').find("li").each(function (index, el) {
            var val = $(el).find(":input").val();
            count += val == "" || !val ? 0 : 1;
        });
        return count;
    },

    AddAccount: function (link, name, userId, requestToken, verifier) {

        var link = $(link).first();
        var fieldset = link.parents("fieldset").first();
        var verifierEl = fieldset.find("[name*='Verifier']");
        var displayNameEl = fieldset.find("[name*='DisplayName']");
        var requestTokenEl = fieldset.find("[name*='RequestToken']");
        var userIdEl = fieldset.find("[name*='UserId']");

        displayNameEl.val(name);
        verifierEl.val(verifier);
        requestTokenEl.val(requestToken);
        userIdEl.val(userId);

        NSM.SocialMediaAuthorizer.blockAccountAdded(link);
    },

    AddAccountViaAjax: function (link, data, callback) {

        var controller = link.attr("class").split("ConnectButton")[0];
        var action = NSM.SocialMediaAuthorizer.ajaxConnectAction;
        var url = controller + "/" + action;

        $.post(url, data, callback);
    },

    blockAccountAdded: function (el) {
        if (el == null) return;
        var blockEl = $("<div />").addClass("account_added").text("Account Added");
        el.unbind("click")
          .block({
              message: blockEl,
              css: { backgroundColor: 'inherit', border: 'none', textAlign: 'center', left: '50px' },
              overlayCSS: { backgroundColor: 'white', opacity: 0.7 },
              centerX: false,
              centerY: true
          });
    }

};
