// if all is chosen, you pass in all the events with '_' between each function highlightPlatform(tmpVal) { var tmpOptions = document.getElementById('drp_platform').getElementsByTagName('option'); for(i = 0; i < tmpOptions.length; i++){ if(tmpOptions[i].value == tmpVal){ tmpOptions[i].selected = 'true'; } } } function loadCustomLeader(divId, lbID, pageNum, fltTime, fltEvent, fltPlatform){ if(fltPlatform == 'XBL_SUB' || fltPlatform == 'PS3_SUB' || fltPlatform == 'MAIN'){ highlightPlatform(fltPlatform); } else { fltPlatform = 'XBL_SUB'; } document.getElementById('pageNum').value = pageNum; var range = 50; var start = (pageNum - 1) * range; var feed = '/nfs/prostreet/game/xmlapi/get_leaderboard.jsp?ns=' + fltPlatform + '&raceDay=' + lbID + '&range=' + range + '&start=' + start + '&periodType=' + fltTime; // user is logged in and has "closest to me" selected if(document.getElementById('displayName')){ if(document.getElementById('displayName').value != ''){ if(document.getElementById('drp_stats').value == '1'){ feed += '&rangeType=closeToMe&user=' + document.getElementById('displayName').value; } } } var eventIds = document.getElementById('eventIds').value; if(fltEvent != ''){ if(fltEvent.split('_').length == 1){ feed += '&raceDayEvents=' + fltEvent + '&outputType=event'; } else { feed += '&raceDayEvents=' + fltEvent + '&outputType=overall'; } loadLBDropDown(fltEvent, eventIds); } //console.log(feed); //feed = '/prostreet/xml/leaderboards7.xml'; loadXMLDoc(feed, divId, function(){ racedayLBReady(divId, lbID, pageNum, fltTime, fltEvent, fltPlatform, range, start) }, function(){ racedayWait(divId) }); } function loadLBDropDown(selectedEvent, eventIds){ document.getElementById('drp_event').innerHTML = ''; var newOption = document.createElement('option'); newOption.value = eventIds; newOption.innerHTML = 'All'; document.getElementById('drp_event').appendChild(newOption); var tmpEvents = eventIds.split('_'); for(var i = 0; i < tmpEvents.length; i++){ newOption = document.createElement('option'); newOption.value = i; newOption.innerHTML = 'Event ' + (i+1); if(+selectedEvent == i){ newOption.selected = 'true'; } document.getElementById('drp_event').appendChild(newOption); } } function loadRaceday(raceId, divId) { var feed = '/racedayadmin/racedays-api/ajax.do?_workflow=AjaxGetRacedayDetailsWorkflow&id=' + raceId; if(document.getElementById('displayName')){ if(document.getElementById('displayName').value != ''){ feed += '&user=' + document.getElementById('displayName').value + '&ns=' + document.getElementById('platformName').value; } } //console.log(feed); //var feed = '/prostreet/xml/racedays_detail.xml'; loadXMLDoc(feed, divId, function(){ racedayDetailReady(divId) }, function(){ racedayWait(divId) }); } function loadRacedayList(filterVal, divId, pageNum) { var feed = ''; if(filterVal == '1'){ feed = '/racedayadmin/racedays-api/ajax.do?_workflow=AjaxGetAllInActiveRacedaysWorkflow'; } else if(filterVal == '2'){ feed = '/racedayadmin/racedays-api/ajax.do?_workflow=AjaxGetAllActiveRacedaysWorkflow'; } else if(filterVal == '3'){ feed = '/racedayadmin/racedays-api/ajax.do?_workflow=AjaxGetUserRacedaysWorkflow'; } else { feed = '/racedayadmin/racedays-api/ajax.do?_workflow=AjaxGetAllRacedaysWorkflow'; } feed += '&list_pagenum=' + pageNum + '&list_maxresults=5'; // user is logged in and has "closest to me" selected if(document.getElementById('displayName').value != ''){ feed += '&user=' + document.getElementById('displayName').value + '&ns=' + document.getElementById('platformName').value; } //console.log(feed); //feed = '/prostreet/xml/racedays_list2.xml'; loadXMLDoc(feed, divId, function(){ racedayReady(filterVal, divId, pageNum) }, function(){ racedayWait(divId) }); } function racedayWait(divId){ var curTarget = getElm(divId); if(!curTarget) return; var waitHTML = "

