/*********************************
news.js for EA.com
code by Byron Tredwell (byron(AT)blastradius.com)
*********************************/
//RSS NEWS FEED
function writeNewsFeed(feedType,feedNum)
{
loadXMLDoc("/framework/_includes/rss_conduit.jsp?feed="+feedType,feedType,function(){doNewsRSSReady(feedType,feedNum)},function(){doNewsRSSWait(feedType,feedNum)});
}
function doNewsRSSWait(feedType,feedNum)
{
var newsBlock = getElm(feedType+"_"+feedNum);
if(!newsBlock)
return;
var waitHTML = "
Loading XML...
"
writeHTML(newsBlock,waitHTML);
}
function doNewsRSSReady(feedType,feedNum)
{
feedNum = parseInt(feedNum);
var newsBlock = getElm(feedType+"_"+feedNum);
if(!newsBlock)
return;
if(!xmlDocs[feedType])
return;
var rssXML = xmlDocs[feedType].xml;
if(!rssXML)
return;
clearElm(newsBlock);
var rssItems = rssXML.getElementsByTagName("item");
var feedItemCount = 0;
var newsItem = "";
for(var i=0; i < rssItems.length; i++)
{
var itemNode = rssItems[i];
var text = "";
var href = "";
for(var j=0; j < itemNode.childNodes.length; j++)
{
if(itemNode.childNodes[j].nodeName == "title")
{
text = getNodeValue(itemNode.childNodes[j]);
}
if(itemNode.childNodes[j].nodeName == "link")
{
href = getNodeValue(itemNode.childNodes[j]);
}
}
if(text != "" && href != "")
{
newsItem += "";
feedItemCount++;
}
if(feedItemCount >= feedNum)
{
break;
}
}
writeHTML(newsBlock,newsItem);
}
//TITLE SITE NEWS / EVENTS HELPERS
//init the scrolling for a news list
function initNewsList(gridNum)
{
initScrollingComponent(gridNum);
var comp = getElm("comp_"+gridNum);
var cont = getElm("cont_"+gridNum);
var tabs = getElm("newsEventsTabs");
var scroll = getElm("elScrollbar_"+gridNum);
cont.style.marginTop = tabs.offsetHeight + "px";
scroll.style.marginTop = tabs.offsetHeight + "px";
cont.style.height = (cont.offsetHeight - tabs.offsetHeight) + "px";
var contW = comp.offsetWidth;
var lOne = getElm("news_all_");
var lTwo = getElm("news_community_");
lOne.style.width = (contW-(PADDING+SB_WIDTH)) +"px";
lTwo.style.width = (contW-(PADDING+SB_WIDTH)) +"px";
var lOne = getElm("listOneFirstChild_"+gridNum+"_0");
var lTwo = getElm("listTwoFirstChild_"+gridNum+"_0");
lOne.style.marginTop = "0px";
if(lTwo && typeof lTwo != "undefined"){
lTwo.style.marginTop = "0px";
}
}
function resetNewsListScroller(tab)
{
if(typeof nlScrollbar != "undefined" && firstLoad){
nlScrollbar.reset(tab.pane.id);
var na = document.getElementById("newsEventsArticle");
if(na)
showFirstArticle(tab)
}
firstLoad = true;
}
function showFirstArticle(tab){
sectionTab = tab.id.substring(5,tab.id.length-4);
switch(sectionTab){
case "all":
articleType = "";
break;
case "easports":
articleType = "generic";
break;
case "community":
articleType = "community";
break;
default:
articleType = "";
}
newDataId = eval(articleType + "_firstItemDataId");
newDCR = eval(articleType + "_firstItemDCR");
shortDCR = newDCR.substring(10,newDCR.length-16);
if(shortDCR.length>0){
if(shortDCR.substring(0,1) == "/"){
shortDCR = shortDCR.substring(1,shortDCR.length);
}
}
newItemId = shortDCR + articleType + newDataId;
getNewsArticle(newDCR, newDataId,newItemId);
}
function initNewsArticle(dataDCR,id)
{
var nac = getElm("newsArticleScrollContainer");
nac.style.top = PADDING+"px";
nac.style.height = (nac.parentNode.offsetHeight - (nac.offsetTop+(PADDING*2))) +"px";
nac.style.width = (nac.parentNode.offsetWidth) +"px";
var nal = getElm("newsArticleScroll");
var contW = nac.offsetWidth;
nal.style.width = (contW-WIDTH_W_SCROLL) +"px";
nal.baseWidth = parseInt(nal.style.width);
naScrollbar = new scrollbar("naScrollbar","newsArticleScroll");
naScrollbar.sb.style.top = nac.style.top;
getNewsArticle(dataDCR,id,"");
}
var newsItem = 0; // For screenshot viewer
function getNewsArticle(dataDCR,id,itemId)
{
if (itemId != "") {
newsItem = itemId;
}
else {
newsItem = 0;
}
var winScroll = getScrollTop(window);
var readableTop = getOffsetProperty("newsEventsArticle","Top")-10;
if(winScroll > readableTop)
window.scrollTo(0,readableTop);
loadXMLDoc("/framework/_includes/xml_news_events_article.jsp?dcr="+dataDCR+"&id="+id,dataDCR+"_"+id,function(){doNewsArticleReady(dataDCR,id,itemId)},function(){doNewsArticleWait(dataDCR,id)});
}
function doNewsArticleWait()
{
var newsBlock = getElm("newsEventsArticle");
if(!newsBlock)
return;
var waitHTML = "Loading XML...
"
writeHTML(newsBlock,waitHTML);
}
function doNewsArticleReady(dataDCR,id,itemId)
{
var newsBlock = getElm("newsEventsArticle");
if(!newsBlock)
return;
var newsXML = xmlDocs[dataDCR+"_"+id].xml;
if(!newsXML)
return;
//clearElm(newsBlock);
//find the first ELEMENT_NODE node - its our root (IE will place a PROCESSING_INSTRUCTION_NODE in there)
for(var i=0; i < newsXML.childNodes.length; i++)
{
if(newsXML.childNodes[i].nodeType == Node.ELEMENT_NODE)
{
newsXML = newsXML.childNodes[i];
break;
}
}
var newsHTML = "";
var content_type_media = "undefined";
var content_type_classification = "undefined";
var content_type_title = "undefined";
for(var i=0; i < newsXML.childNodes.length; i++)
{
if(newsXML.childNodes[i].nodeType != Node.ELEMENT_NODE)
continue;
var HTMLtext = getNodeValue(newsXML.childNodes[i]);
if(newsXML.childNodes[i].nodeName == "title")
{
newsHTML += ""+HTMLtext+"
";
}
if(newsXML.childNodes[i].nodeName == "subtitle")
{
newsHTML += ""+HTMLtext+"
";
}
if(newsXML.childNodes[i].nodeName == "type")
{
newsHTML += ""+HTMLtext+"
";
}
if(newsXML.childNodes[i].nodeName == "date")
{
newsHTML += ""+HTMLtext+"
";
}
if(newsXML.childNodes[i].nodeName == "body")
{
newsHTML += ""+HTMLtext+"
";
}
if(newsXML.childNodes[i].nodeName == "content_type_media")
{
content_type_media = getNodeValue(newsXML.childNodes[i]);
if(content_type_media == "null"){
content_type_media = "undefined";
}
}
if(newsXML.childNodes[i].nodeName == "content_type_classification")
{
content_type_classification = getNodeValue(newsXML.childNodes[i]);
if(content_type_classification == "null"){
content_type_classification = "undefined";
}
}
if(newsXML.childNodes[i].nodeName == "content_type_title")
{
content_type_title = getNodeValue(newsXML.childNodes[i]);
if(content_type_title == "null"){
content_type_title = "undefined";
}
}
}
buildContentType(content_type_media, content_type_classification, content_type_title);
writeHTML(newsBlock,newsHTML);
if(document.getElementById("screenshots"))
{
screenshotImages = newsXML.getElementsByTagName("screenshot");
currentImage = 0;
showScreenshots(currentImage);
}else{
doNewsScrollBarAdjust();
}
if(itemId!="")
hiliteHeadline(itemId)
}
function doNewsScrollBarAdjust()
{
var nac = getElm("newsArticleScrollContainer");
var nal = getElm("newsArticleScroll");
var newsBlock = getElm("newsEventsArticle");
var viewableH = nac.offsetHeight;
if(viewableH > newsBlock.offsetHeight)
{
naScrollbar.sb.style.display = "none";
nal.style.width = nal.baseWidth + SB_WIDTH +"px";
}else{
naScrollbar.sb.style.display = "block";
nal.style.width = nal.baseWidth +"px";
}
naScrollbar.reset("newsArticleScroll");
}
function hiliteHeadline(itemId){
var headlineLink = getElm("headline_" + itemId);
var teaserDiv = getElm("teaser_" + itemId);
if(!headlineLink)
return;
headlineLink.className="on"
teaserDiv.className="teaserOn";
if(currItem != "" && itemId != currItem){
getElm("headline_" + currItem).className = "off";
getElm("teaser_" + currItem).className = "teaser";
}
currItem = itemId;
}
// Get the screenshot images.
var screenshotImages = new Array(); // Array of news article screenshot arrays.
var currentImage = 0; // Image currently displayed in screenshot viewer.
var noImages; // Total no. of article screenshots.
function showScreenshots(index) {
if(!screenshotImages[index])
return
if (screenshotImages.length > 0) {
noImages = screenshotImages.length;
var screenshotHTML = '';
screenshotHTML += '
';
screenshotHTML += '';
if (currentImage > 0) {
screenshotHTML += '
<< Prev ';
}
else {
screenshotHTML += '
<< Prev ';
}
if (currentImage < noImages - 1) {
screenshotHTML += ' |
Next >> ';
}
else {
screenshotHTML += ' |
Next >> ';
}
screenshotHTML += " " + (currentImage + 1) + ' of ' + noImages;
screenshotHTML += '
';
if (document.getElementById("screenshots")) {
document.getElementById("screenshots").innerHTML = screenshotHTML;
}
}
}
function showNextImage() {
currentImage++;
showScreenshots(currentImage);
}
function showPrevImage() {
currentImage--;
showScreenshots(currentImage);
}