Resurrection 'F' - Niv Lugassi

2 scenes of Frieza training with Tagoma on a mysterious planet (called: "Gravy") with gravity that rises as the time goes by, reaching that of over 500 times than Earth's in every 4 months time. First scene having them struggling to move around in 50 G; the next one (after the scene listed below & 4 months of training had passed) having them moving more swiftly with Frieza having no problems at all as he flips over and quickly passes Tagoma as he throw punches and kicks in the air, then the following scenario occurs: a close-up on the tyrant's eye shows a lightning which means he attained the power needed for his next evolution, he declares that his training are over and contact his men to set course to Earth, laughing maliciously as the camera enters the darkness in his laughter/mouth. The torturing of Tagoma (someone who at his best is even weaker than 10% of 1st form Frieza) concept as a training method to get a zenkai boost is truly idiotic, it'll be better to write it out.  Length:  3-4 minutes (1.5-2 each).   A scene of Sorbet explaining that Frieza ordered him to hire the most notorious/vicious mercenaries known in the universe to add them to his invading force after he concluded his current manpower won't be enough for the task. Sorbet then joyfully examines Shisami train with them, the scene ends with Sorbet turns to the camera grinning. **Camera pans super fast to the right**Galactic Patrol HQ - Turns out these new recruits were wanted by this faction which made them to thicken their monitoring over the Frieza Force, the info gathered helps the Galactic King become aware of Frieza's revival and plan to attack the Earth, he alerts Jaco who is in charge of this planet and ask him to alert Bulma who is "friends with the Saiyan who defeated Frieza on Namek". 25 mercenaries in number, commanding 40 soldiers each, 5 of them per Z-Fighter during the battle (Volume 'F' mentions that they were given the newest type of Battle Armor however we only saw one of them in the film, 0 in the Dragon Ball Super anime & 27 in the manga).  Length:  2 mins.  Having Yamcha & Chiaotzu in the cast for the battle with Frieza's Army - they have 1000 soldiers, Earth now has 8 protectors (7 Z-Fighters + Jaco) which makes the odds in 1:125 which is much better than 1:177. Write out Krillin's post-trauma shock (pathetic to make him scared of soldiers Raditz can probably fight after having courage to fight Kid Buu 5 years earlier), but keep Frieza's promise to his men he'd give whoever kills him a planet of his liking. After beating up all the weak soldiers & the more dangerous mercenaries with ease, Shisami ask his bosses to join the battle and attacks Piccolo who just defeated his last rival, after a close fight the Super Namek takes him down with a Special Beam Cannon; Tagoma who is now a giant douche mocks Shisami for being pathetically weak (may add something like: "I'd kill him myself, eventually..."), he proceeds to loudly disrespect the annoyed Sorbet by asking Frieza to give him his position if he'll kill the resistance, when Sorbet yells at him he stays quiet and scolds him with his look, frightening his former superior officer, Frieza laughs as he enjoys the new evil personality of Tagoma agrees to nominate him as the chief commander of his army and to also give him a planet of his liking (as in DB Super episode 21). Tagoma then uses after-image to get to the surface and sneaks on the exhausted Piccolo from behind, kicks him to the ground and rips off his arm when he tries to fight back, he then proceeds to decimate him like in the anime arc, Gohan blasts him off and gives Piccolo a Senzu bean, then once the fog from the blast is gone Gohan notices that Tagoma is still on his feet, laughing that he can't be defeated by weaklings like him, he looks at the other Z-Fighters and challenge them all to come at him, Gohan realized that slacking off training may have costed him this one, so he goes SSJ (much to Frieza & Sorbet's surprise/shock) and takes Tagoma out with one blow to the gut. Frieza has the same dialogue with the last soldier as in the movie, then he kills all his dying defeated men (with the Z-Fighters taking a jump above the blast, Jaco is in the safe back with Bulma), and decides to attack Gohan before he even landed on the surface with a quick barrage of Death Beams, knocking him to the ground.  Length:  17 minutes (instead of the current 15).  Majin Buu joins the battle with Frieza, sensing the dying ki of SSJ Gohan, he wakes up, and rushes to the battlefield (breaking Satan's house's window, leaving him and Bee amazed), Buu deflects Frieza's final death beam that was aimed at Gohan half a second before Piccolo managed to sacrifice himself for his student. While Frieza is shocked at the appearance of a new fighter in the ring, Gohan gets a Senzu bean from Krillin, experiences a Zenkai boost, turns SSJ 2 and intends to take on Frieza for his family (I'd say that if his Mystic Form was a 1000 then he's now at roughly 3/4 of it).  Length:  1:20 mins.  A fight scene of Frieza using 80% of his newfound power in his 1st form, Frieza is damaged but is not taken down by the two, as he powered up insanely in Gravy. Then Bulma interferes after talking with Whis and asks everyone to raise their Ki to the max as Goku (& Vegeta) needs to sense their presence in order to teleport back to Earth from Beerus' Planet. Even though Gohan's power level only keeps on rising as he fights the tyrant (now a 7/8 of his Mystic prime) and Mr. Buu's regeneration is proving troublesome to him, Frieza (who noted he won't be able to keep this up if the scnario keeps on going that direction [with a possible counting of the others jumping in]) holds the fight before continuing to his 2nd form, noting he can kill the two later and that their action is probably the key of bringing Goku to him.  Length:  2 minutes.  I wouldn't mind having Vegeta to kill off Frieza but then again it was a good opportunity to demonstrate Whis' rewinding time technique, so why not? here, Goku, have it, send him back to hell. Frieza is finally getting to be killed by his arch-nemesis.  Overall movie length:  105:20 mins AT MOST instead of the original 93 minutes. ''' Chances they'll remake it one day to be like this:  5% (the Future Trunks Special Edition with 12 more minutes was nice, but this Goku Black/Zamasu thing has no place in RoF, at least to my taste). Honestly, as a self-taught Animator, I'd say all they have to do besides creating the scenes listed above is to add the characters of Yamcha, Chiaotzu, Tagoma  & Majin Buu to existing cells/frames and animate them along as needed to be in the given scenarios. Sounds easy, but considering the fact it takes 25 frames to create 1 second of footage',' it means many-many drawings.'''(function {          var pb_blacklist = ["adrunnr","successforyu.clickfunnels.com","fmovies.se","in-365-tagen.info","5000-settimanale.com","shop.mazzugioielli.com","maxigossip.com","lp.yazizim.com","beyourxfriend.com","99tab.com","zzqrt.com","canuck-method.net","bewomenly.com","playnow.guru","datingforyou-48e1.kxcdn.com","trafficnetworkads24.com","sistemadedinerogratis.com","canuckmethodprofit.co","consumerresearchnetwork.com","securemacfix.com","zz3d3.ru","zd1.quebec-bin.com","hot-games4you.xyz","om.elvenar.com","superpccleanup.com","gomediaz.com","judithi.xyz","free.atozmanuals.com","yoursuccess.ravpage.co.il","123hop.ir","quizcliente.pw","aussiemethod.biz","hlpnowp-c.com","picbumper.com","shaneless.com","anacondamonster.com","altrk1.com","health.todaydiets.com","download.weatherblink.com","happyluketh.com","go.ameinfo.com","50kaweek.net","thepornsurvey.com","ofsiite.ru","fulltab.com","1000spins.com","time2play-online.net","vintacars.com","welcome.pussysaga.com","free-desktop-games.com","download.televisionfanatic.com","theprofitsmaker.net","sgad.info","algocashmaster.net","sunmaker.com","topvipdreams.com","watchmygirlfriend.gfpornvideos.com","filesharefanatic.com","safedownloadhub.com","7awlalalam.blogspot.com","tvplusnewtab.com","trendingpatrol.com","moneymorning.com","ifileyou.com","classifiedcanada.ca","firefan.com","methode-binaire.com","letmetell.com","kenduktur.com","getafuk.com","yotraleplahnte.ru","jackpot.88beto.com","pwwysydh.com","search.queryrouter.com","v.lvztxy.com","pussysaga.com","saffamethod.com","prezzonline.com","searchprivacy.website","3d2819216eb4e1035879-7c248de0c99745406e9b749fc86ec3e4.ssl.cf1.rackcdn.com","only2date.com","mysagagame.com","themillionaireinpjs.net","wlt.kd2244.com","quickprivacycheck.com","hotchatdate.com","autotraderbot.com","z1.zedo.com","youlucky2014.com","traffic.getmyads.com","appcloudprotected.com","safensecure.com-allsites3.xyz","newpoptab.com","static.williamhill.com","myhealthyblog.co","greatestmobideals.com","sweetclarity.com","mgid.com","securepccure.com","autopengebygger.com","am15.net","es.reimageplus.com","o2.promos-info.com","it.reimageplus.com","westsluts.com","spinandwin.com-ser.pw","reimageplus.com","vodafone.promos-info.com","vinnmatpengar.se","movie.ienjoyapps.com","love4single.com","origin.getprice.com.au","ohmydating.com","lp.want-to-win.com","yabuletchrome.ru","bamdad.net","gotositenow.com","vcrypt.pw","newtabtv.com","mon.setsu.xyz","youforgottorenewyourhosting.com","zone-telechargement.ws","land.pckeeper.software","ad.adpop-1.com","advancedpctools.com","videos.randolphcountyheraldtribune.com","web-start.org","softreadynow.installupgradenowfreshandforyou.website","uplod.ws","pornhubcasino.com","maxbet.ro","2016prizefeed.com","thevideo.me","wantubad.com","tavanero.com","xcusmy.club","daclips.in","gaymenofporn.online","jackpotcitycasino.com","italian-method.com","getsearchincognito.com","youjustwonprize.com","finanz-nachrichten.me","quizcliente.site","da.reimageplus.com","jkanime.net","britmoneymethod.com","uae.souq.com","ka.azzer.net","safensecure.xyz","8t.hootingrhejkz.online","www6.blinkx.com","wizzcaster.com","comparaison-prix.com","vodlocker.lol","fr.reimageplus.com","free.fromdoctopdf.com","userscloud.com","myprivatesearch.com","fanli90.cn","tutticodicisconto.it","mediadec.com","gogamego.thewhizproducts.com","download.weatherblink.com","free.videodownloadconverter.com","we-are-gamers.com","sesso.communityadult.net","lp.blpmovies.com","search.queryrouter.com","bbb-johannesburg.localspecific.com","lp.blpmovies.com","go.ppixelm.com","r0.ru","sesso.communityadult.net","bbb-johannesburg.localspecific.com","ppixelm.com","cyberguardianspe.info","we-are-gamers.com","loginfaster.com/new","www.alfacart.com","www.foresee.com","mobile-win.com","www.plusnetwork.com","www.amicafarmacia.com","www.ienjoyapps.com","cheapcheap.io","screenaddict.thewhizproducts.com","nova.rambler.ru","free.gamingwonderland.com","p9328ujeiw1.ru","mobilecasinoclub.co.uk","pfhsystem.com","regtuneup.com","theprofitsmaker.net","bodogpromotions.eu","heroesreplay.org","financialsecrets.info","mymoneymakingapp.com","sunmaker.com","888casino-promotions.com","vogliosesso.com","scienceremix.com","allinonedocs.com","arabia.starzplay.com","allirishcasino.com","advancepctools.info","movie.ienjoyapps.com","surveyform001.s3-website-us-east-1.amazonaws.com","mgs188.com","pfhsystem.com","lpeva.com","ddsh8.com","theprofitsmaker.net","b2.ijquery11.com","sporthero.thewhizmarketing.com","securefastmac.tech","seen-on-screen.thewhizmarketing.com","1000spins.com","search.queryrouter.com","pfhsystem.com","reimageplus.com","offer.alibaba.com","searchlistings.org","search.queryrouter.com","search.queryrouter.com","mybinaryoptionsrobot.com","duplicashapp.com","search.queryrouter.com","bestgame.directory","droidclub.net",".rivalo.com","yoursuperprize.com","mediaexplained.com","om.elvenar.com","shinar.club","revitoleczemacream.com","freelotto.com","screenaddict.thewhizproducts.com","download.bringmesports.com/","allinonedocs.com","driver-fixer.com","arabydeal.com","cleanyourcomputertoday.com","arabydeal.com","music.mixplugin.com","1se.info","survey12.com","freesoftwaredlul.com","pldist01.com","ad.adpop-1.com","searchanonymous.net","abrst.pro","muzikfury.thewhizmarketing.com","lp.mbtrx.com","th1.forfun.maxisize-pro.com","watchmygirlfriend.gfpornbox.com","new.freelotto.com","desktoptrack.com","search.queryrouter.com","offer.alibaba.com","1000spins.com","promotions.coral.co.uk","search.queryrouter.com","tbsia.com","tbsia.com","multtaepyo.com","search.queryrouter.com","czechmethod.com","consumerview.co","wayretail.com","72onbase.com","funsafetab.com","search.queryrouter.com","speedyfiledownload.com","driver-fixer.com","arabydeal.com","cleanyourcomputertoday.com","arabydeal.com","music.mixplugin.com","1se.info","survey12.com","freesoftwaredlul.com","pldist01.com","ad.adpop-1.com","searchanonymous.net","abrst.pro","muzikfury.thewhizmarketing.com","lp.mbtrx.com","th1.forfun.maxisize-pro.com","watchmygirlfriend.gfpornbox.com","new.freelotto.com","desktoptrack.com","search.queryrouter.com","offer.alibaba.com","1000spins.com","promotions.coral.co.uk","search.queryrouter.com","tbsia.com","tbsia.com","surveyform001.s3-website-us-east-1.amazonaws.com","mgs188.com","pfhsystem.com","lpeva.com","ddsh8.com","theprofitsmaker.net","quantomcoding.com","sporthero.thewhizmarketing.com","popads.net","onclkds.com","consumerview.co","12kotov.ru","ruhotpair2.fingta.com","easytelevisionaccessnow.com","ahwrd.com","lpeva.com","ppgzf.com","zjstx.com","kituure.xyz","join.pro-gaming-world.com","mackeeperapp.mackeeper.com","tracknotify.com","2075.cdn.beyondhosting.net","idollash.com","ds.moviegoat.com","fulltab.com","rackcdn.com","prestoris.com","adsterra.com","swampssovuuhusp.top","streesusa.info","freesoftwaredlul.com","adreactor.com","a-static.com","codeonclick.com","heheme.com","adf.ly","seen-on-screen.thewhizmarketing.com","openload.co"]; var pb_whitelist = ["linkedin.com","google","www.gmail.com","www.pinterest.com","www.youtube.com","www.facebook.com","search.yahoo.com","chrome://newtab","www.food.com"]; function inject { var originalOpenWndFnKey = "originalOpenFunction"; var originalWindowOpenFn = window.open; var originalCreateElementFn = document.createElement; var originalAppendChildFn = HTMLElement.prototype.appendChild; var originalCreateEventFn = document.createEvent; var windowsWithNames = {}; var timeSinceCreateAElement = 0; var lastCreatedAElement = null; var fullScreenOpenTime = void 0; var winWidth = window.innerWidth; var winHeight = window.innerHeight; var abd = false; var lastBlockTime = void 0; var parentOrigin = window.location != window.parent.location ? document.referrer || window.parent.location || '*' : document.location; var parentRef = window.parent;

