/**
 * Copyright (C) 2008 Brightcove, Inc.  All Rights Reserved.  No
 * use, copying or distribution of this work may be made except in
 * accordance with a valid license agreement from Brightcove, Inc.
 * This notice must be included on all copies, modifications and
 * derivatives of this work.
 *  
 * Brightcove, Inc MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT
 * THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
 * NON-INFRINGEMENT. BRIGHTCOVE SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED
 * BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS
 * SOFTWARE OR ITS DERIVATIVES.
 * 
 *
 * "Brightcove" is a trademark of Brightcove, Inc.
 * 
 * @description JS Example on how to play external Ads
 **/

    var player;
    var adModule;

    // called when template loads, we use this to store a reference to the player and modules
    // and add event listeners for external Ads

    function onTemplateLoaded(experienceID) {
        // 'experienceID' is equivalent to the html object id (ie: "myExperience")
        player= brightcove.getExperience(experienceID);
    // Get a reference to the Ad Module API
    adModule = player.getModule(APIModules.ADVERTISING);
    //Enabled External Ads
    adModule.enableExternalAds(true);
        
    // Add a callback function for the external Ads    event
    adModule.addEventListener(BCAdvertisingEvent.EXTERNAL_AD, onExternalAd);
    adModule.addEventListener(BCAdvertisingEvent.AD_COMPLETE, onAdComplete);    
    }

    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
        adModule.showAd(videoAd); 
        
        // Add an external banner to the HTML page using JS
        var externalBanner = document.getElementById("externalBanner");

		if(bannerAd.collapsedBannerURL) {
			if(bannerAd.collapsedBannerURL.indexOf(".jpg")>0||bannerAd.collapsedBannerURL.indexOf(".gif")>0||bannerAd.collapsedBannerURL.indexOf(".png")>0){
		        var expandedBannerHTML = "<a href='" + bannerAd.collapsedBannerClickURL + "' target='_blank'><img src='" + bannerAd.collapsedBannerURL + "' /></a>"; 
			}else{
				if(bannerAd.collapsedBannerURL.indexOf(".swf")>0){
			        var expandedBannerHTML = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0' width='300' height='250' id='compaionBigBoxad'><param name='movie' value='" + bannerAd.collapsedBannerURL + "'><param name='clickTAG' value='" + bannerAd.collapsedBannerClickURL + "'><param name='quality' value='high'><param name='bgcolor' value='#FFFFFF'><embed href='" + bannerAd.collapsedBannerURL + "' quality='high' bgcolor='#FFFFFF' width='300' height='250' name='companionBigBoxAd' align='' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object>"
				}else{
					if(bannerAd.collapsedBannerURL.indexOf(".htm")>0){
				        var expandedBannerHTML = "<iframe src=" + bannerAd.collapsedBannerURL + " frameborder='0' scrolling='no' width='300' height='250'></iframe>";
					}else{
				        var expandedBannerHTML = "<a href='" + bannerAd.collapsedBannerClickURL + "' target='_blank'><img src='" + bannerAd.collapsedBannerURL + "' /></a>"; 
					}
				}
			}
	        //writes out the regular anchor/tag to the externalBanner div
	        externalBanner.innerHTML = expandedBannerHTML;
		}

    }

    function onAdComplete(evt) {
		/////////////////////////////commented out this section so that ad stays on page, Bill 6/24/09
		//alert("ad complete");
        // Remove the banner on Ad Complete    
       // var externalBanner = document.getElementById("externalBanner");        
       // externalBanner.innerHTML ="";
    }
    
    // Parses a synchedBanner ad XML and creates a video Ad 
    // Change accordingly to the XML that you are trafficking as external ad.
    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 == "collapsedBannerURL" && currentNode.firstChild) collapsedAd.collapsedBannerURL = currentNode.firstChild.nodeValue;
            if(currentNode.nodeName == "collapsedBannerClickURL" && 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;        
    }
