window["displayMenu"] = function() { document.getElementById(R.id.context).classList.add(R.klass.opened); }; window["hideMenu"] = function() { document.getElementById(R.id.context).classList.remove(R.klass.opened); }; window["toggleMenu"] = function() { _toggleMenu(); }; window["setChannelFavorite"] = function(chanId, val) { var channel = DATA.context.getChannel(chanId); if (channel) { if (val) starChannel(channel); else unstarChannel(channel); } else { console.error("Channel " +chanId +" not found"); } }; window["onApplicationPaused"] = function() { window.hasFocus = false; }; window["onApplicationResumed"] = function() { window.hasFocus = true; }; var CALLBACK = (function() { var /** @type {Object} */ callbacks = {}, /** @type {number} */ currentCallbackId = 0; /** @type {function(Function, Object=):number} */ function makeCallback(fnc, ctx) { var cbId = currentCallbackId++; if (ctx) fnc.ctx = ctx; callbacks['' +cbId] = fnc; return cbId; } function triggerCallback() { var id = '' +Array.prototype.shift.call(arguments); if (callbacks[id]) { callbacks[id].apply(callbacks[id].ctx, arguments); delete callbacks[id]; } } return { /** @type {function(Function, Object=):number} */ makeCallback: makeCallback, onCallbackResponse: triggerCallback }; })(); window["__CALLBACK"] = { "onResult": CALLBACK.onCallbackResponse }; /** @return {boolean} */ function isNative() { return !!("__native" in window); }