var _ssFW=""; var NewsPlayer={ version:1, id:"root", SetModule:function(id,module){ var context=this; context[id]=module; context[id].id=id; context[id].rootContext=context; context[id].selfContext=context[id]; if (context[id].main){ context[id].main(); } } }; (function() { var Reporter = { report0: true, reportAd0: true, report25: true, report50: true, report75: true, report999: true, reportStart: true, reportEnd: true, reportAdStart: true, reportAdEnd: true, currentTime: 0, cc: false, fullscreen: false, canonicalUrl:"", videoType:"", Init: function () { }, Report: function (evtObj) { for (var item in evtObj){ this.reportData[item]=evtObj[item]; } this.reportData.fullscreen = this.fullscreen; this.reportData.closedCaption = this.cc; this.DispatchEvent(this.reportData); }, DispatchEvent:function(obj){ this.rootContext.CommunicationsModule.SendNBCEvent("Report",obj); }, reportOnStart: function (adRunning) { }, reportOnEnd: function (adRunning) { var eventData = { reportType: (adRunning) ? "videoAdEnd" : "videoEnd", time: this.currentTime } this.Report(eventData); }, reportPause: function (adRunning) { var eventData = { reportType: (adRunning) ? "videoAdPause" : "videoPause", time: this.currentTime } this.Report(eventData); }, playerError: function (eType,eMsg) { var eventData = { reportType: "playerError", errorType: eType, errorMsg: eMsg, time: this.currentTime } this.Report(eventData); }, reportScrub: function () { var eventData = { reportType: "videoScrub", time: this.currentTime } this.Report(eventData); }, reportOnTime: function (e, adIsRunning) { try { var context = this; var percent = e.data.percentComplete; context.currentTime = e.data.currentTime; var eventData = { time: context.currentTime }; if (context.videoType == "live" && !adIsRunning) { percent = 0.1; } switch (true) { case (!adIsRunning) && context.report999 && (percent > 99.8): context.report999 = false; eventData.reportType = "video100Complete"; context.Report(eventData); break; case (adIsRunning) && context.reportAdEnd && (percent > 90): context.reportAdEnd = false; eventData.reportType = "videoAdEnd"; // setTimeout(function(){$pdk.NBCplayer.isCurrentlyAd=false;},3000); context.Report(eventData); break; case (!adIsRunning) && context.report75 && (percent > 74): context.report75 = false; eventData.reportType = "video75Complete"; context.Report(eventData); break; case (!adIsRunning) && context.report50 && (percent > 49): context.report50 = false; eventData.reportType = "video50Complete"; context.Report(eventData); break; case (!adIsRunning) && context.report25 && (percent > 24): context.report25 = false; eventData.reportType = "video25Complete"; context.Report(eventData); break; case (percent > 0): if (!adIsRunning) { if (context.report0) { this.rootContext.CommunicationsModule.firstPlay=true; context.report0 = false; var eventData = { reportType: "videoStart", time: 0 } context.Report(eventData); } } else { if (context.reportAd0) { this.rootContext.CommunicationsModule.firstPlay=true; context.reportAd0 = false; var eventData = { reportType: "videoAdStart", time: 0 } context.Report(eventData); } } break; } } catch (err) { // nothing } }, fillData:function(obj){ this.videoType=obj.videoType; this.canonicalUrl=obj.cannonical; }, setFullscreen: function () { this.fullscreen = !this.fullscreen; }, setCC: function () { this.cc = !this.cc; }, reset: function () { this.report0 = true; this.reportAd0 = true; this.report25 = true; this.report50 = true; this.report75 = true; this.report999 = true; this.reportStart = true; this.reportEnd = true; this.reportAdStart = true; this.reportAdEnd = true; this.currentTime = 0; }, setFlatReportData:function(data){ this.reset(); this.reportData = { fileName: data.guid, show: data.show, clipName: data.title, guid: data.guid, canonicalUrl:data.canonicalUrl, adSupport: (data.plmedia$adPolicyId != "http://data.delivery.theplatform.com/delivery/data/AdPolicy/31476") ? "true" : "Breaking News", issues: [], subIssues: [], topics: [], people: [], franchise: [] }; this.reportData.reportType="NBCplayerVideoInit"; this.Report(this.reportData); }, setReportData: function (data) { this.reportData = { fileName: data.guid, show: data.nnd$source, clipName: data.title, guid: data.guid, adSupport: (data.plmedia$adPolicyId != "http://data.delivery.theplatform.com/delivery/data/AdPolicy/31476") ? "true" : "Breaking News", issues: [], subIssues: [], topics: [], people: [], franchise: [] }; for (var item in data.media$categories) { var cat = data.media$categories[item]; if (cat) { cat = cat["media$name"]; if (!cat){continue;} aCat = cat.toLowerCase().split("/"); if (aCat[0] == "msnbc") { var type = aCat[1]; var pushArray = ""; switch (type) { case "issues": this.reportData.issues.push(aCat[2]); if (aCat[3]) { pushArray = "subIssues"; } break; case "topics": switch (aCat[2]) { case "general": pushArray = "topics"; break; case "people": pushArray = "people"; break; case "franchise": pushArray = "franchise"; break; } break; } if (pushArray) { this.reportData[pushArray].push(aCat[3]); } } } } this.reportData.reportType="NBCplayerVideoInit"; this.Report(this.reportData); } }; var restStateObject={renderRestState:function(thumb){ var restState=document.getElementById("restState"); if (!restState){ } else{ var pl=document.getElementById("player"); var plParent=pl.parent; var restState=document.createElement("div"); restState.id="restState"; restState.position="absolute"; restState.top="0px"; restState.left="0px"; plParent.appendChild(restState); } restState.innerHTML=""; } }; var CommunicationsModule={ //frameHost:"http://localhost", frameHost:"*", registerWindowHandler : function() { var context=this; if (typeof window.addEventListener !== 'undefined') { window.addEventListener('message', function(e){context.handlemessage(e);}, false); } else { window.attachEvent('onmessage', function(e){context.handlemessage(e);}); } }, handlemessage:function(data){ var messageObject=this.deserialize(data.data); var methodType=messageObject.methodType; switch (methodType){ case "loadEntry": window._ssFW=messageObject.siteSection; this.rootContext.Reporter.setFlatReportData(messageObject); if (((navigator.userAgent.toLowerCase().indexOf("android")>-1)||(navigator.userAgent.toLowerCase().indexOf("silk")>-1)||(navigator.platform.toLowerCase().indexOf("ipad")>-1)||(navigator.platform.toLowerCase().indexOf("iphone")>-1))&&(!this.firstPlay)) { try{ $pdk.plugin["freewheel"]._instance.resetDataForNewRelease(); } catch(errr){ } $pdk.controller.loadReleaseURL(messageObject.linkUrl,true); } else{ $pdk.controller.setReleaseURL(messageObject.linkUrl,true); } break; case "pause": $pdk.controller.pause(true); break; case "loadEntrybyGuid": //alert("getEntryBy "+messageObject.guid); break; } }, deserialize:function(data){ var xobj={}; if (data&&data.data){ data=data.data; } else{ if (!data){ data={methodType:"noData"}; } } var obja=data.split("*"); for (var i=0;iadvertisementadvertisement'; bod[0].appendChild(newElem); NewsPlayer.SetModule("InitializationModule",InitializationModule); VPNBCccSupport.init(); } })(); var VPNBCccSupport = { init: function () { $('.tpContainer').after(this.ui()); this.onPDKInitiazed(); }, onPDKInitiazed: function () { $pdk.controller.addPlayerCard("forms", "tpSubtitleStylesCard", document.getElementById("tpSubtitleStylesCard").outerHTML, "urn:theplatform:pdk:area:player", {title: 'Closed Captions Settings', instructions: "Edit your caption styles below", apply: 'Apply', close: 'Close'}, VPNBCccSupport.presenter, 100); }, onCCPreview: function(release) { if (release.captions.length > 0) { return true; } else { return false; } }, onCCMedia: function(clip) { if (clip.baseClip.availableSubtitles.length > 0) { return true; } else { return false; } }, ui: function () { var subcard = '\${title}Text DisplayFontDefaultArialArial BlackCourierGeorgiaImpactLucida SansPalatinoTahomaTimes New RomanSizeDefaultTinySmallMediumLarge ColorBlackBlueGreenCyanRedPurpleYellowWhite BackgroundColorBlackBlueGreenCyanRedPurpleYellowWhiteTransparentOpacity100%75%50%25%Padding100%90%80%70%60%50%40%30%20%10%0% Text AdvancedStyleNoneBoldUnderlineItalicsEdgeDefaultNoneUniformRaisedDepressedDropShadow Edge colorBlackBlueGreenCyanRedPurpleYellowWhite Horizontal AlignDefaultLeftCenterRightVertical AlignDefaultTopMiddleBottomApplyCC OffCC On'; return subcard; }, presenter: { show: function(initVars) { var me = this; this.card = initVars.card; this.initVars = initVars; if (!this.controller) { this.controller = initVars.controller; if (!this.loadedLanguage || !this.loadStyles) { this.card.style.display = "none"; } this.listeners = {}; } $pdk.jQuery(this.card).find(".tpSubtitlesApply").click(function() { me.apply(); }) $pdk.jQuery(this.card).find(".tpSubtitlesClose").click(function() { me.card.style.display = "none"; }) $pdk.jQuery(this.card).find(".CCtoggleOn").click(function() { me.setCCFlag(true); }) $pdk.jQuery(this.card).find(".CCtoggleOff").click(function() { me.setCCFlag(false); }) if (!this.listeners.lang) { initVars.controller.addEventListener("OnGetSubtitleLanguage", this.listeners.lang = function (e) { me.loadLanguage(e) }); initVars.controller.addEventListener("OnGetSubtitleStyle", this.listeners.style = function (e) { me.loadStyles(e) }); } this.loadedStyles = false; this.loadedLanguage = false; $pdk.controller.getSubtitleStyle(); $pdk.controller.getSubtitleLanguage(); }, setCCFlag: function(flag) { if (flag) { $pdk.jQuery(this.card).find(".CCtoggleOn").addClass('buttonSelected'); $pdk.jQuery(this.card).find(".CCtoggleOff").removeClass('buttonSelected'); } else { $pdk.jQuery(this.card).find(".CCtoggleOff").addClass('buttonSelected'); $pdk.jQuery(this.card).find(".CCtoggleOn").removeClass('buttonSelected'); } }, hasCCFlag: function() { return $pdk.jQuery(this.card).find(".CCtoggleOn").hasClass('buttonSelected'); }, hide: function() { initVars.controller.removeEventListener("OnGetSubtitleLanguage", this.listeners.lang); initVars.controller.removeEventListener("OnGetSubtitleStyle", this.listeners.style); }, loadStyles: function(e) { if (e.data) { this.loadedStyles = true; if (e.data.fontSize == 0 || isNaN(e.data.fontSize)) { $pdk.jQuery(this.card).find("#fontSize")[0].value = ""; } else { $pdk.jQuery(this.card).find("#fontSize")[0].value = (isNaN(e.data.fontSize) || e.data.fontSize == null ? "5" : e.data.fontSize); } $pdk.jQuery(this.card).find("#fontColor")[0].value = e.data.fontColor; $pdk.jQuery(this.card).find("#fontFamily")[0].value = (e.data.fontFamily ? e.data.fontFamily : ""); $pdk.jQuery(this.card).find("#fontEdge")[0].value = (e.data.fontEdge ? e.data.fontEdge : ""); $pdk.jQuery(this.card).find("#fontEdgeColor")[0].value = e.data.fontEdgeColor; $pdk.jQuery(this.card).find("#backgroundColor")[0].value = e.data.backgroundColor; $pdk.jQuery(this.card).find("#opacity")[0].value = e.data.opacity; if (e.data.backgroundOpacity == 0) { $pdk.jQuery(this.card).find("#backgroundColor")[0].value = ""; } $pdk.jQuery(this.card).find("#opacity")[0].value = e.data.opacity; $pdk.jQuery(this.card).find("#padding")[0].value = (e.data.padding ? e.data.padding : ""); if (Boolean(e.data.bold)) { $pdk.jQuery(this.card).find("#fontStyle")[0].value = "bold"; } if (Boolean(e.data.italic)) { $pdk.jQuery(this.card).find("#fontStyle")[0].value = "italics"; } if (Boolean(e.data.underline)) { $pdk.jQuery(this.card).find("#fontStyle")[0].value = "underline"; } $pdk.jQuery(this.card).find("#textAlign")[0].value =(e.data.textAlign ? e.data.textAlign : ""); $pdk.jQuery(this.card).find("#textAlignVertical")[0].value = (e.data.textAlignVertical ? e.data.textAlignVertical : ""); this.update(); } }, loadLanguage: function(e) { if (e.data) { this.loadedLanguage = true; //$pdk.jQuery(this.card).find("#showCCs")[0].checked = (e.data.langCode === "en"); if ((e.data.langCode === "en")) { this.setCCFlag(true); } else { this.setCCFlag(false); } this.update(); } }, update: function() { if (this.loadedLanguage && this.loadStyles) { this.card.style.display = ""; } }, apply: function() { var showCCs = this.hasCCFlag(); var fontSize = Number($(this.card).find("#fontSize")[0].value); var fontColor = $(this.card).find("#fontColor")[0].value != "" ? $(this.card).find("#fontColor")[0].value : null; var fontFamily = $(this.card).find("#fontFamily")[0].value; var opacity = Number($(this.card).find("#opacity")[0].value); var fontEdge = $(this.card).find("#fontEdge")[0].value; var fontEdgeColor = $(this.card).find("#fontEdgeColor")[0].value != "" ? $(this.card).find("#fontEdgeColor")[0].value : null; var backgroundColor = $(this.card).find("#backgroundColor")[0].value != "" ? $(this.card).find("#backgroundColor")[0].value : null; var padding = Number($(this.card).find("#padding")[0].value); var bold = false; var italic = false; var underline = false; if ($(this.card).find("#fontStyle")[0].value == "bold") { bold = true; } if ($(this.card).find("#fontStyle")[0].value == "italics") { italic = true; } if ($(this.card).find("#fontStyle")[0].value == "underline") { underline = true; } var textAlign = $(this.card).find("#textAlign")[0].value; var textAlignVertical = $(this.card).find("#textAlignVertical")[0].value; if (fontSize == 0) fontSize = null; if (padding == 0) padding = null; if (showCCs) { $pdk.controller.setSubtitleLanguage("en"); } else { $pdk.controller.setSubtitleLanguage(null); } var style = { globalDataType: "com.theplatform.pdk.data::SubtitleStyle" } if (fontFamily) style.fontFamily = fontFamily; if (fontSize) style.fontSize = fontSize; if (fontColor) style.fontColor = fontColor; if (fontEdge) style.fontEdge = fontEdge; if (fontEdgeColor) style.fontEdgeColor = fontEdgeColor; if (backgroundColor) { style.backgroundColor = backgroundColor; style.backgroundOpacity = 1; } else { style.backgroundOpacity = 0; } if (opacity) style.opacity = opacity; if (padding) style.padding = padding; if (bold) style.bold = bold; if (italic) style.italic = italic; if (underline) style.underline = underline; if (textAlign) style.textAlign = textAlign; if (textAlignVertical) style.textAlignVertical = textAlignVertical; $pdk.controller.setSubtitleStyle(style); $pdk.controller.hidePlayerCard("forms", "tpSubtitleStylesCard"); } } }; var fw_config = function() { var csid=""; var csQuery="csid"; var siteSection; // console.log(window._ssFW); siteSection = "MSNBC_Default"; if (window._ssFW){ siteSection=_ssFW; } // console.log("siteSection:"+siteSection); var network = 171224; var url = "http://29773.v.fwmrm.net"; var ssfallback=884078; var vafallback=56523430; if (window.localStorage.nbcvideoaddebug && window.localStorage.nbcvideoaddebug === "true") { network = 171224; url = "http://29cd8.v.fwmrm.net"; ssfallback=853833; vafallback=56327712; } return { siteSectionId: siteSection, keyValues:KruxKeyValues }; }; function companionAdCallback(htmlAdContent, deprecatedParam, height, width, mimeType, slotCustomId) { eventObj = {}; eventObj.holderId=slotCustomId; eventObj.content = htmlAdContent; $pdk.controller.dispatchEvent("companionAd",{ message: eventObj, holderId:eventObj.holderId, timestamp: (new Date().valueOf()) }); }; var KruxKeyValues; window.addEventListener('message', function (event) { try { var data = JSON.parse(event.data); if (data.name == "setVariable") { if (data.parameters[0].hasOwnProperty("ksg")) { var ksg = data.parameters[0].ksg; var kuid = data.parameters[0].kuid; KruxKeyValues = "ksg=" + ksg + "&kuid=" + kuid; // console.log(KruxKeyValues); } } } catch (e) { // console.log("Failed to parse Krux Variables. " + e) } }, false); //version 9/16/2015