app/assets/javascripts/presence_windowManager.js in social_stream-presence-0.13.1 vs app/assets/javascripts/presence_windowManager.js in social_stream-presence-0.13.2

- old
+ new

@@ -1,543 +1,597 @@ //////////////////// -//Chat Window Manager functions +//WINDOW MANAGER MODULE //////////////////// -//////////////////// -//ChatBoxes Creation -//////////////////// -var nBox = 0; -var maxBox = 5; -var chatBoxWidth = 230; -var chatBoxHeight = 180; -var videoBoxHeight = 145; -var visibleChatBoxes = new Array(); -var offsetForFlowBox = 0; -var chatBoxSeparation = chatBoxWidth+12; +PRESENCE.WINDOW = (function(P,$,undefined){ - -//Create chatbox for new conversations -//Open chatbox for old conversations -function createChatBox(guest_slug,isGroup){ - - var guest_name = getNameFromSlug(guest_slug) - - if(isGroup){ - var chatBoxTitle = I18n.t("chat.muc.group", {group: guest_name}) - } else { - var chatBoxTitle = guest_name; - } - - //Box Variable name = getChatVariableFromSlug(guest_slug) - if (typeof window[getChatVariableFromSlug(guest_slug)] == 'undefined') { - - //Add div with id = guest_slug - $("#chat_divs").append("<div id=" + guest_slug + " name=" + guest_name + " class=chatbox ></div>") - - //Offset Management for new box - boxParams = getBoxParams(); - var offset = boxParams[0]; - var position = boxParams[1]; - - window[getChatVariableFromSlug(guest_slug)] = $("#" + guest_slug).chatbox({id: user_name, - user:{key : "value"}, - hidden: false, - offset: offset, // relative to right edge of the browser window - width: chatBoxWidth, // width of the chatbox - height: chatBoxHeight, // height of the chatbox - video: 0, //height of the videoBox - title : chatBoxTitle, - position: position, - priority: visibleChatBoxes.length+1, - groupBox: isGroup, - boxClosed: function(id) { - closeChatBox(guest_slug) - }, - - messageSent: function(id, user, msg){ - sendChatMessage(guest_slug, msg) - }}); - - visibleChatBoxes[position-1] = window[getChatVariableFromSlug(guest_slug)]; - - return true; - - } else { - - if (visibleChatBoxes.indexOf(window[getChatVariableFromSlug(guest_slug)]) == -1) { - - //Offset Management for old box - boxParams = getBoxParams(); - var offset = boxParams[0]; - var position = boxParams[1]; - - window[getChatVariableFromSlug(guest_slug)].chatbox("option", "offset", offset); - window[getChatVariableFromSlug(guest_slug)].chatbox("option", "position", position); - visibleChatBoxes[position-1] = window[getChatVariableFromSlug(guest_slug)]; - } - - window[getChatVariableFromSlug(guest_slug)].chatbox("option", "hidden", false); - window[getChatVariableFromSlug(guest_slug)].parent().toggle(true) - return false; - } -} - -function getBoxParams(){ + var init = function(){ } - var boxParams = new Array(2); + //////////////////// + //ChatBoxes Creation + //////////////////// + var nBox = 0; + var maxBox = 5; + var chatBoxWidth = 230; + var chatBoxHeight = 180; + var videoBoxHeight = 145; + var visibleChatBoxes = new Array(); + var offsetForFlowBox = 0; + var chatBoxSeparation = chatBoxWidth+12; - if (nBox==maxBox){ - //Select box to replaced - replaced = visibleChatBoxes[getBoxIndexToReplace()]; - replaced.chatbox("option", "hidden", true) - index = visibleChatBoxes.indexOf(replaced); - boxParams[0] = replaced.chatbox("option", "offset") - boxParams[1] = replaced.chatbox("option", "position") - } else { - nBox++; - boxParams[0] = (nBox-1)*(chatBoxSeparation); - - if((nBox!=1)&&(mainChatBox!=null)){ - boxParams[0] = boxParams[0] - offsetForFlowBox; - } - - boxParams[1] = nBox; - } - - return boxParams -} - -function closeChatBox(guest_slug){ - var position = getChatBoxForSlug(guest_slug).chatbox("option", "position"); - - for (i=position+1;i<visibleChatBoxes.length+1;i++){ - visibleChatBoxes[i-1].chatbox("option", "offset", visibleChatBoxes[i-1].chatbox("option", "offset") - chatBoxSeparation); - visibleChatBoxes[i-1].chatbox("option", "position", visibleChatBoxes[i-1].chatbox("option", "position") - 1 ); - } - - visibleChatBoxes.splice(position-1,1); - $("#" + guest_slug).chatbox("option", "hidden", true); - nBox--; - if(isSlugGroup(guest_slug)){ - leaveRoom(guest_slug) + //Create chatbox for new conversations + //Open chatbox for old conversations + var createChatBox = function(guest_slug,isGroup){ + + var guest_name = PRESENCE.XMPPClient.getNameFromSlug(guest_slug) + + if(isGroup){ + var chatBoxTitle = I18n.t("chat.muc.group", {group: guest_name}) + } else { + var chatBoxTitle = guest_name; + } + + //Box Variable name = getChatVariableFromSlug(guest_slug) + if (typeof window[getChatVariableFromSlug(guest_slug)] == 'undefined') { + + //Add div with id = guest_slug + $("#chat_divs").append("<div id=" + guest_slug + " name=" + guest_name + " class=chatbox ></div>") + + //Offset Management for new box + boxParams = getBoxParams(); + var offset = boxParams[0]; + var position = boxParams[1]; + + window[getChatVariableFromSlug(guest_slug)] = $("#" + guest_slug).chatbox({id: user_name, + user:{key : "value"}, + hidden: false, + offset: offset, // relative to right edge of the browser window + width: chatBoxWidth, // width of the chatbox + height: chatBoxHeight, // height of the chatbox + video: 0, //height of the videoBox + title : chatBoxTitle, + position: position, + priority: visibleChatBoxes.length+1, + groupBox: isGroup, + boxClosed: function(id) { + PRESENCE.WINDOW.closeChatBox(guest_slug) + }, + + messageSent: function(id, user, msg){ + PRESENCE.XMPPClient.sendChatMessage(guest_slug, msg) + }}); + + visibleChatBoxes[position-1] = window[getChatVariableFromSlug(guest_slug)]; + + return true; + + } else { + + if (visibleChatBoxes.indexOf(window[getChatVariableFromSlug(guest_slug)]) == -1) { + + //Offset Management for old box + boxParams = getBoxParams(); + var offset = boxParams[0]; + var position = boxParams[1]; + + window[getChatVariableFromSlug(guest_slug)].chatbox("option", "offset", offset); + window[getChatVariableFromSlug(guest_slug)].chatbox("option", "position", position); + visibleChatBoxes[position-1] = window[getChatVariableFromSlug(guest_slug)]; + } + + window[getChatVariableFromSlug(guest_slug)].chatbox("option", "hidden", false); + window[getChatVariableFromSlug(guest_slug)].parent().toggle(true) + return false; + } } -} - - -//////////////// -//Create Buddy chatBox -//////////////// -function createBuddyChatBox(guest_slug){ - return createChatBox(guest_slug,false); -} - - -/////////////////////////// -// Create Group Chat Box -/////////////////////////// - -function createGroupChatBox(group_slug,open){ - - //createChatBox(guest_slug,isGroup) - if (createChatBox(group_slug,true)){ - - var groupChatBox = getChatBoxForSlug(group_slug); - - //Modify default box - - //Delete games Tick - $(getChatBoxButtonForSlug(group_slug,"games")).remove() - - //Delete video Tick - $(getChatBoxButtonForSlug(group_slug,"video")).remove(); - - //Delete video div - $(groupChatBox.parent()).find(".ui-videobox").remove(); - - //Minimize - groupChatBox.parent().toggle(open); - - //Initial notifications - initialNotificationInGroup(group_slug,I18n.t('chat.muc.joining')) - - return true; - } else { - return false; - } -} - - -/////////////////////////// -// Create Main Chat Box -/////////////////////////// - -var mainChatBox; -var connectionBoxesForFile=5; -var maxConnectionChatBoxesFilesWithoutOverflow = 11; -var mainChatBoxWidth=150; -var mainChatBoxaddonsHeight=50; -var heightForConnectionBoxFile=30; -var mainChatBoxHeightWhileSearchContacts=260; -var mainChatBoxMinHeight=136; -var mainChatBoxMaxHeight= mainChatBoxaddonsHeight + heightForConnectionBoxFile*maxConnectionChatBoxesFilesWithoutOverflow; -var chatSlugId="SocialStream_MainChat"; - -function createMainChatBox(){ - if (mainChatBox==null){ - //createChatBox(guest_slug,isGroup) - createChatBox(chatSlugId,false) - mainChatBox = window[getChatVariableFromSlug(chatSlugId)] - - //Modify default box - - //Delete closeTick, video Tick and games tick - $(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").find(".ui-icon-closethick").remove(); - $(mainChatBox.parent().parent()).find(".ui-videobox-icon").remove(); - $(mainChatBox.parent().parent()).find(".chat-gamesthick").remove(); - - //Margin for minusthick - (mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").find(".chat-minusthick").parent().css("margin-right","5px") - //Delete nofitications div - $(mainChatBox.parent()).find(".ui-chatbox-notify").remove(); - //Delete video div - $(mainChatBox.parent()).find(".ui-videobox").remove(); - //Delete input - $(mainChatBox.parent()).find(".ui-chatbox-input").remove(); - //Background - $(mainChatBox).css("background-color",$(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").css("background-color")); - - //Set height - changeMainChatBoxHeight(getChatBoxHeightRequiredForConnectionBoxes()); - - //Set width - window[getChatVariableFromSlug(chatSlugId)].parent().parent().css( "width", mainChatBoxWidth ); - $(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").css( "width", mainChatBoxWidth-6 ); - $(mainChatBox).css( "width", mainChatBoxWidth-6 ); - - - //Adjust window offset - offsetForFlowBox = 235-mainChatBoxWidth; - - //CSS Adjusts - $("#chat_partial").css("margin-top",-3) - $("#chat_partial").css("margin-left",-3) - $(".dropdown dd ul").css("min-width",147) - $(mainChatBox).css('overflow-x','hidden') - $(mainChatBox).css('overflow-y','hidden') - - //Minimize - mainChatBox.parent().toggle(getRestoreMainChatBoxStatus()); - - //Header title - updateConnectedUsersOfMainChatBox(); - } -} - -////////////////////////// -// Main Chat Box functions -////////////////////////// - -function addContentToMainChatBox(content){ - if (mainChatBox != null) { - $(mainChatBox.parent()).find("#" + chatSlugId).html(content); - } -} - -function modifyChatPartialIfMainBox(chatPartial){ - if (mainChatBox != null) { - p = $(chatPartial) - $(p).find(".header").remove(); - $(p).find(".dropdown dd ul").css("min-width",147); - return $(p); - } - - return chatPartial; -} - -function changeMainChatBoxHeaderTitle(title){ - if (mainChatBox != null) { - $($(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").find("span")[0]).html(title); - } -} - -function changeMainChatBoxHeight(height){ - if (mainChatBox != null) { - - if(($("#chat_partial #search_chat_contact_flexselect").is(":focus"))&&(! (focusSearchContactsFlag))){ - return; - } else { - focusSearchContactsFlag=false; - } - - if(height > mainChatBoxMaxHeight){ - //overflow = true; - height = mainChatBoxMaxHeight; - $(mainChatBox).css('overflow-y','visible'); - mainChatBox.chatbox("option", "offset","5px") - mainChatBox.chatbox("option", "width", mainChatBoxWidth + 5) - } else { - $(mainChatBox).css('overflow-y','hidden'); - mainChatBox.chatbox("option", "offset","0px") - mainChatBox.chatbox("option", "width",mainChatBoxWidth) - height = Math.max(height,mainChatBoxMinHeight) - } - - window[getChatVariableFromSlug(chatSlugId)].css("height", height); - } -} - -function getChatBoxHeightRequiredForConnectionBoxes(){ - if(mainChatBox!=null){ - var desiredHeight = mainChatBoxaddonsHeight + Math.ceil(getAllConnectedSlugs().length/connectionBoxesForFile) * heightForConnectionBoxFile; - return desiredHeight; - } else { - return null; - } -} - - -//////////////////// -//Box replacement -//////////////////// - -function getBoxIndexToReplace(){ - - tmp = visibleChatBoxes[0]; - for (i=0;i<visibleChatBoxes.length;i++){ - if (visibleChatBoxes[i].chatbox("option", "priority") > tmp.chatbox("option", "priority")) { - tmp = visibleChatBoxes[i]; - } - } - - return visibleChatBoxes.indexOf(tmp); -} - -function rotatePriority(guest_slug){ - priority = $("#" + guest_slug).chatbox("option", "priority") - if(priority>1){ - for (i=0;i<visibleChatBoxes.length;i++){ - if(visibleChatBoxes[i].chatbox("option", "priority")<priority){ - visibleChatBoxes[i].chatbox("option", "priority",visibleChatBoxes[i].chatbox("option", "priority")+1); - } - } - $("#" + guest_slug).chatbox("option", "priority", 1); - } -} - - -//////////////////// -//Video Window Manager functions -//////////////////// - -function getVideoBoxForSlug(slug){ - var videoBox = $("#" + slug).parent().find("div.ui-videobox"); - if(videoBox.length == 1){ - return videoBox; - } else { - return null; + var getBoxParams = function(){ + + var boxParams = new Array(2); + + if (nBox==maxBox){ + //Select box to replaced + replaced = visibleChatBoxes[getBoxIndexToReplace()]; + replaced.chatbox("option", "hidden", true) + index = visibleChatBoxes.indexOf(replaced); + boxParams[0] = replaced.chatbox("option", "offset") + boxParams[1] = replaced.chatbox("option", "position") + } else { + nBox++; + boxParams[0] = (nBox-1)*(chatBoxSeparation); + + if((nBox!=1)&&(mainChatBox!=null)){ + boxParams[0] = boxParams[0] - offsetForFlowBox; + } + + boxParams[1] = nBox; + } + + return boxParams } -} + + var closeChatBox = function(guest_slug){ + var position = getChatBoxForSlug(guest_slug).chatbox("option", "position"); + + for (i=position+1;i<visibleChatBoxes.length+1;i++){ + visibleChatBoxes[i-1].chatbox("option", "offset", visibleChatBoxes[i-1].chatbox("option", "offset") - chatBoxSeparation); + visibleChatBoxes[i-1].chatbox("option", "position", visibleChatBoxes[i-1].chatbox("option", "position") - 1 ); + } + + visibleChatBoxes.splice(position-1,1); + $("#" + guest_slug).chatbox("option", "hidden", true); + nBox--; + + if(isSlugGroup(guest_slug)){ + PRESENCE.XMPPClient.leaveRoom(guest_slug) + } + + } + + + //////////////// + //Create Buddy chatBox + //////////////// + var createBuddyChatBox = function(guest_slug){ + return createChatBox(guest_slug,false); + } + + + /////////////////////////// + // Create Group Chat Box + /////////////////////////// + + var createGroupChatBox = function(group_slug,open){ + + //createChatBox(guest_slug,isGroup) + if (createChatBox(group_slug,true)){ + + var groupChatBox = getChatBoxForSlug(group_slug); + + //Modify default box + + //Delete games Tick + $(getChatBoxButtonForSlug(group_slug,"games")).remove() + + //Delete video Tick + $(getChatBoxButtonForSlug(group_slug,"video")).remove(); + + //Delete video div + $(groupChatBox.parent()).find(".ui-videobox").remove(); + + //Minimize + groupChatBox.parent().toggle(open); + + //Initial notifications + PRESENCE.NOTIFICATIONS.initialNotificationInGroup(group_slug,I18n.t('chat.muc.joining')) + + return true; + } else { + return false; + } + } + + + /////////////////////////// + // Create Main Chat Box + /////////////////////////// + + var mainChatBox; + var connectionBoxesForFile=5; + var maxConnectionChatBoxesFilesWithoutOverflow = 11; + var mainChatBoxWidth=150; + var mainChatBoxaddonsHeight=50; + var heightForConnectionBoxFile=30; + var mainChatBoxHeightWhileSearchContacts=260; + var mainChatBoxMinHeight=136; + var mainChatBoxMaxHeight= mainChatBoxaddonsHeight + heightForConnectionBoxFile*maxConnectionChatBoxesFilesWithoutOverflow; + var chatSlugId="SocialStream_MainChat"; + var mainChatBoxParams = [mainChatBoxaddonsHeight,mainChatBoxHeightWhileSearchContacts]; + + var createMainChatBox = function(){ + if (mainChatBox==null){ + //createChatBox(guest_slug,isGroup) + createChatBox(chatSlugId,false) + mainChatBox = window[getChatVariableFromSlug(chatSlugId)] + + //Modify default box + + //Delete closeTick, video Tick and games tick + $(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").find(".ui-icon-closethick").remove(); + $(mainChatBox.parent().parent()).find(".ui-videobox-icon").remove(); + $(mainChatBox.parent().parent()).find(".chat-gamesthick").remove(); + + //Margin for minusthick + (mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").find(".chat-minusthick").parent().css("margin-right","5px") + //Delete nofitications div + $(mainChatBox.parent()).find(".ui-chatbox-notify").remove(); + //Delete video div + $(mainChatBox.parent()).find(".ui-videobox").remove(); + //Delete input + $(mainChatBox.parent()).find(".ui-chatbox-input").remove(); + //Background + $(mainChatBox).css("background-color",$(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").css("background-color")); + + //Set height + changeMainChatBoxHeight(getChatBoxHeightRequiredForConnectionBoxes()); + + //Set width + window[getChatVariableFromSlug(chatSlugId)].parent().parent().css( "width", mainChatBoxWidth ); + $(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").css( "width", mainChatBoxWidth-6 ); + $(mainChatBox).css( "width", mainChatBoxWidth-6 ); + + + //Adjust window offset + offsetForFlowBox = 235-mainChatBoxWidth; + + //CSS Adjusts + $("#chat_partial").css("margin-top",-3) + $("#chat_partial").css("margin-left",-3) + $(".dropdown dd ul").css("min-width",147) + $(mainChatBox).css('overflow-x','hidden') + $(mainChatBox).css('overflow-y','hidden') + + //Minimize + mainChatBox.parent().toggle(PRESENCE.PERSISTENCE.getRestoreMainChatBoxStatus()); + + //Header title + PRESENCE.UIMANAGER.updateConnectedUsersOfMainChatBox(); + } + } + + var getMainChatBox = function(){ + return mainChatBox; + } + + var getMainchatBoxParams = function(){ + return mainChatBoxParams; + } + + ////////////////////////// + // Main Chat Box functions + ////////////////////////// + + var addContentToMainChatBox = function(content){ + if (mainChatBox != null) { + $(mainChatBox.parent()).find("#" + chatSlugId).html(content); + } + } + + var modifyChatPartialIfMainBox = function(chatPartial){ + if (mainChatBox != null) { + p = $(chatPartial) + $(p).find(".header").remove(); + $(p).find(".dropdown dd ul").css("min-width",147); + return $(p); + } + + return chatPartial; + } + + var changeMainChatBoxHeaderTitle = function(title){ + if (mainChatBox != null) { + $($(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").find("span")[0]).html(title); + } + } + + var changeMainChatBoxHeight = function(height){ + if (mainChatBox != null) { + + if(($("#chat_partial #search_chat_contact_flexselect").is(":focus"))&&(! (focusSearchContactsFlag))){ + return; + } else { + focusSearchContactsFlag=false; + } + + if(height > mainChatBoxMaxHeight){ + //overflow = true; + height = mainChatBoxMaxHeight; + $(mainChatBox).css('overflow-y','visible'); + mainChatBox.chatbox("option", "offset","5px") + mainChatBox.chatbox("option", "width", mainChatBoxWidth + 5) + } else { + $(mainChatBox).css('overflow-y','hidden'); + mainChatBox.chatbox("option", "offset","0px") + mainChatBox.chatbox("option", "width",mainChatBoxWidth) + height = Math.max(height,mainChatBoxMinHeight) + } + + window[getChatVariableFromSlug(chatSlugId)].css("height", height); + } + } -function getPublisherVideoBoxForSlug(slug){ - var pubDiv = $("#stream_publish_videochat_" + slug); - if (pubDiv.length > 0) { - return pubDiv - } else { - return null; + var getChatBoxHeightRequiredForConnectionBoxes = function(){ + if(mainChatBox!=null){ + var desiredHeight = mainChatBoxaddonsHeight + Math.ceil(PRESENCE.UIMANAGER.getAllConnectedSlugs().length/connectionBoxesForFile) * heightForConnectionBoxFile; + return desiredHeight; + } else { + return null; + } } -} + + + //////////////////// + //Box replacement + //////////////////// + + var getBoxIndexToReplace = function(){ + + tmp = visibleChatBoxes[0]; + for (i=0;i<visibleChatBoxes.length;i++){ + if (visibleChatBoxes[i].chatbox("option", "priority") > tmp.chatbox("option", "priority")) { + tmp = visibleChatBoxes[i]; + } + } + + return visibleChatBoxes.indexOf(tmp); + } + + var rotatePriority = function(guest_slug){ + priority = $("#" + guest_slug).chatbox("option", "priority") + if(priority>1){ + for (i=0;i<visibleChatBoxes.length;i++){ + if(visibleChatBoxes[i].chatbox("option", "priority")<priority){ + visibleChatBoxes[i].chatbox("option", "priority",visibleChatBoxes[i].chatbox("option", "priority")+1); + } + } + $("#" + guest_slug).chatbox("option", "priority", 1); + } + } + + + //////////////////// + //Video Window Manager functions + //////////////////// + + var getVideoBoxForSlug = function(slug){ + var videoBox = $("#" + slug).parent().find("div.ui-videobox"); + if(videoBox.length == 1){ + return videoBox; + } else { + return null; + } + } + + var getPublisherVideoBoxForSlug = function(slug){ + var pubDiv = $("#stream_publish_videochat_" + slug); + if (pubDiv.length > 0) { + return pubDiv + } else { + return null; + } + } + + var setVideoBoxContent = function(slug,embed){ + var videoBox = getVideoBoxForSlug(slug); + if(videoBox!=null){ + videoBox.html(embed); + } + } + + var addVideoBoxContent = function(slug,embed){ + var videoBox = getVideoBoxForSlug(slug); + if(videoBox!=null){ + videoBox.append(embed); + } + } + + var showVideoBox = function(chatBox){ + chatBox.chatbox("option", "video",videoBoxHeight); + } + + var hideVideoBox = function(chatBox){ + chatBox.chatbox("option", "video", 0); + } + + //Function called from JQuery UI Plugin + var toggleVideoBox = function(uiElement){ + var slug = $(uiElement.element).attr("id"); + PRESENCE.VIDEOCHAT.clickVideoChatButton(slug); + } + + //Function called from JQuery UI Plugin + var toggleVideoBoxChange = function(uiElement){ + var slug = $(uiElement.element).attr("id"); + PRESENCE.VIDEOCHAT.clickVideoChangeChatButton(slug); + } + + var toggleVideoBoxForSlug = function(slug,force){ + var aux; + var chatBox = getChatBoxForSlug(slug); + + if(chatBox==null) { + return null; + } + + if(typeof force != 'undefined'){ + aux = force; + } else { + if (chatBox.chatbox("option", "video")==0){ + aux=true; + } else { + aux=false; + } + } + + if (aux){ + //Show + showVideoBox(chatBox); + return true; + } else { + //Hide + hideVideoBox(chatBox); + return false; + } + } + + + ///////// + //Getters + ///////// + var getChatVariableFromSlug = function(slug){ + return "Slug_" + slug; + } + + var getSlugFromChatVariable = function(variable){ + return variable.split("_")[1]; + } + + var getVisibleChatBoxes = function(){ + var tmp = new Array(); + for(i=0; i<visibleChatBoxes.length; i++){ + if (visibleChatBoxes[i][0].id!=chatSlugId){ + tmp.push(visibleChatBoxes[i]) + } + } + return tmp + } -function setVideoBoxContent(slug,embed){ - var videoBox = getVideoBoxForSlug(slug); - if(videoBox!=null){ - videoBox.html(embed); - } -} - -function addVideoBoxContent(slug,embed){ - var videoBox = getVideoBoxForSlug(slug); - if(videoBox!=null){ - videoBox.append(embed); - } -} - -function showVideoBox(chatBox){ - chatBox.chatbox("option", "video",videoBoxHeight); -} - -function hideVideoBox(chatBox){ - chatBox.chatbox("option", "video", 0); -} - -//Function called from JQuery UI Plugin -function toggleVideoBox(uiElement){ - var slug = $(uiElement.element).attr("id"); - clickVideoChatButton(slug); -} - -//Function called from JQuery UI Plugin -function toggleVideoBoxChange(uiElement){ - var slug = $(uiElement.element).attr("id"); - clickVideoChangeChatButton(slug); -} - -function toggleVideoBoxForSlug(slug,force){ - var aux; - var chatBox = getChatBoxForSlug(slug); + var getAllChatBoxes = function(){ + return $(".chatbox").not(document.getElementById(chatSlugId)) + } - if(chatBox==null) { - return null; - } + var getChatBoxForSlug = function(slug){ + if (typeof window[getChatVariableFromSlug(slug)] == 'undefined') { + return null; + } else { + return window[getChatVariableFromSlug(slug)]; + } + } - if(typeof force != 'undefined'){ - aux = force; - } else { - if (chatBox.chatbox("option", "video")==0){ - aux=true; + var getChatBoxHeaderForSlug = function(slug){ + var chatBox = getChatBoxForSlug(slug); + if(chatBox!=null){ + return chatBox.parent().parent().find(".ui-chatbox-titlebar") } else { - aux=false; + return null; } } - if (aux){ - //Show - showVideoBox(chatBox); - return true; - } else { - //Hide - hideVideoBox(chatBox); - return false; - } -} + var getChatBoxButtonsForSlug = function(slug){ + var chatBoxHeader = getChatBoxHeaderForSlug(slug); + if(chatBoxHeader!=null){ + return chatBoxHeader.find(".ui-chatbox-icon"); + } else { + return null; + } + } + + var getChatBoxButtonForSlug = function(slug,button){ + var chatBoxButtons = getChatBoxButtonsForSlug(slug); + if(chatBoxButtons!=null){ + switch (button){ + case "close": + return chatBoxButtons[0]; + break; + case "min": + return chatBoxButtons[1]; + break; + case "video": + return chatBoxButtons[2]; + break; + case "videoChange": + return chatBoxButtons[3]; + case "games": + return chatBoxButtons[4]; + break; + default : return null; + } + } else { + return null; + } + } + + + var getAllSlugsWithChatOrVideoBoxes = function(){ + var slugsWithChatBox = []; + var slugsWithVideoBox = []; + $.each(getAllChatBoxes(), function(index, value) { + if($(value).parent().find(".ui-videobox").is(":visible")){ + slugsWithVideoBox.push($(value).attr("id")) + } + slugsWithChatBox.push($(value).attr("id")) + }); + return [slugsWithChatBox,slugsWithVideoBox]; + } + + var getAllSlugsWithChatBoxes = function(){ + return getAllSlugsWithChatOrVideoBoxes()[0]; + } + + var getAllSlugsWithVisibleVideoBoxes = function(){ + return getAllSlugsWithChatOrVideoBoxes()[1]; + } + + var getAllDisconnectedSlugsWithChatBoxes = function(){ + var slugsWithChatBox = getAllSlugsWithChatBoxes(); + var slugsConnected = PRESENCE.UIMANAGER.getAllConnectedSlugs(); + var allDisconnectedSlugsWithChatBox = []; + + $.each(slugsWithChatBox, function(index, value) { + if (slugsConnected.indexOf(value)==-1){ + allDisconnectedSlugsWithChatBox.push(value); + } + }); + return allDisconnectedSlugsWithChatBox; + } + + var isSlugGroup = function(slug){ + var chatBox = getChatBoxForSlug(slug) + if(chatBox!=null){ + return chatBox.chatbox("option", "groupBox") + } else { + return false + } + } + + + var getAllSlugsWithVisibleGroupBoxes = function(){ + var groupBoxes = [] + $.each(getVisibleChatBoxes(), function(index, value) { + if ($(value).chatbox("option", "groupBox")){ + groupBoxes.push($(value).attr("id")); + } + }); + return groupBoxes; + } + + var getChatBoxHeight = function(){ + return chatBoxHeight; + } + + + return { + init: init, + createMainChatBox : createMainChatBox, + createBuddyChatBox : createBuddyChatBox, + createGroupChatBox : createGroupChatBox, + closeChatBox : closeChatBox, + rotatePriority : rotatePriority, + addContentToMainChatBox : addContentToMainChatBox, + modifyChatPartialIfMainBox : modifyChatPartialIfMainBox, + changeMainChatBoxHeaderTitle : changeMainChatBoxHeaderTitle, + changeMainChatBoxHeight : changeMainChatBoxHeight, + getChatBoxHeightRequiredForConnectionBoxes : getChatBoxHeightRequiredForConnectionBoxes, + getVideoBoxForSlug : getVideoBoxForSlug, + getPublisherVideoBoxForSlug : getPublisherVideoBoxForSlug, + setVideoBoxContent : setVideoBoxContent, + addVideoBoxContent : addVideoBoxContent, + toggleVideoBox : toggleVideoBox, + toggleVideoBoxChange : toggleVideoBoxChange, + toggleVideoBoxForSlug : toggleVideoBoxForSlug, + getVisibleChatBoxes : getVisibleChatBoxes, + getAllChatBoxes : getAllChatBoxes, + getChatBoxForSlug : getChatBoxForSlug, + getChatBoxHeaderForSlug : getChatBoxHeaderForSlug, + getChatBoxButtonForSlug : getChatBoxButtonForSlug, + getAllSlugsWithVisibleVideoBoxes : getAllSlugsWithVisibleVideoBoxes, + getAllDisconnectedSlugsWithChatBoxes : getAllDisconnectedSlugsWithChatBoxes, + isSlugGroup : isSlugGroup, + getAllSlugsWithVisibleGroupBoxes : getAllSlugsWithVisibleGroupBoxes, + getMainChatBox : getMainChatBox, + getMainchatBoxParams : getMainchatBoxParams, + getChatBoxHeight : getChatBoxHeight + }; +}) (PRESENCE, jQuery); -///////// -//Getters -///////// -function getChatVariableFromSlug(slug){ - return "Slug_" + slug; -} - -function getSlugFromChatVariable(variable){ - return variable.split("_")[1]; -} - -function getVisibleChatBoxes(){ - for(i=0; i<visibleChatBoxes.length; i++){ - if (visibleChatBoxes[i][0].id==chatSlugId){ - visibleChatBoxes.splice(i,1) - } - } - return visibleChatBoxes -} - - -function getAllChatBoxes(){ - return $(".chatbox").not(document.getElementById(chatSlugId)) -} - -function getChatBoxForSlug(slug){ - if (typeof window[getChatVariableFromSlug(slug)] == 'undefined') { - return null; - } else { - return window[getChatVariableFromSlug(slug)]; - } -} - -function getChatBoxHeaderForSlug(slug){ - var chatBox = getChatBoxForSlug(slug); - if(chatBox!=null){ - return chatBox.parent().parent().find(".ui-chatbox-titlebar") - } else { - return null; - } -} - -function getChatBoxButtonsForSlug(slug){ - var chatBoxHeader = getChatBoxHeaderForSlug(slug); - if(chatBoxHeader!=null){ - return chatBoxHeader.find(".ui-chatbox-icon"); - } else { - return null; - } -} - -function getChatBoxButtonForSlug(slug,button){ - var chatBoxButtons = getChatBoxButtonsForSlug(slug); - if(chatBoxButtons!=null){ - switch (button){ - case "close": - return chatBoxButtons[0]; - break; - case "min": - return chatBoxButtons[1]; - break; - case "video": - return chatBoxButtons[2]; - break; - case "videoChange": - return chatBoxButtons[3]; - case "games": - return chatBoxButtons[4]; - break; - default : return null; - } - } else { - return null; - } -} - - -function getAllSlugsWithChatOrVideoBoxes(){ - var slugsWithChatBox = []; - var slugsWithVideoBox = []; - $.each(getAllChatBoxes(), function(index, value) { - if($(value).parent().find(".ui-videobox").is(":visible")){ - slugsWithVideoBox.push($(value).attr("id")) - } - slugsWithChatBox.push($(value).attr("id")) - }); - return [slugsWithChatBox,slugsWithVideoBox]; -} - -function getAllSlugsWithChatBoxes(){ - return getAllSlugsWithChatOrVideoBoxes()[0]; -} - -function getAllSlugsWithVisibleVideoBoxes(){ - return getAllSlugsWithChatOrVideoBoxes()[1]; -} - -function getAllDisconnectedSlugsWithChatBoxes(){ - var slugsWithChatBox = getAllSlugsWithChatBoxes(); - var slugsConnected = getAllConnectedSlugs(); - var allDisconnectedSlugsWithChatBox = []; - - $.each(slugsWithChatBox, function(index, value) { - if (slugsConnected.indexOf(value)==-1){ - allDisconnectedSlugsWithChatBox.push(value); - } - }); - return allDisconnectedSlugsWithChatBox; -} - -function isSlugGroup(slug){ - var chatBox = getChatBoxForSlug(slug) - if(chatBox!=null){ - return chatBox.chatbox("option", "groupBox") - } else { - return false - } -} - - -function getAllSlugsWithVisibleGroupBoxes(){ - var groupBoxes = [] - $.each(getVisibleChatBoxes(), function(index, value) { - if ($(value).chatbox("option", "groupBox")){ - groupBoxes.push($(value).attr("id")); - } - }); - return groupBoxes; -}