HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/wwwroot/CMSWebParts/Chat/ChatRooms_files/ChatRooms.js
// ChatRooms webpart  object
function ChatRooms(opt) {

    // Variables
    var defaults = {
        templateListItem: "",
        groupID: -1,
        clientID: -1,
        pnlChatRoomsList: "",
        btnChatRoomsPromptSubmit: "",
        pnlChatRoomsPrompt: "",
        txtChatRoomsPromptInput: "",
        pnlChatRoomsCreatePrompt: "",
        txtChatRoomsCreateName: "",
        chkChatRoomsCreateIsPrivate: "",
        txtChatRoomsCreatePassword: "",
        chkChatRoomsCreateAllowAnonym: "",
        btnChatRoomsCreatePromptSubmit: "",
        btnChatRoomsCreateRoom: "",
        lblChatRoomsCreateError: "",
        loadingDiv: "",
        txtChatRoomsCreateDescription: "",
        btnChatRoomsPromptClose: "",
        btnChatRoomsCreatePromptClose: "",
        btnChatRoomsDeletePromptSubmit: "",
        btnChatRoomsDeletePromptClose: "",
        pnlChatRoomsDeletePrompt: "",
        btnChatRoomsAbandonPromptSubmit: "",
        btnChatRoomsAbandonPromptClose: "",
        pnlChatRoomsAbandonPrompt: "",
        pnlChatRoomsEditPrompt: "",
        txtChatRoomsEditName: "",
        txtChatRoomsEditDescription: "",
        chkChatRoomsEditIsPrivate: "",
        txtChatRoomsEditPassword: "",
        chkChatRoomsEditAllowAnonym: "",
        btnChatRoomsEditPromptSubmit: "",
        btnChatRoomsEditPromptClose: "",
        txtChatRoomsEditPasswordConfirm: "",
        lblChatRoomsEditError: "",
        passwordTxt: "",
        passwordNewTxt: "",
        lblChatRoomsEditPasswordNew: "",
        txtChatRoomsCreatePasswordConfirm: "",
        pnlChatRoomsEditError: "",
        chkChatRoomsHasPassword: "",
        pnlChatRoomsCreateError: "",
        pagingItems: -1,
        groupPagesBy: -1,
        pagingEnabled: false,
        pnlFilterClientID: "",
        btnFilter: "",
        txtFilter: "",
        filterEnabled: false,
        pnlPagingClientID: "",
        pnlInfo: "",
        resStrNoFound: "",
        resStrResults: "",
        filterCount: -1,
        passwordPromptError: "",
        redirectURL: "",
        redirectGroup: "",
        envelopeID: "",
        pnlErrorCreate: "",
        pnlErrorEdit: "",
        enablePopup: true,
        guid: "",
        passwordNotMatchStr: ""
    };

    this.Type = "ChatRooms";
    this.GroupManager = null;
    this.Options = $cmsj.extend(defaults, opt);
    this.RoomToDelete = -1;
    this.RoomToEdit = -1;
    this.RoomToAbandon = -1;

    var that = this,
        content = $cmsj("#" + that.Options.pnlChatRoomsList),
        envelope = $cmsj("#" + that.Options.envelopeID),
        loadingBackup = "",
        templateID = "ChatRoomsTemplateListItem" + that.Options.clientID,
        
        RoomPasswordTextbox = $cmsj("#" + that.Options.txtChatRoomsPromptInput),
        RoomPasswordError = $cmsj("#" + that.Options.passwordPromptError),
        RoomPasswordPrompt = $cmsj("#" + that.Options.pnlChatRoomsPrompt),

        btnCreateRoom = $cmsj("#" + that.Options.btnChatRoomsCreateRoom),
        
        CreateRoomControls = {
            NameTxt: $cmsj("#" + that.Options.txtChatRoomsCreateName),
            IsPrivateChk: $cmsj("#" + that.Options.chkChatRoomsCreateIsPrivate),
            PasswordTxt: $cmsj("#" + that.Options.txtChatRoomsCreatePassword),
            PasswordConfirmTxt: $cmsj("#" + that.Options.txtChatRoomsCreatePasswordConfirm),
            AllowAnonymChk: $cmsj("#" + that.Options.chkChatRoomsCreateAllowAnonym),
            DescriptionTxt: $cmsj("#" + that.Options.txtChatRoomsCreateDescription),
            ErrorPnl: $cmsj("#" + that.Options.pnlChatRoomsCreateError),
            ErrorLbl: $cmsj("#" + that.Options.lblChatRoomsCreateError),
            PromptPnl: $cmsj("#" + that.Options.pnlChatRoomsCreatePrompt),
            btnSubmit: $cmsj("#" + that.Options.btnChatRoomsCreatePromptSubmit),
            btnClose: $cmsj("#" + that.Options.btnChatRoomsCreatePromptClose)
        },
        
        EditRoomControls = {
            NameTxt: $cmsj("#" + that.Options.txtChatRoomsEditName),
            IsPrivateChk: $cmsj("#" + that.Options.chkChatRoomsEditIsPrivate),
            HasPassword: $cmsj("#" + that.Options.chkChatRoomsHasPassword),
            PasswordTxt: $cmsj("#" + that.Options.txtChatRoomsEditPassword),
            PasswordConfirmTxt: $cmsj("#" + that.Options.txtChatRoomsEditPasswordConfirm),
            AllowAnonymChk: $cmsj("#" + that.Options.chkChatRoomsEditAllowAnonym),
            DescriptionTxt: $cmsj("#" + that.Options.txtChatRoomsEditDescription),
            ErrorPnl: $cmsj("#" + that.Options.pnlChatRoomsEditError),
            ErrorLbl: $cmsj("#" + that.Options.lblChatRoomsEditError),
            PromptPnl: $cmsj("#" + that.Options.pnlChatRoomsEditPrompt),
            btnSubmit: $cmsj("#" + that.Options.btnChatRoomsEditPromptSubmit),
            btnClose: $cmsj("#" + that.Options.btnChatRoomsEditPromptClose),
            lblPassword: $cmsj("#" + that.Options.lblChatRoomsEditPasswordNew)
        },

        PasswordPrompt = $cmsj("#" + that.Options.pnlChatRoomsPrompt),
        PasswordInput = $cmsj("#" + that.Options.txtChatRoomsPromptInput),
        DeleteRoomPrompt = $cmsj("#" + that.Options.pnlChatRoomsDeletePrompt),
        AbandonRoomPrompt = $cmsj("#" + that.Options.pnlChatRoomsAbandonPrompt)
        ;


    this.Clear = function() {
        content.empty();
        envelope.hide();
        that.ListPaging.Clear();
    }


    this.ShowLoading = function(show) {
        if (show == true) {
            loadingBackup = content.html();
            content.html(that.Options.loadingDiv);
            envelope.show();
        }
        else {
            content.html(loadingBackup);
        }
    };


    // Process response
    this.ShowRooms = function(rooms) {
        envelope.show();
        that.ListPaging.Render(rooms);
    };


    this.OpenDeleteRoomPrompt = function(roomID) {
        that.RoomToDelete = roomID;
        ChatManager.DialogsHelper.DisplayDialog(DeleteRoomPrompt);   
    };


    this.OpenAbandonRoomPrompt = function(roomID) {
        that.RoomToAbandon = roomID;
        ChatManager.DialogsHelper.DisplayDialog(AbandonRoomPrompt);   
    };


    this.OpenEditRoomPrompt = function(roomID) {
        var roomObj = ChatManager.ChatRoomsList[roomID];
        if (roomObj == null) {
            return;
        }

        that.RoomToEdit = roomID;

        // Set the values
        if (roomObj.HasPassword) {
            EditRoomControls.lblPassword.text(that.Options.passwordNewTxt);
            EditRoomControls.HasPassword.attr("checked", "checked");
        }
        else {
            EditRoomControls.lblPassword.text(that.Options.passwordTxt);
            EditRoomControls.HasPassword.removeAttr("checked");
        }

        EditRoomControls.NameTxt.val(roomObj.DisplayName);
        EditRoomControls.DescriptionTxt.val(roomObj.Description);

        if (roomObj.IsPrivate) {
            EditRoomControls.IsPrivateChk.attr("checked", "checked");
        }
        else {
            EditRoomControls.IsPrivateChk.removeAttr("checked");
        }

        if (roomObj.AllowAnonym) {
            EditRoomControls.AllowAnonymChk.attr("checked", "checked");
        }
        else {
            EditRoomControls.AllowAnonymChk.removeAttr("checked");
        }

        EditRoomControls.PasswordTxt.val("");
        EditRoomControls.PasswordConfirmTxt.val("");

        EditRoomControls.ErrorPnl.hide();
        EditRoomControls.ErrorLbl.empty();

        ChatManager.DialogsHelper.DisplayDialog(EditRoomControls.PromptPnl);
    };


    function RenderRooms(rooms) {
        content.empty();

        // Add links (onclick event handlers) to all items in list
        for (var i = 0; i < rooms.length; i = i + 1) {
            var room = rooms[i];
            var redirectLocation = "";
            if (that.Options.redirectURL.length > 0) {
                redirectLocation = that.Options.redirectURL + "?roomid=" + room.ChatRoomID;
                if (that.Options.redirectGroup.length > 0) {
                    redirectLocation += "&groupname=" + that.Options.redirectGroup;
                }
            }

            // Check user is in this room
            room.IsCurrentRoom = (room.ChatRoomID == that.GroupManager.RoomID) ? true : false;
            room.AllowAnonymous = room.AllowAnonym;
            var iconsCount = 0;

            // Check if the room is private -> if true add option to abandon room
            if (room.IsPrivate) {
                room.Abandon = "ChatManager.OpenAbandonRoomPrompt(\"" + that.Options.groupID + "\", '" + that.Options.clientID + "', " + room.ChatRoomID + "); return false;";
                iconsCount++;
            }
            else {
                delete room.Abandon;
            }

            // Check if user has permissions to edit and delete rooms
            if (ChatManager.Login.UserPermissions.ManageRooms || room.CanManage) {
                room.Delete = "ChatManager.OpenDeleteRoomPrompt(\"" + that.Options.groupID + "\", '" + that.Options.clientID + "', " + room.ChatRoomID + "); return false;";
                room.Edit = "ChatManager.OpenEditRoomPrompt(\"" + that.Options.groupID + "\", '" + that.Options.clientID + "', " + room.ChatRoomID + "); return false;";
                iconsCount += 2;
            }
            else {
                delete room.Delete;
                delete room.Edit;
            }

            var roomTemplate = $cmsj.tmpl(templateID, room);

            var roomLink = roomTemplate.find("a.JoinRoom");
            roomLink.mousedown(generateFunction(room.ChatRoomID, room.HasPassword, redirectLocation));

            var roomTitle = roomTemplate.find("div.ChatRoomTitle");
            roomTitle.css("margin-right", (16 * iconsCount) + "px");

            if (redirectLocation.length > 0) {
                roomLink.attr("href", redirectLocation);
            }

            if (that.Options.enablePopup && !$cmsj.browser.opera) {
                roomLink.attr("title", that.Options.resStrTooltipPopup);
            }



            roomTemplate.appendTo(content);
        }

        // Check user permitions for creating rooms
        if (ChatManager.Login.UserPermissions.ManageRooms || ChatManager.Login.UserPermissions.CreateRooms) {
            btnCreateRoom.show();
        }
        else {
            btnCreateRoom.hide();
        }
    };


    function generateFunction(id, hasPassword, redirectLocation) {
        var redirectFn = null;
        if (redirectLocation.length > 0) {
            redirectFn = function () {
                self.window.location = redirectLocation;
            }
        }
        var joinFn = null;
        if (hasPassword == true) {
            joinFn = function () {
                OpenPasswordPrompt(id);
            };
        }
        else {
            joinFn = function () {
                ChatManager.JoinRoom(that.Options.groupID, id, null, redirectFn);
                return false;
            };
        }
        return function (event) {
            switch (event.which) {
                // Left mouse button                  
                case 1:
                    joinFn();
                    break;
                // Midle mouse button  
                case 2:
                    if ((that.Options.enablePopup == true) && (redirectLocation.length == 0)) {
                        if (confirm(ChatManager.Settings.PopupWindowConfirmation) == true) {
                            ChatManager.OpenChatWindow({ roomID: id, url: ChatManager.Settings.PopupWindowURL, GUID: that.Options.guid });
                        }
                        else {
	                        joinFn();
                            break;
                        }
                    }
                    else if ((redirectLocation.length > 0) && hasPassword) {
                        joinFn();
                    }
                    break;
            }
            return false;
        };
    }


    function OpenPasswordPrompt(id) {
        ChatManager.ChatRoomsClickedRoom = id;
        ChatManager.ChatRoomsGroupID = that.Options.groupID;
        RoomPasswordTextbox.val("");
        RoomPasswordError.empty();
        ChatManager.DialogsHelper.DisplayDialog(RoomPasswordPrompt);
        RoomPasswordTextbox.focus();
    }


    function JoinRoomWithPassword(psw) {
        ChatManager.JoinRoom(ChatManager.ChatRoomsGroupID, ChatManager.ChatRoomsClickedRoom, psw, function() {
            if (that.Options.redirectURL.length > 0) {
                var redirectLocation = that.Options.redirectURL + "?roomid=" + ChatManager.ChatRoomsClickedRoom;
                if (that.Options.redirectGroup.length > 0) {
                    redirectLocation += "&groupname=" + that.Options.redirectGroup;
                }
                self.window.location = redirectLocation;
            }
            ChatManager.DialogsHelper.CloseDialog(RoomPasswordPrompt);
        }, function(err) {
            RoomPasswordError.html(err);
        });
    }


    function InicializeCreateEditRoomPrompt(edit) {

        var controls = edit ? EditRoomControls : CreateRoomControls;

        // Define overlay 
        ChatManager.DialogsHelper.SetDialogOverlay(controls.PromptPnl);
        ChatManager.DialogsHelper.HandleTextAreaMaxLength(controls.DescriptionTxt, 500);

        if (!edit) {
            // Set event handling for opening create room prompt - clear dialog
            btnCreateRoom.click(function() {
                controls.ErrorPnl.hide();
                controls.ErrorLbl.empty();
                controls.NameTxt.val("");
                controls.DescriptionTxt.val("");
                controls.AllowAnonymChk.attr("checked", true);
                controls.IsPrivateChk.removeAttr("checked");
                controls.PasswordTxt.val("");
                controls.PasswordConfirmTxt.val("");
                ChatManager.DialogsHelper.DisplayDialog(controls.PromptPnl);
                return false;
            });
        }

        // Set event handling for submit button
        controls.btnSubmit.click(function() {
            // Get user input
            var name = controls.NameTxt.val().trim();
            var isPrivate = (controls.IsPrivateChk.attr("checked") == "checked") ? true : false;
            var password = controls.PasswordTxt.val();
            var passwordConfirm = controls.PasswordConfirmTxt.val();
            var allowAnonym = (controls.AllowAnonymChk.attr("checked") == "checked") ? true : false;
            var description = controls.DescriptionTxt.val();
            var hasPassword = (!edit || controls.HasPassword.attr("checked") == "checked") ? true : false; ;

            if (hasPassword && (password != passwordConfirm)) {
                controls.ErrorLbl.text(that.Options.passwordNotMatchStr);
                controls.ErrorPnl.show();
                return false;
            }

            var fnok = function() {
                if (edit) {
                    that.RoomToEdit = -1;
                }
                ChatManager.DialogsHelper.CloseDialog(controls.PromptPnl);
            }

            var fnerr = function(err) {
                controls.ErrorLbl.html(err);
                controls.ErrorPnl.show();
            }

            if (edit) {
                ChatManager.EditRoom(that.RoomToEdit, name, isPrivate, hasPassword, password, allowAnonym, description, fnok, fnerr);
            }
            else {
                ChatManager.CreateRoom(name, isPrivate, password, allowAnonym, description, fnok, fnerr);
            }
            return false;
        });

        // Set event handling for closing the prompt
        controls.btnClose.click(function() {
            ChatManager.DialogsHelper.CloseDialog(controls.PromptPnl);
            if (edit) {
                that.RoomToEdit = -1;
            }
            return false;
        }); 
    }



    function InicializePasswordPrompt() {

        // Define overlay for entering password
        ChatManager.DialogsHelper.SetDialogOverlay(PasswordPrompt);

        // Set event handling for entering password
        $cmsj("#" + that.Options.btnChatRoomsPromptSubmit).click(function() {
            JoinRoomWithPassword(PasswordInput.val());
            return false;
        });

        // Set event handling for closing password prompt
        $cmsj("#" + that.Options.btnChatRoomsPromptClose).click(function() {
            ChatManager.DialogsHelper.CloseDialog(PasswordPrompt);
            return false;
        });

        // Bind event handle for entering password -> allow pressing ENTER
        PasswordInput.bind("keydown", function(evt) {
            var e = window.event || evt;
            var key = e.keyCode;

            if (key == 13) {
                if (e.preventDefault) e.preventDefault();
                if (e.stopPropagation) e.stopPropagation();
                e.returnValue = false;

                JoinRoomWithPassword(PasswordInput.val());
                return false;
            }
        });
    }


    function InicializeDeleteAbandonPrompts() {
    
        // Delete room prompt
        ChatManager.DialogsHelper.SetDialogOverlay(DeleteRoomPrompt);
       
        // Set event handling for deleting rooms
        $cmsj("#" + that.Options.btnChatRoomsDeletePromptSubmit).click(function() {
            ChatManager.DialogsHelper.CloseDialog(DeleteRoomPrompt);
            ChatManager.DeleteRoom(that.RoomToDelete);
            that.RoomToDelete = -1;
            return false;
        });

        // Set event handling for closing delete room prompt
        $cmsj("#" + that.Options.btnChatRoomsDeletePromptClose).click(function() {
            ChatManager.DialogsHelper.CloseDialog(DeleteRoomPrompt);
            that.RoomToDelete = -1;
            return false;
        });
        
        // Abandon room prompt
        ChatManager.DialogsHelper.SetDialogOverlay(AbandonRoomPrompt);

        // Set event handling for abandon rooms
        $cmsj("#" + that.Options.btnChatRoomsAbandonPromptSubmit).click(function() {
            ChatManager.LeaveRoomPermanently(that.RoomToAbandon);
            that.RoomToAbandon = -1;
            ChatManager.DialogsHelper.CloseDialog(AbandonRoomPrompt);
            return false;
        });

        // Set event handling for closing abandon room prompt
        $cmsj("#" + that.Options.btnChatRoomsAbandonPromptClose).click(function() {
            ChatManager.DialogsHelper.CloseDialog(AbandonRoomPrompt);
            that.RoomToAbandon = -1;
            return false;
        });
    }


    function Inicialize() {

        // Build jQuery templates
        $cmsj.template(templateID, that.Options.templateListItem);

        // Inicialize create room prompt
        InicializeCreateEditRoomPrompt(false);

        // Inicialize edit room prompt
        InicializeCreateEditRoomPrompt(true);
        
        InicializeDeleteAbandonPrompts();
        InicializePasswordPrompt();
    };


    this.ListPaging = new ListPaging(
        {
            groupID: that.Options.groupID,
            clientID: that.Options.clientID,
            wpType: that.Type,
            functionRenderList: RenderRooms,
            filterPanelID: that.Options.pnlFilterClientID,
            filterPanelInfoID: that.Options.pnlInfo,
            filterNotFoundStr: that.Options.resStrNoFound,
            filterFoundStr: that.Options.resStrResults,
            filterEnabled: that.Options.filterEnabled,
            filterShowItems: that.Options.filterCount,
            filterTextboxID: that.Options.txtFilter,
            filterButtonID: that.Options.btnFilter,
            filterProperty: "DisplayName",
            pagingEnabled: that.Options.pagingEnabled,
            pagingItems: that.Options.pagingItems,
            groupPagesBy: that.Options.groupPagesBy,
            pagingContentID: that.Options.pnlPagingClientID
        });


    Inicialize();
    that.Clear();
}


// Inits chat rooms web part functionality
function InitChatRooms(opt) {
    InicializeChatManager();
    ChatManager.RegisterWebpart(new ChatRooms(opt));
}