/////////////////////////////////// // ajax im 3.41 // // AJAX Instant Messenger // // Copyright (c) 2006-2008 // // http://www.ajaxim.com/ // // Do not remove this notice // /////////////////////////////////// /** * Handle all right-click menus for buddy list * * @author Benjamin Hutchins **/ var Context = { currentUser: null, // current user that the menu is being shown for lastClicked: null, // last user that was right-clicked /** * On window load, apply new observes * * @author Benjamin Hutchins **/ loaded: function() { if (typeof document.oncontextmenu != 'undefined') { document.oncontextmenu = Context.oncontextmenu; } else { window.oncontextmenu = Context.oncontextmenu; } document.onmousedown = window.onmousedown = Context.onmousedown; }, /** * onClick of 'Get Info', open the users' profile. * * @author Benjamin Hutchins **/ profile: function() { $('divContext').style.display = 'none'; if(typeof(Profile.windows[Context.currentUser]) == 'undefined') { Profile.create(Context.currentUser, Context.currentUser); } else { if(!Profile.windows[Context.currentUser].isVisible()) { Profile.windows[Context.currentUser].show(); Profile.windows[Context.currentUser].toFront(); } else { Profile.windows[Context.currentUser].toFront(); } } }, /** * onClick of 'IM', open the conversation window with the user. * * @author Benjamin Hutchins **/ createIM: function() { $('divContext').style.display = 'none'; if(typeof(IM.windows[Context.currentUser]) == 'undefined') { IM.create(Context.currentUser, Context.currentUser); } else { if(IM.windows[Context.currentUser].detached) { if(IM.windows[Context.currentUser].popup.closed) { IM.windows[Context.currentUser] = IM.windows[Context.currentUser].old; IM.windows[Context.currentUser].show(); } else { IM.windows[Context.currentUser].popup.focus(); } } else if(!IM.windows[Context.currentUser].isVisible()) { IM.windows[Context.currentUser].show(); IM.windows[Context.currentUser].toFront(); setTimeout("scrollToBottom('" + IM.windows[Context.currentUser].getId() + "_rcvd')", 125); setTimeout("$('" + IM.windows[Context.currentUser].getId() + "_sendBox').focus();", 250); } else { IM.windows[Context.currentUser].toFront(); setTimeout("$('" + IM.windows[Context.currentUser].getId() + "_sendBox').focus();", 250); } } }, /** * onClick of 'Block' or 'Unblock', toggle the user's blocked status. * * @author Benjamin Hutchins **/ blockBuddy: function() { $('divContext').style.display = 'none'; Dialogs.blockBuddy(Context.currentUser); }, /** * onClick of 'Remove', remove the user from the friend's list. * * @author Benjamin Hutchins **/ removeBuddy: function() { $('divContext').style.display = 'none'; Dialogs.removeBuddy(Context.currentUser); }, /** * Global onContextMenu handler * * @author Benjamin Hutchins **/ oncontextmenu: function (event) { if (loggedIn && Context.lastClicked != null) { event = event || window.event; Context.currentUser = Context.lastClicked; var scrollTop = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop; var scrollLeft = document.body.scrollLeft ? document.body.scrollLeft : document.documentElement.scrollLeft; $('divContext').style.display = 'none'; var group = Buddylist.listObjects[Context.currentUser].group; $('contextBlock').innerHTML = (typeof Buddylist.list[group] != 'undefined' && Buddylist.list[group][Context.currentUser].blocked == true ? Languages.get('contextUnblock') : Languages.get('contextBlock')); Element.setStyle($('divContext'), { left: (event.clientX + scrollLeft - 5) + 'px', top: (event.clientY + scrollTop - 5) + 'px', zIndex: Windows.maxZIndex + 20, display: 'block' }); Context.lastClicked = null; return false; } else if ($('divContext')) { $('divContext').style.display = 'none'; } }, /** * Global onMouseDown handler, hide right-click menu, * as long as it wasn't a right click. * * @author Benjamin Hutchins **/ onmousedown: function (event) { if (loggedIn) { event = event || window.event; if (event.button != 2 && event.button != 3) { setTimeout("$('divContext').style.display='none';", 100); } } } };