> <head> <script type="text/javascript" src="settings.js" /> <script type="text/javascript" src="lang_eng.js" /> <script type="text/javascript" src="channels.js" /> </head> <script language="Javascript"> // // Javascript VDR client for Motorola VIP19x0 & VIP19x3 // // Martin Voerman Rekordc@gmail.com // // // window.onkeydown = onKeyDown; function onLoad() { is = toi.informationService; ss = toi.schedulerService; aos = toi.audioOutputService; vos = toi.videoOutputService; fps = toi.frontPanelService; ams = toi.assetManagerService; GetSettings(); createPlayer(); createEitCache(); if(pipPlayer){ addPipVideoplane(); createPip(); } if(PipSwitchGuide){ createPip(); } embedTeletextPlugin(); aos.setVolume(AudioOut, StartVolume); aos.setMuteState(AudioOut, false); showDisplay(Right(currChan.toString(),4), false, 100, 0 ); play(channels[currChan]); if (EPGMode) { eitCache.setFilterMode(eitCache.FILTER_MODE_PF_AND_SCHEDULE); } else { eitCache.setFilterMode(eitCache.FILTER_MODE_PF_ONLY); } eitCache.addEventListener(eitCache.ON_CACHE_UPDATED, onCacheUpdated); mediaPlayer.addEventListener(mediaPlayer.ON_DATA_AVAILABLE,onDataAvailableEvent); mediaPlayer.addEventListener(mediaPlayer.ON_STATE_CHANGED, MPD); if (is.getObject("var.capabilities.dvr") == "FALSE") { mediaRecorder = 0; // No harddisk, no recorder functions possible } if (is.getObject("config.architecture.target") !== "vip1903" && fullupdate !== 2) { fullupdate = 0; // No 19x3 so better turn fullupdate EPG off } if (mediaRecorder) { createRecorder(); mediaRecorder.addEventListener(mediaRecorder.ON_STATE_CHANGED, onRecorderStateChanged); } is.addEventListener(is.ON_OBJECTS_CHANGED, onEvent); is.subscribeObject(onEvent, "var.io.state", true); ss.addEventListener(ss.ON_SCHEDULED_START, onScheduledStart); ss.addEventListener(ss.ON_SCHEDULED_STOP, onScheduledStop); ss.setCategorySubscription(onScheduledStart, "*"); ss.setCategorySubscription(onScheduledStop, "*"); setOSDscale(); SetupFonts(); setOSDtimer(); showOSD(); videoplane.subtitles = Boolean(ShowSubs); colorkeys.innerHTML = "<font color=red> " + NN[4] + " </font><font color=green > " + NN[1] + " </font><font color=yellow> " + NN[2] + " </font><font color=blue> " + NN[5] + " </font>"; mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[0] + "</center></h1>"; } function SetupFonts() { //setup fontsize colorkeys.style.fontSize = fsKeys; osdvolume.style.fontSize = fsCA; osdtime.style.fontSize = fsTime; osdname.style.fontSize = fsName; osdepg.style.fontSize = fsEpg; osdca.style.fontSize = fsCA; switchtimer.style.fontSize = fsEpg; osdepginfo.style.fontSize = fsEpginfo; osdepginfonext.style.fontSize = fsEpginfo; osdnr.style.fontSize = fsChan; osdlang.style.fontSize = fsAudio; //setup fontcolors/ backgroundcolor document.body.style.backgroundColor = "#ccc"; osdvolume.style.color = "green"; osdtime.style.color = "white"; osdname.style.color = "black"; osdepg.style.color = "white"; osdca.style.color = "black"; switchtimer.style.color = "white"; switchtimer.style.background = "red"; osdnr.style.background = "red"; var i = "#3366ff"; osdmedia.style.background = i; osdmain.style.background = i; schedule.style.background = i; mainmenu.style.background = i; mediaList.style.background = i; osdepginfo.style.background = i; osdepginfonext.style.background = i; channelList.style.background = "#bbb"; osdnr.style.color = "black"; osdlang.style.color = "white"; color_bg = "#fc5"; color_main_head = "color:white"; color_main_font = "color:black"; color_epg_head = "color:white"; color_epg_title = "color:white"; color_epg_avinfo = "color:black"; color_epg_info = "color:yellow"; color_sched_head = "color:white"; color_sched_font = "color:black"; color_chan_epg = "color:black"; color_osdtimer = "color:black"; color_timerinfo = "color:white"; color_media_osd = "color:white"; color_progress1 = "<font color=red>"; color_progress2 = "<font color=white>"; color_notset = "color:grey"; } function GetSettings() { //test for settings, create if not excists. try { if (!is.getObject("vip.serveraddress")) {} } catch(e) { is.setObject("vip.serveraddress","0",is.STORAGE_PERMANENT) } try { if (!is.getObject("vip.languagepriority")) {} } catch(e) { is.setObject("vip.languagepriority","0",is.STORAGE_PERMANENT) } try { if (!is.getObject("vip.OSDlanguage")) {} } catch(e) { is.setObject("vip.OSDlanguage","0",is.STORAGE_PERMANENT) } try { if (!is.getObject("vip.testing")) {} } catch(e) { is.setObject("vip.testing","0",is.STORAGE_PERMANENT) } try { if (!is.getObject("vip.resolution")) {} } catch(e) { is.setObject("vip.resolution","2",is.STORAGE_PERMANENT) } try { if (!is.getObject("vip.testing2")) {} } catch(e) { is.setObject("vip.testing2","0",is.STORAGE_PERMANENT) //show info if channel is on hardcoded list of non free } try { if (!is.getObject("vip.fav_max_channel")) {} } catch(e) { is.setObject("vip.fav_max_channel","0",is.STORAGE_PERMANENT) } try { if (!is.getObject("vip.showsubs")) {} } catch(e) { is.setObject("vip.showsubs","1",is.STORAGE_PERMANENT) } var sel_group; for (var i=0;i<10;i++) { sel_group = "vip.group." + i; try { if (!is.getObject(sel_group)) {} } catch(e) { if (!minChan[i]) { is.setObject(sel_group,"0",is.STORAGE_PERMANENT) } else { is.setObject(sel_group,"1",is.STORAGE_PERMANENT) } } } for (var i=0;i<10;i++) { if (minChan[i]) {minchan[i] = minChan[i];} sel_group = "vip.group." + i; if (is.getObject(sel_group) == "0") { minChan[i] = "";} } audio = Number(is.getObject("vip.languagepriority")); server_ip = server_ip_array[Number(is.getObject("vip.serveraddress"))]; for (var i=0;i<10;i++) { if (ServerAdres[i] !== "FullURL" && ServerAdres[i] !== "MultiCast") {ServerAdres[i] = server_ip + StreamPort;} } ServerAdres[Fav_group] = server_ip + StreamPort; lang_nr = Number(is.getObject("vip.OSDlanguage")); loadjs(langfile[lang_nr]); experimental = Number(is.getObject("vip.testing"));// Use some experimental code testing2 = Number(is.getObject("vip.testing2"));// Use some experimental code ShowSubs = Number(is.getObject("vip.showsubs")); Set_Res = Number(is.getObject("vip.resolution")); VideoOutput(); Read_Fav(); is.setObject("cfg.media.subtitling.languagepriority",subs_prio,is.STORAGE_PERMANENT); // set default subtitle language to //if needed types can be set here. Default of the box is normal. //is.setObject("cfg.media.subtitling.typepriority","hearing_impaired",is.STORAGE_PERMANENT); //is.setObject("cfg.media.subtitling.typepriority","normal",is.STORAGE_PERMANENT); //is.setObject("cfg.media.audio.typepriority","normal",is.STORAGE_PERMANENT); //is.setObject("cfg.media.audio.typepriority","hearing_impaired",is.STORAGE_PERMANENT); //is.setObject("cfg.media.audio.typepriority","visually_impaired",is.STORAGE_PERMANENT); for (var x = 0; x < 10; x++) { searchtimers[x] = "" ; // To solve displaying undefined timers[x] = "" ; if (maxChan[x]) { //check changed to maxChan because minChan can be unset from menu for (var i = minChan[x]; i < (maxChan[x]+1); i++) { EPG[0][4][i] = "";EPG[1][4][i] = "";EPG[0][5][i] = "";EPG[1][5][i] = ""; EPG[0][7][i] = "";EPG[1][7][i] = "";AvInfo[i] = ""; } } } for (var i = minChan[Fav_group]; i < (maxChan[Fav_group]+10); i++) { EPG[0][4][i] = "";EPG[1][4][i] = "";EPG[0][5][i] = "";EPG[1][5][i] = "";EPG[0][7][i] = "";EPG[1][7][i] = "";AvInfo[i] = ""; } //Check if there is a SmartTV or Restfulapi VDR server plugin CheckPlugins(); // override check for testing : // smartTVplugin = 0 ; // Restfulapiplugin = 1; if (smartTVplugin && Restfulapiplugin == 0) { // smartTVplugin YES // Restfulapiplugin NO get_timer = 1; if (get_recordings == 0 ) {get_recordings = 1;} get_marks = 1; } else if (smartTVplugin == 0 && Restfulapiplugin) { // smartTVplugin NO // Restfulapiplugin YES get_timer = 0; if (get_recordings == 1 ) {get_recordings = 0;} get_marks = 0; } else if (smartTVplugin == 0 && Restfulapiplugin == 0) { // smartTVplugin NO // Restfulapiplugin NO get_recordings = 2; //from streamdev } } function loadjs(filename){ var oHead = document.getElementsByTagName('HEAD').item(0); var oScript= document.createElement("script"); oScript.type = "text/javascript"; oScript.src= filename; oHead.appendChild( oScript); } function onEvent(event) { var numObjs = event.objectNames.length; for (var i=0; i<numObjs; i++) { if(event.objectNames[i] == "var.io.state" && is.getObject(event.objectNames[i]) == "standby" && KillStream == 1){ try { if (isMediaMenu) { if (mediaList.style.opacity == 0) {setResume();} // No mediamenu on screen so set resume. } mediaPlayer.close(); SetLed(2,2,0);// At request no more blinking on standby. } catch(e) { alert(e); } } else if(event.objectNames[i] == "var.io.state" && is.getObject(event.objectNames[i]) == "normal" && KillStream == 1){ play(channels[currChan]); if(isMediaMenu) { if (mediaList.style.opacity == 0) { if (get_recordings == 1) { setTimeout("GetMarks(); getResume(); playRec(recLink[currMed]+ '?mode=streamtoend&time=' + position);",100); } else if (get_recordings == 2) { setTimeout("playRec(recLink[currMed]+ '?pos=time.' + position);",100); } } else { showDisplay("STOP", false, 100, 0 ); showMediaList(); } } } } } function onUnload() { try { mediaPlayer.close(); mediaPlayer.releaseInstance(); if(TimeShift){ mediaPlayer.stopTimeshiftBuffering(); mediaPlayer.discardTimeshiftBuffer(); } if(mediaRecorder){ mediaRecorder.close(); mediaRecorder.releaseInstance(); } if(pipPlayer){ pipPlayer.close(); pipPlayer.releaseInstance(); } is.removeEventListener(is.ON_OBJECTS_CHANGED, onEvent); eitCache.removeEventListener(eitCache.ON_CACHE_UPDATED, onCacheUpdated); mediaPlayer.removeEventListener(mediaPlayer.ON_DATA_AVAILABLE,onDataAvailableEvent); mediaPlayer.removeEventListener(mediaPlayer.ON_STATE_CHANGED, MPD); mediaRecorder.removeEventListener(mediaRecorder.ON_STATE_CHANGED, onRecorderStateChanged); } catch(e) { alert(e); } } function incChan(step) { currChan += step; if (currChan > maxChan[ChanGroup]) { currChan = minChan[ChanGroup]; } osdnr.style.opacity = isFullscreen; OSDchannr(currChan); } function decChan(step) { currChan -= step; if (currChan < minChan[ChanGroup] ) { currChan = maxChan[ChanGroup] ; } osdnr.style.opacity = isFullscreen; OSDchannr(currChan); } function VolumeUp() { if (Volume < 5) { var VolStep = 1; } else { var VolStep = VolumeStep; } Volume += VolStep; if (Volume > 100) { Volume = 100; } aos.setVolume(AudioOut, Volume); showVolume(); } function VolumeDown() { if (Volume > 5) { var VolStep = VolumeStep; } else { var VolStep = 1; } Volume -= VolStep; if (Volume < 0) { Volume = 0; } aos.setVolume(AudioOut, Volume); showVolume(); } function VolumeMute() { state = aos.getMuteState(AudioOut); aos.setMuteState(AudioOut, !state); mute = 1 - state; osdmute.style.opacity = mute; } function createEitCache() { try { eitCache = toi.dvbEitService.createInstance(); } catch(e) { alert("Failed getting eitCache: " + e); } } function createPlayer() { try { mediaPlayer = toi.mediaService.createPlayerInstance(); } catch(e) { alert("Failed creating player: " + e); } } function createRecorder() { try { mediaRecorder = toi.mediaService.createRecorderInstance(); } catch(e) { alert("Cannot create media recorder: " + e); mediaRecorder = ""; } } function createPip() { try { pipPlayer = toi.mediaService.createPipPlayerInstance(); } catch(e) { alert("Failed creating PIP player: " + e); } } function addPipVideoplane() { var pipVideoDiv = document.getElementById("pipVideoDiv"); pipVideoDiv.innerHTML = "<videoplane id='pipvideoplane' index=1 style='position:fixed;left:70%;top:60%;height:20%;width:20%;z-index:50;'></videoplane>"; document.body.appendChild(pipVideoDiv); } function pipplay(uri) { try { if (pipPlayer.getState() != pipPlayer.STATE_IDLE) { pipPlayer.close(); } if (PIPDelayID != -1) { clearTimeout(PIPDelayID); PIPDelayID = -1; } if (ServerAdres[ChanGroup] == "MultiCast" ) { SI=channels[currChan].split("-"); uri = SI[4]; } else if (ServerAdres[ChanGroup] == "FullURL" ) { // uri = ready! } else { uri = ServerAdres[ChanGroup] + uri; } pipPlayer.open(uri); PIPDelayID = setTimeout("pipPlayer.play(1000);", 500); } catch (e) { alert("Failed opening PIP stream: " + e); return; } } function play(uri) { try { if (initialDelayID != -1) { clearTimeout(initialDelayID); initialDelayID = -1; } if (PlayDelayID != -1) { clearTimeout(PlayDelayID); PlayDelayID = -1; } if (initialDelayPlayID != -1) { clearTimeout(initialDelayPlayID); initialDelayPlayID = -1; } if (mediaPlayer.getState() != mediaPlayer.STATE_IDLE) { mediaPlayer.close(); } if (isSchedule) { schedule.style.opacity = 0; isSchedule = 0;} if (epgactive) { osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; epgactive = 0;} if (ServerAdres[ChanGroup] == "MultiCast" ) { SI=channels[currChan].split("-"); uri = SI[4]; } else if (ServerAdres[ChanGroup] == "FullURL" ) { // uri = ready! } else { uri = ServerAdres[ChanGroup] + uri; } URL = uri; initialDelayPlayID = setTimeout("mediaPlayer.open(URL);mediaPlayer.play(1000);GetEPG(currChan);ExtraStuff();",initialDelayPlay); initialDelayPlay = 500; // wait 500 ms before zap to next channel PlayDelayID = setTimeout("initialDelayPlay = 0;",5000); SetLed(1,1,0); if(isFullscreen) { showOSD(); } showDisplay(Right(currChan.toString(),4), false, 100, 0 ); } catch (e) { alert("Failed opening stream: " + e); alert("error: " + mediaPlayer.getTimeshiftError().source); alert("error: " + mediaPlayer.getTimeshiftError().details); return; } } function preview(urip) { if(SwitchGuide) { play(urip); } else if (PipSwitchGuide && fullupdate) { pipplay(urip); } if (isSchedule) { schedule.style.opacity = 0; isSchedule = 0;} if (epgactive) { osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; epgactive = 0;} showChannelList(); } function onDataAvailableEvent(event) { dataAvailable = event.status; //alert("onDataAvailableEvent : " + event.status); if(event.status==true) { updateStreamInfo(currChan); } } function updateStreamInfo(currStream) { var streamInfo = mediaPlayer.getStreamInfo(); var cList = streamInfo.availableComponents; var x; var xs = 0; var subs = ""; xx = 0; AvInfo[currStream] = ""; lang_prio_dyn.length = 0; subs_prio_dyn.length = 0; Radioicon = "\uE00E"; for(x=0; x<cList.length;x++) { if(cList[x].type == 0) { lang_prio_dyn[xx] = mediaPlayer.getAudioStreamInfo(cList[x]).language; AvInfo[currStream] = AvInfo[currStream] + " Audio " + xx + " " + mediaPlayer.getAudioStreamInfo(cList[x]).encoding + " - " + mediaPlayer.getAudioStreamInfo(cList[x]).language + " , "; // // alert (mediaPlayer.getAudioStreamInfo(cList[x]).sampleRate); // alert (mediaPlayer.getAudioStreamInfo(cList[x]).channelFormat); // AUDIO_CHANNEL_FORMAT_UNKNOWN = 0 // AUDIO_CHANNEL_FORMAT_SINGLE_MONO = 1 // AUDIO_CHANNEL_FORMAT_DUAL_MONO = 2 // AUDIO_CHANNEL_FORMAT_STEREO = 3 // AUDIO_CHANNEL_FORMAT_3_FRONT_1_BACK = 4 // AUDIO_CHANNEL_FORMAT_3_FRONT_2_BACK = 5 // AUDIO_CHANNEL_FORMAT_3_FRONT_2_BACK_LFE = 6 // AUDIO_CHANNEL_FORMAT_3_FRONT_2_SIDE_2_BACK_LFE = 7 // alert (mediaPlayer.getAudioStreamInfo(cList[x]).channelMode); // AUDIO_CHANNEL_MODE_NORMAL = 0 // AUDIO_CHANNEL_MODE_DUAL_MONO_LEFT_ONLY = 1 // AUDIO_CHANNEL_MODE_DUAL_MONO_RIGHT_ONLY = 2 // AUDIO_CHANNEL_MODE_DUAL_MONO_STEREO = 3 // AUDIO_CHANNEL_MODE_DUAL_MONO_MIXED = 4 if (lang_prio_dyn[xx] !== "NAR") { xx += 1; } else { lang_prio_dyn.length = xx; } } if(cList[x].type == 1) { Radioicon = "\uE00F"; AvInfo[currStream] = AvInfo[currStream] + " Video " + mediaPlayer.getVideoStreamInfo(cList[x]).encoding + " size : " + mediaPlayer.getVideoStreamInfo(cList[x]).resolutionX + " x " + mediaPlayer.getVideoStreamInfo(cList[x]).resolutionY; if (mediaPlayer.getVideoStreamInfo(cList[x]).aspectRatio == "0") { AvInfo[currStream] = AvInfo[currStream] + " (?:?)"; } if (mediaPlayer.getVideoStreamInfo(cList[x]).aspectRatio == "1") { AvInfo[currStream] = AvInfo[currStream] + " (4:3)"; } if (mediaPlayer.getVideoStreamInfo(cList[x]).aspectRatio == "2") { AvInfo[currStream] = AvInfo[currStream] + " (16:9)"; } } if(cList[x].type == 2) { if (xs == 0) { subs = " SUBS : " } else { subs += " , ";} subs_prio_dyn[xs] = mediaPlayer.getSubtitleStreamInfo(cList[x]).language; subs = subs + subs_prio_dyn[xs]; xs += 1; } if(cList[x].type == 3) { alert("COMPONENT_SUBTITLE_CAPTION"); //This is an ARIB specific type of subtitles } if(cList[x].type == 4) { alert("COMPONENT_SUBTITLE_SUPERIMPOSE"); //This is an ARIB specific type of subtitles and used mainly for displaying alert messages on screen. } if(cList[x].type == 5) { // alert("TeletextStreamInfo : " + mediaPlayer.getTeletextStreamInfo(cList[x]).language) AvInfo[currStream] += " TXT"; } } AvInfo[currStream] += subs; } function VideoOutput() { videoConfig = vos.getVideoConfiguration(); var session = null; try { var currentOutput = 0; //0 = normaly HDMI displayInfo=videoConfig.getDisplayInfo(videoConfig.getVideoOutputs()[currentOutput]); var desiredMode = VideoOutputModes[Set_Res]; // create the session session = vos.createVideoConfigurationSession(); session.setDefaultVideoMode(videoConfig.getVideoOutputs()[currentOutput], desiredMode); session.apply(); session.releaseInstance(); } catch (e) { if (session != null) { session.releaseInstance(); } alert(e); } setOSDscale(); SetupFonts(); } function setOSDscale() { fsAudio = (16*Yfactor[Set_Res]) + "px"; fsTime = (16*Yfactor[Set_Res]) + "px"; fsName = (27*Yfactor[Set_Res]) + "px"; fsMenu = (27*Yfactor[Set_Res]) + "px"; fsChan = (43*Yfactor[Set_Res]) + "px"; fsCA = (32*Yfactor[Set_Res]) + "px"; fsMenuMain = (35*Yfactor[Set_Res]) + "px"; fsEpg = (19*Yfactor[Set_Res]) + "px"; fsEpginfo = (21*Yfactor[Set_Res]) + "px"; fsList = (18*Yfactor[Set_Res]) + "px"; fsSchedList = (18*Yfactor[Set_Res]) + "px"; fsSched = (26*Yfactor[Set_Res]) + "px"; fsRec = (35*Yfactor[Set_Res]) + "px"; fsReclist = (19*Yfactor[Set_Res]) + "px"; fsMedia = (27*Yfactor[Set_Res]) + "px"; fsKeys = (19*Yfactor[Set_Res]) + "px"; } function addzero(zero) { if (zero<10) { zero="0" + zero; } return zero; } function ExtraStuff(){ if(TimeShift){ initialDelayID = setTimeout("startTimeshiftBuffering();", 5000); } if(testing2) { if (CAdelayID != -1) { clearTimeout(CAdelayID); CAdelayID = -1; switchtimer.style.opacity = 0;} if ( (currChan > 10 && currChan < 26 ) || (currChan > 40 && currChan < 50 ) || (currChan > 50 && currChan < 120 ) || (currChan > 151 && currChan < 200) || (currChan > 604 && currChan < 612 ) || (currChan > 624 && currChan < 631) || (currChan > 632 && currChan < 700) || (currChan > 8004 && currChan < 8027) ) { //Show info if set nonfree switchtimer.innerHTML = "<pre><center>\n" + Lang[90] +"\n\n </center></pre>"; // Non free channel message switchtimer.style.opacity = 1; CAdelayID = setTimeout("switchtimer.style.opacity = 0; ",ShowSetTimer); } } } function startTimeshiftBuffering() { // check that media player is working if (mediaPlayer.getState() != mediaPlayer.STATE_PLAYING ) { alert("Media Player must be playing when starting timeshift buffering!"); return; } mediaPlayer.startTimeshiftBuffering(600); } function FullScreen() { videoplane.style.width = "100%"; videoplane.style.height = "100%"; videoplane.style.left = "0px"; videoplane.style.top = "0px"; if(PipSwitchGuide){ if (pipPlayer.getState() != pipPlayer.STATE_IDLE) { pipPlayer.close(); } } } function onKeyDown(event) { if(isVisible) { onKeyTeletext(event.keyIdentifier); } else if(isSetupMenu) { onKeyMenu(event.keyIdentifier); } else if(isMediaMenu) { onKeyMedia(event.keyIdentifier); } else { switch(event.keyIdentifier) { case "ChannelUp": case "Up": if(isFullscreen) { count = 0; Change = 0; prevChan = currChan; do { incChan(1); } while (!channels[currChan]); play(channels[currChan]); } else { // swap up <> down in guide mode count = 0; Change = 0; do { decChan(1); } while (!channels[currChan]); preview(channels[currChan]); } break; case "ChannelDown": case "Down": if(isFullscreen) { count = 0; Change = 0; prevChan = currChan; do { decChan(1); } while (!channels[currChan]); play(channels[currChan]); } else { // swap up <> down in guide mode count = 0; Change = 0; do { incChan(1); } while (!channels[currChan]); preview(channels[currChan]); } break; case "Left": count = 0; Change = 0; if(isFullscreen) { defChan[ChanGroup] = currChan; do { do ChanGroup -= 1; while (protChn[ChanGroup] == 1 && ShowProtectedChannels == 1) if (ChanGroup < 0) { ChanGroup = 9; } } while (!minChan[ChanGroup]); currChan = defChan[ChanGroup]; play(channels[currChan]); } else { prevChan = currChan; if (currChan > (minChan[ChanGroup] + 8)) { decChan(9); } else { currChan = baseChn[ChanGroup] + (maxChan[ChanGroup] - currChan); } do { decChan(1); } while (!channels[currChan]); preview(channels[currChan]); } break; case "Right": count = 0; Change = 0; if(isFullscreen) { defChan[ChanGroup] = currChan; do { do ChanGroup += 1; while (protChn[ChanGroup] == 1 && ShowProtectedChannels == 1) if (ChanGroup > 9) { ChanGroup = 0; } } while (!minChan[ChanGroup]); currChan = defChan[ChanGroup]; play(channels[currChan]); } else { prevChan = currChan; if (currChan < (maxChan[ChanGroup] - 9 )) { incChan(9); } else { currChan = baseChn[ChanGroup] + (maxChan[ChanGroup] - currChan); } do { incChan(1); } while (!channels[currChan]); preview(channels[currChan]); } break; case "Red": if(isFullscreen) { if(showClock == 0 ) { showDisplay("", true, 80, 1 ); showClock = 1; } else if(showClock == 1 ) { showClock = 0; showDisplay(Right(currChan.toString(),4), false, 100, 0 ); } } else if(isSchedule == 0){ if(NowNext) { settimer(EPG[NowNext][2][currChan],EPG[NowNext][1][currChan],0,1); } } break; case "Green": if(isFullscreen) { if(!epgactive) { if (audio_dyn < (lang_prio_dyn.length -1)) { audio_dyn += 1} else { audio_dyn = 0 } if (lang_prio_dyn.length > 1) { is.setObject("cfg.media.audio.languagepriority",lang_prio_dyn[audio_dyn] + "," + lang_prio[audio],is.STORAGE_PERMANENT); osdlang.style.opacity = 1; osdlang.innerHTML = "<img src='unmute.png'> " + lang_prio_dyn[audio_dyn] + " "; setTimeout("osdlang.style.opacity = 0; ", 3000); } } } else if(isSchedule == 0 && !epgactive){ colorkeys.innerHTML = "<font color=red> " + NN[3 + NowNext] + " </font><font color=green> " + NN[NowNext] + " </font><font color=yellow> " + NN[2] + " </font><font color=blue> " + NN[5] + " </font>"; NowNext = 1 - NowNext; showChannelList(); } if(epgactive) { NowNext = 1 - NowNext; osdepginfo.style.opacity = 1 - osdepginfo.style.opacity ; osdepginfonext.style.opacity = 1 - osdepginfo.style.opacity; } break; case "Yellow": if(isFullscreen) { if(epgactive) { osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; epgactive = 0; } mediaList.style.opacity = 0.9; set_yellow_key = 1; setTimeout("getSchedule(currChan);LoadMediaSettings();",100); } else { GetSchedule(currChan,15); schedule.style.opacity = 1 - schedule.style.opacity; isSchedule = schedule.style.opacity; if(isSchedule == 1){ colorkeys.innerHTML = "<font color=red> " + NN[4] + " </font><font color=green> " + NN[4] + " </font><font color=yellow> " + NN[6] + " </font><font color=blue> " + NN[4] + " </font>"; } else { colorkeys.innerHTML = "<font color=red> " + NN[3 + (1 - NowNext)] + " </font><font color=green> " + NN[1 - NowNext] + " </font><font color=yellow> " + NN[2] + " </font><font color=blue> " + NN[5] + " </font>"; } } break; case "Info": case "Blue": // if(isFullscreen) { // RestartPortal(); // } else if(isSchedule == 0) { if(!epgactive) { updateOSDtime(currChan); SetOsdInfo(); if(isFullscreen) { NowNext = 0;} if (NowNext) { osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 1; } else { osdepginfo.style.opacity = 1; osdepginfonext.style.opacity = 0; } epgactive = 1; } else { osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; epgactive = 0; } // setTimeout("epgactive = 0; osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0;", 5000); } break; case "BrowserBack": if(count) { count = 0; osdnr.style.opacity = 0; if(isFullscreen) { showDisplay(Right(currChan.toString(),4), false, 100, 0 ); } Change = 0; } else { if(isSchedule) { isSchedule = 0; schedule.style.opacity = 0; break; } if(isFullscreen) { //SHOW epg info if(!epgactive) { // SetOsdInfo(); // osdepginfo.style.opacity = 1; // osdepginfonext.style.opacity = 0; // epgactive = 1; } else { osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; epgactive = 0; } // setTimeout("epgactive = 0; osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0;", 5000); } else if(!isFullscreen){ osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; epgactive = 0; isFullscreen = 1; FullScreen(); currChan = preChan; ChanGroup = preGrp; } } break; case "Enter": // OK key on frontpanel case "Accept": if(isFullscreen) { // fullscreen if (osdmain.style.opacity !== 0) {opacity = 0; OSD(opacity);} if(count == 0) { if (osdtimeout) { clearTimeout(osdtimeout); osdtimeout = 0; opacity = 0; OSD(opacity); break; } osdepg.innerHTML = ""; showOSD(); GetEPG(currChan); updateOSDtime(currChan); osdepg.innerHTML = "<p>" + EPG[0][7][currChan] + "</p>\n<p>" + EPG[1][7][currChan] + "</p>"; // showOSD(); } else { CheckChannel(Change); count = 0; if(ChangeOK) { play(channels[currChan]); ChangeOK = 0; } } } else { // if not fullscreen if(count){ CheckChannel(Change); count = 0; if(ChangeOK) { preview(channels[currChan]); ChangeOK = 0; } } else { isFullscreen = 1; FullScreen(); if(isSchedule) { isSchedule = 0; schedule.style.opacity = 0; } play(channels[currChan]); } } break; case "Menu": if(isFullscreen) { if(count) { count = 0; osdnr.style.opacity = 0; showDisplay(Right(currChan.toString(),4), false, 100, 0 ); Change = 0; } osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; isSetupMenu = 1; mainmenu.style.opacity = 0.8; menu = 0; InitMenu(menu); } break; case KEY_FAV: case "Scroll": if(isFullscreen) { NowNext = 0; videoplane.style.width = (320*Xfactor[Set_Res])+"px"; videoplane.style.height = (240*Yfactor[Set_Res])+"px"; videoplane.style.left = (380*Xfactor[Set_Res])+"px"; videoplane.style.top = (300*Yfactor[Set_Res])+"px"; isFullscreen = 0; ClearScreen(); channelList.style.opacity = 1; colorkeys.innerHTML = "<font color=red> " + NN[3 + (1 - NowNext)] + " </font><font color=green> " + NN[1 - NowNext] + " </font><font color=yellow> " + NN[2] + " </font><font color=blue> " + NN[5] + " </font>"; colorkeys.style.opacity = 1; showChannelList(); if(!SwitchGuide) { preChan = currChan; preGrp = ChanGroup; } } else { isSchedule = 0; schedule.style.opacity = 0; isFullscreen = 1; FullScreen(); if(!SwitchGuide) { currChan = preChan; ChanGroup = preGrp; } } break; case "TV": case "RADIO": if(isFullscreen) { if(ChanGroup !== 9) { //Radio defChan[ChanGroup] = currChan; ChanGroup = 9; currChan = defChan[9]; } else { //TV defChan[ChanGroup] = currChan; ChanGroup = 0; currChan = defChan[0]; } isSetupMenu = 0; mainmenu.style.opacity = 0; play(channels[currChan]); } break; case KEY_0: digit = 0; Makedigit(); break; case KEY_1: digit = 1; Makedigit(); break; case KEY_2: digit = 2; Makedigit(); break; case KEY_3: digit = 3; Makedigit(); break; case KEY_4: digit = 4; Makedigit(); break; case KEY_5: digit = 5; Makedigit(); break; case KEY_6: digit = 6; Makedigit(); break; case KEY_7: digit = 7; Makedigit(); break; case KEY_8: digit = 8; Makedigit(); break; case KEY_9: digit = 9; Makedigit(); break; case KEY_A:// |> key on old long kpn 1710/1760 remote break; case KEY_B:// hh key on old long kpn 1710/1760 remote if (prevChan !== currChan) { currChan = [prevChan, prevChan = currChan][0]; count = 0; play(channels[currChan]); } break; case KEY_C:// @ key on old long kpn 1710/1760 remote if(isFullscreen && Fav_max_channel !== 0 && ChanGroup !== Fav_group) { timerID = (defChan[Fav_group] - Fav_base - 1); if (timerID < 0) { timerID = 0;} maxTimers = Fav_max_channel; GotoFav(defChan[Fav_group]); } else if(isFullscreen && ChanGroup == Fav_group) { timerID = (currChan - Fav_base - 1); } if(isFullscreen && Fav_max_channel !== 0) { if(count) { count = 0; osdnr.style.opacity = 0; showDisplay(Right(currChan.toString(),4), false, 100, 0 ); Change = 0; } osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; isSetupMenu = 1; mainmenu.style.opacity = 0.8; menu = 10; InitMenu(menu); } break; case KEY_D:// >@ key on old long kpn 1710/1760 remote if (protChn[ChanGroup] !== 1 && ChanGroup !== Fav_group) { AddtoFav(); } break; case "Teletext": if(isFullscreen) { ClearScreen(); isVisible = 1; setVisible(isVisible); } break; case "VolumeMute": VolumeMute(); break; case "VolumeUp": VolumeUp(); break; case "VolumeDown": VolumeDown(); break; case "MediaRewind": if(isFullscreen) { mediaPlayer.play(mediaPlayer.PACE_REWIND); } else { count = 0; Change = 0; defChan[ChanGroup] = currChan; do { do ChanGroup -= 1; while (protChn[ChanGroup] == 1 && ShowProtectedChannels == 1) if (ChanGroup < 0) { ChanGroup = 9; } } while (!minChan[ChanGroup]); currChan = defChan[ChanGroup]; preview(channels[currChan]); } break; case "MediaForward": if(isFullscreen) { mediaPlayer.play(mediaPlayer.PACE_FASTFORWARD); } else { count = 0; Change = 0; defChan[ChanGroup] = currChan; do{ do ChanGroup += 1; while (protChn[ChanGroup] == 1 && ShowProtectedChannels == 1) if (ChanGroup > 9) { ChanGroup = 0; } } while (!minChan[ChanGroup]); currChan = defChan[ChanGroup]; preview(channels[currChan]); } break; case "MediaPlayPause": if(isFullscreen && PauseOnServer) { if(mediaPlayer.getState() == mediaPlayer.STATE_PLAYING) { isPause = 1; ServerPause(); SetLed(1,1,10); // setTimeout("mediaPlayer.play(0);",5000); mediaPlayer.play(0); break; } if(mediaPlayer.getState() == mediaPlayer.STATE_PAUSED || mediaPlayer.getState() == mediaPlayer.STATE_FASTFORWARDING || mediaPlayer.getState() == mediaPlayer.STATE_REWINDING) { SetLed(1,1,0); mediaPlayer.play(mediaPlayer.PACE_PLAY); break; } } if(TimeShift){ if(mediaPlayer.getState() == mediaPlayer.STATE_PAUSED || mediaPlayer.getState() == mediaPlayer.STATE_FASTFORWARDING || mediaPlayer.getState() == mediaPlayer.STATE_REWINDING) { SetLed(1,1,0); mediaPlayer.play(mediaPlayer.PACE_PLAY); break; } if(mediaPlayer.getState() == mediaPlayer.STATE_PLAYING) { SetLed(1,1,10); mediaPlayer.play(0); break; } } break; case "MediaStop": if (isRecording == 1) { recordStop(); isRecording = 0; } else { try { SetLed(1,1,0); if(TimeShift){ mediaPlayer.playFromPosition(mediaPlayer.POSITION_LIVE,mediaPlayer.PACE_PLAY); } } catch(e) { alert(e); } } break; case KEY_REC: case "MediaRecord": if(isSchedule == 0) { if(epgactive) { ServerTimer(channels[currChan],EPG[NowNext][6][currChan]); settimer(EPG[NowNext][2][currChan],EPG[NowNext][1][currChan],(EPG[NowNext][3][currChan]*60),2); } else { ServerRecordStart(); } } // if(isFullscreen && !epgactive) { // ServerRecordStart(); // } else if(isSchedule == 0){ // if(NowNext) { // } else { // // make timer for recording // ServerTimer(channels[currChan],EPG[NowNext][6][currChan]); // settimer(EPG[NowNext][2][currChan],EPG[NowNext][1][currChan],(EPG[NowNext][3][currChan]*60),2); // } else { // ServerRecordStart(); // } // } break; case KEY_OPNAMES: case KEY_FILM: if (smartTVplugin) { // jump to recordings menu. if(isFullscreen) { if(count) { count = 0; osdnr.style.opacity = 0; showDisplay(Right(currChan.toString(),4), false, 100, 0 ); Change = 0; } osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; mediaList.style.opacity = 0.9; mainmenu.style.opacity = 0; recPath = "/recordings.xml"; setTimeout("getRecList();LoadMediaSettings();",100); } break; } default: break; } } } function GotoFav(ChanID) { count = 0; Change = 0; prevChan = ""; Fav_key1 = ""; defChan[ChanGroup] = currChan; ChanGroup = Fav_group; currChan = ChanID; play(channels[currChan]); } function AddtoFav() { Fav_max_channel += 1; maxChan[Fav_group] = Fav_base + Fav_max_channel; channelsnames[(Fav_base + Fav_max_channel)] = channelsnames[currChan]; channels[(Fav_base + Fav_max_channel)] = channels[currChan]; is.setObject(("vip.channelsnames." + Fav_max_channel),channelsnames[currChan],is.STORAGE_PERMANENT) is.setObject(("vip.channels." + Fav_max_channel),channels[currChan],is.STORAGE_PERMANENT) is.setObject("vip.fav_max_channel",Fav_max_channel.toString(),is.STORAGE_PERMANENT) settimer(0,channels[currChan],Fav_max_channel ,2); } function Read_Fav() { Fav_max_channel = Number(is.getObject("vip.fav_max_channel")); maxChan[Fav_group] = Fav_base + Fav_max_channel; for (var i=1; i<=Fav_max_channel; i++) { channelsnames[(i+Fav_base)] = is.getObject(("vip.channelsnames." + i)); channels[(i+Fav_base)] = is.getObject(("vip.channels." + i)); } } function Makedigit() { prevChan = currChan; Change = (Change*10) + digit; count += 1; osdnr.style.opacity = isFullscreen; OSDchannr(Change); if(isFullscreen) { showDisplay((Change.toString()), false, 100, 0 ); } if (count>channeldigits) { CheckChannel(Change); count = 0; } if(ChangeOK) { if(isFullscreen) { play(channels[currChan]); } else { preview(channels[currChan]); } ChangeOK = 0; } } function CheckChannel(CheckThis) { // function to check if channel exists CheckThis = baseChn[ChanGroup] + CheckThis; if(channels[CheckThis]) { ChangeOK = 1; currChan = CheckThis; } else { ChangeOK = 0; } if(prevChan == currChan) { ChangeOK = 0 ; } osdnr.style.opacity = 0; if(isFullscreen) { showDisplay(Right(currChan.toString(),4), false, 100, 0 ); } Change = 0; } function showDisplay(showtxt,colonState,intensity,currentMode) { if(!showClock){ fps.setSegmentDisplayState(toi.statics.ToiFrontPanelServiceSegmentDisplayState.create(showtxt,colonState,intensity,currentMode)); } } function SetLed(NumLed,color,blinkfreq){ var state = toi.statics.ToiFrontPanelServiceLedState.create(color, blinkfreq); fps.setLedState(NumLed, state); } function showOSD() { if (osdtimeout) { clearTimeout(osdtimeout); } SetOsdInfo(); opacity = 1; OSD(opacity); osdtimeout = setTimeout("fadeOut(); osdtimeout = 0;", ShowOsdTime); } function showVolume() { if (osdVolumetimeout) { clearTimeout(osdVolumetimeout); } osdvolume.innerHTML = Lang[1] + " : " + Volume + "% \uE007" + (new Array(Volume)).join("\uE008") + (new Array(100 - Volume)).join("\uE009") + "\uE00A"; osdvolume.style.opacity = 1; osdVolumetimeout = setTimeout("osdvolume.style.opacity = 0;", ShowOsdTime); } function OSD(opacity) { osdmain.style.opacity = opacity; osdnr.style.opacity = opacity; osdtime.style.opacity = opacity; osdname.style.opacity = opacity; osdepg.style.opacity = opacity; osdca.style.opacity = opacity; osdtimer.style.opacity = opacity; } function SetOsdInfo() { OSDchannr(currChan); date_time(); OSDhtml(); return; } function onCacheUpdated() { GetEPG(currChan); if (osdtimeout) { SetOsdInfo(); } } function OSDchannr(channr) { osdnr.innerHTML = "<center>" + Right(channr,3) + "</center>"; // Show logo's // if (experimental) { // osdnr.innerHTML = "<img src='" + channels[currChan] + ".logo.jpg' style='width:80%; max-height:100%; position:absolute; left:10%;' >"; // } } function OSDhtml(){ osdtime.innerHTML = result; if (ShowSource == 1) { osdname.innerHTML = channels[currChan].split("-")[0] + "\uE003" + Left(channelsnames[currChan],30); } else { osdname.innerHTML = Left(channelsnames[currChan],30); } osdepg.innerHTML = "<p>" + EPG[0][7][currChan] + "</p>\n<p>" + EPG[1][7][currChan] + "</p>"; osdepginfo.innerHTML = "<center><p style='" + color_epg_head + ";' >" + currChan + "\uE003" + channelsnames[currChan] + "</p><p style='" + color_epg_avinfo + ";' >" + AvInfo[currChan] + "</p><p style='" + color_epg_title + ";'>" + EPG[0][7][currChan] + EPG[0][9][currChan] + EPG[0][8][currChan] + "</p>\n<p style='" + color_epg_info + ";'>" + EPG[0][4][currChan] + "</p>\n<p>" + Left(EPG[0][5][currChan],750) + "</p></center>"; osdepginfonext.innerHTML = "<center><p style='" + color_epg_head + ";'>" + currChan + "\uE003" + channelsnames[currChan] + "</p><p style='" + color_epg_title + ";'>" + EPG[1][7][currChan] + EPG[1][9][currChan] + EPG[1][8][currChan] + "</p>\n<p style='" + color_epg_info + ";'>" + EPG[1][4][currChan] + "</p>\n<p>" + Left(EPG[1][5][currChan],750) + "</p></center>"; } function updateOSDtime(timchan) { tijd = EPG[0][2][timchan]; date = new Date(tijd*1000); tijd = date.toUTCString(); tijd = new Date(tijd); dateCurrent = new Date(); var EPGminutes = Math.floor((dateCurrent.getTime() - date.getTime()) /1000/60); var tm = tijd.getMinutes(); var th = tijd.getHours(); th=addzero(th); tm=addzero(tm); EPG[0][7][timchan] = th + ":" + tm + " (" + EPGminutes + " / " + ((EPG[0][3][timchan])-EPGminutes).toFixed(0) + ")" + " " + EPG[0][1][timchan] + " "; if (!EPG[0][2][timchan] || ((EPG[0][3][timchan]-EPGminutes) < 0)) { EPG[0][7][timchan] = " "; } } function settimer(ProgTime,ProgName,ProgDura,SwitchTimer) { // 1 - switchonly, 2 - record on server (display info only), 3 - record local if(SwitchTimer == 1) { try { switchtimerID = ss.schedule("SwitchOnly","notification", ProgTime , 0); ss.setParameter(switchtimerID, "Channel", currChan.toString() ); } catch (e) { alert(e); } } else if(SwitchTimer == 3) { try { var x = ss.schedule("RecLocal","record_hd_from_ip", ProgTime , ProgDura); ss.setParameter(x, "Channel", currChan.toString() ); ss.setParameter(x, "Title", ProgName ); } catch (e) { alert(e); } } if ( ProgTime == 0 && SwitchTimer == 2 && ProgDura !== 0 ) { var x = Lang[3] + ProgDura + "</pre>"; } else if ( ProgTime == 0 && SwitchTimer == 2) { var x = "</pre>"; } else { tijd = ProgTime; date = new Date(tijd*1000); tijd = date.toUTCString(); tijd = new Date(tijd); var tm = tijd.getMinutes(); var th = tijd.getHours(); th=addzero(th); tm=addzero(tm); var x = Lang[4] + th + ":" + tm + "</pre>"; } switchtimer.innerHTML = "<pre>" + Lang[2] + Left(ProgName,30) + "\n" + Lang[3] + channelsnames[currChan] + "\n" + x; setOSDtimer(); switchtimer.style.opacity = 1; setTimeout("switchtimer.style.opacity = 0; ", ShowSetTimer); } function setOSDtimer() { // Only for type "SwitchOnly" var today = new Date; today = today / 1000; var x = ss.getBookingIds("SwitchOnly", today, 0) if (x.length !== 0) { tijd = ss.getNextStartTime("SwitchOnly"); date = new Date(tijd*1000); tijd = date.toUTCString(); tijd = new Date(tijd); var tm = tijd.getMinutes(); var th = tijd.getHours(); th=addzero(th); tm=addzero(tm); osdtimer.innerHTML = "<p style='" + color_osdtimer + ";font-size:" + fsList + ";'>" + th + ":" + tm + "</p>"; SetLed(0,2,1); switchicon = "\uE00C"; osdca.innerHTML = CAicon + switchicon + RECicon; } else { osdtimer.innerHTML = " "; SetLed(0,0,0); switchicon = '\uE003'; osdca.innerHTML = CAicon + switchicon + RECicon; } } // Left n characters of str function Left(str, n){ if (n <= 0) return ""; else if (n > String(str).length) return str; else return String(str).substring(0,n); } // Right n characters of str function Right(str, n){ if (n <= 0) return ""; else if (n > String(str).length) return str; else { var iLen = String(str).length; return String(str).substring(iLen, iLen - n); } } function fadeIn() { opacity += 0.2; OSD(opcity); if (opacity >= 1) { setTimeout("fadeOut()", 200); return; } setTimeout("fadeIn()", 100); } function fadeOut() { opacity -= 0.5; OSD(opacity); if (opacity <= 0) { return; } setTimeout("fadeOut()", 100); } function RestartPortal(){ try { ids = toi.applicationService.getApplicationIds(); for ( i = 0; i < ids.length; ++i ){ info = toi.applicationService.getInfo(ids[i]); if (info.applicationName == "WebKit Portal"){ dump("Killing app " + ids[i] + ": " + info.applicationName); toi.applicationService.kill(ids[i]); } } } catch(e) { dump(e) }; } function date_time() { date = new Date; year = date.getFullYear(); month = date.getMonth(); d = date.getDate(); day = date.getDay(); h = date.getHours(); m = date.getMinutes(); h=addzero(h); m=addzero(m); result = ''+days[day]+' '+d+' '+months[month]+' '+year+' '+h+':'+m; return; } function date_time_rec() { date = new Date(Number(recStrt[currMed])*1000); year = date.getFullYear(); month = date.getMonth(); month = addzero(month + 1); d = date.getDate(); d = addzero(d); day = date.getDay(); h = date.getHours(); m = date.getMinutes(); h = addzero(h); m = addzero(m); if (year!==1970) { result = ' ' + d + '-' + month + '-' + year + ' ' + h + ':' + m; } else { result = ""; } return; } // EPG Section function GetEPG(epgchan) { EPG[0][7][epgchan] = ""; EPGShortnow = ""; EPGExtnow = ""; EPG[1][7][epgchan] = ""; EPGShortnext = ""; EPGExtnext = ""; SI=""; try { eitCache.clearServices(); StreamInfo(epgchan); eitService = toi.statics.ToiDvbEitCacheServiceItem.create(SI[1],SI[2],SI[3]); eitCache.addService(eitService); event = eitCache.getPresentEvent(eitService); if(event.freeCaMode){ CAicon = "\uE00D"; } else { CAicon = Radioicon; } osdca.innerHTML = CAicon + switchicon + RECicon; if (event.name) { events = eitCache.getEvents(eitService, (Math.round(new Date().getTime()/1000.0)), 2000000000); extEventsnow = eitCache.getExtendedEventInfo(eitService, events.infoSequence[0].eventId); EPGShortnow = extEventsnow.shortInfo; EPGExtnow = extEventsnow.extendedInfo; Extok = 1; } else { Extok = 0; } EPG[0][1][epgchan] = event.name; EPG[0][2][epgchan] = event.time; EPG[0][3][epgchan] = (event.duration/60); EPG[0][4][epgchan] = ""; EPG[0][5][epgchan] = ""; EPG[0][6][epgchan] = event.eventId; if (event.parentalRating) { EPG[0][8][epgchan] = "<br>(" + Lang[5] + (event.parentalRating + 3) + " )"; } else { EPG[0][8][epgchan] = ""; } if (event.contentNibbles) { connib = event.contentNibbles; Nibbles(); EPG[0][9][epgchan] = "<br>" + content; } else { EPG[0][9][epgchan] = ""; } if(EPGShortnow) { EPG[0][4][epgchan] = EPGShortnow; } else { EPG[0][4][epgchan] = ""; } if(EPGExtnow) { EPG[0][5][epgchan] = EPGExtnow; } else { EPG[0][5][epgchan] = ""; } if (EPG[0][5][epgchan] = EPG[0][4][epgchan]) { EPG[0][5][epgchan] = "";} updateOSDtime(epgchan); event = eitCache.getFollowingEvent(eitService); if (Extok) { for (var i = 0; i < events.infoSequence.length && i < 4; i++) { extEvents = eitCache.getExtendedEventInfo(eitService, events.infoSequence[i].eventId); if (extEvents.eventId == event.eventId) { EPGShortnext = extEvents.shortInfo; EPGExtnext = extEvents.extendedInfo; } } } EPG[1][1][epgchan] = event.name; EPG[1][2][epgchan] = event.time; EPG[1][3][epgchan] = (event.duration/60); EPG[1][4][epgchan] = ""; EPG[1][5][epgchan] = ""; EPG[1][6][epgchan] = event.eventId; if (event.parentalRating) { EPG[1][8][epgchan] = "<br>(" + Lang[5] + (event.parentalRating + 3) + " )"; } else { EPG[1][8][epgchan] = ""; } if (event.contentNibbles) { connib = event.contentNibbles; Nibbles(); EPG[1][9][epgchan] = "<br>" + content; } else { EPG[1][9][epgchan] = ""; } if(EPGShortnext) { EPG[1][4][epgchan] = EPGShortnext; } else { EPG[1][4][epgchan] = ""; } if(EPGExtnext) { EPG[1][5][epgchan] = EPGExtnext; } else { EPG[1][5][epgchan] = ""; } if (EPG[1][5][epgchan] = EPG[1][4][epgchan]) { EPG[1][5][epgchan] = "";} tijd = event.time; date = new Date(tijd*1000); tijd = date.toUTCString(); tijd = new Date(tijd); var tm = tijd.getMinutes(); var th = tijd.getHours(); th=addzero(th); tm=addzero(tm); EPG[1][7][epgchan] = th + ":" + tm + " (" + (event.duration/60).toFixed(0) + ")" + " " + event.name + " "; if (!event.time) { EPG[1][7][epgchan] = " "; } } catch(e) { alert("Get EPG problem: " + e); CAicon = "\uE01A"; } } function Nibbles() { content = ""; if (connib >= 0x00001000 && connib < 0x00002000) { content = CLang[0]; } if (connib >= 0x00002000 && connib < 0x00003000) { content = CLang[10]; } if (connib >= 0x00003000 && connib < 0x00004000) { content = CLang[20]; } if (connib >= 0x00004000 && connib < 0x00005000) { content = CLang[30]; } if (connib >= 0x00005000 && connib < 0x00006000) { content = CLang[40]; } if (connib >= 0x00006000 && connib < 0x00007000) { content = CLang[50]; } if (connib >= 0x00007000 && connib < 0x00008000) { content = CLang[60]; } if (connib >= 0x00008000 && connib < 0x00009000) { content = CLang[70]; } if (connib >= 0x00009000 && connib < 0x0000A000) { content = CLang[80]; } if (connib >= 0x0000A000 && connib < 0x0000B000) { content = CLang[90]; } if (connib >= 0x0000B000 && connib < 0x0000C000) { content = CLang[100]; } // alert(connib); } function GetSchedule(schchan,tablelength){ //Old style Schedule, used in Guide View. SI = ""; try { StreamInfo(schchan); eitService = toi.statics.ToiDvbEitCacheServiceItem.create(SI[1],SI[2],SI[3]); eitCache.addService(eitService); event = eitCache.getPresentEvent(eitService); events = eitCache.getEvents(eitService, (Math.round(new Date().getTime()/1000.0)), 2000000000); if (event.name) { if (events.more) { var t = eitCache.getEvents(eitService, (Math.round(new Date().getTime()/1000.0)), 2000000000); events.infoSequence.concat(t.infoSequence); events.more = t.more; } var txt = "<table><tr>"; var i = 0; for (i = 0; i < events.infoSequence.length && i < tablelength; i++) { while ((i > 0) && (events.infoSequence[i].eventId == events.infoSequence[(i-1)].eventId)) { i = i + 1; } tijd = events.infoSequence[i].time; date = new Date(tijd*1000); tijd = date.toUTCString(); tijd = new Date(tijd); var tm = tijd.getMinutes(); var th = tijd.getHours(); th=addzero(th); tm=addzero(tm); txt = txt + "<td style='font-size:" + fsSchedList + ";" + color_sched_font + ";'>\uE003\uE003\uE003\uE003\uE003" + th + ":" + tm + " (" + (events.infoSequence[i].duration/60).toFixed(0) + ") " + Left(events.infoSequence[i].name,30) + "</td></tr>"; } txt = txt + "</table>"; schedule.innerHTML = "<p style='" + color_sched_head + ";font-size:" + fsSched + ";'>" + "\uE003" + schchan + "\uE003" + channelsnames[schchan] + txt + "</p>"; } else { schedule.innerHTML = "<p style='" + color_sched_head + ";font-size:" + fsSched + ";'>" + "\uE003" + schchan + "\uE003" + channelsnames[schchan] + "</p>"; } } catch(e) { alert("Get EPG problem: " + e); schedule.innerHTML = "<p style='" + color_sched_head + ";font-size:" + fsSched + ";'>" + "\uE003" + schchan + "\uE003" + channelsnames[schchan] + "</p><p>" + Lang[6] + "</p>"; } } function StreamInfo(si) { // EPG Filter // streaminfo // SI[x] 0-sat,1-NID,2-TID,3-SID SI=channels[si].split("-"); //default setting : English is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); if(SI[0]=="C") { // Default on Cable - Dutch // Ziggo. is.setObject("cfg.locale.ui","dut",is.STORAGE_VOLATILE); } if(SI[0]=="T") { // DVB-T default German. is.setObject("cfg.locale.ui","ger",is.STORAGE_VOLATILE); } if(SI[1]=="8720") { // KPN DVB-T (might also be used for some german) is.setObject("cfg.locale.ui","dut",is.STORAGE_VOLATILE); } if(SI[0]=="S19.2E") { // Default on 19E German. is.setObject("cfg.locale.ui","ger",is.STORAGE_VOLATILE); } if(SI[0]=="S28.2E") { // Default on 28E English is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if(SI[0]=="S42.0E") { is.setObject("cfg.locale.ui","tur",is.STORAGE_VOLATILE); } if(SI[0]=="S42.0E" && SI[3]=="3601") { is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if(SI[1]=="133") { //sky deutchland is.setObject("cfg.locale.ui","DEU",is.STORAGE_VOLATILE); } if(SI[2]=="1107") { //Sat1/pro7 deutchland is.setObject("cfg.locale.ui","DEU",is.STORAGE_VOLATILE); } // if(SI[2]=="1057") { // //RTL HD transponder // is.setObject("cfg.locale.ui","GER",is.STORAGE_VOLATILE); // } // if(SI[2]=="1057" && SI[3]=="61204") { // //Sport1 HD (daytime only?) // is.setObject("cfg.locale.ui","DEU",is.STORAGE_VOLATILE); // } if(SI[2]=="1055" || SI[2]=="1053" || SI[2]=="1041" || SI[2]=="1017" || SI[2]=="1109") { //HD+ transponder is.setObject("cfg.locale.ui","DEU",is.STORAGE_VOLATILE); } if(SI[0]=="S13.0E" && (SI[2]=="1600" || SI[2]=="1000" || SI[2]=="1500" || SI[2]=="1300" || SI[2]=="300" || SI[2]=="1100" )) { //NC+ (Polish) is.setObject("cfg.locale.ui","pol",is.STORAGE_VOLATILE); } if(SI[0]=="S13.0E" && (SI[2]=="11200" || SI[2]=="400" || SI[2]=="12000" || SI[2]=="11400" || SI[2]=="11900" || SI[2]=="11600" )) { //NC+ (Polish) is.setObject("cfg.locale.ui","pol",is.STORAGE_VOLATILE); } if(SI[0]=="S13.0E" && (SI[2]=="11000" || SI[2]=="1400")) { //NC+ (Polish) is.setObject("cfg.locale.ui","pol",is.STORAGE_VOLATILE); } if(SI[1]=="113") { //PolSat is.setObject("cfg.locale.ui","pol",is.STORAGE_VOLATILE); } if((SI[0]=="S19.2E" && SI[2]=="1059") ) { //TVP transponder is.setObject("cfg.locale.ui","pol",is.STORAGE_VOLATILE); } if(SI[1]=="64511") { //sky Italia is.setObject("cfg.locale.ui","ita",is.STORAGE_VOLATILE); } if(SI[0]=="S13.0E" && (SI[2]=="5400" || SI[2]=="12400" || SI[2]=="65419" || SI[2]=="65417" )) { //Rai Italia is.setObject("cfg.locale.ui","ita",is.STORAGE_VOLATILE); } if(SI[1]=="53" || (SI[0]=="S19.2E" && SI[2]=="1037") ) { //Canal Digitaal/ TV Vlaanderen is.setObject("cfg.locale.ui","dut",is.STORAGE_VOLATILE); } if(SI[1]=="53" && (SI[3]=="2042" || SI[3]=="2043" )) { //Canal Digitaal/ TV Vlaanderen is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if(SI[1]=="53" && (SI[3]=="2045") ) { //Canal Digitaal/ TV Vlaanderen is.setObject("cfg.locale.ui","fra",is.STORAGE_VOLATILE); } if(SI[1]=="54") { //ZON / 30W is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if(SI[1]=="83") { //MEO / 30W is.setObject("cfg.locale.ui","por",is.STORAGE_VOLATILE); } if(SI[1]=="49") { //Digital 30W is.setObject("cfg.locale.ui","spa",is.STORAGE_VOLATILE); } if(SI[1]=="3" && ( SI[2]=="3202" || SI[2]=="3208" || SI[2]=="3211" || SI[2]=="3222" || SI[2]=="3225") ) { //Canal Digitaal/ TV Vlaanderen (NID:3 is used for more than only CDS/TVV on 23East) is.setObject("cfg.locale.ui","dut",is.STORAGE_VOLATILE); } if(SI[1]=="3" && SI[2]=="3208" && SI[3]=="7037") { // Some other EPG is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if(SI[1]=="3" && ( SI[2]=="3217") ) { // 23E - Deluxe HD is.setObject("cfg.locale.ui","DEU",is.STORAGE_VOLATILE); } if(SI[1]=="3" && SI[2]=="3212" && ( SI[3]=="14052" || SI[3]=="14055" ) ) { is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if(SI[1]=="3" && ( SI[2]=="3205" || SI[2]=="3209" || SI[2]=="3210" || SI[2]=="3221" || SI[2]=="3219" || SI[2]=="3226")) { //Canal Digitaal/ TV Vlaanderen use CZE channels on 23East // Strangly set filter to cze but epg is in Dutch. (But not for JimJam) is.setObject("cfg.locale.ui","cze",is.STORAGE_VOLATILE); } if(SI[1]=="3" && SI[2]=="3219" && SI[3]=="13135" ) { //JimJam Dutch is.setObject("cfg.locale.ui","dut",is.STORAGE_VOLATILE); } if(SI[1]=="3" && SI[2]=="3211" && ( SI[3]=="20863" || SI[3]=="20865") ) { //MGM & Film+ CZ is.setObject("cfg.locale.ui","cze",is.STORAGE_VOLATILE); } if((SI[0]=="S13.0E" && SI[3]=="14003") || (SI[0]=="S13.0E" && SI[3]=="14009") || (SI[0]=="S13.0E" && SI[3]=="14051") || (SI[0]=="S13.0E" && SI[3]=="951")) { //Swiss ITA channels is.setObject("cfg.locale.ui","ita",is.STORAGE_VOLATILE); } if((SI[0]=="S13.0E" && SI[2]=="12800")) { is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if((SI[0]=="S13.0E" && SI[3]=="14002") || (SI[0]=="S13.0E" && SI[3]=="14008") || (SI[0]=="S13.0E" && SI[3]=="17203") || (SI[0]=="S13.0E" && SI[3]=="17204") ) { //Swiss FRA channels is.setObject("cfg.locale.ui","fra",is.STORAGE_VOLATILE); } if((SI[0]=="S13.0E" && SI[3]=="17201") || (SI[0]=="S13.0E" && SI[3]=="17202") || (SI[0]=="S13.0E" && SI[3]=="901") || (SI[0]=="S13.0E" && SI[3]=="907") || (SI[0]=="S13.0E" && SI[3]=="911") ) { //Swiss GER channels is.setObject("cfg.locale.ui","ger",is.STORAGE_VOLATILE); } if((SI[0]=="S19.2E" && SI[2]=="1111" && SI[3]=="7290") ) { //Sky News on WDR HD transponder is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if(SI[0]=="S19.2E" && ( (SI[2]=="1018") || (SI[2]=="1020") || (SI[2]=="1022") || (SI[2]=="1024") || (SI[2]=="1026") || (SI[2]=="1068") || (SI[2]=="1070") || (SI[2]=="1072") || (SI[2]=="1074") || (SI[2]=="1076") || (SI[2]=="1080") || (SI[2]=="1084") || (SI[2]=="1086") || (SI[2]=="1090") || (SI[2]=="1092") || (SI[2]=="1094") || (SI[2]=="1096") || (SI[2]=="1100") || (SI[2]=="1102") || (SI[2]=="1106") || (SI[2]=="1110") || (SI[2]=="1112") || (SI[2]=="1114") || (SI[2]=="1116") || (SI[2]=="1118") || (SI[2]=="1120"))) { //CanalSat S19.2 is.setObject("cfg.locale.ui","fra",is.STORAGE_VOLATILE); } // MTV transponder 1078 / 1066 if(SI[0]=="S19.2E" && SI[2]=="1078" && ( SI[3]=="28674" || SI[3]=="28675" || SI[3]=="28677" )) { //Nick JR France is.setObject("cfg.locale.ui","fra",is.STORAGE_VOLATILE); } if(SI[0]=="S19.2E" && SI[2]=="1078" && SI[3]=="28679") { //Nick NL is.setObject("cfg.locale.ui","dut",is.STORAGE_VOLATILE); } if(SI[0]=="S19.2E" && SI[2]=="1078" && ( SI[3]=="28673" || SI[3]=="28676" )) { //Deutsch is.setObject("cfg.locale.ui","ger",is.STORAGE_VOLATILE); } if(SI[0]=="S19.2E" && SI[2]=="1066") { is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } if(SI[0]=="S19.2E" && SI[2]=="1066" && ( SI[3]=="28652" || SI[3]=="28661" )) { is.setObject("cfg.locale.ui","fra",is.STORAGE_VOLATILE); } //Canal Sat if(SI[0]=="S19.2E" && SI[1]=="1" && SI[2]=="1088" ) { is.setObject("cfg.locale.ui","fre",is.STORAGE_VOLATILE); } if(SI[0]=="S13.0E" && SI[1]=="319") { is.setObject("cfg.locale.ui","fre",is.STORAGE_VOLATILE); } //Euronews / Eurosport if(SI[0]=="S13.0E" && SI[1]=="318" && SI[2]=="200") { is.setObject("cfg.locale.ui","fra",is.STORAGE_VOLATILE); } //bloomberg 19.2E if(SI[0]=="S19.2E" && SI[2]=="1026" && SI[3]=="10067") { is.setObject("cfg.locale.ui","eng",is.STORAGE_VOLATILE); } //Canal+ if(SI[0]=="S19.2E" && SI[1]=="1" && SI[2]=="1060" ) { is.setObject("cfg.locale.ui","spa",is.STORAGE_VOLATILE); } //Russian if(SI[0]=="S13.0E" && SI[2]=="8100") { is.setObject("cfg.locale.ui","ger",is.STORAGE_VOLATILE); //doesn't work but dvbsnoop does show 'ISO639_2_language_code: ger' } } // End of EPG section // Channelslist / EPG Guide // // show currchan - 5 // highlite currchan // show currchan + 5 // // check if chan is OK // function showChannelList() { var liststyle = ""; var htmlstring = "<table border='0'><tr>"; listChan = currChan-5; for(var i=currChan-5; i<=currChan+5; i++) { do { listChan += 1; if (listChan<minChan[ChanGroup]) { listChan=maxChan[ChanGroup]; } if (listChan>maxChan[ChanGroup]) { listChan=minChan[ChanGroup]; } } while (!channels[listChan] && (listChan<maxChan[ChanGroup])); if (fullupdate) { GetEPG(listChan); } if ( listChan == currChan) { if (!fullupdate) { GetEPG(listChan); } liststyle = "background:" + color_bg + ";"; } else { liststyle = ""; } EpgInfo[0] = EPG[0][7][listChan]; EpgInfo[1] = EPG[1][7][listChan]; htmlstring = htmlstring + "<td style='" + liststyle + "font-size:" + fsList + ";'>\uE003\uE003" + listChan + "\uE003</td><td style='" + liststyle + "font-size:" + fsList + ";'>" + Left(channelsnames[listChan],15) + "\uE003</td><td style='" + liststyle + "font-size:" + fsList + ";'>" + Left(EpgInfo[NowNext],64) + "</td></tr>"; } htmlstring = htmlstring + "</table>"; channelList.innerHTML = htmlstring; chanlistepg.innerHTML = "<center><p style='" + color_chan_epg + ";font-size:" + fsEpg + ";'>" + EPG[NowNext][1][currChan] + "</p><p style='" + color_chan_epg + ";font-size:" + fsList + ";'>" + Left(EPG[NowNext][4][currChan],250) + "</p></center>" ; } // END of Channelslist / EPG Guide // TeleTXT section function embedTeletextPlugin() { teletext = document.createElement("embed"); teletext.id = "teletext"; teletext.type = "application/motorola-teletext-plugin"; teletext.style.position = "absolute"; teletext.style.width = "100%"; teletext.style.height = "100%"; teletext.style.top = "10px"; // has to be 1 rather than 0 teletext.style.left = "10px"; // has to be 1 rather than 0 teletext.style.zIndex = "501"; return teletext; } function setVisible(isVisible) { if (isVisible) { videoplane.style.width = "50%"; videoplane.style.left = "50%"; document.body.appendChild(teletext); teletext.style.width = "50%"; teletext.style.visibility = "visible"; channelList.style.visibility = "hidden"; colorkeys.style.visibility = "hidden"; } else { teletext.style.visibility = "hidden"; channelList.style.visibility = "visible"; colorkeys.style.visibility = "visible"; } } function onKeyTeletext(keyCode) { switch(keyCode) { case "Left": teletext.api.gotoNextPage(); break; case "Right": teletext.api.gotoPreviousPage(); break; case "Red": teletext.api.inputRedKey(); break; case "Green": teletext.api.inputGreenKey(); break; case "Yellow": teletext.api.inputYellowKey(); break; case "Blue": teletext.api.inputCyanKey(); break; case "MediaRewind": teletext.api.gotoPreviousSubpage(); break; case "MediaForward": teletext.api.gotoNextSubpage(); break; case "MediaStop": teletext.style.width = "100%"; teletext.api.transparent = !teletext.api.transparent; FullScreen(); break; case "BrowserBack": case "Teletext": isVisible = 0; FullScreen(); setVisible(isVisible); break; case "TV": teletext.api.gotoIndexPage(); break; case KEY_0: teletext.api.inputDigit(0); break; case KEY_1: teletext.api.inputDigit(1); break; case KEY_2: teletext.api.inputDigit(2); break; case KEY_3: teletext.api.inputDigit(3); break; case KEY_4: teletext.api.inputDigit(4); break; case KEY_5: teletext.api.inputDigit(5); break; case KEY_6: teletext.api.inputDigit(6); break; case KEY_7: teletext.api.inputDigit(7); break; case KEY_8: teletext.api.inputDigit(8); break; case KEY_9: teletext.api.inputDigit(9); break; } } // end of TeleTXT section // Menu section function onKeyMenu(keyCode) { switch(keyCode) { case "BrowserBack": if ((menu == 5 || menu == 7) && osdepginfo.style.opacity == 1) { osdepginfo.style.opacity = 0; } else if (menu == 10 || menu == MainMenu) { isSetupMenu = 0; mainmenu.style.opacity = 0; osdepginfo.style.opacity = 0; } else if (menu !== MainMenu) { if (menu == 3 ) { isFullscreen = 0; play(channels[currChan]); isFullscreen = 1;MPDListener = 0;} menu = MainMenu; InitMenu(menu); } break; case "Menu": if (menu == 3 ) { play(channels[currChan]);MPDListener = 0;} isSetupMenu = 0; mainmenu.style.opacity = 0; osdepginfo.style.opacity = 0; break; case "Left": break; case "Right": break; case "Up": if (menu == 2) { timerID -= 1; var x = ss.getBookingIds("*", 0, 0); if (timerID < x[0]) { timerID = x[0]; } } else if (menu == 5 || menu == 7 || menu == 10) { timerID -= 1; if (timerID < 0) { timerID = 0; } } InitMenu(menu); break; case "Down": if (menu == 2) { timerID += 1; var x = ss.getBookingIds("*", 0, 0); if (timerID > x[x.length-1] ) { timerID = x[x.length-1]; } } else if (menu == 5 || menu == 7 || menu == 10) { timerID += 1; if (timerID > (maxTimers - 1) && maxTimers !== 0) { timerID = maxTimers - 1; } } InitMenu(menu); break; case "Accept": if (menu == 2 && isMediaMenu !== 1) { var x = ss.getParameter(timerID, "assetURI"); getRecOK = 0; LoadMediaSettings(); isSetupMenu = 0; mediaList.style.opacity = 0; mainmenu.style.opacity = 0; currMed = -1; playRec(x); //UnloadMediaSettings(); } if (menu == 10) { GotoFav((timerID + Fav_base + 1)); isSetupMenu = 0; mainmenu.style.opacity = 0; osdepginfo.style.opacity = 0; } if (menu == 5) { // Show EPG info Timer osdepginfo.style.opacity = 1 - osdepginfo.style.opacity; osdepginfo.innerHTML = "<center><pre style='" + color_timerinfo + ";'>\n\n\n" + Lang[0] + "\n\n\n </pre></center>" ; setTimeout("ShowTimerInfo();",100); } if (menu == 7) { // Show more info Current SearchTimer osdepginfo.style.opacity = 1 - osdepginfo.style.opacity; osdepginfo.innerHTML = "<center><pre style='" + color_main_head + ";'>" + searchtimersSearch[timerID] + "\n\n\n\n<center>" + Lang[0] + "</center></pre>" ; setTimeout("ShowSearchTimerInfo();",100); } break; case "Red": if (menu == 1) { if (subs_dyn < (subs_prio_dyn.length -1)) { subs_dyn += 1} else { subs_dyn = 0 } if (subs_prio_dyn.length > 0) { is.setObject("cfg.media.subtitling.languagepriority", (subs_prio_dyn[subs_dyn] + "," + subs_prio),is.STORAGE_PERMANENT); } else { is.setObject("cfg.media.subtitling.languagepriority",subs_prio,is.STORAGE_PERMANENT); } InitMenu(menu); break; } else if (menu == 2) { var x = ss.getBookingIds("*", 0, 0); if (x.length > 0) { alert(timerID); //Show timerID for debug, some times it won't delete. ss.remove(timerID); timer[timerID] = ""; LoadTimers(); if (timer.length !== 0) { do { timerID = timerID + 1; } while (!timer[timerID] && (timerID < timer.length)) } setOSDtimer(); InitMenu(menu); } } else if (menu == 5 && smartTVplugin) { osdepginfo.style.opacity = 0; mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[7] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n\n\n<center>" + Lang[0] + "</center></pre>"; DeleteTimers(); setTimeout("LoadTimersServer();InitMenu(menu);",100); } else if (menu == 10) { channels[(timerID + Fav_base + 1)]=""; channelsnames[(timerID + Fav_base + 1)]=""; is.setObject(("vip.channelsnames." + (timerID + 1)),"",is.STORAGE_PERMANENT) is.setObject(("vip.channels." + (timerID + 1)),"",is.STORAGE_PERMANENT) if (Fav_max_channel == (timerID + 1)) { Fav_max_channel = timerID; maxTimers = Fav_max_channel; is.setObject("vip.fav_max_channel",Fav_max_channel.toString(),is.STORAGE_PERMANENT) timerID -= 1; if (timerID < 0) {timerID = 0;} } setTimeout("InitMenu(menu);",100); } break; case "Green": if (menu == 1) { Set_Res = Set_Res + 1; if (Set_Res > (VideoOutputModes.length-1)) { Set_Res = 0;} // save the info is.setObject("vip.resolution",Set_Res.toString(),is.STORAGE_PERMANENT) VideoOutput(); InitMenu(menu); } else if (menu == 5 && smartTVplugin) { activate_timers(timerID); InitMenu(menu); } else if (menu == 10) { //move up if (timerID !== 0) { x = timerID + Fav_base + 1; x1 = channels[x]; y1 = channelsnames[x]; x2 = channels[(x - 1)]; y2 = channelsnames[(x - 1)]; is.setObject(("vip.channelsnames." + (timerID + 1)),y2,is.STORAGE_PERMANENT) is.setObject(("vip.channels." + (timerID + 1)),x2,is.STORAGE_PERMANENT) is.setObject(("vip.channelsnames." + timerID),y1,is.STORAGE_PERMANENT) is.setObject(("vip.channels." + timerID),x1,is.STORAGE_PERMANENT) channelsnames[x] = y2; channels[x] = x2; channelsnames[(x - 1)] = y1; channels[(x - 1)] = x1; timerID -= 1; setTimeout("InitMenu(menu);",100); } } break; case "Yellow": if (menu == MainMenu) { menu = 4; // INFO menu InitMenu(menu); } else if (menu == 1) { menu = 9; // INFO2 menu InitMenu(menu); } else if (menu == 10) { //move down if (timerID !== (maxTimers - 1)) { x = timerID + Fav_base + 1; x1 = channels[x]; y1 = channelsnames[x]; x2 = channels[(x + 1)]; y2 = channelsnames[(x + 1)]; is.setObject(("vip.channelsnames." + (timerID + 1)),y2,is.STORAGE_PERMANENT) is.setObject(("vip.channels." + (timerID + 1)),x2,is.STORAGE_PERMANENT) is.setObject(("vip.channelsnames." + (timerID + 2)),y1,is.STORAGE_PERMANENT) is.setObject(("vip.channels." + (timerID + 2)),x1,is.STORAGE_PERMANENT) channelsnames[x] = y2; channels[x] = x2; channelsnames[(x + 1)] = y1; channels[(x + 1)] = x1; timerID += 1; setTimeout("InitMenu(menu);",100); } } break; case "Blue": if (menu == 0) { RestartPortal(); } else if (menu == 5) { // Show EPG info Timer osdepginfo.style.opacity = 1 - osdepginfo.style.opacity; osdepginfo.innerHTML = "<center><pre style='" + color_timerinfo + ";'>\n\n\n" + Lang[0] + "\n\n\n </pre></center>" ; setTimeout("ShowTimerInfo();",100); } else if (menu == 7) { // Show info SearchTimers osdepginfo.innerHTML = SearchTimer[timerID] ; osdepginfo.style.opacity = 1 - osdepginfo.style.opacity; } else if (menu == 10) { if (protChn[ChanGroup] !== 1 && ChanGroup !== Fav_group) { AddtoFav(); } } break; case "MediaRewind": if (menu == 1) { if (experimental) { // mute output 0 (analog out), keep output 3 'decoder output' unmuted aos.setVolume(0, 0); } } break; case "MediaForward": if (menu == 1) { if (experimental) { aos.setVolume(0, 100); } } break; case "MediaStop": if (menu == 1) { //set sleep timer. SleepTimer += 15; if (SleepTimerID != -1) { clearTimeout(SleepTimerID); SleepTimerID = -1; } if (SleepTimer > 90) { SleepTimer = 0; } else { SleepTimerID = setTimeout("SleepTimer = 0;toi.platformService.setStandby(true);", (SleepTimer * 60 * 1000)); } } InitMenu(menu); break; case "Teletext": UseNewReclist = 1 - UseNewReclist; alert(UseNewReclist); break; case "TV": break; case KEY_1: if (menu == MainMenu) { menu = 1; } else if (menu == 1) { ShowSubs = 1 - ShowSubs; videoplane.subtitles = Boolean(ShowSubs); // Enable subtitles or Disable subtitles is.setObject("vip.showsubs",ShowSubs.toString(),is.STORAGE_PERMANENT); } else if (menu == 8) { SetGroup(1); } InitMenu(menu); break; case KEY_2: if (menu == MainMenu) { LoadTimers(); if (timer.length !== 0) { do { timerID += 1; } while (!timer[timerID] && (timerID < timer.length)) } menu = 2; } if (menu == 1) { if(subsmode == 0 ) { is.setObject("cfg.media.subtitling.modepriority","Teletext,DVB",is.STORAGE_PERMANENT); subsmode = 1; } else { is.setObject("cfg.media.subtitling.modepriority","DVB,Teletext",is.STORAGE_PERMANENT); subsmode = 0; } } if (menu == 8) { SetGroup(2); } InitMenu(menu); break; case KEY_3: if (menu == 0) { isSetupMenu = 0; mediaList.style.opacity = 0.9; mainmenu.style.opacity = 0; setTimeout("getSchedule(currChan);LoadMediaSettings();",100); } else if (menu == 1) { if (audio < (lang_prio.length -1)) { audio += 1} else { audio = 0 } is.setObject("vip.languagepriority",audio.toString(),is.STORAGE_PERMANENT); is.setObject("cfg.media.audio.languagepriority",lang_prio[audio],is.STORAGE_PERMANENT); InitMenu(menu); } else if (menu == 8) { SetGroup(3); InitMenu(menu); } break; case KEY_4: if (menu == 0) { isSetupMenu = 0; mediaList.style.opacity = 0.9; mainmenu.style.opacity = 0; recPath = "/recordings.xml"; setTimeout("getRecList();LoadMediaSettings();",100); } else if (menu == 1) { //Init here. menu = 0 don't need init! menu = 8; InitMenu(menu); } else if (menu == 8) { SetGroup(4); InitMenu(menu); } break; case KEY_5: if (menu == MainMenu && (Restfulapiplugin || smartTVplugin)) { mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[7] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n\n\n<center>" + Lang[0] + "</center></pre>"; timerID = 0; menu = 5; setTimeout("LoadTimersServer();InitMenu(menu);",200); } if (menu == 1) { var x = is.getObject("vip.serveraddress"); x = Number(x); if (x < (server_ip_array.length -1)) { x += 1} else { x = 0 } is.setObject("vip.serveraddress",x.toString(),is.STORAGE_PERMANENT); server_ip = server_ip_array[x]; for (var i=0;i<10;i++) { if (ServerAdres[i] !== "FullURL" && ServerAdres[i] !== "MultiCast") {ServerAdres[i] = server_ip + StreamPort;} } InitMenu(menu); } if (menu == 8) { SetGroup(5); InitMenu(menu); } break; case KEY_6: if (menu == 0 && Restfulapiplugin) { isSetupMenu = 0; mediaList.style.opacity = 0.9; mainmenu.style.opacity = 0; setTimeout("getServerSchedule();LoadMediaSettings();",100); } if (menu == 1) { if(showClock == 0 ) { showDisplay("", true, 80, 1 ); showClock = 1; } else if(showClock == 1 ) { showClock = 0; showDisplay(Right(currChan.toString(),4), false, 100, 0 ); } InitMenu(menu); } if (menu == 8) { SetGroup(6); InitMenu(menu); } break; case KEY_7: if (menu == 0 && smartTVplugin) { isSetupMenu = 0; mediaList.style.opacity = 0.9; mainmenu.style.opacity = 0; recPath = "/media.xml"; setTimeout("getRecList();LoadMediaSettings();",100); } if (menu == 1) { ShowProtectedChannels = 1 - ShowProtectedChannels; if (ProtectID) { clearTimeout(ProtectID); } if (ShowProtectedChannels == 0 && ProtectTimeOut !== 0 ) { ProtectID = setTimeout("ShowProtectedChannels = 1; if (protChn[ChanGroup] == 1) {ChanGroup = 0; currChan = defChan[ChanGroup]; play(currChan); }",ProtectTimeOut); } if (ShowProtectedChannels == 1 && protChn[ChanGroup] == 1) { ChanGroup = 0; currChan = defChan[ChanGroup]; play(currChan); } isSetupMenu = 0; mainmenu.style.opacity = 0; } if (menu == 8) { SetGroup(7); InitMenu(menu); } break; case KEY_8: if (menu == MainMenu && Restfulapiplugin) { mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[8] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n\n\n<center>" + Lang[0] + "</center></pre>"; timerID = 0; menu = 7; setTimeout("LoadSearchTimersServer();InitMenu(menu);",200); } if (menu == 1) { if(SwitchGuide == 0 ) { SwitchGuide = 1; } else if(SwitchGuide == 1 ) { SwitchGuide = 0; } InitMenu(menu); } if (menu == 8) { SetGroup(8); InitMenu(menu); } break; case KEY_9: if ((menu == 0 || menu == 3) && ShowMPD) { menu = 3; playMPD(server_ip + MPDAddress); } else if (menu == 1) { if (lang_nr < (OSDLang.length -1)) { lang_nr += 1} else { lang_nr = 0 } is.setObject("vip.OSDlanguage",lang_nr.toString(),is.STORAGE_PERMANENT); loadjs(langfile[lang_nr]); setTimeout("InitMenu(menu);",100); } else if (menu == 8) { SetGroup(9); } InitMenu(menu); break; case KEY_0: if (menu !== MainMenu && menu !== 8 ) { if (menu == 3 ) { isFullscreen = 0; play(channels[currChan]); isFullscreen = 1; MPDListener = 0;} menu = MainMenu; InitMenu(menu); } else if (menu == 8) { SetGroup(0); InitMenu(menu); } else if (menu == 0) { timerID = 0; maxTimers = Fav_max_channel; menu = 10; if (ChanGroup !== Fav_group) { Fav_key1 = Lang[86]; } InitMenu(menu); } break; case "VolumeMute": VolumeMute(); break; case "VolumeUp": VolumeUp(); break; case "VolumeDown": VolumeDown(); break; case KEY_A:// |> key on old long kpn 1710/1760 remote break; case KEY_B:// hh key on old long kpn 1710/1760 remote break; case KEY_C:// @ key on old long kpn 1710/1760 remote if (menu == 10 ) { isSetupMenu = 0; mainmenu.style.opacity = 0; osdepginfo.style.opacity = 0; } break; case KEY_D:// >@ key on old long kpn 1710/1760 remote break; default: break; } } function InitMenu(menu) { // 0 = Main Menu // 1 = settings menu // 2 = Timers menu // 3 = MPD Menu // 4 = INFO Menu // 5 = Timers from Server // 6 = Main Menu (when watching recording) // 7 = SearchTimers from Server // 8 = ChannelGroups enable/disable // 9 = INFO2 menu // 10 = Favorite Edit menu osdepginfo.style.opacity = 0; if(menu == 0) { // Main Menu MainMenu = 0; var htmltext = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[9] + "\n ( " + Version + " )</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'> 1 -" + Lang[10] + "\n 2 -" + Lang[7] + "\n 3 -" + Lang[11]; htmltext += "\n 4 -" + Lang[12]; if (Restfulapiplugin) { htmltext += "\n 5 -" + Lang[13]; } else { htmltext += "<font style='" + color_notset +";'>" + "\n 5 -" + Lang[13] + "<font style='" + color_main_font +";'>" ; } if (Restfulapiplugin) { htmltext += "\n 6 -" + Lang[14]; } else { htmltext += "<font style='" + color_notset +";'>" + "\n 6 -" + Lang[14] + "<font style='" + color_main_font +";'>" ; } if (smartTVplugin) { htmltext += "\n 7 -" + Lang[15]; } else { htmltext += "<font style='" + color_notset +";'>" + "\n 7 -" + Lang[15] + "<font style='" + color_main_font +";'>" ; } if (Restfulapiplugin) { htmltext += "\n 8 -" + Lang[16]; } else { htmltext += "<font style='" + color_notset +";'>" + "\n 8 -" + Lang[16] + "<font style='" + color_main_font +";'>" ; } if (ShowMPD) { htmltext += "\n 9 -" + Lang[17]; } else { htmltext += "<font style='" + color_notset +";'>" + "\n 9 -" + Lang[17] + "<font style='" + color_main_font +";'>" ; } htmltext += "\n 0 - " + Lang[83] + "\n\n <font style='color:red;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:green;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:yellow;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[35] + " <font style='color:blue;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[18] + "</pre>"; mainmenu.innerHTML = htmltext; } if(menu == 6) { // Main Menu when watching recording MainMenu = 6; mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[9] + "\n ( " + Version + " )</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'> 1 -" + Lang[10] + "\n 2 -" + Lang[7] + "\n\n\n 5 -" + Lang[13] + "\n\n\n 8 -" + Lang[16] + "\n\n\n\n <font style='color:red;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:green;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:yellow;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[35] + " <font style='color:blue;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "</pre>"; } if(menu == 1) { // settings menu var htmltext = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[10] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'> 1 - "; if (ShowSubs) { htmltext += "\uE017"; } else { htmltext += "\uE016"; } htmltext += Lang[20] + ": " + (is.getObject("cfg.media.subtitling.languagepriority")); if (subs_prio_dyn.length > 0) { htmltext += " (" + (subs_dyn + 1 ) + "/" + subs_prio_dyn.length + ") "; } htmltext += "\n 2 - \uE003" + Lang[22] + (is.getObject("cfg.media.subtitling.modepriority")); htmltext += "\n 3 - \uE003" + Lang[24] + (is.getObject("cfg.media.audio.languagepriority")); htmltext += "\n 4 - " + Lang[82] + "\n 5 - VDR : " + server_ip + "\n 6 - "; if (showClock) { htmltext += "\uE017"; } else { htmltext += "\uE016"; } htmltext += Lang[25] + "\n 7 - "; if (ShowProtectedChannels) { htmltext += "\uE017"; } else { htmltext += "\uE016"; } htmltext += Lang[26] + "\n 8 - "; if (SwitchGuide) { htmltext += "\uE017"; } else { htmltext += "\uE016"; } htmltext += Lang[27] + "\n 9 -" + Lang[23] + OSDLang[lang_nr] + "\n \u25AA -" + Lang[29]; if (SleepTimer) { htmltext += SleepTimer + Lang[30]; } else { htmltext += Lang[31]; } htmltext += "\n\n <font style='color:red;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[20]; htmltext += "<font style='color:green;'>\u25CF<font style='" + color_main_font + ";'> - " + VideoOutputModes_txt[VideoOutputModes[Set_Res]] + " "; htmltext += "<font style='color:yellow;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[35]; htmltext += "<font style='color:blue;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] +"</pre>"; // htmltext += "\n 0 -" + Lang[9] +"</pre>"; mainmenu.innerHTML = htmltext; } if(menu == 2) { // Timers menu booking = ""; var x = timerID - 1; var y = ss.getBookingIds("*", 0, 0); if (y.length !== 0) { for (var i=0;i<10;i++) { if (timer.length !== 0) { do { x += 1; } while (!timer[x] && (x < timer.length)) } if (i == 0) { booking += "<font style='background:" + color_bg + ";-webkit-border-radius:25px;" + color_main_font + ";font-size:" + fsMenu + ";'>"; } else if (i == 1) { booking += "</font>"; } if (timer.length > x) { booking += timer[x]; } else { booking += "\n"; } } } mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[7] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n 0 -" + Lang[9] + "\n" + booking + " <font style='color:red;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[48] + "<font style='color:green;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:yellow;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + " <font style='color:blue;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "</pre>"; } if(menu == 3) { // MPD Menu mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[33] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>" + Lang[34] + "\n 0 -" + Lang[9] + "</pre>"; } if(menu == 4) { // INFO Menu var htmltext = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[35] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>"; try { htmltext += "\n Product name: " + is.getObject("config.productdisplayname"); htmltext += "\n Build date : " + is.getObject("config.build.date"); htmltext += "\n\n IP address : " + is.getObject("config.ipaddress"); var x = is.getObject("cfg.ip.eth0.mode"); if (x == "DHCP") { htmltext += "\n \uE003\uE017 "; } else { htmltext += "\n \uE003\uE016 "; } htmltext += "DHCP"; var x = is.getObject("var.capabilities.dvr"); if (x !== "FALSE") { htmltext += "\n \uE003\uE017 "; } else { htmltext += "\n \uE003\uE016 "; } htmltext += "DVR \n"; htmltext += "\n VDR address : " + server_ip; htmltext += "\n Vip Client\uE003\uE003\uE003: " + Version; htmltext += "\n Channel list\uE003: " + Chan_Ver; } catch(e) { alert("Error : " + e); } htmltext += "\n\n 0 -" + Lang[9] + "</pre>"; mainmenu.innerHTML = htmltext; } if(menu == 5) { // Timers from Server if (timerOK) { // booking = "<center>" + Lang[32] + "</center>"; booking = "<font style='background:" + color_bg + ";-webkit-border-radius:25px;" + color_main_font + ";font-size:" + fsMenu + ";'>"; var x = timerID - 1; for (var i=0;i<10;i++) { if (maxTimers !== 0) { do { x += 1; } while (!timers[x] && (x < maxTimers)) } if (maxTimers > x) { booking += timers[x]; } else { booking += "\n"; } if (i == 0) { booking += "</font>"; } } if (get_timer) { mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[7] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n" + booking + "\n <font style='color:red;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[48] + "<font style='color:green;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[49] + "<font style='color:yellow;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + " <font style='color:blue;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[28] + "</pre>"; } else { mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[7] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n" + booking + "\n <font style='color:red;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:green;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:yellow;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + " <font style='color:blue;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[28] + "</pre>"; } } } if(menu == 7) { // SearchTimers from Server if (timerOK) { // booking = "<center>" + Lang[32] + "</center>"; booking = "<font style='background:" + color_bg + ";-webkit-border-radius:25px;" + color_main_font + ";font-size:" + fsMenu + ";'>"; var x = timerID - 1; for (var i=0;i<10;i++) { if (maxTimers !== 0) { do { x += 1; } while (!searchtimers[x] && (x < maxTimers)) } if (maxTimers > x) { booking += searchtimers[x]; } else { booking += "\n"; } if (i == 0) { booking += "</font>"; } } mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[8] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n" + booking + "\n <font style='color:red;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:green;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + "<font style='color:yellow;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[19] + " <font style='color:blue;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[28] + "</pre>"; } } if(menu == 8) { // ChannelGroups enable/disable var htmltext = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[80] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n"; for (var i=0;i<10;i++) { if (maxChan[i]) { htmltext += "<font style='" + color_main_font + ";'>"; } else { htmltext += "<font style='" + color_notset + ";'>"; } htmltext += "\uE003" + i + "\uE003-\uE003"; if (is.getObject(("vip.group." + i)) == "1") { htmltext += "\uE017"; } else { htmltext += "\uE016"; } htmltext += "\uE003" + Lang[81] + i + "\n"; } htmltext += "</pre>"; mainmenu.innerHTML = htmltext; } if(menu == 9) { // INFO2 Menu var htmltext = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[35] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>"; try { if (fullupdate !== 0) { htmltext += "\n \uE017 "; } else { htmltext += "\n \uE016 "; } htmltext += "Full EPG Update "; experimental = Number(is.getObject("vip.testing")); if (experimental) { htmltext += "\n \uE017 "; } else { htmltext += "\n \uE016 "; } htmltext += "Experimental"; if (Number(is.getObject("vip.testing2"))) { htmltext += "\n \uE017 "; } else { htmltext += "\n \uE016 "; } htmltext += "Experimental 2 (Info box 'not in package')"; if (Restfulapiplugin) { htmltext += "\n \uE017 "; } else { htmltext += "\n \uE016 "; } htmltext += "Has Restfulapiplugin" if (smartTVplugin) { htmltext += "\n \uE017 "; } else { htmltext += "\n \uE016 "; } htmltext += "Has smartTVplugin" htmltext += "\n gettimers from"; if (get_timer == 1) { htmltext += " smarttvweb "; } else { htmltext += " restfulapi "; } htmltext += "\n getmarks from"; if (get_marks == 1) { htmltext += " smarttvweb "; } else { htmltext += " restfulapi "; } htmltext += "\n getrecordings from"; if (get_recordings == 1) { htmltext += " smarttvweb "; } else if (get_recordings == 0) { htmltext += " restfulapi "; } else { htmltext += " streamdev "; } htmltext += "\n EPGMode : " if (EPGMode) { htmltext += "Full EPG"; } else { htmltext += "Now/Next Only"; } } catch(e) { alert("Error : " + e); } htmltext += "\n\n 0 -" + Lang[9] + "</pre>"; mainmenu.innerHTML = htmltext; } if(menu == 10) { // Favorite edit Menu var htmltext = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[83] htmltext += "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>\n" htmltext += "<font style='background:" + color_bg + ";-webkit-border-radius:25px;" + color_main_font + ";font-size:" + fsMenu + ";'>"; var x = timerID; for (var i=0;i<10;i++) { if (maxTimers !== 0) { x += 1;} if (maxTimers >= x && x !== 0) { htmltext += " \u0003\u0003 " + x + " \u0003\u0003 " + channelsnames[(x + Fav_base)] + " \u0003\u0003\u0003 \n"; } else { htmltext += "\n"; } if (i == 0) { htmltext += "</font>"; } } htmltext += "\n <font style='color:red;'>\u25CF<font style='" + color_main_font + ";'> -" + Lang[87]; htmltext += "<font style='color:green;'>\u25CF<font style='" + color_main_font + ";'> -" if (timerID == 0) { htmltext += Lang[19] } else { htmltext += Lang[84] } //no move up htmltext += "<font style='color:yellow;'>\u25CF<font style='" + color_main_font + ";'> -" if (timerID == (maxTimers - 1) || x == 0) { htmltext += Lang[19] } else { htmltext += Lang[85] } //no move down htmltext += "<font style='color:blue;'>\u25CF<font style='" + color_main_font + ";'> -" + Fav_key1 + "</pre>"; mainmenu.innerHTML = htmltext; } } // end of initmenu function SetGroup(isgroup) { is.setObject("vip.group." + isgroup,(1 - is.getObject("vip.group." + isgroup)).toString(),is.STORAGE_PERMANENT); if (is.getObject("vip.group." + isgroup) == "0") { minChan[isgroup] = "";} else {minChan[isgroup] = minchan[isgroup];} } function LoadTimers() { timer.length = 0; var booking = ""; var x = ss.getBookingIds("*", 0, 0); for (var i=0;i<x.length;i++) { var y = ss.getBooking(x[i]); booking = " ID " + x[i]; booking += " " + y.category; booking += " " + ss.getParameter(x[i], "Channel"); tijd = y.start; date = new Date(tijd*1000); tijd = date.toUTCString(); tijd = new Date(tijd); month = tijd.getMonth(); d = tijd.getDate(); day = tijd.getDay(); var tm = tijd.getMinutes(); var th = tijd.getHours(); th=addzero(th); tm=addzero(tm); booking += " Start " + Left(days[day],3) + " " + d + " " + Left(months[month],3) + " " + th + ":" + tm + " "; if (y.category !== "SwitchOnly") { booking += " " + (y.duration/60).toFixed(0) + " min"; } timer[(x[i])] = booking + "\n" ; } } function LoadTimersServer() { try { if (get_timer==1) { //Get timers from SmartTVweb xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + recServ + "/timers.xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("timer"); maxTimers = x.length; timers.length = 0; // clear timers[i] tries to clear crap if current x.length < previous x.length for (var i=0;i<x.length;i++) { var fill = "\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003"; timersFlag[i] = x[i].getElementsByTagName("flags")[0].childNodes[0].nodeValue; timersStrt[i] = Right("000" + x[i].getElementsByTagName("start")[0].childNodes[0].nodeValue,4); timersStop[i] = Right("000" + x[i].getElementsByTagName("stop")[0].childNodes[0].nodeValue,4); timersEvnt[i] = x[i].getElementsByTagName("eventid")[0].childNodes[0].nodeValue; // event_id timersID[i] = x[i].getElementsByTagName("index")[0].childNodes[0].nodeValue; // index timersChan[i] = x[i].getElementsByTagName("channelid")[0].childNodes[0].nodeValue; // channel_id timersName[i] = x[i].getElementsByTagName("channelname")[0].childNodes[0].nodeValue + fill; timersDay[i] = x[i].getElementsByTagName("day")[0].childNodes[0].nodeValue; timersDays[i] = new Date(timersDay[i]*1000); timersDays[i] = timersDays[i].getDate() + "\uE003" + Left(months[timersDays[i].getMonth()],4); timersFile[i] = x[i].getElementsByTagName("file")[0].childNodes[0].nodeValue + fill + fill; if (timersFlag[i] == "1") { timers[i] = "\uE003\uE00C\uE003"; } else if (timersFlag[i] == "9" || timersFlag[i] == "11" ) { timers[i] = "\uE003\uE00B\uE003"; } else if (timersFlag[i] == "0") { timers[i] = "\uE003\uE003\uE003"; } else { timers[i] = "\uE003?\uE003"; } timers[i] += timersDays[i] + "\uE003" + timersStrt[i] + "\uE003" + timersStop[i] + "\uE003" + Left(timersName[i],8) + "\uE003" + Left(timersFile[i],15) + "\n" ; timerOK = 1; } } else if (get_timer == 0) { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/timers.xml"),false); // ?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("timer"); maxTimers = x.length; for (var i=0;i<x.length;i++) { var fill = "\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003"; timersID[i] = x[i].getElementsByTagName("param")[0].childNodes[0].nodeValue; timersChan[i] = x[i].getElementsByTagName("param")[11].childNodes[0].nodeValue; timersFlag[i] = x[i].getElementsByTagName("param")[1].childNodes[0].nodeValue; timersStrt[i] = Right("00" + x[i].getElementsByTagName("param")[2].childNodes[0].nodeValue,4); timersStop[i] = Right("00" + x[i].getElementsByTagName("param")[3].childNodes[0].nodeValue,4); timersEvnt[i] = x[i].getElementsByTagName("param")[8].childNodes[0].nodeValue; timersDays[i] = x[i].getElementsByTagName("param")[9].childNodes[0].nodeValue; if (timersDays[i] == "-------" ) { timersDays[i] = x[i].getElementsByTagName("param")[10].childNodes[0].nodeValue; } else { timersDays[i] += "\uE003\uE003\uE003"; } timersName[i] = x[i].getElementsByTagName("param")[15].childNodes[0].nodeValue + fill; timersFile[i] = x[i].getElementsByTagName("param")[14].childNodes[0].nodeValue + fill + fill; if (timersFlag[i] == "1") { timers[i] = "\uE003\uE00C\uE003"; } else if (timersFlag[i] == "9") { timers[i] = "\uE003\uE00B\uE003"; } else { timers[i] = "\uE003\uE003\uE003"; } timers[i] += timersDays[i] + "\uE003" + timersStrt[i] + "\uE003" + timersStop[i] + "\uE003" + Left(timersName[i],8) + "\uE003" + Left(timersFile[i],15) + "\n" ; timerOK = 1; } } } catch(e) { timerOK = 0; alert("Get Timers problem: " + e); mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[7] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'><center>\n " + Lang[36] + ": \n " + server_ip + "</center></pre>"; } } function DeleteTimers() { if (get_timer==1) { try { xmlhttp=new XMLHttpRequest(); // // SmartTVWeb // xmlhttp.open("GET",(server_ip + recServ + "/deleteTimer?guid=" + timersChan[timerID] + "&dy=" + timersDay[timerID] // + "&st=" + timersStrt[timerID] + "&sp=" + timersStop[timerID] + "&" + new Date().getTime()),false); xmlhttp.open("GET",(server_ip + recServ + "/deleteTimer?index=" + timersID[timerID] + "&" + new Date().getTime()),false); xmlhttp.send(); } catch(e) { alert("Deleting Timers problem: " + e); } } } function activate_timers(){ if (get_timer==1) { // (De)activate timers. try { xmlhttp=new XMLHttpRequest(); if (timersFlag[timerID] == "0") { xmlhttp.open("GET",(server_ip + recServ + "/activateTimer?index=" + timersID[timerID] + "&activate=true&" + new Date().getTime()),false); } else { xmlhttp.open("GET",(server_ip + recServ + "/activateTimer?index=" + timersID[timerID] + "&activate=false&" + new Date().getTime()),false); } xmlhttp.send(); if (timersFlag[timerID] == "0") { timers[timerID] = timers[timerID].substr(0, 1) + "\uE00C" + timers[timerID].substr(2); timersFlag[timerID] = "1" } else { timers[timerID] = timers[timerID].substr(0, 1) + "\uE003" + timers[timerID].substr(2); timersFlag[timerID] = "0" } } catch(e) { alert("(De)Activate Timers problem: " + e); } } } function ShowTimerInfo() { if (osdepginfo.style.opacity == 1) { //Like Show EPG Info //setup some dummy vars var info1 = ""; var info2 = ""; var info3 = ""; var info4=""; if (timersEvnt[timerID] > 0) { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/events/" + timersChan[timerID] + "/" + timersEvnt[timerID] + ".xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("event"); // x[0].getElementsByTagName("param")[1].childNodes[0].nodeValue --> Title // x[0].getElementsByTagName("param")[2].childNodes[0].nodeValue --> Short_text // x[0].getElementsByTagName("param")[3].childNodes[0].nodeValue --> Description // x[0].getElementsByTagName("param")[5].childNodes[0].nodeValue --> ChannelsName info1 = x[0].getElementsByTagName("param")[1].childNodes[0].nodeValue; info2 = x[0].getElementsByTagName("param")[5].childNodes[0].nodeValue; info4 = x[0].getElementsByTagName("param")[3].childNodes[0].nodeValue; info3 = x[0].getElementsByTagName("param")[2].childNodes[0].nodeValue + "</p><p>"; } catch(e) { alert("Get EPG problem: " + e); } } else { info3 = Lang[37]; } osdepginfo.innerHTML = "<center><pre style='" + color_timerinfo + ";'>" + Left(info1,60) + "\n " + timersDays[timerID] + " " + timersStrt[timerID] + " - " + timersStop[timerID] + "\n" + info2 + "\n </pre><p>" + info3 + Left(info4,750) + "</p></center>" ; } } function LoadSearchTimersServer() { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/searchtimers.xml?" + new Date().getTime()),false); //"),false); // xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("searchtimer"); maxTimers = x.length; searchtimers.length = 0; // clear timers[i] tries to clear crap if current x.length < previous x.length for (var i=0;i<x.length;i++) { var fill = "\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003\uE003"; searchtimersID[i] = x[i].getElementsByTagName("id")[0].childNodes[0].nodeValue; searchtimersSearch[i] = x[i].getElementsByTagName("search")[0].childNodes[0].nodeValue; searchtimersFlag[i] = x[i].getElementsByTagName("use_as_searchtimer")[0].childNodes[0].nodeValue; if (searchtimersFlag[i] == "1") { searchtimers[i] = "\uE003\uE017\uE003"; } else if (searchtimersFlag[i] == "0") { searchtimers[i] = "\uE003\uE016\uE003"; } else { searchtimers[i] = "\uE003?\uE003"; } // Extended INFO SearchTimer[i] = "<center><pre style='" + color_main_head + ";'>" + x[i].getElementsByTagName("search")[0].childNodes[0].nodeValue + "\n </pre></center><pre>"; if ((x[i].getElementsByTagName("use_as_searchtimer")[0].childNodes[0].nodeValue) == 0) { SearchTimer[i] += "\uE003\uE016\uE003" + Lang[40] + "\n"; } else { SearchTimer[i] += "\uE003\uE017\uE003" + Lang[40] + "\n"; } SearchTimer[i] = SearchTimer[i] + "\uE003\uE003\uE003Mode :\uE003" + (searchmode[x[i].getElementsByTagName("mode")[0].childNodes[0].nodeValue]) + "\n"; if ((x[i].getElementsByTagName("use_time")[0].childNodes[0].nodeValue) == 1) { SearchTimer[i] += "\uE003\uE017\uE003" + Lang[41] + "\uE003" + x[i].getElementsByTagName("start_time")[0].childNodes[0].nodeValue + "\uE003-\uE003" + x[i].getElementsByTagName("stop_time")[0].childNodes[0].nodeValue + "\n"; } else { SearchTimer[i] += "\uE003\uE016\uE003" + Lang[41] + "\uE003" + "\n"; } if ((x[i].getElementsByTagName("use_dayofweek")[0].childNodes[0].nodeValue) == 0) { SearchTimer[i] += "\uE003\uE016\uE003" + Lang[47] + "\uE003" + "\n"; } else { //bit is used for dayofweek. var dowx = x[i].getElementsByTagName("dayofweek")[0].childNodes[0].nodeValue; var dow = ""; if (dowx > 0) { var y = 1;} else { var y = 0;} dowx = Math.abs(dowx); for (var dowi=0; dowi<7; dowi++) { var mask = 1 << dowi; if ((dowx & mask) != 0) { dow += days[(dowi+y)] + "\uE003";} } SearchTimer[i] += "\uE003\uE017\uE003" + Lang[47] + "\uE003:\uE003" + dow + "\n"; } if ((x[i].getElementsByTagName("use_channel")[0].childNodes[0].nodeValue) == 0) { SearchTimer[i] += "\uE003\uE016\uE003" + Lang[42] + "\uE003" + "\n"; } else { SearchTimer[i] += "\uE003\uE017\uE003" + Lang[42] + "\uE003:\uE003" + searchchan[(x[i].getElementsByTagName("use_channel")[0].childNodes[0].nodeValue)] + "\uE003" + x[i].getElementsByTagName("channels")[0].childNodes[0].nodeValue + "\n"; } SearchTimer[i] += "\n</pre>"; // End of Extended INFO searchtimers[i] += searchtimersSearch[i] + "\uE003\uE003\n" ; timerOK = 1; } } catch(e) { timerOK = 0; alert("Get SearchTimers problem: " + e); mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[8] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'><center>\n " + Lang[43] + ": \n " + server_ip + RestFulAPI + "</center></pre>"; } } function ShowSearchTimerInfo() { // info about a search timer. //Like Show EPG Info //setup some dummy vars var info1 = ""; var info2 = ""; try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/searchtimers/search/" + searchtimersID[timerID] + ".xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("event"); var maxinfo = x.length; if (maxinfo > 15) { maxinfo = 15;} for (var i=0;i<maxinfo;i++) { info2 = x[i].getElementsByTagName("param")[16].childNodes[0].nodeValue; // Timer exists if (info2 == "true") { info1 += "\uE003\uE00C\uE003"; } else { info1 += "\uE003\uE003\uE003"; } info2 = x[i].getElementsByTagName("param")[17].childNodes[0].nodeValue; // Timer active if (info2 == "true") { info1 += "\uE017\uE003"; } else { info1 += "\uE016\uE003"; } info2 = x[i].getElementsByTagName("param")[6].childNodes[0].nodeValue; // Time date = new Date(Number(info2)*1000); month = date.getMonth(); d = date.getDate(); day = date.getDay(); h = date.getHours(); m = date.getMinutes(); h=addzero(h); m=addzero(m); info2 = Left(days[day],3) + "\uE003" + d + "\uE003" + Left(months[month],3) + "\uE003" + h + ':' + m; info1 += info2; info2 = "\uE003\uE003" + x[i].getElementsByTagName("param")[7].childNodes[0].nodeValue/60 + "\uE003"; // Duration info1 += "\uE003" + Right(info2,3) + Lang[56] + "\uE003" + x[i].getElementsByTagName("param")[5].childNodes[0].nodeValue + "\uE003"; // Channel info1 += "\uE003" + Left(x[i].getElementsByTagName("param")[1].childNodes[0].nodeValue,25) + "\uE003"; // Programm Title info1 += "\n"; } } catch(e) { alert("Get SearchTimer INFO problem: " + e); } osdepginfo.innerHTML = "<center><pre style='" + color_main_head + ";'>" + searchtimersSearch[timerID] + "\n </pre></center><pre>" + info1 + "</pre>" ; } // End of Menu section // MPD Section function MPD(ev) { // alert("Media player state changed: " + ev); // alert("Media player state changed: state=" + ev.state + ", reason=" + ev.reason + ", code=" + ev.code); // alert("Media player error :" + mediaPlayer.getError().details); if (MPDListener == 0) { if (ev.state == 6 ) { if (ev.reason == "CommandClose" && ErrorAgain == 0) { setTimeout("mediaPlayer.open(URL);mediaPlayer.play(1000);GetEPG(currChan);ExtraStuff();",500); ErrorAgain = 1; } else { ErrorAgain = 0; alert("Media player state changed: state=" + ev.state + ", reason=" + ev.reason + ", code=" + ev.code); showDisplay("ERRR", false, 100, 0 ); if (experimental) { settimer(0,ev.reason,0,2); } else { settimer(0,Lang[67],0,2); } } } } else { if ( ev.state == 6 && ev.reason == "HostUnreachable" ) { showDisplay("ERRR", false, 100, 0 ); mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[60] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>" + Lang[34] + "\n 0 -" + Lang[9] + "\n 9 -" + Lang[61] + "\n\n<center style='" + color_main_head + ";'>" + Lang[62] + ": \n" + server_ip + MPDAddress + "</center></pre>"; } else if ( ev.state == 2 ) { // && ev.reason == "PositionEnd" ) { showDisplay("STOP", false, 100, 0 ); mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[60] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>" + Lang[34] + "\n 0 -" + Lang[9] + "\n 9 -" + Lang[63] + "\n\n<center style='" + color_main_head + ";'>" + Lang[64] + ": \n" + server_ip + MPDAddress + "\n" + Lang[65] + "</center></pre>"; } else if ( ev.state == 3 && ev.reason == "CommandPlay" ) { showDisplay("MPD", false, 100, 0 ); mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[60] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>" + Lang[34] + "\n 0 -" + Lang[9] + "\n\n\n<center style='" + color_main_head + ";'>" + Lang[64] + ": \n" + server_ip + MPDAddress + "</center></pre>"; } else { showDisplay("ERRR", false, 100, 0 ); mainmenu.innerHTML = "<h1><center style='font-size:" + fsMenuMain + ";" + color_main_head + ";'>" + Lang[60] + "</center></h1><pre style='" + color_main_font + ";font-size:" + fsMenu + ";'>" + Lang[34] + "\n 0 -" + Lang[9] + "\n 9 -" + Lang[63] + "\n\n<center style='" + color_main_head + ";'>Error : " + ev.state + "\n" + Lang[66] + ": " + ev.reason + "</center></pre>"; } } } function playMPD(uri) { try { if (mediaPlayer.getState() != mediaPlayer.STATE_IDLE) { mediaPlayer.close(); } MPDListener = 1; mediaPlayer.open(uri); mediaPlayer.play(1000); } catch (e) { alert("Failed opening recording: " + e); return; } } // End of MPD Section // Media Player Section function LoadMediaSettings() { subgroup = 0; isMediaMenu = 1; isFullscreen = 0; if (getRecOK !== 2) { showDisplay("STOP", false, 100, 0 ); } currMed = 0; if (getRecOK) { showMediaList();} mediaPlayer.addEventListener(mediaPlayer.ON_POSITION_CHANGED, ShowMediaOSD); mediaPlayer.addEventListener(mediaPlayer.ON_STATE_CHANGED, onStateChanged); } function UnloadMediaSettings() { mediaPlayer.removeEventListener(mediaPlayer.ON_POSITION_CHANGED, ShowMediaOSD); mediaPlayer.removeEventListener(mediaPlayer.ON_STATE_CHANGED, onStateChanged); mediaList.style.opacity = 0; osdmedia.style.opacity = 0; osdtime.style.opacity = 0; osdepginfo.style.opacity = 0; mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[0] + "</center></h1>"; showDisplay(Right(currChan.toString(),4), false, 100, 0 ); isMediaMenu = 0; isFullscreen = 1; isPause = 0; set_yellow_key = 0; if (mediaPlayer.getState() != mediaPlayer.STATE_PLAYING ) { play(channels[currChan]); } } function onKeyMedia(keyCode) { if (DelisOK) { switch(keyCode) { case "Accept": mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[0] + "</center></h1>"; switchtimer.style.opacity = 0; setTimeout("DelRec2(); getRecList(); showMediaList();",100) default: switchtimer.style.opacity = 0; DelisOK = 0; break; } // end of switch } else if (mediaList.style.opacity != 0) { switch(keyCode) { case "BrowserBack": if (subgroup && osdepginfo.style.opacity == 0) { mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[0] + "</center></h1>"; setTimeout("getRecList(); showMediaList();",100) subgroup = 0; break; } if (osdepginfo.style.opacity == 1) { osdepginfo.style.opacity = 0; break; } case "TV": UnloadMediaSettings(); break; case "Yellow": if (set_yellow_key) { //hide/display schedule with same button UnloadMediaSettings(); } break; case "Right": if (getRecOK !== 0) { for (var i=0;i<10;i++) { do { incMed(1); } // while (!recTitl[currMed]); while (!recList[currMed]); } showMediaList(); } break; case "Left": if (getRecOK !== 0) { for (var i=0;i<10;i++) { do { decMed(1); } // while (!recTitl[currMed]); while (!recList[currMed]); } showMediaList(); } break; case "Down": if (getRecOK !== 0) { do { incMed(1); } // while (!recTitl[currMed]); while (!recList[currMed]); showMediaList(); } break; case "Up": if (getRecOK !== 0) { do { decMed(1); } // while (!recTitl[currMed]); while (!recList[currMed]); showMediaList(); } break; case "Accept": case "MediaPlayPause": if (getRecOK == 2) { ShowInfo(); osdepginfo.style.opacity = 1 - osdepginfo.style.opacity; } if (getRecOK == 1) { if (recGroup[currMed] !== 0 && subgroup == 0 && ShowSubDir) { setTimeout("MakeRecList3(recGroup[currMed]); showMediaList();",100) subgroup = 1; } else { recList[currMed] = "\u0003" + recList[currMed].substring(1); mediaList.style.opacity = 0; if (get_recordings == 1) { setTimeout("GetMarks(); getResume(); playRec(recLink[currMed]+ '?mode=streamtoend&time=' + position);",100); } else if (get_recordings == 2) { // setTimeout("playRec(recLink[currMed]+ '?pos=resume');",100) position = 0; setTimeout("playRec(recLink[currMed]);",100) } } } break; case "Red": if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only delete item if it isn't a subdir marker DelRec(); } if (getRecOK == 2) { //set timer settimer(recStrt[currMed],recTitl[currMed],recDura[currMed],1); } break; case "Blue": // only show info if not a subdir marker or if in EPG mode if ( (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) || getRecOK == 2) { ShowInfo(); osdepginfo.style.opacity = 1 - osdepginfo.style.opacity; } break; case "Green": if (getRecOK == 2 && mediaRecorder) { //set timer only if mediaRecorder = 1, unit has harddisk settimer(recStrt[currMed],recTitl[currMed],recDura[currMed],3); } break; case "VolumeMute": VolumeMute(); break; case "VolumeUp": VolumeUp(); break; case "VolumeDown": VolumeDown(); break; case KEY_REC: case "MediaRecord": // make timer for recording if (getRecOK == 2) { //set timer settimer(recStrt[currMed],recTitl[currMed],recDura[currMed],2); ServerTimer(channels[currChan],recGUID[currMed]); } break; case KEY_0: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only rewind file if it isn't a subdir marker setResumeNull(); showMediaList(); } break; case KEY_1: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(1); } break; case KEY_2: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(2); } break; case KEY_3: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(3); } break; case KEY_4: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(4); } break; case KEY_5: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(5); } break; case KEY_6: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(6); } break; case KEY_7: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(7); } break; case KEY_8: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(8); } break; case KEY_9: if (getRecOK == 1 && (recGroup[currMed] == 0 || subgroup == 1)) { // Only do reccmds if it isn't a subdir marker reccmds(9); } break; default: break; } // end of switch } else { switch(keyCode) { case "BrowserBack": // ShowInfo(); // osdepginfo.style.opacity = 1 - osdepginfo.style.opacity; break; case "TV": setResume(); play(channels[currChan]); UnloadMediaSettings(); break; break; case "Down": if (mediaPlayer.getState() != mediaPlayer.STATE_PAUSED) { showDisplay("PAUS", false, 100, 0 ); mediaPlayer.play(0); } break; case "Up": if (mediaPlayer.getState() != mediaPlayer.STATE_PLAYING) { if (currMed == -1 ) { showDisplay("PLAY", false, 100, 0 ); mediaPlayer.play(1000); } else { position += (mediaPlayer.getPosition()/1000); if (get_recordings == 1) { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } } } break; case "Accept": osdmedia.style.opacity = 1 - osdmedia.style.opacity; osdtime.style.opacity = osdmedia.style.opacity; ShowMediaOSD(); break; case "Green": if (audio_dyn < (lang_prio_dyn.length -1)) { audio_dyn += 1} else { audio_dyn = 0 } if (lang_prio_dyn.length > 1) { is.setObject("cfg.media.audio.languagepriority",lang_prio_dyn[audio_dyn] + "," + lang_prio[audio],is.STORAGE_PERMANENT); osdlang.style.opacity = 1; osdlang.innerHTML = "<img src='unmute.png'> " + lang_prio_dyn[audio_dyn] + " "; setTimeout("osdlang.style.opacity = 0; ", 3000); } break; case "Yellow": ShowSubs = 1 - ShowSubs; videoplane.subtitles = Boolean(ShowSubs); // Enable subtitles or Disable subtitles break; case "Blue": if ( isPause == 0 ) { ShowInfo(); osdepginfo.style.opacity = 1 - osdepginfo.style.opacity; } break; case "Red": GetMarks(); ShowMediaOSD(); break; case "Menu": osdepginfo.style.opacity = 0; osdepginfonext.style.opacity = 0; isSetupMenu = 1; mainmenu.style.opacity = 0.8; menu = 6; InitMenu(menu); break; case "VolumeMute": VolumeMute(); break; case "VolumeUp": VolumeUp() break; case "VolumeDown": VolumeDown(); break; case KEY_REC: case "MediaRecord": // recordStart(recLink[currMed]); // UnloadMediaSettings(); break; case "MediaRewind": if (mediaPlayer.getState() != mediaPlayer.STATE_IDLE) { mediaPlayer.play(-4000); showDisplay("REW", false, 100, 0 ); } break; case "MediaForward": if (mediaPlayer.getState() != mediaPlayer.STATE_IDLE) { mediaPlayer.play(4000); showDisplay("FF", false, 100, 0 ); } break; case "MediaStop": if (currMed == -1 || isPause == 1) { osdepginfo.style.opacity = 0; isFullscreen = 1; play(channels[currChan]); UnloadMediaSettings(); } else { setResume(); osdepginfo.style.opacity = 0; isFullscreen = 0; play(channels[currChan]); isFullscreen = 1; // if (isRecording == 1) { // recordStop(); // isRecording = 0; // } mediaList.style.opacity = 0.9; showDisplay("STOP", false, 100, 0 ); showMediaList(); } break; case "MediaPlayPause": if (mediaPlayer.getState() != mediaPlayer.STATE_PAUSED) { showDisplay("PAUS", false, 100, 0 ); mediaPlayer.play(0); } else { if (currMed == -1 ) { showDisplay("PLAY", false, 100, 0 ); mediaPlayer.play(1000); } else { position += (mediaPlayer.getPosition()/1000); if (get_recordings == 1) { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } } } break; case KEY_1: position += (mediaPlayer.getPosition()/1000) - 30; if (position <= 0) { position = 0;} if (get_recordings == 1) { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } break; case KEY_4: position += (mediaPlayer.getPosition()/1000) - 60; if (position <= 0) { position = 0;} if (get_recordings == 1) { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } break; case KEY_7: position += (mediaPlayer.getPosition()/1000) - 240; if (position <= 0) { position = 0;} if (get_recordings == 1) { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } break; case KEY_5: if (recMark.length>posMark && get_recordings == 1) { position = recMark[posMark]; playRec(recLink[currMed] + "?mode=streamtoend&time=" + position); } break; case KEY_2: if (posMark>0 && get_recordings == 1) { posMark -= 1; position = recMark[posMark]; playRec(recLink[currMed] + "?mode=streamtoend&time=" + position); } break; case KEY_8: if (recMark[posMark+1] && get_recordings == 1) { posMark += 1; position = recMark[posMark]; playRec(recLink[currMed] + "?mode=streamtoend&time=" + position); } break; case KEY_3: position += (mediaPlayer.getPosition()/1000) + 30; if (get_recordings == 1) { if (position >= recDura[currMed]) { BackToTV(); } else { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } break; case KEY_6: position += (mediaPlayer.getPosition()/1000) + 60; if (get_recordings == 1) { if (position >= recDura[currMed]) { BackToTV(); } else { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } break; case KEY_9: position += (mediaPlayer.getPosition()/1000) + 240; if (get_recordings == 1) { if (position >= recDura[currMed]) { BackToTV(); } else { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } break; case KEY_0: position = 0; posMark = 0; if (get_recordings == 1) { playRec((recLink[currMed] + "?mode=streamtoend&time=" + position)); } else if (get_recordings == 2) { playRec((recLink[currMed] + "?pos=time." + position)); } break; default: break; } // end of switch } // end of if } function getRecList() { getVDRstatus(); MaxInGroup = 14; subgroup = 0; try { if (get_recordings ==1) { // get recordings from smartTVWeb xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + recServ + recPath + "?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("item"); nrMedia = x.length - 1; recTitl.length = 0; rec_lst.length = 0; if (UseNewReclist && recPath == "/recordings.xml") { for (var i=0;i<x.length;i++) { rec_lst[i] = new Array(); for (var yy=0;yy<9;yy++) { rec_lst[i][yy] = new Array(); } rec_lst[i][0] = (x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue); rec_lst[i][0] = rec_lst[i][0].split("~"); rec_lst[i][1] = (x[i].getElementsByTagName("enclosure")[0].getAttribute('url')); rec_lst[i][2] = (x[i].getElementsByTagName("description")[0].childNodes[0].nodeValue); rec_lst[i][3] = (x[i].getElementsByTagName("duration")[0].childNodes[0].nodeValue); rec_lst[i][4] = (x[i].getElementsByTagName("start")[0].childNodes[0].nodeValue); rec_lst[i][5] = (x[i].getElementsByTagName("isnew")[0].childNodes[0].nodeValue); rec_lst[i][6] = (x[i].getElementsByTagName("guid")[0].childNodes[0].nodeValue); //Get channel number from recordings, shows right names only if server & client use same channel order recDummy = rec_lst[i][6].split("."); recDummy = recDummy[(recDummy.length-2)].split("-"); rec_lst[i][7] = recDummy[0] + "\uE003-\uE003" + channelsnames[(recDummy[0])]; rec_lst[i][8] = protChn[Number(Left((recDummy[0] / 1000),1))]; } //Get channel number from recordings rec_lst.sort(); for (var i=0;i<x.length;i++) { recTitl[i] = rec_lst[i][0]; recLink[i] = rec_lst[i][1]; recDesc[i] = rec_lst[i][2]; recDura[i] = rec_lst[i][3]; recStrt[i] = rec_lst[i][4]; rec_New[i] = rec_lst[i][5]; recGUID[i] = rec_lst[i][6]; recChan[i] = rec_lst[i][7]; recProt[i] = rec_lst[i][8]; } recProt[i] = 1; } else { // old recordings list function // also used for media listing for (var i=0;i<x.length;i++) { recTitl[i] = (x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue); recTitl[i] = recTitl[i].split("~"); // recLink[i] = (x[i].getElementsByTagName("link")[0].childNodes[0].nodeValue); recLink[i] = (x[i].getElementsByTagName("enclosure")[0].getAttribute('url')); recDesc[i] = (x[i].getElementsByTagName("description")[0].childNodes[0].nodeValue); recDura[i] = (x[i].getElementsByTagName("duration")[0].childNodes[0].nodeValue); recStrt[i] = (x[i].getElementsByTagName("start")[0].childNodes[0].nodeValue); rec_New[i] = (x[i].getElementsByTagName("isnew")[0].childNodes[0].nodeValue); recGUID[i] = (x[i].getElementsByTagName("guid")[0].childNodes[0].nodeValue); if (recPath == "/recordings.xml") { //Get channel number from recordings recDummy = recGUID[i].split("."); recDummy = recDummy[(recDummy.length-2)].split("-"); recChan[i] = recDummy[0] + "\uE003-\uE003" + channelsnames[(recDummy[0])]; recProt[i] = protChn[Number(Left((recDummy[0] / 1000),1))]; } else { //Media directory recChan[i] = "Media File"; recProt[i] = 0; // No protection for Media Files. } } // try to fix display double entries in the last directory. (Only shown for some time after deleting files, should be fixed now) recProt[i] = 1; } } else if (get_recordings == 2) { //get recordings from streamdev //no media directory or delete support xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + StreamPort + "recordings.rss?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("item"); nrMedia = x.length - 1; recTitl.length = 0; for (var i=0;i<x.length;i++) { rec_lst[i] = new Array(); for (var yy=0;yy<9;yy++) { rec_lst[i][yy] = new Array(); } rec_lst[i][0] = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue; rec_lst[i][0] = rec_lst[i][0].split("~"); rec_lst[i][0][0] = Right(rec_lst[i][0][0], (rec_lst[i][0][0].length - 18)); if (Left(rec_lst[i][0][0],1) == " ") { rec_lst[i][0][0] = Right(rec_lst[i][0][0], (rec_lst[i][0][0].length - 1)); } if (Left(rec_lst[i][0][0],1) == " ") { rec_lst[i][0][0] = Right(rec_lst[i][0][0], (rec_lst[i][0][0].length - 1)); } rec_lst[i][1] = x[i].getElementsByTagName("enclosure")[0].getAttribute('url'); rec_lst[i][2] = ""; rec_lst[i][3] = ""; rec_lst[i][4] = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue; rec_lst[i][4] = rec_lst[i][4].split(" "); rec_lst[i][4] = rec_lst[i][4][1] + " " + rec_lst[i][4][2]; rec_lst[i][5] = ""; rec_lst[i][6] = x[i].getElementsByTagName("link")[0].childNodes[0].nodeValue; rec_lst[i][7] = 0; rec_lst[i][8] = 0; } rec_lst.sort(); for (var i=0;i<x.length;i++) { recTitl[i] = rec_lst[i][0]; recLink[i] = rec_lst[i][1]; recDesc[i] = rec_lst[i][2]; recDura[i] = rec_lst[i][3]; recStrt[i] = rec_lst[i][4]; rec_New[i] = rec_lst[i][5]; recGUID[i] = rec_lst[i][6]; recChan[i] = rec_lst[i][7]; recProt[i] = rec_lst[i][8]; } recProt[i] = 1; } else if (get_recordings == 0) { // get recordings from restfulapi xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/recordings.xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("recording"); nrMedia = x.length - 1; recTitl.length = 0; rec_lst.length = 0; if (UseNewReclist) { for (var i=0;i<x.length;i++) { rec_lst[i] = new Array(); for (var yy=0;yy<9;yy++) { rec_lst[i][yy] = new Array(); } rec_lst[i][0] = x[i].getElementsByTagName("param")[1].childNodes[0].nodeValue; rec_lst[i][0] = rec_lst[i][0].split("~"); rec_lst[i][1] = x[i].getElementsByTagName("param")[2].childNodes[0].nodeValue; rec_lst[i][2] = x[i].getElementsByTagName("param")[13].textContent; rec_lst[i][3] = x[i].getElementsByTagName("param")[8].childNodes[0].nodeValue; rec_lst[i][4] = x[i].getElementsByTagName("param")[14].childNodes[0].nodeValue; rec_lst[i][5] = x[i].getElementsByTagName("param")[4].childNodes[0].nodeValue; rec_lst[i][6] = x[i].getElementsByTagName("param")[0].childNodes[0].nodeValue; //Get channel number from recordings, shows right names only if server & client use same channel order recDummy = rec_lst[i][1].split("."); recDummy = recDummy[(recDummy.length-2)].split("-"); rec_lst[i][7] = recDummy[0] + "\uE003-\uE003" + channelsnames[(recDummy[0])]; rec_lst[i][8] = protChn[Number(Left((recDummy[0] / 1000),1))]; } //Get channel number from recordings rec_lst.sort(); for (var i=0;i<x.length;i++) { recTitl[i] = rec_lst[i][0]; recLink[i] = rec_lst[i][1]; recDesc[i] = rec_lst[i][2]; recDura[i] = rec_lst[i][3]; recStrt[i] = rec_lst[i][4]; rec_New[i] = rec_lst[i][5]; recGUID[i] = rec_lst[i][6]; recChan[i] = rec_lst[i][7]; recProt[i] = rec_lst[i][8]; } recProt[i] = 1; } else { // old recordings list function // also used for media listing for (var i=0;i<x.length;i++) { recTitl[i] = (x[i].getElementsByTagName("param")[1].childNodes[0].nodeValue); recTitl[i] = recTitl[i].split("~"); recLink[i] = (x[i].getElementsByTagName("param")[2].childNodes[0].nodeValue); recDesc[i] = (x[i].getElementsByTagName("param")[13].childNodes[0].nodeValue); recDura[i] = (x[i].getElementsByTagName("param")[8].childNodes[0].nodeValue); recStrt[i] = (x[i].getElementsByTagName("param")[14].childNodes[0].nodeValue); rec_New[i] = (x[i].getElementsByTagName("param")[4].childNodes[0].nodeValue); recGUID[i] = (x[i].getElementsByTagName("param")[0].childNodes[0].nodeValue); //Get channel number from recordings recDummy = recLink[i].split("."); recDummy = recDummy[(recDummy.length-2)].split("-"); recChan[i] = recDummy[0] + "\uE003-\uE003" + channelsnames[(recDummy[0])]; recProt[i] = protChn[Number(Left((recDummy[0] / 1000),1))]; } // try to fix display double entries in the last directory. (Only shown for some time after deleting files, should be fixed now) recProt[i] = 1; } } //end of get_recordings if (ShowSubDir) { MakeRecList2(); } else { MakeRecList(); } if (i!==0) { getRecOK = 1; } else { getRecOK = 0; mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[38] + "</center><pre>\n\n\n" + Lang[37] + "</pre></h1>"; } } catch(e) { alert("Get Recordings problem: " + e); getRecOK = 0; mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[38] + "</center><pre>\n\n\n" + Lang[39] + "</pre></h1>"; } } function GetMarks() { if (get_marks==1) { try { posMark = 0; xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + recServ + "/getMarks.xml?guid=" + recGUID[currMed] + "&" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; recMark = []; var x=xmlDoc.getElementsByTagName("mark"); for (var i=0;i<x.length;i++) { var y = x[i].childNodes[0].nodeValue.split(","); recMark[i] = Number(y[0]); } } catch(e) { alert("Getting Marks problem: " + e); } } else { try { posMark = 0; xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/recordings/" + currMed + ".xml?marks=true&" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; recMark = []; var x=xmlDoc.getElementsByTagName("mark"); for (var i=0;i<x.length;i++) { var y = x[i].childNodes[0].nodeValue.split(":"); recMark[i] = Number(y[0]*3600) + Number(y[1]*60) + Number(y[2]); } } catch(e) { alert("Getting Marks problem: " + e); } } } function setResume() { if (get_recordings == 1) { try { position += (mediaPlayer.getPosition()/1000) var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST", server_ip + recServ + "/setResume.xml?guid=" + recGUID[currMed] + "&resume=" + position, false); xmlhttp.send(); recList[currMed] = "\uE003" + recList[currMed].substring(1); } catch(e) { alert("Setting Resume problem: " + e); } } } function getResume() { position = 0; if (get_recordings == 1) { try { var xmlhttp = new XMLHttpRequest(); var i = 0; xmlhttp.open("GET", server_ip + recServ + "/getResume.xml?guid=" + recGUID[currMed] + "&" + new Date().getTime(), false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; i = xmlDoc.getElementsByTagName("resume")[0].childNodes[0].nodeValue.split(","); position = Number(i[0]); } catch(e) { alert("Getting Resume problem: " + e); } } } function setResumeNull() { if (get_recordings == 1) { try { var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST", server_ip + recServ + "/setResume.xml?guid=" + recGUID[currMed] + "&resume=0", false); xmlhttp.send(); recList[currMed] = "\uE010" + recList[currMed].substring(1); } catch(e) { alert("Setting Resume problem: " + e); } } } function reccmds(option) { try { option = Number(option); if (RecCmds[option] > -1 ) { var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST", server_ip + recServ + "/execreccmd?cmd=" + RecCmds[option] + "&guid=\"" + recGUID[currMed] + "\"", false); xmlhttp.send(); recList[currMed] = RecCmdsIcon[option] + recList[currMed].substring(1); showMediaList(); } } catch(e) { alert("Execute reccmds problem: " + e); } } function CheckPlugins() { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + recServ + "/vdrstatus.xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; smartTVplugin = 1; } catch(e) { alert("NO smartTVplugin: " + e); smartTVplugin = 0; } //Check for Restfulapi try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/info.xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; Restfulapiplugin = 1; } catch(e) { alert("NO Restfulapiplugin: " + e); Restfulapiplugin = 0; } } function getVDRstatus() { if (smartTVplugin == 1) { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + recServ + "/vdrstatus.xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; // var x=xmlDoc.getElementsByTagName("vdrstatus"); var x=xmlDoc.getElementsByTagName("diskspace"); free_space = x[0].getElementsByTagName("free")[0].childNodes[0].nodeValue; perc_space = x[0].getElementsByTagName("percent")[0].childNodes[0].nodeValue; } catch(e) { alert("Get VDR Status problem: " + e); } } if (smartTVplugin == 0 && Restfulapiplugin == 1) { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/info.xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("diskusage"); free_space = x[0].getElementsByTagName("free_mb")[0].childNodes[0].nodeValue; perc_space = x[0].getElementsByTagName("used_percent")[0].childNodes[0].nodeValue; } catch(e) { alert("Get VDR Status problem: " + e); } } } function DelRec() { if (get_recordings == 1) { if (osdepginfo.style.opacity == 1) {osdepginfo.style.opacity = 0;} try { //popup for confirm switchtimer.style.opacity = 1; switchtimer.innerHTML = "<pre><center>" + Lang[44] +"\n" + Lang[45] + "\n\n " + Left(recTitl[currMed],30) + "</center></pre>"; // Recording Name DelisOK = 1 } catch(e) { alert("Delete Recordings problem: " + e); } } } function DelRec2() { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("POST",(server_ip + recServ + "/deleteRecording.xml?id=" + recGUID[currMed] ),false); xmlhttp.send(); recList[currMed] = ""; recGroup[currMed] = -1; recProt[currMed] = 0; } catch(e) { alert("Delete Recordings problem: " + e); } } function MakeRecList() { //old style list var x = ""; var xx = ""; for (var i=0;i<recTitl.length;i++) { if (recTitl[i][recMap + 2]) { if (recTitl[i][recMap + 1] != xx) { var y = recTitl[i][recMap].length + 1; if (recTitl[i][recMap] != x) { recList[i] = "\uE002 " + recTitl[i][recMap] + " \uE002 " + String(recTitl[i]).substring(y); } else { recList[i] = "\uE003 " + new Array(y).join("\uE003") + " \uE002 " + String(recTitl[i]).substring(y); } } else { var y = recTitl[i][recMap + 1].length + recTitl[i][recMap].length + 4; recList[i] = new Array(y).join("\uE003") + String(recTitl[i]).substring(y - 2); } } else if (recTitl[i][recMap + 1]) { if (recTitl[i][recMap] != x) { recList[i] = "\uE002" + recTitl[i]; } else { var y = recTitl[i][recMap].length + 4; recList[i] = new Array(y).join("\uE003") + String(recTitl[i]).substring(y - 3); } } else { recList[i] = "\uE003" + recTitl[i]; } if (get_recordings == 2 ) { result = recStrt[i]; } else{ AddInfo(i); } if (rec_New[i] == "true" ) { recList[i] = "\uE010" + result + "\uE003" + recList[i]; } else { recList[i] = "\uE003" + result + "\uE003" + recList[i]; } x = recTitl[i][recMap]; xx = recTitl[i][recMap + 1]; if ((recProt[i] == 1) && (ShowProtectedChannels == 1)) { recList[i] = "";} } } function MakeRecList2() { //new style with sub maps var x = ""; var xx = 0; for (var i=0;i<recTitl.length;i++) { if (recTitl[i][1]) { if (recTitl[i][0] != x) { recList[i] = "\uE002\uE003" + recTitl[i][0]; xx += 1; } else { recList[i] = "" ; } recGroup[i] = xx; } else { recGroup[i] = 0; if (get_recordings == 2 ) { result = recStrt[i]; } else{ AddInfo(i); result += "\uE003" + (recDura[i]/60).toFixed(0); } if (rec_New[i] == "true" ) { recList[i] = "\uE010" + result + "\uE003" + recTitl[i]; } else { recList[i] = "\uE003" + result + "\uE003" + recTitl[i]; } } if ((recProt[i] == 1) && (ShowProtectedChannels == 1)) { recList[i] = "";} x = recTitl[i][0]; } } function MakeRecList3(GroupID) { MaxInGroup = -1; for (var i=0;i<recTitl.length;i++) { if (recGroup[i] == GroupID) { var tmp = ""; for (var ii=1;ii<recTitl[i].length;ii++) { tmp += "\uE003" + recTitl[i][ii]; } if (get_recordings == 2 ) { result = recStrt[i]; } else{ AddInfo(i); result += "\uE003" + (recDura[i]/60).toFixed(0); } if (rec_New[i] == "true" ) { recList[i] = "\uE010" + result + tmp; // recTitl[i]; } else { recList[i] = "\uE003" + result + tmp; //recTitl[i]; } MaxInGroup = MaxInGroup + 1; if ((recProt[i] == 1) && (ShowProtectedChannels == 1)) { recList[i] = "";} } else { recList[i] = "" ; } } } function AddInfo(info) { //Add Date to item date = new Date(Number(recStrt[info])*1000); year = date.getFullYear(); month = date.getMonth(); d = date.getDate(); h = date.getHours(); m = date.getMinutes(); month=addzero(month + 1); d=addzero(d); h=addzero(h); m=addzero(m); if ( year==1970 ) { result = "\uE003"; } else { result = "\uE003" + d + '-' + month + '-' + year + ' ' + h + ':' + m; } // } function showMediaList() { if (osdepginfo.style.opacity == 1) {osdepginfo.style.opacity = 0;} osdmedia.style.opacity = 0; osdtime.style.opacity = 0; var liststyle = ""; listMed = currMed - 1; var MaxMed = -1; if (getRecOK == 1) { var htmlstring = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[38] + "(" + Lang[46] + (100 - perc_space) + "%, " + (free_space/1024).toFixed(0) + " GB) </center></h1><table border='0'><tr>"; if (subgroup) { if (MaxInGroup < 14){ MaxMed = MaxInGroup; } else {MaxMed = 14; } } if (!subgroup) { for(var i=0; i<=nrMedia; i++) { if (recList[i]) { MaxMed += 1;} } } } else { if (nrMedia < 14) {MaxMed = nrMedia; } else {MaxMed = 14; } var htmlstring = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[11] + channelsnames[currChan] + " </center></h1><table border='0'><tr>"; } if (MaxMed > 14) { MaxMed = 14; } if (MaxMed < 0 ) { MaxMed = 0; } for(var i=currMed; i<=currMed + MaxMed; i++) { if (listMed>=nrMedia) { listMed= -1; } if (listMed<-1) { listMed=nrMedia - 1; } // if (listMed>nrMedia) { listMed= -1; } do { listMed += 1; } while (!recList[listMed] && (listMed<=nrMedia)); if ( listMed == currMed) { liststyle = " style='background:" + color_bg + ";-webkit-border-radius:25px;"; } else { liststyle = " style='"; } // alert(recList[listMed]); // alert(listMed + " : " + nrMedia); if (listMed > nrMedia) { recList[listMed] = ""; } if (recList[listMed]) { //Solves empty string at the end. htmlstring += "<td" + liststyle + "font-size:" + fsReclist + ";'>\uE003" + Left(recList[listMed],60) + "\uE003\uE003</td></tr>"; } } mediaList.innerHTML = htmlstring + "</table>"; //ShowInfo(); } function getServerSchedule() { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/events/" + channels[currChan] + ".xml?timespan=" + serverEPGdays + "&" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("event"); nrMedia = x.length - 1; for (var i=0;i<x.length;i++) { /* // restful api layout dd 10/04/2013 // <event> // 1 <param name="id">516</param> // 2 <param name="title">Thuis</param> // 3 <param name="short_text"/ > // 4 <param name="description">Soapserie (BE).</param> // 5 <param name="channel">S19.2E-53-1105-4016</param> // 6 <param name="channel_name">BVN (S)</param> // 7 <param name="start_time">1365608700</param> // 8 <param name="duration">1500</param> // 9 <param name="table_id">78</param> // 10 <param name="version">7</param> // 11 <param name="parental_rating">0</param> // 12 <param name="vps">0</param> // 13 <param name="images">0</param> // 14 <param name="components"> // <component stream="1" type="1" language="dut" description="4:3"/ > // <component stream="2" type="1" language="dut" description=""/ ></param> // 15 <param name="contents"> // 16 <content name="Soap/Melodrama/Folkloric"/ ></param> // 17 <param name="raw_contents"><raw_content name="21"/ ></param> // 18 <param name="timer_exists">false</param> // 19 <param name="timer_active">false</param> // 20 <param name="timer_id"/ > // </event> */ recTitl[i] = x[i].getElementsByTagName("param")[1].childNodes[0].nodeValue; try { recDesc[i] = x[i].getElementsByTagName("param")[3].childNodes[0].nodeValue; } catch(e) { recDesc[i] = ""; } recDura[i] = x[i].getElementsByTagName("param")[7].childNodes[0].nodeValue; recStrt[i] = x[i].getElementsByTagName("param")[6].childNodes[0].nodeValue; recChan[i] = currChan + "\uE003-\uE003" + channelsnames[currChan]; recGUID[i] = x[i].getElementsByTagName("param")[0].childNodes[0].nodeValue; date = new Date(Number(recStrt[i])*1000); year = date.getFullYear(); month = date.getMonth(); d = date.getDate(); day = date.getDay(); h = date.getHours(); m = date.getMinutes(); h=addzero(h); m=addzero(m); recList[i] = ''+days[day]+' '+d+' '+months[month]+' '+year+' '+h+':'+m + " " + recTitl[i]; } getRecOK = 2; } catch(e) { alert("Get EPG problem: " + e); getRecOK = 0; mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[50] + "</center><pre>\n\n\n" + Lang[51] + "</pre></h1>"; } } function getSchedule(schchan){ SI = ""; recTitl.length = 0; nrMedia = 0; try { StreamInfo(schchan); eitService = toi.statics.ToiDvbEitCacheServiceItem.create(SI[1],SI[2],SI[3]); eitCache.addService(eitService); event = eitCache.getPresentEvent(eitService); events = eitCache.getEvents(eitService, (Math.round(new Date().getTime()/1000.0)), 2000000000); if (event.name) { if (events.more) { var t = eitCache.getEvents(eitService, (Math.round(new Date().getTime()/1000.0)), 2000000000); events.infoSequence.concat(t.infoSequence); events.more = t.more; } nrMedia = events.infoSequence.length - 1; for (var i = 0; i < events.infoSequence.length; i++) { // Double info or scrollbar twice on the screen if nrMedia < 14 while ((i > 0) && (events.infoSequence[i].eventId == events.infoSequence[(i-1)].eventId) && (nrMedia > 14)) { recList[i] = ""; i += 1; } recTitl[i] = events.infoSequence[i].name; recDesc[i] = eitCache.getExtendedEventInfo(eitService,events.infoSequence[i].eventId).extendedInfo; if (recDesc[i] == "" ) { recDesc[i] = eitCache.getExtendedEventInfo(eitService,events.infoSequence[i].eventId).shortInfo;} recDura[i] = events.infoSequence[i].duration; recStrt[i] = events.infoSequence[i].time; recChan[i] = schchan + "\uE003-\uE003" + channelsnames[schchan]; recGUID[i] = events.infoSequence[i].eventId; date = new Date(Number(recStrt[i])*1000); year = date.getFullYear(); month = date.getMonth(); d = date.getDate(); day = date.getDay(); h = date.getHours(); m = date.getMinutes(); h=addzero(h); m=addzero(m); recList[i] = ' ' + days[day] + ' ' + d + ' ' + months[month] + ' ' + year + " " + h + ":" + m + " (" + (recDura[i]/60).toFixed(0) + ") " + Left(recTitl[i],30); } getRecOK = 2; } else { getRecOK = 0; mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[11] + "</center><pre>\n\n\n" + Lang[52] + "</pre></h1>"; if (experimental) { mediaList.innerHTML += "<img src='" + channels[schchan] + ".jpg' style='width:100%; position:absolute; left:0%; top:-11%;'>"; } } } catch(e) { getRecOK = 0; mediaList.innerHTML = "<h1><center style='font-size:" + fsRec + ";" + color_main_head + ";'>" + Lang[11] + "</center><pre>\n\n\n" + Lang[53] + "</pre></h1>"; } } function incMed(step) { currMed += step; if (currMed > nrMedia ) { currMed = 0; } } function decMed(step) { currMed -= step; if (currMed < 0) { currMed = nrMedia; } } function playRec(uri) { try { if (mediaPlayer.getState() != mediaPlayer.STATE_IDLE) { mediaPlayer.close(); } if (osdepginfo.style.opacity == 1) {osdepginfo.style.opacity = 0;} mediaPlayer.open(uri); mediaPlayer.play(1000); showDisplay("PLAY", false, 100, 0 ); } catch (e) { alert("Failed opening recording: " + e); return; } } function pauseRec(uri) { try { if (mediaPlayer.getState() != mediaPlayer.STATE_IDLE) { mediaPlayer.close(); } if (osdepginfo.style.opacity == 1) {osdepginfo.style.opacity = 0;} mediaPlayer.open(uri); mediaPlayer.play(0); showDisplay("PAUS", false, 100, 0 ); } catch (e) { alert("Failed opening recording: " + e); return; } } function createNewAsset() { try { assetId = ams.createAsset(ams.ASSET_PVR); alert("Created " + assetId); } catch(e) { alert("Couldn't create asset: " + e); } } function recordStart(uri) { alert("opening mediaRecorder..."); createNewAsset(); try { mediaRecorder.open(uri, assetId); } catch(e) { alert("Cannot open mediaRecorder. " + e); } try { mediaRecorder.record(); isRecording = 1; } catch(e) { alert("Cannot record! " + e); } } function recordStop() { try { mediaRecorder.close(); isRecording = 0; } catch(e) { alert("Cannot stop mediaRecorder! " + e); } } function onStateChanged(ev) { // alert("Media player state changed: state=" + ev.state + ", reason=" + ev.reason + ", code=" + ev.code); if ( ( ev.state == 6 && ev.reason == "HostUnreachable" ) || ( ev.state == 2 && ev.reason == "PositionEnd" )) { BackToTV(); } } // Start recording/ timeshift function ServerRecordStart() { //Record current program try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + recServ + "/addTimer?guid=" + channels[currChan] + "&" + new Date().getTime() ),false); xmlhttp.send(); if (xmlhttp.responseXML == null) { //settimer(EPG[NowNext][2][currChan],Lang[55],0,2); //Timer not set, try direct recording ServerRecord(); settimer(0,Lang[57],0,2); } else { settimer(EPG[NowNext][2][currChan],EPG[NowNext][1][currChan],0,2); } } catch(e) { alert("Sending Timers to server problem: " + e); settimer(0,Lang[55],0,2); } } function ServerRecord() { //Instant record on server try { xmlhttp=new XMLHttpRequest(); //switch server to current channel xmlhttp.open("POST",(server_ip + RestFulAPI + "/remote/switch/" + channels[currChan]),true); xmlhttp.send(); //start recording setTimeout("xmlhttp.open('POST',(server_ip + RestFulAPI + '/remote/Record'),false);xmlhttp.send();",5000); } catch(e) { alert("Sending key to server problem: " + e); settimer(0,Lang[55],0,2); } //end of function } function ServerPause() { //Instant pause on server ServerRecord(); settimer(EPG[NowNext][2][currChan],Lang[70],0,2); setTimeout("getPauseFile();",6000); //end of function } function getPauseFile() { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + RestFulAPI + "/recordings.xml?" + new Date().getTime()),false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; var x=xmlDoc.getElementsByTagName("recording"); nrMedia = x.length - 1; for (var i=0;i<x.length;i++) { var xx = x[i].getElementsByTagName("param")[2].childNodes[0].nodeValue.split("."); xx = xx[(xx.length-2)].split("-"); if ( xx[0] == currChan ) { recLink[0] = server_ip + recServ + x[i].getElementsByTagName("param")[2].childNodes[0].nodeValue; } } } catch(e) { alert("Get Recordings problem: " + e); } getRecOK = 0; recDura[0] = 0; // 3600;// set to 1 hour LoadMediaSettings();// sets currMed to 0 recTitl[0] = "Time Shift File" position = 0; pauseRec(recLink[0]); } function ServerTimer(guid,evid) { try { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",(server_ip + recServ + "/addTimer?guid=" + guid + "&evid=" + evid + "&" + new Date().getTime() ),false); xmlhttp.send(); } catch(e) { alert("Sending Timers to server problem: " + e); } } function BackToTV() { play(channels[currChan]); if (isPause == 1) { UnloadMediaSettings(); } else { mediaList.style.opacity = 0.9; showDisplay("STOP", false, 100, 0 ); showMediaList(); AvInfo.length = 0; } } function onRecorderStateChanged(event) { // alert("EVENT! " + event.reason + " *** " + event.state); RECicon = "\uE003"; // 0xE003 0x83 Fixed width blank switch (event.state) { case mediaRecorder.STATE_IDLE: // "STATE_IDLE"; break; case mediaRecorder.STATE_CONNECTING: // "STATE_CONNECTING"; break; case mediaRecorder.STATE_PAUSED: // "STATE_PAUSED"; break; case mediaRecorder.STATE_RECORDING: // "STATE_RECORDING"; RECicon = "\uE00B"; // 0xE00B 0x8B REC break; case mediaRecorder.STATE_FAILED: // "STATE_FAILED"; recordStop(); break; } } function ShowMediaOSD() { if (get_recordings == 1) { // Display Name/ length var pos = position + (mediaPlayer.getPosition()/1000); var pos2 = (pos / Number(recDura[currMed])) * 100; if (pos2 < 1) { pos2 = 1;} if (pos2 >100) {pos2 = 100;} // in case of viewing while still recording. if (pos>recMark[posMark] && recMark.length-1>posMark) { posMark += 1;} pos2 = ((pos2 * 140) / 100).toFixed(0); // make it 40% bigger var pos5 = "\uE007" + new Array(pos2 - 1).join("\uE008") + new Array(140 - pos2).join("\uE009") + "\uE00A" var pos4 = ""; var pos6 = pos5; var fontc = color_progress1; var x = 0; for (var i=0; i<recMark.length; i++) { var pos3 = recMark[i] / Number(recDura[currMed]) * 100; pos3 = ((pos3 * 140) / 100).toFixed(0); // make it 40% bigger pos4 += fontc + Left(pos6,pos3 - x); if (fontc == "</font>" + color_progress2) { fontc = "</font>" + color_progress1; } else { fontc = "</font>" + color_progress2;} x = pos3; pos6 = Right(pos5,140 - pos3); } pos4 += "</font>" + color_progress1 + pos6 + "</font>"; var x = (Number(recDura[currMed])/60).toFixed(0); if (pos/60 > x) { x = (pos/60).toFixed(0);} date_time(); osdtime.innerHTML = result; date_time_rec(); osdmedia.innerHTML = "<pre style='" + color_media_osd + ";font-size:" + fsMedia +";'> \n " + (pos/60).toFixed(0) + " / " + x + " " + Left(recTitl[currMed],40) + "\n " + pos4 + "\n " + result + " </pre>"; } else if ( get_recordings == 2) { var pos = position + (mediaPlayer.getPosition()/1000); date_time(); osdtime.innerHTML = result; osdmedia.innerHTML = "<pre style='" + color_media_osd + ";font-size:" + fsMedia +";'> \n " + (pos/60).toFixed(0) + " \n " + Left(recTitl[currMed],40) + "\n \n " + recStrt[currMed] + " </pre>"; } } function ShowInfo() { //Like Show EPG Info date = new Date(Number(recStrt[currMed])*1000); year = date.getFullYear(); month = date.getMonth(); d = date.getDate(); day = date.getDay(); h = date.getHours(); m = date.getMinutes(); h = addzero(h); m = addzero(m); result = '' + days[day] + ' ' + d + ' ' + months[month] + ' ' + year + ' ' + h + ':' + m; if ( mediaList.style.opacity == 0 ) { updateStreamInfo(currMed);} else { AvInfo[currMed] = "";} if (year!==1970) { osdepginfo.innerHTML = "<center><pre style='" + color_epg_head + ";'>" + Left(recTitl[currMed],60) + "</pre><p style='" + color_epg_avinfo + ";'>" + AvInfo[currMed] + "</p><pre style='" + color_epg_title + ";'> " + result + "\n " + (recDura[currMed] / 60).toFixed(0) + Lang[54] + "\n " + recChan[currMed] + " " + "\n </pre><p style='" + color_epg_info + ";'>" + Left(recDesc[currMed],750) + "</p></center>"; } else { //info for non-vdr recordings osdepginfo.innerHTML = "<center><pre style='" + color_epg_head + ";'>" + Left(recTitl[currMed],60) + "\n </pre><p style='" + color_epg_avinfo + ";'>" + AvInfo[currMed] + " " + "\n \n </p></center>"; } } function onScheduledStart(event) { // event is of type ToiSchedulerServiceBooking, see docs var timertype = event.booking.category; if ( timertype == "SwitchOnly") { ClearScreen(); isFullscreen = 1; FullScreen(); isVisible = 0; setVisible(isVisible); setOSDtimer(); //Switch from recordings if (isMediaMenu) { if (mediaList.style.opacity == 0) {setResume();} // No mediamenu on screen so set resume. UnloadMediaSettings(); } prevChan = currChan; currChan = Number(ss.getParameter(event.booking.id, "Channel")); ChanGroup = Number(Left((currChan / 1000),1)); // check if Group isn't protected if ((protChn[ChanGroup] == 1) && (ShowProtectedChannels == 1)) { currChan = prevChan; ChanGroup = Number(Left((currChan / 1000),1)); } // switch only if not already on that channel. if (currChan !== prevChan) { play(channels[currChan]); } } else { try { createNewAsset(); var recChannr = Number(ss.getParameter(event.booking.id, "Channel")); var recGroup = Number(Left((recChannr / 1000),1)); var recChan = 0; if (ServerAdres[recGroup] == "MultiCast" ) { SI=channels[recChannr].split("-"); recChan = SI[4]; } else { recChan = ServerAdres[recGroup] + channels[recChannr]; } mediaRecorder.open(recChan, assetId); var propList = new Array(ams.PROPERTY_SYSTEM_PLAYBACKURI); var properties = ams.getProperties(assetId, propList); var assetURI = properties[0].value; // save the assetId in the booking ss.setParameter(event.booking.id, "assetURI", assetURI); mediaRecorder.record(); alert("Recording to " + assetURI); } catch (e) { alert(e); } } } function onScheduledStop(event) { var timertype = event.booking.category; if ( timertype == "SwitchOnly") { ss.remove(event.booking.id); setOSDtimer(); } else { try { mediaRecorder.close(); } catch (e) { alert(e); } } } function ClearScreen() { isSchedule = 0; schedule.style.opacity = 0; isSetupMenu = 0; epgactive = 0; osdepginfonext.style.opacity = 0; osdepginfo.style.opacity = 0; mainmenu.style.opacity = 0; } </script> <body onload="onLoad()" onunload="onUnload()"> <embed type="application/x-motorola-toi" hidden="true"> <div id="channelList" style="width:100%; height:48%; position:absolute; left:7%; top:4%;;z-index:400;"></div> <div id="colorkeys" style="width:100%; position:absolute; left:10%; top:84%;z-index:401;"></div> <div id="chanlistepg" style="width:42%; position:absolute; left:7%; top:50%;z-index:402;"></div> <videoplane id='videoplane' style='position:absolute;left:0px;top:0px;height:100%;width:100%;z-index:500;'></videoplane> <div id="pipVideoDiv" ></div> <div id="osdvolume" style="width:63%; position:absolute; left:10%; top:80%;z-index:501;opacity:0;">Volume : </div> <div id="osdmedia" style="width:80%;position:absolute;left:10%;top:60%;z-index:505;opacity:0;-webkit-border-radius:50px;"></div> <div id="osdmain" style="width:80%; position:absolute;left:10%;top:60%;bottom:9%;z-index:505;-webkit-border-radius:50px;"></div> <div id="osdtime" style="width:42%; position:absolute; left:58%; top:63%;z-index:505;"></div> <div id="osdname" style="width:69%;height:4%; position:absolute; left:12%; top:66%;z-index:505;"></div> <div id="osdepg" style="width:63%; position:absolute; left:21%; top:69%;z-index:505;"></div> <div id="osdtimer" style="width:7%; position:absolute; left:12%; top:69%;z-index:505;"></div> <div id="osdca" style="width:5%; position:absolute; left:75%; top:67%;z-index:505;"></div> <div id="osdnr" style="width:10%;height:9%; position:absolute; left:12%; top:56%;z-index:505;opacity:0;-webkit-border-radius:25px;"></div> <div id="schedule" style="width:50%; height:75%; position:absolute; left:25%; top:10%;opacity:0;z-index:510;-webkit-border-radius:50px;"></div> <div id="osdmute" style="width:7%; position:absolute; left:76%; top:9%;z-index:515;opacity:0;"><img src="mute.png"></div> <div id="osdlang" style="width:7%; position:absolute; left:76%; top:9%;z-index:515;opacity:0;"></div> <div id="mainmenu" style="width:80%; position:absolute; left:10%; top:10%; bottom:10%;z-index:520;opacity:0;-webkit-border-radius:50px;"></div> <div id="mediaList" style="width:80%; position:absolute; left:10%; top:10%; bottom:10%;z-index:520;opacity:0;-webkit-border-radius:50px;"></div> <div id="switchtimer" style="width:45%; position:absolute; left:21%; top:26%;z-index:530;opacity:0;-webkit-border-radius:25px;"></div> <div id="osdepginfo" style="width:80%; position:absolute; left:10%; top:10%;z-index:525;opacity:0;-webkit-border-radius:50px;"></div> <div id="osdepginfonext" style="width:80%; position:absolute; left:10%; top:10%;z-index:525;opacity:0;-webkit-border-radius:50px;"></div> </body> </html>