Last active
October 26, 2021 16:10
-
-
Save azhurb/350840f691bf7c49e67eca1089136150 to your computer and use it in GitHub Desktop.
Change loading order
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Common XPCOM STB constructor. | |
* @constructor | |
*/ | |
function common_xpcom(){ | |
this.user = {}; | |
this.mac = ''; | |
this.ip = ''; | |
this.hd = 1; | |
this.type = ''; | |
this.version = ''; | |
this.ajax_loader = ''; | |
this.images = []; | |
this.storages = {}; | |
this.player = {}; | |
this.key_lock = true; | |
this.power_off = false; | |
this.additional_services_on = 0; | |
this.header_ua_ext = []; | |
this.access_token = ''; | |
this.random = ''; | |
this.aspect_idx = 0; | |
this.aspect_array = [ | |
{"alias": "fit", "mode": 0x10}, | |
{"alias": "big", "mode": 0x40}, | |
{"alias": "opt", "mode": 0x50}, | |
{"alias": "exp", "mode": 0x00}, | |
{"alias": "cmb", "mode": 0x30} | |
]; | |
this.video_mode = 1080; | |
this.cur_off_on = false; | |
this.cur_place = ''; | |
this.load_step = Math.ceil(50/3); | |
this.recordings = []; | |
this.hdmi_on = true; | |
this.ntp_wait_time = 0; | |
this.clock_formats = {'12h': '{2}:{1} {3}', '24h': '{0}:{1}'}; | |
// iso639 | |
this.lang_map = { | |
"aa" : "aar", //Afar | |
"ab" : "abk", //Abkhazian | |
"af" : "afr", //Afrikaans | |
"ak" : "aka", //Akan | |
"sq" : "alb", //Albanian | |
"am" : "amh", //Amharic | |
"ar" : "ara", //Arabic | |
"an" : "arg", //Aragonese | |
"hy" : "arm", //Armenian | |
"as" : "asm", //Assamese | |
"av" : "ava", //Avaric | |
"ae" : "ave", //Avestan | |
"ay" : "aym", //Aymara | |
"az" : "aze", //Azerbaijani | |
"ba" : "bak", //Bashkir | |
"bm" : "bam", //Bambara | |
"eu" : "baq", //Basque | |
"be" : "bel", //Belarusian | |
"bn" : "ben", //Bengali | |
"bh" : "bih", //Bihari languages | |
"bi" : "bis", //Bislama | |
"bs" : "bos", //Bosnian | |
"br" : "bre", //Breton | |
"bg" : "bul", //Bulgarian | |
"my" : "bur", //Burmese | |
"ca" : "cat", //Catalan; Valencian | |
"ch" : "cha", //Chamorro | |
"ce" : "che", //Chechen | |
"zh" : "chi", //Chinese | |
"cu" : "chu", //Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic | |
"cv" : "chv", //Chuvash | |
"kw" : "cor", //Cornish | |
"co" : "cos", //Corsican | |
"cr" : "cre", //Cree | |
"cs" : "ces", //Czech | |
"da" : "dan", //Danish | |
"dv" : "div", //Divehi; Dhivehi; Maldivian | |
"nl" : "dut", //Dutch; Flemish | |
"dz" : "dzo", //Dzongkha | |
"en" : "eng", //English | |
"eo" : "epo", //Esperanto | |
"et" : "est", //Estonian | |
"ee" : "ewe", //Ewe | |
"fo" : "fao", //Faroese | |
"fj" : "fij", //Fijian | |
"fi" : "fin", //Finnish | |
"fr" : "fra", //French | |
"fy" : "fry", //Western Frisian | |
"ff" : "ful", //Fulah | |
"ka" : "geo", //Georgian | |
"de" : "deu", //German | |
"gd" : "gla", //Gaelic; Scottish Gaelic | |
"ga" : "gai", //Irish | |
"gl" : "glg", //Galician | |
"gv" : "glv", //Manx | |
"el" : "ell", //Greek, Modern (1453-) | |
"gn" : "grn", //Guarani | |
"gu" : "guj", //Gujarati | |
"ht" : "hat", //Haitian; Haitian Creole | |
"ha" : "hau", //Hausa | |
"he" : "heb", //Hebrew | |
"hz" : "her", //Herero | |
"hi" : "hin", //Hindi | |
"ho" : "hmo", //Hiri Motu | |
"hr" : "hrv", //Croatian | |
"hu" : "hun", //Hungarian | |
"ig" : "ibo", //Igbo | |
"is" : "ice", //Icelandic | |
"io" : "ido", //Ido | |
"ii" : "iii", //Sichuan Yi; Nuosu | |
"iu" : "iku", //Inuktitut | |
"ie" : "ile", //Interlingue; Occidental | |
"ia" : "ina", //Interlingua (International Auxiliary Language Association) | |
"id" : "ind", //Indonesian | |
"ik" : "ipk", //Inupiaq | |
"it" : "ita", //Italian | |
"jv" : "jav", //Javanese | |
"ja" : "jpn", //Japanese | |
"kl" : "kal", //Kalaallisut; Greenlandic | |
"kn" : "kan", //Kannada | |
"ks" : "kas", //Kashmiri | |
"kr" : "kau", //Kanuri | |
"kk" : "kaz", //Kazakh | |
"km" : "khm", //Central Khmer | |
"ki" : "kik", //Kikuyu; Gikuyu | |
"rw" : "kin", //Kinyarwanda | |
"ky" : "kir", //Kirghiz; Kyrgyz | |
"kv" : "kom", //Komi | |
"kg" : "kon", //Kongo | |
"ko" : "kor", //Korean | |
"kj" : "kua", //Kuanyama; Kwanyama | |
"ku" : "kur", //Kurdish | |
"lo" : "lao", //Lao | |
"la" : "lat", //Latin | |
"lv" : "lav", //Latvian | |
"li" : "lim", //Limburgan; Limburger; Limburgish | |
"ln" : "lin", //Lingala | |
"lt" : "lit", //Lithuanian | |
"lb" : "ltz", //Luxembourgish; Letzeburgesch | |
"lu" : "lub", //Luba-Katanga | |
"lg" : "lug", //Ganda | |
"mk" : "mac", //Macedonian | |
"mh" : "mah", //Marshallese | |
"ml" : "mal", //Malayalam | |
"mi" : "mao", //Maori | |
"mr" : "mar", //Marathi | |
"ms" : "may", //Malay | |
"mg" : "mlg", //Malagasy | |
"mt" : "mlt", //Maltese | |
"mn" : "mon", //Mongolian | |
"na" : "nau", //Nauru | |
"nv" : "nav", //Navajo; Navaho | |
"nr" : "nbl", //Ndebele, South; South Ndebele | |
"nd" : "nde", //Ndebele, North; North Ndebele | |
"ng" : "ndo", //Ndonga | |
"ne" : "nep", //Nepali | |
"nn" : "nno", //Norwegian Nynorsk; Nynorsk, Norwegian | |
"nb" : "nob", //Bokmål, Norwegian; Norwegian Bokmål | |
"no" : "nor", //Norwegian | |
"ny" : "nya", //Chichewa; Chewa; Nyanja | |
"oc" : "oci", //Occitan (post 1500); Provençal | |
"oj" : "oji", //Ojibwa | |
"or" : "ori", //Oriya | |
"om" : "orm", //Oromo | |
"os" : "oss", //Ossetian; Ossetic | |
"pa" : "pan", //Panjabi; Punjabi | |
"fa" : "fas", //Persian | |
"pi" : "pli", //Pali | |
"pl" : "pol", //Polish | |
"pt" : "por", //Portuguese | |
"ps" : "pus", //Pushto; Pashto | |
"qu" : "que", //Quechua | |
"rm" : "roh", //Romansh | |
"ro" : "ron", //Romanian; Moldavian; Moldovan | |
"rn" : "run", //Rundi | |
"ru" : "rus", //Russian | |
"sg" : "sag", //Sango | |
"sa" : "san", //Sanskrit | |
"si" : "sin", //Sinhala; Sinhalese | |
"sk" : "slk", //Slovak | |
"sl" : "slv", //Slovenian | |
"se" : "sme", //Northern Sami | |
"sm" : "smo", //Samoan | |
"sn" : "sna", //Shona | |
"sd" : "snd", //Sindhi | |
"so" : "som", //Somali | |
"st" : "sot", //Sotho, Southern | |
"es" : "spa", //Spanish; Castilian | |
"sc" : "srd", //Sardinian | |
"sr" : "srp", //Serbian | |
"ss" : "ssw", //Swati | |
"su" : "sun", //Sundanese | |
"sw" : "swa", //Swahili | |
"sv" : "sve", //Swedish | |
"ty" : "tah", //Tahitian | |
"ta" : "tam", //Tamil | |
"tt" : "tat", //Tatar | |
"te" : "tel", //Telugu | |
"tg" : "tgk", //Tajik | |
"tl" : "tgl", //Tagalog | |
"th" : "tha", //Thai | |
"bo" : "tib", //Tibetan | |
"ti" : "tir", //Tigrinya | |
"to" : "ton", //Tonga (Tonga Islands) | |
"tn" : "tsn", //Tswana | |
"ts" : "tso", //Tsonga | |
"tk" : "tuk", //Turkmen | |
"tr" : "tur", //Turkish | |
"tw" : "twi", //Twi | |
"ug" : "uig", //Uighur; Uyghur | |
"uk" : "ukr", //Ukrainian | |
"ur" : "urd", //Urdu | |
"uz" : "uzb", //Uzbek | |
"ve" : "ven", //Venda | |
"vi" : "vie", //Vietnamese | |
"vo" : "vol", //Volapük | |
"cy" : "wel", //Welsh | |
"wa" : "wln", //Walloon | |
"wo" : "wol", //Wolof | |
"xh" : "xho", //Xhosa | |
"yi" : "yid", //Yiddish | |
"yo" : "yor", //Yoruba | |
"za" : "zha", //Zhuang; Chuang | |
"zu" : "zul" //Zulu | |
}; | |
this.timezone_list=[ | |
'Europe/Andorra', | |
'Asia/Dubai', | |
'Asia/Kabul', | |
'America/Antigua', | |
'America/Anguilla', | |
'Europe/Tirane', | |
'Asia/Yerevan', | |
'Africa/Luanda', | |
'Antarctica/McMurdo', | |
'Antarctica/South_Pole', | |
'Antarctica/Rothera', | |
'Antarctica/Palmer', | |
'Antarctica/Mawson', | |
'Antarctica/Davis', | |
'Antarctica/Casey', | |
'Antarctica/Vostok', | |
'Antarctica/DumontDUrville', | |
'Antarctica/Syowa', | |
'Antarctica/Macquarie', | |
'America/Argentina/Buenos_Aires', | |
'America/Argentina/Cordoba', | |
'America/Argentina/Salta', | |
'America/Argentina/Jujuy', | |
'America/Argentina/Tucuman', | |
'America/Argentina/Catamarca', | |
'America/Argentina/La_Rioja', | |
'America/Argentina/San_Juan', | |
'America/Argentina/Mendoza', | |
'America/Argentina/San_Luis', | |
'America/Argentina/Rio_Gallegos', | |
'America/Argentina/Ushuaia', | |
'Pacific/Pago_Pago', | |
'Europe/Vienna', | |
'Australia/Lord_Howe', | |
'Australia/Hobart', | |
'Australia/Currie', | |
'Australia/Melbourne', | |
'Australia/Sydney', | |
'Australia/Broken_Hill', | |
'Australia/Brisbane', | |
'Australia/Lindeman', | |
'Australia/Adelaide', | |
'Australia/Darwin', | |
'Australia/Perth', | |
'Australia/Eucla', | |
'America/Aruba', | |
'Europe/Mariehamn', | |
'Asia/Baku', | |
'Europe/Sarajevo', | |
'America/Barbados', | |
'Asia/Dhaka', | |
'Europe/Brussels', | |
'Africa/Ouagadougou', | |
'Europe/Sofia', | |
'Asia/Bahrain', | |
'Africa/Bujumbura', | |
'Africa/Porto', | |
'America/St_Barthelemy', | |
'Atlantic/Bermuda', | |
'Asia/Brunei', | |
'America/La_Paz', | |
'America/Kralendijk', | |
'America/Noronha', | |
'America/Belem', | |
'America/Fortaleza', | |
'America/Recife', | |
'America/Araguaina', | |
'America/Maceio', | |
'America/Bahia', | |
'America/Sao_Paulo', | |
'America/Campo_Grande', | |
'America/Cuiaba', | |
'America/Santarem', | |
'America/Porto_Velho', | |
'America/Boa_Vista', | |
'America/Manaus', | |
'America/Eirunepe', | |
'America/Rio_Branco', | |
'America/Nassau', | |
'Asia/Thimphu', | |
'Africa/Gaborone', | |
'Europe/Minsk', | |
'America/Belize', | |
'America/St_Johns', | |
'America/Halifax', | |
'America/Glace_Bay', | |
'America/Moncton', | |
'America/Goose_Bay', | |
'America/Blanc', | |
'America/Montreal', | |
'America/Toronto', | |
'America/Nipigon', | |
'America/Thunder_Bay', | |
'America/Iqaluit', | |
'America/Pangnirtung', | |
'America/Resolute', | |
'America/Atikokan', | |
'America/Rankin_Inlet', | |
'America/Winnipeg', | |
'America/Rainy_River', | |
'America/Regina', | |
'America/Swift_Current', | |
'America/Edmonton', | |
'America/Cambridge_Bay', | |
'America/Yellowknife', | |
'America/Inuvik', | |
'America/Creston', | |
'America/Dawson_Creek', | |
'America/Vancouver', | |
'America/Whitehorse', | |
'America/Dawson', | |
'Indian/Cocos', | |
'Africa/Kinshasa', | |
'Africa/Lubumbashi', | |
'Africa/Bangui', | |
'Africa/Brazzaville', | |
'Europe/Zurich', | |
'Africa/Abidjan', | |
'Pacific/Rarotonga', | |
'America/Santiago', | |
'Pacific/Easter', | |
'Africa/Douala', | |
'Asia/Shanghai', | |
'Asia/Harbin', | |
'Asia/Chongqing', | |
'Asia/Urumqi', | |
'Asia/Kashgar', | |
'America/Bogota', | |
'America/Costa_Rica', | |
'America/Havana', | |
'Atlantic/Cape_Verde', | |
'America/Curacao', | |
'Indian/Christmas', | |
'Asia/Nicosia', | |
'Europe/Prague', | |
'Europe/Berlin', | |
'Africa/Djibouti', | |
'Europe/Copenhagen', | |
'America/Dominica', | |
'America/Santo_Domingo', | |
'Africa/Algiers', | |
'America/Guayaquil', | |
'Pacific/Galapagos', | |
'Europe/Tallinn', | |
'Africa/Cairo', | |
'Africa/El_Aaiun', | |
'Africa/Asmara', | |
'Europe/Madrid', | |
'Africa/Ceuta', | |
'Atlantic/Canary', | |
'Africa/Addis_Ababa', | |
'Europe/Helsinki', | |
'Pacific/Fiji', | |
'Atlantic/Stanley', | |
'Pacific/Chuuk', | |
'Pacific/Pohnpei', | |
'Pacific/Kosrae', | |
'Atlantic/Faroe', | |
'Europe/Paris', | |
'Africa/Libreville', | |
'Europe/London', | |
'America/Grenada', | |
'Asia/Tbilisi', | |
'America/Cayenne', | |
'Europe/Guernsey', | |
'Africa/Accra', | |
'Europe/Gibraltar', | |
'America/Godthab', | |
'America/Danmarkshavn', | |
'America/Scoresbysund', | |
'America/Thule', | |
'Africa/Banjul', | |
'Africa/Conakry', | |
'America/Guadeloupe', | |
'Africa/Malabo', | |
'Europe/Athens', | |
'Atlantic/South_Georgia', | |
'America/Guatemala', | |
'Pacific/Guam', | |
'Africa/Bissau', | |
'America/Guyana', | |
'Asia/Hong_Kong', | |
'America/Tegucigalpa', | |
'Europe/Zagreb', | |
'America/Port', | |
'Europe/Budapest', | |
'Asia/Jakarta', | |
'Asia/Pontianak', | |
'Asia/Makassar', | |
'Asia/Jayapura', | |
'Europe/Dublin', | |
'Asia/Jerusalem', | |
'Europe/Isle_of_Man', | |
'Asia/Kolkata', | |
'Indian/Chagos', | |
'Asia/Baghdad', | |
'Asia/Tehran', | |
'Atlantic/Reykjavik', | |
'Europe/Rome', | |
'Europe/Jersey', | |
'America/Jamaica', | |
'Asia/Amman', | |
'Asia/Tokyo', | |
'Africa/Nairobi', | |
'Asia/Bishkek', | |
'Asia/Phnom_Penh', | |
'Pacific/Tarawa', | |
'Pacific/Enderbury', | |
'Pacific/Kiritimati', | |
'Indian/Comoro', | |
'America/St_Kitts', | |
'Asia/Pyongyang', | |
'Asia/Seoul', | |
'Asia/Kuwait', | |
'America/Cayman', | |
'Asia/Almaty', | |
'Asia/Qyzylorda', | |
'Asia/Aqtobe', | |
'Asia/Aqtau', | |
'Asia/Oral', | |
'Asia/Vientiane', | |
'Asia/Beirut', | |
'America/St_Lucia', | |
'Europe/Vaduz', | |
'Asia/Colombo', | |
'Africa/Monrovia', | |
'Africa/Maseru', | |
'Europe/Vilnius', | |
'Europe/Luxembourg', | |
'Europe/Riga', | |
'Africa/Tripoli', | |
'Africa/Casablanca', | |
'Europe/Monaco', | |
'Europe/Chisinau', | |
'Europe/Podgorica', | |
'America/Marigot', | |
'Indian/Antananarivo', | |
'Pacific/Majuro', | |
'Pacific/Kwajalein', | |
'Europe/Skopje', | |
'Africa/Bamako', | |
'Asia/Rangoon', | |
'Asia/Ulaanbaatar', | |
'Asia/Hovd', | |
'Asia/Choibalsan', | |
'Asia/Macau', | |
'Pacific/Saipan', | |
'America/Martinique', | |
'Africa/Nouakchott', | |
'America/Montserrat', | |
'Europe/Malta', | |
'Indian/Mauritius', | |
'Indian/Maldives', | |
'Africa/Blantyre', | |
'America/Mexico_City', | |
'America/Cancun', | |
'America/Merida', | |
'America/Monterrey', | |
'America/Matamoros', | |
'America/Mazatlan', | |
'America/Chihuahua', | |
'America/Ojinaga', | |
'America/Hermosillo', | |
'America/Tijuana', | |
'America/Santa_Isabel', | |
'America/Bahia_Banderas', | |
'Asia/Kuala_Lumpur', | |
'Asia/Kuching', | |
'Africa/Maputo', | |
'Africa/Windhoek', | |
'Pacific/Noumea', | |
'Africa/Niamey', | |
'Pacific/Norfolk', | |
'Africa/Lagos', | |
'America/Managua', | |
'Europe/Amsterdam', | |
'Europe/Oslo', | |
'Asia/Kathmandu', | |
'Pacific/Nauru', | |
'Pacific/Niue', | |
'Pacific/Auckland', | |
'Pacific/Chatham', | |
'Asia/Muscat', | |
'America/Panama', | |
'America/Lima', | |
'Pacific/Tahiti', | |
'Pacific/Marquesas', | |
'Pacific/Gambier', | |
'Pacific/Port_Moresby', | |
'Asia/Manila', | |
'Asia/Karachi', | |
'Europe/Warsaw', | |
'America/Miquelon', | |
'Pacific/Pitcairn', | |
'America/Puerto_Rico', | |
'Asia/Gaza', | |
'Asia/Hebron', | |
'Europe/Lisbon', | |
'Atlantic/Madeira', | |
'Atlantic/Azores', | |
'Pacific/Palau', | |
'America/Asuncion', | |
'Asia/Qatar', | |
'Indian/Reunion', | |
'Europe/Bucharest', | |
'Europe/Belgrade', | |
'Europe/Kaliningrad', | |
'Europe/Moscow', | |
'Europe/Volgograd', | |
'Europe/Samara', | |
'Asia/Yekaterinburg', | |
'Asia/Omsk', | |
'Asia/Novosibirsk', | |
'Asia/Novokuznetsk', | |
'Asia/Krasnoyarsk', | |
'Asia/Irkutsk', | |
'Asia/Yakutsk', | |
'Asia/Vladivostok', | |
'Asia/Sakhalin', | |
'Asia/Magadan', | |
'Asia/Kamchatka', | |
'Asia/Anadyr', | |
'Africa/Kigali', | |
'Asia/Riyadh', | |
'Pacific/Guadalcanal', | |
'Indian/Mahe', | |
'Africa/Khartoum', | |
'Europe/Stockholm', | |
'Asia/Singapore', | |
'Atlantic/St_Helena', | |
'Europe/Ljubljana', | |
'Arctic/Longyearbyen', | |
'Europe/Bratislava', | |
'Africa/Freetown', | |
'Europe/San_Marino', | |
'Africa/Dakar', | |
'Africa/Mogadishu', | |
'America/Paramaribo', | |
'Africa/Juba', | |
'Africa/Sao_Tome', | |
'America/El_Salvador', | |
'America/Lower_Princes', | |
'Asia/Damascus', | |
'Africa/Mbabane', | |
'America/Grand_Turk', | |
'Africa/Ndjamena', | |
'Indian/Kerguelen', | |
'Africa/Lome', | |
'Asia/Bangkok', | |
'Asia/Dushanbe', | |
'Pacific/Fakaofo', | |
'Asia/Dili', | |
'Asia/Ashgabat', | |
'Africa/Tunis', | |
'Pacific/Tongatapu', | |
'Europe/Istanbul', | |
'America/Port_of_Spain', | |
'Pacific/Funafuti', | |
'Asia/Taipei', | |
'Africa/Dar_es_Salaam', | |
'Europe/Kiev', | |
'Europe/Uzhgorod', | |
'Europe/Zaporozhye', | |
'Europe/Simferopol', | |
'Africa/Kampala', | |
'Pacific/Johnston', | |
'Pacific/Midway', | |
'Pacific/Wake', | |
'America/New_York', | |
'America/Detroit', | |
'America/Kentucky/Louisville', | |
'America/Kentucky/Monticello', | |
'America/Indiana/Indianapolis', | |
'America/Indiana/Vincennes', | |
'America/Indiana/Winamac', | |
'America/Indiana/Marengo', | |
'America/Indiana/Petersburg', | |
'America/Indiana/Vevay', | |
'America/Chicago', | |
'America/Indiana/Tell_City', | |
'America/Indiana/Knox', | |
'America/Menominee', | |
'America/North_Dakota/Center', | |
'America/North_Dakota/New_Salem', | |
'America/North_Dakota/Beulah', | |
'America/Denver', | |
'America/Boise', | |
'America/Shiprock', | |
'America/Phoenix', | |
'America/Los_Angeles', | |
'America/Anchorage', | |
'America/Juneau', | |
'America/Sitka', | |
'America/Yakutat', | |
'America/Nome', | |
'America/Adak', | |
'America/Metlakatla', | |
'Pacific/Honolulu', | |
'America/Montevideo', | |
'Asia/Samarkand', | |
'Asia/Tashkent', | |
'Europe/Vatican', | |
'America/St_Vincent', | |
'America/Caracas', | |
'America/Tortola', | |
'America/St_Thomas', | |
'Asia/Ho_Chi_Minh', | |
'Pacific/Efate', | |
'Pacific/Wallis', | |
'Pacific/Apia', | |
'Asia/Aden', | |
'Indian/Mayotte', | |
'Africa/Johannesburg', | |
'Africa/Lusaka', | |
'Africa/Harare' | |
]; | |
this.base_modules = [ | |
"reset", | |
"context_menu", | |
"main_menu", | |
"alert", | |
"speedtest", | |
"layer.base", | |
"layer.list", | |
"layer.setting", | |
"layer.simple", | |
"layer.input", | |
"layer.sidebar", | |
"layer.search_box", | |
"layer.bottom_menu", | |
"layer.scrollbar", | |
"layer.vclub_info", | |
"image.viewer", | |
"password_input", | |
"series_switch", | |
"duration_input" | |
]; | |
this.init = function(){ | |
_debug('stb.init'); | |
loader.append("reset"); | |
loader.append("layer.modal_form"); | |
this.browser = this.get_user_browser(); | |
this.player = new player(); | |
this.player.bind(); | |
this.get_server_params(); | |
this.get_stb_params(); | |
this.init_rc(); | |
this.handshake(); | |
this.watchdog = new watchdog(); | |
this.usbdisk = new usbdisk(); | |
module.blocking.init_layer(); | |
connection_problem.init(); | |
authentication_problem.init(); | |
window.addEventListener('message', function(event){ | |
_debug('message event'); | |
if (window.self !== window.top && event.data == 'show' && stb.cur_single_module){ | |
_debug('stb.cur_single_module', stb.cur_single_module); | |
if (module[stb.cur_single_module]._show){ | |
module[stb.cur_single_module]._show(); | |
}else if (module[stb.cur_single_module].show){ | |
module[stb.cur_single_module].show(); | |
} | |
} | |
}, false); | |
}; | |
this.init_auth_dialog = function(){ | |
this.auth_dialog = new ModalForm({"title" : get_word('auth_title')}); | |
this.auth_dialog.addItem(new ModalFormInput({ | |
"label": get_word('auth_login'), | |
"name": "login", | |
"onchange": function () { | |
_debug('change'); | |
stb.auth_dialog.resetStatus(); | |
if (stb.msg && stb.msg.on){ | |
stb.msg.hide(); | |
} | |
} | |
})); | |
this.auth_dialog.addItem(new ModalFormInput({ | |
"label": get_word('auth_password'), | |
"name": "password", | |
"onchange": function () { | |
_debug('change'); | |
stb.auth_dialog.resetStatus(); | |
if (stb.msg && stb.msg.on){ | |
stb.msg.hide(); | |
} | |
} | |
})); | |
var self = this; | |
this.auth_dialog.addItem(new ModalFormButton( | |
{ | |
"value" : "OK", | |
"onclick" : function(){ | |
var login = self.auth_dialog.getItemByName("login").getValue(); | |
var password = self.auth_dialog.getItemByName("password").getValue(); | |
_debug("login", login); | |
_debug("password", password); | |
if (['mag322', 'mag324', 'aurahd4'].indexOf(self.type.toLowerCase()) >= 0){ | |
var device_id = stb.GetUID ? stb.GetUID('device_id', '1729452065727304', 3) : ''; | |
var device_id2 = stb.GetUID ? (stb.GetUID(self.access_token) == stb.GetUID(self.access_token, self.access_token) ? '' : stb.GetUID('device_id', self.access_token, 5)) : ''; | |
} | |
if (['mag322', 'mag324', 'aurahd4'].indexOf(self.type.toLowerCase()) === -1 || !device_id || !device_id2){ | |
device_id = stb.GetUID ? stb.GetUID() : ''; | |
device_id2 = stb.GetUID ? (stb.GetUID(self.access_token) == stb.GetUID(self.access_token, self.access_token) ? '' : stb.GetUID('device_id', self.access_token)) : ''; | |
} | |
stb.load( | |
{ | |
"type" : "stb", | |
"action" : "do_auth", | |
"login" : login, | |
"password" : password, | |
'device_id' : device_id, | |
'device_id2' : device_id2 | |
}, | |
function(result){ | |
_debug('auth result', result); | |
if (result){ | |
if (stb.user['status'] == 2){ | |
stb.get_user_profile(true); | |
}else{ | |
stb.loader.stop(); | |
main_menu.show(); | |
} | |
stb.auth_dialog.hide(); | |
}else{ | |
stb.auth_dialog.setStatus(get_word('auth_error')); | |
} | |
} | |
) | |
} | |
} | |
)); | |
}; | |
this.init_alerts = function(){ | |
_debug('stb.init_alerts'); | |
if (this.notice){ | |
return; | |
} | |
this.notice = new _alert(); | |
this.msg = new _alert('info'); | |
this.msg.bind(); | |
this.confirm = new _alert('confirm'); | |
this.confirm.bind(); | |
if (this.user['info']){ | |
stb.msg.push( | |
{ | |
msg : this.user['info'] | |
} | |
); | |
} | |
}; | |
this.get_server_params = function(){ | |
var pattern = /(https?):\/\/([^\/]*)\/([\w\/]+)*\/([\w\/]+)\/(.)*/; | |
this.portal_protocol = document.URL.replace(pattern, "$1"); | |
this.portal_ip = document.URL.replace(pattern, "$2"); | |
this.portal_path = document.URL.replace(pattern, "$3"); | |
_debug('stb.portal_path:', this.portal_path); | |
this.ajax_loader = this.portal_protocol+'://'+this.portal_ip+'/'+this.portal_path+'/server/load.php'; | |
_debug('stb.ajax_loader:', this.ajax_loader); | |
}; | |
this.get_modules = function(){ | |
_debug('stb.get_modules'); | |
this.load( | |
{ | |
"type" : "stb", | |
"action" : "get_modules" | |
}, | |
function(result){ | |
_debug('stb.get_modules callback', result); | |
var all_modules = result.all_modules; | |
this.switchable_modules = result.switchable_modules; | |
this.disabled_modules = result.disabled_modules || []; | |
this.restricted_modules = result.restricted_modules || []; | |
this.all_modules = this.base_modules.concat(all_modules); | |
_debug('all_modules', this.all_modules); | |
var self = this; | |
this.all_modules = this.all_modules.filter(function(module){ | |
return self.disabled_modules.indexOf(module) == -1; | |
}); | |
if (result.template && result.template.indexOf('smart_launcher') != -1 && result['launcher_url']){ | |
if (single_module.length == 0) { | |
_debug('redirect to the new launcher'); | |
window.stop(); | |
document.body.hide(); | |
_debug(result['launcher_url']+'?config=' + encodeURIComponent(result['launcher_profile_url']+'?uid=' + this.user['id'] + '&language='+this.stb_lang_orig+'&_='+(new Date().getTime()))); | |
window.location = result['launcher_url']+'?config=' + encodeURIComponent(result['launcher_profile_url']+'?uid=' + this.user['id'] + '&language='+this.stb_lang_orig+'&_='+(new Date().getTime())); | |
return; | |
}else{ | |
result.template = 'default'; | |
} | |
} | |
stb.loader.show(); | |
this.check_graphic_res(); | |
loader.set_template(result.template); | |
loader.append_style('load_bar'); | |
loader.append_style('blocking'); | |
if (result.supermodule){ | |
this.supermodule = result.supermodule; | |
loader.add(this.base_modules.concat([result.supermodule])); | |
}else{ | |
loader.add(this.all_modules); | |
} | |
if (window.self !== window.top){ | |
// notify parent to show this window | |
parent && parent.postMessage('show', '*'); | |
} | |
if (typeof(stbWebWindow) != 'undefined' && windowId != 1){ | |
// notify parent to show this window | |
stbWebWindow.messageSend(1, 'app:ready'); | |
} | |
}, | |
this | |
); | |
}; | |
this.load_account_modules = function(){ | |
_debug('stb.load_account_modules'); | |
if (this.all_modules){ | |
return; | |
} | |
this.load( | |
{ | |
"type" : "stb", | |
"action" : "get_modules" | |
}, | |
function(result){ | |
_debug('stb.load_account_modules callback', result); | |
var all_modules = result.all_modules; | |
all_modules = all_modules.filter(function(module){ | |
return module == 'account'; | |
}); | |
if (!all_modules){ | |
return; | |
} | |
this.all_modules = this.base_modules.concat(all_modules); | |
_debug('all_modules', this.all_modules); | |
if (result.supermodule){ | |
this.supermodule = result.supermodule; | |
loader.add(this.base_modules.concat([result.supermodule])); | |
}else{ | |
loader.add(this.all_modules); | |
} | |
}, | |
this | |
); | |
}; | |
this.update_modules = function(){ | |
_debug('stb.update_modules'); | |
this.load( | |
{ | |
"type" : "stb", | |
"action" : "get_modules" | |
}, | |
function(result){ | |
_debug('update_modules result', result); | |
this.switchable_modules = result.switchable_modules || []; | |
this.disabled_modules = result.disabled_modules || []; | |
this.restricted_modules = result.restricted_modules || []; | |
}, | |
this | |
); | |
}; | |
this.is_restricted_module = function(module){ | |
_debug('stb.is_restricted_module'); | |
_debug('module.layer_name', module.layer_name); | |
_debug('this.additional_services_on', this.additional_services_on); | |
if (this.restricted_modules.indexOf(module.layer_name) >= 0){ | |
return true; | |
} | |
if (!this.additional_services_on && this.switchable_modules.indexOf(module.layer_name) >= 0){ | |
return true; | |
} | |
return false; | |
}; | |
this.check_additional_services = function(param){ | |
_debug('check_additional_services', param); | |
this.additional_services_on = parseInt(param, 10); | |
}; | |
this.get_stb_params = function (){ | |
try{ | |
this.video_mode = stb.RDir('vmode'); | |
//this.graphic_mode = stb.RDir('gmode'); | |
//this.mac = stb.RDir('MACAddress').toUpperCase().clearnl(); | |
try{ | |
this.mac = stb.GetDeviceMacAddress().toUpperCase().clearnl(); | |
}catch(e){ | |
_debug('this.mac use old API'); | |
this.mac = stb.RDir('MACAddress').toUpperCase().clearnl(); | |
} | |
this.ip = stb.RDir('IPAddress').clearnl(); | |
try{ | |
this.serial_number = stb.GetDeviceSerialNumber().clearnl(); | |
}catch(e){ | |
_debug('this.serial_number use old API'); | |
this.serial_number = stb.RDir('SerialNumber').clearnl(); | |
} | |
try{ | |
this.type = stb.GetDeviceModelExt().clearnl(); | |
}catch(e){ | |
_debug('this.type use old API'); | |
this.type = stb.RDir('Model').clearnl(); | |
} | |
this.header_ua_ext.push('Model: ' + this.type); | |
this.stb_lang = this.stb_lang_orig = stb.RDir('getenv language').clearnl(); | |
this.timezone = stb.RDir('getenv timezone_conf').clearnl(); | |
if (this.timezone_list.indexOf(this.timezone) === -1) { | |
stb.RDir('setenv timezone_conf "" '); | |
this.timezone = stb.RDir('getenv timezone_conf').clearnl(); | |
} | |
this.ntp_server = stb.RDir('getenv ntpurl').clearnl(); | |
this.firmware_version = this.image_version = stb.RDir('ImageVersion').clearnl(); | |
this.image_desc = stb.RDir('ImageDescription').clearnl(); | |
this.image_date = stb.RDir('ImageDate').clearnl(); | |
this.version = 'ImageDescription: ' + this.image_desc + '; ImageDate: ' + this.image_date + '; PORTAL version: '+ver+'; API Version: ' + stb.Version(); | |
this.hw_version = stb.GetDeviceVersionHardware ? stb.GetDeviceVersionHardware() : ''; | |
var mtdparts = stb.RDir('getenv mtdparts').clearnl(); | |
this.num_banks = mtdparts.indexOf('RootFs2') > 0 ? 2 : 1; | |
if (this.graphic_mode >= 720){ | |
_debug('gSTB.SetObjectCacheCapacities'); | |
gSTB.SetObjectCacheCapacities(1000000, 7000000, 10000000); | |
} | |
if (stb.GetWifiLinkStatus){ | |
var link = []; | |
if (stb.GetLanLinkStatus()){ | |
link.push('Ethernet'); | |
} | |
if (stb.GetWifiLinkStatus()){ | |
link.push('WiFi'); | |
} | |
this.header_ua_ext.push('Link: '+link.join(',')); | |
} | |
}catch(e){ | |
_debug(e); | |
} | |
if (debug){ | |
if (_GET['mac']){ | |
this.mac = _GET['mac']; | |
this.set_cookie('mac_emu', 1); | |
} | |
this.set_cookie('debug', 1); | |
if (_GET['debug_key']){ | |
this.set_cookie('debug_key', _GET['debug_key']); | |
} | |
} | |
this.set_cookie('mac', this.mac); | |
this.set_cookie('stb_lang', this.stb_lang); | |
this.set_cookie('timezone', this.timezone); | |
this.set_cookie('adid', this.get_ad_id()); | |
_debug('this.video_mode:', this.video_mode); | |
_debug('this.mac:', this.mac); | |
_debug('this.serial_number:', this.serial_number); | |
_debug('this.stb_lang:', this.stb_lang); | |
_debug('this.timezone:', this.timezone); | |
_debug('this.ntp_server:', this.ntp_server); | |
_debug('this.ip:', this.ip); | |
_debug('this.type:', this.type); | |
_debug('this.version:', this.version); | |
_debug('this.hd:',this.hd); | |
}; | |
this.set_cookie = function(name, val){ | |
document.cookie = name + '=' + encodeURIComponent(val) + '; path=/;'; | |
}; | |
this.delete_cookie = function(name){ | |
document.cookie = name + '=; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT;'; | |
}; | |
this.get_localization = function(){ | |
_debug('stb.get_localization'); | |
this.load( | |
{ | |
"type" : "stb", | |
"action" : "get_localization" | |
}, | |
function(result){ | |
word = result; | |
//this.clock.start(); | |
if (!this.profile.clock_format) { | |
this.profile.clock_format = (get_word('time_format') && this.clock_formats[get_word('time_format')]) ? this.clock_formats[get_word('time_format')]: '24h'; | |
} | |
this.user_init(this.profile); | |
this.clock.start(); | |
this.player.ClockOnVideo.init(); | |
connection_problem.refresh_msg(); | |
authentication_problem.refresh_msg(); | |
}, | |
this | |
) | |
}; | |
this.load = function(params, var_args){ | |
_debug('stb.load()'); | |
_debug('params:', params); | |
var callback = arguments[1]; | |
var context = window; | |
var method = 'GET'; | |
if (arguments.length == 3){ | |
context = arguments[2]; | |
} | |
if (arguments.length == 4){ | |
method = arguments[3]; | |
} | |
try{ | |
var req = new XMLHttpRequest(); | |
if (method == 'POST'){ | |
req.open("POST", this.ajax_loader + '?JsHttpRequest='+(new Date().getTime())+'-xml', true); | |
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); | |
}else{ | |
req.open("GET", this.ajax_loader + '?' + this.params_to_query(params), true); | |
} | |
if (this.header_ua_ext.length > 0){ | |
req.setRequestHeader("X-User-Agent", stb.header_ua_ext.join('; ')); | |
} | |
if (this.access_token){ | |
req.setRequestHeader("Authorization", "Bearer " + this.access_token); | |
} | |
req.addEventListener("error", function(){ | |
console.log('XMLHttpRequest error event'); | |
connection_problem.show(); | |
}, false); | |
req.onreadystatechange = function(){ | |
if (req.readyState == 4) { | |
if (req.status == 200) { | |
try{ | |
var result = JSON.parse(req.responseText); | |
req = null; | |
}catch(er){ | |
_debug('req.responseText', req.responseText); | |
if (req.responseText == 'Authorization failed.' || req.responseText == 'Access denied.'){ | |
if (stb.auth_access && req.responseText == 'Authorization failed.'){ | |
keydown_observer.emulate_key(key.MENU); | |
main_menu.hide(); | |
stb.loader.show(); | |
stb.key_lock = false; | |
if (!stb.auth_dialog){ | |
stb.init_auth_dialog(); | |
} | |
stb.auth_dialog.show(); | |
}else if (req.responseText == 'Access denied.'){ | |
stb.cut_off(); | |
}else if (!stb.auth_dialog || !stb.auth_dialog.on){ | |
authentication_problem.show(); | |
} | |
} | |
throw new Error(er); | |
} | |
_debug(result.text); | |
if (connection_problem.on && stb.cur_place == 'tv' && stb.player.on){ | |
stb.player.play_last(); | |
} | |
connection_problem.hide(); | |
authentication_problem.hide(); | |
callback.call(context, result.js); | |
result = null; | |
} else if (req.status == 0){ | |
console.log('Abort request'); | |
//connection_problem.show(); | |
}else{ | |
connection_problem.show(); | |
console.log('req.status: '+req.status); | |
console.log(req.responseText); | |
} | |
req = null; | |
} | |
}; | |
if (method == 'POST'){ | |
req.send(this.params_to_query(params)); | |
}else{ | |
req.send(null); | |
} | |
}catch(e){ | |
req = null; | |
console.log(e); | |
} | |
return req; | |
}; | |
this.params_to_query = function(params){ | |
var query = []; | |
if (!params){ | |
return null; | |
} | |
//params['JsHttpRequest'] = (new Date().getTime())+'-xml'; | |
params['JsHttpRequest'] = '1-xml'; | |
for (var key in params){ | |
if (params.hasOwnProperty(key)){ | |
if (params[key] === false){ | |
params[key] = 0; | |
}else if (params[key] === true){ | |
params[key] = 1; | |
} | |
query.push(key + '=' + params[key]); | |
} | |
} | |
return query.join('&'); | |
}; | |
this.preload_images = function(){ | |
this.load( | |
{ | |
'type' : 'stb', | |
'action' : 'get_preload_images', | |
'gmode' : resolution_prefix.substr(1) | |
}, | |
function(result){ | |
_debug('on get_preload_images', result); | |
if (result != null){ | |
for (var i=0; i<result.length; i++){ | |
stb.images[i] = new Image(); | |
stb.images[i].src = result[i]; | |
stb.images.onload = function(){}; | |
} | |
} | |
} | |
); | |
}; | |
this.hashCode = function(s){ | |
return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0); | |
}; | |
this.get_saved_access_token = function(){ | |
_debug('stb.get_saved_access_token'); | |
if (stb.access_token){ | |
return stb.access_token; | |
} | |
var file = 'stalker_'+this.hashCode(window.location.origin+window.location.pathname); | |
if (!stb.LoadUserData){ | |
return; | |
} | |
var data = stb.LoadUserData(file) || "{}"; | |
try{ | |
data = JSON.parse(data) | |
}catch(e){ | |
_debug(e); | |
} | |
data = data || {}; | |
return data.token; | |
}; | |
this.get_ad_id = function(){ | |
_debug('stb.get_ad_id'); | |
var file = 'ad.json'; | |
if (typeof(gSTB) == "undefined"){ | |
return ""; | |
} | |
var data = stb.LoadUserData(file) || "{}"; | |
try{ | |
data = JSON.parse(data) | |
}catch(e){ | |
_debug(e); | |
} | |
data = data || {}; | |
_debug('data', data); | |
if (!data.hasOwnProperty('tracking_id')){ | |
data.tracking_id = md5(this.mac + (new Date().getTime())); | |
stb.SaveUserData(file, JSON.stringify(data)); | |
} | |
_debug('data.tracking_id', data.tracking_id); | |
return data.tracking_id; | |
}; | |
this.save_access_token = function(){ | |
_debug('stb.save_access_token'); | |
var file = 'stalker_'+this.hashCode(window.location.origin+window.location.pathname); | |
if (!stb.SaveUserData){ | |
return; | |
} | |
stb.SaveUserData(file, JSON.stringify({"token" : this.access_token})); | |
}; | |
this.handshake = function(){ | |
_debug('stb.handshake'); | |
var prehash = stb.GetHashVersion1 ? stb.GetHashVersion1(this.type, this.version.substr(0, 56)) : 0; | |
this.load( | |
{ | |
"type" : "stb", | |
"action" : "handshake", | |
"token" : this.get_saved_access_token() || '', | |
"prehash" : prehash | |
}, | |
function(result){ | |
_debug('on handshake', result); | |
this.access_token = result.token || ''; | |
this.random = result.random || ''; | |
this.not_valid_token = result.not_valid || 0; | |
_debug('this.access_token', this.access_token); | |
if (typeof(stbWebWindow) != 'undefined' && windowId != 1){ | |
stbWebWindow.messageSend(1, 'stalker:access_token', this.access_token); | |
} | |
if (window.self !== window.top) { | |
parent.postMessage('access_token:'+this.access_token, '*'); | |
} | |
this.get_user_profile(false, prehash); | |
}, | |
this | |
) | |
}; | |
this.get_user_profile = function(auth_second_step, prehash){ | |
_debug('this.get_user_profile', auth_second_step, prehash); | |
if (['mag322', 'mag324', 'aurahd4'].indexOf(this.type.toLowerCase()) >= 0){ | |
var device_id = stb.GetUID ? stb.GetUID('device_id', '1729452065727304', 3) : ''; | |
var device_id2 = stb.GetUID ? (stb.GetUID(this.access_token) == stb.GetUID(this.access_token, this.access_token) ? '' : stb.GetUID('device_id', this.access_token, 5)) : ''; | |
} | |
if (['mag322', 'mag324', 'aurahd4'].indexOf(this.type.toLowerCase()) === -1 || !device_id || !device_id2){ | |
device_id = stb.GetUID ? stb.GetUID() : ''; | |
device_id2 = stb.GetUID ? (stb.GetUID(this.access_token) == stb.GetUID(this.access_token, this.access_token) ? '' : stb.GetUID('device_id', this.access_token)) : ''; | |
} | |
var metrics = {mac:this.mac, sn:this.serial_number, model:this.type, type:"STB", uid:device_id2, random:this.random}; | |
_debug('metrics', JSON.stringify(metrics)); | |
this.load( | |
{ | |
'type' : 'stb', | |
'action' : 'get_profile', | |
'hd' : this.hd, | |
'ver' : this.version, | |
'num_banks' : this.num_banks, | |
'sn' : this.serial_number, | |
'stb_type' : this.type, | |
'client_type' : 'STB', | |
'image_version' : this.image_version, | |
'video_out' : (stb.GetHDMIConnectionState ? (stb.GetHDMIConnectionState() == 0 && window.innerHeight <= 576 ? "rca" : "hdmi") : ""), | |
'device_id' : device_id, | |
'device_id2' : device_id2, | |
'signature' : stb.GetUID ? stb.GetUID(this.random) : '', | |
'auth_second_step' : auth_second_step ? 1 : 0, | |
'hw_version' : this.hw_version, | |
'not_valid_token' : this.not_valid_token ? 1 : 0, | |
'metrics' : encodeURIComponent(JSON.stringify(metrics)), | |
'hw_version_2' : stb.GetHashVersion1 ? stb.GetHashVersion1(JSON.stringify(metrics), this.random) : '', | |
'timestamp' : Math.round(new Date().getTime()/1000), | |
'api_signature' : typeof(gSTB) == 'undefined' ? 0 : (function(){var p=0;for(var d in gSTB){if(gSTB.hasOwnProperty(d)){p++}} return p})(), | |
'prehash' : prehash | |
}, | |
function(result){ | |
if (result != null){ | |
this.profile = result; | |
//this.user_init(result); | |
this.get_localization(); | |
} | |
}, | |
this | |
) | |
}; | |
this.get_user_browser = function(){ | |
var ua = navigator.userAgent.toLowerCase(); | |
if (ua.indexOf("webkit") != -1) { | |
return "webkit" | |
}else if (ua.indexOf("firefox") != -1){ | |
return "firefox" | |
}else{ | |
return "na" | |
} | |
}; | |
this.check_image_version = function(){ | |
_debug('this.image_version:', this.image_version); | |
_debug('this.image_desc:', this.image_desc); | |
_debug('this.image_date:', this.image_date); | |
_debug('this.num_banks:', this.num_banks); | |
_debug('this.hw_version:', this.hw_version); | |
_debug('checking conditions'); | |
_debug('typeof stb.user[autoupdate]', typeof(stb.user['autoupdate'])); | |
_debug('stb.user[autoupdate] is array', stb.user['autoupdate'] && stb.user['autoupdate'] instanceof Array); | |
if (stb.user['autoupdate'] && stb.user['autoupdate'] instanceof Array){ | |
stb.user['autoupdate'].some(function(element){ | |
return stb.check_update(element); | |
}); | |
} | |
}; | |
this.check_update = function(params){ | |
_debug('stb.check_update', params); | |
if (typeof params == 'object' && | |
( | |
(params.require_image_version != '' && params.require_image_version != this.image_version) || | |
(params.require_image_date != '' && params.require_image_date != this.image_date) | |
) && | |
( | |
(params.image_version_contains == '' || params.image_version_contains == this.image_version) && | |
(params.image_description_contains == '' || this.image_desc.indexOf(params.image_description_contains) != -1) && | |
(params.hardware_version_contains == '' || this.hw_version.indexOf(params.hardware_version_contains) != -1) | |
) | |
){ | |
_debug('checking conditions 2'); | |
if ((this.num_banks == 2 || ['MAG256', 'MAG257', 'MAG322', 'MAG323', 'MAG324', 'MAG325', 'MAG349', 'MAG350', 'MAG351', 'MAG352', 'MAG425'].indexOf(this.type) >= 0) && params.update_type == 'http_update'){ | |
try{ | |
_debug('this.user[update_url]', this.user['update_url']); | |
_debug('stb.user[autoupdate]', stb.user['autoupdate']); | |
this.user['update_url'] = this.user['update_url'].replace(/\/imageupdate$/, '/'+params.prefix+'imageupdate'); | |
_debug('this.user[update_url] 2', this.user['update_url']); | |
stbUpdate.startAutoUpdate(this.user['update_url'], false); | |
}catch(e){ | |
_debug(e); | |
} | |
}else if (params.update_type == 'reboot_dhcp'){ | |
_debug('RebootDHCP'); | |
stb.ExecAction('RebootDHCP'); | |
} | |
return true; | |
} | |
return false; | |
}; | |
this.user_init = function(user_data){ | |
stb.loader.add_pos(this.load_step, 'call stb.user_init'); | |
this.user = user_data; | |
_debug('this.user:', user_data); | |
_debug('this.user[deny_720p_gmode_on_mag200]', this.user['deny_720p_gmode_on_mag200']); | |
_debug('this.type', this.type); | |
_debug('screen.height', screen.height); | |
if (this.user['deny_720p_gmode_on_mag200'] && this.type == 'MAG200' && screen.height >= 720){ | |
stb.ExecAction('graphicres 720'); | |
_debug('Reboot'); | |
stb.ExecAction('reboot'); | |
} | |
try{ | |
gSTB.StandByMode = 1; // always active stand-by | |
}catch(e){ | |
_debug(e); | |
} | |
screensaver.init(); | |
if (this.user['allowed_stb_types'] && !this.profile['strict_stb_type_check'] && this.user['allowed_stb_types'].indexOf('aurahd') !== -1){ | |
var cut_type = this.type.indexOf('AuraHD') != -1 ? 'AuraHD' : this.type; | |
}else{ | |
cut_type = this.type; | |
} | |
if (this.user['allowed_stb_types'] && this.user['allowed_stb_types'].indexOf(cut_type.toLowerCase()) == -1 && !_GET['debug_key']){ | |
stb.loader.stop(); | |
this.cut_off(get_word('stb_type_not_supported')); | |
return; | |
} | |
if (['MAG200', 'MAG256', 'MAG257', 'MAG260', 'MAG322', 'MAG323', 'MAG324', 'MAG324C', 'MAG325', 'MAG349', 'MAG350', 'MAG351', 'MAG352', 'MAG424', 'MAG424А', 'MAG425', 'AuraHD4', 'IM2100', 'IM2101', 'IM2102', 'IM4410'].indexOf(this.type) === -1 && !_GET['debug_key']){ | |
var match = /Player Engine version: (\S+)/.exec(this.version); | |
_debug('match', match); | |
if (match && match.length == 2){ | |
var player_version = parseInt((match[1] + '').replace('0x', '').replace(/[^a-f0-9]/gi, ''), 16); | |
_debug('player_version', player_version); | |
} | |
if (!match || match.length != 2 || player_version < 1382){ | |
stb.loader.stop(); | |
this.cut_off(get_word('outdated_firmware')); | |
if (['MAG200', 'MAG245','MAG245D', 'MAG250', 'MAG254', 'MAG255', 'MAG256', 'MAG257', 'MAG270', 'MAG275', 'MAG322', 'MAG323', 'MAG324', 'MAG325', 'MAG349', 'MAG350', 'MAG351', 'MAG352', 'WR320', 'IP_STB_HD'].indexOf(this.type) >= 0 || this.type.indexOf('AuraHD') != -1){ | |
this.check_image_version(); | |
} | |
return; | |
} | |
} | |
if (!this.ntp_server && this.user['stb_ntp_server'] | |
|| this.ntp_server && this.user['stb_ntp_server'] && this.ntp_server != this.user['stb_ntp_server'] && this.user['overwrite_stb_ntp_server']){ | |
_debug('set ntpurl '+this.user['stb_ntp_server']); | |
try{ | |
stb.RDir('setenv ntpurl '+this.user['stb_ntp_server']); | |
_debug('reboot'); | |
stb.ExecAction('reboot'); | |
return; | |
}catch(e){ | |
_debug(e); | |
} | |
} | |
if (this.user['store_auth_data_on_stb']){ | |
this.save_access_token(); | |
} | |
if (this.user['status'] == 2){ | |
// redirect to the new launcher without auth | |
if (this.user['template'] && this.user['template'].indexOf('smart_launcher') != -1 && single_module.length == 0){ | |
_debug('redirect to the new launcher'); | |
window.stop(); | |
document.body.hide(); | |
_debug(this.user['launcher_url']+'?config=' + encodeURIComponent(this.user['launcher_profile_url']+'?uid=' + this.user['id'] + '&language='+this.stb_lang_orig+'&_='+(new Date().getTime()))); | |
window.location = this.user['launcher_url']+'?config=' + encodeURIComponent(this.user['launcher_profile_url']+'?uid=' + this.user['id'] + '&language='+this.stb_lang_orig+'&_='+(new Date().getTime())); | |
return; | |
} | |
this.auth_access = true; | |
this.init_auth_dialog(); | |
this.key_lock = false; | |
stb.loader.show(); | |
this.auth_dialog.show(); | |
loader.append('alert'); | |
}else if (this.user['status'] == 0){ | |
try{ | |
this.usbdisk.init(); | |
this.preload_images(); | |
this.player.volume.set_level(parseInt(this.user['volume'], 10)); | |
this.player.setup_rtsp(this.user['rtsp_type'], this.user['rtsp_flags']); | |
this.player.ad_indication.init(); | |
this.player.ad_skip_indication.init(); | |
if (this.user.hasOwnProperty('cas_type')){ | |
this.player.set_cas(this.user); | |
} | |
if (this.user.hasOwnProperty('hls_fast_start')){ | |
this.player.set_hls_fast_start(this.user.hls_fast_start); | |
} | |
this.user.fav_itv_on = parseInt(this.user.fav_itv_on, 10); | |
this.user['aspect'] = parseInt(this.user['aspect'], 10); | |
stb.player.ch_aspect_idx = this.aspect_array.getIdxByVal('mode', this.user['aspect']); | |
this.user['audio_out'] = parseInt(this.user['audio_out'], 10); | |
stb.user['playback_limit'] = parseInt(this.user['playback_limit'], 10); | |
this.user['screensaver_delay'] = parseInt(this.user['screensaver_delay'], 10); | |
this.user['watchdog_timeout'] = parseInt(this.user['watchdog_timeout'], 10); | |
this.user['tv_playback_retry_limit'] = parseInt(this.user['tv_playback_retry_limit'], 10); | |
this.user['timeslot'] = parseFloat(this.user['timeslot']); | |
this.user['timeslot_ratio'] = parseFloat(this.user['timeslot_ratio']); | |
this.auth_access = this.user['auth_access'] ? true : false; | |
this.profile['plasma_saving_timeout'] = parseInt(this.profile['plasma_saving_timeout'], 10); | |
this.profile['ts_enable_icon'] = parseInt(this.profile['ts_enable_icon'], 10); | |
stb.advert.config = this.user['advert'] || []; | |
if (stb.advert.config){ | |
for (var i=0; i<stb.advert.config.length; i++){ | |
if (stb.advert.config[i]['places'][104]){ | |
stb.user['force_ch_link_check'] = true; | |
break; | |
} | |
} | |
} | |
_debug('stb.user[force_ch_link_check]', stb.user['force_ch_link_check']); | |
if (!this.user['update_url']){ | |
try{ | |
this.user['update_url'] = stb.RDir('getenv update_url').clearnl(); | |
}catch(err){ | |
_debug(err); | |
} | |
} | |
var aspect_idx = this.aspect_array.getIdxByVal('alias', this.profile['tv_channel_default_aspect']); | |
if (aspect_idx === null){ | |
this.profile['tv_channel_default_aspect'] = 0x10; | |
}else{ | |
this.profile['tv_channel_default_aspect'] = this.aspect_array[aspect_idx].mode; | |
} | |
_debug('this.user[update_url]', this.user['update_url']); | |
if (['MAG200', 'MAG245','MAG245D', 'MAG250', 'MAG254', 'MAG255', 'MAG256', 'MAG257', 'MAG270', 'MAG275', 'MAG322', 'MAG323', 'MAG324', 'MAG325', 'MAG349', 'MAG350', 'MAG351', 'MAG352', 'WR320', 'IP_STB_HD'].indexOf(this.type) >= 0 || this.type.indexOf('AuraHD') != -1){ | |
this.check_image_version(); | |
} | |
if (single_module.indexOf('tv') != -1 || single_module.length == 0) { | |
this.epg_loader.start(); | |
} | |
this.locale = this.user.locale; | |
if (!this.user['pri_audio_lang']){ | |
this.user['pri_audio_lang'] = this.lang_map.hasOwnProperty(this.stb_lang) ? this.lang_map[this.stb_lang] : ''; | |
this.user['sec_audio_lang'] = this.lang_map.hasOwnProperty(this.user.stb_lang) ? this.lang_map[this.user.stb_lang] : ''; | |
if (this.user['pri_audio_lang'] == this.user['sec_audio_lang']){ | |
var default_lang = this.user['default_locale'].substr(0, 2); | |
_debug('default_lang', default_lang); | |
this.user['sec_audio_lang'] = this.lang_map.hasOwnProperty(default_lang) ? this.lang_map[default_lang] : ''; | |
} | |
} | |
this.player.set_audio_langs( | |
this.user['pri_audio_lang'], | |
this.user['sec_audio_lang'] | |
); | |
if (!this.user['pri_subtitle_lang'] && !this.user['sec_subtitle_lang'] && stb.profile['always_enabled_subtitles']){ | |
this.user['pri_subtitle_lang'] = this.user['pri_audio_lang']; | |
this.user['sec_subtitle_lang'] = this.user['sec_audio_lang']; | |
} | |
this.player.set_subtitle_langs( | |
this.user['pri_subtitle_lang'], | |
this.user['sec_subtitle_lang'], | |
this.user['subtitle_size'], | |
this.user['subtitle_color'] | |
); | |
this.stb_lang = this.user.stb_lang; | |
this.aspect_idx = this.aspect_array.getIdxByVal('mode', this.user['aspect']); | |
this.check_additional_services(this.user['additional_services_on']); | |
if (this.aspect_idx == null){ | |
this.aspect_idx = 0; | |
} | |
try{ | |
var timezone = stb.RDir('getenv timezone_conf'); | |
if (this.timezone_list.indexOf(timezone) === -1) { | |
stb.RDir('setenv timezone_conf "" '); | |
timezone = stb.RDir('getenv timezone_conf'); | |
} | |
_debug('timezone', timezone); | |
if (this.user['default_timezone'] && !timezone){ | |
_debug('setenv timezone_conf '+this.user['default_timezone']); | |
stb.RDir('setenv timezone_conf '+this.user['default_timezone']); | |
} | |
_debug('stb.GetBrightness before', stb.GetBrightness()); | |
_debug('stb.GetContrast before', stb.GetContrast()); | |
_debug('stb.GetSaturation before', stb.GetSaturation()); | |
if (this.stb_type == 'MAG200'){ | |
stb.SetBrightness(127); | |
stb.SetContrast(-27); | |
stb.SetSaturation(100); | |
} | |
_debug('stb.GetBrightness after', stb.GetBrightness()); | |
_debug('stb.GetContrast after', stb.GetContrast()); | |
_debug('stb.GetSaturation after', stb.GetSaturation()); | |
stb.SetAspect(this.user['aspect']); | |
stb.SetBufferSize(this.user['playback_buffer_size'], this.user['playback_buffer_bytes']); | |
this.user['playback_buffer_size'] = this.user['playback_buffer_size'] / 1000; | |
stb.SetupSPdif(this.user['audio_out']); | |
stb.EnableAppButton && stb.EnableAppButton(false); | |
//stb.SetWebProxy(string proxy_addr,int proxy_port,string user_name,string passwd,string exclude_list); | |
if (this.user['web_proxy_host']){ | |
stb.SetWebProxy && stb.SetWebProxy(this.user['web_proxy_host'], this.user['web_proxy_port'], this.user['web_proxy_user'], this.user['web_proxy_pass'], this.user['web_proxy_exclude_list']); | |
} | |
stb.EnableServiceButton(!!this.user['enable_service_button']); | |
if (gSTB.SetSettingsInitAttr){ | |
gSTB.SetSettingsInitAttr(JSON.stringify({ | |
url: '/home/web/system/settings/index.html', | |
backgroundColor: '#000' | |
})); | |
} | |
stb.EnableVKButton(true); | |
if (gSTB.SetLedIndicatorLevels && this.user.hasOwnProperty('default_led_level') && this.user.hasOwnProperty('standby_led_level')){ | |
_debug('this.user[default_led_level]', parseInt(this.user['default_led_level'], 10)); | |
_debug('this.user[standby_led_level]', parseInt(this.user['standby_led_level'], 10)); | |
gSTB.SetLedIndicatorMode(1); | |
gSTB.SetLedIndicatorLevels(parseInt(this.user['default_led_level'], 10), parseInt(this.user['standby_led_level'], 10)); | |
} | |
var mc_proxy_enabled = stb.RDir('getenv mc_proxy_enabled'); | |
var mc_proxy_url = stb.RDir('getenv mc_proxy_url'); | |
if (mc_proxy_enabled == 'true' && mc_proxy_url){ | |
this.player.mc_proxy_url = mc_proxy_url; | |
} | |
if (typeof(stb.SetCheckSSLCertificate) == 'function' && typeof(this.profile['check_ssl_certificate']) != 'undefined' && this.profile['check_ssl_certificate'] == 0) { | |
_debug('SetCheckSSLCertificate = 0'); | |
stb.SetCheckSSLCertificate(0); | |
} | |
}catch(e){ | |
_debug(e); | |
} | |
this.set_storages(this.user['storages']); | |
if (single_module.length && single_module.indexOf('tv') == -1) { | |
stb.loader.add_pos(this.load_step, 'skip channels loading'); | |
stb.loader.add_pos(this.load_step, 'skip fav_channels loading'); | |
}else{ | |
this.load_channels(); | |
} | |
this.load_recordings(); | |
}catch(e){ | |
_debug(e); | |
} | |
}else if(this.user['status'] == 1){ | |
if (this.ntp_server && this.user.hasOwnProperty('ntp_wait_timeout') && this.ntp_wait_time <= this.user['ntp_wait_timeout']){ | |
_debug('wait for ntp'); | |
_debug('this.ntp_wait_time', this.ntp_wait_time); | |
window.setTimeout(function(){ | |
stb.get_user_profile(); | |
}, 10*1000); | |
this.ntp_wait_time += 10; | |
return; | |
} | |
stb.loader.stop(); | |
this.cut_off(this.user.hasOwnProperty('block_msg') ? this.user['block_msg'] : ''); | |
loader.append('alert'); | |
if (this.user.hasOwnProperty('enable_settings') && this.user['enable_settings']){ | |
stb.EnableServiceButton(true); | |
} | |
if (this.user['portal_disabled']){ | |
this.portal_status_interval = window.setInterval(function(){ | |
stb.load( | |
{ | |
"type" : "stb", | |
"action" : "check_portal_status" | |
}, | |
function(result){ | |
_debug('on check_portal_status', result); | |
if (result){ | |
window.clearInterval(stb.portal_status_interval); | |
window.location = window.location; | |
} | |
} | |
) | |
}, 60000); | |
} | |
} | |
this.watchdog.run(this.user['watchdog_timeout'], this.user['timeslot']); | |
}; | |
this.on_first_menu_show = function(){}; | |
this.post_loading_handle = function(){ | |
_debug('stb.post_loading_handle'); | |
_debug('this.user[display_menu_after_loading]', this.user['display_menu_after_loading']); | |
if (this.GetHDMIConnectionState){ | |
this.hdmi_on = this.GetHDMIConnectionState() == 2; | |
} | |
_debug('this.hdmi_on', this.hdmi_on); | |
this.key_lock = false; | |
if (single_module.length > 0 && module[single_module[0]]){ | |
stb.cur_single_module = single_module[0]; | |
if (module[single_module[0]]._show){ | |
module[single_module[0]]._show(); | |
}else if (module[single_module[0]].show){ | |
module[single_module[0]].show(); | |
} | |
return; | |
} | |
if (module.tv){ | |
this.player.init_first_channel(); | |
} | |
if (this.user['display_menu_after_loading'] || focus_module || !this.player.channels || this.player.channels.length == 0 || !module.tv){ | |
main_menu.show(); | |
this.on_first_menu_show(); | |
}else{ | |
this.player.first_play(); | |
} | |
}; | |
/** | |
* @deprecated | |
* @param storages | |
*/ | |
this.mount_home_dir = function(storages){ | |
_debug('stb.mount_home_dir: ', storages); | |
this.set_storages(storages); | |
stb.loader.add_pos(this.load_step, 'call stb.mount_home_dir'); | |
for(var i in storages){ | |
if (storages.hasOwnProperty(i)){ | |
stb.ExecAction('make_dir /media/'+storages[i]['storage_name']); | |
var mount_cmd = '"'+storages[i]['storage_ip']+':'+storages[i]['nfs_home_path']+stb.mac+'" /media/'+storages[i]['storage_name']; | |
_debug('mount_cmd: '+mount_cmd); | |
try{ | |
stb.ExecAction('mount_dir '+mount_cmd); | |
}catch(e){ | |
_debug(e); | |
} | |
} | |
} | |
}; | |
this.set_storages = function(storages){ | |
_debug('stb.set_storages', storages); | |
this.storages = this.user['storages'] = storages; | |
}; | |
this.remount_storages = function(callback){ | |
_debug('stb.remount_storages'); | |
stb.load( | |
{ | |
"type" : "stb", | |
"action" : "get_storages" | |
}, | |
function(result){ | |
_debug('storages', result); | |
this.set_storages(result); | |
//this.mount_home_dir(this.user['storages']); | |
callback(); | |
}, | |
this | |
); | |
}; | |
this.Mount = function(link_cmd){ | |
_debug('stb.Mount', link_cmd); | |
var mounted_storage = link_cmd.replace(/[\s\S]*\/media\/(.*)\/(.*)/ , "$1"); | |
if (mounted_storage == this.mounted_storage){ | |
_debug('clear Umount Timeout', mounted_storage); | |
window.clearTimeout(stb.player.umount_timer); | |
} | |
this.mounted_storage = mounted_storage; | |
_debug('stb.mounted_storage', this.mounted_storage); | |
try{ | |
gSTB.ExecAction('make_dir /media/'+this.mounted_storage); | |
var mount_cmd = '"' + this.storages[this.mounted_storage]['storage_ip'] + ':' + this.storages[this.mounted_storage]['nfs_home_path'] + this.mac + '" /media/' + this.mounted_storage; | |
gSTB.ExecAction('mount_dir '+mount_cmd); | |
}catch(e){ | |
_debug(e); | |
} | |
}; | |
this.Umount = function(storage){ | |
_debug('stb.Umount', storage); | |
//_debug('stb.mounted_storage', this.mounted_storage); | |
if (storage){ | |
try{ | |
gSTB.ExecAction('umount_dir /media/'+storage); | |
//this.mounted_storage = ''; | |
}catch(e){ | |
_debug(e); | |
} | |
} | |
}; | |
this.switchPower = function(){ | |
_debug('stb.switchPower()'); | |
if (stb.GetStandByStatus){ | |
this.power_off = stb.GetStandByStatus(); | |
} | |
if(this.power_off){ | |
//this.StandBy(0); | |
this.power_off = false; | |
keydown_observer.emulate_key(key.MENU); | |
this.clock && this.clock.show && this.clock.show(); | |
this.StandBy(0); | |
if (!this.user['display_menu_after_loading'] && !module.blocking.on){ | |
main_menu.hide(); | |
stb.player.play_last(); | |
} | |
screensaver.toggle.call(screensaver); | |
}else{ | |
keydown_observer.emulate_key(key.MENU); | |
this.StandBy(1); | |
this.power_off = true; | |
this.setFrontPanel(''); | |
screensaver.hide.call(screensaver); | |
window.clearTimeout(screensaver.activate_timer); | |
} | |
}; | |
this.get_image_version = function(){ | |
_debug('get_image_version'); | |
var ver = ''; | |
try{ | |
var full_ver = stb.RDir('Img_Ver'); | |
_debug('full_ver:', full_ver); | |
var pattern = /ImageVersion:\s([^\s]*)\s(.*)/; | |
var short_ver = full_ver.replace(pattern, "$1"); | |
if (short_ver.length < 30){ | |
ver = short_ver.clearnl(); | |
} | |
_debug('ver:', ver); | |
}catch(e){ | |
_debug(e); | |
} | |
return ver; | |
}; | |
this.check_graphic_res = function(){ | |
_debug('check_graphic_res'); | |
try{ | |
var res = { | |
"r480" :{ | |
"w" : 720, | |
"h" : 480, | |
"window_w" : 720, | |
"window_h" : 480, | |
"prefix" : '_480' | |
}, | |
"r576" :{ | |
"w" : 720, | |
"h" : 576, | |
"window_w" : 720, | |
"window_h" : 576, | |
"prefix" : '' | |
}, | |
"r720" : { | |
"w" : 1280, | |
"h" : 720, | |
"window_w" : 1280, | |
"window_h" : 720, | |
"prefix" : '_720' | |
}, | |
"r1080" : { | |
"w" : 1920, | |
"h" : 1080, | |
"window_w" : 1280, | |
"window_h" : 720, | |
"prefix" : '_720' | |
} | |
}; | |
if (typeof(Proxy) !== "undefined" && gSTB && typeof(gSTB.prototype) === "function"){ | |
var gres = window.innerHeight; | |
}else{ | |
gres = screen.height; | |
} | |
this.graphic_mode = gres; | |
_debug('gres', gres); | |
if (gres == 1080 && !window.referrer){ | |
stb.ExecAction('graphicres 1280'); | |
_debug('Reboot'); | |
stb.ExecAction('reboot'); | |
}else if (!res["r"+gres]){ | |
stb.ExecAction('graphicres 720'); | |
debug('Reboot'); | |
stb.ExecAction('reboot'); | |
} | |
}catch(e){ | |
_debug(e); | |
} | |
}; | |
this.resize_window = function(){ | |
_debug('resize_window'); | |
try{ | |
var res = { | |
"r480" :{ | |
"w" : 720, | |
"h" : 480, | |
"window_w" : 720, | |
"window_h" : 480, | |
"prefix" : '_480' | |
}, | |
"r576" :{ | |
"w" : 720, | |
"h" : 576, | |
"window_w" : 720, | |
"window_h" : 576, | |
"prefix" : '' | |
}, | |
"r720" : { | |
"w" : 1280, | |
"h" : 720, | |
"window_w" : 1280, | |
"window_h" : 720, | |
"prefix" : '_720' | |
}, | |
"r1080" : { | |
"w" : 1920, | |
"h" : 1080, | |
"window_w" : 1920, | |
"window_h" : 1080, | |
"prefix" : '_720' | |
} | |
}; | |
if (typeof(Proxy) !== "undefined" && gSTB && typeof(gSTB.prototype) === "function"){ | |
var gres = window.innerHeight; | |
}else{ | |
gres = screen.height; | |
} | |
this.graphic_mode = gres; | |
_debug('gres', gres); | |
if (res["r"+gres]){ | |
resolution_prefix = res["r"+gres].prefix; | |
_debug('resolution_prefix', resolution_prefix); | |
window.resizeTo(res["r"+gres].window_w, res["r"+gres].window_h); | |
_debug('window.moveTo', (res["r"+gres].w - res["r"+gres].window_w)/2, (res["r"+gres].h - res["r"+gres].window_h)/2); | |
window.moveTo((res["r"+gres].w - res["r"+gres].window_w)/2, (res["r"+gres].h - res["r"+gres].window_h)/2); | |
} | |
}catch(e){ | |
_debug(e); | |
} | |
}; | |
this.load_channels = function(){ | |
this.load( | |
{ | |
'type' : 'itv', | |
'action': 'get_all_channels', | |
'force_ch_link_check': stb.user['force_ch_link_check'] | |
}, | |
function(result){ | |
_debug('all_channels', result); | |
stb.loader.add_pos(this.load_step, 'channels loaded'); | |
this.player.channels = result.data || []; | |
_debug('this.player.is_tv', this.player.is_tv); | |
_debug('this.player.cur_media_item', this.player.cur_media_item); | |
_debug('this.player.cur_tv_item', this.player.cur_tv_item); | |
if (this.player.is_tv){ | |
var ch_idx = this.player.channels.getIdxByVal('id', this.player.cur_media_item.id); | |
_debug('ch_idx', ch_idx); | |
if (ch_idx !== null){ | |
this.player.cur_media_item = this.player.cur_tv_item = this.player.channels[ch_idx]; | |
_debug('this.player.cur_tv_item', this.player.cur_tv_item); | |
if (this.player.cur_tv_item.lock != '1'){ | |
this.player.last_not_locked_tv_item = this.player.cur_tv_item; | |
} | |
_debug('this.player.on', this.player.on); | |
if (this.player.on){ | |
this.player.play(this.player.cur_tv_item); | |
} | |
} | |
} | |
this.load_fav_channels(); | |
}, | |
this | |
) | |
}; | |
this.load_fav_channels = function(){ | |
this.load( | |
{ | |
'type' : 'itv', | |
'action': 'get_all_fav_channels', | |
'fav' : 1, | |
'force_ch_link_check' : stb.user['force_ch_link_check'] | |
}, | |
function(result){ | |
_debug('all_fav_channels', result); | |
stb.loader.add_pos(this.load_step, 'fav_channels loaded'); | |
this.player.fav_channels = result.data || []; | |
this.load_fav_itv(); | |
}, | |
this | |
) | |
}; | |
this.load_fav_itv = function(){ | |
this.load( | |
{ | |
'type' : 'itv', | |
'action' : 'get_fav_ids', | |
'force_ch_link_check' : stb.user['force_ch_link_check'] | |
}, | |
function(result){ | |
_debug('fav_itv_ids', result); | |
this.player.fav_channels_ids = result || []; | |
if (this.player.fav_channels_ids.length == 0){ | |
this.user.fav_itv_on = 0; | |
} | |
this.get_modules(); | |
this.player.init_first_channel(); | |
}, | |
this | |
) | |
}; | |
this.load_recordings = function(){ | |
_debug('stb.load_recordings'); | |
stb.load( | |
{ | |
"type" : "remote_pvr", | |
"action" : "get_active_recordings" | |
}, | |
function(result){ | |
_debug('load_recordings result', result); | |
this.recordings = result || []; | |
if (typeof(pvrManager) == "undefined"){ | |
var active_tasks = []; | |
}else{ | |
active_tasks = JSON.parse(pvrManager.GetAllTasks()) || []; | |
} | |
_debug('active_tasks', active_tasks); | |
_debug('this.recordings before', this.recordings); | |
var now_ts = Math.ceil(new Date().getTime()/1000); | |
_debug('now_ts', now_ts); | |
_debug('this.recordings after', this.recordings); | |
stb.player.on_play = function(ch_id){ | |
_debug('player.on_play', ch_id); | |
if (stb.player.is_tv){ | |
var rec_idx = stb.recordings.getIdxByVal('ch_id', ch_id); | |
if(rec_idx !== null){ | |
var now_ts = Math.ceil(new Date().getTime()/1000); | |
_debug('now_ts', now_ts); | |
if (stb.recordings[rec_idx].local == 0 || (stb.recordings[rec_idx].t_start_ts < now_ts && stb.recordings[rec_idx].t_stop_ts > now_ts)){ | |
stb.player.show_rec_icon(stb.recordings[rec_idx]); | |
}else{ | |
stb.player.hide_rec_icon(); | |
} | |
}else{ | |
stb.player.hide_rec_icon(); | |
} | |
}else{ | |
stb.player.rec.hide(); | |
} | |
} | |
}, | |
this | |
) | |
}; | |
this.load_radio_channel = function (number) { | |
if (number) { | |
this.load( | |
{ | |
"type": "radio", | |
"action": "get_channel_by_id", | |
"number": number | |
}, | |
function (result) { | |
_debug("get_channel_by_id", result); | |
if (result.data && result.data.length) { | |
this.player.playlist = result.data; | |
this.player.stop(); | |
if (module.radio_widget) { | |
this.player.radio_idx = 0; | |
module.radio_widget.show(result.data[0]); | |
this.player.play(result.data[0]); | |
} | |
} | |
}, | |
this | |
); | |
} | |
}; | |
this.log_stream_error = function(ch_id, event){ | |
this.load( | |
{ | |
"type" : "stb", | |
"action" : "set_stream_error", | |
"ch_id" : ch_id, | |
"event" : event | |
}, | |
function(result){ | |
}, | |
this | |
); | |
}; | |
this.epg_loader = { | |
timeout : 21600000, // 6h | |
timer_id : 0, | |
epg : [], | |
start : function(){ | |
_debug('epg_loader.start'); | |
this.load(); | |
var self = this; | |
this.timer_id = window.setInterval(function(){self.load()}, (stb.type == 'MAG200' ? 3 : stb.profile['epg_data_block_period_for_stb'])*3600000); | |
}, | |
stop : function(){ | |
_debug('epg_loader.stop'); | |
window.clearInterval(this.timer_id); | |
}, | |
load : function(){ | |
_debug('epg_loader.load'); | |
this.epg = []; | |
stb.load( | |
{ | |
"type" : "itv", | |
"action" : "get_epg_info", | |
"period" : stb.type == 'MAG200' ? 3 : stb.profile['epg_data_block_period_for_stb'] | |
}, | |
function(result){ | |
this.set_epg(result.data); | |
}, | |
this | |
) | |
}, | |
set_epg : function(data){ | |
_debug('epg_loader.set_epg', data); | |
this.epg = data || []; | |
_debug('typeof(this.epg)', typeof(this.epg)); | |
}, | |
get_curr_and_next : function(ch_id, from_ts, length){ | |
_debug('epg_loader.get_curr_and_next', ch_id, from_ts, length); | |
length = length || 2; | |
ch_id = ''+ch_id; | |
_debug('typeof(ch_id)', typeof(ch_id)); | |
if (!from_ts){ | |
var now = Date.parse(new Date())/1000; | |
}else{ | |
now = parseInt(from_ts, 10); | |
} | |
var result = []; | |
_debug('now', now); | |
_debug('typeof this.epg[ch_id]', typeof(this.epg[ch_id])); | |
try{ | |
if (typeof(this.epg[ch_id]) == 'object' && this.epg[ch_id].length > 0){ | |
_debug('this.epg[ch_id]', this.epg[ch_id]); | |
_debug('this.epg[ch_id].length: '+this.epg[ch_id].length); | |
for (var i=0; i < this.epg[ch_id].length; i++){ | |
_debug('i', i); | |
if (this.epg[ch_id][i]['start_timestamp'] < now){ | |
_debug('continue'); | |
}else if (this.epg[ch_id][i]['start_timestamp'] == now){ | |
_debug('=='); | |
result.push(this.epg[ch_id][i]); | |
for (var j = 0; j < length - 1; j++){ | |
if (typeof(this.epg[ch_id][i+1+j]) == 'object'){ | |
result.push(this.epg[ch_id][i+1+j]); | |
} | |
} | |
break; | |
}else{ | |
if (typeof(this.epg[ch_id][i-1]) == 'object'){ | |
result.push(this.epg[ch_id][i-1]); | |
for (j = 0; j < length - 1; j++){ | |
if (typeof(this.epg[ch_id][i + j]) == 'object'){ | |
result.push(this.epg[ch_id][i + j]); | |
} | |
} | |
}else{ | |
result.push(this.epg[ch_id][i]); | |
} | |
break; | |
} | |
} | |
} | |
}catch(e){ | |
_debug(e); | |
} | |
if (length > 2 && module.epg_reminder && Array.isArray(module.epg_reminder.memos)){ | |
for (i=0; i<result.length; i++){ | |
result[i]['mark_memo'] = module.epg_reminder.memos.getIdxByVal('tv_program_id', result[i]['id']) != null ? 1 : 0 | |
} | |
} | |
return result; | |
}, | |
get_epg : function(ch_id){ | |
_debug('epg_loader.get_epg', ch_id); | |
var epg = this.get_curr_and_next(ch_id); | |
return this.get_osd_info(epg); | |
}, | |
get_osd_info : function(programs){ | |
_debug('epg_loader.get_osd_info', programs); | |
var epg_str = ''; | |
programs.map(function(prog, idx){ | |
if (idx != 0){ | |
epg_str += '<br>'; | |
} | |
epg_str += prog.t_time + ' ' + prog.name; | |
}); | |
return epg_str; | |
}, | |
get_cur_program : function(ch_id){ | |
_debug('epg_loader.get_cur_program', ch_id); | |
var epg = this.get_curr_and_next(ch_id); | |
if (epg && epg.length > 0){ | |
return epg[0]; | |
} | |
return null; | |
} | |
}; | |
this.cut_off = function(msg){ | |
_debug('stb.cut_off'); | |
if (module.blocking.on){ | |
return; | |
} | |
_log('cut_off()'); | |
this.key_lock = false; | |
this.player.stop(); | |
if(this.cur_layer){ | |
this.cur_layer.on = false; | |
} | |
stb.SetDefaultFlicker && stb.SetDefaultFlicker(1); | |
module.blocking.show(msg); | |
}; | |
this.cut_on = function(){ | |
_debug('stb.cut_on'); | |
if (module.blocking.on){ | |
stb.ExecAction('reboot'); | |
} | |
}; | |
this.set_cur_place = function(place){ | |
this.cur_place = place; | |
}; | |
this.reset_cur_place = function(place){ | |
this.cur_place = ''; | |
}; | |
this.set_cur_layer = function(obj){ | |
this.cur_layer = obj; | |
}; | |
this.get_current_place = function(){ | |
var cur_place_num = 0; | |
_debug('stb.player.media_type', this.player.media_type); | |
_debug('stb.cur_place', this.cur_place); | |
if(this.player.media_type == 'stream'){ // TV | |
if (this.player.on){ | |
if (this.cur_place == 'tv'){ | |
if (this.player.active_time_shift){ | |
cur_place_num = 14; | |
}else{ | |
cur_place_num = 1; | |
} | |
}else if(this.cur_place == 'radio'){ // Radio | |
cur_place_num = 5; | |
}else if(this.cur_place == 'vclub'){ | |
cur_place_num = 2; | |
}else if(this.cur_place == 'karaoke'){ // Karaoke | |
cur_place_num = 3; | |
}else if(this.cur_place == 'audioclub'){ // Audio Club | |
cur_place_num = 4; | |
}else if (this.cur_place == 'epg_simple' || this.cur_place == 'epg'){ // TV archive | |
cur_place_num = 11; | |
}else{ | |
cur_place_num = 1; | |
} | |
} | |
}else if(this.player.media_type == 'file'){ | |
if (this.player.on){ | |
if (this.cur_place == 'vclub'){ // Video Club | |
cur_place_num = 2; | |
}else if(this.cur_place == 'karaoke'){ // Karaoke | |
cur_place_num = 3; | |
}else if(this.cur_place == 'audioclub'){ // Audio Club | |
cur_place_num = 4; | |
}else if(this.cur_place == 'video_clips'){ // Video Clips | |
cur_place_num = 8; | |
}else if(this.cur_place == 'ad'){ | |
cur_place_num = 9; | |
}else if(this.cur_place == 'media_browser'){ | |
cur_place_num = 10; | |
}else if (this.cur_place == 'epg_simple' || this.cur_place == 'epg'){ // TV archive | |
cur_place_num = 11; | |
}else if (this.cur_place == 'records'){ | |
cur_place_num = 12; | |
} | |
} | |
}else{ | |
if (this.cur_place == 'city_info'){ | |
cur_place_num = 20; | |
}else if(this.cur_place == 'anec_page'){ | |
cur_place_num = 21; | |
}else if(this.cur_place == 'weather_page'){ | |
cur_place_num = 22; | |
}else if(this.cur_place == 'game_page'){ | |
cur_place_num = 23; | |
}else if(this.cur_place == 'horoscope_page'){ | |
cur_place_num = 24; | |
}else if(this.cur_place == 'course_page'){ | |
cur_place_num = 25; | |
} | |
} | |
return cur_place_num; | |
}; | |
this.advert = { | |
campaigns : [], | |
ticking_timeout : 0, | |
disabled : false, | |
disabled_time : 900, | |
tracking_pixels : [], | |
tracking_block : null, | |
tracking_block_name : "", | |
disable : function(){ | |
_debug('stb.advert.disable'); | |
if (this.disabled){ | |
return; | |
} | |
this.disabled = true; | |
var self = this; | |
window.clearTimeout(this.disabled_to); | |
this.disabled_to = window.setTimeout(function () { | |
self.enable(); | |
}, this.disabled_time * 1000) | |
}, | |
enable : function(){ | |
_debug('stb.advert.enable'); | |
this.disabled = false; | |
}, | |
start : function (cb) { | |
_debug('stb.advert.get_ad'); | |
var callback = function () { | |
stb.key_lock = false; | |
try{ | |
stb.Stop(); | |
}catch(e){ | |
_debug(e); | |
} | |
stb.player.on = false; | |
main_menu.show(); | |
cb(); | |
}; | |
if (this.disabled){ | |
callback(); | |
return; | |
} | |
if (!connection_problem.on){ | |
stb.key_lock = true; | |
} | |
stb.load( | |
{ | |
"type" : "stb", | |
"action" : "get_ad", | |
"video_mode" : stb.video_mode | |
}, | |
function (result) { | |
_debug('on get_ad', result); | |
result = Array.isArray(result) ? result : []; | |
stb.key_lock = false; | |
this.campaigns = result.map(function (item) { | |
return item['campaign']; | |
}); | |
_debug('this.campaigns', this.campaigns); | |
var adverts = result.filter(function (item) { | |
return item['campaign'].hasOwnProperty('places') && item['campaign']['places'] && item['campaign']['places'][101]; | |
}); | |
if (!adverts || adverts.length == 0){ | |
callback(); | |
return; | |
} | |
for (var i=0; i<adverts.length; i++){ | |
var advert = adverts[i]; | |
if (i != adverts.length-1){ | |
callback = (function (ad, cb) { | |
return function () { | |
_debug('ad', ad); | |
main_menu.hide(); | |
stb.player.prev_layer = main_menu; | |
if (!connection_problem.on){ | |
stb.key_lock = true; | |
} | |
stb.player.need_show_info = 0; | |
stb.player.play({ | |
'id': ad.campaign['id'], | |
'ad_id': ad.campaign['id'], | |
'cmd': 'ffmpeg ' + ad.ad, | |
'media_type': 'advert', | |
'is_advert': true, | |
'ad_tracking': ad.tracking, | |
'ad_must_watch': ad.ad_must_watch, | |
'stop_callback': cb | |
}); | |
stb.player.ad_indication.show(); | |
} | |
})(advert, callback); | |
} | |
} | |
main_menu.hide(); | |
stb.player.prev_layer = main_menu; | |
if (!connection_problem.on){ | |
stb.key_lock = true; | |
} | |
stb.player.play({ | |
'id': 0, | |
'cmd': 'ffmpeg '+adverts[0].ad, | |
'media_type': 'advert', | |
'is_advert': true, | |
'ad_tracking': adverts[0].tracking, | |
'ad_must_watch' : adverts[0].ad_must_watch, | |
'stop_callback': callback | |
}); | |
stb.player.ad_indication.show(); | |
} | |
) | |
}, | |
track : function (urls, type) { | |
_debug('stb.advert.track', urls, type); | |
type = type || ''; | |
if (!Array.isArray(urls)){ | |
return false; | |
} | |
urls.forEach(function (url) { | |
_debug('tracking call', url); | |
stb.advert.call_img(url); | |
}); | |
if (['stop', 'close', 'error', 'complete'].indexOf(type) != -1){ | |
var name = this.tracking_block_name; | |
this.tracking_block = null; | |
window.setTimeout(function () { | |
stb.advert.destroy_block(name); | |
}, 3000); | |
} | |
}, | |
call_img : function (url) { | |
_debug('stb.advert.call_img', url); | |
var pixel = document.createElement("img"); | |
pixel.style.width = '0px'; | |
pixel.style.height = '0px'; | |
pixel.src = url; | |
pixel.style.border = '0'; | |
pixel.onload = function () { | |
_debug('tracking pixel loaded') | |
}; | |
if (!this.tracking_block){ | |
var tracking_block = document.createElement("div"); | |
this.tracking_block_name = 'tracking_block_'+(new Date().getTime()); | |
_debug('tracking_block_name', this.tracking_block_name); | |
tracking_block.id = this.tracking_block_name; | |
tracking_block.style.position = 'absolute'; | |
tracking_block.style.left = '-1px'; | |
tracking_block.style.top = '-1px'; | |
this.tracking_block = document.body.appendChild(tracking_block) | |
} | |
this.tracking_pixels.push(this.tracking_block.appendChild(pixel)); | |
}, | |
destroy_block : function(name){ | |
_debug('stb.advert.destroy_block', name); | |
var block = document.getElementById(name); | |
if (block){ | |
document.body.removeChild(block); | |
} | |
}, | |
destroy_img : function(){ | |
_debug('stb.advert.destroy_img'); | |
stb.advert.tracking_pixels.map(function(tracking_pixel){ | |
stb.advert.tracking_block.removeChild(tracking_pixel); | |
}); | |
stb.advert.tracking_pixels = [] | |
}, | |
call_ajax : function(url){ | |
_debug('stb.advert.call_ajax', url); | |
var req = new XMLHttpRequest(); | |
req.open("GET", url); | |
req.onreadystatechange = function(){ | |
if (req.readyState == 4) { | |
if (req.status == 200) { | |
_debug('on track ok'); | |
}else{ | |
_debug('on track error', req.status); | |
} | |
req = null; | |
} | |
}; | |
req.send(null); | |
}, | |
start_ticking : function(media_len){ | |
_debug('stb.advert.start_ticking', media_len); | |
window.clearInterval(this.ticking_timeout); | |
this.ticking_timeout = window.setInterval(function () { | |
var pos_time = stb.GetPosTime(); | |
var quartile = media_len/4; | |
if (Math.abs(quartile - pos_time) <= 1 && stb.player.cur_media_item.ad_tracking.hasOwnProperty('firstQuartile')){ | |
stb.advert.track(stb.player.cur_media_item.ad_tracking['firstQuartile']) | |
}else if(Math.abs(2*quartile - pos_time) <= 1 && stb.player.cur_media_item.ad_tracking.hasOwnProperty('midpoint')){ | |
stb.advert.track(stb.player.cur_media_item.ad_tracking['midpoint']) | |
}else if(Math.abs(3*quartile - pos_time) <= 1 && stb.player.cur_media_item.ad_tracking.hasOwnProperty('thirdQuartile')){ | |
stb.advert.track(stb.player.cur_media_item.ad_tracking['thirdQuartile']) | |
} | |
}, 1000); | |
}, | |
stop_ticking : function () { | |
_debug('stb.advert.stop_ticking'); | |
window.clearInterval(this.ticking_timeout); | |
} | |
}; | |
this.clock = { | |
start : function(){ | |
_debug('clock.start()'); | |
if (this.t_clock){ | |
_debug('exit clock.start'); | |
return; | |
} | |
this.tick(); | |
var self = this; | |
try{ | |
this.t_clock = window.setInterval(function(){self.tick()}, 30000); | |
this.t_clock_s = window.setInterval(function(){self.tick_s()}, 1000); | |
}catch(e){ | |
_debug(e); | |
} | |
}, | |
stop : function(){ | |
_debug('clock.stop'); | |
_debug('self.t_clock', this.t_clock); | |
var self = this; | |
try{ | |
window.clearInterval(self.t_clock); | |
window.clearInterval(self.t_clock_s); | |
}catch(e){ | |
_debug(e); | |
} | |
}, | |
tick_s : function(){ | |
this.timestamp = Math.round(new Date().getTime() / 1000); | |
}, | |
tick : function(){ | |
this.current_date = new Date(); | |
this.year = this.current_date.getFullYear(); | |
this.month = this.current_date.getMonth(); | |
this.date = this.current_date.getDate(); | |
this.day = this.current_date.getDay(); | |
this.hours = this.current_date.getHours(); | |
if (this.hours > 11){ | |
this.ap_mark = 'PM'; | |
}else{ | |
this.ap_mark = 'AM'; | |
} | |
this.ap_hours = this.hours % 12 || 12; | |
this.minutes = this.current_date.getMinutes(); | |
if (this.minutes<10){ | |
this.minutes = '0'+this.minutes; | |
} | |
this.show(); | |
}, | |
show : function(){ | |
if (typeof(main_menu) != 'undefined' && main_menu && main_menu.time && main_menu.date && main_menu.on){ | |
main_menu.time.innerHTML = stb.clock_formats[stb.profile.clock_format].format(this.hours, this.minutes, this.ap_hours, this.ap_mark); | |
main_menu.date.innerHTML = get_word('date_format').format(get_word('week_arr')[this.day], this.date, get_word('month_arr')[this.month], this.year); | |
} | |
if (stb.player && stb.player.info && stb.player.info.on && stb.player.info.clock){ | |
stb.player.info.clock.innerHTML = stb.clock_formats[stb.profile.clock_format].format(this.hours, this.minutes, this.ap_hours, this.ap_mark); | |
} | |
if (module && module.tv && module.tv.on && module.tv.clock_box){ | |
module.tv.clock_box.innerHTML = stb.clock_formats[stb.profile.clock_format].format(this.hours, this.minutes, this.ap_hours, this.ap_mark); | |
} | |
if (stb.type == 'MAG200' && (!stb.player.on || (stb.player.on && !stb.player.is_tv))){ | |
stb.setFrontPanel(this.hours + '' + this.minutes, true); | |
} | |
this.triggerCustomEventListener("tick", this); | |
}, | |
convert_sec_to_human_time : function(sec){ | |
if (sec < 0 || isNaN(sec)){ | |
sec = 0; | |
} | |
var h = Math.floor(sec/3600); | |
var m = Math.floor((sec - (h*3600)) / 60); | |
var s = sec - (h*3600) - (m*60); | |
var time = ''; | |
if(h){ | |
if (h<10){ | |
h = '0'+h; | |
} | |
time += h+':'; | |
} | |
if (m<10){ | |
m = '0'+m; | |
} | |
time += m+':'; | |
if (s<10){ | |
s = '0'+s; | |
} | |
time += s; | |
return time; | |
}, | |
convert_sec_to_human_hours : function(sec){ | |
var h = Math.floor(sec/3600); | |
var m = Math.floor((sec - (h*3600)) / 60); | |
var time = ''; | |
time += h+':'; | |
if (m<10){ | |
m = '0'+m; | |
} | |
time += m; | |
return time; | |
}, | |
convert_timestamp_to_human_time : function(timestamp){ | |
var date = new Date(parseInt(timestamp, 10)*1000); | |
var hours = date.getHours(); | |
if (hours > 11){ | |
var ap_mark = 'PM'; | |
}else{ | |
ap_mark = 'AM'; | |
} | |
var ap_hours = hours % 12 || 12; | |
if (hours<10){ | |
hours = '0'+hours; | |
} | |
if (ap_hours<10){ | |
ap_hours = '0'+ap_hours; | |
} | |
var minutes = date.getMinutes(); | |
if (minutes<10){ | |
minutes = '0'+minutes; | |
} | |
return stb.clock_formats[stb.profile.clock_format].format(hours, minutes, ap_hours, ap_mark); | |
}, | |
format_XX : function(value){ | |
if (value < 10){ | |
value = '0'+value; | |
} | |
return value; | |
} | |
}; | |
this.add_referrer = function(paramStr, layer_name){ | |
var returnParams = paramStr || ''; | |
returnParams += (returnParams.length == 0? '?': '&'); | |
var tmpLocation = window.location.toString(); | |
returnParams += 'referrer='+encodeURIComponent(tmpLocation); | |
if (tmpLocation.indexOf('?') == -1) { | |
returnParams += encodeURIComponent('?'); | |
} | |
var amp = '(\\' + encodeURIComponent('&') + ')'; | |
var regStr = new RegExp(amp + 'focus_module[^\\1,\\&,$]*?(\\1|\\&|$)','ig'); | |
if (regStr.test(returnParams)) { | |
returnParams = returnParams.replace(regStr, '$2'); | |
if (regStr.test(returnParams)) { | |
returnParams = returnParams.replace(regStr, ''); | |
} | |
} | |
focus_module = layer_name; | |
returnParams += encodeURIComponent('&focus_module='+layer_name); | |
return returnParams; | |
}; | |
this.get_rc_data = function () { | |
_debug("this.get_rc_data"); | |
var remoteControlFileData = gSTB.LoadUserData('remoteControl.json'); | |
try { | |
remoteControlFileData = JSON.parse(remoteControlFileData); | |
} catch (error) { | |
remoteControlFileData = {enable: false, deviceName: '', password: ''}; | |
gSTB.SaveUserData('remoteControl.json', JSON.stringify(remoteControlFileData)); | |
} | |
return remoteControlFileData; | |
}; | |
this.init_rc = function(){ | |
_debug("this.init_rc"); | |
if (typeof (gSTB) == 'undefined' || !gSTB.ConfigNetRc || !gSTB.SetNetRcStatus) { | |
_debug("remote control not init"); | |
return; | |
} | |
var remoteControlFileData = this.get_rc_data(); | |
if (remoteControlFileData.enable) { | |
gSTB.ConfigNetRc(remoteControlFileData.deviceName, remoteControlFileData.password); | |
} | |
gSTB.SetNetRcStatus(remoteControlFileData.enable); | |
_debug("remote control enabled - ", remoteControlFileData.enable); | |
} | |
} | |
var screensaver = { | |
on : false, | |
init : function(){ | |
//_debug('screensaver.init'); | |
if (typeof(gSTB) != "undefined" && gSTB.SetScreenSaverTime){ | |
gSTB.SetScreenSaverTime(0); | |
} | |
if (this.dom_obj){ | |
_debug('exit screensaver.init'); | |
return; | |
} | |
this.build(); | |
var self = this; | |
keydown_observer.addCustomEventListener("keypress", function(event){ | |
//_debug('screensaver keypress', event); | |
if (self.on){ | |
self.hide(); | |
self.restart_timer.call(self); | |
return false; | |
} | |
self.restart_timer.call(self); | |
return true; | |
}); | |
this.restart_timer(); | |
stb.player.addCustomEventListener("onplay", function(event){ | |
if (self.on && stb.player.file_type != 'audio'){ | |
self.hide(); | |
self.restart_timer.call(self); | |
} | |
}); | |
stb.clock.addCustomEventListener("tick", function(date){ | |
if (self.on){ | |
self.clock.innerHTML = stb.clock_formats[stb.profile.clock_format].format(date.hours, date.minutes, date.ap_hours, date.ap_mark); | |
} | |
}); | |
}, | |
restart_timer : function(){ | |
//_debug('screensaver.restart_timer'); | |
var self = this; | |
window.clearTimeout(this.activate_timer); | |
if (stb.user['screensaver_delay'] > 0){ | |
this.activate_timer = window.setTimeout(function(){ | |
self.show.call(self); | |
}, stb.user['screensaver_delay'] * 60000); | |
//}, 30000); | |
} | |
}, | |
build : function(){ | |
//_debug('screensaver.build'); | |
this.dom_obj = create_block_element("screensaver"); | |
this.clock = create_block_element("screensaver_clock", this.dom_obj); | |
this.hide(); | |
}, | |
show : function(){ | |
_debug('screensaver.show'); | |
window.clearTimeout(this.activate_timer); | |
_debug('stb.player.on', stb.player.on); | |
var is_playing = false; | |
if (stb.IsPlaying){ | |
is_playing = stb.IsPlaying(); | |
_debug('stb.IsPlaying', is_playing); | |
}else if (stb.GetVideoInfo){ | |
var video_info = stb.GetVideoInfo(); | |
_debug('video_info', video_info); | |
try{ | |
video_info = eval('('+video_info+')'); | |
}catch(e){ | |
_debug(e); | |
} | |
video_info = video_info || {}; | |
_debug('video_info', video_info); | |
is_playing = video_info.frameRate != 0; | |
} | |
_debug('is_playing', is_playing); | |
if (stb.player.on && is_playing){ | |
this.restart_timer(); | |
return; | |
} | |
_debug('stb.IsVirtualKeyboardActive()', stb.IsVirtualKeyboardActive()); | |
stb.HideVirtualKeyboard(); | |
this.dom_obj.show(); | |
this.on = true; | |
this.clock.innerHTML = stb.clock_formats[stb.profile.clock_format].format(stb.clock.hours, stb.clock.minutes, stb.clock.ap_hours, stb.clock.ap_mark); | |
this.move(); | |
var self = this; | |
this.move_timer = window.setInterval(function(){self.move.call(self)}, 5000); | |
}, | |
hide : function(){ | |
_debug('screensaver.hide'); | |
//stb.cur_layer && stb.cur_layer.dom_obj.show(); | |
this.dom_obj.hide(); | |
this.on = false; | |
window.clearInterval(this.move_timer); | |
}, | |
toggle : function(){ | |
_debug('screensaver.toggle'); | |
if (this.on){ | |
this.hide(); | |
}else{ | |
window.setTimeout(function(){screensaver.show()}, 500); | |
} | |
}, | |
move : function(){ | |
_debug('screensaver.start'); | |
var top = Math.floor(Math.random() * (screen.height - this.clock.offsetHeight)); | |
var left = Math.floor(Math.random() * (screen.width - this.clock.offsetWidth)); | |
_debug('top', top); | |
_debug('left', left); | |
this.clock.moveX(left); | |
this.clock.moveY(top); | |
} | |
}; | |
var connection_problem = { | |
on: true, | |
init : function(){ | |
this.dom_obj = create_block_element("connection_problem_container"); | |
this.block_obj = create_block_element("connection_problem_block", this.dom_obj); | |
this.block_obj.innerHTML = get_word('Connection problem'); | |
this.hide(); | |
}, | |
refresh_msg : function(){ | |
this.block_obj.innerHTML = get_word('Connection problem'); | |
}, | |
show : function(){ | |
_debug('connection_problem.show'); | |
_debug('stb.user.enable_connection_problem_indication', stb.user.enable_connection_problem_indication); | |
if (stb.user.enable_connection_problem_indication == 1){ | |
this.dom_obj.show(); | |
this.on = true; | |
} | |
stb.key_lock = false; | |
}, | |
hide : function(){ | |
_debug('connection_problem.hide'); | |
if (!this.on){ | |
return; | |
} | |
this.dom_obj.hide(); | |
this.on = false; | |
stb.key_lock = false; | |
} | |
}; | |
var authentication_problem = { | |
on: true, | |
init : function(){ | |
this.dom_obj = create_block_element("authentication_problem_container"); | |
this.block_obj = create_block_element("authentication_problem_block", this.dom_obj); | |
this.block_obj.innerHTML = get_word('Authentication problem'); | |
this.hide(); | |
}, | |
refresh_msg : function(){ | |
this.block_obj.innerHTML = get_word('Authentication problem'); | |
}, | |
show : function(){ | |
_debug('authentication_problem.show'); | |
this.dom_obj.show(); | |
this.on = true; | |
if (stb.player && stb.player.on){ | |
stb.player.stop(); | |
} | |
}, | |
hide : function(){ | |
_debug('authentication_problem.hide'); | |
if (!this.on){ | |
return; | |
} | |
this.dom_obj.hide(); | |
this.on = false; | |
} | |
}; | |
var Utf8 = { | |
// public method for url encoding | |
encode : function (string) { | |
string = string.replace(/\r\n/g,"\n"); | |
var utftext = ""; | |
for (var n = 0; n < string.length; n++) { | |
var c = string.charCodeAt(n); | |
if (c < 128) { | |
utftext += String.fromCharCode(c); | |
} | |
else if((c > 127) && (c < 2048)) { | |
utftext += String.fromCharCode((c >> 6) | 192); | |
utftext += String.fromCharCode((c & 63) | 128); | |
} | |
else { | |
utftext += String.fromCharCode((c >> 12) | 224); | |
utftext += String.fromCharCode(((c >> 6) & 63) | 128); | |
utftext += String.fromCharCode((c & 63) | 128); | |
} | |
} | |
return utftext; | |
}, | |
// public method for url decoding | |
decode : function (utftext) { | |
var string = ""; | |
var i = 0; | |
var c = c1 = c2 = 0; | |
while ( i < utftext.length ) { | |
c = utftext.charCodeAt(i); | |
if (c < 128) { | |
string += String.fromCharCode(c); | |
i++; | |
} | |
else if((c > 191) && (c < 224)) { | |
c2 = utftext.charCodeAt(i+1); | |
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); | |
i += 2; | |
} | |
else { | |
c2 = utftext.charCodeAt(i+1); | |
c3 = utftext.charCodeAt(i+2); | |
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); | |
i += 3; | |
} | |
} | |
return string; | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment