var scorePages = new Object;
var currentPage = new Object;
function scoresRequestPage(mapid, page) {
// console.log('scoresRequestPage', mapid, page);
if (typeof(ajax) != 'object') {
setTimeout(function() {scoresRequestPage(mapid, page)},200);
return false;
}
// Ask again if it's busy.
switch (ajax.xmlhttp.readyState) {
case 4:
case 0:
break;
default:
setTimeout(function() {scoresRequestPage(mapid, page)},300);
return false;
}
//console.log("Requesting Page", mapid, page, ajax.inUse);
// == Additionally, check for achievements.
ajax.requestFile = "do.php?r=reqScorePage&mapid="+mapid+"&reqPage="+page;
ajax.onCompletion = scoresRequestPageDone; // Specify function to be executed on response.
//ajax.onLoading = '';
//ajax.onLoaded = '';
//ajax.onFail = '';
ajax.runAJAX();// Do it!
return true;
}
function scoresRequestLoading() {
//Signify that it's working in some manner?
//console.log("I'm loading teh page...");
}
function scoresRequestPageDone() {
//console.log("Request Page Done", ajax.response);
var JO = decryptJSON(ajax.response);
if (JO == undefined)
return;
scoresUpdatePage(JO.mapid, JO.page, scoresFormatPage(JO));
if (JO.notificationtext != undefined) {
showNotification(JO.notificationtext);
if (checkSound(JO.mapid)) {
soundManager.setVolume('achieve', 50);
setTimeout("soundManager.play('achieve');", 350);
}
}
}
function scoresUpdatePage(mapid, page, html) {
// console.log("Updating Page", mapid, page);
scoresPreparePage(mapid, page);
scorePages[mapid][page].html = html;
//if (scorePages[mapid][page] == currentPage[mapid]) {
if (page == currentPage[mapid]) {
scoresShowPage(mapid, page);
}
}
function scoresShowMyPage(mapid) {
//Future use
}
function scoresShowPage(mapid, page) {
mapid = mapid - 0;
page = page - 0;
// console.log('scoresShowPage', mapid, page);
if (scoresPreparePage(mapid, page) == false) {
currentPage[mapid] = page;
// currentPage[mapid] = scorePages[mapid][page];
//Signify some sort of loadingness?
//Request Page
scoresRequestPage(mapid, page);
return;
}
if (typeof(scorePages[mapid][page].html) === 'undefined') {
scoresRequestPage(mapid, page);
currentPage[mapid] = page;
return;
}
// console.log('scorpages', scorePages[mapid][page].html);
updateDsp(mapid, 'dspScore', scorePages[mapid][page].html);
//Also; update the page
// console.log('here', scorePages[mapid][page], currentPage[mapid], scorePages[mapid][page] != currentPage[mapid]);
if (page != currentPage[mapid]) {
scoresRequestPage(mapid, page);
}
currentPage[mapid] = page;
//currentPage[mapid] = scorePages[mapid][page];
}
function scoresPreparePage (mapid, page) {
if (typeof(scorePages[mapid]) != 'object') {
scorePages[mapid] = new Object;
scorePages[mapid][page] = new Object;
return false;
}
if (typeof(scorePages[mapid][page]) != 'object') {
scorePages[mapid][page] = new Object;
return false;
}
return true;
}
function scoresFormatPage(JO) {
// console.log("Formating page");
var p = "
";
if (JO.pageCount > 1) {
var navi = scoresFormatPageNavi(JO);
p = p+""+navi+" |
";
}
p = p+"";
p = p+"Rank | ";
p = p+"Name | ";
p = p+"Moves | ";
p = p+"
";
var showedLastUser = true;
var x = 0;
var previousI = 0;
for (var i in JO.users) {
var u = JO.users[i];
var scoredLocalTime = new Date();
scoredLocalTime.setTime(scoredLocalTime.getTime() - u.secondsSinceScored * 1000);
var styleClass = '';
if (previousI != i + 1)
if (previousI < i - 1 && previousI != 0)
styleClass = 'border-top: 6px solid #777799;';
p = p+ "";
p = p+ "";
if (u.medal == 'gold') {
p = p+ " ";
} else if (u.medal == 'silver') {
p = p+ " ";
} else {
p = p+ " ";
}
p = p+ i+ " | ";
p = p+ "";
p = p+ " ";
p = p+ " ";
p = p+ " ";
p = p+ " ";
p = p+ "";
p = p+ ""+u.display+"";
p = p+ " | ";
p = p+ ""+u.moves+" | ";
p = p+ "
";
previousI = i;
}
//p = p+""+navi+" |
";
p = p+"
";
var nextPage = JO.page - 0 + 1;
var prevPage = JO.page - 1;
if (JO.pageCount > 1) {
if (JO.page < JO.pageCount) {
p = p+">";
} else
p = ">
"+p;
if (JO.page > 1) {
p = "<"+p;
} else
p = "<
"+p;
}
p = ""+p+"
";
//console.log(p);
//console.log('jo page', JO.page);
//console.log('jo pagecount', JO.pageCount);
//javascript:scoresShowPage($mapid, $x)
//p = JO.navi+p;
return p;
}
function scoresFormatPageNavi(JO) {
var r = '';
var showedPrevPage = true;
for (var i = 1; i <= JO.pageCount; i++) {
if (
(JO.page > i - 3 && JO.page < i + 3)
|| (i == 1)
|| (i == JO.pageCount)
|| (i == JO.userPage)
) {
if (!showedPrevPage)
r = r + ' ... ';
if (JO.page == i) {
r = r + " " + i + "";
} else if (i == JO.userPage) {
r = r + " " + i + '';
} else {
r = r + " " + i + '';
}
showedPrevPage = true;
} else {
showedPrevPage = false;
}
}
return r;
}
//Memberlist related functions:
var membersPages = new Object;
var membersCurrentPage = 1;
function membersRequestPage(page) {
console.log('membersRequestPage', page);
if (typeof(ajax) != 'object') {
setTimeout(function() {membersRequestPage(page)},200);
return false;
}
// Ask again if it's busy.
switch (ajax.xmlhttp.readyState) {
case 4:
case 0:
break;
default:
setTimeout(function() {membersRequestPage(page)},300);
return false;
}
//console.log("Requesting Page", page, ajax.inUse);
// == Additionally, check for achievements.
ajax.requestFile = "do.php?r=reqMemberPage&reqPage="+page;
ajax.onCompletion = membersRequestPageDone; // Specify function to be executed on response.
//ajax.onLoading = '';
//ajax.onLoaded = '';
//ajax.onFail = '';
ajax.runAJAX();// Do it!
return true;
}
function membersRequestPageDone() {
//console.log("Request Page Done", ajax.response);
var JO = decryptJSON(ajax.response);
if (JO == undefined)
return;
membersUpdatePage(JO.page, membersFormatPage(JO));
}
function membersShowPage(page) {
page = page - 0;
console.log('membersShowPage', page);
if (membersPreparePage(page) == false) {
membersCurrentPage = page;
//Signify some sort of loadingness?
//Request Page
membersRequestPage(page);
return;
}
if (typeof(membersPages[page].html) === 'undefined') {
membersRequestPage(page);
membersCurrentPage = page;
return;
}
document.getElementById('members').innerHTML = membersPages[page].html
//Also; update the page
if (page != membersCurrentPage) {
membersRequestPage(page);
}
membersCurrentPage = page;
}
function membersPreparePage (page) {
if (typeof(membersPages) != 'object') {
membersPages = new Object;
membersPages[page] = new Object;
return false;
}
if (typeof(membersPages[page]) != 'object') {
membersPages[page] = new Object;
return false;
}
return true;
}
function membersUpdatePage(page, html) {
console.log("Updating Page", page);
membersPreparePage(page);
membersPages[page].html = html;
if (page == membersCurrentPage) {
membersShowPage(page);
}
}
function membersFormatPageNavi(JO) {
var r = '';
var showedPrevPage = true;
for (var i = 1; i <= JO.pageCount; i++) {
if (
(JO.page > i - 3 && JO.page < i + 3)
|| (i == 1)
|| (i == JO.pageCount)
|| (i == JO.userPage)
) {
if (!showedPrevPage)
r = r + ' ... ';
if (JO.page == i) {
r = r + " " + i + "";
} else if (i == JO.userPage) {
r = r + " " + i + '';
} else {
r = r + " " + i + '';
}
showedPrevPage = true;
} else {
showedPrevPage = false;
}
}
return r;
}
function membersFormatPage(JO) {
// console.log("Formating page");
var p = "";
if (JO.pageCount > 1) {
var navi = membersFormatPageNavi(JO);
p = p+""+navi+" |
";
}
p = p+"";
p = p+"Rank | ";
p = p+"Name | ";
p = p+"Mazes | ";
p = p+"Moves | ";
p = p+"Past Week | ";
p = p+"Wins | ";
p = p+"Ties | ";
p = p+"Joined | ";
p = p+"Last Login | ";
p = p+"
";
var showedLastUser = true;
var x = 0;
var previousI = 0;
for (var i in JO.users) {
var u = JO.users[i];
var scoredLocalTime = new Date();
scoredLocalTime.setTime(scoredLocalTime.getTime() - u.secondsSinceScored * 1000);
var styleClass = '';
if (previousI != i + 1)
if (previousI < i - 1 && previousI != 0)
styleClass = 'border-top: 6px solid #777799;';
p = p+ "";
p = p+ "";
p = p+ i+ " | ";
p = p+ "";
p = p+ " ";
p = p+ " ";
p = p+ " ";
p = p+ " ";
p = p+ "";
p = p+ ""+u.display+"";
p = p+ " | ";
p = p+ ""+u.totalMazes+" | ";
p = p+ ""+u.totalMoves+" | ";
p = p+ ""+u.totalMovesThisWeek+" | ";
p = p+ ""+u.totalWins+" | ";
p = p+ ""+u.totalTies+" | ";
p = p+ ""+u.dateJoined+" | ";
p = p+ ""+u.dateLogin+" | ";
p = p+ "
";
previousI = i;
}
//p = p+""+navi+" |
";
p = p+"
";
var nextPage = JO.page - 0 + 1;
var prevPage = JO.page - 1;
if (JO.pageCount > 1) {
if (JO.page < JO.pageCount) {
p = p+">";
} else
p = ">
"+p;
if (JO.page > 1) {
p = "<"+p;
} else
p = "<
"+p;
}
p = ""+p+"
";
//console.log(p);
//console.log('jo page', JO.page);
//console.log('jo pagecount', JO.pageCount);
//p = JO.navi+p;
return p;
}