﻿
Type.registerNamespace("PlainJoeStudios.MediaSocial.WebServer.Controls");PlainJoeStudios.MediaSocial.WebServer.Controls.FacebookFriendsList=function(vars){this._ctor(vars);};PlainJoeStudios.MediaSocial.WebServer.Controls.FacebookFriendsList.prototype={UserStatusExcerptLengthMax:100,UserListMaxResults:80,FROZEN_PLACARDS_TRANSPARENCY:0.33,_Mode:null,_EnablePersonalMessageCheck:null,_iEventId:null,_jqUserListPanel:null,_tUserPlacard:null,_iNumPlacardsOpen:0,_bStopUpdates:false,_ctor:function(vars){var This=this;this._Mode=vars["Mode"];this._EnablePersonalMessageCheck=vars["EnablePersonalMessageCheck"];this._iEventId=vars["EventId"];if(typeof(vars["UserListPanelId"])==="string"){this._jqUserListPanel=$("#"+vars["UserListPanelId"]);}
if(this._jqUserListPanel==null||this._jqUserListPanel.length==0){throw new Error("Cannot find user list panel.");}
this._tUserPlacard=$tau("ms","FacebookFriendsList_UserPlacard");var oBus=$PJP.GetControl("ChannelBus");oBus.attachListener(oBus.LISTENER_TYPE_WHOS_ONLINE,function(oData){This._processUserListPacket(oData);});if(this._Mode==="FriendsOnly"){oBus.attachListener(oBus.LISTENER_TYPE_CHAT_PRIVATE,function(oData){This._processPrivateChatAlerts(oData);});}},_freezeOrUnfreezeList:function(){var This=this;if(this._iNumPlacardsOpen===0){this._bStopUpdates=false;var jqPlacards=this._jqUserListPanel.find(".tUserPlacard");jqPlacards.each(function(i,e){var tiPlacard=$(e).data("tau");tiPlacard.root.fadeTo("fast",1,function(){jqPlacards.css("filter",null);});});}
else{this._bStopUpdates=true;this._jqUserListPanel.find(".tUserPlacard").each(function(i,e){var tiPlacard=$(e).data("tau");if(!tiPlacard.data("IsExpanded")){tiPlacard.root.fadeTo("fast",This.FROZEN_PLACARDS_TRANSPARENCY);}
else{tiPlacard.root.fadeTo("fast",1);}});}},_processUserListPacket:function(oPacket){var This=this;if(this._bStopUpdates){return;}
var arr_oUsersOnline;if(oPacket!=null&&oPacket.FacebookUsers!=null){arr_oUsersOnline=oPacket.FacebookUsers||null;}
else{arr_oUsersOnline=null;}
var oFbUser=g_Facebook.GetUser();var strCurrentFbUserId=g_Facebook.GetUserId();var arr_iFbUserFriends=g_Facebook.GetUserFriends();if(!(arr_oUsersOnline!=null&&(this._Mode!=="FriendsOnly"||(this._Mode=="FriendsOnly"&&arr_iFbUserFriends!=null)))){return;}
var iUsersShownInList=0;var hash_oUsersOnline={};for(var i=arr_oUsersOnline.length-1;i>=0;--i){var oTmp=arr_oUsersOnline[i];hash_oUsersOnline[oTmp.UserId.toString()]=oTmp;}
if(arr_oUsersOnline!==null){var jqExistingUsers=this._jqUserListPanel.find(".tUserPlacard");var iNumExistingUsers=jqExistingUsers.length;for(var i=0;i<iNumExistingUsers;++i){var tiExistingUser=jqExistingUsers.eq(i).data("tau");var strExistingFbUserId=tiExistingUser.data("FbUserId").toString();var oUserFromPacket=hash_oUsersOnline[strExistingFbUserId]||null;if(oUserFromPacket===null){tiExistingUser.root.remove();if(tiExistingUser.data("IsExpanded")){This._iNumPlacardsOpen--;}
continue;}
else{tiExistingUser.namedElements.TxtStatus.text(oUserFromPacket.UserStatus||"");tiExistingUser.namedElements.TxtLocation.text(oUserFromPacket.GeographicalLocation||"");++iUsersShownInList;hash_oUsersOnline[strExistingFbUserId]={__type:"msffltmp",updated:true,tau:tiExistingUser};var oDataSource={UserId:oUserFromPacket["UserId"],UserName:oUserFromPacket["Name"]||"Facebook User",UserLocation:oUserFromPacket["GeographicalLocation"]||"",UserStatus:oUserFromPacket["UserStatus"]||"",UserPicUrl:"https://graph.facebook.com/"+oUserFromPacket["UserId"]+"/picture",NumViewingsAtChannel:oUserFromPacket["NumViewingsAtChannel"]||0,IsModeratorAtChannel:oUserFromPacket["IsModeratorAtChannel"]};if(oDataSource.NumViewingsAtChannel<1){oDataSource.NumViewingsAtChannel=1;}
tiExistingUser.dataSource(oDataSource);if(oDataSource.IsModeratorAtChannel){tiExistingUser.root.addClass("user_moderator");}
else{tiExistingUser.root.removeClass("user_moderator");}
if(oFbUser!==null||$PJP.GetUser()!==null){tiExistingUser.data("CanExpand",true);}
else{tiExistingUser.data("CanExpand",false);}
var bShowChatLink=false;if(oFbUser!==null&&oDataSource.UserId!=strCurrentFbUserId){bShowChatLink=true;}
if(!bShowChatLink){tiExistingUser.namedElements.btnOpenChat.hide();}
else{tiExistingUser.namedElements.btnOpenChat.show();}
if($PJP.GetUser()===null){tiExistingUser.namedElements.divAdminOptions.remove();}
else{tiExistingUser.namedElements.chkModerator.attr("checked",oDataSource.IsModeratorAtChannel?"checked":"");}}}}
var jqPreviousRow=null;for(var i=0;i<arr_oUsersOnline.length;++i){var tmpResult=arr_oUsersOnline[i];var strFbUserId=tmpResult["UserId"].toString();if(hash_oUsersOnline[strFbUserId].__type==="msffltmp"){jqPreviousRow=hash_oUsersOnline[strFbUserId].tau.root;continue;}
if(this._Mode==="FriendsOnly"){var bFound=false;for(var j=0;j<arr_iFbUserFriends.length;++j){if(arr_iFbUserFriends[j]==strFbUserId){bFound=true;break;}}
if(!bFound){continue;}}
if(tmpResult["Name"]==null||tmpResult["Name"]==="Facebook User"){continue;}
var oDataSource={UserId:tmpResult["UserId"],UserName:tmpResult["Name"]||"Facebook User",UserLocation:tmpResult["GeographicalLocation"]||"",UserStatus:tmpResult["UserStatus"]||"",UserPicUrl:"https://graph.facebook.com/"+tmpResult["UserId"]+"/picture",NumViewingsAtChannel:tmpResult["NumViewingsAtChannel"]||0,IsModeratorAtChannel:tmpResult["IsModeratorAtChannel"]};if(oDataSource.NumViewingsAtChannel<1){oDataSource.NumViewingsAtChannel=1;}
var tiUserPlacard=this._tUserPlacard.Generate("FbUser_"+this._Mode+"_"+oDataSource.UserId,oDataSource,this);if(jqPreviousRow===null){this._jqUserListPanel.prepend(tiUserPlacard.root);}
else{tiUserPlacard.root.insertAfter(jqPreviousRow);}
jqPreviousRow=tiUserPlacard.root;tiUserPlacard.data("FbUserId",strFbUserId);tiUserPlacard.root.data("tau",tiUserPlacard);if(oFbUser!==null||$PJP.GetUser()!==null){tiUserPlacard.data("CanExpand",true);tiUserPlacard.namedElements.DivExpandedPleaseLogIn.remove();}
else{tiUserPlacard.data("CanExpand",false);}
if(oDataSource.IsModeratorAtChannel){tiUserPlacard.root.addClass("user_moderator");}
else{tiUserPlacard.root.removeClass("user_moderator");}
var bShowChatLink=false;if(oFbUser!=null&&strCurrentFbUserId!=strFbUserId){bShowChatLink=true;}
if(!bShowChatLink){tiUserPlacard.namedElements.btnOpenChat.hide();}
else{tiUserPlacard.namedElements.btnOpenChat.show();}
if($PJP.GetUser()===null){tiUserPlacard.namedElements.divAdminOptions.remove();}
else{tiUserPlacard.namedElements.chkModerator.attr("checked",oDataSource.IsModeratorAtChannel?"checked":"");}
++iUsersShownInList;}
if(this._Mode!=="FriendsOnly"){var oBus=$PJP.GetControl("ChannelBus");if(arr_oUsersOnline!=null&&arr_oUsersOnline.length>20){oBus.setThrottle(oBus.LISTENER_TYPE_WHOS_ONLINE,oBus.TTL_WHOS_ONLINE*3);}
else{oBus.setThrottle(oBus.LISTENER_TYPE_WHOS_ONLINE,oBus.TTL_WHOS_ONLINE);}}
if(this._Mode!=="FriendsOnly"){$PJP.GetControl("FacebookOverview").NotifyNumFbUsersOnline(iUsersShownInList,oPacket.NumTotalViewers);}
else{$PJP.GetControl("FacebookOverview").NotifyNumFriendsOnline(iUsersShownInList);}},onPlacardClick:function(tiUserPlacard,jqElem,oEvent){var bIsExpanded=tiUserPlacard.data("IsExpanded")||false;if(!bIsExpanded&&tiUserPlacard.data("CanExpand")===false){tiUserPlacard.namedElements.DivExpandedPleaseLogIn.slideDown();tiUserPlacard.root.addClass("user_expanded");tiUserPlacard.data("IsExpanded",true);this._iNumPlacardsOpen++;}
else if(!bIsExpanded){tiUserPlacard.namedElements.DivExpanded.slideDown();tiUserPlacard.root.addClass("user_expanded");tiUserPlacard.data("IsExpanded",true);this._iNumPlacardsOpen++;}
else{if(tiUserPlacard.namedElements.DivExpanded.is(":visible")){tiUserPlacard.namedElements.DivExpanded.slideUp();}
if(tiUserPlacard.namedElements.DivExpandedPleaseLogIn.is(":visible")){tiUserPlacard.namedElements.DivExpandedPleaseLogIn.slideUp();}
tiUserPlacard.root.removeClass("user_expanded");tiUserPlacard.data("IsExpanded",false);this._iNumPlacardsOpen--;}
this._freezeOrUnfreezeList();},onNameClick:function(tiUserPlacard,jqElem,oEvent){oEvent.stopPropagation();var iFbUserId=tiUserPlacard.data("FbUserId");window.open("http://www.facebook.com/profile.php?id={{ UserId }}".replace("{{ UserId }}",iFbUserId));},onModeratorCheckClicked:function(ti,jqElem,oEvent,bIsFromSecondaryElement){oEvent.stopPropagation();if(bIsFromSecondaryElement){return;}
this.onModeratorCheckChanged(ti,jqElem,oEvent);},onModeratorCheckChanged:function(ti,jqElem,oEvent){var strFacebookUserId=ti.dataSource()["UserId"];var bSetAsModerator=ti.namedElements.chkModerator.attr("checked");PlainJoeStudios.MediaSocial.WebServer.Services.Channel.SetFacebookUserIsModerator(this._iEventId,strFacebookUserId,bSetAsModerator,function(){},function(){});oEvent.stopPropagation();},onChatClick:function(ti,jqElem,oEvent){var strFbUserId=ti.dataSource()["UserId"];var windowName="MediaSocialChat"+strFbUserId;if(WindowManager.GetWindow(windowName)==null){var openedWindow=window.open("/MediaSocial/Chat.aspx/PrivateMessage/"+strFbUserId,windowName,"width=644,height=447,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0",false);if(WindowManager.CheckForPopupBlock(openedWindow)){return;}
WindowManager.RegisterWindow(windowName,openedWindow);}
oEvent.stopPropagation();},_processPrivateChatAlerts:function(result){var This=this;if(result!=null){for(var i=0;i<result.length;++i){var windowName="MediaSocialChat"+result[i].UserId;var windowTimestamp=WindowManager.GetWindowTimestamp(windowName);if(windowTimestamp==null||windowTimestamp<result[i]["Timestamp"]){if(WindowManager.GetWindow(windowName)==null){var openedWindow=window.open("/MediaSocial/Chat.aspx/PrivateMessage/"+result[i].UserId,windowName,"width=644,height=447,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0",false);if(WindowManager.CheckForPopupBlock(openedWindow)){return;}
WindowManager.RegisterWindow(windowName,openedWindow,result[i]["Timestamp"]);}
else{WindowManager.SetWindowTimestamp(windowName,result[i]["Timestamp"]);}}}}}};
