var modAd;
var orgAdPolicy;

// START OAS_ad script
OAS_url = 'http://ads.belointeractive.com/RealMedia/ads/';
OAS_rn = '001234567890'; OAS_rns = '1234567890';
OAS_rn = new String (Math.random()); OAS_rns = OAS_rn.substring (2, 11);


function bcInitAdServing(bcExperience)
{
	modAd = bcExperience.getModule(APIModules.ADVERTISING);
    modAd.enableExternalAds(true);
    var adPolicy = new Object();
    //adPolicy.adServerURL = "http://ads.belointeractive.com/RealMedia/ads/adstream_sx.ads/www.dallasnews.com/entertainment/test/@Preroll";
    //Calls ad server and returns ads as source
    adPolicy.adServerURL = OAS_url + 'adstream_sx.ads/' + OAS_sitepage + '/1' + OAS_rns + '/@Preroll';
    //Calls ad server and returns OAS_RICH function
    //adPolicy.adServerURL = OAS_url + 'adstream_mjx.ads/' + OAS_sitepage + '/1' + OAS_rns + '/@Preroll';

    adPolicy.prerollAds = true;
    orgAdPolicy = modAd.getAdPolicy();
    modAd.setAdPolicy(adPolicy);
    modAd.addEventListener(BCAdvertisingEvent.EXTERNAL_AD, onExternalAd);
    modAd.addEventListener(BCAdvertisingEvent.AD_COMPLETE, onAdComplete); 

}
function onAdComplete(evt) 
{
	modAd.resumeAfterExternalAd(); 
}

function onExternalAd(evt) 
{
	// In this specific example, evt.ad contains the synchedBanner XML
			   
	// Create an XML doc with externalAd XML sent by the player
	var adXML = getXMLDoc(evt.ad);
			
	//Extract specific XML nodes for a video Ad
	var videoAd = getVideoAd(adXML);

	//Extract specific XML nodes for a Banner
	var bannerAd = getCollapsedBanner(adXML);
				
	// Render a video Ad using the Adverstising module
	modAd.showAd(videoAd); 
	companionClear();
				
	if (typeof(videoAd.videoURL) != 'undefined')
	{
   var externalBanner = document.getElementById("externalBanner");
	if (externalBanner)
	{
            //Check to see if this is a Rich Media Ad (Not just an image)
            //OAS should include a comment at the beginning of the ad XML ie. <!-- R_M_A -->
            //    So it can be identified
            if(bannerAd.collapsedBannerURL.indexOf('R_M_A', 0) < 10 && bannerAd.collapsedBannerURL.indexOf('R_M_A', 0) > 0 )
            {
               var externalBannerHTML = bannerAd.collapsedBannerURL;

               //writes out the regular anchor/tag to the externalBanner div
               jQuery("#externalBanner").show();
               //externalBanner.style.display = "";
               externalBanner.innerHTML = externalBannerHTML;

            } else {
			var externalBannerHTML = "<a href='" + bannerAd.collapsedBannerClickURL + "' target='_blank' ><img src='" + bannerAd.collapsedBannerURL + "' /></a>"; 
			//writes out the regular anchor/tag to the externalBanner div
			jQuery("#externalBanner").show();
			//externalBanner.style.display = "";
			externalBanner.innerHTML = externalBannerHTML;
 		}
            }
	}
}

function companionClear()
{
	// Add an external banner to the HTML page using JS
	var externalBanner = document.getElementById("externalBanner");
	if (externalBanner)
	{
		//blanks out externalBanner div
		externalBanner.innerHTML = "";
	}
}
function getVideoAd(adXML)
{
	var videoAd = new Object();
	videoAd.type = "videoAd";
	var nodeItems = adXML.firstChild.childNodes.length;
	var currentNode = adXML.firstChild.firstChild;

	//get the root node attributes
	videoAd.duration = (adXML.firstChild.getAttribute("duration")) ? adXML.firstChild.getAttribute("duration") : 15;
	if(adXML.firstChild.getAttribute("trackStartURLs")) videoAd.trackStartURLs = adXML.firstChild.getAttribute("trackStartURLs").split(",");
	if(adXML.firstChild.getAttribute("trackMidURLs") ) videoAd.trackMidURLs = adXML.firstChild.getAttribute("trackMidURLs").split(",");
	if(adXML.firstChild.getAttribute("trackEndURLs") ) videoAd.trackEndURLs = adXML.firstChild.getAttribute("trackEndURLs").split(",");
	if(adXML.firstChild.getAttribute("trackPointURLs") ) videoAd.trackPointURLs = adXML.firstChild.getAttribute("trackPointURLs").split(",");
	videoAd.trackPointTime = (adXML.firstChild.getAttribute("trackPointTime") ) ? adXML.firstChild.getAttribute("trackPointTime") : 0;

	for(var i = 0; i < nodeItems; i++)
	{
		//checks to see if the current nodes are in our Rich Media Templates and assigns them if they exist
		if(currentNode.nodeName == "videoURL" && currentNode.firstChild) videoAd.videoURL = currentNode.firstChild.nodeValue; 
		if(currentNode.nodeName == "videoClickURL" && currentNode.firstChild) videoAd.videoClickURL = currentNode.firstChild.nodeValue;
		currentNode = currentNode.nextSibling;
	}

	return videoAd;
}

// Parses a synchedBanner ad XML and returns an object with the collapse banner URL and click URL
// Change accordingly to the XML format that you traffic as external ad
function getCollapsedBanner(adXML)
{
	var collapsedAd = new Object(); 
	var nodeItems = adXML.firstChild.childNodes.length;
	var currentNode = adXML.firstChild.firstChild;

	for(var i = 0; i < nodeItems; i++)
	{
		// Get only the collapseBanner attributes 
		if(currentNode.nodeName == "expandedVideoURL" && currentNode.firstChild) collapsedAd.collapsedBannerURL = currentNode.firstChild.nodeValue;
		if(currentNode.nodeName == "expandedVideoClickURL" && currentNode.firstChild) collapsedAd.collapsedBannerClickURL = currentNode.firstChild.nodeValue;
		currentNode = currentNode.nextSibling;
	}
	return collapsedAd;
}

function getXMLDoc(pXML)
{
	var adXML;
	if (window.ActiveXObject) 
	{
		//parses the XML for IE browsers
		adXML = new ActiveXObject("Microsoft.XMLDOM");
		adXML.async = false;
		adXML.loadXML(pXML);
	}
	else //parses the XML for Mozilla browsers
	{
		if (window.XMLHttpRequest) adXML = (new DOMParser()).parseFromString(pXML, "text/xml"); 
	}
	return adXML;
}

function dump(myObj)
{
   var str="myObj"; //variable which will hold property values
   for(prop in myObj)
   {
      str+=prop + " value :"+ myObj[prop]+"\n";//Concate prop and its value from object
   }
   alert(str); //Show all properties and its value
}