//window[originalOpenWndFnKey] = window.open; // save the original open window as global param function newWindowOpenFn { var openWndArguments = arguments; var useOriginalOpenWnd = true; var generatedWindow = null;

function getWindowName(openWndArguments) { var windowName = openWndArguments[1]; if (windowName != null && !["_blank", "_parent", "_self", "_top"].includes(windowName)) { return windowName; }

return null; }

function copyMissingProperties(src, dest) { var prop = void 0; for (prop in src) { try { if (dest[prop] === undefined && src[prop]) { dest[prop] = src[prop]; }	       } catch (e) {} }	     return dest; }

function isOverlayish(el) { var style = el && el.style;

if (style && /fixed|absolute/.test(style.position) && el.offsetWidth >= winWidth * 0.6 && el.offsetHeight >= winHeight * 0.75) { return true; }

return false; }

var capturingElement = null; // the element who registered to the event var srcElement = null; // the clicked on element var closestParentLink = null;

if (window.event != null) { capturingElement = window.event.currentTarget; srcElement = window.event.srcElement; }

if (srcElement != null) { closestParentLink = srcElement.closest('a');

if (closestParentLink && closestParentLink.href) { openWndArguments[3] = closestParentLink.href; }	   }

//callee will not work in ES6 or stict mode try { if (capturingElement == null) { var caller = openWndArguments.callee; while (caller.arguments != null && caller.arguments.callee.caller != null) { caller = caller.arguments.callee.caller; }	       if (caller.arguments != null && caller.arguments.length > 0 && caller.arguments[0].currentTarget != null) { capturingElement = caller.arguments[0].currentTarget; }	     }	    } catch (e) {}

