var FT = {
	ShortFacebook          : {name : "SHORT_FACEBOOK",	        path : "#SHORT_FACEBOOK_template"},
	FacebookPopup          : {name : "FACEBOOK_POPUP",	        path : "#FACEBOOK_POPUP_template"}
};

var wFacebook = {
    api_key: "9d62860584ba3de12449ea1920102daa",
    channel_path: "http://common" + sEnvironment + ".nana10.co.il/PersonalBar/Widget/Facebook/xd_receiver.htm",
    api: null,
    hasStatusPermission: 0,
    hasReadStreamPermission: 0,
    wContainer: null,
    uid: null,
    MustRequirePermissions: false,
    data: {},

    RequirePermissions: function() {

        wFacebook.api.users_hasAppPermission("status_update", function(hasstatusupdate) {
            wFacebook.api.users_hasAppPermission("read_stream", function(hasreadstream) {
                if (!hasstatusupdate || !hasreadstream) {
                    FB.Connect.showPermissionDialog("status_update,read_stream", function(prm) {
                        // User didn't allowed required permissions
                        if (prm.indexOf("read_stream") < 1 || prm.indexOf("status_update") < 1) {
                            wFacebook.ShowAllowPlaceholder();
                        }
                        NanaFB.ifConnected(wFacebook.OnUserConnected, wFacebook.OnUserDisconnected);
                        //wFacebook.OnUserConnected(wFacebook.uid);
                    });
                }
            });
        });
    },


    OnUserConnected: function(uid) {
        wFacebook.uid = uid;
        wFacebook.api = FB.Facebook.apiClient;
        wFacebook.api.users_hasAppPermission("status_update", function(hasstatusupdate) {
            wFacebook.api.users_hasAppPermission("read_stream", function(hasreadstream) {
                if (!hasstatusupdate || !hasreadstream) {
                    /*FB.Connect.showPermissionDialog("status_update,read_stream", function(prm) {
                    if (prm.indexOf("read_stream") < 0) return; // User didn't allowed required permissions
                    wFacebook.OnUserConnected(uid);
                    });*/

                    if (hasstatusupdate) wFacebook.hasStatusPermission = 1;
                    if (hasreadstream) wFacebook.hasReadStreamPermission = 1;

                    if (!hasstatusupdate || !hasreadstream) {
                        if (wFacebook.MustRequirePermissions) {
                            wFacebook.MustRequirePermissions = false;
                            wFacebook.RequirePermissions();
                        }
                        else {
                            wFacebook.ShowAllowPlaceholder();
                        }
                    }
                    else {
                        wFacebook.loadData("parent");
                    }
                }
                else {
                    wFacebook.hasStatusPermission = 1;
                    wFacebook.loadData("parent");
                }
            });
        });

        /*
        wFacebook.api = FB.Facebook.apiClient;
        wFacebook.api.users_hasAppPermission("status_update", function(result) {
        if (result !== 0) {
        wFacebook.hasStatusPermission = 1;
        }
        });
        wFacebook.loadData("parent");
        */

    },

    OnUserDisconnected: function() {
        wFacebook.ShowConnectPlaceholder();
    },


    ShowConnectPlaceholder: function() {
        //$(".divFriends", wFacebook.wContainer).hide();
        $(".divLoading", wFacebook.wContainer).hide();
        $(".divAllow", wFacebook.wContainer).hide();
        $(".divMain", wFacebook.wContainer).hide();
        $(".divLogin", wFacebook.wContainer).show();
    },

    ShowAllowPlaceholder: function() {
        //$(".divFriends", wFacebook.wContainer).hide();
        $(".divLoading", wFacebook.wContainer).hide();
        $(".divLogin", wFacebook.wContainer).hide();
        $(".divMain", wFacebook.wContainer).hide();
        $(".divAllow", wFacebook.wContainer).show();
    },

    ShowFriendsPlaceholder: function() {
        $(".divLoading", wFacebook.wContainer).hide();
        $(".divLogin", wFacebook.wContainer).hide();
        $(".divMain", wFacebook.wContainer).show();
        $(".divAllow", wFacebook.wContainer).hide();
        //$(".divFriends", wFacebook.wContainer).show();
    },

    loadData: function(from, numFriendsToDisplay) {

        if (typeof (numFriendsToDisplay) == "undefined")
            numFriendsToDisplay = 15;

        // Get notifications
        wFacebook.api.notifications_get(function(result) {
            if (result !== null) {
                if (result.friend_requests !== null && result.friend_requests.length) {
                    req = result.friend_requests.length;
                }
                else {
                    req = 0;
                }
                wFacebook.data.unreadMessages = result.messages.unread;
                wFacebook.data.notify = req;
                wFacebook.data.unreadPokes = result.pokes.unread;

                $(".spanMsg").text(wFacebook.data.unreadMessages);
                $(".spanNotify").text(wFacebook.data.notify);
                $(".spanPoke").text(wFacebook.data.unreadPokes);
            }
        });

        // Get Friends
        var uid = null;
        var session = wFacebook.api.get_session();
        if (session !== null) {
            uid = session.uid;
        }

        var fql = "SELECT first_name,last_name,pic_square,profile_url,status.message FROM user WHERE is_blocked=0 AND status.message != \'\' AND  uid IN ( SELECT uid2 FROM friend WHERE uid1 = " + uid + " ) AND uid IN (SELECT actor_id FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=" + uid + " AND type='newsfeed') AND is_hidden = 0) ORDER BY status.time DESC LIMIT " + numFriendsToDisplay;
        //var fql = "SELECT first_name,last_name,pic_square,profile_url,status.message FROM user WHERE is_blocked=0 AND status.message != \'\' AND  uid IN ( SELECT uid2 FROM friend WHERE uid1 = " + uid + " ) ORDER BY status.time DESC LIMIT " + numFriendsToDisplay;

        if (uid !== null) {

            wFacebook.api.fql_query(fql, function(users_info) {
                wFacebook.data.users_info = users_info;

                if (from == "popup") {
                    var friendsHTML = wFacebook.buildFriendsList(numFriendsToDisplay);
                    $(".divFriends").html(friendsHTML);
                }
                else {
                    var friendsHTML = wFacebook.buildFriendsList(numFriendsToDisplay);
                    $(".divFriends").html(friendsHTML);
                    wFacebook.ShowFriendsPlaceholder();
                    /*
                    $(".divLoading", wFacebook.wContainer).hide();
                    $(".divLogin", wFacebook.wContainer).hide();
                    $(".divMain", wFacebook.wContainer).show();
                    */
                }
            });

        }

    },

    buildFriendsList: function(numFriendsToDisplay) {
        var friendsHTML = "";

        if (wFacebook.data != null && wFacebook.data.users_info != null && wFacebook.data.users_info.length > 0) {

            var SP = wFacebook.data.users_info;

            for (var i = 0; i < SP.length && i < numFriendsToDisplay; i++) {

                if (typeof (SP[i].first_name) != "undefined") {

                    if (SP[i].pic_square) {
                        iconHtml = "<img style='float:right; padding:3px 0px 0px 3px;' width=\"32\" src=\"" + SP[i].pic_square + "\" />";
                    } else {
                        iconHtml = "<img style='float:right; padding:3px 0px 0px 3px;' width=\"32\" src=\"" + NanaFB.silhouette_path + "\" />";
                    }

                    var fTitle = SP[i].status.message;

                    if (SP[i].profile_url) {
                        profileLink = "<a class=\"link\" style='display:block;' target=\"_blank\" href=\"" + SP[i].profile_url.replace("connect.", "") + "\">";
                    }
                    else {
                        profileLink = "<a class=\"link\" style='display:block;' href=\"javascript:void(0)\">";
                    }

                    profileLink += SP[i].first_name + " " +
							       SP[i].last_name +
							       "</a><span style=\"color:#000000;\">" + fTitle + "</span>"; // wFacebook.data.users_info[i].status.message "הסטארטאפ השקוף :-) כמקור השראה http://www.uex.co.il/posts/blogstestdgdgdgdfgdgdfgdfgdf"

                    friendsHTML += "<div style='border-bottom:1px solid #EBEBEB; padding:2px 2px 2px 0px; min-height:38px;'>" + iconHtml + profileLink + "</div>";
                }
            }

        }

        return friendsHTML;
    },

    setStatus_OnFocus: function(obj) {

        if (wFacebook.hasStatusPermission === 0) {

            wFacebook.api.users_hasAppPermission("status_update", function(result) {
                if (result !== 0) {
                    wFacebook.hasStatusPermission = 1;
                } else {
                    FB.Connect.showPermissionDialog("status_update");
                }
            });

            return;
        }

        if (obj.value == "מה אתה עושה?") {
            obj.value = "";

        }
    },

    setStatus_OnKeyPress: function(e, obj) {
        var KeyID = e.keyCode;
        if (KeyID == 13) {
            obj.disabled = true;
            wFacebook.api.users_setStatus(obj.value, false, false, function(response) {
                obj.value = "הסטטוס שלך עודכן";
                setTimeout(wFacebook.onSetStatusTimeout, 3000);
            });
        }
    },

    onSetStatusTimeout: function() {
        var obj = $(".txtNewStatus");
        obj.attr("disabled", "");
        obj.val("מה אתה עושה?");
        obj.blur();
    },

    logout_Click: function() {
        FB.Connect.logout(function(result) {
            $(".divLogin", wFacebook.wContainer).hide();
            $(".divMain", wFacebook.wContainer).hide();
        });
    },

    logout_Popup: function() {
        $.nyroModalRemove();
        FB.Connect.logout(function(result) {
            $(".divLogin", wFacebook.wContainer).hide();
            $(".divMain", wFacebook.wContainer).hide();
        });
    },

    init: function(instanceID) {
        this.wContainer = $("#moduleWrapper" + instanceID);
        FB_RequireFeatures(["Api"], function() {
            FB.Facebook.init(wFacebook.api_key, wFacebook.channel_path);
            NanaFB.ifConnected(wFacebook.OnUserConnected, wFacebook.OnUserDisconnected);
        });
    },

    friendsListInit: function() {
        var friendsHTML = "<table style='width: 123px;' cellSpacing='0' cellPadding='0'>";
        if (parent.wFacebook.data != null) {
            for (var i = 0; i < parent.wFacebook.data.users_info.length && i < 5; i++) {

                if (parent.wFacebook.data.users_info[i].pic_square) {
                    iconHtml = "<img width=\"32\" src=\"" + parent.wFacebook.data.users_info[i].pic_square + "\" />";
                } else {
                    iconHtml = "<img width=\"32\" src=\"" + NanaFB.silhouette_path + "\" />";
                }

                profileLink = "<a class=\"link\" target=\"_blank\" href=\"" + parent.wFacebook.data.users_info[i].profile_url.replace("connect.", "") + "\">" +
							    parent.wFacebook.data.users_info[i].first_name + " " +
							    parent.wFacebook.data.users_info[i].last_name +
							    "</a> <span style=\"font-size:11px;\">" + parent.wFacebook.data.users_info[i].status.message + "</span>";

                friendsHTML += "<tr><td valign=\"top\" class=\"friendsTd\">" + iconHtml + "</td><td class=\"friendsTd\" valign=\"top\"><div class=\"wFbProfText\">" + profileLink + "</div></td></tr>";
            }
        }
        friendsHTML += "</table>";

        $(".divFriendsLongList").html(friendsHTML);
    },

    onPopupEndShowContent: function() {
        wFacebook.friendsListInit();

        if (parent.wFacebook.data != null) {
            $(".spanMsg").text(parent.wFacebook.data.unreadMessages);
            $(".spanNotify").text(parent.wFacebook.data.notify);
            $(".spanPoke").text(parent.wFacebook.data.unreadPokes);
        }
    },

    facebookPopupFriends: function() {
        $.nyroModalManual({
            bgColor: "transparent",
            url: "http://common" + sEnvironment + ".nana10.co.il/PersonalBar/Widget/Facebook/FacebookPopup.aspx",
            ltr: false,
            modal: true,
            resizeable: true,
            autoSizable: true,
            width: 202,
            height: 443,
            minWidth: 0,
            minHeight: 0,
            padding: 0,
            contentLoading: "<div id='AjaxLoading'><img src='http://f" + sEnvironment + ".nau.co.il/partner48/Common/Images/PersonalBar/ajax/ajax-loader.gif'>טוען... נא המתן</div>",
            endShowContent: wFacebook.onPopupEndShowContent
        });
    }
};


