/** * loads a page into a div * @param {string} the url you want to load * @param {string} the id of the div you wanto to populate */ function loadPage(url, divId) { if (window.XMLHttpRequest) { // Non-IE browsers req = new XMLHttpRequest(); req.onreadystatechange = function() { targetDiv(divId) }; try { req.open("GET", url, true); } catch (e) { alert(e); } req.send(null); } else if (window.ActiveXObject) { // IE req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = function() { targetDiv(divId) }; req.open("GET", url, true); req.send(); } } } /** * waits until the request is complete and makes sure and ok response was sent back * then populates the div with the html from the requested url * @param {divId} the id of the div you wanto to populate */ function targetDiv(divId) { if (req.readyState == 4) { // Complete if (req.status == 200) { // OK response document.getElementById(divId).innerHTML = req.responseText; var scriptTags = document.getElementById(divId).getElementsByTagName('script'); for(i=0; i < scriptTags.length; i++){ eval(scriptTags[i].innerHTML); } return false; } else { alert("Error: " + req.statusText); } } } function loadPersonalFeed(curDivId, ns, hubId, pageNum, periodType, metaData, statType, username) { var start = 0; var range = 10; var feed = '/nfs/prostreet/game/xmlapi/get_leaderboard.jsp?rangeType=closeToMe&user=' + username + '&ns=' + ns + '&hubId=' + hubId + '&range=' + range + '&start=' + start + '&periodType=' + periodType; if(metaData && (curDivId == "careerLeaders" || curDivId == "racedayLeaders")){ feed += '&eventIndex=' + metaData; } loadXMLDoc(feed, curDivId, function(){ doXMLReady(curDivId, ns, hubId, start, range, pageNum, periodType, metaData) }, function(){ doXMLWait(curDivId) }); } function loadFeed(curDivId, ns, hubId, pageNum, periodType, metaData) { document.getElementById('pageNum').value = pageNum; if(document.getElementById('displayName') != null){ var statType = +document.getElementById('drp_stats').value; if(statType == 1){ loadPersonalFeed(curDivId, ns, hubId, pageNum, periodType, metaData, statType, document.getElementById('displayName').value); return; } } var range = 50; var start = (pageNum - 1) * range; var feed = '/nfs/prostreet/game/xmlapi/get_leaderboard.jsp?ns=' + ns + '&range=' + range + '&start=' + start + '&periodType=' + periodType; if(hubId != ''){ feed += '&hubId=' + hubId; } if(curDivId == "topTuner"){ feed += '&leaderboardId=topTuner'; } if(metaData != "" && curDivId == "topTuner"){ feed += '&tunerType=' + metaData; } else if(metaData != "" && (curDivId == "careerLeaders" || curDivId == "racedayLeaders")){ feed += '&eventIndex=' + metaData; } //console.log(feed); //feed = '/prostreet/xml/leaderboards5.xml'; loadXMLDoc(feed, curDivId, function(){ doXMLReady(curDivId, ns, hubId, start, range, pageNum, periodType, metaData) }, function(){ doXMLWait(curDivId) }); } function doXMLWait(curDivId) { var curTarget = getElm(curDivId); if(!curTarget) return; var waitHTML = "

Loading...

" writeHTML(curTarget,waitHTML); } function doXMLReady(curDivId, ns, hubId, start, range, pageNum, periodType, metaData) { var curTarget = getElm(curDivId); if(!curTarget) return; if(!xmlDocs[curDivId]) return; var curXML = xmlDocs[curDivId].xml; if(!curXML) return; clearElm(curTarget); var retval = ""; var curHeaders = curXML.getElementsByTagName("query"); retval += getTableHeader(curHeaders, curDivId, metaData); if((curDivId == "careerLeaders" || curDivId == "racedayLeaders") && metaData == ""){ loadDrpEvents(curHeaders); } var curEntries = curXML.getElementsByTagName("entry"); retval += getTableBody(curEntries, curDivId, metaData); writeHTML(curTarget,retval); var curResults = curXML.getElementsByTagName("results"); if(curResults.length > 0){ getPaganation(+curResults[0].getAttribute('size'), curDivId, ns, hubId, +start, +range, +pageNum, periodType, metaData); } var nlScrollbar = new scrollbar("na_leadboard_listing_scroll","leaderboard_listing_scroll"); } function getTableBody(curEntries, curDivId, metaData){ var tblBody = ""; // custom scroll bar - start tblBody += "
"; tblBody += "
"; tblBody += "
"; if (curEntries.length == 0) { //alert('There was a problem reading this feed. Source may contain errors. Please try another feed'); } else { tblBody += ""; // get 'columns' markup tblBody += ""; tblBody += ""; var itemCounter = 0; for(var i = 0; i < curEntries.length; i++) { for(var j = 0; j < curEntries[i].childNodes.length; j++) { var activeNode; var activeClass = ''; // if the node has the attribute code if(curEntries[i].childNodes[j].getAttribute('code') != null){ activeNode = curEntries[i].childNodes[j].getAttribute('key'); } if(activeNode == "LEADERBOARD_HUB_SCORE"){ activeClass = "lb_overall"; } else if(activeNode == "CAREER_WIN_PERCENTAGE"){ activeClass = "lb_win_per"; } else if(activeNode == "LEADERBOARD_EVENT_RACED"){ activeClass = "lb_games_played"; } else if(curDivId == "topTuner"){ activeClass = "lb_toptuner"; itemCounter++; } else if(metaData && (curDivId == "careerLeaders" || curDivId == "racedayLeaders")){ activeClass = "lb_eventData"; } else { itemCounter++; activeClass = "lb_event"; } tblBody += ""; } break; } tblBody += ""; // get table rows for(var i=0; i < curEntries.length; i++) { tblBody += ""; var itemNode = curEntries[i]; tblBody += ""; tblBody += ""; for(var j=0; j < itemNode.childNodes.length; j++) { tblBody += ""; } tblBody += ""; //scrollbar tblBody += ""; } tblBody += "
" + itemNode.getAttribute('rank') + "" + itemNode.getAttribute('personaName') + "" + getToolTip(itemNode.getAttribute('ownerId'), itemNode.getAttribute('personaName')) + "" + itemNode.childNodes[j].getAttribute('value') + " 
"; } // custom scroll bar crap - end tblBody += "
"; tblBody += "
"; tblBody += "
"; tblBody += "
"; return tblBody; } function getTableHeader (curHeaders, curDivId, metaData) { var tblRetval = ""; if (curHeaders.length == 0) { //alert('There was a problem reading this feed. Source may contain errors. Please try another feed'); return tblRetval; } else { tblRetval += ""; var itemCounter = 0; // get 'columns' markup for(var i=0; i < curHeaders.length; i++) { for(var j=0; j < curHeaders[i].childNodes.length; j++) { for(var k=0; k < curHeaders[i].childNodes[j].childNodes.length; k++) { if(curHeaders[i].childNodes[j].childNodes[k].nodeName == 'name'){ var activeNode = curHeaders[i].childNodes[j].childNodes[k].firstChild.nodeValue; var activeClass = ''; if(activeNode == "Rank"){ activeClass = 'lb_rank' } else if(activeNode == "Need For Speed ID"){ activeClass = 'lb_gamertag' } else if(activeNode == "Hub Score"){ activeClass = 'lb_overall' } else if(activeNode == 'Games Played' && curDivId != "topTuner"){ activeClass = 'lb_games_played'; } else if(activeNode == 'Win Percentage'){ activeClass = 'lb_win_per'; } else if(curDivId == "topTuner"){ itemCounter++; activeClass = "lb_toptuner"; } else if(metaData && (curDivId == "careerLeaders" || curDivId == "racedayLeaders")){ activeClass = "lb_eventData"; } else { itemCounter++; activeClass = "lb_event"; } tblRetval += ""; } } } } tblRetval += ""; // get first row in table (table header row) tblRetval += ""; for(var i=0; i < curHeaders.length; i++) { for(var j=0; j < curHeaders[i].childNodes.length; j++) { for(var k=0; k < curHeaders[i].childNodes[j].childNodes.length; k++) { if(curHeaders[i].childNodes[j].childNodes[k].nodeName == 'name'){ var activeNode = curHeaders[i].childNodes[j].childNodes[k].firstChild.nodeValue; var activeClass = ''; if(activeNode == "Rank") { activeClass = 'lb_rank'; } if(activeNode == "Need For Speed ID") { activeClass = 'lb_gamertag'; } if(activeNode == "Hub Score") { activeNode = 'Overall'; } tblRetval += ""; } } } } tblRetval += ""; tblRetval += ""; tblRetval += "
" + activeNode + " 
"; } return tblRetval; } function getToolTip(userId, userName){ var tt = ""; var loggedInUsername = document.getElementById('displayName'); var userPlatform = document.getElementById('drp_platform'); if(loggedInUsername != null ) { if(loggedInUsername.value != ''){ tt += "
"; tt += " "; tt += "
"; } } //
  • Compare Player
  • return tt; } function loadDrpEvents(curHeaders){ var eventDrpDown = document.getElementById('drp_event'); eventDrpDown.innerHTML = ''; var newOption = document.createElement('option'); newOption.value = ""; newOption.innerHTML = "All"; eventDrpDown.appendChild(newOption); for(var i=0; i < curHeaders.length; i++) { for(var j=0; j < curHeaders[i].childNodes.length; j++) { for(var k=0; k < curHeaders[i].childNodes[j].childNodes.length; k++) { if(curHeaders[i].childNodes[j].childNodes[k].nodeName == 'name'){ var activeNode = curHeaders[i].childNodes[j].childNodes[k].firstChild.nodeValue; if (!activeNode.toLowerCase().indexOf('event')) { newOption = document.createElement('option'); newOption.value = i; newOption.innerHTML = activeNode; eventDrpDown.appendChild(newOption); } } } } } } function getPaganation(results, curDivId, ns, hubId, start, results_per_page, pageNum, periodType, metaData){ //results = 1002; //calulate pages to show var pages = Math.ceil((results + start)/results_per_page); var firstPage = 1; var prevPage; if(pageNum == 1){ prevPage = 1; } else { prevPage = pageNum - 1; } var lastPage = pages; var nextPage; if(pageNum == pages){ nextPage = pages; } else { nextPage = pageNum + 1; } var pagenationCont = document.getElementById('paganation'); var pageHTML = ''; //pageHTML += "
  • <<
  • "; pageHTML += "
  • <
  • "; for(i = 1; i <= pages; i++){ pageHTML += "
  • " + i + "
  • "; } pageHTML += "
  • >
  • "; //pageHTML += "
  • >>
  • "; pagenationCont.innerHTML = pageHTML; } function showTooTip(curId){ if(document.getElementById(curId) != null) { document.getElementById(curId).style.display = 'block'; } } function hideToolTip(curId){ if(document.getElementById(curId) != null) { document.getElementById(curId).style.display = 'none'; } }