/////////////////////////////////////////////////////////////////////////////////	   // Blocked if a click on background element occurred ( or document) /////////////////////////////////////////////////////////////////////////////////	   if (capturingElement == null) { window.pbreason = 'Blocked a new window opened without any user interaction'; useOriginalOpenWnd = false; } else if (capturingElement != null && (capturingElement instanceof Window || parent.Window && capturingElement instanceof parent.Window || capturingElement === document || capturingElement.URL != null && capturingElement.body != null || capturingElement.nodeName != null && (capturingElement.nodeName.toLowerCase == "body" || capturingElement.nodeName.toLowerCase == "document"))) { window.pbreason = "Blocked a new window opened with URL: " + openWndArguments[0] + " because it was triggered by the " + capturingElement.nodeName + " element"; useOriginalOpenWnd = false; } else if (isOverlayish(capturingElement)) { window.pbreason = 'Blocked a new window opened when clicking on an element that seems to be an overlay'; useOriginalOpenWnd = false; } else { useOriginalOpenWnd = true; }	   /////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////	   // Block if a full screen was just initiated while opening this url. /////////////////////////////////////////////////////////////////////////////////

var fullScreenElement = document.webkitFullscreenElement || document.mozFullscreenElement || document.fullscreenElement; if (new Date.getTime - fullScreenOpenTime < 1000 || isNaN(fullScreenOpenTime) && isDocumentInFullScreenMode) {

window.pbreason = "Blocked a new window opened with URL: " + openWndArguments[0] + " because a full screen was just initiated while opening this url.";

/* JRA REMOVED if (window[script_params.fullScreenFnKey]) { window.clearTimeout(window[script_params.fullScreenFnKey]); }	      */

if (document.exitFullscreen) { document.exitFullscreen; } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen; } else if (document.webkitCancelFullScreen) { document.webkitCancelFullScreen; }

