/*********************************
   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 = "<div class='headline'>Loading XML...</div>"
   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 += "<div class='content'><a href='"+href+"' onclick='popExternal(this.href); return false;'>"+text+"</a></div>";
         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 = "<div class='headline'>Loading XML...</div>"
   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 += "<div class='hdr'><h2>"+HTMLtext+"</h2></div>";
      }
      if(newsXML.childNodes[i].nodeName == "subtitle")
      {
         newsHTML += "<div class='subtitle'><h3>"+HTMLtext+"</h3></div>";
      }
      if(newsXML.childNodes[i].nodeName == "type")
      {
         newsHTML += "<div class='icon'>"+HTMLtext+"</div>";
      }
      if(newsXML.childNodes[i].nodeName == "date")
      {
         newsHTML += "<div class='date'>"+HTMLtext+"</div>";
      }
      if(newsXML.childNodes[i].nodeName == "body")
      {
         newsHTML += "<div class='body'>"+HTMLtext+"</div>";
      }
	  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 += '<img onload="doNewsScrollBarAdjust();" src="' + getNodeValue(screenshotImages[index]) + '" border="0">';
      screenshotHTML += '<div id="screenshotNav">';

      if (currentImage > 0) {
         screenshotHTML += '<a href="javascript:showPrevImage()">&lt;&lt; Prev</a> ';
      }
      else {
         screenshotHTML += '<span class="disabledLink">&lt;&lt; Prev </span>';
      }

      if (currentImage < noImages - 1) {
         screenshotHTML += ' | <a href="javascript:showNextImage()">Next &gt;&gt;</a> ';
      }
      else {
         screenshotHTML += ' | <span class="disabledLink">Next &gt;&gt;</span> ';
      }
      screenshotHTML += "&#160;&#160;" + (currentImage + 1) + ' of ' +  noImages;
      screenshotHTML += '</div></div>';

      if (document.getElementById("screenshots")) {
         document.getElementById("screenshots").innerHTML = screenshotHTML;
      }
   }
}

function showNextImage() {
   currentImage++;
   showScreenshots(currentImage);
}

function showPrevImage() {
   currentImage--;
   showScreenshots(currentImage);
}
    