378 lines
12 KiB
JavaScript
378 lines
12 KiB
JavaScript
|
var colTitles = new Array('(S)', 'Subject', 'Date', 'From', 'To');
|
||
|
var msgNotFound = "Message body could not be found.";
|
||
|
var replyText = "Reply";
|
||
|
|
||
|
function makeMessagesTooltips()
|
||
|
{
|
||
|
msgtt = new Array();
|
||
|
if (ttDelay == 0)
|
||
|
{
|
||
|
var i;
|
||
|
for (i=0;i<86;i++)
|
||
|
msgtt[i] = "";
|
||
|
return;
|
||
|
}
|
||
|
msgtt[0] = tt_Dynamic("Click here to write a new message");
|
||
|
msgtt[1] = tt_Dynamic("Click here to go to the folder management page");
|
||
|
msgtt[2] = tt_Dynamic("Click here to view the contents of this folder");
|
||
|
msgtt[3] = tt_Dynamic("Click here to go to the forums' page");
|
||
|
msgtt[10] = tt_Dynamic("Select the type of recipient for this message");
|
||
|
msgtt[11] = tt_Dynamic("Specify here the name of the recipient of this message");
|
||
|
msgtt[12] = tt_Dynamic("Specify here the subject of this message");
|
||
|
msgtt[13] = tt_Dynamic("Specify here the body of this message");
|
||
|
msgtt[14] = tt_Dynamic("Click here to send this message");
|
||
|
msgtt[20] = tt_Dynamic("Select the number of messages to display on each page");
|
||
|
msgtt[21] = tt_Dynamic("Use this check box to switch between threaded / linear view");
|
||
|
msgtt[30] = tt_Dynamic("Select the page of messages to display");
|
||
|
msgtt[40] = tt_Dynamic("Click here to delete the selected message(s)");
|
||
|
msgtt[41] = tt_Dynamic("Click here to move the selected message(s) to the chosen folder");
|
||
|
msgtt[42] = tt_Dynamic("Select the folder to which you want to move the selected message(s)");
|
||
|
msgtt[50] = tt_Dynamic("Use this check box to select / unselect this folder");
|
||
|
msgtt[51] = tt_Dynamic("Click here to rename the selected folder");
|
||
|
msgtt[60] = tt_Dynamic("Click here to create a new folder");
|
||
|
msgtt[70] = tt_Dynamic("Click here to flush the contents of the selected folder(s)");
|
||
|
msgtt[71] = tt_Dynamic("Click here to delete the selected folder(s)");
|
||
|
msgtt[80] = tt_Dynamic("Use this check box to select / unselect all messages in this folder");
|
||
|
msgtt[81] = tt_Dynamic("Click here to sort the messages according to this field");
|
||
|
msgtt[82] = tt_Dynamic("Use this check box to select / unselect this message");
|
||
|
msgtt[83] = tt_Dynamic("Click here to display / hide the body of this message");
|
||
|
msgtt[84] = tt_Dynamic("Click here to send a message to this recipient");
|
||
|
msgtt[85] = tt_Dynamic("Click here to reply to this message");
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawMainMenu()
|
||
|
{
|
||
|
var str = '<table cellspacing="0" cellpadding="0">';
|
||
|
str += '<tr><td colspan="2"> </td></tr>';
|
||
|
str += '<tr><th colspan="2">Messages</th></tr>';
|
||
|
str += '<tr><td colspan="2"> </td></tr>';
|
||
|
|
||
|
str += '<tr><td colspan="2">';
|
||
|
if (page == "Compose")
|
||
|
str += '<i>Compose a message</i>';
|
||
|
else
|
||
|
str += '<a href="#" onClick="composeNew(); return false"' + msgtt[0] + '>Compose a message</a>';
|
||
|
str += '</td></tr>';
|
||
|
|
||
|
str += '<tr><td colspan="2">';
|
||
|
if (page == "Folders")
|
||
|
str += '<i>Folders</i>';
|
||
|
else
|
||
|
str += '<a href="#" onClick="manageFolders(); return false"' + msgtt[1] + '>Folders</a>';
|
||
|
str += '</td></tr>';
|
||
|
|
||
|
var i, ic;
|
||
|
for (i=0;i<folders.length;i++)
|
||
|
{
|
||
|
ic = (page == "Browse" && vFolder == i);
|
||
|
str += '<tr>';
|
||
|
if (i==0)
|
||
|
str += '<td class="mmspc" rowspan="' + folders.length + '"> </td>';
|
||
|
str += '<td>';
|
||
|
str += ic ? '<i>' : ('<a href="#" onClick="browseFolder(' + i + '); return false"' + msgtt[2] + ' >');
|
||
|
if (folders[i].nCount > 0)
|
||
|
str += "<b>"
|
||
|
if (folders[i].type == 'CUS')
|
||
|
str += folders[i].name;
|
||
|
else if (folders[i].type == 'IN')
|
||
|
str += 'Inbox';
|
||
|
else if (folders[i].type == 'INT')
|
||
|
str += 'Internal transmissions';
|
||
|
else
|
||
|
str += 'Sent messages';
|
||
|
if (folders[i].nCount > 0)
|
||
|
str += " (" + folders[i].nCount + ")</b>";
|
||
|
str += ic ? '</i>' : '</a>';
|
||
|
str += '</td></tr>';
|
||
|
}
|
||
|
str += '<tr><td colspan="2"> </td></tr>';
|
||
|
str += '<tr><th colspan="2"><a href="forums"' + msgtt[3] + '>Forums</a></th></tr>';
|
||
|
str += '</table>';
|
||
|
|
||
|
document.getElementById('mmenu').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function drawComposePage()
|
||
|
{
|
||
|
var i, a = new Array('player', 'planet', 'alliance');
|
||
|
var str = '<h1>Compose a message</h1><form action="?">';
|
||
|
str += '<table cellspacing="1" cellpadding="1" class="mcomp">';
|
||
|
|
||
|
if (pCompose.sent)
|
||
|
str += '<tr><td colspan="2"><p><b>Your message has been sent</b></p></td></tr>';
|
||
|
else if (pCompose.errors[0] != 0)
|
||
|
{
|
||
|
str += '<tr><td> </td><td><b class="err">';
|
||
|
switch (pCompose.errors[0])
|
||
|
{
|
||
|
case 1: str += 'Please specify message recipient.'; break;
|
||
|
case 2: str += 'Recipient not found.'; break;
|
||
|
}
|
||
|
str += '</b></td></tr>';
|
||
|
}
|
||
|
str += '<tr><th>Message to:</th><td><select name="mt" id="mcmtype"' + msgtt[10] +' >';
|
||
|
for (i=0;i<a.length;i++)
|
||
|
{
|
||
|
str += '<option value="' + i + '"';
|
||
|
if (i == pCompose.tType)
|
||
|
str += ' selected="selected"';
|
||
|
str += '>' + a[i] + '</option>';
|
||
|
}
|
||
|
str += '</select><input type="text" name="tn" id="mcmto" size="45" value="'+pCompose.tText+'"' + msgtt[11] + ' /></td></tr>';
|
||
|
|
||
|
if (pCompose.errors[1] != 0)
|
||
|
{
|
||
|
str += '<tr><td> </td><td><b class="err">';
|
||
|
switch (pCompose.errors[1])
|
||
|
{
|
||
|
case 1: str += 'Please specify message subject.'; break;
|
||
|
case 2: str += 'Subject is too long (max. 64 characters).'; break;
|
||
|
}
|
||
|
str += '</b></td></tr>';
|
||
|
}
|
||
|
str += '<tr><th>Subject:</th><td><input type="text" name="ms" id="mcmsub" size="58" maxlength="64" value="'+pCompose.sText+'"' + msgtt[12] + ' /></td></tr>';
|
||
|
|
||
|
if (pCompose.errors[2] != 0)
|
||
|
{
|
||
|
str += '<tr><td> </td><td><b class="err">';
|
||
|
switch (pCompose.errors[2])
|
||
|
{
|
||
|
case 1: str += 'You are not allowed to send empty messages.'; break;
|
||
|
}
|
||
|
str += '</b></td></tr>';
|
||
|
}
|
||
|
str += '<tr><th>Message:</th><td><textarea name="mc" id="mcmsg" cols="56" rows="15" wrap="word"' + msgtt[13] + '></textarea></td></tr>';
|
||
|
str += '<tr><td> </td><td class="mbut"><input type="button" id="mcmsend" ';
|
||
|
str += 'value="Send message" onClick="sendMessage(); return false;"' + msgtt[14] + ' /></td></tr>';
|
||
|
str += '</table>';
|
||
|
|
||
|
if (pCompose.rId != -1)
|
||
|
str += '<h2>Replying to...</h2><p>' + pCompose.rText + '</p>';
|
||
|
|
||
|
str += '</form>';
|
||
|
document.getElementById('mbody').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function drawPageNotFound()
|
||
|
{
|
||
|
document.getElementById('mbody').innerHTML = '<h1>Folder not found</h1><p>The folder you are trying to browse cannot be found.</p>';
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function drawFolderLayout()
|
||
|
{
|
||
|
var str = '<h1>"';
|
||
|
switch (folders[vFolder].type)
|
||
|
{
|
||
|
case "IN": str += "Inbox"; break;
|
||
|
case "INT": str += "Internal Transmissions"; break;
|
||
|
case "OUT": str += "Sent Messages"; break;
|
||
|
case "CUS": str += folders[vFolder].name; break;
|
||
|
}
|
||
|
str += '" Folder</h1><div id="fbrowser"><p>Loading browser...</p></div>';
|
||
|
document.getElementById('mbody').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawFolderControls(s)
|
||
|
{
|
||
|
var i, str = '<form action="?"><table cellspacing="0" cellpadding="0" class="fctrl">';
|
||
|
str += '<tr class="topctrl"><td id="mppcell">';
|
||
|
|
||
|
str += 'Messages per page: <select name="mpp" id="fcmpp" onChange="setMsgPerPage();"' + msgtt[20] + ' >';
|
||
|
for (i=1;i<6;i++)
|
||
|
{
|
||
|
str += '<option value="'+i+'"';
|
||
|
if (i*10 == s[0])
|
||
|
str += ' selected="selected"';
|
||
|
str += '>'+(i*10)+'</option>';
|
||
|
}
|
||
|
str += '</select></td>';
|
||
|
|
||
|
str += '<td><label><input type="checkbox" name="thr" id="fcthr" ' + msgtt[21] + ' onClick="switchThreaded();"';
|
||
|
if (s[3])
|
||
|
str += ' checked="checked"';
|
||
|
str += '/>Threaded view</label></td><td id="fcpage"> </td></tr>';
|
||
|
|
||
|
str += '<tr><td id="msglist" colspan="3"><b class="msgmsg">Loading message list ...</b></td></tr>';
|
||
|
str += '<tr><td id="msgctrl" colspan="3"> </td></tr>';
|
||
|
str += '</table></form>';
|
||
|
|
||
|
document.getElementById('fbrowser').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawEmptyFolder()
|
||
|
{
|
||
|
document.getElementById('fcpage').innerHTML = ' ';
|
||
|
document.getElementById('msgctrl').innerHTML = ' ';
|
||
|
document.getElementById('msglist').innerHTML = '<b class="msgmsg">There are no messages in this folder.</b>';
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawPageSelector(npg, np)
|
||
|
{
|
||
|
var str, i;
|
||
|
if (npg == 1)
|
||
|
str = 'Page 1 / 1';
|
||
|
else
|
||
|
{
|
||
|
str = 'Page <select name="pgs" id="pgs" onChange="changePage();"' + msgtt[30] + '>';
|
||
|
for (i=0;i<npg;i++)
|
||
|
{
|
||
|
str += '<option value="' + i + '"';
|
||
|
if (np == i)
|
||
|
str += ' selected="selected"';
|
||
|
str += '>' + (i+1) + '</option>';
|
||
|
}
|
||
|
str += '</select> / ' + npg;
|
||
|
}
|
||
|
document.getElementById('fcpage').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function genMsgControls(cfolder)
|
||
|
{
|
||
|
var i, t, str = '<table cellspacing="0" cellpadding="0" class="msgctrl"><tr>';
|
||
|
str += '<th>With selected messages:</th>';
|
||
|
str += '<td><input type="button" id="msgdel" value="Delete"' + msgtt[40] + ' onClick="deleteSelected(); return false"/>';
|
||
|
str += ' or <input type="button" id="msgmv" value="move"' + msgtt[41] + ' onClick="moveSelected(); return false"/> to ';
|
||
|
str += '<select name="msgmvt" id="msgmvt"' + msgtt[42] + '><option value="">- select destination folder -</option>';
|
||
|
|
||
|
for (i=0;i<folders.length;i++)
|
||
|
{
|
||
|
if (i == vFolder)
|
||
|
continue;
|
||
|
t = folders[i].type + '#' + folders[i].id;
|
||
|
str += '<option value="' + t + '"';
|
||
|
if (cfolder == t)
|
||
|
str += ' selected="selected"';
|
||
|
str += '>';
|
||
|
if (folders[i].type == 'CUS')
|
||
|
str += folders[i].name;
|
||
|
else if (folders[i].type == 'IN')
|
||
|
str += 'Inbox';
|
||
|
else if (folders[i].type == 'INT')
|
||
|
str += 'Internal transmissions';
|
||
|
else
|
||
|
str += 'Sent messages';
|
||
|
str += '</option>';
|
||
|
}
|
||
|
|
||
|
str += '</select></td></tr></table>';
|
||
|
return str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function moveError()
|
||
|
{
|
||
|
alert('Please select a destination folder');
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmDelete(nm)
|
||
|
{
|
||
|
var str = 'You are about to delete ' + nm + ' message' + (nm > 1 ? 's' : '') + '.\nAre you sure?';
|
||
|
return confirm(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawFoldersList()
|
||
|
{
|
||
|
var i, str = '<h1>Folders management</h1>';
|
||
|
str += '<form action="?"><table cellspacing="0" cellpadding="0">';
|
||
|
str += '<tr class="fldhdr"><td class="fldspc"> </td><td class="fldspc"> </td>';
|
||
|
str += '<th class="fldname">Folder name</th><th class="msgcnt">Messages</th>';
|
||
|
str += '<th class="msgcnt">(New)</th><td class="fldspc"> </td></tr>';
|
||
|
str += '<tr class="fldlst"><td> </td><td colspan="4"><table cellspacing="0" cellpadding="0" class="list">';
|
||
|
for (i=0;i<folders.length;i++)
|
||
|
{
|
||
|
var fid = folders[i].type + '#' + folders[i].id;
|
||
|
str += '<tr><td class="fldspc"><input type="checkbox"' + msgtt[50] + 'name="selfld" value="'+i;
|
||
|
str += '" id="sfld'+i+'" onClick="switchFSel(\''+fid+'\');return true"';
|
||
|
if (folders[i].selected)
|
||
|
str += ' checked="checked"';
|
||
|
str += ' /></td><td class="fldname">';
|
||
|
switch (folders[i].type)
|
||
|
{
|
||
|
case "IN": str += "Inbox"; break;
|
||
|
case "INT": str += "Internal Transmissions"; break;
|
||
|
case "OUT": str += "Sent Messages"; break;
|
||
|
case "CUS": str += '<a href="#"' + msgtt[51] + ' onClick="renameFolder('+folders[i].id+'); return false">' + folders[i].name + '</a>'; break;
|
||
|
}
|
||
|
str += '</td><td class="msgcnt">' + folders[i].mCount;
|
||
|
str += '</td><td class="msgcnt">' + folders[i].nCount;
|
||
|
str += '</td></tr>';
|
||
|
}
|
||
|
str += '</table></td><td class="fldspc"> </td></tr>';
|
||
|
str += '<tr><td> </td><td colspan="4"><table cellspacing="0" cellpadding="0"><tr>';
|
||
|
str += '<td id="addfld"> </td>';
|
||
|
str += '<td id="chgfld"> </td>';
|
||
|
str += '</tr></table></td><td> </td></tr>';
|
||
|
str += '</table></form>';
|
||
|
document.getElementById('mbody').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawAddFolder()
|
||
|
{
|
||
|
var e, str2, str = '<input type="button" name="adfldb" id="adfldb" value="Create"' + msgtt[60] + ' onClick="addFolder(); return false" />';
|
||
|
str += ' a new folder: <input type="text" name="adfldn" id="adfldn" value="" />';
|
||
|
e = document.getElementById('adfldn');
|
||
|
str2 = e ? e.value : "";
|
||
|
document.getElementById('addfld').innerHTML = str;
|
||
|
document.getElementById('adfldn').value = str2;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawSFControls(cnt, cd)
|
||
|
{
|
||
|
var str = '<input type="button" name="flfldb" id="flfldb" value="Flush"' + msgtt[70] + ' onClick="flushFolders(); return false" />';
|
||
|
if (cd)
|
||
|
str += ' or <input type="button" name="rmfldb" id="rmfldb" value="delete"' + msgtt[71] + ' onClick="deleteFolders(); return false" />';
|
||
|
str += ' selected folder' + (cnt > 1 ? 's' : '') + '.';
|
||
|
document.getElementById('chgfld').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function promptRename(an)
|
||
|
{
|
||
|
return prompt("Please enter the new name for this folder.\nOriginal name: " + an, an);
|
||
|
}
|
||
|
|
||
|
|
||
|
function alertFolderName(mid)
|
||
|
{
|
||
|
var str = 'Error\n';
|
||
|
switch (mid)
|
||
|
{
|
||
|
case 0: str += "Empty folder names are not allowed"; break;
|
||
|
case 1: str += "Folder name is too long (max. 32 characters)"; break;
|
||
|
}
|
||
|
alert(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmFDelete(nf, nm)
|
||
|
{
|
||
|
var str = 'You are about to delete ' + nf + ' folder' + (nf > 1 ? 's' : '');
|
||
|
str += '.\nThis will result in the loss of ' + nm + ' message' + (nm > 1 ? 's' : '');
|
||
|
str += '.\nAre you sure ?';
|
||
|
return confirm(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmFFlush(nf, nm)
|
||
|
{
|
||
|
var str = 'You are about to flush ' + nf + ' folder' + (nf > 1 ? 's' : '');
|
||
|
str += '.\nThis will result in the loss of ' + nm + ' message' + (nm > 1 ? 's' : '');
|
||
|
str += '.\nAre you sure ?';
|
||
|
return confirm(str);
|
||
|
}
|