Loading...

" writeHTML(curTarget,waitHTML); } function racedayLBReady (divId, raceId, pageNum, fltTime, fltEvent, fltPlatform, range, start) { var retVal = ""; var curTarget = getElm(divId); if(!curTarget) return; if(!xmlDocs[divId]) return; var curXML = xmlDocs[divId].xml; if(!curXML) return; clearElm(curTarget); var retval = ""; var curHeaders = curXML.getElementsByTagName("query"); retval += getTableHeader(curHeaders, divId, ''); //leaderboard.js var curEntries = curXML.getElementsByTagName("entry"); if(curEntries.length > 0){ retval += getTableBody(curEntries, divId, ''); } else { retval += "
"; retval += "
"; retval += "
"; retval += "
 
"; retval += "
"; retval += "
"; retval += "
"; retval += "
"; } writeHTML(curTarget,retval); var nlScrollbar = new scrollbar("na_leadboard_listing_scroll","leaderboard_listing_scroll"); //Paging Call var curResults = curXML.getElementsByTagName("results"); var pageHTML = ''; if(curResults.length > 0){ pageHTML = loadLBPages(+curResults[0].getAttribute('size'), divId, raceId, pageNum, fltTime, fltEvent, fltPlatform, range, start); document.getElementById('paganation').innerHTML = pageHTML; } } function racedayDetailReady(divId){ if(!xmlDocs[divId]) return; var curXML = xmlDocs[divId].xml; if(!curXML) return; var curRaces = curXML.getElementsByTagName("RaceDay"); var nodeValue; var nodeName; var raceDayId; for(var i=0; i < curRaces.length; i++) { for(var j=0; j < curRaces[i].childNodes.length; j++) { if(curRaces[i].childNodes[j].nodeType == 1){ nodeName = curRaces[i].childNodes[j].nodeName; curRaces[i].childNodes[j].firstChild ? nodeValue = curRaces[i].childNodes[j].firstChild.nodeValue : nodeValue = ''; if(nodeName == 'description') { document.getElementById('rd_desc').innerHTML = nodeValue; } else if(nodeName == 'endDateTime') { document.getElementById('rd_endsons').innerHTML = buildDate(+nodeValue, "m/d/yyyy h:MM:ss TT"); } else if(nodeName == 'imageDetailLink') { document.getElementById('rd_img').src = nodeValue; } else if(nodeName == 'sponsorName'){ document.getElementById('rd_sponsor').innerHTML = nodeValue; } else if(nodeName == 'sponsorLink'){ document.getElementById('rd_sponser_link').href = nodeValue; } else if(nodeName == 'imageSponsorLink') { document.getElementById('rd_sponsor_img').src = nodeValue; } else if(nodeName == 'prizes') { if(nodeValue == ''){ document.getElementById('rd_prizes_label').style.display = 'none'; document.getElementById('rd_prizes').style.display = 'none'; } else { document.getElementById('rd_prizes').innerHTML = nodeValue; } } else if(nodeName == 'rulesLink') { if(nodeValue == ''){ document.getElementById('rd_rules_label').style.display = 'none'; document.getElementById('rd_rules_link').style.display = 'none'; document.getElementById('rd_accept_rules').style.display = 'none'; } else { document.getElementById('rd_rules').innerHTML = nodeValue; } } else if(nodeName == 'startDateTime') { document.getElementById('rd_startsons').innerHTML = buildDate(+nodeValue, "m/d/yyyy h:MM:ss TT"); } else if(nodeName == 'title') { document.getElementById('rd_img').alt = nodeValue; document.getElementById('rd_title').innerHTML = nodeValue; } else if(nodeName == 'difficulty') { document.getElementById('rd_difficulty').innerHTML = nodeValue; } else if(nodeName == 'location') { document.getElementById('rd_location').innerHTML = nodeValue; } else if(nodeName == 'mode') { document.getElementById('rd_mode').innerHTML = nodeValue; } else if(nodeName == 'repairMarkers') { document.getElementById('rd_repair').innerHTML = nodeValue; } else if(nodeName == 'active'){ if(+nodeValue == 2){ // race complete document.getElementById('rd_accept_rules').style.display = 'none'; } } else if(nodeName == 'userJoined'){ if(nodeValue == 'true'){ // user already joined document.getElementById('rd_accept_rules').style.display = 'none'; } } //console.log(j + " : " + nodeName + " : " + nodeValue); } } } } function racedayReady(filterVal, divId, pageNum){ var retVal = ""; var curTarget = getElm(divId); if(!curTarget) return; if(!xmlDocs[divId]) return; var curXML = xmlDocs[divId].xml; if(!curXML) return; clearElm(curTarget); retVal += ''; retVal += ''; retVal += ''; retVal += ''; retVal += ''; retVal += ''; retVal += ''; var curRaces = curXML.getElementsByTagName("RaceDay"); var nodeValue; var nodeName; var raceDayId; var raceDays = new Array() for(var i=0; i < curRaces.length; i++) { //console.log(curRaces[i].getAttribute('id')); raceDayId = curRaces[i].getAttribute('id'); for(var j=0; j < curRaces[i].childNodes.length; j++) { if(curRaces[i].childNodes[j].nodeType == 1){ nodeName = curRaces[i].childNodes[j].nodeName; if(nodeName == 'leaderboardInfo'){ var tmpLBInfo = curRaces[i].childNodes[j].childNodes; for(var k = 0; k < tmpLBInfo.length; k++){ if(tmpLBInfo[k].nodeType == 1){ nodeName = tmpLBInfo[k].nodeName; raceDays[nodeName] = tmpLBInfo[k].firstChild ? tmpLBInfo[k].firstChild.nodeValue : ''; } } } else{ raceDays[nodeName] = curRaces[i].childNodes[j].firstChild ? curRaces[i].childNodes[j].firstChild.nodeValue : ''; //console.log(j + " : " + nodeName + " : " + nodeValue); } } } var detailUrl = 'viewRaceday.jsp?raceId=' + raceDayId + '&lbId=' + raceDays['racedayId'] + '&eventIds=' + raceDays['overallEvents'] + '&raceActive=' + raceDays['active'] + '&userJoined=' + raceDays['userJoined'] + '&isCommunity=' + raceDays['community']; retVal += ''; retVal += ''; if(raceDayId != ''){ retVal += ''; } else { retVal += ''; } retVal += ''; retVal += ''; retVal += ''; if(raceDays['userJoined'] == 'true'){ if(raceDayId != ''){ retVal += ''; } else { retVal += ''; } } else { if(raceDays['active'] == '0'){ retVal += ''; } else if(raceDays['active'] == '1'){ retVal += ''; } else if(raceDays['active'] == '2'){ if(raceDayId != ''){ retVal += ''; } else { retVal += ''; } } } retVal += ''; } retVal += '

