/*********************************
theater.js for EA.com
code by Chris Nott (chris.nott(AT)blastradius.com)
*********************************/
// global vars
var mediaType;
var gameID;
var mediaList;
var currentMediaIndex;
var mediaIdToPlay;
var gameIdToPlay;
// constants
var mediaListItemHeight = 103;
var mediaListScrollbar = null;
var imageRoot = 'http://images.ea.com/_img';
var screenshotContainerWidth = 593;
var screenshotContainerHeight = 348;
var filterClearOptionValue = '-all-';
var mediaTypeVideos = 'videos';
var mediaTypeScreenshots = 'screenshots';
var mediaTypeMusic = 'music';
/******************************************************************************
Initialization
*****************************************************************************/
function initTheater() {
// over-ride current toggleTitleNav() function on game menu to prevent filter from hovering over menu
// delay a bit so that title nav component can load (may appear after theater component in source)
setTimeout("overRideToggleTitleNav()", 500);
// if all media have been filtered out of the list, show error message and quit
if (mediaList.length == 0) {
document.getElementById('media-list-container').innerHTML = '
There is currently no available media for the ' + mediaType + ' section. Please try again soon
';
return;
}
// display media list
buildMediaList();
// if the mediaType is music, send the mediaList info to flash
// note: this is now called by the flash when it is ready
// sendMusicDataToFlash();
// if there is a specific media ID passed in on the url string, play the related media
if (mediaIdToPlay) {
for (var mediaIndex = 0; mediaIndex < mediaList.length; mediaIndex++) {
if ( ( mediaList[mediaIndex].mediaID == mediaIdToPlay && gameIdToPlay == '') ||
( mediaList[mediaIndex].mediaID == mediaIdToPlay && gameIdToPlay == mediaList[mediaIndex].gameName) ) {
currentMediaIndex = mediaIndex;
loadMedia(mediaIndex, false, true);
break;
}
}
}
// otherwise, load first media item (but don't start playing)
else {
currentMediaIndex = 0;
loadMedia(0, false, true);
}
// preload screenshots
if (mediaType == mediaTypeScreenshots) {
preloadScreenshots();
}
}
function buildMediaList() {
var numMedia = mediaList.length;
var mediaCounter = 0;
var pageCounter = 0;
var sidebarUL;
for (var mediaIndex = 0; mediaIndex < numMedia; mediaIndex++) {
//5 counter
if((mediaCounter < 1) && (pageCounter < 5)){
pageCounter++;
sidebarUL = document.createElement('UL');
sidebarUL.id = "latest-headlines-page-"+pageCounter;
sidebarUL.className = "page";
}
var mediaItem = mediaList[mediaIndex];
// create list item
var listItemElement = document.createElement('LI');
listItemElement.mediaIndex = mediaIndex;
listItemElement.id = 'media' + mediaIndex;
listItemElement.className = 'iteration'+mediaIndex;
listItemElement.onclick = function() { loadMedia(this.mediaIndex); return false;}
// populate list item
// thumbnail image
var thumbnailElement = document.createElement('IMG');
thumbnailElement.src = mediaItem.thumbImage;
listItemElement.appendChild(thumbnailElement);
// text (is media-specific)
var descriptionElement = document.createElement('span');
descriptionElement.innerHTML = getScreenshotItemText(mediaItem);
listItemElement.appendChild(descriptionElement);
var viewElement = document.createElement('A');
viewElement.setAttribute('href', '#');
viewElement.className = "perma";
mediaCounter++;
// listItemElement.appendChild(descriptionElement);
listItemElement.appendChild(viewElement);
sidebarUL.appendChild(listItemElement);
// if(mediaIndex == (numMedia-1) ){alert('m'+mediaIndex+' n'+(numMedia-1));}
// append new list item to media list
if (mediaCounter >= 5 || mediaIndex == (numMedia-1)){
mediaCounter = 0;
document.getElementById('sidebar-headlines').appendChild(sidebarUL);
if(pageCounter >=5)break;
}
}
// set media list scrollbar to correct height
init_pagination('latest-headlines');
}
/******************************************************************************
All Media
*****************************************************************************/
function loadMedia(mediaIndex, autoplayVideo, init) {
// set new item as the current one
setCurrentMediaItem(mediaIndex);
// populate game title, etc
var currentMediaItem = mediaList[currentMediaIndex];
// building out track stats
var track_stats = 'Latest Race Winner
'+currentMediaItem.latestWinner+'
';
track_stats += 'Race Record
'+currentMediaItem.raceRecord +'
';
track_stats +='Qualifying Record
'+currentMediaItem.qualifyingRecord+'
';
track_stats +='Year Opened
'+currentMediaItem.yearOpened+'
';
track_stats +='Seating Capacity
'+currentMediaItem.seatingCapacity+'
';
track_stats +='Distance
'+currentMediaItem.trackDistance+'
';
// current-media-game-info
document.getElementById('track-name-title').innerHTML = currentMediaItem.trackName;
document.getElementById('track-posted-date').innerHTML = currentMediaItem.postedDate;
document.getElementById('track-bio-description').innerHTML = currentMediaItem.trackBio;
document.getElementById('track-stats').innerHTML = track_stats;
loadScreenshot();
}
function setCurrentMediaItem(mediaIndex) {
// highlight media item
document.getElementById('media' + currentMediaIndex).className = '';
currentMediaIndex = mediaIndex;
document.getElementById('media' + currentMediaIndex).className = 'current';
// scroll media list to bring current item into view if needed
var mediaListItem = document.getElementById('media' + currentMediaIndex);
if (mediaListScrollbar) {
mediaListScrollbar.scrollIntoView(mediaListItem.offsetTop, mediaListItemHeight);
}
}
function getNextMediaIndex() {
var nextMediaIndex = currentMediaIndex + 1;
if (nextMediaIndex >= mediaList.length) {
nextMediaIndex = 0;
}
return nextMediaIndex;
}
function getPrevMediaIndex() {
var prevMediaIndex = currentMediaIndex - 1;
if (prevMediaIndex < 0) {
prevMediaIndex = mediaList.length - 1;
}
return prevMediaIndex;
}
/******************************************************************************
Wallpapers
*****************************************************************************/
function loadWallpaperLinks(wpID, DayNight) {
var wallpaperPath = 'http:/' + '/www.easports.com/downloads/easports/nascar08/wallpaper/';
var wpFilename = 'wp_' + wpID + DayNight + '_';
var wpResolution = new Array('1024x768','1280x800','1280x1024','1600x1200');
var infoBlock = getElm('btns-wp');
if (!infoBlock) return;
clearElm(infoBlock);
var infoHtml = '';
for(i=0; i' + wpResolution[i] + '';
}
writeHTML(infoBlock,infoHtml);
}
/******************************************************************************
Screenshots
*****************************************************************************/
function preloadScreenshots() {
var numScreenshots = mediaList.length;
for (var screenshotIndex = 0; screenshotIndex < numScreenshots; screenshotIndex++){
(new Image()).src = mediaList[screenshotIndex].screenshotURL;
(new Image()).src = mediaList[screenshotIndex].nightshotURL;
}
}
function loadScreenshot(night) {
var currentMediaItem = mediaList[currentMediaIndex];
//update content types for omniture call
buildContentType(currentMediaItem.contentTypeMedia, currentMediaItem.contentTypeClassification, currentMediaItem.contentTypeTitle);
// screenshot img
if(night){
document.getElementById('track-bio-image').src = currentMediaItem.nightshotURL;
loadWallpaperLinks(currentMediaItem.mediaID, 'N');
}else{
document.getElementById('track-bio-image').src = currentMediaItem.screenshotURL;
loadWallpaperLinks(currentMediaItem.mediaID, 'D');
}
// current-media-description stuff
}
var slideshowInterval;
var slideshowDelay = 3000;
function loadNextScreenshot() {
loadMedia(getNextMediaIndex());
}
function loadPrevScreenshot() {
loadMedia(getPrevMediaIndex());
}
function getScreenshotItemText(mediaItem) {
// var text = mediaItem.postedDate ? ('' + mediaItem.postedDate + '
') : '';
var text = mediaItem.trackName ? ('' + mediaItem.trackName + '') : '';
text += mediaItem.platform != -1 ? (platformMapping[mediaItem.platform] + '
') : '';
return text;
}
function preloadScreenshots() {
for (var mediaIndex = 0; mediaIndex < mediaList.length; mediaIndex++) {
(new Image()).src = mediaList[mediaIndex].screenshotURL;
}
}
/******************************************************************************
Flash-Javascript communication
*****************************************************************************/
// create a flash proxy for flash-javascript communication
var lcId = new Date().getTime();
var flashProxy = new FlashProxy(lcId, "/framework/_js/flashjavascript/JavaScriptFlashGateway.swf");
/******************************************************************************
Over-ride menu functions to prevent IE bug
*****************************************************************************/
function overRideToggleTitleNav() {
var toggleLink = document.getElementById('tnToggle');
if (toggleLink) {
toggleLink.onclick = function() {
toggleTitleNav(this);
// if menu is open, hide filter dropdown
document.getElementById('filter').style.display = (this.className.indexOf('tnClosed') > -1) ? 'block' : 'none';
return false;
};
}
}
/******************************************************************************
Utility functions
*****************************************************************************/
function isUndefined(property) {
return (typeof property == 'undefined');
}
/***********************
signup cofirm popup
***********************/
function signupFanview(){
var confirmStatus = confirm("You are about to leave Electronic Arts' website and go to a website owned by a third party.\n\nElectronic Arts is not responsible for content on third party sites,\nand our privacy policy does not apply to their information collection practices.\n\nPress OK to access the linked site or press CANCEL to return to your original page.");
if(confirmStatus == false) {
return false;
}
var doit = true;
if (doit){
openFullChromeWindow("http://www.nextel.com/en/promotions/racing/fanview.shtml", "SignUp");
}
return false;
}