/**
* 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 = "
"
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 += "| " + itemNode.getAttribute('rank') + " | ";
tblBody += "" + itemNode.getAttribute('personaName') + "" + getToolTip(itemNode.getAttribute('ownerId'), itemNode.getAttribute('personaName')) + " | ";
for(var j=0; j < itemNode.childNodes.length; j++) {
tblBody += "" + itemNode.childNodes[j].getAttribute('value') + " | ";
}
tblBody += " | "; //scrollbar
tblBody += "
";
}
tblBody += "
";
}
// 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 += "";
}
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 += "";
}
}
//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';
}
}