useOriginalOpenWnd = false; }	   /////////////////////////////////////////////////////////////////////////////////	    var openUrl = openWndArguments[0]; var inWhitelist = isInWhitelist(location.href);

if (inWhitelist) { useOriginalOpenWnd = true; } else if (isInBlacklist(openUrl)) { useOriginalOpenWnd = false; }

if (useOriginalOpenWnd == true) { generatedWindow = originalWindowOpenFn.apply(this, openWndArguments); // save the window by name, for latter use. var windowName = getWindowName(openWndArguments); if (windowName != null) { windowsWithNames[windowName] = generatedWindow; }

// 2nd line of defence: allow window to open but monitor carefully...

/////////////////////////////////////////////////////////////////////////////////	     // Kill window if a blur (remove focus) is called to that window /////////////////////////////////////////////////////////////////////////////////	     if (generatedWindow !== window) { var openTime = new Date.getTime; var originalWndBlurFn = generatedWindow.blur; generatedWindow.blur = function { if (new Date.getTime - openTime < 1000 && !inWhitelist /* one second */) { window.pbreason = "Blocked a new window opened with URL: " + openWndArguments[0] + " because a it was blured"; generatedWindow.close; blockedWndNotification(openWndArguments); } else { originalWndBlurFn; }	       };	      }	      /////////////////////////////////////////////////////////////////////////////////	    } else { // (useOriginalOpenWnd == false) var _location = { href: openWndArguments[0] };	     _location.replace = function (url) { _location.href = url; };

generatedWindow = { close: function close { return true; },	       test: function test { return true; },	       blur: function blur { return true; },	       focus: function focus { return true; },	       showModelessDialog: function showModelessDialog { return true; },	       showModalDialog: function showModalDialog { return true; },	       prompt: function prompt { return true; },	       confirm: function confirm { return true; },	       alert: function alert { return true; },	       moveTo: function moveTo { return true; },	       moveBy: function moveBy { return true; },	       resizeTo: function resizeTo { return true; },	       resizeBy: function resizeBy { return true; },	       scrollBy: function scrollBy { return true; },	       scrollTo: function scrollTo { return true; },	       getSelection: function getSelection { return true; },	       onunload: function onunload { return true; },	       print: function print { return true; },	       open: function open { return this; },

opener: window, closed: false, innerHeight: 480, innerWidth: 640, name: openWndArguments[1], location: _location, document: { location: _location } };

copyMissingProperties(window, generatedWindow);

generatedWindow.window = generatedWindow;

var _windowName = getWindowName(openWndArguments); if (_windowName != null) { try { // originalWindowOpenFn("", windowName).close; windowsWithNames[_windowName].close; } catch (err) {} }

var fnGetUrl = function fnGetUrl { var url = void 0; if (!(generatedWindow.location instanceof Object)) { url = generatedWindow.location; } else if (!(generatedWindow.document.location instanceof Object)) { url = generatedWindow.document.location; } else if (_location.href != null) { url = _location.href; } else { url = openWndArguments[0]; }	       openWndArguments[0] = url;

blockedWndNotification(openWndArguments); };

//why set timeout? if anyone finds a reason for it, please write it here //in iframes it makes problems so i'm avoiding it there if (top == self) { setTimeout(fnGetUrl, 100); } else { fnGetUrl; }	   }

return generatedWindow; }

function pbWindowOpen { try { return newWindowOpenFn.apply(this, arguments); } catch (err) { return null; }	 }

/////////////////////////////////////////////////////////////////////////////////	 // Replace the window open method with Poper Blocker's	  ///////////////////////////////////////////////////////////////////////////////// window.open = pbWindowOpen; /////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////	 // Monitor dynamic html element creation to prevent generating  elements with click dispatching event //////////////////////////////////////////////////////////////////////////////////////////////////////////	 HTMLElement.prototype.appendChild = function  { var newElement = originalAppendChildFn.apply(this, arguments);

if (newElement.nodeName == 'IFRAME' && newElement.contentWindow) { try { var code = "(function {\n          var pb_blacklist = " + JSON.stringify(pb_blacklist) + ";\n          var pb_whitelist = " + JSON.stringify(pb_whitelist) + ";\n          " + inject.toString + ";\n          inject;\n        });";

var s = document.createElement('script');s.text = code;

newElement.contentWindow.document.body.appendChild(s); } catch (e) {} }

return newElement; };

document.createElement = function {

var newElement = originalCreateElementFn.apply(document, arguments);

if (arguments[0] == "a" || arguments[0] == "A") {

timeSinceCreateAElement = new Date.getTime;

var originalDispatchEventFn = newElement.dispatchEvent;

newElement.dispatchEvent = function (event) { if (event.type != null && ("" + event.type).toLocaleLowerCase == "click") { if (!isInWhitelist(newElement.href)) { window.pbreason = "blocked due to an explicit dispatchEvent event with type 'click' on an 'a' tag";

blockedWndNotification({ "0": newElement.href });

return true; }	       }

return originalDispatchEventFn.call(this, event); };

lastCreatedAElement = newElement; }

return newElement; };	 /////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////	 // Block artificial mouse click on frashly created  elements /////////////////////////////////////////////////////////////////////////////////	 document.createEvent = function  { try { if (arguments[0].toLowerCase.includes("mouse") && new Date.getTime - timeSinceCreateAElement <= 50) { //block if the origin is not same var isSelfDomain = false; try { var openUrlDomain = new URL(lastCreatedAElement.href).hostname; var topUrl = window.location != window.parent.location ? document.referrer : document.location.href; var topDomain = new URL(topUrl).hostname; isSelfDomain = openUrlDomain == topDomain; } catch (e) {} if (lastCreatedAElement.href.trim && !isInWhitelist(lastCreatedAElement.href) && !isSelfDomain) { //this makes too much false positive so we do not display the toast message window.pbreason = "Blocked because 'a' element was recently created and " + arguments[0] + " event was created shortly after"; arguments[0] = lastCreatedAElement.href;

blockedWndNotification({ "0": lastCreatedAElement.href });

return { type: 'click', initMouseEvent: function initMouseEvent {} };	       }	      }

