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.requestFile = "a/score/"+mapid+"_"+page+".js"; 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(page, mapid); } } function scoresShowMyPage(mapid) { //Future use } function scoresShowPage(page, mapid) { 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; } var scoresShowNavSideBtns = false; function scoresFormatPage(JO) { var solutionsGiven = !JO.isCurrentMap; var p = ""; //console.log("jo object", JO); var navi = ''; var naviColSpan = 3; if (solutionsGiven) naviColSpan++; if (JO.pageCount > 1) { navi = ""; p = p+navi; } var localTime = new Date(); var updatedLocalTime = new Date(); updatedLocalTime.setTime(JO.updateTime * 1000); p = p+""; p = p+""; p = p+""; p = p+""; if(solutionsGiven) { //Only show points column when solutions are given (ie. on old maps on the scoreboard) p = p+""; } 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 && previousI < i - 1 && previousI != 0) { styleClass = 'border-top: 6px solid #777799;'; } var wasLongAgo = localTime.getTime() > (scoredLocalTime.getTime() + 43200000); //12*60*60*1000 var scoredTimeFormat = (wasLongAgo ? "mmm d, h:MM:ss TT" : "h:MM:ss TT"); var scoredTimeStr = scoredLocalTime.format(scoredTimeFormat); var rowclass = 'scoreRow'+((i % 2)+1); if (u.ID == userObj.ID) { rowclass = 'scoreRowSelf'; } if (typeof pointerSolutionID != 'undefined' && u.solutionID == pointerSolutionID && goToScorePointer) { goToScorePointer = false; setTimeout("useSolution(\""+JO.mapid+"\", \""+u.solution+"\", \""+u.moves+"\", \""+u.wallColor+"\", \""+u.wallEmblem+"\", \""+u.solutionID+"\");", 400); rowclass += ' solutionSelected'; } if (solutionsGiven) { rowclass += ' scoreRowSolutionAvailable'; p += ""; } else { p = p+ ""; } // background-color: "+u.background+"; p = p+ ""; p = p+ ""; if (solutionsGiven) { p = p+ ""; p = p+ ""; } else { p = p+ ""; //No second "; previousI = i; } //p = p+""; p = p+navi; p = p+"
"+formatPageNavi(JO, "scoresShowPage", JO.mapid)+"
RankNameMovesPoints
"; if (u.medal == 'gold') { p = p+ ""; } else if (u.medal == 'silver') { p = p+ ""; } p = p+ i+ ""; p = p+ "
"; p = p+ "
"; p = p+ "
"; p = p+ "
"; p = p+ ""; p = p+ ""+u.display+""; p = p+ "
"+u.moves+""+u.points+""+u.moves+" since there is not Points column } p = p+ "
"+navi+"
"; var nextPage = JO.page - 0 + 1; var prevPage = JO.page - 1; //TODO: Re'enable this somehow? if (JO.pageCount > 1 && scoresShowNavSideBtns) { 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; } //Memberlist related functions: var membersPages = new Object; var membersCurrentPage = 1; var membersPageDivide = 50; var membersOrderBy = 'totalMovesThisWeek'; var membersOrder = 'DESC'; 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. var requestString = "do.php?r=reqMemberPage&reqPage="+page+"&orderBy="+membersOrderBy requestString += "&order="+membersOrder requestString += "&membersPageDivide="+membersPageDivide ajax.requestFile = requestString; 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 membersToggleOrder() { if (membersOrder == 'ASC') membersOrder = 'DESC'; else membersOrder = 'ASC'; } function membersShowPage(page, orderBy, force) { if (orderBy) { if (membersOrderBy == orderBy) membersToggleOrder(); membersOrderBy = orderBy; } 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 || orderBy || force) { 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 formatPageNavi(JO, callback) { 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; } } var nextPage = JO.page - 0 + 1; var prevPage = JO.page - 1; if (JO.pageCount > 1) { if (JO.page < JO.pageCount) { r = r+" >>>"; r = r+" >"; } else { r = r+" >>>"; r = r+" >"; } if (JO.page > 1) { r = " <"+r; r = " <<<"+r; } else { r = r+" <<<"; r = r+" <"; } } return r; } function membersFormatPage(JO) { // console.log("Formating page"); var p = ""; var navi = ''; if (JO.pageCount > 1) { navi = ""; p = p+navi; } var headers = new Object; headers['display'] = {'name':'Name', 'title':'They call him... Dovahkiin!'}; headers['championPoints'] = {'name':'Points', 'title':'Total Champion Points Earned'}; headers['totalMazes'] = {'name':'Mazes', 'title':'Total Mazes Played (aka. How Awesome You Are)'}; headers['totalMoves'] = {'name':'Moves', 'title':'Total Moves Mazed'}; headers['totalMovesThisWeek'] = {'name':'Past Week', 'title':'Total Moves In Past 7 Days (Excluding Today)'}; headers['totalTies'] = {'name':'Ties', 'title':'Total Ties'}; headers['totalWins'] = {'name':'Wins', 'title':'Total Wins - for bragging rights only'}; headers['dateJoined'] = {'name':'Joined', 'title':'Pathery Life Began'}; headers['dateLogin'] = {'name':'Last Login', 'title':'Last Pathery Fix'}; p = p+""; p = p+""; var sortIndicator; for (var i in headers) { sortIndicator = ''; if (i == membersOrderBy) { if (membersOrder == 'DESC') sortIndicator = ' ⇧'; else sortIndicator = ' ⇩'; } p += ""; } 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;'; if (u.wallEmblem == undefined) u.wallEmblem = 'blank.png'; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; previousI = i; } p = p+navi; p = p+"
"+formatPageNavi(JO, "membersShowPage")+"
Rank"; p += ""+ headers[i].name +""+sortIndicator+"
"; p = p+ i+ ""; p = p+ "
"; p = p+ "
"; p = p+ "
"; p = p+ "
"; p = p+ " "+u.display+""; p = p+ "
"+u.championPoints+""+u.totalMazes+""+u.totalMoves+""+u.totalMovesThisWeek+""+u.totalTies+""+u.totalWins+""+u.dateJoined+""+u.dateLogin+"
"; return p; }