655 lines
24 KiB
JavaScript
655 lines
24 KiB
JavaScript
|
var pageTitles = new Array('Research topics', 'Laws', 'Research budget', 'Diplomacy');
|
||
|
var rTypes = new Array('Fundamental', 'Military', 'Civilian');
|
||
|
|
||
|
function makeResearchTooltips()
|
||
|
{
|
||
|
rett = new Array();
|
||
|
if (ttDelay == 0)
|
||
|
{
|
||
|
var i;
|
||
|
for (i=0;i<82;i++)
|
||
|
rett[i] = "";
|
||
|
return;
|
||
|
}
|
||
|
rett[0] = tt_Dynamic("Click here to hide / show this research topic");
|
||
|
rett[1] = tt_Dynamic("Click here to implement this technology");
|
||
|
rett[10] = tt_Dynamic("Click here to hide / show this law");
|
||
|
rett[11] = tt_Dynamic("Click here to revoke this law");
|
||
|
rett[12] = tt_Dynamic("Click here to enact this law");
|
||
|
rett[20] = tt_Dynamic("Click here to decrease the percentage of research points attributed to this category by 10 points");
|
||
|
rett[21] = tt_Dynamic("Click here to decrease the percentage of research points attributed to this category by 1 point");
|
||
|
rett[22] = tt_Dynamic("Click here to increase the percentage of research points attributed to this category by 1 point");
|
||
|
rett[23] = tt_Dynamic("Click here to increase the percentage of research points attributed to this category by 10 points");
|
||
|
rett[30] = tt_Dynamic("Click here to validate the new budget attributions");
|
||
|
rett[31] = tt_Dynamic("Click here to reset the budget attributions");
|
||
|
rett[40] = tt_Dynamic("Check this radio button to offer scientific assistance");
|
||
|
rett[41] = tt_Dynamic("Type here the name of the player to send the offer to");
|
||
|
rett[42] = tt_Dynamic("Type here the amount of cash you want to receive in exchange for the offer");
|
||
|
rett[43] = tt_Dynamic("Click here to send the offer");
|
||
|
rett[44] = tt_Dynamic("Check this radio button to offer the selected technology");
|
||
|
rett[45] = tt_Dynamic("Choose here the technology you want to offer");
|
||
|
rett[50] = tt_Dynamic("Select here the page of pending technology exchange offers you want to display");
|
||
|
rett[51] = tt_Dynamic("Click here to accept this technology exchange");
|
||
|
rett[52] = tt_Dynamic("Click here to decline this technology exchange");
|
||
|
rett[60] = tt_Dynamic("Selected here the page of the history of technology exchanges to display");
|
||
|
rett[70] = tt_Dynamic("Click here to implement new technologies, view foreseen breakthroughs and already implemented technologies");
|
||
|
rett[71] = tt_Dynamic("Click here to enact and revoke laws");
|
||
|
rett[72] = tt_Dynamic("Click here to balance your research budget between fundamental, military and civilian research");
|
||
|
rett[73] = tt_Dynamic("Click here to give or sell technologies and scientific knowledge with other empires, and examine offers made to you");
|
||
|
rett[80] = tt_Dynamic("Click here to unlock the category");
|
||
|
rett[81] = tt_Dynamic("Click here to prevent this category from being changed along with the other two");
|
||
|
}
|
||
|
|
||
|
function getLoadingText()
|
||
|
{
|
||
|
return "Loading page data ...";
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
function getTopicsPage()
|
||
|
{
|
||
|
var str = '<h1>New technologies</h1>';
|
||
|
var tl = '!' + rtExpanded.join('!!') + '!';
|
||
|
var i, d, id;
|
||
|
|
||
|
if (rtCompleted.length == 0)
|
||
|
str += '<p>No new technology has been discovered.</p>';
|
||
|
else
|
||
|
{
|
||
|
str += '<table cellspacing="0" cellpadding="0" class="list">';
|
||
|
str += '<tr><td class="sdesc"> </td><th class="tname">Technology</th><th class="itype">Type</th><th class="icost">Cost</th><td class="impl"> </td></tr>';
|
||
|
for (i=0;i<rtCompleted.length;i++)
|
||
|
{
|
||
|
id = rtCompleted[i];
|
||
|
d = (tl.indexOf('!' + id + '!') != -1);
|
||
|
str += '<tr><td class="sdesc"><a href="#" ' + rett[0] + ' onClick="' + (d ? 'hide' : 'show') + 'Description('+id+'); return false;">';
|
||
|
str += '[ ' + (d ? '-' : '+') + ' ]</a> </td>';
|
||
|
if (d) {
|
||
|
str += '<td rowspan="2"><span onClick="' + (d ? 'hide' : 'show') + 'Description('+id+')">' + rtTitles[id] + '</span><br/>';
|
||
|
str += rtDescriptions[id] + '<br/><a href="manual?p=tech_' + id
|
||
|
+ '" style="color:white;text-decoration:underline;font-weight:normal" target="_blank">More information ...</a></td>';
|
||
|
}
|
||
|
else
|
||
|
str += '<td onClick="' + (d ? 'hide' : 'show') + 'Description('+id+')">' + rtTitles[id] + '</td>';
|
||
|
str += '<td class="itype">' + rTypes[rtTypes[id]] + '</td>';
|
||
|
str += '<td class="icost">€' + formatNumber(rtCosts[id]) + '</td><td><a href="#" ' + rett[1] + ' onClick="';
|
||
|
str += 'implementTechnology(' + id + '); return false;">Implement technology</a></td>';
|
||
|
if (d)
|
||
|
str += '</tr><tr><td> </td><td colspan="3"> </td>';
|
||
|
str += '</tr>';
|
||
|
}
|
||
|
str += '</table><br/>';
|
||
|
}
|
||
|
|
||
|
str += '<h1>Foreseen breakthroughs</h1>';
|
||
|
if (rtForeseen.length == 0)
|
||
|
str += '<p>No breakthrough is currently in sight.</p>';
|
||
|
else
|
||
|
{
|
||
|
str += '<table cellspacing="0" cellpadding="0" class="list">';
|
||
|
str += '<tr><td class="sdesc"> </td><th class="tname">Technology</th><th class="itype">Type</th><th class="icost">Estimated cost</th><th class="compl">Completion</th></tr>';
|
||
|
for (i=0;i<rtForeseen.length;i++)
|
||
|
{
|
||
|
id = rtForeseen[i];
|
||
|
d = (tl.indexOf('!' + id + '!') != -1);
|
||
|
str += '<tr><td class="sdesc"><a href="#" ' + rett[0] + ' onClick="' + (d ? 'hide' : 'show') + 'Description('+id+'); return false;">';
|
||
|
str += '[ ' + (d ? '-' : '+') + ' ]</a> </td>';
|
||
|
if (d)
|
||
|
{
|
||
|
str += '<td rowspan="2"><span onClick="' + (d ? 'hide' : 'show') + 'Description('+id+')">' + rtTitles[id] + '</span><br/>';
|
||
|
str += rtDescriptions[id] + '<br/><a href="manual?p=tech_' + id
|
||
|
+ '" style="color:white;text-decoration:underline;font-weight:normal" target="_blank">More information ...</a></td>';
|
||
|
}
|
||
|
else
|
||
|
str += '<td onClick="' + (d ? 'hide' : 'show') + 'Description('+id+')">' + rtTitles[id] + '</td>';
|
||
|
str += '<td class="itype">' + rTypes[rtTypes[id]] + '</td>';
|
||
|
str += '<td class="icost">€' + formatNumber(rtCosts[id]) + '</td><td class="compl">' + rtForeseenP[id] + '%</td>';
|
||
|
if (d)
|
||
|
str += '</tr><tr><td> </td><td colspan="2"> </td>';
|
||
|
str += '</tr>';
|
||
|
}
|
||
|
str += '</table><br/>';
|
||
|
}
|
||
|
|
||
|
str += '<h1>Implemented technologies</h1><table cellspacing="0" cellpadding="0"><tr>'
|
||
|
+ drawImplementedList(tl, 0) + drawImplementedList(tl, 1) + drawImplementedList(tl, 2)
|
||
|
+ '</tr></table>';
|
||
|
|
||
|
return str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawImplementedList(tl, type)
|
||
|
{
|
||
|
var str = '<td class="div3"><h3>' + rTypes[type] + ' research</h3>';
|
||
|
if (rtImplemented.length == 0)
|
||
|
return str + '<p>No such technology has been implemented at the moment.</p></td>';
|
||
|
|
||
|
var n = 0;
|
||
|
for (i=0;i<rtImplemented.length;i++)
|
||
|
{
|
||
|
id = rtImplemented[i];
|
||
|
if (rtTypes[id] != type)
|
||
|
continue;
|
||
|
if (n == 0)
|
||
|
str += '<table class="list">';
|
||
|
n ++;
|
||
|
d = (tl.indexOf('!' + id + '!') != -1);
|
||
|
str += '<tr><td class="sdesc"><a href="#" ' + rett[0] + ' onClick="' + (d ? 'hide' : 'show') + 'Description('+id+'); return false;">';
|
||
|
str += '[ ' + (d ? '-' : '+') + ' ]</a> </td>';
|
||
|
if (d)
|
||
|
{
|
||
|
str += '<td rowspan="2"><span onClick="' + (d ? 'hide' : 'show') + 'Description('+id+')">' + rtTitles[id] + '</span><br/>';
|
||
|
str += rtDescriptions[id] + '<br/><a href="manual?p=tech_' + id
|
||
|
+ '" style="color:white;text-decoration:underline;font-weight:normal" target="_blank">More information ...</a></td></tr><tr><td> </td></tr>';
|
||
|
}
|
||
|
else
|
||
|
str += '<td onClick="' + (d ? 'hide' : 'show') + 'Description('+id+')">' + rtTitles[id] + '</td></tr>';
|
||
|
}
|
||
|
if (n>0)
|
||
|
str += '</table></td>';
|
||
|
else
|
||
|
str += '<p>No such technology has been implemented at the moment.</p></td>';
|
||
|
return str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmTech(id)
|
||
|
{
|
||
|
var str;
|
||
|
str = 'Implementing ' + rtTitles[id] + '\nThis will cost ' + formatNumber(rtCosts[id]) + ' euros.\n';
|
||
|
str += 'Are you sure you want to do this?';
|
||
|
return confirm(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function implError(code) {
|
||
|
var str = 'Error: ';
|
||
|
switch (code) {
|
||
|
case 0:
|
||
|
str += 'you do not have enough cash to implement this technology';
|
||
|
break;
|
||
|
case 1:
|
||
|
str += 'trying to cheat by hacking the server _is_ evil';
|
||
|
break;
|
||
|
case 200:
|
||
|
str += 'you can\'t implement technologies while in vacation mode';
|
||
|
break;
|
||
|
default:
|
||
|
str += 'an unknown error has occured';
|
||
|
break;
|
||
|
}
|
||
|
alert(str + '.');
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
function getLawsPage()
|
||
|
{
|
||
|
var str = '<h1>Enacted laws</h1>';
|
||
|
var tl = '!' + rtExpanded.join('!!') + '!';
|
||
|
var i, d, id;
|
||
|
|
||
|
if (lEnacted.length == 0)
|
||
|
str += '<p>No laws have been enacted yet.</p>';
|
||
|
else
|
||
|
{
|
||
|
str += '<table cellspacing="0" cellpadding="0" class="list">';
|
||
|
str += '<tr><td class="sdesc"> </td><th class="tname">Law</th><th class="icost">Cost</th><td class="impl"> </td></tr>';
|
||
|
for (i=0;i<lEnacted.length;i++)
|
||
|
{
|
||
|
id = lEnacted[i];
|
||
|
d = (tl.indexOf('!' + id + '!') != -1);
|
||
|
str += '<tr><td class="sdesc"><a href="#" ' + rett[10] + 'onClick="' + (d ? 'hide' : 'show') + 'Description('+id+'); return false;">';
|
||
|
str += '[ ' + (d ? '-' : '+') + ' ]</a> </td>';
|
||
|
if (d)
|
||
|
str += '<td rowspan="2">' + rtTitles[id] + '<br/>' + rtDescriptions[id] + '<br/><a href="manual?p=tech_' + id + '" style="color:white;text-decoration:underline;font-weight:normal" target="_blank">More information ...</a></td>';
|
||
|
else
|
||
|
str += '<td>' + rtTitles[id] + '</td>';
|
||
|
if (lTimeRevoke[id] == 0)
|
||
|
{
|
||
|
str += '<td class="icost">€' + formatNumber(rtCosts[id]) + '</td><td><a href="#" ' + rett[11] + ' onClick="';
|
||
|
str += 'revokeLaw(' + id + '); return false;">Revoke</a></td>';
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
str += '<td colspan="2">' + lTimeRevoke[id] + ' day' + (lTimeRevoke[id] > 1 ? 's' : '');
|
||
|
str += ' left before the law can be revoked.</td>';
|
||
|
}
|
||
|
if (d)
|
||
|
str += '</tr><tr><td> </td><td colspan="2"> </td>';
|
||
|
str += '</tr>';
|
||
|
}
|
||
|
str += '</table><br/>';
|
||
|
}
|
||
|
|
||
|
str += '<h1>Available laws</h1>';
|
||
|
if (lAvailable.length == 0)
|
||
|
str += '<p>No laws are available.</p>';
|
||
|
else
|
||
|
{
|
||
|
str += '<table cellspacing="0" cellpadding="0" class="list">';
|
||
|
str += '<tr><td class="sdesc"> </td><th class="tname">Law</th><th class="icost">Cost</th><td class="impl"> </td></tr>';
|
||
|
for (i=0;i<lAvailable.length;i++)
|
||
|
{
|
||
|
id = lAvailable[i];
|
||
|
d = (tl.indexOf('!' + id + '!') != -1);
|
||
|
str += '<tr><td class="sdesc"><a href="#" ' + rett[10] + ' onClick="' + (d ? 'hide' : 'show') + 'Description('+id+'); return false;">';
|
||
|
str += '[ ' + (d ? '-' : '+') + ' ]</a> </td>';
|
||
|
if (d)
|
||
|
str += '<td rowspan="2">' + rtTitles[id] + '<br/>' + rtDescriptions[id] + '<br/><a href="manual?p=tech_' + id + '" style="color:white;text-decoration:underline;font-weight:normal" target="_blank">More information ...</a></td>';
|
||
|
else
|
||
|
str += '<td>' + rtTitles[id] + '</td>';
|
||
|
if (lTimeEnact[id] == 0)
|
||
|
{
|
||
|
str += '<td class="icost">€' + formatNumber(rtCosts[id]) + '</td><td><a href="#" ' + rett[12] + ' onClick="';
|
||
|
str += 'enactLaw(' + id + '); return false;">Enact</a></td>';
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
str += '<td colspan="2">' + lTimeEnact[id] + ' day' + (lTimeEnact[id] > 1 ? 's' : '');
|
||
|
str += ' left before the law can be enacted.</td>';
|
||
|
}
|
||
|
if (d)
|
||
|
str += '</tr><tr><td> </td><td colspan="2"> </td>';
|
||
|
str += '</tr>';
|
||
|
}
|
||
|
str += '</table><br/>';
|
||
|
}
|
||
|
|
||
|
return str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmEnact(id)
|
||
|
{
|
||
|
var str;
|
||
|
str = 'Enacting ' + rtTitles[id] + ' will cost ' + formatNumber(rtCosts[id]) + ' euros.\n';
|
||
|
str += 'You will not be able to revoke the law before 5 days have passed.\n';
|
||
|
str += 'Are you sure you want to do this?';
|
||
|
return confirm(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmRevoke(id)
|
||
|
{
|
||
|
var str;
|
||
|
str = 'Revoking ' + rtTitles[id] + ' will cost ' + formatNumber(rtCosts[id]) + ' euros.\n';
|
||
|
str += 'You will not be able to enact the law again before 5 days have passed.\n';
|
||
|
str += 'Are you sure you want to do this?';
|
||
|
return confirm(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function slawError(code) {
|
||
|
var str = 'Error: ';
|
||
|
switch (code) {
|
||
|
case 0:
|
||
|
str += 'you do not have enough cash to switch this law\'s status';
|
||
|
break;
|
||
|
case 1:
|
||
|
str += 'trying to cheat by hacking the server _is_ evil';
|
||
|
break;
|
||
|
case 200:
|
||
|
str += 'you can\'t enact or revoke laws while in vacation mode';
|
||
|
break;
|
||
|
default:
|
||
|
str += 'an unknown error has occured';
|
||
|
break;
|
||
|
}
|
||
|
alert(str + '.');
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function budgetError(code) {
|
||
|
var str = 'Error: ';
|
||
|
switch (code) {
|
||
|
case 0:
|
||
|
str += 'trying to cheat by hacking the server _is_ evil';
|
||
|
break;
|
||
|
case 200:
|
||
|
str += 'you can\'t modify your research budget while in vacation mode';
|
||
|
break;
|
||
|
default:
|
||
|
str += 'an unknown error has occured';
|
||
|
break;
|
||
|
}
|
||
|
alert(str + '.');
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function drawAttributionsDisplay()
|
||
|
{
|
||
|
var i, str = '<h1>Research budget</h1>';
|
||
|
str += '<p>Research points: <b id="totRPoints"></b> per day</p>';
|
||
|
str += '<form action="?"><table class="rbudget" cellspacing="0" cellpadding="0">';
|
||
|
|
||
|
for (i=0;i<rTypes.length;i++)
|
||
|
{
|
||
|
str += '<tr>';
|
||
|
if (i==0)
|
||
|
str += '<td class="rbico" rowspan="' + rTypes.length + '"> </td>';
|
||
|
str += '<td class="rbttl">' + rTypes[i] + ' research:</td>';
|
||
|
if (i==0)
|
||
|
str += '<td class="rbico" rowspan="' + rTypes.length + '"> </td>';
|
||
|
str += '<td class="rbico" ' + rett[20] + ' onClick="changeAttr(' + i + ', -10);"><img src="'+staticurl+'/beta5/pics/dec2_'+color+'.gif" alt="<<" /></td>';
|
||
|
str += '<td class="rbico" ' + rett[21] + ' onClick="changeAttr(' + i + ', -1);"><img src="'+staticurl+'/beta5/pics/dec1_'+color+'.gif" alt="<" /></td>';
|
||
|
str += '<td class="rbval"><b id="rbval' + i + '"> </b>%</td>';
|
||
|
str += '<td class="rbico" ' + rett[22] + ' onClick="changeAttr(' + i + ', 1);"><img src="'+staticurl+'/beta5/pics/add1_'+color+'.gif" alt=">" /></td>';
|
||
|
str += '<td class="rbico" ' + rett[23] + ' onClick="changeAttr(' + i + ', 10);"><img src="'+staticurl+'/beta5/pics/add2_'+color+'.gif" alt=">>" /></td>';
|
||
|
if (i==0)
|
||
|
str += '<td class="rbico" rowspan="' + rTypes.length + '"> </td>';
|
||
|
str += '<td class="rbico" id="rblock'+i+'"> </td>';
|
||
|
if (i==0)
|
||
|
str += '<td class="rbico" rowspan="' + rTypes.length + '"> </td>';
|
||
|
str += '<td><b id="rbpts'+i+'"> </b> point(s)</td></tr>';
|
||
|
}
|
||
|
str += '<tr><td colspan="12"> </td></tr>';
|
||
|
str += '<tr id="rbctrl"><td class="rbcl" colspan="5" id="rbcl"> </td><td> </td>';
|
||
|
str += '<td class="rbcr" colspan="6" id="rbcr"> </td></tr>';
|
||
|
str += '</table></form>';
|
||
|
|
||
|
document.getElementById('respage').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawBudgetControls()
|
||
|
{
|
||
|
document.getElementById('rbcl').innerHTML = '<input ' + rett[30] + ' type="button" name="ok" value="Modify research budget" onClick="validateBudget(); return false;" />';
|
||
|
document.getElementById('rbcr').innerHTML = '<input ' + rett[31] + ' type="button" name="cancel" value="Reset to previous values" onClick="resetBudget(); return false;" />';
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function drawDiplomacyRestrained(d)
|
||
|
{
|
||
|
var str = '<h1>Give / receive scientific assistance</h1>';
|
||
|
str += '<p>Your account is too young to use this feature. You must wait for ' + d + ' more day' + (d > 1 ? 's' : '') + '.</p>';
|
||
|
document.getElementById('respage').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawRDSentAlready()
|
||
|
{
|
||
|
var str = '<h1>Send scientific assistance</h1>';
|
||
|
str += '<p>We already sent an assistance offer in the last 22 hours (<b>' + formatDate(rdSentOffer.time) + '</b>).<br/>';
|
||
|
str += 'We offered to give <b>' + rdSentOffer.player + '</b> ';
|
||
|
if (rdSentOffer.tech == "")
|
||
|
str += 'research assistance';
|
||
|
else
|
||
|
str += 'the "<b>' + rtTitles[rdSentOffer.tech] + '</b>" technology';
|
||
|
if (rdSentOffer.price > 0)
|
||
|
str += ' in exchange for <b>€' + formatNumber(rdSentOffer.price) + '</b>';
|
||
|
str += '; the offer ';
|
||
|
if (rdSentOffer.status == "P")
|
||
|
str += 'is <b>still pending</b>.';
|
||
|
else if (rdSentOffer.status == "A")
|
||
|
str += 'has been <b>accepted</b>.';
|
||
|
else
|
||
|
str += 'has been <b>declined</b>.';
|
||
|
str += '</p>';
|
||
|
document.getElementById('rdgive').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawRDSendForm()
|
||
|
{
|
||
|
var i, str = '<h1>Send scientific assistance</h1>';
|
||
|
|
||
|
str += '<table cellspacing="0" cellpadding="0"><tr><td class="div20"> </td>';
|
||
|
str += '<td>Offer </td><td';
|
||
|
if (rdAvailTech.length > 0)
|
||
|
{
|
||
|
str += ' onClick="rdfType=0;document.getElementById(\'rdstype0\').checked=true" >';
|
||
|
str += '<input type="radio" ' + rett[40] + ' name="rdstype" id="rdstype0" value="0"';
|
||
|
if (rdfType == 0)
|
||
|
str += ' checked="checked"';
|
||
|
str += ' onClick="rdfType = 0;" /';
|
||
|
}
|
||
|
str += '> research assistance</td><td>to player <input ' + rett[41] + ' type="text" name="rdsto" id="rdsto" value="';
|
||
|
str += '" onChange="rdfTarget=this.value" /> in exchange for €<input ' + rett[42] + ' type="text" name="rdsprice" id="rdsprice" value="';
|
||
|
str += '" onChange="rdfPrice=this.value" /></td><td class="div10"><input ' + rett[43] + ' type="button" value="Send offer" ';
|
||
|
str += 'onClick="sendOffer();return false" /></td></tr>';
|
||
|
if (rdAvailTech.length > 0)
|
||
|
{
|
||
|
str += '<tr><td colspan="2"> </td><td onClick="rdfType=1;document.getElementById(\'rdstype1\').checked=true"';
|
||
|
str += '><input type="radio" ' + rett[44] + ' name="rdstype" id="rdstype1" value="1"';
|
||
|
if (rdfType == 1)
|
||
|
str += ' checked="checked"';
|
||
|
str += ' onClick="rdfType = 1;" /> the <select ' + rett[45] + ' name="rdstech" id="rdstech"';
|
||
|
str += ' onChange="rdfTech=parseInt(this.options[this.selectedIndex].value, 10)">';
|
||
|
str += '<option value="0">-- select --</option>';
|
||
|
for (i=0;i<rdAvailTech.length;i++)
|
||
|
{
|
||
|
str += '<option value="'+rdAvailTech[i]+'"';
|
||
|
if (rdAvailTech[i] == rdfTech)
|
||
|
str += ' selected="selected"';
|
||
|
str += '>' + rtTitles[rdAvailTech[i]] + '</option>';
|
||
|
}
|
||
|
str += '</select> technology</td><td colspan="2"> </td></tr>';
|
||
|
}
|
||
|
str += '</table>';
|
||
|
|
||
|
document.getElementById('rdgive').innerHTML = str;
|
||
|
document.getElementById('rdsto').value = rdfTarget;
|
||
|
document.getElementById('rdsprice').value = rdfPrice;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawRDPending()
|
||
|
{
|
||
|
var str = '<h1>Received assistance offers</h1>';
|
||
|
if (rdRecOffers.length == 0)
|
||
|
str += '<p>No assistance offers have been received.</p>';
|
||
|
else
|
||
|
{
|
||
|
var n, m, i;
|
||
|
n = rdRecOffers.length;
|
||
|
m = n % 5;
|
||
|
n = (n-m)/5 + (m>0?1:0);
|
||
|
if (rdRecPage >= n)
|
||
|
rdRecPage = n-1;
|
||
|
|
||
|
str += '<table cellspacing="0" cellpadding="0"><tr><td class="div20" rowspan="3"> </td><td>Page ';
|
||
|
if (n == 1)
|
||
|
str += "1 / 1";
|
||
|
else
|
||
|
{
|
||
|
str += '<select ' + rett[50] + ' name="rdrpage" id="rdrpage" onChange="rdRecToPage(this.options[this.selectedIndex].value)">';
|
||
|
for (i=0;i<n;i++)
|
||
|
{
|
||
|
str += '<option value="' + i + '"';
|
||
|
if (rdRecPage == i)
|
||
|
str += ' selected="selected"';
|
||
|
str += '>' + (i+1) + '</option>';
|
||
|
}
|
||
|
str += '</select> / ' + n;
|
||
|
}
|
||
|
str += '</td></tr><tr><td> </td></tr><tr><td><table class="list" cellspacing="0" cellpadding="0">';
|
||
|
var r = new Array(
|
||
|
'Unfortunately, we do not have enough cash to accept this offer.',
|
||
|
'Since we have already accepted another offer in the past 22 hours, we cannot accept this offer.',
|
||
|
'However, we have already discovered or are about to discover this technology.',
|
||
|
'However, we do not have the scientific knowledge required to accept this offer.'
|
||
|
);
|
||
|
for (i=5*rdRecPage;i<rdRecOffers.length&&i<5*(rdRecPage+1);i++)
|
||
|
{
|
||
|
str += '<tr><td>Player <b>' + rdRecOffers[i].player + '</b> has offered to give us ';
|
||
|
if (rdRecOffers[i].tech == "")
|
||
|
str += '<b>scientific assistance</b>';
|
||
|
else
|
||
|
str += 'the "<b>' + rtTitles[rdRecOffers[i].tech] + '</b>" technology';
|
||
|
if (rdRecOffers[i].price > 0)
|
||
|
str += ' in exchange for <b>€' + formatNumber(rdRecOffers[i].price) + '</b>';
|
||
|
str += '. The offer was received at ' + formatDate(rdRecOffers[i].time) + '.<br/>';
|
||
|
|
||
|
if (rdRecOffers[i].status2 == 0)
|
||
|
{
|
||
|
str += '<input ' + rett[51] + ' type="button" value="Accept" onClick="acceptOffer(' + rdRecOffers[i].id + ');return false" />';
|
||
|
str += ' <input ' + rett[52] + ' type="button" value="Decline" onClick="rejectOffer(' + rdRecOffers[i].id + ');return false" />';
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
str += r[rdRecOffers[i].status2 - 1] + ' You may either decline the offer or let it expire.<br/>';
|
||
|
str += '<input type="button" ' + rett[52] + ' value="Decline" onClick="rejectOffer(' + rdRecOffers[i].id + ');return false" />';
|
||
|
}
|
||
|
|
||
|
str += '<hr/></td></tr>';
|
||
|
}
|
||
|
str += '</table></td></tr></table>';
|
||
|
}
|
||
|
document.getElementById('rdrec').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function drawRDHistory()
|
||
|
{
|
||
|
var str = '<h1>History</h1>';
|
||
|
if (rdHistory.length == 0)
|
||
|
str += '<p>The history is empty.</p>';
|
||
|
else
|
||
|
{
|
||
|
var n, m, i;
|
||
|
n = rdHistory.length;
|
||
|
m = n % 5;
|
||
|
n = (n-m)/5 + (m>0?1:0);
|
||
|
if (rdHistPage >= n)
|
||
|
rdHistPage = n-1;
|
||
|
|
||
|
str += '<table cellspacing="0" cellpadding="0"><tr><td class="div20" rowspan="3"> </td><td>Page ';
|
||
|
if (n == 1)
|
||
|
str += "1 / 1";
|
||
|
else
|
||
|
{
|
||
|
str += '<select ' + rett[60] + ' name="rdhpage" id="rdhpage" onChange="rdHistToPage(this.options[this.selectedIndex].value)">';
|
||
|
for (i=0;i<n;i++)
|
||
|
{
|
||
|
str += '<option value="' + i + '"';
|
||
|
if (rdHistPage == i)
|
||
|
str += ' selected="selected"';
|
||
|
str += '>' + (i+1) + '</option>';
|
||
|
}
|
||
|
str += '</select> / ' + n;
|
||
|
}
|
||
|
str += '</td></tr><tr><td> </td></tr><tr><td><table class="list" cellspacing="0" cellpadding="0">';
|
||
|
for (i = 5 * rdHistPage; i < rdHistory.length && i < 5 * (rdHistPage + 1); i ++) {
|
||
|
str += '<tr><td>';
|
||
|
if (rdHistory[i].type == "R")
|
||
|
str +='Player <b>' + rdHistory[i].player + '</b> offered to give us ';
|
||
|
else
|
||
|
str +='We offered to give player <b>' + rdHistory[i].player + '</b> ';
|
||
|
if (rdHistory[i].tech == "")
|
||
|
str += '<b>scientific assistance</b>';
|
||
|
else
|
||
|
str += 'the "<b>' + rtTitles[rdHistory[i].tech] + '</b>" technology';
|
||
|
if (rdHistory[i].price > 0)
|
||
|
str += ' in exchange for <b>€' + formatNumber(rdHistory[i].price) + '</b>';
|
||
|
str += '. The offer was ' + (rdHistory[i].type == "R" ? 'received' : 'sent') + ' at ' + formatDate(rdHistory[i].time);
|
||
|
str += ' and ';
|
||
|
if (rdHistory[i].status == "E")
|
||
|
str += "<b>expired</b> one day later.";
|
||
|
else if (rdHistory[i].status == "A")
|
||
|
str += "was <b>accepted</b>.";
|
||
|
else
|
||
|
str += "was <b>declined</b>.";
|
||
|
|
||
|
str += '<hr/></td></tr>';
|
||
|
}
|
||
|
str += '</table></td></tr></table>';
|
||
|
}
|
||
|
document.getElementById('rdhist').innerHTML = str;
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmSendOffer(tp, tc, pl, pr)
|
||
|
{
|
||
|
var str = "You are about to offer ";
|
||
|
if (tp == 0)
|
||
|
str += "scientific assistance";
|
||
|
else
|
||
|
str += 'data on the "' + rtTitles[tc] + '" technology';
|
||
|
str += '\nto ' + pl;
|
||
|
if (pr > 0)
|
||
|
str += ' in exchange for ' + formatNumber(pr.toString()) + ' euros.';
|
||
|
str += '\nYou will not be able to make another offer for 24 hours.';
|
||
|
return confirm(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function rdOfferError(ec)
|
||
|
{
|
||
|
var str = "Error :\n";
|
||
|
|
||
|
switch (ec)
|
||
|
{
|
||
|
case 1: str += "You have not selected a technology to offer."; break
|
||
|
case 2: str += "You have not specified a player to send the offer to."; break;
|
||
|
case 3: str += "The price you specified is invalid."; break;
|
||
|
case 4: str += "This player does not exist."; break;
|
||
|
case 5: str += "You do not seem to have this technology."; break;
|
||
|
case 6: str += "You can't send a diplomatic offer to yourself."; break;
|
||
|
case 7: str += "This player is on vacation."; break;
|
||
|
case 8: str += "Invalid data received."; break;
|
||
|
case 9: str += "It seems you have already sent an offer in the past 24h."; break;
|
||
|
case 10: str += "This player is under Peacekeeper protection."; break;
|
||
|
case 200: str += "You can't send diplomatic offers while in vacation mode."; break;
|
||
|
case 201: str += "You can't send diplomatic offers while under Peacekeeper protection."; break;
|
||
|
default: str += "An unknown error has happened ("+ec+")."; break;
|
||
|
}
|
||
|
|
||
|
alert(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function rdAcceptError(ec) {
|
||
|
var str = "Error :\n";
|
||
|
|
||
|
switch (ec) {
|
||
|
case 1: str += "You do not have enough cash to accept this offer."; break
|
||
|
case 2: str += "You have already accepted this offer."; break;
|
||
|
case 3: str += "You have already declined this offer."; break;
|
||
|
case 4: str += "Unknown offer identifier."; break;
|
||
|
case 5: str += "You don't have the dependencies for this technology."; break;
|
||
|
case 200: str += "You can't accept or reject diplomatic offers while in vacation mode."; break;
|
||
|
case 201: str += "You can't accept diplomatic offers while under Peacekeeper protection."; break;
|
||
|
default: str += "An unknown error has happened ("+ec+")."; break;
|
||
|
}
|
||
|
|
||
|
alert(str);
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmAcceptOffer(i)
|
||
|
{
|
||
|
var str = "Are you sure you want to accept " + rdRecOffers[i].player + "'s offer to\ngive us ";
|
||
|
if (rdRecOffers[i].type == "R")
|
||
|
str += "scientific assistance";
|
||
|
else
|
||
|
str += "the \"" + rtTitles[rdRecOffers[i].tech] + "\" technology";
|
||
|
if (rdRecOffers[i].price > 0)
|
||
|
str += " in exchange for\n" + formatNumber(rdRecOffers[i].price) + " euros";
|
||
|
str += "?";
|
||
|
return confirm(str);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
function confirmRejectOffer(i)
|
||
|
{
|
||
|
var str = "Are you sure you want to decline " + rdRecOffers[i].player + "'s offer to\ngive us ";
|
||
|
if (rdRecOffers[i].type == "R")
|
||
|
str += "scientific assistance";
|
||
|
else
|
||
|
str += "the \"" + rtTitles[rdRecOffers[i].tech] + "\" technology";
|
||
|
if (rdRecOffers[i].price > 0)
|
||
|
str += " in exchange for\n" + formatNumber(rdRecOffers[i].price) + " euros";
|
||
|
str += "?";
|
||
|
return confirm(str);
|
||
|
|
||
|
}
|