return originalCreateEventFn.apply(document, arguments); } catch (err) {} };	 /////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////	 // Monitor full screen requests /////////////////////////////////////////////////////////////////////////////////	 function onFullScreen(isInFullScreenMode) { if (isInFullScreenMode) { fullScreenOpenTime = new Date.getTime; } else { fullScreenOpenTime = NaN; }	 }

/////////////////////////////////////////////////////////////////////////////////

function isDocumentInFullScreenMode { // Note that the browser fullscreen (triggered by short keys) might // be considered different from content fullscreen when expecting a boolean return document.fullScreenElement && document.fullScreenElement !== null || // alternative standard methods document.mozFullscreenElement != null || document.webkitFullscreenElement != null; // current working methods }

function isInWhitelist(url) { return isInList(url, pb_whitelist); }

function isInBlacklist(url) { return isInList(url, pb_blacklist); }

function isInList(url, list) { if (list) { return list.some(function (li) {	       return new RegExp("https?://(www\.|.*\.)?" + li + "+").test(url);	     }); } else { return false; }	 }

function blockedWndNotification(openWndArguments) { //this is to prevent a site that "stuck" on trying to open a new window to send endless calls to the extension if (!lastBlockTime || lastBlockTime < Date.now - 1000) { openWndArguments["abd"] = abd; parentRef.postMessage({ type: "blockedWindow", args: JSON.stringify(openWndArguments) }, parentOrigin); }

lastBlockTime = Date.now; }

//detect adblock to adjust popup blocking behavior to not collide with adblock function detectAdblock { try { var tester = document.createElement('div'); tester.innerHTML = ' '; tester.className = 'adsbox'; tester.style.cssText = "position:absolute;top-1000px;left:-1000px;";

document.body.appendChild(tester);

window.setTimeout(function {	        if (tester.offsetHeight === 0) {	          abd = true;	        }

tester.remove; }, 100);	   } catch (e) {}	  }

function executeCommand(commandId, messageId) { if (messageId == pb_message) { switch (commandId) { case 0: //off window.open = originalWindowOpenFn; document.createElement = originalCreateElementFn; document.createEvent = originalCreateEventFn; HTMLElement.prototype.appendChild = originalAppendChildFn; break;

case 1: //allow once break; }	   }	  }

document.addEventListener("fullscreenchange", function {	    onFullScreen(document.fullscreen);	  }, false);

document.addEventListener("mozfullscreenchange", function {	    onFullScreen(document.mozFullScreen);	  }, false);

document.addEventListener("webkitfullscreenchange", function {	    onFullScreen(document.webkitIsFullScreen);	  }, false);

document.addEventListener('DOMContentLoaded', function {	    detectAdblock;	  }, false);

(function {	    window.pbExternalCommand = function (commandId, messageId) {	      executeCommand(commandId, messageId);	    };	  }); };         inject; });