'; if(raceDayId != ''){ retVal += '' + raceDays['title'] + ''; } else { retVal += '' + raceDays['title'] + ''; } retVal += '' + raceDays['sponsorName'] + '

' + raceDays['title'] + '
' + raceDays['sponsorName'] + '
' + raceDays['title'] + '
' + raceDays['sponsorName'] + '
' + buildDate(+raceDays['startDateTime'], "m/d/yyyy
h:MM:ss TT") + '
' + buildDate(+raceDays['endDateTime'], "m/d/yyyy
h:MM:ss TT") + '
' + raceDays['location'] + '' + document.getElementById('locale_results').value + ' > ' + document.getElementById('locale_join').value + ' >' + document.getElementById('locale_join').value + ' >' + document.getElementById('locale_results').value + ' > 
'; document.getElementById(divId).innerHTML = retVal; var curPages = curXML.getElementsByTagName("pagingInfo"); document.getElementById('paganation').innerHTML = loadPaganation(curPages, filterVal, divId, pageNum); } function checkLoggedInDetail(detailUrl){ //var tmpUrl = 'http://www.beta.ea.com/prostreet/' + detailUrl; //beta var tmpUrl = 'http://www.ea.com/prostreet/' + detailUrl; //prod var userName = document.getElementById('displayName').value; if(userName != ''){ // logged in window.location.href = tmpUrl } else { //window.location.href = 'https://profile.integration.ea.com/login.do?surl=' + encodeURIComponent(tmpUrl) + '&selectprofile=true®istrationSource=EA-EA.com'; //beta window.location.href = 'https://profile.ea.com/login.do?surl=' + encodeURIComponent(tmpUrl) + '&selectprofile=true®istrationSource=EA-EA.com'; } return false; } function checkLoggedIn(raceId){ var userName = document.getElementById('displayName').value; var platformName = document.getElementById('platformName').value; if(userName == '' && platformName == ''){ //not logged in window.location.href = 'https://profile.ea.com/login.do?surl=' + encodeURIComponent(window.location.href) + '&selectprofile=true®istrationSource=EA-EA.com'; //window.location.href = 'https://profile.integration.ea.com/login.do?surl=' + encodeURIComponent(window.location.href) + '&selectprofile=true®istrationSource=EA-EA.com'; } else { //feed = '/racedayadmin/racedays-api/ajax.do?_workflow=AjaxJoinRacedayWorkflow&id=' + raceId + '&ns=' + document.getElementById('platformName').value + '&user=' + userName; if(platformName == 'XBL_SUB' || platformName == 'PS3_SUB' || platformName == 'MAIN'){ if(document.getElementById('rd_accept_rules').style.display == 'none'){ // no rules addUser(raceId, platformName, userName); } else { // have rules if(document.getElementById("chk_accept").checked == false){ // check if boxed is checked alert('You must accept the rules'); } else { addUser(raceId, platformName, userName); } } } else { alert('You must select a Need For Speed Persona to join this race'); } } return false; } function addUser(raceId, platformName, displayName ) { url = '/racedayadmin/racedays-api/ajax.do?_workflow=AjaxJoinRacedayWorkflow&id=' + raceId + '&ns=' + platformName + '&user=' + displayName; if (window.XMLHttpRequest) { // Non-IE browsers req = new XMLHttpRequest(); req.onreadystatechange = function() { targetRDDiv() }; 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() { targetRDDiv() }; req.open("GET", url, true); req.send(); } } } function targetRDDiv() { if (req.readyState == 4) { // Complete if (req.status == 200) { // OK response //alert(req.responseText); document.getElementById('buttonContainer').className += " acceptSucces"; document.getElementById('buttonContainer').innerHTML = '

