function gigyaWrapper(user) {
    this.user = user;

    this.fullname = function() {
        return this.user.name();
    };
  
    this.isConnected = true;
    this.thumbnailURL = "";
    this.nickname = this.user.name();
};

$(function() {
    $(document).bind(REGISTER_SUCCESS, function(event) {
        jQuery.fn.colorbox.close();
        renderHeaderUI({user: new gigyaWrapper(polopoly.user)});
    });

    $(document).bind(LOGIN_SUCCESS,
    function(event) {
        jQuery.fn.colorbox.close();
        renderHeaderUI({user: new gigyaWrapper(polopoly.user)});
    });

    $(document).bind(GIGYA_LOGIN_SUCCESS,
    function(event) {
        jQuery.fn.colorbox.close();
        gigya.services.socialize.getUserInfo(gigyaConf,{callback:renderHeaderUI});
    });


    if (!polopoly.user.isLoggedIn()) {
        $(".open_session").colorbox({
            inline: true,
            href: "#member_login_box",
            close: "close",
            height: 350
        });

        gigya.services.socialize.addEventHandlers(gigyaConf, {
            onLogin: gigyaLoginHandler
        });
        $(".new_user").colorbox({
            inline: true,
            href: "#member_signup_box",
            close: "close",
            width: 850,
            height: 700
        });
        $("#logInfo").show();
    }
    else {
        gigya.services.socialize.getUserInfo(gigyaConf, {
            callback: renderHeaderUI
        });
    }
});

function gigyaLoginHandler(eventOBJ) {
    var data = {
        UID: eventOBJ.UID,
        UIDSignature: eventOBJ.UIDSignature,
        signatureTimestamp: eventOBJ.signatureTimestamp,
        nickname: eventOBJ.user.nickname,
        email: eventOBJ.user.email,
        firstName: eventOBJ.user.firstName,
        lastName: eventOBJ.user.lastName,
        isSiteUID: eventOBJ.user.isSiteUID,
        siteId: getSiteId()
    };


    jQuery.get("/membership/gigya-login", data,
        function(data, textStatus, jqXHR) {
            $(document).trigger(GIGYA_LOGIN_SUCCESS, []);
        }
    );

}

function renderHeaderUI(res) {

    var doc = document;
    var spanName = $(doc.createElement("span"));
    var loginInfo = $("#logInfo");
    loginInfo.html("");

    var logoutLink = $(doc.createElement("a"));
    logoutLink.attr("href", "/membership/logout?login_site=$m.context.site.top.bean.contentId.contentId.contentIdString");
    logoutLink.addClass("logout");
    logoutLink.append("Quitter");


    if (res.user != null && res.user.isConnected) {

        var div = $(doc.createElement("div"));
        div.addClass("loginImages");

        var imgProvider = $(doc.createElement("img"));
        imgProvider.attr("src", "http://socialize.gigya.com/gs/i/comments/providers/" + res.user.loginProvider + "User_14x14.gif");
        imgProvider.addClass("loginProvider");

        var imgThumbnail = $(doc.createElement("img"));

        var thumbnailSrc = "http://cdn.gigya.com/site/images/bsAPI/Placeholder.gif";
        if (res.user.thumbnailURL.length > 0) {
            thumbnailSrc = res.user.thumbnailURL;
        }
        imgThumbnail.addClass("loginThumbnail");

        imgThumbnail.attr("src", thumbnailSrc);
        spanName.append(res.user.nickname);

        div.append(imgProvider).append(imgThumbnail);
        loginInfo.append(div);
    }
    else {
        //the user has only an account on our site
        spanName.append(polopoly.user.name());
    }
    spanName.addClass("loginName");

    loginInfo.append(spanName).append(logoutLink);
    loginInfo.show();
}

