147 linhas
4.9 KiB
JavaScript
147 linhas
4.9 KiB
JavaScript
///////////////////////////////////
|
|
// 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);
|
|
}
|
|
}
|
|
}
|
|
};
|