define(['appSettings', 'backdrop', 'browser', 'globalize', 'css!./style.css', 'paper-icon-button-light'], function (appSettings, backdrop, browser, globalize) { var lastSound = 0; var iconCreated; var destroyed; var currentSound; var cancelKey = 'cancelHalloween2015'; var cancelValue = '6'; function onPageShow() { var page = this; if (!destroyed) { if (appSettings.get(cancelKey) == cancelValue) { destroyed = true; return; } if (!browser.mobile) { if (!page.classList.contains('itemDetailPage')) { backdrop.setBackdrop('themes/halloween/bg.jpg'); } if (lastSound == 0) { playSound('http://github.com/MediaBrowser/Emby.Resources/raw/master/themes/halloween/monsterparadefade.mp3', .1); } else if ((new Date().getTime() - lastSound) > 30000) { playSound('http://github.com/MediaBrowser/Emby.Resources/raw/master/themes/halloween/howl.wav'); } } addIcon(); } } function addIcon() { if (iconCreated) { return; } iconCreated = true; var viewMenuSecondary = document.querySelector('.viewMenuSecondary'); if (viewMenuSecondary) { var html = ''; viewMenuSecondary.insertAdjacentHTML('afterbegin', html); viewMenuSecondary.querySelector('.halloweenInfoButton').addEventListener('click', onIconClick); } } function onIconClick() { require(['dialog'], function (dialog) { dialog({ title: "Happy Halloween", text: "Happy Halloween from the Emby Team. We hope your Halloween is spooktacular! Would you like to allow the Halloween theme to continue?", buttons: [ { id: 'yes', name: globalize.translate('ButtonYes'), type: 'submit' }, { id: 'no', name: globalize.translate('ButtonNo'), type: 'cancel' } ] }).then(function (result) { if (result == 'no') { destroyTheme(); } }); }); } function destroyTheme() { destroyed = true; var halloweenInfoButton = document.querySelector('.halloweenInfoButton'); if (halloweenInfoButton) { halloweenInfoButton.parentNode.removeChild(halloweenInfoButton); } if (currentSound) { currentSound.stop(); } Dashboard.removeStylesheet('themes/halloween/style.css'); backdrop.clear(); appSettings.set(cancelKey, cancelValue); } pageClassOn('pageshow', "libraryPage", onPageShow); //if ($($.mobile.activePage)[0].classList.contains('libraryPage')) { // onPageShow.call($($.mobile.activePage)[0]); //} function playSound(path, volume) { require(['howler'], function (howler) { var sound = new Howl({ urls: [path], volume: volume || .3 }); sound.play(); currentSound = sound; lastSound = new Date().getTime(); }); } });