' + document.getElementById('locale_succes').value + '

'; document.getElementById('rd_accept_rules').style.display = 'none'; } else { //alert("Error: " + req.statusText); alert('Error: could not add to raceday'); } } } function loadPaganation(curPages, filterVal, divId, pageNum) { var pageInfo = new Array() for(var i=0; i < curPages.length; i++) { for(var j=0; j < curPages[i].childNodes.length; j++) { if(curPages[i].childNodes[j].nodeType == 1){ var nName = curPages[i].childNodes[j].nodeName; var nValue= curPages[i].childNodes[j].firstChild.nodeValue; pageInfo[nName] = nValue; } } } var pages = +pageInfo['numPages']; //var pageNum = +pageInfo['currentPage']; // sets page num from value in xml var firstPage = 0; var prevPage = getPrevPage(+pageNum); var lastPage = (pages - 1); var nextPage = getNextPage(+pageNum, (pages - 1)); //list_pagenum=0 var retval = ""; retval +="
  • <<
  • "; retval +="
  • <
  • "; for(i = 0; i < pages; i++){ retval +="
  • " + (i+1) + "
  • "; } retval +="
  • >
  • "; retval +="
  • >>
  • "; return retval; } /* * * results - number of results in the returned set * pageNume - the current page number * range - results per page * start - starting point of data set */ function loadLBPages(results, divId, raceId, pageNum, fltTime, fltEvent, fltPlatform, range, start) { //console.log(results); var pages = Math.ceil((results + start)/range); var prevPage = getPrevPage(pageNum); prevPage++; // 1 indexed var nextPage = getNextPage(pageNum, pages); nextPage++; //list_pagenum=0 var retval = ""; retval +="
  • <
  • "; for(i = 1; i <= pages; i++){ retval += "
  • " + i + "
  • "; } retval +="
  • >
  • "; return retval; } /* * getPrevPage - returns the previous page assuming the paganation is * 0 indexed */ function getPrevPage(pageNum){ var prevPage; if(pageNum == 0){ prevPage = 0; } else { prevPage = pageNum - 1; } return prevPage; } /* * getNextPage - returns the next page */ function getNextPage(pageNum, pages){ var nextPage; //console.log(pageNum + ' : ' + pages); if(pageNum == pages){ nextPage = pages; } else { nextPage = pageNum + 1; } return nextPage; } function buildDate(millis, curformat){ if(millis == ''){ return " "; } else { if(!(/^\d+$/.test(millis))) { return " "; } else { var tmpDate = new Date(millis); return tmpDate.format(curformat); } } } function closeDialog(){ document.getElementById("dialog_bg").style.display = "none"; document.getElementById("dialog_alert").style.display = "none"; return false; } function openDialog(){ document.getElementById("dialog_bg").style.display = "block"; document.getElementById("dialog_alert").style.display = "block"; return false; } /* Date Format 1.1 (c) 2007 Steven Levithan MIT license With code by Scott Trenda (Z and o flags, and enhanced brevity) */ /*** dateFormat Accepts a date, a mask, or a date and a mask. Returns a formatted version of the given date. The date defaults to the current date/time. The mask defaults ``"ddd mmm d yyyy HH:MM:ss"``. */ var dateFormat = function () { var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloZ]|"[^"]*"|'[^']*'/g, timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function (value, length) { value = String(value); length = parseInt(length) || 2; while (value.length < length) value = "0" + value; return value; }; // Regexes and supporting functions are cached through closure return function (date, mask) { // Treat the first argument as a mask if it doesn't contain any numbers if ( arguments.length == 1 && (typeof date == "string" || date instanceof String) && !/\d/.test(date) ) { mask = date; date = undefined; } date = date ? new Date(date) : new Date(); if (isNaN(date)) throw "invalid date"; var dF = dateFormat; mask = String(dF.masks[mask] || mask || dF.masks["default"]); var d = date.getDate(), D = date.getDay(), m = date.getMonth(), y = date.getFullYear(), H = date.getHours(), M = date.getMinutes(), s = date.getSeconds(), L = date.getMilliseconds(), o = date.getTimezoneOffset(), flags = { d: d, dd: pad(d), ddd: dF.i18n.dayNames[D], dddd: dF.i18n.dayNames[D + 7], m: m + 1, mm: pad(m + 1), mmm: dF.i18n.monthNames[m], mmmm: dF.i18n.monthNames[m + 12], yy: String(y).slice(2), yyyy: y, h: H % 12 || 12, hh: pad(H % 12 || 12), H: H, HH: pad(H), M: M, MM: pad(M), s: s, ss: pad(s), l: pad(L, 3), L: pad(L > 99 ? Math.round(L / 10) : L), t: H < 12 ? "a" : "p", tt: H < 12 ? "am" : "pm", T: H < 12 ? "A" : "P", TT: H < 12 ? "AM" : "PM", Z: (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4) }; return mask.replace(token, function ($0) { return ($0 in flags) ? flags[$0] : $0.slice(1, $0.length - 1); }); }; }(); // Some common format strings dateFormat.masks = { "default": "ddd mmm d yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", isoFullDateTime: "yyyy-mm-dd'T'HH:MM:ss.lo" }; // Internationalization strings dateFormat.i18n = { dayNames: [ "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] }; // For convenience... Date.prototype.format = function (mask) { return dateFormat(this, mask); }