📄 ajax_im.js
字号:
createIMWindow(room.toLowerCase(), room.toLowerCase());
} else {
if(!IMWindows[room].isVisible()) {
IMWindows[room].show();
setTimeout("scrollToBottom('" + room + "_rcvd')", 125);
}
}
var users = xh.responseText.parseJSON().users;
if(!$(room.replace(/\s/, '_')+'_group')) addGroupToList(room);
for(var i=0; i<users.length; i++) {
if(!$(users[i]+'_blItem')) addBuddyToList(users[i], room);
}
Windows.close('newRoom');
IMWindows[room].toFront();
setTimeout("$('"+room+"_sendBox').focus()", 125);
}
});
}
function leaveRoom(room){
var xhConn = new XHConn();
xhConn.connect(pingTo, "POST", "call=leaveroom&from="+user+"&pwd="+pass+"&room="+room,
function(xh) {
if(xh.responseText=='left')
deleteGroupFromList(room);
});
}
function keyHandler(e, name) {
var asc = document.all ? event.keyCode : e.which;
if(asc == 13) {
sendMessage(name);
return false;
}
return true;
}
function loginHandler(e) {
var asc = document.all ? event.keyCode : e.which;
if(asc == 13) login();
return asc != 13;
}
function destroyIMWindow(name) {
var toKill = $(name);
toKill.parentNode.removeChild(toKill);
}
function addBuddyToList(username, groupname) {
if(!$(groupname.replace(/\s/, '_') + '_group')) addGroupToList(groupname);
var groupList = $(groupname.replace(/\s/, '_') + '_group');
groupList.innerHTML += '<li id="'+username+'_blItem" class="buddy" onmousedown="clickBuddy(\''+username+'\');return false;" onselectstart="return false;" onmouseover="selectBuddy(this, \''+username+'\', true);" onmouseout="selectBuddy(this, \''+username+'\', false);" ondblclick="onBuddyDblClick();"> <img src="images/online.png" width="16" height="16" alt="" id="'+username+'_blImg"> '+username+'</li>';
$(username + '_blItem').style.listStyleType = 'none';
}
function moveBuddy(username, groupname) {
if(groupname == null) return;
if($(username+'_blItem').parentNode.id == $(groupname.replace(/\s/, '_') + '_group')) return;
if(!$(groupname.replace(/\s/, '_') + '_group')) addGroupToList(groupname);
$(groupname.replace(/\s/, '_') + '_group').insertBefore($(username+'_blItem'), null);
}
function addGroupToList(groupname) {
var bList = $('buddylist');
bList.innerHTML = (groupname=='Offline' ? bList.innerHTML : '') + '<li id="' + groupname.replace(/\s/, '_') + '_groupTop" class="groupTop" onmousedown="return false;" onselectstart="return false;" onclick=" toggleGroup(\'' + groupname + '\');"><img id="' + groupname.replace(/\s/, '_') + '_groupArrow" src="images/' + windowCSS + '/arrow.png" /> ' + groupname +
(groupname!='Offline' ? ' <a href="#" class="delLink" onclick="remove_group_dialog(\'' + groupname + '\');return false;"><img src="images/' + windowCSS + '/smallx.png" style="border:0;" onmouseover="buttonHover(this);" onmouseout="buttonNormal(this);" /></a>' : '') + '</li>' + "\n" + '<ul id="' + groupname.replace(/\s/, '_') + '_group" class="group"></ul>' + (groupname!='Offline' ? bList.innerHTML : '');
}
function toggleGroup(groupname) {
var groupList = $(groupname.replace(/\s/, '_') + '_group');
var groupArrow = $(groupname.replace(/\s/, '_') + '_groupArrow');
if(groupList.style.display != 'none') {
groupList.style.display = 'none';
groupArrow.src = 'images/' + windowCSS + '/arrow_up.png';
} else {
groupList.style.display = 'block';
groupArrow.src = 'images/' + windowCSS + '/arrow.png';
}
}
function selectBuddy(sel, username, selected) {
if(selected === false) {
if(curSelected != username) {
sel.style.background = '#fff';
sel.style.color = '#333';
} else {
sel.style.background = '#d0dae6';
sel.style.color = '#000';
}
} else {
sel.style.background = '#e1ebf7';
sel.style.color = '#000';
}
}
function clickBuddy(username) {
if(curSelected.length > 0) {
var sel = $(curSelected + '_blItem');
sel.style.background = '#fff';
sel.style.color = '#333';
}
curSelected = username;
sel = $(curSelected + '_blItem');
sel.style.background = '#d0dae6';
sel.style.color = '#333';
}
function onBuddyDblClick() {
if(curSelected.length > 0) {
if(!$(curSelected + '_im')) {
createIMWindow(curSelected, curSelected);
} else {
if(IMWindows[curSelected].popup) {
if(IMWindows[curSelected].popup.closed) {
IMWindows[curSelected] = IMWindows[curSelected].old;
IMWindows[curSelected].show();
} else {
IMWindows[curSelected].popup.focus();
}
} else if(!IMWindows[curSelected].isVisible()) {
IMWindows[curSelected].show();
IMWindows[curSelected].toFront();
setTimeout("scrollToBottom('" + curSelected + "_rcvd')", 125);
setTimeout("$('" + curSelected + "_sendBox').focus();", 250);
} else {
IMWindows[curSelected].toFront();
setTimeout("$('" + curSelected + "_sendBox').focus();", 250);
}
}
}
}
function scrollToBottom(id) {
$(id).scrollTop = $(id).scrollHeight - $(id).clientHeight;
}
function deleteBuddyFromList(username) {
if(username.indexOf('_group') != -1) {
deleteGroupFromList(username.substring(0, username.length - 6));
return;
}
var usernam = username;
var ingroup, loc;
for (var group in buddyList) {
for(var i=0; i<buddyList[group].length; i++) {
if(buddyList[group][i] == username) {
ingroup = group;
loc = i;
break;
}
}
}
var buddyToRmv = $(usernam+"_blItem");
if(typeof(buddyToRmv) !== 'undefined') {
buddyToRmv.parentNode.removeChild(buddyToRmv);
if(buddyList[ingroup]) {
buddyList[ingroup].splice(loc, 1);
saveBuddyList();
}
Dialog.closeInfo();
}
}
function deleteGroupFromList(groupname) {
var groupNoSpaces = groupname.replace(/\s/, '_');
var groupToRmv = $(groupNoSpaces+"_group");
var groupTop = $(groupNoSpaces+"_groupTop");
if(typeof(groupToRmv) !== 'undefined') {
groupToRmv.parentNode.removeChild(groupToRmv);
groupTop.parentNode.removeChild(groupTop);
delete buddyList[groupname];
saveBuddyList();
Dialog.closeInfo();
} else {
$('deletebuddy_error_msg').innerHTML = 'No such group on buddylist!';
$('deletebuddy_error_msg').show();
Dialog.win.updateHeight();
}
}
function addNewBuddyToList(username, groupname) {
if(!inArray(buddyList, username) && !$(username + '_blItem')) {
var xhConn = new XHConn();
xhConn.connect(pingTo, "POST", "call=isuser&from="+user+"&pwd="+pass+"&username="+username, function(xh) {
if(xh.responseText == 'not_exists') {
$('newbuddy_error_msg').innerHTML = 'No such user is registered!';
} else {
if(!$(groupname.replace(/\s/, '_') + '_group')) {
addGroupToList(groupname);
buddyList[groupname] = [];
}
addBuddyToList(username, 'Offline');
if(parseInt(xh.responseText) == 0) {
moveBuddy(username, 'Offline');
$(username+'_blImg').src = 'images/offline.png';
} else if(parseInt(xh.responseText) == 2) {
moveBuddy(username, groupname);
$(username+'_blImg').src = 'images/away.png';
} else {
moveBuddy(username, groupname);
$(username+'_blImg').src = 'images/online.png';
}
buddyList[groupname][buddyList[groupname].length] = username;
saveBuddyList();
Windows.close('newBuddy');
}
});
} else {
$('newbuddy_error_msg').innerHTML = 'User is already on your buddy list!';
}
}
function trim(text) {
if(text == null) return null;
return text.replace(/^[ \t]+|[ \t]+$/g, "");
}
function saveBuddyList() {
var xhConn = new XHConn();
xhConn.connect(pingTo, "POST", "call=save&from="+user+"&pwd="+pass+"&list="+encodeURIComponent(buddyList.toJSONString()), null);
}
function resetPass() {
var xhConn = new XHConn();
var error = '';
xhConn.connect(pingTo, "POST", "call=reset&from="+$('resetto').value.replace(/@/, '+AT+').replace(/\./, '+DOT+').replace(/ /, ''),
function(xh) {
if(xh.responseText == 'pw_reset') {
Dialog.alert('<span class="dialog_long_label">Your new password has been emailed to ' + $('resetto').value + '</span><div style="clear:both"></div>',
{windowParameters: {className:alertCSS, width:alertWidth},
ok:function(win) { clearInputs(); Dialog.closeInfo(); login_dialog(); }});
} else if(xh.responseText == 'no_email_on_record') {
error = 'There is no such email address for any username on record.';
} else {
error = 'There has been a problem resetting your password.<br />Please try again later.';
}
$('forgotpass_error_msg').innerHTML = error;
$('forgotpass_error_msg').style.display = 'block';
new Effect.Shake('modal');
}
);
}
function changePass() {
var currentPw = $('currentpw').value;
var newPw = $('newpw').value;
var error = '';
if(hex_md5(currentPw) == pass) {
if(newPw == $('confirmpw').value) {
var xhConn = new XHConn();
xhConn.connect(pingTo, "POST", "call=pwdchange&from="+user+"&pwd="+hex_md5(currentPw)+"&newpwd="+newPw,
function(xh) {
if(xh.responseText == 'pw_changed') {
Dialog.closeInfo();
Dialog.alert('<span class="dialog_long_label">The password change was successful!'+"\n"+'Please re-login now.</span><div style="clear:both"></div>',
{windowParameters: {className:alertCSS, width:alertWidth, height:85},
ok:function(win) { Dialog.closeInfo(); Windows.close('changePass'); setTimeout('logout();', 250); }});
} else if(xh.responseText == 'invalid_pw') {
error = 'The "Current Password" you entered is invalid.';
$('currentpw').value = '';
} else if(xh.responseText == 'password_bad_length') {
error = 'Passwords must be 4 to 16 characters long!';
$('newpw').value = '';
$('confirmpw').value = '';
} else {
error = 'There was a problem processing your password change. Please try again later.';
}
}
);
} else {
error = 'Your passwords do not match!';
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -