File manager - Edit - /home/newsbmcs.com/public_html/play1/js/ads.js
Back
// Copyright 2013 Google Inc. All Rights Reserved. // You may study, modify, and use this example for any purpose. // Note that this example is provided "as is", WITHOUT WARRANTY // of any kind either expressed or implied. // Modifed by CloudArcade 'use strict'; var Ads = function(application, videoPlayer) { this.application_ = application; this.videoPlayer_ = videoPlayer; this.customClickDiv_ = document.getElementById('customClick'); this.linearAdPlaying = false; google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED); this.adDisplayContainer_ = new google.ima.AdDisplayContainer( this.videoPlayer_.adContainer, this.videoPlayer_.contentPlayer, this.customClickDiv_); this.adsLoader_ = new google.ima.AdsLoader(this.adDisplayContainer_); this.adsManager_ = null; this.adsLoader_.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, this.onAdsManagerLoaded_, false, this); this.adsLoader_.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, this.onAdError_, false, this); }; // On iOS and Android devices, video playback must begin in a user action. // AdDisplayContainer provides a initialize() API to be called at appropriate // time. // This should be called when the user clicks or taps. Ads.prototype.initialUserAction = function() { this.adDisplayContainer_.initialize(); this.videoPlayer_.contentPlayer.load(); }; Ads.prototype.requestAds = function(adTagUrl) { this.contentCompleteCalled = false; this.allAdsCompleted = false; var adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = adTagUrl; adsRequest.linearAdSlotWidth = this.videoPlayer_.width; adsRequest.linearAdSlotHeight = this.videoPlayer_.height; adsRequest.nonLinearAdSlotWidth = this.videoPlayer_.width; adsRequest.nonLinearAdSlotHeight = this.videoPlayer_.height / 3; this.adsLoader_.requestAds(adsRequest); }; Ads.prototype.pause = function() { if (this.adsManager_) { this.adsManager_.pause(); } }; Ads.prototype.resume = function() { if (this.adsManager_) { this.adsManager_.resume(); } }; Ads.prototype.resize = function(width, height) { if (this.adsManager_) { this.adsManager_.resize(width, height, google.ima.ViewMode.NORMAL); } }; Ads.prototype.contentCompleted = function() { this.contentCompleteCalled = true; this.adsLoader_.contentComplete(); }; /** * If we're playing post-rolls, ALL_ADS_COMPLETED will not have fired at this * point. Here the cotent video is done, so if ads are also done, we start the * next video. */ Ads.prototype.contentEnded = function() { this.contentCompleted(); if (this.allAdsCompleted) { this.application_.switchButtonToReplay(); } }; Ads.prototype.destroyAdsManager = function() { if (this.adsManager_) { this.adsManager_.destroy(); this.adsManager_ = null; } }; Ads.prototype.onAdsManagerLoaded_ = function(adsManagerLoadedEvent) { this.application_.log('Ads loaded.'); var adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; this.adsManager_ = adsManagerLoadedEvent.getAdsManager( this.videoPlayer_.contentPlayer, adsRenderingSettings); this.startAdsManager_(this.adsManager_); if(typeof ca_api != 'undefined'){ ca_api.on_ad_start(); } }; Ads.prototype.startAdsManager_ = function(adsManager) { if (adsManager.isCustomClickTrackingUsed()) { this.customClickDiv_.style.display = 'table'; } // Attach the pause/resume events. adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, this.onContentPauseRequested_, false, this); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, this.onContentResumeRequested_, false, this); // Handle errors. adsManager.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, this.onAdError_, false, this); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, this.onAllAdsCompleted_, false, this); adsManager.addEventListener( google.ima.AdEvent.Type.LOADED, this.onAdLoaded, false, this); adsManager.addEventListener( google.ima.AdEvent.Type.SKIPPED, this.onAdSkipped, false, this); adsManager.addEventListener( google.ima.AdErrorEvent.Type.Df, this.onAdError_, false, this); var events = [ google.ima.AdEvent.Type.ALL_ADS_COMPLETED, google.ima.AdEvent.Type.CLICK, google.ima.AdEvent.Type.COMPLETE, google.ima.AdEvent.Type.FIRST_QUARTILE, google.ima.AdEvent.Type.LOADED, google.ima.AdEvent.Type.MIDPOINT, google.ima.AdEvent.Type.PAUSED, google.ima.AdEvent.Type.STARTED, google.ima.AdEvent.Type.THIRD_QUARTILE ]; for (var index in events) { adsManager.addEventListener(events[index], this.onAdEvent_, false, this); } var initWidth, initHeight; if (this.application_.fullscreen) { initWidth = this.application_.fullscreenWidth; initHeight = this.application_.fullscreenHeight; } else { initWidth = this.videoPlayer_.width; initHeight = this.videoPlayer_.height; } adsManager.init(initWidth, initHeight, google.ima.ViewMode.NORMAL); adsManager.start(); }; Ads.prototype.onContentPauseRequested_ = function() { this.linearAdPlaying = true; this.application_.pauseForAd(); this.application_.setVideoEndedCallbackEnabled(false); }; Ads.prototype.onContentResumeRequested_ = function() { this.application_.setVideoEndedCallbackEnabled(true); this.linearAdPlaying = false; // Without this check the video starts over from the beginning on a // post-roll's CONTENT_RESUME_REQUESTED if (!this.contentCompleteCalled) { this.application_.resumeAfterAd(); } }; Ads.prototype.onAdEvent_ = function(adEvent) { this.application_.log('Ad event: ' + adEvent.type); if (adEvent.type == google.ima.AdEvent.Type.CLICK) { this.application_.adClicked(); } else if (adEvent.type == google.ima.AdEvent.Type.LOADED) { var ad = adEvent.getAd(); if (!ad.isLinear()) { this.onContentResumeRequested_(); } } if(adEvent.type == 'complete'){ if(typeof ca_api != 'undefined'){ ca_api.remove_ad(); ca_api.on_ad_finished(); } } }; Ads.prototype.onAdError_ = function(adErrorEvent) { this.application_.log('Ad error: ' + adErrorEvent.getError().toString()); if (this.adsManager_) { this.adsManager_.destroy(); } this.application_.resumeAfterAd(); if(typeof ca_api != 'undefined'){ ca_api.on_ad_error(adErrorEvent); ca_api.remove_ad(); } }; /** * If we aren't playing post-rolls, ALL_ADS_COMPLETED will be fired before * the video player fires the ended event. Here ads are done, so if * the content video is done, we start the next video. If ads are done but the * content video is still playing, we just let it finish. * @private */ Ads.prototype.onAllAdsCompleted_ = function() { this.allAdsCompleted = true; if (this.contentCompleteCalled) { this.application_.switchButtonToReplay(); } if(typeof ca_api != 'undefined'){ ca_api.remove_ad(); ca_api.on_ad_finished(); } }; Ads.prototype.onAdLoaded = function() { if(typeof ca_api != 'undefined'){ ca_api.on_ad_start(); } }; Ads.prototype.onAdSkipped = function() { if(typeof ca_api != 'undefined'){ ca_api.on_ad_closed(); } }; /** * Handles user interaction and creates the player and ads controllers. */ var Application = function() { if(!document.getElementById('ca-ads')){ var html = '<div id="video-container"><video id="video-element"></video><div id="ad-container"></div></div>'; var ad_content = document.createElement("div"); ad_content.setAttribute("id", "ca-ads"); ad_content.innerHTML = html; document.body.appendChild(ad_content); } this.fullscreenWidth = null; this.fullscreenHeight = null; document.addEventListener( 'fullscreenchange', this.bind_(this, this.onFullscreenChange_), false); this.initialUserActionHappened_ = false; this.playing_ = false; this.adsActive_ = false; this.adsDone_ = false; this.fullscreen = false; this.videoPlayer_ = new VideoPlayer(); this.ads_ = new Ads(this, this.videoPlayer_); this.adTagUrl_ = ''; if(typeof ca_api != 'undefined'){ this.adTagUrl_ = ca_api.ima_adtag; } this.videoEndedCallback_ = this.bind_(this, this.onContentEnded_); this.setVideoEndedCallbackEnabled(true); window.addEventListener('resize', this.bind_(this, this.resizeFull), false); }; Application.prototype.setVideoEndedCallbackEnabled = function(enable) { if (enable) { this.videoPlayer_.registerVideoEndedCallback(this.videoEndedCallback_); } else { this.videoPlayer_.removeVideoEndedCallback(this.videoEndedCallback_); } }; Application.prototype.switchButtonToReplay = function() { //this.playButton_.style.display = 'none'; //this.replayButton_.style.display = 'block'; }; Application.prototype.log = function(message) { if(typeof ca_api != 'undefined'){ if(ca_api.debug){ console.log(message); } } }; Application.prototype.resumeAfterAd = function() { //this.videoPlayer_.play(); this.adsActive_ = false; this.updateChrome_(); }; Application.prototype.pauseForAd = function() { this.adsActive_ = true; this.playing_ = true; this.videoPlayer_.pause(); this.updateChrome_(); }; Application.prototype.adClicked = function() { this.playing_ = false; this.updateChrome_(); }; Application.prototype.bind_ = function(thisObj, fn) { return function() { fn.apply(thisObj, arguments); }; }; Application.prototype.onClick_ = function() { if (!this.adsDone_) { if (!this.initialUserActionHappened_) { // The user clicked/tapped - inform the ads controller that this code // is being run in a user action thread. this.ads_.initialUserAction(); this.initialUserActionHappened_ = true; } // At the same time, initialize the content player as well. // When content is loaded, we'll issue the ad request to prevent it // from interfering with the initialization. See // https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/ads#iosvideo // for more information. this.videoPlayer_.preloadContent(this.bind_(this, this.loadAds_)); this.adsDone_ = true; return; } if (this.adsActive_) { if (this.playing_) { this.ads_.pause(); } else { this.ads_.resume(); } } else { if (this.playing_) { this.videoPlayer_.pause(); } else { this.videoPlayer_.play(); } } this.playing_ = !this.playing_; this.updateChrome_(); }; Application.prototype.onReplay_ = function() { this.videoPlayer_.preloadContent(this.bind_(this, this.loadAds_)); this.adsDone_ = true; }; Application.prototype.updateChrome_ = function() { if (this.playing_) { //this.playButton_.textContent = 'II'; } else { // Unicode play symbol. //this.playButton_.textContent = String.fromCharCode(9654); } }; Application.prototype.loadAds_ = function() { this.videoPlayer_.removePreloadListener(); this.ads_.requestAds(this.adTagUrl_); }; Application.prototype.onFullscreenChange_ = function() { if (this.fullscreen) { // The user just exited fullscreen // Resize the ad container this.ads_.resize(this.videoPlayer_.width, this.videoPlayer_.height); // Return the video to its original size and position this.videoPlayer_.resize( 'relative', '', '', this.videoPlayer_.width, this.videoPlayer_.height); this.fullscreen = false; } else { // The fullscreen button was just clicked // Resize the ad container var width = this.fullscreenWidth; var height = this.fullscreenHeight; this.makeAdsFullscreen_(); // Make the video take up the entire screen this.videoPlayer_.resize('absolute', 0, 0, width, height); this.fullscreen = true; } }; Application.prototype.makeAdsFullscreen_ = function() { this.ads_.resize(this.fullscreenWidth, this.fullscreenHeight); }; Application.prototype.resizeFull = function() { if(typeof this != 'undefined'){ this.videoPlayer_.width = window.innerWidth; this.videoPlayer_.height = window.innerHeight; this.ads_.resize(this.videoPlayer_.width, this.videoPlayer_.height); } }; Application.prototype.onContentEnded_ = function() { this.ads_.contentEnded(); }; Application.prototype.showAds = function(event) { // Terms of Service says we can't kill an ad prematurely, so we will only // switch videos if there isn't an ad playing. if (!this.ads_.linearAdPlaying) { this.ads_.destroyAdsManager(); this.ads_.contentCompleted(); if (!this.initialUserActionHappened_) { this.ads_.initialUserAction(); this.initialUserActionHappened_ = true; } this.adsDone_ = true; //this.videoPlayer_.setContentVideoIndex(event.target.id); this.videoPlayer_.preloadContent(this.bind_(this, this.loadAds_)); } }; /** * Handles video player functionality. */ var VideoPlayer = function() { this.contentPlayer = document.getElementById('video-element'); this.adContainer = document.getElementById('ad-container'); this.videoPlayerContainer_ = document.getElementById('video-container'); this.contentIndex = 0; /*this.contentUrls = [ 'https://storage.googleapis.com/gvabox/media/samples/stock.mp4', 'https://storage.googleapis.com/gvabox/media/samples/android.mp4' ];*/ this.width = window.innerWidth; this.height = window.innerHeight; }; VideoPlayer.prototype.preloadContent = function(contentLoadedAction) { // If this is the initial user action on iOS or Android device, // simulate playback to enable the video element for later program-triggered // playback. if (this.isMobilePlatform()) { this.preloadListener_ = contentLoadedAction; this.contentPlayer.addEventListener( 'loadedmetadata', contentLoadedAction, false); this.setContentVideoSource_(this.contentIndex); } else { this.setContentVideoSource_(this.contentIndex); contentLoadedAction(); } }; VideoPlayer.prototype.removePreloadListener = function() { if (this.preloadListener_) { this.contentPlayer.removeEventListener( 'loadedmetadata', this.preloadListener_, false); this.preloadListener_ = null; } }; VideoPlayer.prototype.play = function() { this.contentPlayer.play(); }; VideoPlayer.prototype.pause = function() { this.contentPlayer.pause(); }; VideoPlayer.prototype.isMobilePlatform = function() { return this.contentPlayer.paused && (navigator.userAgent.match(/(iPod|iPhone|iPad)/) || navigator.userAgent.toLowerCase().indexOf('android') > -1); }; VideoPlayer.prototype.registerVideoEndedCallback = function(callback) { this.contentPlayer.addEventListener('ended', callback, false); }; VideoPlayer.prototype.removeVideoEndedCallback = function(callback) { this.contentPlayer.removeEventListener('ended', callback, false); }; VideoPlayer.prototype.setContentVideoIndex = function(index) { this.contentIndex = index; }; VideoPlayer.prototype.setContentVideoSource_ = function(index) { this.contentIndex = index; //this.contentPlayer.src = this.contentUrls[index]; this.contentPlayer.load(); };
| ver. 1.4 |
Github
|
.
| PHP 8.2.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings