/********************************* nav.js for EA.com code by Byron Tredwell (byron(AT)blastradius.com) *********************************/ /******************************* FUNCTIONS FOR GLOBAL INIT ******************************/ var sectionTabs = null; var filterTabs = null; // SET HERE FOR REFERENCE ONLY - OVERRIDEN BY THE DCR FOR THE GLOBAL NAV // var baseBuyURL = "http://www.ea.com/eastoreredirect.jsp?shopping/product/detailmain.jsp?itemType=PRODUCT&itemID=" var baseSearchURL = "http://www.ea.com/eastoreredirect.jsp?shopping/browse/directorymain.jsp?keyword=" initArray[initArray.length] = initGameFinder; initArray[initArray.length] = initPersitence; initArray[initArray.length] = initTitleNav; /******************************* ******************************/ /******************************* MENU FLYOUTS ******************************/ var currentflyout = null; function toggleMenuLayer(layer,mark,parent,left,top) { layer = getElm(layer); if(!layer) return; if(isNaN(left) == true) left = 0; if(isNaN(top) == true) top = 0; if(currentflyout && currentflyout != layer && currentflyout.style.display == "block") { currentflyout.style.display = "none" var m = currentflyout.mark; m.className = m.className.substring(0,m.className.indexOf(" hover")); } mark = check(mark); currentflyout = layer; layer.mark = mark; layer.style.top = (getOffsetProperty(mark, "Top",parent) + mark.offsetHeight + top) +"px"; layer.style.left = (getOffsetProperty(mark, "Left",parent) + left) +"px"; if(layer.style.display == "block") { layer.style.display = "none"; mark.className = mark.className.substring(0,mark.className.indexOf(" hover")); safariFlashFix("show"); }else{ layer.style.display = "block"; mark.className = mark.className +" hover"; if(getElm(layer.id+"BG")) { var bg = getElm(layer.id+"BG"); bg.style.height = layer.offsetHeight +"px"; if(isMac && !isSafari) setOpacity(bg,100); } safariFlashFix("hide"); } } function showMenuLayer(layer,mark,parent,left,top) { if(currentflyout && currentflyout.style.display == "block") { currentflyout.style.display = "none"; var m = currentflyout.mark; m.className = m.className.substring(0,m.className.indexOf(" hover")); } keepUp(getElm(layer)); toggleMenuLayer(layer,mark,parent,left,top); } function delayHide(elm){ if(typeof elm != "object") elm = getElm(elm); elm.keepMeUp = false; setTimeout('hideMenuLayer()',100); } function keepUp(elm){ if(!elm) return; elm.keepMeUp = true; } function hideMenuLayer(){ if(!currentflyout) return; if(!currentflyout.keepMeUp) { currentflyout.style.display = "none"; var mark = currentflyout.mark; mark.className = mark.className.substring(0,mark.className.indexOf(" hover")); currentflyout = null; safariFlashFix("show"); } } /******************************* SAFARI FLASH FIX ******************************/ function safariFlashFix(state) { var ua = navigator.userAgent.toLowerCase(); if(ua.indexOf('safari') != -1) { var divs = document.getElementsByTagName("div"); for(var i=0;i=0) { if(state == "hide") { divs[i].openWidth = divs[i].offsetWidth; divs[i].style.overflow = "hidden"; divs[i].style.width = "1px"; } if(state == "show") { divs[i].style.width = divs[i].openWidth + "px"; divs[i].style.overflow = "visible"; } } } redrawWin(); } } /******************************* TITLE NAV ******************************/ function initTitleNav() { var tn = getElm("C_title_nav"); if(tn) { var tnCont = tn.parentNode; tnCont.style.zIndex = 5; tnCont.bg.style.zIndex = 4; tnCont.bg.style.backgroundColor = NAV_COLOR; if(isMac && !isSafari) { setOpacity(tnCont.bg,100); var tnFR = getElm("tnFindRetailBg"); setOpacity(tnFR,100); }else{ setOpacity(tnCont.bg,NAV_ALPHA); } if(top.location.href.indexOf("index") >= 0 || top.location.href.indexOf("home") >= 0 || top.location.href.charAt(top.location.href.length-1) == "/" ) { toggleTitleNav(getElm("tnToggle")); } } } function toggleTitleNav(anch) { var tn = getElm("C_title_nav"); var tnCont = tn.parentNode; var tnTop = getElm("tnTop"); var tnBot = getElm("tnBot"); if(!tn.state) tn.state = "closed"; if(tn.state == "open") { anch.className = "tnItem tnClosed"; tn.state = "closed"; writeHTML(anch, openMenuText); getElm("tnFindRetail").style.display = "none"; tnCont.style.height = tnTop.offsetHeight +"px"; tn.style.height = tnCont.style.height; safariFlashFix("show"); }else{ anch.className = "tnItem tnOpen"; tn.state = "open"; writeHTML(anch, closeMenuText); tnCont.style.height = (tnTop.offsetHeight+tnBot.offsetHeight) +"px"; tn.style.height = tnCont.style.height; safariFlashFix("hide"); } tnCont.bg.style.height = (parseInt(tnCont.style.height) + COMP_BORDER_WIDTH)+"px"; } var currenttnSubNav = null; function toggleTitleSubNav(anch) { var tn = getElm("C_title_nav"); var tnCont = tn.parentNode; var tnTop = getElm("tnTop"); var tnBot = getElm("tnBot"); var sunNavNum = anch.id.substring(7); var subNav = getElm("tnSubLinks_"+sunNavNum); if(currenttnSubNav && currenttnSubNav != subNav) { currenttnSubNav.style.display = "none"; currenttnSubNav.anch.className = "tnItem tnClosed"; } currenttnSubNav = subNav; currenttnSubNav.anch = anch; if(currenttnSubNav.style.display == "block") { currenttnSubNav.style.display = "none"; currenttnSubNav.anch.className = "tnItem tnClosed"; }else{ currenttnSubNav.style.display = "block"; currenttnSubNav.anch.className = "tnItem tnOpen"; } tnCont.style.height = (tnTop.offsetHeight+tnBot.offsetHeight) +"px"; tn.style.height = tnCont.style.height; tnCont.bg.style.height = (parseInt(tnCont.style.height) + COMP_BORDER_WIDTH)+"px"; } function tnOverlayToggle(elmID) { var tnFR = getElm(elmID); if(tnFR.style.display == "block") tnFR.style.display = "none"; else tnFR.style.display = "block"; var tnLn = getElm("tnLinks"); tnFR.style.height = tnLn.offsetHeight+"px";; } /******************************* ****************************** EXTENTEND NAV LAYERS ****************************** ******************************/ var enAniSpeed = 10; if(isSafari) enAniSpeed = 25; var enAniTimer = null; var PL = null; var plScrollbar = null; var GF = null; var gfScrollbar = null; function toggleExtenedNav(type) { if(!GF || !PL) return; var primaryLayer = eval(type); var secondaryLayer = (primaryLayer == GF) ? PL : GF; if(!primaryLayer || !secondaryLayer) return; switch (primaryLayer.aniDir){ case(-1): primaryLayer.aniDir = 1; case(1) : primaryLayer.aniDir = -1; default : { if(getClip(primaryLayer,'b') >= primaryLayer.maxClip) { primaryLayer.aniDir = -1; } if(getClip(primaryLayer,'b') <= 0) { primaryLayer.aniDir = 1; } } } //IF THE OTHER LAYER WAS NOT CLOSED if(secondaryLayer.open){ secondaryLayer.aniDir = -1; } //LAYER AND MASTHEAD ADJUSTMENT if(type == "GF"){ GF.parentNode.style.zIndex = 105; PL.parentNode.style.zIndex = 95; getElm("gamesLink").className = "siteLink clicked"; if(GF.aniDir == 1){ getElm("mastheadGF").style.display = "block"; getElm("mastheadPL").style.display = "none"; getElm("mastheadNorm").style.display = "none"; } } if(type == "PL"){ PL.parentNode.style.zIndex = 105; GF.parentNode.style.zIndex = 95; if(getElm("nationLoginLink")) getElm("nationLoginLink").className = "siteLink clicked"; if(PL.aniDir == 1){ getElm("mastheadPL").style.display = "block"; getElm("mastheadGF").style.display = "none"; getElm("mastheadNorm").style.display = "none"; } } if(!isSafari){ clearInterval(enAniTimer); enAniTimer = setInterval("animateExtendedNav()",25); }else{ clipNavLayer(GF,true); clipNavLayer(PL,true); setExtendNavVisualState(); } } /******************************* PERSITENT NATION LAYER ******************************/ var navRepImage = 'http://images.ea.com/sports/_img/nav/rep'; function initPersitence() { PL = getElm("persistentNation"); if(!PL) return; if(getElm("plScrollbar")) plScrollbar = new scrollbar("plScrollbar","plGamesList"); if(isLoggedIn) { if(getElm("plRep")) loadXMLDoc("/_includes/nation/xml_user_profile.jsp?playername="+playerName+"&platform="+playerPlatform ,"pl_user_stats",doPLstatsReady,doPLstatsWait); if(getElm("plFriends")) loadXMLDoc("/_includes/nation/xml_friends_online.jsp","pl_friends",plFriendsReady,plFriendsWait); } setClip(PL,0,PL.offsetWidth,0,0); PL.maxClip = PL.offsetHeight; PL.aniDir = 0; PL.closed = true; PL.open = !PL.closed; var anchs = PL.getElementsByTagName("a"); for(var i=0;i'; }else{ // getElm("plRep").innerHTML = "???"; } } function plFriendsWait() { getElm("plFriends").innerHTML = "???"; if(typeof doFriendsWait != "undefined") doFriendsWait("friends_all_") } function plFriendsReady() { if(!xmlDocs["pl_friends"]) return; var friendsXML = xmlDocs["pl_friends"].xml; if(!friendsXML) return; //if the function doFriendsReady exists we are on a profile page pass the xml on if(typeof doFriendsReady != "undefined") doFriendsReady("friends_all_","pl_friends"); var numberNode = friendsXML.getElementsByTagName("number"); if(!numberNode[0]){ getElm("plFriends").innerHTML = "???"; return; } if (getNodeValue(numberNode[0])) { getElm("plFriends").innerHTML = getNodeValue(numberNode[0]); }else{ getElm("plFriends").innerHTML = "???"; } } /******************************* GAME FINDER ******************************/ function initGameFinder() { GF = getElm("gameFinder"); if(!GF) return; sectionTabs = new tabSet("gfFilterOneTabs",tabOneSelectedIndex,setGFFilters); filterTabs = new tabSet("gfFilterTwoTabs",0,setGFFilters,true); gfScrollbar = new scrollbar("gfScrollbar","gfSportsList"); loadXMLDoc("/_includes/xml_game_finder.jsp","gamelist",doGamesXMLReady,doGamesXMLWait); //DISABLE GAMES AND SPORTS TABS sectionTabs.tabs[0].onclick = function(){return false;}; sectionTabs.tabs[0].style.cursor = "default"; sectionTabs.tabs[1].onclick = function(){return false;}; sectionTabs.tabs[1].style.cursor = "default"; setClip(GF,0,GF.offsetWidth,0,0); GF.maxClip = GF.offsetHeight; GF.aniDir = 0; GF.scrollDir = 0; GF.scrollDist = 0; GF.closed = true; GF.open = !GF.closed; GF.state = "filter"; // filter/free GF.category = "sports"; // games/sports GF.platform = null; GF.esrb = null; GF.genre = null; GF.defaultText = ""; GF.gfFreeName = ""; GF.resultsLeft = 18; GF.arrowWidth = 18; GF.resultsTop = 34; GF.gameWidth = 226; //actual width + spacing GF.gameCount = 0; GF.games = new Array(); //close the select on load hide3rdTierSearch(); //START SECOND FILTER IN "OFF" STATE if(filterTabs.currentTab) { filterTabs.currentTab.className = "tab gfTab"; filterTabs.currentTab = null; } } function getKeyString(elm) { if(!elm) return false; if(!elm.id) return false; return elm.id.substring(elm.id.indexOf("gfkey_")+6); } function getKeyText(key) { var keyELm = getElm("gfkey_"+key); if(keyELm) return getElm("gfkey_"+key).innerHTML; else return ""; } /******************************* ANIMATIONS ******************************/ function animateExtendedNav() { clipNavLayer(GF); clipNavLayer(PL); if(GF.aniDir == 0 && PL.aniDir == 0) { clearInterval(enAniTimer); setExtendNavVisualState(); } } function setExtendNavVisualState() { if(GF.closed){ getElm("mastheadGF").style.display = "none"; getElm("gamesLink").className = "siteLink"; }else{ getElm("mastheadGF").style.display = "block"; getElm("gamesLink").className = "siteLink clicked"; } if(PL.closed){ getElm("mastheadPL").style.display = "none"; if(getElm("nationLoginLink")) getElm("nationLoginLink").className = "siteLink"; }else{ getElm("mastheadPL").style.display = "block"; if(getElm("nationLoginLink")) getElm("nationLoginLink").className = "siteLink clicked"; } if(GF.closed && PL.closed) getElm("mastheadNorm").style.display = "block"; else getElm("mastheadNorm").style.display = "none"; } function clipNavLayer(L,skip) { if(skip){ if(L.aniDir == -1) setClip(L,0,L.offsetWidth,0,0); else if(L.aniDir == 1) setClip(L,0,L.offsetWidth,L.maxClip,0); }else{ clipBy(L,0,0,L.aniDir*enAniSpeed,0); } if(getClip(L,'b') >= L.maxClip) { setClip(L,0,L.offsetWidth,L.maxClip,0); L.aniDir = 0; L.closed = false; L.open = !L.closed; } if(getClip(L,'b') <= 0) { setClip(L,0,L.offsetWidth,0,0); L.aniDir = 0; L.closed = true; L.open = !L.closed; } } function gfScroll(dir) { clearInterval(enAniTimer); var aR = getElm("gfResultsArrowRight"); var aL = getElm("gfResultsArrowLeft"); GF.scrollDir = dir; if(Math.abs(GF.scrollDir) != 1){ aR.className = "gfResultsArrow"; aL.className = "gfResultsArrow"; return; } if(GF.scrollDir == -1){ aR.className = "gfResultsArrow gfRADown"; aL.className = "gfResultsArrow"; } if(GF.scrollDir == 1){ aR.className = "gfResultsArrow"; aL.className = "gfResultsArrow gfRADown"; } enAniTimer = setInterval("scrollGameFinder()",50); } function scrollGameFinder() { var gfC = getElm("gfResultsContainer"); moveBy(gfC,GF.scrollDir*enAniSpeed,0,0); if(getX(gfC) > GF.resultsLeft){ setX(gfC, GF.resultsLeft); GF.scrollDir = 0; clearInterval(enAniTimer); } if(getX(gfC) < GF.scrollDist+(GF.resultsLeft*2)){ setX(gfC,GF.scrollDist+(GF.resultsLeft*2)); GF.scrollDir = 0; clearInterval(enAniTimer); } } /******************************* STATES ******************************/ function setGFFilters(srcObj) { GF.state = "filter"; //FILTER ONE GAMES/SPORTS if(srcObj.parentNode.parentNode.id == "gfFilterOne") { if(sectionTabs && filterTabs) { if(sectionTabs.currentTab == getElm("gfSectionGamesTab")) { GF.category = "games"; if(filterTabs.currentTab == getElm("gfSportsTab")) filterTabs.setActiveTab(getElm("gfGamesTab")) } if(sectionTabs.currentTab == getElm("gfSectionSportsTab")) { GF.category = "sports"; if(filterTabs.currentTab == getElm("gfGamesTab")) filterTabs.setActiveTab(getElm("gfSportsTab")) } } } //FILTER TWO PLATFORM/GNERE/ESRB else if(srcObj.parentNode.parentNode.id == "gfFilterTwo" || srcObj.parentNode.parentNode.parentNode.id == "gfFilterTwo") { if(srcObj.pane.style.display == "block"){ show3rdTierSearch(); if(gfScrollbar) { gfScrollbar.target.style.top = "0px"; gfScrollbar.reset(srcObj.pane.id+"List"); } getElm("gfFilterThreeLabel").innerHTML = srcObj.innerHTML; getElm("gfPrompt").style.display = "block"; getElm("gfResults").style.display = "none"; if(srcObj.innerHTML.indexOf(gfTextGenre) >= 0) { writeHTML("gfPromptText", ""+gfTextSelectYourGenre+"") }; if(srcObj.innerHTML.indexOf(gfTextSport) >= 0) { writeHTML("gfPromptText", ""+gfTextSelectYourSport+"") }; if(srcObj.innerHTML.indexOf(gfTextESRB) >= 0) { writeHTML("gfPromptText", ""+gfTextSelectYourESRB+"") }; if(srcObj.innerHTML.indexOf(gfTextPlatform) >= 0) { writeHTML("gfPromptText", ""+gfTextSelectYourPlatform+"") }; }else{ hide3rdTierSearch(); } } //FILTER THREE SELECTION OF PLATFORM/GNERE/ESRB else if(srcObj.parentNode.parentNode.parentNode.id == "gfFilterThree") { setThirdTierFilter(srcObj); hide3rdTierSearch(); srcObj.parentNode.parentNode.style.display = "none"; doFilter(); } //FILTER FOUR FREE TYPE else if(srcObj.parentNode.id == "gfFreeSearch") { GF.state = "free"; hide3rdTierSearch(); doFilter(); } } function setThirdTierFilter(srcObj) { var catID = srcObj.parentNode.parentNode.id.toLowerCase(); if(catID.indexOf("system") >=0 ) { if(GF.platform) GF.platform.className = ""; GF.platform = srcObj; GF.platform.className = "On"; } if(catID.indexOf("sports") >=0 || catID.indexOf("games") >=0 ) { if(GF.genre) GF.genre.className = ""; GF.genre = srcObj; GF.genre.className = "On"; } if(catID.indexOf("rating") >=0 ) { if(GF.esrb) GF.esrb.className = ""; GF.esrb = srcObj; GF.esrb.className = "On"; } } function resetSearch() { if(GF.platform) GF.platform.className = ""; if(GF.genre) GF.genre.className = ""; if(GF.esrb) GF.esrb.className = ""; GF.platform = null; GF.genre = null; GF.esrb = null; GF.gfFreeName = ""; GF.state = "filter"; getElm("gfGameName").value = gfTextKeywordDefault; hide3rdTierSearch(); if(filterTabs.currentTab) { filterTabs.currentTab.className = "tab gfTab"; filterTabs.currentTab = null; } getElm("gfPrompt").style.display = "block"; getElm("gfResults").style.display = "none"; writeHTML("gfPromptText", GF.defaultText); var gamesXML = xmlDocs["gamelist"].xml; var gn = getNodeById(gamesXML,defaultPromoID); var gDiv = formatGame(gn); writeHTML("gfPromo", "
"+gfTextGameLatestReleaseHdr+"
"); getElm("gfPromo").appendChild(gDiv); } function show3rdTierSearch() { getElm("gfFilterThree").style.display = "block"; moveTo("gfPrompt",450,0,15); setWidth("gfPrompt",224); moveTo("gfResults",448,0,5); setWidth("gfResults",227); moveTo("gfResultsContainer",GF.resultsLeft,GF.resultsTop,1); } function hide3rdTierSearch() { getElm("gfFilterThree").style.display = "none"; moveTo("gfPrompt",223,0,15); setWidth("gfPrompt",452); moveTo("gfResults",223,0,5); setWidth("gfResults",452); moveTo("gfResultsContainer",GF.resultsLeft,GF.resultsTop,1); if(GF.gameCount == 0){ getElm("gfPrompt").style.display = "block"; getElm("gfResults").style.display = "none"; writeHTML("gfPromptText", GF.defaultText); }else{ if(GF.genre || GF.esrb && GF.platform) { getElm("gfPrompt").style.display = "none"; getElm("gfResults").style.display = "block"; }else{ getElm("gfPrompt").style.display = "block"; getElm("gfResults").style.display = "none"; showRefineSearch(); } } if(filterTabs.currentTab) { filterTabs.currentTab.className = "tab gfTab"; filterTabs.currentTab = null; } } /******************************* FILTER ******************************/ function doFreeSearchFocus(free) { if(free.value == gfTextKeywordDefault) free.value = ""; if(free.value != "") { GF.gfFreeName = free.value.toLowerCase(); setGFFilters(free); }else{ getElm("gfPrompt").style.display = "block"; getElm("gfResults").style.display = "none"; writeHTML("gfPromptText", GF.defaultText); } } function doFreeSearchBlur(free) { if(free.value == "") free.value = gfTextKeywordDefault; } function doFilter() { if(!xmlDocs["gamelist"]) return; var numReqMatches = 0; if(GF.platform) numReqMatches++; if(GF.esrb) numReqMatches++; if(GF.genre) numReqMatches++; var gamesXML = xmlDocs["gamelist"].xml; GF.gameCount = 0; GF.games = new Array(); //find the first ELEMENT_NODE node - its our root (IE will place a PROCESSING_INSTRUCTION_NODE in there) for(var i=0; i < gamesXML.childNodes.length; i++) { if(gamesXML.childNodes[i].nodeType == Node.ELEMENT_NODE) { gamesXML = gamesXML.childNodes[i]; break; } } if( (GF.state == "free" && GF.gfFreeName == "") || (GF.state == "free" && GF.gfFreeName == gfTextKeywordDefault.toLowerCase()) || (GF.state == "filter" && numReqMatches == 0) ) { //NOTHING TO FILTER ON getElm("gfPrompt").style.display = "block"; getElm("gfResults").style.display = "none"; var gn = getNodeById(gamesXML,defaultPromoID); var gDiv = formatGame(gn); writeHTML("gfPromo", "
"+gfTextGameLatestReleaseHdr+"
"); getElm("gfPromo").appendChild(gDiv); return; }else{ getElm("gfPrompt").style.display = "none"; getElm("gfResults").style.display = "block"; } parseGameList(gamesXML,numReqMatches); if(GF.genre || GF.esrb && GF.platform || GF.gameCount == 0 || GF.state == "free") { writeGFgames(); }else{ showRefineSearch(); } showGFPromo(gamesXML); } //PARSE THE GAME LIST function parseGameList(gamesXML,numReqMatches) { var games = new Array(); for(var i=0; i < gamesXML.childNodes.length; i++) { if(gamesXML.childNodes[i].nodeType != Node.ELEMENT_NODE) continue; if(gamesXML.childNodes[i].nodeName == "game") { //DO GAME FILTERING var gameNodeMatches = 0; var gameNode = gamesXML.childNodes[i]; if(GF.category != gameNode.getAttribute("category")) continue; //LOOP THRU THE GAME NODES for(var j=0; j < gameNode.childNodes.length; j++) { if(gameNode.childNodes[j].nodeType != Node.ELEMENT_NODE) continue; //TEXT MATCH IF WORKING OFF 'FREE' FILTER if(GF.state == "free") { if(GF.gfFreeName == "*") { games[games.length] = gameNode; GF.gameCount ++; break; } if(gameNode.childNodes[j].nodeName == "name") { var namePieces = getNodeValue(gameNode.childNodes[j]).split(" "); for(p in namePieces) { if(namePieces[p].toLowerCase().indexOf(GF.gfFreeName) == 0 ) { games[games.length] = gameNode; GF.gameCount ++; break; } } continue; } } //PROPERTY MATCH IF WORKING OFF SET FILTERS if(GF.state == "filter") { if(gameNode.childNodes[j].nodeName == "systems") {//systems system var systemNode = gameNode.childNodes[j]; for(var k=0; k < systemNode.childNodes.length; k++) { if(systemNode.childNodes[k].attributes) { if(systemNode.childNodes[k].getAttribute("type") == getKeyString(GF.platform)) { gameNodeMatches++; break; } } } } if(gameNode.childNodes[j].nodeName == "genres") {//genres genre var genreNode = gameNode.childNodes[j]; for(var k=0; k < genreNode.childNodes.length; k++) { if(genreNode.childNodes[k].nodeType != Node.ELEMENT_NODE) continue; if(genreNode.childNodes[k].attributes) { if(genreNode.childNodes[k].getAttribute("id") == getKeyString(GF.genre)) { gameNodeMatches++; break; } } } } if(gameNode.childNodes[j].nodeName == "esrb") {//esrb if(getNodeValue(gameNode.childNodes[j]) == getKeyString(GF.esrb)) gameNodeMatches++; } }// end if state == "filter" }// end gameNode loop //alert("FILTERED LIST ON "+numMatches+" MATCHES | FOUND "+gameNodeMatches+" MATCHES"); //ADD GAME TO LIST IF IT PASSED ALL THE FILTERS if(gameNodeMatches == numReqMatches && GF.state == "filter") { games[games.length] = gameNode; GF.gameCount ++; continue; } }// end if gameNode == "game" }// end gamesXML loop //assign the games array back to the Game Finder GF.games = games; } function writeGFgames() { //CLEAR THE RESULTS LIST clearElm("gfResultsContainer"); //IF THERE ARE NO MATCHES DISPLAY MSG if(GF.gameCount == 0) { getElm("gfPromo").innerHTML = GF.defaultPromo; getElm("gfPrompt").style.display = "block"; getElm("gfResults").style.display = "none"; var noResultsText = ""+gfTextSorryPartOne+"
"+gfTextSorryPartTwo+" "; if(GF.state == "filter") { noResultsText += (GF.esrb) ? getKeyText(getKeyString(GF.esrb))+" " : ""; noResultsText += (GF.genre) ? getKeyText(getKeyString(GF.genre))+" " : ""; noResultsText += gfTextGamePartOne+gfTextGamePartTwo+" "; noResultsText += (GF.platform) ? gfTextForThe +" " + getKeyText(getKeyString(GF.platform)) : ""; }else{ noResultsText += gfTextEABrand+" "+gfTextGamePartOne+gfTextGamePartTwo+" "+gfTextFreeSearchFeedback +" "+ getElm("gfGameName").value; } noResultsText += "
"; writeHTML("gfPromptText", noResultsText); }else{ //WRITE THE GAMES OUT var c = 0 for(g in GF.games) { getElm("gfResultsContainer").appendChild(formatGame(GF.games[g],c)); c ++; } var visD = getElm("gfResultsContainer").parentNode.offsetWidth var gfRC = Math.max( (GF.gameWidth*c) , visD ) getElm("gfResultsContainer").style.width = gfRC+"px"; GF.scrollDist = visD - gfRC; if(GF.scrollDist < 0) { GF.resultsLeft = GF.arrowWidth GF.scrollDist -= (GF.arrowWidth*2) getElm("gfResultsArrowRight").style.display = "block"; getElm("gfResultsArrowLeft").style.display = "block"; }else{ GF.resultsLeft = 8; getElm("gfResultsArrowRight").style.display = "none"; getElm("gfResultsArrowLeft").style.display = "none"; } moveTo("gfResultsContainer",GF.resultsLeft,GF.resultsTop,1); //WRITE OUT THE RESULTS FEEDBACK var resultsText = formatResultsFeedback(); writeHTML("resultsFeedback", resultsText); } } function showRefineSearch(){ getElm("gfPrompt").style.display = "block"; getElm("gfResults").style.display = "none"; var rText = formatResultsFeedback(); rText += "
"+ gfTextNarrowSearch+" "; if(GF.esrb){ rText += gfTextPlatform+" or "; rText += (GF.category == "sports") ? gfTextSport : gfTextGenre; } var pLink = ""; //TODO FIX THIS ITS BAAAAAD var pKey = getKeyString(GF.platform); if(pKey == 'ps3') { pLink = "" } else if(pKey == 'ps2') { pLink = "/sports/ps2.jsp" } else if(pKey == 'ps') { pLink = "" } else if(pKey == 'psp') { pLink = "/sports/psp.jsp" } else if(pKey == 'pccd') { pLink = "/sports/pc.jsp" } else if(pKey == 'pcdvd') { pLink = "/sports/pc.jsp" } else if(pKey == 'xbox360') { pLink = "/sports/xbox360.jsp" } else if(pKey == 'xbox') { pLink = "/sports/xbox.jsp" } else if(pKey == 'ds') { pLink = "/sports/ds.jsp" } else if(pKey == 'gba') { pLink = "/sports/gameboyadvance.jsp" } else if(pKey == 'gbasp') { pLink = "" } else if(pKey == 'rev') { pLink = "" } else if(pKey == 'gcn') { pLink = "/sports/gamecube.jsp" } else if(pKey == 'giz') { pLink = "" } else if(pKey == 'mobile') { pLink = "/sports/mobile.jsp" } if(GF.platform){ rText += gfTextESRB+" or "; rText += (GF.category == "sports") ? gfTextSport : gfTextGenre; if(pLink != "") rText += " "+gfTextOrViewAll+" "+ getKeyText(getKeyString(GF.platform))+" "+ gfTextGamePartOne+gfTextGamePartTwo+""; } writeHTML("gfPromptText", rText); } function formatResultsFeedback() { var rfText = "
"+gfTextResultTextPartOne+" "+GF.gameCount+" "; if(GF.state == "filter") { rfText += (GF.esrb) ? gfTextRatedText+" ("+getKeyString(GF.esrb).toUpperCase()+") "+gfTextFor+" "+getKeyText(getKeyString(GF.esrb))+" " : ""; rfText += (GF.genre) ? getKeyText(getKeyString(GF.genre))+" " : ""; rfText += gfTextGamePartOne + ( (GF.gameCount==1) ? "" : gfTextGamePartTwo) + " " ; rfText += gfTextResultTextPartTwo+" "; rfText += (GF.platform) ? gfTextForThe+" "+getKeyText(getKeyString(GF.platform)) : ""; }else{ rfText += gfTextGamePartOne + ( (GF.gameCount==1) ? "" : gfTextGamePartTwo) + " " ; rfText += gfTextFreeSearchFeedback +" "+getElm("gfGameName").value; } rfText += "
"; return rfText; } function showGFPromo(gamesXML) { //CLEAR THE PROMO SPACE clearElm("gfPromo"); //CHECK FOR PROMO var promoList = gamesXML.getElementsByTagName("promos")[0]; promoList = promoList.getElementsByTagName("promo"); var promoFeature = getPromoSpot(promoList); //CHECK FOR RELATED LINKS var genreLinks = gamesXML.getElementsByTagName("links"); var linksToWrite = getPromoSpot(genreLinks); function getPromoSpot(list) { var pf = null; for(var promo = 0; promo < list.length; promo++) { if(list[promo].nodeType != Node.ELEMENT_NODE) continue; if(list[promo].getAttribute("linkage") == getKeyString(GF.esrb)) pf = list[promo]; } for(var promo = 0; promo < list.length; promo++) { if(list[promo].nodeType != Node.ELEMENT_NODE) continue; if(list[promo].getAttribute("linkage") == getKeyString(GF.platform)) pf = list[promo]; } for(var promo = 0; promo < list.length; promo++) { if(list[promo].nodeType != Node.ELEMENT_NODE) continue; if(list[promo].getAttribute("linkage") == getKeyString(GF.genre)) pf = list[promo]; } return pf; } //WRITE THE PROMO SPOT if(linksToWrite) { var linkNodes = linksToWrite.getElementsByTagName("link"); var linksHTML = "
"+gfTextGameLinksListHdr+"
"; writeHTML("gfPromo", linksHTML); }else{ if(promoFeature) var gn = getNodeById(gamesXML,promoFeature.getAttribute("gameID")); else var gn = getNodeById(gamesXML,defaultPromoID); var gDiv = formatGame(gn); writeHTML("gfPromo", "
"+gfTextGameLatestReleaseHdr+"
"); getElm("gfPromo").appendChild(gDiv); } } //FORMAT A GAME function formatGame(gameNode,count) { var baseID = "gfR"; if(!count) { count = 0; baseID = "gfRPromo"; } var game = document.createElement("DIV"); game.className = "gfResult"; game.style.left = (GF.gameWidth*count)+"px"; game.id = baseID+"_"+count; var gImg = createElm("IMG",null,game); gImg.className = "gfThumb"; var gText = createElm("DIV",null,game); gText.className = "gfGameText"; var gTitle = createElm("DIV",null,gText); gTitle.className = "gfGameTitle"; var gPlat = createElm("DIV",null,gText); gPlat.className = "gfGamePlat"; var gEsrb = createElm("DIV",null,gText); gEsrb.className = "gfGameEsrb"; var gLinks = createElm("DIV",null,game); gLinks.className = "gfGameLinks"; var gameURL = getNodeValue(gameNode.getElementsByTagName("homepage")[0]); if(gameURL != ""){ var gLink = createElm("A",null,gLinks); gLink.className = "button viewSite"; gLink.href = gameURL; } var gBuy = createElm("A",null,gLinks); gBuy.className = "button buyIt"; gImg.src = getNodeValue(gameNode.getElementsByTagName("image_directory")[0])+"box_art_thumb.gif"; writeTo(gTitle,getNodeValue(gameNode.getElementsByTagName("name")[0])); writeHTML(gPlat,"
"); var rating = getNodeValue(gameNode.getElementsByTagName("esrb")[0]); writeHTML(gEsrb,gfTextRatedText+" ("+rating.toUpperCase()+")
"+gfTextFor+" "+getKeyText(rating)); //build the buy link var buyLink = ""; if(GF.platform && GF.state == "filter") { var sysNodes = gameNode.getElementsByTagName("system"); for(var i=0; i < sysNodes.length; i++) { if(sysNodes[i].attributes) { if(sysNodes[i].getAttribute("type") == getKeyString(GF.platform)) { // if there is no SKU then give the user the Keyword link var eaStoreSKU = sysNodes[i].getAttribute("itemID"); if(isNaN(parseInt(eaStoreSKU)) == true) buyLink = baseSearchURL + getNodeValue(gameNode.getElementsByTagName("keyword")[0]); else buyLink = baseBuyURL + eaStoreSKU; break; } } } }else{ buyLink = baseSearchURL + getNodeValue(gameNode.getElementsByTagName("keyword")[0]); } gBuy.href = buyLink; return game; } /******************************* XML CALLBACKS ******************************/ function doGamesXMLWait() { clearElm("gfPromptText"); writeTo("gfPromptText", "LOADING XML...."); } function doGamesXMLReady() { clearElm("gfPromptText"); var gamesXML = xmlDocs["gamelist"].xml; //find the first ELEMENT_NODE node - its our root (IE will place a PROCESSING_INSTRUCTION_NODE in there) for(var i=0; i < gamesXML.childNodes.length; i++) { if(gamesXML.childNodes[i].nodeType == Node.ELEMENT_NODE) { gamesXML = gamesXML.childNodes[i]; break; } } var numGames = 0; for(var i=0; i < gamesXML.childNodes.length; i++) { if(gamesXML.childNodes[i].nodeType != Node.ELEMENT_NODE) continue; if(gamesXML.childNodes[i].nodeName == "game") { numGames ++; } } var gn = getNodeById(gamesXML,defaultPromoID); var gDiv = formatGame(gn); writeHTML("gfPromo", "
"+gfTextGameLatestReleaseHdr+"
"); getElm("gfPromo").appendChild(gDiv); GF.defaultText = gfTextDefaultTextPartOne+" "+numGames+" "+gfTextDefaultTextPartTwo; writeHTML("gfPromptText", GF.defaultText); window.status = " "; }