-Version = '$Header$';
-// EPG Templates
-var tplUpdateStreamReaderIE = '<iframe id="UpdateStreamReaderIEFixIFrame" src="%(url_updates)" height="0" width="0" scrolling="none" frameborder="0">no iframe support!</iframe>';
-var tplEPGListHeader = '<table width="100%" border="0" cellspacing="1" cellpadding="0">';
-
-var tplEPGListItem = '<tr style="background-color: #DDDDDD;">';
- tplEPGListItem += '<td width="10%">%(date)</td>';
- tplEPGListItem += '<td width="30%">%(servicename)</td>';
- tplEPGListItem += '<td>%(title)</td>';
- tplEPGListItem += '</tr>';
-
- tplEPGListItem += '<tr style="background-color: #DDDDDD;">';
- tplEPGListItem += '<td>%(starttime)</td>';
- tplEPGListItem += '<td>%(duration) min.</td>';
- tplEPGListItem += '<td>%(description)</td>';
- tplEPGListItem += '</tr>';
-
- tplEPGListItem += '<tr style="background-color: #DDDDDD;">';
- tplEPGListItem += '<td valign="top">%(endtime)</td>';
- tplEPGListItem += '<td colspan="2"rowspan="2" id="extdescription%(number)">%(extdescriptionSmall)</td>';
- tplEPGListItem += '</tr>';
-
- tplEPGListItem +='<tr style="background-color: #DDDDDD;"><td>';
- tplEPGListItem +='<a target="_blank" ><img src="/webdata/gfx/timer.png" title="add to Timers" border="0" onclick="addTimerByID(\'%(servicereference)\',\'%(eventid)\',\'0\');"></a> ';
- tplEPGListItem +='<a target="_blank" ><img src="/webdata/gfx/zap.png" title="add zap to Timers" border="0" onclick="addTimerByID(\'%(servicereference)\',\'%(eventid)\',\'1\');"></a> ';
- tplEPGListItem +='<a target="_blank" ><img src="/webdata/gfx/edit.gif" title="edit and add timer" border="0" onclick="loadTimerFormSeconds(0,\'%(start)\',\'%(end)\',0,\'%(servicereference)\',\'%(servicename)\',\'%(title)\',\'%(description)\',\'0\',0,\'%(eventid)\');"></a><br/>';
- tplEPGListItem +='<a target="_blank" href="/web/epgsearch.rss?search=%(title)" ><img src="/webdata/gfx/feed.png" title="RSS-Feed for this Title" border="0"></a><br/>';
- tplEPGListItem +='<a target="_blank" href="http://www.imdb.com/find?s=all&q=%(titleESC)" ><img src="/webdata/gfx/world.png" title="search IMDb" border="0"></a><br/>';
- tplEPGListItem +='</td></tr>';
- tplEPGListItem += '<tr style="background-color: #AAAAAA;">';
- tplEPGListItem += '<td colspan="3"> </td>';
- tplEPGListItem += '</tr>';
-
-var tplEPGListItemExtend = '%(shortTxt) ...<a nohref onclick="setComplete(\'extdescription%(number)\',\'%(txt)\');">more</a>';
-
-var tplEPGListFooter = "</table>";
-
-// ServiceList Templates
-var tplServiceListHeader = '<table border="0" cellpadding="0" cellspacing="0" class="BodyContentChannellist">\n';
- tplServiceListHeader += '<thead class="fixedHeader">\n';
- tplServiceListHeader += '<tr>\n';
- tplServiceListHeader += '<th><div class="sListHeader">ServiceList</div>\n';
- tplServiceListHeader += '<div class="sListSearch">';
- tplServiceListHeader += '<form onSubmit="loadEPGBySearchString(document.getElementById(\'searchText\').value); return false;">';
- tplServiceListHeader += '<input type="text" id="searchText" onfocus="this.value=\'\'" value="Search EPG"/>';
- tplServiceListHeader += '<input style="vertical-align:middle" type="image" src="/webdata/gfx/search.png" alt="search...">';
- tplServiceListHeader += '</form></div></th>';
- tplServiceListHeader += '</tr>\n';
- tplServiceListHeader += '</thead>\n';
- tplServiceListHeader += '<tbody class="scrollContent">\n';
- tplServiceListHeader += '<input type="hidden" id="mainServiceRef" name="mainServiceRef" value="%(mainServiceRef)">\n';
-
-var tplServiceListItem = '<tr id="%(servicereference)extend">\n';
- tplServiceListItem += '<td style="border-top: 2px solid #AAA;" ><div class="sListSName"><a id="%(servicereference)" onclick="zap(this.id);" class="sListSLink">%(servicename)</a></div>';
- tplServiceListItem += '<div class="sListExt"><a onclick="loadEPGByServiceReference(this.id)" id="%(servicereference)"><img src="/webdata/gfx/epg.png" border="0"/></a>\n';
- tplServiceListItem += '<a target="_blank" href="/web/stream.m3u?ref=%(servicereference)"><img src="/webdata/gfx/screen.png" title="stream Service" border="0"></a></div>\n';
- tplServiceListItem += '</tr>\n';
- tplServiceListItem += '<tr>\n';
- tplServiceListItem += '<td colspan="2"><div id="%(servicereference)EPGNOW"></div></td>\n';
- tplServiceListItem += '</tr>\n';
-
-var tplServiceListFooter = "</tbody></table>\n";
-//
-
-var tplServiceListEPGItem = '<div class="sListEPGTime">%(starttime)</div>\n';
- tplServiceListEPGItem += '<div class="sListEPGTitle">%(title)</div>\n';
- tplServiceListEPGItem += '<div class="sListEPGDuration">%(length) Min.</div>\n';
-
-// MovieList Templates
-var tplMovieListHeader = '<table border="0" cellpadding="0" cellspacing="0" class="BodyContentChannellist">\n';
- tplMovieListHeader += '<thead class="fixedHeader">\n';
- tplMovieListHeader += '<tr>\n';
- tplMovieListHeader += '<th><div class="sListHeader" style="color: #000000;">MovieList</div>\n';
- tplMovieListHeader += '<div class="sListSearch">';
- tplMovieListHeader += '<form onSubmit="loadEPGBySearchString(document.getElementById(\'searchText\').value); return false;">';
- tplMovieListHeader += '<input type="text" id="searchText" onfocus="this.value=\'\'" value="Search EPG"/>';
- tplMovieListHeader += '<input style="vertical-align:middle" type="image" src="/webdata/gfx/search.png" alt="search...">';
- tplMovieListHeader += '</form></div></th>';
- tplMovieListHeader += '</tr>\n';
- tplMovieListHeader += '</thead>\n';
- tplMovieListHeader += '<tbody class="scrollContent">\n';
-
-var tplMovieListItem = '<tr>\n';
- tplMovieListItem += '<td><div class="sListSName" title="%(description), %(descriptionextended)">%(title) (%(servicename))</div>';
- tplMovieListItem += '<div class="sListExt">\n';
- tplMovieListItem += '%(tags)\n';
- tplMovieListItem += '<a target="_blank" href="/web/ts.m3u?file=%(filelink)"><img src="/webdata/gfx/screen.png" title="play file" border="0"></a>\n';
- tplMovieListItem += ' <a target="_blank" ><img src="/webdata/gfx/trash.gif" title="delete files" border="0" onclick="delMovieFile(\'%(filename)\',\'%(servicename)\',\'%(title)\',\'%(description)\');"></a>\n';
- tplMovieListItem += '</div>\n';
- tplMovieListItem += '</tr>\n';
-
-var tplMovieListFooter = "</tbody></table>\n";
-
-// TimerList Templates
-var tplTimerListHeader = '<table border="0" height="100%" cellpadding="0" cellspacing="0" class="BodyContentChannellist">\n';
- tplTimerListHeader += '<thead class="fixedHeader">\n';
- tplTimerListHeader += '<tr>\n';
- tplTimerListHeader += '<th><div class="sListHeader" style="color: #000000;">TimerList</div>\n';
- tplTimerListHeader += '<div class="sListSearch">';
- tplTimerListHeader += '<form onSubmit="loadEPGBySearchString(document.getElementById(\'searchText\').value); return false;">';
- tplTimerListHeader += '<input type="text" id="searchText" onfocus="this.value=\'\'" value="Search EPG"/>';
- tplTimerListHeader += '<input style="vertical-align:middle" type="image" src="/webdata/gfx/search.png" alt="search...">';
- tplTimerListHeader += '</form></div></th>';
- tplTimerListHeader += '</tr>\n';
- tplTimerListHeader += '</thead>\n';
- tplTimerListHeader += '<tbody class="scrollContent" height="100%">\n';
- tplTimerListHeader += '<tr>';
- tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListSName"><b>Channel</b><br/>Name</div></td>';
-/* tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListTitle"><b>Name</b></div></td>';*/
-/* tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListDescr"><b>Description</b></div></td>';*/
- tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListRepeat"><b>Repeated</b></div></td>';
- tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListDuration"><b>Time running</b></div></td>';
- tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListBegin"><b>Start time</b></div></td>';
- tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListEnd"><b>End time</b></div></td>';
- tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListAfter"><b>Event</b><br/>After event</div></td>';
- tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListOption"><b>Options</b></div></td></tr>\n';
-
-var tplTimerListItem = '<tr width="99%">\n';
- tplTimerListItem += '<td><div style="color: #%(color);" class="tListSName" title="%(description), %(descriptionextended)"><b>%(servicename)</b> <br/><br/> %(title)</div></td>\n';
- tplTimerListItem += '<td><div style="color: #%(color);" class="tListRepeat">%(repeatedReadable)</div></td>\n';
- tplTimerListItem += '<td><div style="color: #%(color);" class="tListDuration">%(duration) Min</div></td>\n';
- tplTimerListItem += '<td><div style="color: #%(color);" class="tListBegin">%(beginDate)</div></td>\n';
- tplTimerListItem += '<td><div style="color: #%(color);" class="tListEnd">%(endDate)</div></td>\n';
- tplTimerListItem += '<td><div style="color: #%(color);" class="tListAfter"><b>%(justplayReadable)</b> <br/><br/> %(aftereventReadable)</div></td>\n';
- tplTimerListItem += '<td><div style="color: #%(color);" class="tListOption"><a target="_blank" ><img src="/webdata/gfx/trash.gif" title="delete timer entry" border="0" onclick="delTimer(\'%(servicereference)\',\'%(begin)\',\'%(end)\',\'%(servicename)\',\'%(title)\',\'%(description)\',incomingTimerDelResult);"></a>\n';
- tplTimerListItem += '<a target="_blank" ><img src="/webdata/gfx/%(onOff).png" title="toggle On/Off" border="0" onclick="sendToggleTimerDisable(\'%(justplay)\',\'%(begin)\',\'%(end)\',\'%(repeated)\',\'%(servicereference)\',\'%(title)\',\'%(description)\',\'%(afterevent)\',\'%(disabled)\' );"></a>\n';
- tplTimerListItem += '<a target="_blank" ><img src="/webdata/gfx/edit.gif" title="edit timer entry" border="0" onclick="loadTimerFormSeconds(\'%(justplay)\',\'%(begin)\',\'%(end)\',\'%(repeated)\',\'%(servicereference)\',\'%(servicename)\',\'%(title)\',\'%(description)\',\'%(afterevent)\',1);"></a></div></td>\n';
- tplTimerListItem += '</tr>\n';
-
-var tplTimerListFooter = '<tr><button onclick="writeTimerListNow()">write TimerList to memory now</button></tr>\n';
- tplTimerListFooter += '<tr><button onclick="cleanTimerListNow()">clean List from non-aktiv entries</button></tr>\n';
- tplTimerListFooter += '</tbody></table>\n';
-
-var tplRecordingFooter = '<hr><br><table style="text-align: left; width: 100%; height: 178px;" border="0" cellpadding="2" cellspacing="2"><tbody>';
- tplRecordingFooter += '<tr><td style="vertical-align: top;">';
- tplRecordingFooter += '<input type="radio" id="recordNowNothing" name="recordNow" value="nothing" checked>';
- tplRecordingFooter += '</td><td style="vertical-align: top;">';
- tplRecordingFooter += 'Do nothing';
- tplRecordingFooter += '</td></tr>';
- tplRecordingFooter += '<tr><td style="vertical-align: top;">';
- tplRecordingFooter += '<input type="radio" id="recordNowUndefinitely" name="recordNow" value="undefinitely">';
- tplRecordingFooter += '</td><td style="vertical-align: top;">';
- tplRecordingFooter += 'record current playing undefinitely';
- tplRecordingFooter += '</td></tr>';
- tplRecordingFooter += '<tr><td style="vertical-align: top;">';
- tplRecordingFooter += '<input type="radio" id="recordNowCurrent" name="recordNow" value="recordCurrentEvent">';
- tplRecordingFooter += '</td><td style="vertical-align: top;">';
- tplRecordingFooter += 'record current event';
- tplRecordingFooter += '</td></tr>';
- tplRecordingFooter += '<tr><td style="vertical-align: top;">';
- tplRecordingFooter += ' ';
- tplRecordingFooter += '</td><td style="vertical-align: top;">';
- tplRecordingFooter += '<img src="/webdata/gfx/ok.jpg" title="OK" border="0" onclick="recordingPushedDecision(ifChecked($(\'recordNowNothing\')), ifChecked($(\'recordNowUndefinitely\')), ifChecked($(\'recordNowCurrent\')) );window.close()">';
- tplRecordingFooter += '</td></tr>';
- tplRecordingFooter += '</tbody></table>';
-
-// Bouquetlist Template
-var tplBouquetListHeader = '<table id="BouquetList" width="100%" border="0" cellspacing="1" cellpadding="0" border="0">';
-
-var tplBouquetListItem = '<tr>\n';
- tplBouquetListItem += '<td><div class="navMenuItem" id="%(servicereference)" onclick="loadBouquet(this.id);">%(bouquetname)</div></td>';
- tplBouquetListItem += '</tr>\n';
-
-var tplBouquetListFooter = "</table>";
-
-//Volume Template
-var tplVolumePanel = "<img onclick='volumeUp()' src='/webdata/gfx/arrow_up.png'>";
- tplVolumePanel += "<img onclick='volumeDown()' src='/webdata/gfx/arrow_down.png'>";
- tplVolumePanel += "<img id='volume1' onclick='volumeSet(10)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume2' onclick='volumeSet(20)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume3' onclick='volumeSet(30)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume4' onclick='volumeSet(40)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume5' onclick='volumeSet(50)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume6' onclick='volumeSet(60)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume7' onclick='volumeSet(70)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume8' onclick='volumeSet(80)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume9' onclick='volumeSet(90)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='volume10' onclick='volumeSet(100)' src='/webdata/gfx/led_off.png'>";
- tplVolumePanel += "<img id='speaker' onclick='volumeMute()' src='/webdata/gfx/speak_on.png'>";
-
-//Signal Template
-var tplSignalPanel = '<table width="100%" id="SignalPanelTable">';
- tplSignalPanel += '<tr><td style="background-color: #DDDDDD;">SNR</td><td width="50" style="background-color: #DDDDDD;"><div id="SNR">N/A</div></td></tr>';
- tplSignalPanel += '<tr><td style="background-color: #DDDDDD;">AGC</td><td width="50" style="background-color: #DDDDDD;"><div id="AGC">N/A</div></td></tr>';
- tplSignalPanel += '<tr><td style="background-color: #DDDDDD;">BER</td><td width="50" style="background-color: #DDDDDD;"><div id="BER">N/A</div></td></tr>';
- tplSignalPanel += '</table>';
-
-var tplSignalPanelButton = '<img src="/webdata/gfx/signal.png" title="show SignalInfoPanel" onclick="openSignalDialog();" title="view Signal Info">';
-
-// Message send
-var tplMessageSendForm = ""
- tplMessageSendForm += '<table id="MessageSendForm" width="100%" border="0" cellspacing="1" cellpadding="0" border="0">';
- tplMessageSendForm += '<tr><td>Text</td><td><input type="text" id="MessageSendFormText" value=""></td></tr>\n';
- tplMessageSendForm += '<tr><td>Timeout</td><td><input type="text" id="MessageSendFormTimeout" value=""></td></tr>\n';
- tplMessageSendForm += '<tr><td>Typ</td><td><select id="MessageSendFormType">';
- tplMessageSendForm += '<option value="1">Info</option>';
- tplMessageSendForm += '<option value="0">YesNo</option>';
- tplMessageSendForm += '<option value="2">Warning</option>';
- tplMessageSendForm += '<option value="3">Error</option>';
- tplMessageSendForm += '</select></td></tr>\n';
- tplMessageSendForm += '<tr><td colspan="2"><button onclick="sendMessage()">send Message</button></td></tr>\n';
- tplMessageSendForm += "</table></form>\n";
-
-var tplPowerStateSendForm = '';
- tplPowerStateSendForm += '<hr>';
- tplPowerStateSendForm += '<p><center><button onclick="sendPowerState(1)">deepstandby Dreambox</button></center></p>';
- tplPowerStateSendForm += '<p><center><button onclick="sendPowerState(2)">reboot Dreambox</button></center></p>';
- tplPowerStateSendForm += '<hr>';
- tplPowerStateSendForm += '<p><center><button onclick="sendPowerState(3)">restart Enigma2</button></center></p>';
-//Something is not working here, so I will do a quickhack
-// tplPowerStateSendForm += '<p><center><button onclick="sendPowerState(4)">standby Enigma2</button></center></p>';
- tplPowerStateSendForm += '<p><center><button onclick="sendRemoteControlRequest(116)">toggle standby Enigma2</button></center></p>';
-
-// Template for the RemoteControl Window
-var tplRemoteControlForm = '';
- tplRemoteControlForm += '<map name="remotecontrol">';
- tplRemoteControlForm += '<area shape="circle" coords="129, 54, 10" nohref onclick="sendRemoteControlRequest(116)" alt="Power">';
-// tplRemoteControlForm += '<area shape="circle" coords="72, 95, 15" nohref alt="Dream message">';
-// tplRemoteControlForm += '<area shape="circle" coords="130, 95, 15" nohref alt="TV Screenshot">';
- tplRemoteControlForm += '<area shape="circle" coords="63, 123, 10" nohref onclick="sendRemoteControlRequest(2)" alt="1">';
- tplRemoteControlForm += '<area shape="circle" coords="109, 123, 10" nohref onclick="sendRemoteControlRequest(3)" alt="2">';
- tplRemoteControlForm += '<area shape="circle" coords="153, 123, 10" nohref onclick="sendRemoteControlRequest(4)" alt="3">';
- tplRemoteControlForm += '<area shape="circle" coords="63, 148, 10" nohref onclick="sendRemoteControlRequest(5)" alt="4">';
- tplRemoteControlForm += '<area shape="circle" coords="109, 148, 10" nohref onclick="sendRemoteControlRequest(6)" alt="5">';
- tplRemoteControlForm += '<area shape="circle" coords="153, 148, 10" nohref onclick="sendRemoteControlRequest(7)" alt="6">';
- tplRemoteControlForm += '<area shape="circle" coords="63, 173, 10" nohref onclick="sendRemoteControlRequest(8)" alt="7">';
- tplRemoteControlForm += '<area shape="circle" coords="109, 173, 10" nohref onclick="sendRemoteControlRequest(9)" alt="8">';
- tplRemoteControlForm += '<area shape="circle" coords="153, 173, 10" nohref onclick="sendRemoteControlRequest(10)" alt="9">';
- tplRemoteControlForm += '<area shape="circle" coords="63, 197, 10" nohref onclick="sendRemoteControlRequest(412)" alt="previous">';
- tplRemoteControlForm += '<area shape="circle" coords="109, 197, 10" nohref onclick="sendRemoteControlRequest(11)" alt="0">';
- tplRemoteControlForm += '<area shape="circle" coords="153, 197, 10" nohref onclick="sendRemoteControlRequest(407)" alt="next">';
- tplRemoteControlForm += '<area shape="circle" coords="54, 243, 15" nohref onclick="sendRemoteControlRequest(115)" alt="volume up">';
- tplRemoteControlForm += '<area shape="circle" coords="107, 233, 10" nohref onclick="sendRemoteControlRequest(113)" alt="mute">';
- tplRemoteControlForm += '<area shape="circle" coords="159, 243, 15" nohref onclick="sendRemoteControlRequest(402)" alt="bouquet up">';
- tplRemoteControlForm += '<area shape="circle" coords="66, 274, 15" nohref onclick="sendRemoteControlRequest(114)" alt="volume down">';
- tplRemoteControlForm += '<area shape="circle" coords="107, 258, 10" nohref onclick="sendRemoteControlRequest(174)" alt="lame">';
- tplRemoteControlForm += '<area shape="circle" coords="147, 274, 15" nohref onclick="sendRemoteControlRequest(403)" alt="bouquet down">';
- tplRemoteControlForm += '<area shape="circle" coords="48, 306, 10" nohref onclick="sendRemoteControlRequest(358)" alt="info">';
- tplRemoteControlForm += '<area shape="circle" coords="106, 310, 15" nohref onclick="sendRemoteControlRequest(103)" alt="up">';
- tplRemoteControlForm += '<area shape="circle" coords="167, 306, 10" nohref onclick="sendRemoteControlRequest(139)" alt="menu">';
- tplRemoteControlForm += '<area shape="circle" coords="70, 343, 15" nohref onclick="sendRemoteControlRequest(105)" alt="left">';
- tplRemoteControlForm += '<area shape="circle" coords="108, 340, 15" nohref onclick="sendRemoteControlRequest(352)" alt="OK">';
- tplRemoteControlForm += '<area shape="circle" coords="146, 343, 15" nohref onclick="sendRemoteControlRequest(106)" alt="right">';
- tplRemoteControlForm += '<area shape="circle" coords="53, 381, 10" nohref onclick="sendRemoteControlRequest(392)" alt="audio">';
- tplRemoteControlForm += '<area shape="circle" coords="106, 374, 15" nohref onclick="sendRemoteControlRequest(108)" alt="down">';
- tplRemoteControlForm += '<area shape="circle" coords="162, 381, 10" nohref onclick="sendRemoteControlRequest(393)" alt="video">';
- tplRemoteControlForm += '<area shape="circle" coords="56, 421, 10" nohref onclick="sendRemoteControlRequest(398)" alt="red">';
- tplRemoteControlForm += '<area shape="circle" coords="90, 422, 10" nohref onclick="sendRemoteControlRequest(399)" alt="green">';
- tplRemoteControlForm += '<area shape="circle" coords="123, 422, 10" nohref onclick="sendRemoteControlRequest(400)" alt="yellow">';
- tplRemoteControlForm += '<area shape="circle" coords="158, 421, 10" nohref onclick="sendRemoteControlRequest(401)" alt="blue">';
- tplRemoteControlForm += '<area shape="circle" coords="61, 460, 10" nohref onclick="sendRemoteControlRequest(377)" alt="tv">';
- tplRemoteControlForm += '<area shape="circle" coords="90, 461, 10" nohref onclick="sendRemoteControlRequest(385)" alt="radio">';
- tplRemoteControlForm += '<area shape="circle" coords="123, 461, 10" nohref onclick="sendRemoteControlRequest(388)" alt="text">';
- tplRemoteControlForm += '<area shape="circle" coords="153, 460, 10" nohref onclick="sendRemoteControlRequest(138)" alt="help">';
- tplRemoteControlForm += '</map>';
- tplRemoteControlForm += '<img src="/webdata/gfx/remotecontrol.jpg" height="607" width="220" border="0)" alt="Remote Control" usemap="#remotecontrol">';
-
-var tplAddTimerForm = '';
- tplAddTimerForm += '<table border=0 cellpadding=0 cellspacing=10>';
- tplAddTimerForm += '<tr><td colspan="3">Action:</td>';
- tplAddTimerForm += '<td colspan="3">';
- tplAddTimerForm += '<select name="justplay" id="justplay" size="1">';
- tplAddTimerForm += '%(justplay)';
- tplAddTimerForm += '</select></td></tr>';
- tplAddTimerForm += '<tr><td colspan="3"> </td>';
- tplAddTimerForm += '<td colspan="3">Note: For recurring events start/end day/month are not required.</td></tr>';
- tplAddTimerForm += '<tr><td colspan="3">Start:</td>';
- tplAddTimerForm += '<td colspan="3"><select name="syear" size="1" id="syear" onchange="javascript:addTimerFormChangeTime(\'syear\');">%(syear)</select>.';
- tplAddTimerForm += '<select name="smonth" id="smonth" size="1" onchange="javascript:addTimerFormChangeTime(\'smonth\');">%(smonth)</select>.';
- tplAddTimerForm += '<select name="sday" id="sday" size="1" onchange="javascript:addTimerFormChangeTime(\'sday\');">%(sday)</select>';
- tplAddTimerForm += ' - <select name="shour" id="shour" size="1" onchange="javascript:addTimerFormChangeTime(\'shour\');">%(shour)</select>';
- tplAddTimerForm += ':<select name="smin" id="smin" size="1" onchange="javascript:addTimerFormChangeTime(\'smin\');">%(smin)</select></td></tr>';
- tplAddTimerForm += '<tr><td colspan="3">End:</td>';
- tplAddTimerForm += '<td colspan="3"><select name="eyear" id="eyear" size="1" onchange="javascript:addTimerFormChangeTime(\'eyear\');">%(eyear)</select>.';
- tplAddTimerForm += '<select name="emonth" id="emonth" size="1" onchange="javascript:addTimerFormChangeTime(\'emonth\');">%(emonth)</select>.';
- tplAddTimerForm += '<select name="eday" id="eday" size="1" onchange="javascript:addTimerFormChangeTime(\'eday\');">%(eday)</select>';
- tplAddTimerForm += ' - <select name="ehour" id="ehour" size="1" onchange="javascript:addTimerFormChangeTime(\'ehour\');">%(ehour)</select>';
- tplAddTimerForm += ':<select name="emin" id="emin" size="1" onchange="javascript:addTimerFormChangeTime(\'emin\');">%(emin)</select></td></tr>';
- tplAddTimerForm += '<tr><td colspan="3"> </td><td colspan="3">Note: For one-time events the "days" field doesn\'t have to be specified.</td></tr>';
- tplAddTimerForm += '<tr><td colspan="3">Days:</td><td colspan="3">%(repeated)';
- tplAddTimerForm += '<tr><td colspan="3">Channel:</td><td>';
- tplAddTimerForm += '<p><input type="radio" id="tvradio" name="tvradio" value="tv" checked onchange="javascript:addTimerFormChangeType();"">TV</p>';
- tplAddTimerForm += '<p><input type="radio" name="tvradio" value="radio" onchange="javascript:addTimerFormChangeType();">Radio</p><td>';
- tplAddTimerForm += '<p>Channel:</p>';
- tplAddTimerForm += '<select name="channel" id="channel" size="1" onchange="timerFormExtendChannellist($(\'channel\').options[$(\'channel\').selectedIndex].value)">%(channel)</select></td></tr>';
- tplAddTimerForm += '<tr><td colspan="3">Name:</td>';
- tplAddTimerForm += '<td colspan="3"><input name="name" id="name" type="text" size="100" maxlength="100" style="color: #000000;" value="%(name)"></td></tr>';
- tplAddTimerForm += '<tr><td colspan="3">Description:</td>';
- tplAddTimerForm += '<td colspan="3"><input name="descr" id="descr" type="text" size="100" maxlength="100" style="color: #000000;" value="%(description)"></td></tr>';
- tplAddTimerForm += '<tr><td colspan="3">After event do:</td>';
- tplAddTimerForm += '<td colspan="3"><select id="after_event" name="after_event" size="1">%(afterEvent)</select></td></tr>';
- tplAddTimerForm += '<tr> </tr>';
- tplAddTimerForm += '<tr><td colspan="3"> </td><td colspan="3">';
- tplAddTimerForm += '<input name="deleteOldOnSave" id="deleteOldOnSave" type="hidden" value="%(deleteOldOnSave)">';
- tplAddTimerForm += '<input name="channelOld" id="channelOld" type="hidden" value="%(channelOld)">';
- tplAddTimerForm += '<input name="beginOld" id="beginOld" type="hidden" value="%(beginOld)">';
- tplAddTimerForm += '<input name="endOld" id="endOld" type="hidden" value="%(endOld)">';
- tplAddTimerForm += '<input name="eventID" id="eventID" type="hidden" value="%(eventID)">';
- tplAddTimerForm += '<button onclick="sendAddTimer()">Add/Save</button></td></tr></table>';
-
-var tplAddTimerFormOptions = '';
- tplAddTimerFormOptions += '<option value="%(value)" %(selected)>%(txt)</option>';
-
-var tplAddTimerFormCheckbox = '';
- tplAddTimerFormCheckbox += '<input type="checkbox" id="%(id)" name="%(name)" value="%(value)" %(checked)> %(txt) ';
-
-var tplAbout = '<table align="center" border="0" width="80%">';
- tplAbout += '<tr><td align="left" width="50%" valign="top">';
- tplAbout += '<table align="center" border="0" width="100%">';
- tplAbout += '<tr><td align="left"></br></td></tr>';
- tplAbout += '<tr><td align="left"><b>Box Info:</b></td></tr>';
- tplAbout += '<tr><td align="left">%(enigmaVersion)</td></tr>';
- tplAbout += '<tr><td align="left">%(fpVersion)</td></tr>';
- tplAbout += '<tr><td align="left"></br></td></tr>';
- tplAbout += '<tr><td align="left">%(tunerInfo)</td></tr>';
- tplAbout += '<tr><td align="left"></br></td></tr>';
- tplAbout += '<tr><td align="left">%(hddInfo)</td></tr>';
- tplAbout += '<tr><td align="left"></br></td></tr>';
-/*
- tplAbout += '<tr><td align="left"><b>LAN Info:</b></td></tr>';
- tplAbout += '<tr><td align="left">%(lanDHCP)</td></tr>';
- tplAbout += '<tr><td align="left">%(lanIP)</td></tr>';
- tplAbout += '<tr><td align="left">%(lanMask)</td></tr>';
- tplAbout += '<tr><td align="left">%(lanGW)</td></tr>';
- tplAbout += '<tr><td align="left">%(lanDNS)</td></tr>\n';
-*/
- tplAbout += '</table></td>\n';
- tplAbout += '<td align="left" width="50%" valign="top">';
- tplAbout += '<table align="center" border="0" width="100%">';
- tplAbout += '<tr><td align="left"></br></td></tr>\n';
- tplAbout += '<tr><td align="left"><b>Service Info:</b></td></tr>\n';
- tplAbout += '<tr><td align="left">Name: %(serviceName)</td></tr>\n';
- tplAbout += '<tr><td align="left">Provider: %(serviceProvider)</td></tr>\n';
- tplAbout += '<tr><td align="left">Videoformat: %(serviceAspect)</td></tr>\n';
- tplAbout += '<tr><td align="left">Namespace: %(serviceNamespace)</td></tr>\n';
- tplAbout += '<tr><td align="left"></br></td></tr>\n';
- tplAbout += '<tr><td align="left"><b>PIDs:</b></td></tr>\n';
- tplAbout += '<tr><td align="left">VideoPID: %(vPIDh) (%(vPID)d)</td></tr>\n';
- tplAbout += '<tr><td align="left">AudioPID: %(aPIDh) (%(aPID)d)</td></tr>\n';
- tplAbout += '<tr><td align="left">PCRPID: %(pcrIDh) (%(pcrID)d)</td></tr>\n';
- tplAbout += '<tr><td align="left">PMTPID: %(pmtPIDh) (%(pmtPID)d)</td></tr>\n';
- tplAbout += '<tr><td align="left">TXTPID: %(txtPIDh) (%(txtPID)d)</td></tr>\n';
- tplAbout += '<tr><td align="left">TSID: %(tsIDh) (%(tsID)d)</td></tr>\n';
- tplAbout += '<tr><td align="left">ONID: %(onIDh) (%(onID)d)</td></tr>\n';
- tplAbout += '<tr><td align="left">SID: %(sidh) (%(sid)d)</td></tr>\n';
- tplAbout += '</table>';
-
-var tplExtraHiddenFunctions = '<ul style="list-style-type:disc">';
- tplExtraHiddenFunctions += '<li><div onclick="restartTwisted()">Restart Twisted</div></li>';
- tplExtraHiddenFunctions += '<li><div onclick="clearInterval(UpdateStreamReaderPollTimer);">Stop Time/Signal/Current-Channel -Updates</div></li>';
- tplExtraHiddenFunctions += '<li><div onclick="restartUpdateStream();">Restart Time/Signal/Current-Channel -Updates</div></li>';
- tplExtraHiddenFunctions += '<li><div onclick="startDebugWindow();">Start Debug-Window</div></li>';
- tplExtraHiddenFunctions += '</ul>'
-
+Version = '$Header$';\r
+// EPG Templates\r
+var tplUpdateStreamReaderIE = '<iframe id="UpdateStreamReaderIEFixIFrame" src="%(url_updates)" height="0" width="0" scrolling="none" frameborder="0">no iframe support!</iframe>';\r
+var tplEPGListHeader = '<table width="100%" border="0" cellspacing="1" cellpadding="0">';\r
+\r
+var tplEPGListItem = '<tr style="background-color: #DDDDDD;">';\r
+ tplEPGListItem += '<td width="10%">%(date)</td>';\r
+ tplEPGListItem += '<td width="30%">%(servicename)</td>';\r
+ tplEPGListItem += '<td>%(title)</td>';\r
+ tplEPGListItem += '</tr>';\r
+ \r
+ tplEPGListItem += '<tr style="background-color: #DDDDDD;">';\r
+ tplEPGListItem += '<td>%(starttime)</td>';\r
+ tplEPGListItem += '<td>%(duration) min.</td>';\r
+ tplEPGListItem += '<td>%(description)</td>';\r
+ tplEPGListItem += '</tr>';\r
+ \r
+ tplEPGListItem += '<tr style="background-color: #DDDDDD;">';\r
+ tplEPGListItem += '<td valign="top">%(endtime)</td>';\r
+ tplEPGListItem += '<td colspan="2"rowspan="2" id="extdescription%(number)">%(extdescriptionSmall)</td>';\r
+ tplEPGListItem += '</tr>';\r
+ \r
+ tplEPGListItem +='<tr style="background-color: #DDDDDD;"><td>';\r
+ tplEPGListItem +='<a target="_blank" ><img src="/webdata/gfx/timer.png" title="add to Timers" border="0" onclick="addTimerByID(\'%(servicereference)\',\'%(eventid)\',\'0\');"></a> ';\r
+ tplEPGListItem +='<a target="_blank" ><img src="/webdata/gfx/zap.png" title="add zap to Timers" border="0" onclick="addTimerByID(\'%(servicereference)\',\'%(eventid)\',\'1\');"></a> ';\r
+ tplEPGListItem +='<a target="_blank" ><img src="/webdata/gfx/edit.gif" title="edit and add timer" border="0" onclick="loadTimerFormSeconds(0,\'%(start)\',\'%(end)\',0,\'%(servicereference)\',\'%(servicename)\',\'%(title)\',\'%(description)\',\'0\',0,\'%(eventid)\');"></a><br/>';\r
+ tplEPGListItem +='<a target="_blank" href="/web/epgsearch.rss?search=%(title)" ><img src="/webdata/gfx/feed.png" title="RSS-Feed for this Title" border="0"></a><br/>';\r
+ tplEPGListItem +='<a target="_blank" href="http://www.imdb.com/find?s=all&q=%(titleESC)" ><img src="/webdata/gfx/world.png" title="search IMDb" border="0"></a><br/>';\r
+ tplEPGListItem +='</td></tr>';\r
+ tplEPGListItem += '<tr style="background-color: #AAAAAA;">';\r
+ tplEPGListItem += '<td colspan="3"> </td>';\r
+ tplEPGListItem += '</tr>';\r
+\r
+var tplEPGListItemExtend = '%(shortTxt) ...<a nohref onclick="setComplete(\'extdescription%(number)\',\'%(txt)\');">more</a>';\r
+\r
+var tplEPGListFooter = "</table>";\r
+ \r
+// ServiceList Templates\r
+var tplServiceListHeader = '<table border="0" cellpadding="0" cellspacing="0" class="BodyContentChannellist">\n';\r
+ tplServiceListHeader += '<thead class="fixedHeader">\n';\r
+ tplServiceListHeader += '<tr>\n';\r
+ tplServiceListHeader += '<th><div class="sListHeader">ServiceList</div>\n';\r
+ tplServiceListHeader += '<div class="sListSearch">';\r
+ tplServiceListHeader += '<form onSubmit="loadEPGBySearchString(document.getElementById(\'searchText\').value); return false;">';\r
+ tplServiceListHeader += '<input type="text" id="searchText" onfocus="this.value=\'\'" value="Search EPG"/>';\r
+ tplServiceListHeader += '<input style="vertical-align:middle" type="image" src="/webdata/gfx/search.png" alt="search...">';\r
+ tplServiceListHeader += '</form></div></th>';\r
+ tplServiceListHeader += '</tr>\n';\r
+ tplServiceListHeader += '</thead>\n';\r
+ tplServiceListHeader += '<tbody class="scrollContent">\n';\r
+ tplServiceListHeader += '<input type="hidden" id="mainServiceRef" name="mainServiceRef" value="%(mainServiceRef)">\n';\r
+\r
+var tplServiceListItem = '<tr id="%(servicereference)extend">\n';\r
+ tplServiceListItem += '<td style="border-top: 2px solid #AAA;" ><div class="sListSName"><a id="%(servicereference)" onclick="zap(this.id);" class="sListSLink">%(servicename)</a></div>';\r
+ tplServiceListItem += '<div class="sListExt"><a onclick="loadEPGByServiceReference(this.id)" id="%(servicereference)"><img src="/webdata/gfx/epg.png" border="0"/></a>\n';\r
+ tplServiceListItem += '<a target="_blank" href="/web/stream.m3u?ref=%(servicereference)"><img src="/webdata/gfx/screen.png" title="stream Service" border="0"></a></div>\n';\r
+ tplServiceListItem += '</tr>\n';\r
+ tplServiceListItem += '<tr>\n';\r
+ tplServiceListItem += '<td colspan="2"><div id="%(servicereference)EPGNOW"></div></td>\n';\r
+ tplServiceListItem += '</tr>\n';\r
+ \r
+var tplServiceListFooter = "</tbody></table>\n";\r
+//\r
+\r
+var tplServiceListEPGItem = '<div class="sListEPGTime">%(starttime)</div>\n';\r
+ tplServiceListEPGItem += '<div class="sListEPGTitle">%(title)</div>\n';\r
+ tplServiceListEPGItem += '<div class="sListEPGDuration">%(length) Min.</div>\n';\r
+\r
+// MovieList Templates\r
+var tplMovieListHeader = '<table border="0" cellpadding="0" cellspacing="0" class="BodyContentChannellist">\n';\r
+ tplMovieListHeader += '<thead class="fixedHeader">\n';\r
+ tplMovieListHeader += '<tr>\n';\r
+ tplMovieListHeader += '<th><div class="sListHeader" style="color: #000000;">MovieList</div>\n';\r
+ tplMovieListHeader += '<div class="sListSearch">';\r
+ tplMovieListHeader += '<form onSubmit="loadEPGBySearchString(document.getElementById(\'searchText\').value); return false;">';\r
+ tplMovieListHeader += '<input type="text" id="searchText" onfocus="this.value=\'\'" value="Search EPG"/>';\r
+ tplMovieListHeader += '<input style="vertical-align:middle" type="image" src="/webdata/gfx/search.png" alt="search...">';\r
+ tplMovieListHeader += '</form></div></th>';\r
+ tplMovieListHeader += '</tr>\n';\r
+ tplMovieListHeader += '</thead>\n';\r
+ tplMovieListHeader += '<tbody class="scrollContent">\n';\r
+\r
+var tplMovieListItem = '<tr>\n';\r
+ tplMovieListItem += '<td><div class="sListSName" title="%(description), %(descriptionextended)">%(title) (%(servicename))</div>';\r
+ tplMovieListItem += '<div class="sListExt">\n';\r
+ tplMovieListItem += '%(tags)\n';\r
+ tplMovieListItem += '<a target="_blank" href="/web/ts.m3u?file=%(filelink)"><img src="/webdata/gfx/screen.png" title="play file" border="0"></a>\n';\r
+ tplMovieListItem += ' <a target="_blank" ><img src="/webdata/gfx/trash.gif" title="delete files" border="0" onclick="delMovieFile(\'%(filename)\',\'%(servicename)\',\'%(title)\',\'%(description)\');"></a>\n';\r
+ tplMovieListItem += '</div>\n';\r
+ tplMovieListItem += '</tr>\n';\r
+ \r
+var tplMovieListFooter = "</tbody></table>\n";\r
+\r
+// TimerList Templates\r
+var tplTimerListHeader = '<table border="0" height="100%" cellpadding="0" cellspacing="0" class="BodyContentChannellist">\n';\r
+ tplTimerListHeader += '<thead class="fixedHeader">\n';\r
+ tplTimerListHeader += '<tr>\n';\r
+ tplTimerListHeader += '<th><div class="sListHeader" style="color: #000000;">TimerList</div>\n';\r
+ tplTimerListHeader += '<div class="sListSearch">';\r
+ tplTimerListHeader += '<form onSubmit="loadEPGBySearchString(document.getElementById(\'searchText\').value); return false;">';\r
+ tplTimerListHeader += '<input type="text" id="searchText" onfocus="this.value=\'\'" value="Search EPG"/>';\r
+ tplTimerListHeader += '<input style="vertical-align:middle" type="image" src="/webdata/gfx/search.png" alt="search...">';\r
+ tplTimerListHeader += '</form></div></th>';\r
+ tplTimerListHeader += '</tr>\n';\r
+ tplTimerListHeader += '</thead>\n';\r
+ tplTimerListHeader += '<tbody class="scrollContent" height="100%">\n';\r
+ tplTimerListHeader += '<tr>';\r
+ tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListSName"><b>Channel</b><br/>Name</div></td>';\r
+/* tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListTitle"><b>Name</b></div></td>';*/\r
+/* tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListDescr"><b>Description</b></div></td>';*/\r
+ tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListRepeat"><b>Repeated</b></div></td>';\r
+ tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListDuration"><b>Time running</b></div></td>';\r
+ tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListBegin"><b>Start time</b></div></td>';\r
+ tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListEnd"><b>End time</b></div></td>';\r
+ tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListAfter"><b>Event</b><br/>After event</div></td>';\r
+ tplTimerListHeader += '<td><div style="color: #00BCBC;" class="tListOption"><b>Options</b></div></td></tr>\n';\r
+\r
+var tplTimerListItem = '<tr width="99%">\n';\r
+ tplTimerListItem += '<td><div style="color: #%(color);" class="tListSName" title="%(description), %(descriptionextended)"><b>%(servicename)</b> <br/><br/> %(title)</div></td>\n';\r
+ tplTimerListItem += '<td><div style="color: #%(color);" class="tListRepeat">%(repeatedReadable)</div></td>\n';\r
+ tplTimerListItem += '<td><div style="color: #%(color);" class="tListDuration">%(duration) Min</div></td>\n';\r
+ tplTimerListItem += '<td><div style="color: #%(color);" class="tListBegin">%(beginDate)</div></td>\n';\r
+ tplTimerListItem += '<td><div style="color: #%(color);" class="tListEnd">%(endDate)</div></td>\n';\r
+ tplTimerListItem += '<td><div style="color: #%(color);" class="tListAfter"><b>%(justplayReadable)</b> <br/><br/> %(aftereventReadable)</div></td>\n';\r
+ tplTimerListItem += '<td><div style="color: #%(color);" class="tListOption"><a target="_blank" ><img src="/webdata/gfx/trash.gif" title="delete timer entry" border="0" onclick="delTimer(\'%(servicereference)\',\'%(begin)\',\'%(end)\',\'%(servicename)\',\'%(title)\',\'%(description)\',incomingTimerDelResult);"></a>\n';\r
+ tplTimerListItem += '<a target="_blank" ><img src="/webdata/gfx/%(onOff).png" title="toggle On/Off" border="0" onclick="sendToggleTimerDisable(\'%(justplay)\',\'%(begin)\',\'%(end)\',\'%(repeated)\',\'%(servicereference)\',\'%(title)\',\'%(description)\',\'%(afterevent)\',\'%(disabled)\' );"></a>\n';\r
+ tplTimerListItem += '<a target="_blank" ><img src="/webdata/gfx/edit.gif" title="edit timer entry" border="0" onclick="loadTimerFormSeconds(\'%(justplay)\',\'%(begin)\',\'%(end)\',\'%(repeated)\',\'%(servicereference)\',\'%(servicename)\',\'%(title)\',\'%(description)\',\'%(afterevent)\',1);"></a></div></td>\n';\r
+ tplTimerListItem += '</tr>\n';\r
+\r
+var tplTimerListFooter = '<tr><button onclick="writeTimerListNow()">write TimerList to memory now</button></tr>\n';\r
+ tplTimerListFooter += '<tr><button onclick="cleanTimerListNow()">clean List from non-aktiv entries</button></tr>\n';\r
+ tplTimerListFooter += '</tbody></table>\n';\r
+\r
+var tplRecordingFooter = '<hr><br><table style="text-align: left; width: 100%; height: 178px;" border="0" cellpadding="2" cellspacing="2"><tbody>';\r
+ tplRecordingFooter += '<tr><td style="vertical-align: top;">';\r
+ tplRecordingFooter += '<input type="radio" id="recordNowNothing" name="recordNow" value="nothing" checked>';\r
+ tplRecordingFooter += '</td><td style="vertical-align: top;">';\r
+ tplRecordingFooter += 'Do nothing';\r
+ tplRecordingFooter += '</td></tr>';\r
+ tplRecordingFooter += '<tr><td style="vertical-align: top;">';\r
+ tplRecordingFooter += '<input type="radio" id="recordNowUndefinitely" name="recordNow" value="undefinitely">';\r
+ tplRecordingFooter += '</td><td style="vertical-align: top;">';\r
+ tplRecordingFooter += 'record current playing undefinitely';\r
+ tplRecordingFooter += '</td></tr>';\r
+ tplRecordingFooter += '<tr><td style="vertical-align: top;">';\r
+ tplRecordingFooter += '<input type="radio" id="recordNowCurrent" name="recordNow" value="recordCurrentEvent">';\r
+ tplRecordingFooter += '</td><td style="vertical-align: top;">';\r
+ tplRecordingFooter += 'record current event';\r
+ tplRecordingFooter += '</td></tr>';\r
+ tplRecordingFooter += '<tr><td style="vertical-align: top;">';\r
+ tplRecordingFooter += ' ';\r
+ tplRecordingFooter += '</td><td style="vertical-align: top;">';\r
+ tplRecordingFooter += '<img src="/webdata/gfx/ok.jpg" title="OK" border="0" onclick="recordingPushedDecision(ifChecked($(\'recordNowNothing\')), ifChecked($(\'recordNowUndefinitely\')), ifChecked($(\'recordNowCurrent\')) );window.close()">';\r
+ tplRecordingFooter += '</td></tr>';\r
+ tplRecordingFooter += '</tbody></table>';\r
+\r
+// Bouquetlist Template\r
+var tplBouquetListHeader = '<table id="BouquetList" width="100%" border="0" cellspacing="1" cellpadding="0" border="0">';\r
+\r
+var tplBouquetListItem = '<tr>\n';\r
+ tplBouquetListItem += '<td><div class="navMenuItem" id="%(servicereference)" onclick="loadBouquet(this.id);">%(bouquetname)</div></td>';\r
+ tplBouquetListItem += '</tr>\n';\r
+\r
+var tplBouquetListFooter = "</table>";\r
+\r
+//Volume Template\r
+var tplVolumePanel = "<img onclick='volumeUp()' src='/webdata/gfx/arrow_up.png'>"; \r
+ tplVolumePanel += "<img onclick='volumeDown()' src='/webdata/gfx/arrow_down.png'>"; \r
+ tplVolumePanel += "<img id='volume1' onclick='volumeSet(10)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume2' onclick='volumeSet(20)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume3' onclick='volumeSet(30)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume4' onclick='volumeSet(40)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume5' onclick='volumeSet(50)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume6' onclick='volumeSet(60)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume7' onclick='volumeSet(70)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume8' onclick='volumeSet(80)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume9' onclick='volumeSet(90)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='volume10' onclick='volumeSet(100)' src='/webdata/gfx/led_off.png'>"; \r
+ tplVolumePanel += "<img id='speaker' onclick='volumeMute()' src='/webdata/gfx/speak_on.png'>";\r
+ \r
+//Signal Template\r
+var tplSignalPanel = '<table width="100%" id="SignalPanelTable">';\r
+ tplSignalPanel += '<tr><td style="background-color: #DDDDDD;">SNR</td><td width="50" style="background-color: #DDDDDD;"><div id="SNR">N/A</div></td></tr>';\r
+ tplSignalPanel += '<tr><td style="background-color: #DDDDDD;">AGC</td><td width="50" style="background-color: #DDDDDD;"><div id="AGC">N/A</div></td></tr>';\r
+ tplSignalPanel += '<tr><td style="background-color: #DDDDDD;">BER</td><td width="50" style="background-color: #DDDDDD;"><div id="BER">N/A</div></td></tr>';\r
+ tplSignalPanel += '</table>';\r
+ \r
+var tplSignalPanelButton = '<img src="/webdata/gfx/signal.png" title="show SignalInfoPanel" onclick="openSignalDialog();" title="view Signal Info">';\r
+\r
+// Message send\r
+var tplMessageSendForm = ""\r
+ tplMessageSendForm += '<table id="MessageSendForm" width="100%" border="0" cellspacing="1" cellpadding="0" border="0">';\r
+ tplMessageSendForm += '<tr><td>Text</td><td><input type="text" id="MessageSendFormText" value=""></td></tr>\n';\r
+ tplMessageSendForm += '<tr><td>Timeout</td><td><input type="text" id="MessageSendFormTimeout" value=""></td></tr>\n';\r
+ tplMessageSendForm += '<tr><td>Typ</td><td><select id="MessageSendFormType">';\r
+ tplMessageSendForm += '<option value="1">Info</option>';\r
+ tplMessageSendForm += '<option value="0">YesNo</option>';\r
+ tplMessageSendForm += '<option value="2">Warning</option>';\r
+ tplMessageSendForm += '<option value="3">Error</option>';\r
+ tplMessageSendForm += '</select></td></tr>\n';\r
+ tplMessageSendForm += '<tr><td colspan="2"><button onclick="sendMessage()">send Message</button></td></tr>\n';\r
+ tplMessageSendForm += "</table></form>\n";\r
+\r
+var tplPowerStateSendForm = '';\r
+ tplPowerStateSendForm += '<hr>';\r
+ tplPowerStateSendForm += '<p><center><button onclick="sendPowerState(1)">deepstandby Dreambox</button></center></p>';\r
+ tplPowerStateSendForm += '<p><center><button onclick="sendPowerState(2)">reboot Dreambox</button></center></p>';\r
+ tplPowerStateSendForm += '<hr>';\r
+ tplPowerStateSendForm += '<p><center><button onclick="sendPowerState(3)">restart Enigma2</button></center></p>';\r
+//Something is not working here, so I will do a quickhack\r
+// tplPowerStateSendForm += '<p><center><button onclick="sendPowerState(4)">standby Enigma2</button></center></p>';\r
+ tplPowerStateSendForm += '<p><center><button onclick="sendRemoteControlRequest(116)">toggle standby Enigma2</button></center></p>';\r
+\r
+// Template for the RemoteControl Window\r
+var tplRemoteControlForm = '';\r
+ tplRemoteControlForm += '<map name="remotecontrol">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="129, 54, 10" nohref onclick="sendRemoteControlRequest(116)" alt="Power">';\r
+// tplRemoteControlForm += '<area shape="circle" coords="72, 95, 15" nohref alt="Dream message">';\r
+// tplRemoteControlForm += '<area shape="circle" coords="130, 95, 15" nohref alt="TV Screenshot">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="63, 123, 10" nohref onclick="sendRemoteControlRequest(2)" alt="1">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="109, 123, 10" nohref onclick="sendRemoteControlRequest(3)" alt="2">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="153, 123, 10" nohref onclick="sendRemoteControlRequest(4)" alt="3">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="63, 148, 10" nohref onclick="sendRemoteControlRequest(5)" alt="4">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="109, 148, 10" nohref onclick="sendRemoteControlRequest(6)" alt="5">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="153, 148, 10" nohref onclick="sendRemoteControlRequest(7)" alt="6">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="63, 173, 10" nohref onclick="sendRemoteControlRequest(8)" alt="7">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="109, 173, 10" nohref onclick="sendRemoteControlRequest(9)" alt="8">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="153, 173, 10" nohref onclick="sendRemoteControlRequest(10)" alt="9">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="63, 197, 10" nohref onclick="sendRemoteControlRequest(412)" alt="previous">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="109, 197, 10" nohref onclick="sendRemoteControlRequest(11)" alt="0">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="153, 197, 10" nohref onclick="sendRemoteControlRequest(407)" alt="next">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="54, 243, 15" nohref onclick="sendRemoteControlRequest(115)" alt="volume up">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="107, 233, 10" nohref onclick="sendRemoteControlRequest(113)" alt="mute">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="159, 243, 15" nohref onclick="sendRemoteControlRequest(402)" alt="bouquet up">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="66, 274, 15" nohref onclick="sendRemoteControlRequest(114)" alt="volume down">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="107, 258, 10" nohref onclick="sendRemoteControlRequest(174)" alt="lame">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="147, 274, 15" nohref onclick="sendRemoteControlRequest(403)" alt="bouquet down">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="48, 306, 10" nohref onclick="sendRemoteControlRequest(358)" alt="info">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="106, 310, 15" nohref onclick="sendRemoteControlRequest(103)" alt="up">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="167, 306, 10" nohref onclick="sendRemoteControlRequest(139)" alt="menu">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="70, 343, 15" nohref onclick="sendRemoteControlRequest(105)" alt="left">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="108, 340, 15" nohref onclick="sendRemoteControlRequest(352)" alt="OK">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="146, 343, 15" nohref onclick="sendRemoteControlRequest(106)" alt="right">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="53, 381, 10" nohref onclick="sendRemoteControlRequest(392)" alt="audio">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="106, 374, 15" nohref onclick="sendRemoteControlRequest(108)" alt="down">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="162, 381, 10" nohref onclick="sendRemoteControlRequest(393)" alt="video">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="56, 421, 10" nohref onclick="sendRemoteControlRequest(398)" alt="red">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="90, 422, 10" nohref onclick="sendRemoteControlRequest(399)" alt="green">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="123, 422, 10" nohref onclick="sendRemoteControlRequest(400)" alt="yellow">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="158, 421, 10" nohref onclick="sendRemoteControlRequest(401)" alt="blue">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="61, 460, 10" nohref onclick="sendRemoteControlRequest(377)" alt="tv">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="90, 461, 10" nohref onclick="sendRemoteControlRequest(385)" alt="radio">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="123, 461, 10" nohref onclick="sendRemoteControlRequest(388)" alt="text">';\r
+ tplRemoteControlForm += '<area shape="circle" coords="153, 460, 10" nohref onclick="sendRemoteControlRequest(138)" alt="help">';\r
+ tplRemoteControlForm += '</map>';\r
+ tplRemoteControlForm += '<img src="/webdata/gfx/remotecontrol.jpg" height="607" width="220" border="0)" alt="Remote Control" usemap="#remotecontrol">';\r
+ \r
+var tplAddTimerForm = '';\r
+ tplAddTimerForm += '<table border=0 cellpadding=0 cellspacing=10>';\r
+ tplAddTimerForm += '<tr><td colspan="3">Action:</td>';\r
+ tplAddTimerForm += '<td colspan="3">';\r
+ tplAddTimerForm += '<select name="justplay" id="justplay" size="1">';\r
+ tplAddTimerForm += '%(justplay)';\r
+ tplAddTimerForm += '</select></td></tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3"> </td>';\r
+ tplAddTimerForm += '<td colspan="3">Note: For recurring events start/end day/month are not required.</td></tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3">Start:</td>';\r
+ tplAddTimerForm += '<td colspan="3"><select name="syear" size="1" id="syear" onchange="javascript:addTimerFormChangeTime(\'syear\');">%(syear)</select>.';\r
+ tplAddTimerForm += '<select name="smonth" id="smonth" size="1" onchange="javascript:addTimerFormChangeTime(\'smonth\');">%(smonth)</select>.';\r
+ tplAddTimerForm += '<select name="sday" id="sday" size="1" onchange="javascript:addTimerFormChangeTime(\'sday\');">%(sday)</select>';\r
+ tplAddTimerForm += ' - <select name="shour" id="shour" size="1" onchange="javascript:addTimerFormChangeTime(\'shour\');">%(shour)</select>';\r
+ tplAddTimerForm += ':<select name="smin" id="smin" size="1" onchange="javascript:addTimerFormChangeTime(\'smin\');">%(smin)</select></td></tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3">End:</td>';\r
+ tplAddTimerForm += '<td colspan="3"><select name="eyear" id="eyear" size="1" onchange="javascript:addTimerFormChangeTime(\'eyear\');">%(eyear)</select>.';\r
+ tplAddTimerForm += '<select name="emonth" id="emonth" size="1" onchange="javascript:addTimerFormChangeTime(\'emonth\');">%(emonth)</select>.';\r
+ tplAddTimerForm += '<select name="eday" id="eday" size="1" onchange="javascript:addTimerFormChangeTime(\'eday\');">%(eday)</select>';\r
+ tplAddTimerForm += ' - <select name="ehour" id="ehour" size="1" onchange="javascript:addTimerFormChangeTime(\'ehour\');">%(ehour)</select>';\r
+ tplAddTimerForm += ':<select name="emin" id="emin" size="1" onchange="javascript:addTimerFormChangeTime(\'emin\');">%(emin)</select></td></tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3"> </td><td colspan="3">Note: For one-time events the "days" field doesn\'t have to be specified.</td></tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3">Days:</td><td colspan="3">%(repeated)';\r
+ tplAddTimerForm += '<tr><td colspan="3">Channel:</td><td>';\r
+ tplAddTimerForm += '<p><input type="radio" id="tvradio" name="tvradio" value="tv" checked onchange="javascript:addTimerFormChangeType();"">TV</p>';\r
+ tplAddTimerForm += '<p><input type="radio" name="tvradio" value="radio" onchange="javascript:addTimerFormChangeType();">Radio</p><td>';\r
+ tplAddTimerForm += '<p>Channel:</p>';\r
+ tplAddTimerForm += '<select name="channel" id="channel" size="1" onchange="timerFormExtendChannellist($(\'channel\').options[$(\'channel\').selectedIndex].value)">%(channel)</select></td></tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3">Name:</td>';\r
+ tplAddTimerForm += '<td colspan="3"><input name="name" id="name" type="text" size="100" maxlength="100" style="color: #000000;" value="%(name)"></td></tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3">Description:</td>';\r
+ tplAddTimerForm += '<td colspan="3"><input name="descr" id="descr" type="text" size="100" maxlength="100" style="color: #000000;" value="%(description)"></td></tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3">After event do:</td>';\r
+ tplAddTimerForm += '<td colspan="3"><select id="after_event" name="after_event" size="1">%(afterEvent)</select></td></tr>';\r
+ tplAddTimerForm += '<tr> </tr>';\r
+ tplAddTimerForm += '<tr><td colspan="3"> </td><td colspan="3">';\r
+ tplAddTimerForm += '<input name="deleteOldOnSave" id="deleteOldOnSave" type="hidden" value="%(deleteOldOnSave)">';\r
+ tplAddTimerForm += '<input name="channelOld" id="channelOld" type="hidden" value="%(channelOld)">';\r
+ tplAddTimerForm += '<input name="beginOld" id="beginOld" type="hidden" value="%(beginOld)">';\r
+ tplAddTimerForm += '<input name="endOld" id="endOld" type="hidden" value="%(endOld)">';\r
+ tplAddTimerForm += '<input name="eventID" id="eventID" type="hidden" value="%(eventID)">';\r
+ tplAddTimerForm += '<button onclick="sendAddTimer()">Add/Save</button></td></tr></table>';\r
+\r
+var tplAddTimerFormOptions = '';\r
+ tplAddTimerFormOptions += '<option value="%(value)" %(selected)>%(txt)</option>';\r
+ \r
+var tplAddTimerFormCheckbox = '';\r
+ tplAddTimerFormCheckbox += '<input type="checkbox" id="%(id)" name="%(name)" value="%(value)" %(checked)> %(txt) ';\r
+\r
+var tplAbout = '<table align="center" border="0" width="80%">';\r
+ tplAbout += '<tr><td align="left" width="50%" valign="top">';\r
+ tplAbout += '<table align="center" border="0" width="100%">';\r
+ tplAbout += '<tr><td align="left"></br></td></tr>';\r
+ tplAbout += '<tr><td align="left"><b>Box Info:</b></td></tr>';\r
+ tplAbout += '<tr><td align="left"><b>Enigma Version: </b>%(enigmaVersion)</td></tr>';\r
+ tplAbout += '<tr><td align="left"><b>Frontprozessor Version: </b>%(fpVersion)</td></tr>';\r
+ tplAbout += '<tr><td align="left"></br></td></tr>';\r
+ tplAbout += '<tr><td align="left"><b>detected Tuner:<br></b>%(tunerInfo)</td></tr>';\r
+ tplAbout += '<tr><td align="left"></br></td></tr>';\r
+ tplAbout += '<tr><td align="left"><b>Harddisc Details:<br></b>%(hddInfo)</td></tr>';\r
+ tplAbout += '<tr><td align="left"></br></td></tr>';\r
+/*\r
+ tplAbout += '<tr><td align="left"><b>LAN Info:</b></td></tr>';\r
+ tplAbout += '<tr><td align="left">%(lanDHCP)</td></tr>';\r
+ tplAbout += '<tr><td align="left">%(lanIP)</td></tr>';\r
+ tplAbout += '<tr><td align="left">%(lanMask)</td></tr>';\r
+ tplAbout += '<tr><td align="left">%(lanGW)</td></tr>';\r
+ tplAbout += '<tr><td align="left">%(lanDNS)</td></tr>\n';\r
+*/\r
+ tplAbout += '</table></td>\n';\r
+ tplAbout += '<td align="left" width="50%" valign="top">';\r
+ tplAbout += '<table align="center" border="0" width="100%">';\r
+ tplAbout += '<tr><td align="left"></br></td></tr>\n';\r
+ tplAbout += '<tr><td align="left"><b>Service Info:</b></td></tr>\n';\r
+ tplAbout += '<tr><td align="left">Name: %(serviceName)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">Provider: %(serviceProvider)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">Videoformat: %(serviceAspect)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">Namespace: %(serviceNamespace)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left"></br></td></tr>\n';\r
+ tplAbout += '<tr><td align="left"><b>PIDs:</b></td></tr>\n';\r
+ tplAbout += '<tr><td align="left">VideoPID: %(vPIDh) (%(vPID)d)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">AudioPID: %(aPIDh) (%(aPID)d)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">PCRPID: %(pcrIDh) (%(pcrID)d)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">PMTPID: %(pmtPIDh) (%(pmtPID)d)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">TXTPID: %(txtPIDh) (%(txtPID)d)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">TSID: %(tsIDh) (%(tsID)d)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">ONID: %(onIDh) (%(onID)d)</td></tr>\n';\r
+ tplAbout += '<tr><td align="left">SID: %(sidh) (%(sid)d)</td></tr>\n';\r
+ tplAbout += '</table>';\r
+\r
+var tplExtraHiddenFunctions = '<ul style="list-style-type:disc">';\r
+ tplExtraHiddenFunctions += '<li><div onclick="restartTwisted()">Restart Twisted</div></li>';\r
+ tplExtraHiddenFunctions += '<li><div onclick="clearInterval(UpdateStreamReaderPollTimer);">Stop Time/Signal/Current-Channel -Updates</div></li>';\r
+ tplExtraHiddenFunctions += '<li><div onclick="restartUpdateStream();">Restart Time/Signal/Current-Channel -Updates</div></li>';\r
+ tplExtraHiddenFunctions += '<li><div onclick="startDebugWindow();">Start Debug-Window</div></li>';\r
+ tplExtraHiddenFunctions += '</ul>'\r
+ \r
-Version = '$Header$';
-
-var doRequestMemory = new Object();
-var doRequestMemorySave = new Object();
-
-// Get Settings
-var settings = null;
-var parentControlList = null;
-
-// UpdateStreamReader
-var UpdateStreamReaderNextReadPos = 0;
-var UpdateStreamReaderPollTimer;
-var UpdateStreamReaderPollTimerCounter = 0;
-var UpdateStreamReaderPollTimerCounterTwisted = 0;
-UpdateStreamReaderRequest = null;
-function UpdateStreamReaderStart(){
- var ua = navigator.userAgent;
- if(navigator.userAgent.indexOf("MSIE") >=0) {
- debug("UpdateStreamReader IE Fix");
-
- var namespace = {
- 'url_updates': url_updates
- };
- $('UpdateStreamReaderIEFixPanel').innerHTML = RND(tplUpdateStreamReaderIE, namespace);
-
- }else {
- UpdateStreamReaderNextReadPos = 0;
- allMessages = "";
- UpdateStreamReaderRequest = new XMLHttpRequest();
- UpdateStreamReaderRequest.onload = UpdateStreamReaderOnLoad;
- UpdateStreamReaderRequest.onerror = UpdateStreamReaderOnError;
- UpdateStreamReaderRequest.open("GET", url_updates, true);
- UpdateStreamReaderRequest.send(null);
- UpdateStreamReaderPollTimer = setInterval(UpdateStreamReaderLatestResponse, 10000);
- }
-}
-
-function UpdateStreamReaderLatestResponse() {
- UpdateStreamReaderPollTimerCounter++;
- debug(UpdateStreamReaderPollTimerCounter);
- if(UpdateStreamReaderPollTimerCounter > 6) {
- clearInterval(UpdateStreamReaderPollTimer);
- UpdateStreamReaderRequest.abort();
- UpdateStreamReaderRequest = null;
- UpdateStreamReaderPollTimerCounter = 0;
- UpdateStreamReaderStart();
-
- UpdateStreamReaderPollTimerCounterTwisted++;
- return;
- }
- var allMessages = UpdateStreamReaderRequest.responseText;
- do {
- var unprocessed = allMessages.substring(UpdateStreamReaderNextReadPos);
- var messageXMLEndIndex = unprocessed.indexOf("\n");
-
- if (messageXMLEndIndex!=-1) {
- var endOfFirstMessageIndex = messageXMLEndIndex + "\n".length;
- var anUpdate = unprocessed.substring(0, endOfFirstMessageIndex);
-
- var re = new RegExp("<script>parent\.(.*)</script>");
- anUpdate = re.exec(anUpdate);
-
- if(anUpdate != null){
- if (anUpdate.length == 2){
- eval(anUpdate[1]);
- }
- }
-
- UpdateStreamReaderNextReadPos += endOfFirstMessageIndex;
- }
- if(UpdateStreamReaderNextReadPos > 65000){
- UpdateStreamReaderRequest.abort();
- UpdateStreamReaderRequest = null;
- UpdateStreamReaderPollTimerCounter = 0;
- UpdateStreamReaderStart();
- messageXMLEndIndex = -1;
- }
- } while (messageXMLEndIndex != -1);
-}
-
-function UpdateStreamReaderOnLoad(){
- window.clearInterval(UpdateStreamReaderPollTimer);
- debug("UpdateStreamReaderOnLoad");
- Dialog.confirm(
- "Live Update Stream ends!<br><br>You will not receive any Update from Enigma2.<br>Should I reconnect?",
- {windowParameters: {width:300, className: windowStyle},
- okLabel: "reconnect",
- buttonClass: "myButtonClass",
- cancel: function(win) {debug("cancel confirm panel")},
- ok: function(win) {UpdateStreamReaderStart(); return true;}
- }
- );
-}
-function UpdateStreamReaderOnError(){
- // TODO: change this, because it will be called on 'PageUnload' while the request is still running
- debug("UpdateStreamReaderOnError");
- window.clearInterval(UpdateStreamReaderPollTimer);
- Dialog.confirm(
- "Live Update Stream has an Error!<br><br>You will not receive any Update from Enigma2.<br>Should I try to reconnect?",
- {windowParameters: {width:300, className: windowStyle},
- okLabel: "reconnect",
- buttonClass: "myButtonClass",
- cancel: function(win) {debug("cancel confirm panel")},
- ok: function(win) {UpdateStreamReaderStart(); return true;}
- }
- );
-}
-//end UpdateStreamReader
-
-function openWindow(title, inner, width, height, id){
- if(id == null) id = new Date().toUTCString();
- var win = new Window(id, {className: windowStyle, title: title, width: width, height: height });
- win.getContent().innerHTML = inner;
- win.setDestroyOnClose();
- win.showCenter();
- debug("opening Window: "+title);
- return win;
-}
-function messageBox(t, m){
- Dialog.alert(m, {windowParameters: {title: t, className: windowStyle, width:200}, okLabel: "Close"});
-}
-
-//RND Template Function (http://www.amix.dk)
-function RND(tmpl, ns) {
- var fn = function(w, g) {
- g = g.split("|");
- var cnt = ns[g[0]];
- //Support for filter functions
- for(var i=1; i < g.length; i++) {
- cnt = eval(g[i])(cnt);
- }
- return cnt || w;
- };
- return tmpl.replace(/%\(([A-Za-z0-9_|.]*)\)/g, fn);
-}
-function debug(text){
- if(DBG){
- try{
- debugWin.getContent().innerHTML += "DEBUG: "+text+"<br>";
- } catch (windowNotPresent) {}
- }
-}
-function showhide(id){
- o = $(id).style;
- o.display = (o.display!="none")? "none":"";
-}
-function set(element, value){
- //debug(element+"-"+value);
- element = parent.$(element);
- if(value.length > 550) {
- value = value.substr(0,550) + "[...]";
- }
- if (element){
- element.innerHTML = value;
- }
- if(navigator.userAgent.indexOf("MSIE") >=0) {
- elementscript= $('UpdateStreamReaderIEFixIFrame').$('scriptzone');
- if(elementscript){
- elementscript.innerHTML = ""; // deleting set() from page, to keep the page short and to save memory
- }
- }
-}
-function setComplete(element, value){
- //debug(element+"-"+value);
- element = parent.$(element);
- if (element){
- element.innerHTML = value;
- }
- if(navigator.userAgent.indexOf("MSIE") >=0) {
- elementscript= $('UpdateStreamReaderIEFixIFrame').$('scriptzone');
- if(elementscript){
- elementscript.innerHTML = ""; // deleting set() from page, to keep the page short and to save memory
- }
- }
-}
-// requestindikator
-var requestcounter = 0;
-function requestIndicatorUpdate(){
- //debug(requestcounter+" open requests");
- if(requestcounter>=1){
- $('RequestIndicator').style.display = "inline";
- }else{
- $('RequestIndicator').style.display = "none";
- }
-}
-function requestStarted(){
- requestcounter +=1;
- requestIndicatorUpdate();
-}
-function requestFinished(){
- requestcounter -=1;
- requestIndicatorUpdate();
-}
-// end requestindikator
-function doRequest(url, readyFunction, save){
- requestStarted();
- doRequestMemorySave[url] = save;
- debug("doRequest: Requesting: "+url);
- if(save == true && typeof(doRequestMemory[url]) != "undefined") {
- readyFunction(doRequestMemory[url]);
- } else {
- debug("doRequest: loading");
- new Ajax.Request(url,
- {
- asynchronous: true,
- method: 'GET',
- requestHeaders: ['Pragma', 'no-cache', 'Cache-Control', 'must-revalidate', 'If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'],
- onException: function(o,e){ throw(e); },
- onSuccess: function (transport, json) {
- if(typeof(doRequestMemorySave[url]) != "undefined") {
- if(doRequestMemorySave[url]) {
- debug("doRequest: saving request");
- doRequestMemory[url] = transport;
- }
- }
- readyFunction(transport);
- },
- onComplete: requestFinished
- });
- }
-}
-
-function getXML(request){
- if (document.implementation && document.implementation.createDocument){
- var xmlDoc = request.responseXML
- }
- else if (window.ActiveXObject){
- var xmlInsert = document.createElement('xml');
-
- xmlInsert.setAttribute('innerHTML',request.responseText);
- xmlInsert.setAttribute('id','_MakeAUniqueID');
- document.body.appendChild(xmlInsert);
- xmlDoc = $('_MakeAUniqueID');
- document.body.removeChild($('_MakeAUniqueID'));
- } else {
- debug("Your Browser Sucks!");
- }
- return xmlDoc;
-}
-function parentPin(servicereference) {
- servicereference = decodeURIComponent(servicereference);
- if(parentControlList == null || String(getSettingByName("config.ParentalControl.configured")) != "True") {
- return true;
- }
- debug("parentPin " + parentControlList.length);
- if(getParentControlByRef(servicereference) == servicereference) {
- if(String(getSettingByName("config.ParentalControl.type.value")) == "whitelist") {
- debug("leaving here 1");
- return true;
- }
- } else {
- debug("leaving here 2");
- return true;
- }
- debug("going to ask for PIN");
-
- var userInput = prompt('ParentControll was switch on.<br> Please enter PIN','PIN');
- if (userInput != '' && userInput != null) {
- if(String(userInput) == String(getSettingByName("config.ParentalControl.servicepin.0")) ) {
- return true;
- } else {
- return parentPin(servicereference);
- }
- } else {
- return false;
- }
-}
-var SubServicePoller;
-var SubServicePollerCounter = 0;
-var SubServicePollerRef = null;
-function zap(servicereference){
- if(parentPin(servicereference)) {
- new Ajax.Request( "/web/zap?sRef=" + servicereference,
- {
- asynchronous: true,
- method: 'get'
- }
- );
- if(SubServicePoller != 0){
- clearInterval(SubServicePoller);
- SubServicePollerCounter = 0;
- }
- SubServicePollerRef = servicereference;
- SubServicePoller = setInterval(getSubServices, 10000);
- SubServicePollerCounter = 1;
- }
-}
-
-//++++ SignalPanel ++++
-function initSignalPanel(){
- $('SignalPanel').innerHTML = tplSignalPanelButton;
-}
-function openSignalDialog(){
- openWindow("Signal Info",tplSignalPanel, 215, 75);
-}
-
-
-//++++ EPG functions ++++
-function loadEPGBySearchString(string){
- doRequest(url_epgsearch+escape(string),incomingEPGrequest, false);
-}
-function loadEPGByServiceReference(servicereference){
- doRequest(url_epgservice+servicereference,incomingEPGrequest, false);
-}
-function incomingEPGrequest(request){
- debug("incoming request" +request.readyState);
- if (request.readyState == 4){
- var EPGItems = new EPGList(getXML(request)).getArray(true);
- debug("have "+EPGItems.length+" e2events");
- if(EPGItems.length > 0){
- var html = tplEPGListHeader;
- for (var i=0; i < EPGItems.length; i++){
- try{
- var item = EPGItems[i];
- var namespace = {
- 'date': item.getTimeDay(),
- 'eventid': item.getEventId(),
- 'servicereference': item.getServiceReference(),
- 'servicename': quotes2html(item.getServiceName()),
- 'title': quotes2html(item.getTitle()),
- 'titleESC': escape(item.getTitle()),
- 'starttime': item.getTimeStartString(),
- 'duration': Math.ceil(item.getDuration()/60000),
- 'description': quotes2html(item.getDescription()),
- 'endtime': item.getTimeEndString(),
- 'extdescription': quotes2html(item.getDescriptionExtended()),
- 'number': String(i),
- 'extdescriptionSmall': extdescriptionSmall(item.getDescriptionExtended(),String(i)),
- 'start': item.getTimeBegin(),
- 'end': item.getTimeEnd()
- };
- //Fill template with data and add id to our result
- html += RND(tplEPGListItem, namespace);
- } catch (blubb) { debug("Error rendering: "+blubb); }
- }
- html += tplEPGListFooter;
- openWindow("Electronic Program Guide", html, 900, 500);
- } else {
- messageBox('No Items found!', 'Sorry but i could not find any EPG Content containing your search value');
- }
- }
-}
-function extdescriptionSmall(txt,num) {
- if(txt.length > 410) {
- var shortTxt = txt.substr(0,410);
- txt = txt.replace(/\'\'/g, '"');
- txt = txt.replace(/\\/g, '\\\\');
- txt = txt.replace(/\'/g, '\\\'');
- txt = txt.replace(/\"/g, '"');
- var smallNamespace = { 'txt':txt,'number':num, 'shortTxt':shortTxt};
- return RND(tplEPGListItemExtend, smallNamespace);
- } else {
- return txt;
- }
-}
-
-/////////////////////////
-
-function loadServiceEPGNowNext(servicereference){
- var url = url_epgnow+servicereference;
- doRequest(url, incomingServiceEPGNowNext, false);
-}
-
-function incomingServiceEPGNowNext(request){
- if(request.readyState == 4){
- var epgevents = getXML(request).getElementsByTagName("e2eventlist").item(0).getElementsByTagName("e2event");
- for (var c =0; c < epgevents.length;c++){
- var eventnow = new EPGEvent(epgevents.item(c));
-
- if (eventnow.getEventId() != 'None'){
- buildServiceListEPGItem(eventnow,"NOW");
- }
- }
- }
-}
-function buildServiceListEPGItem(epgevent,nownext){
- var e = $(epgevent.getServiceReference()+'EPG'+nownext);
- try{
- var namespace = {
- 'starttime': epgevent.getTimeStartString(),
- 'title': epgevent.getTitle(),
- 'length': Math.ceil(epgevent.duration/60)
- };
- e.innerHTML = RND(tplServiceListEPGItem, namespace);
- } catch (blubb) {
- debug("Error rendering: "+blubb);
- }
-}
-///////////////////
-
-
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-//++++ GUI functions ++++
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-var currentBodyMainElement = null
-
-function setBodyMainContent(newelementname){
- newelement =$(newelementname);
- if(currentBodyMainElement != null){
- currentBodyMainElement.style.display = "none";
-
- }
- newelement.style.display = "";
- currentBodyMainElement = newelement;
-}
-
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-//++++ volume functions ++++
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-function initVolumePanel(){
- $('VolumePanel').innerHTML = tplVolumePanel;
- getVolume();
-}
-function getVolume(){
- doRequest(url_getvolume,handleVolumeRequest, false);
-}
-function volumeSet(newvalue){
- doRequest(url_setvolume+newvalue,handleVolumeRequest, false);
-}
-function volumeUp(){
- doRequest(url_volumeup,handleVolumeRequest, false);
-}
-function volumeDown(){
- doRequest(url_volumedown,handleVolumeRequest, false);
-}
-function volumeMute(){
- doRequest(url_volumemute,handleVolumeRequest, false);
-}
-function handleVolumeRequest(request){
- if (request.readyState == 4) {
- var b = getXML(request).getElementsByTagName("e2volume");
- var newvalue = b.item(0).getElementsByTagName('e2current').item(0).firstChild.data;
- var mute = b.item(0).getElementsByTagName('e2ismuted').item(0).firstChild.data;
- debug("volume"+newvalue+";"+mute);
-
- for (var i = 1; i <= 10; i++) {
- if ( (newvalue/10)>=i){
- $("volume"+i).src = "/webdata/gfx/led_on.png";
- }else{
- $("volume"+i).src = "/webdata/gfx/led_off.png";
- }
- }
- if (mute == "False"){
- $("speaker").src = "/webdata/gfx/speak_on.png";
- }else{
- $("speaker").src = "/webdata/gfx/speak_off.png";
- }
- }
-}
-
-var bouqetsMemory = new Object();
-
-function initChannelList(){
- //debug("init ChannelList");
- var url = url_getServices+encodeURIComponent(bouqet_tv);
- doRequest(url, incomingTVBouquetList, true);
-
- var url = url_getServices+encodeURIComponent(bouqet_radio);
- doRequest(url, incomingRadioBouquetList, true);
-
- var url = url_getServices+encodeURIComponent(bouqet_provider_tv);
- doRequest(url, incomingProviderTVBouquetList, true);
-
- var url = url_getServices+encodeURIComponent(bouqet_provider_radio);
- doRequest(url, incomingProviderRadioBouquetList, true);
-
- getSettings();
-}
-
-var servicereftoloadepgnow = "";
-var loadedChannellist = new Object();
-function loadBouquet(servicereference){
- debug("loading bouquet with "+servicereference);
- servicereftoloadepgnow = servicereference;
- debug("loadBouquet " + typeof(loadedChannellist[servicereftoloadepgnow]));
- if(typeof(loadedChannellist[servicereftoloadepgnow]) == "undefined") {
- doRequest(url_getServices+servicereference, incomingChannellist, true);
- } else {
- incomingChannellist();
- }
-}
-
-function incomingTVBouquetList(request){
- if (request.readyState == 4) {
- var list0 = new ServiceList(getXML(request)).getArray();
- debug("have "+list0.length+" TV Bouquet ");
- $('accordionMenueBouquetContentTV').innerHTML = renderBouquetTable(list0,tplBouquetListHeader,tplBouquetListItem,tplBouquetListFooter);
- //loading first entry of TV Favorites as default for ServiceList
- loadBouquet(list0[0].getServiceReference());
- bouqetsMemory["bouqet_tv"] = list0;
- }
-}
-function incomingRadioBouquetList(request){
- if (request.readyState == 4) {
- var list1 = new ServiceList(getXML(request)).getArray();
- debug("have "+list1.length+" Radio Bouquet ");
- $('accordionMenueBouquetContentRadio').innerHTML = renderBouquetTable(list1,tplBouquetListHeader,tplBouquetListItem,tplBouquetListFooter);
- }
-}
-function incomingProviderTVBouquetList(request){
- if (request.readyState == 4) {
- var list2 = new ServiceList(getXML(request)).getArray();
- debug("have "+list2.length+" TV Provider Bouquet ");
- $('accordionMenueBouquetContentProviderTV').innerHTML = renderBouquetTable(list2,tplBouquetListHeader,tplBouquetListItem,tplBouquetListFooter);
- }
-}
-function incomingProviderRadioBouquetList(request){
- if (request.readyState == 4) {
- var list2 = new ServiceList(getXML(request)).getArray();
- debug("have "+list2.length+" Radio Provider Bouquet ");
- $('accordionMenueBouquetContentProviderRadio').innerHTML = renderBouquetTable(list2,tplBouquetListHeader,tplBouquetListItem,tplBouquetListFooter);
- }
-}
-
-function renderBouquetTable(bouquet,templateHeader,templateItem,templateFooter){
- debug("renderBouquetTable with "+bouquet.length+" Bouqet");
- var html = templateHeader;
- for (var i=0; i < bouquet.length; i++){
- try{
- var namespace = {
- 'servicereference': bouquet[i].getServiceReference(),
- 'bouquetname': bouquet[i].getServiceName()
- };
- html += RND(templateItem, namespace);
- } catch (blubb) {}
- }
- html += templateFooter;
- return html;
-}
-
-function incomingChannellist(request){
- var services = null;
- if(typeof(loadedChannellist[servicereftoloadepgnow]) != "undefined"){
- services = loadedChannellist[servicereftoloadepgnow];
- } else if(request.readyState == 4) {
- services = new ServiceList(getXML(request)).getArray();
- loadedChannellist[servicereftoloadepgnow] = services;
- debug("got "+services.length+" Services");
- }
- if(services != null) {
- var smallNamespace = {'mainServiceRef': servicereftoloadepgnow };
- listerHtml = RND(tplServiceListHeader, smallNamespace);
- for ( var i = 0; i < services.length ; i++){
- var reference = services[i];
- var namespace = {
- 'servicereference': reference.getServiceReference(),
- 'servicename': reference.getServiceName()
- };
- listerHtml += RND(tplServiceListItem, namespace);
- }
- listerHtml += tplServiceListFooter;
- $('BodyContentChannellist').innerHTML = listerHtml;
- setBodyMainContent('BodyContentChannellist');
- loadServiceEPGNowNext(servicereftoloadepgnow);
- debug("incomingChannellist " + typeof(loadedChannellist[servicereftoloadepgnow]));
- }
-}
-// Movies
-function loadMovieList(){
- debug("loading movies");
- doRequest(url_movielist, incomingMovieList);
-}
-
-function incomingMovieList(request){
- if(request.readyState == 4){
- var movies = new MovieList(getXML(request)).getArray();
- debug("have "+movies.length+" movies");
- listerHtml = tplMovieListHeader;
- for ( var i = 0; i <movies.length; i++){
- var movie = movies[i];
- var namespace = {
- 'servicereference': movie.getServiceReference(),
- 'servicename': movie.getServiceName() ,
- 'title': movie.getTitle(),
- 'description': movie.getDescription(),
- 'descriptionextended': movie.getDescriptionExtended(),
- 'filelink': String(movie.getFilename()).substr(17,movie.getFilename().length),
- 'filename': String(movie.getFilename()),
- 'tags': movie.getTags().join(', ')
- };
- listerHtml += RND(tplMovieListItem, namespace);
- }
- listerHtml += tplMovieListFooter;
- $('BodyContentChannellist').innerHTML = listerHtml;
- setBodyMainContent('BodyContentChannellist');
-
- }
-}
-function delMovieFile(file,servicename,title,description) {
- debug("delMovieFile: file("+file+"),servicename("+servicename+"),title("+title+"),description("+description+")");
- Dialog.confirm(
- "Selected timer:<br>"
- +"Servicename: "+servicename+"<br>"
- +"Title: "+title+"<br>"
- +"Description: "+description+"<br>"
- +"Are you sure that you want to delete the Timer?",
- {windowParameters: {width:300, className: windowStyle},
- okLabel: "delete",
- buttonClass: "myButtonClass",
- cancel: function(win) {debug("delMovieFile cancel confirm panel")},
- ok: function(win) { debug("delMovieFile ok confirm panel"); doRequest(url_moviefiledelete+"?filename="+file, incomingDelMovieFileResult, false); return true; }
- }
- );
-
-}
-function incomingDelMovieFileResult(request) {
- debug("incomingDelMovieFileResult");
- if(request.readyState == 4){
- var delresult = new SimpleXMLResult(getXML(request));
- if(delresult.getState()){
- loadMovieList();
- }else{
- messageBox("Deletion Error","Reason: "+delresult.getStateText());
- }
- }
-}
-
-
-// send Messages
-function showMessageSendForm(){
- $('BodyContentChannellist').innerHTML = tplMessageSendForm;
-}
-function sendMessage(messagetext,messagetype,messagetimeout){
- if(!messagetext){
- messagetext = $('MessageSendFormText').value;
- }
- if(!messagetimeout){
- messagetimeout = $('MessageSendFormTimeout').value;
- }
- if(!messagetype){
- var index = $('MessageSendFormType').selectedIndex;
- messagetype = $('MessageSendFormType').options[index].value;
- }
- doRequest(url_message+'?text='+messagetext+'&type='+messagetype+'&timeout='+messagetimeout, incomingMessageResult, false);
-}
-function incomingMessageResult(request){
-
- if(request.readyState== 4){
- var b = getXML(request).getElementsByTagName("e2message");
- var result = b.item(0).getElementsByTagName('e2result').item(0).firstChild.data;
- var resulttext = b.item(0).getElementsByTagName('e2resulttext').item(0).firstChild.data;
- if (result=="True"){
- messageBox('message send','message send successfully! it appears on TV-Screen');
- }else{
- messageBox('message send failed',resulttext);
- }
- }
-}
-
-// PowerState Code
-function showPowerStateSendForm(){
- $('BodyContentChannellist').innerHTML = tplPowerStateSendForm;
-}
-function sendPowerState(newState){
- doRequest(url_powerstate+'?newstate='+newState, incomingPowerStateResult, false);
-}
-function incomingPowerStateResult(request){
- debug(request.readyState);
- if(request.readyState == 4){
- var b = getXML(request).getElementsByTagName("e2powerstate");
- var result = b.item(0).getElementsByTagName('e2result').item(0).firstChild.data;
- var resulttext = b.item(0).getElementsByTagName('e2resulttext').item(0).firstChild.data;
- var tplPowerStateSendForm2 = '<h1>PowerState is changing to:'+resulttext+ '</h1>' + tplPowerStateSendForm;
- $('BodyContentChannellist').innerHTML = tplPowerStateSendForm2;
- } else {
- $('BodyContentChannellist').innerHTML = "<h1>some unknown error</h1>" + tplPasswordSendForm;
- }
-}
-
-// RemoteControl Code
-function showRemoteControllSendForm(){
- if(! $('rcWindow')){
- openWindow("Remote", tplRemoteControlForm, 220, 615, "rcWindow");
- }
-}
-function sendRemoteControlRequest(command){
- doRequest(url_remotecontrol+'?command='+command, incomingRemoteControlResult, false);
-}
-function incomingRemoteControlResult(request){
- if(request.readyState == 4){
- var b = getXML(request).getElementsByTagName("e2remotecontrol");
- var result = b.item(0).getElementsByTagName('e2result').item(0).firstChild.data;
- var resulttext = b.item(0).getElementsByTagName('e2resulttext').item(0).firstChild.data;
- } else {
- $('rcWindow').innerHTML = "<h1>some unknown error</h1>" + tplRemoteControlForm;
- }
-}
-
-function getSettings(){
- doRequest(url_settings, incomingGetSettings, false);
-}
-
-function incomingGetSettings(request){
- if(request.readyState == 4){
- settings = new Settings(getXML(request)).getArray();
- }
- if(String(getSettingByName("config.ParentalControl.configured")) == "True") {
- getParentControl();
- }
-}
-function getSettingByName(txt) {
- debug("getSettingByName ("+txt+")");
- for(i = 0; i < settings.length; i++) {
- debug("("+settings[i].getSettingName()+") (" +settings[i].getSettingValue()+")");
- if(String(settings[i].getSettingName()) == String(txt)) {
- return settings[i].getSettingValue();
- }
- }
- return "";
-}
-function getParentControl() {
- doRequest(url_parentcontrol, incomingParentControl, false);
-}
-function incomingParentControl(request) {
- if(request.readyState == 4){
- parentControlList = new ServiceList(getXML(request)).getArray();
- debug("parentControlList got "+parentControlList.length + " services");
- }
-}
-function getParentControlByRef(txt) {
- debug("getParentControlByRef ("+txt+")");
- for(i = 0; i < parentControlList.length; i++) {
- debug("("+parentControlList[i].getClearServiceReference()+")");
- if(String(parentControlList[i].getClearServiceReference()) == String(txt)) {
- return parentControlList[i].getClearServiceReference();
- }
- }
- return "";
-}
-function sendToggleTimerDisable(justplay,begin,end,repeated,channel,name,description,afterEvent,disabled){
- disabled = (ownLazyNumber(disabled) == 0) ? 1 : 0;
-
- var descriptionClean = (description == " " || description == "N/A") ? "" : description;
- var nameClean = (name == " " || name == "N/A") ? "" : name;
-
- doRequest(url_timerchange+"?"+"sRef="+channel.replace(""", '"')+"&begin="+begin
- +"&end="+end+"&name="+escape(nameClean)+"&description="+escape(descriptionClean)
- +"&afterevent="+afterEvent+"&eit=0&disabled="+disabled
- +"&justplay="+justplay+"&repeated="+repeated
- +"&channelOld="+channel
- +"&beginOld="+begin+"&endOld="+end
- +"&deleteOldOnSave=1", incomingTimerAddResult, false);
-}
-function ownLazyNumber(num) {
- if(isNaN(num)){
- return 0;
- } else {
- return Number(num);
- }
-}
-
-var subServicesInsertedList = new Object();
-
-function getSubServices(servicereference) {
- clearInterval(SubServicePoller);
- SubServicePollerCounter = 0;
- doRequest(url_subservices,incomingSubServiceRequest, false);
-}
-function incomingSubServiceRequest(request){
- if(request.readyState == 4){
- var services = new ServiceList(getXML(request)).getArray();
- listerHtml = '';
- debug("got "+services.length+" SubServices");
- if(services.length > 1) {
-
- first = services[0];
- var mainChannellist = loadedChannellist[String($('mainServiceRef').value)];
-
- var oldEntryPosition = -1;
- for(i = 0; i < mainChannellist.length; i++) {
- var service = mainChannellist[i];
- if(String(service.getServiceReference()) == String(first.getServiceReference())) {
- oldEntryPosition = i + 1;
- break;
- }
- }
- if(typeof(subServicesInsertedList[String(first.getServiceReference())]) != "undefined") {
- for ( var i = 1; i < subServicesInsertedList[String(first.getServiceReference())].length ; i++){
- var reference = subServicesInsertedList[String(first.getServiceReference())][i];
- $(reference.getServiceReference()+'extend').innerHTML = "";
- }
- for(i = oldEntryPosition; i < oldEntryPosition + subServicesInsertedList[String(first.getServiceReference())].length; i++) {
- mainChannellist.splice(i);
- }
- }
- for ( var i = 0; i < services.length ; i++){
- var reference = services[i];
- var namespace = {
- 'servicereference': reference.getServiceReference(),
- 'servicename': reference.getServiceName()
- };
- listerHtml += RND(tplServiceListItem, namespace);
- if(oldEntryPosition > -1) {
- mainChannellist = mainChannellist.insert(oldEntryPosition++, reference);
- }
- }
- $(first.getServiceReference()+'extend').innerHTML = listerHtml;
- subServicesInsertedList[String(first.getServiceReference())] = services;
- loadedChannellist[$('mainServiceRef').value] = mainChannellist;
- }
- }
-}
-// Array.insert( index, value ) - Insert value at index, without overwriting existing keys
-Array.prototype.insert = function( j, v ) {
- if( j>=0 ) {
- var a = this.slice(), b = a.splice( j );
- a[j] = v;
- return a.concat( b );
- }
-}
-// Array.splice() - Remove or replace several elements and return any deleted elements
-if( typeof Array.prototype.splice==='undefined' ) {
- Array.prototype.splice = function( a, c ) {
- var i = 0, e = arguments, d = this.copy(), f = a, l = this.length;
- if( !c ) { c = l - a; }
- for( i; i < e.length - 2; i++ ) { this[a + i] = e[i + 2]; }
- for( a; a < l - c; a++ ) { this[a + e.length - 2] = d[a - c]; }
- this.length -= c - e.length + 2;
- return d.slice( f, f + c );
- };
-}
-function writeTimerListNow() {
- new Ajax.Request( url_timerlistwrite, { asynchronous: true, method: 'get' });
-}
-function recordingPushed() {
- doRequest(url_timerlist, incomingRecordingPushed, false);
-}
-function incomingRecordingPushed(request) {
- if(request.readyState == 4){
- var timers = new TimerList(getXML(request)).getArray();
- debug("have "+timers.length+" timer");
-
- var aftereventReadable = new Array ('Nothing', 'Standby', 'Deepstandby/Shutdown');
- var justplayReadable = new Array('record', 'zap');
- var OnOff = new Array('on', 'off');
-
- listerHtml = '';
-
- for ( var i = 0; i <timers.length; i++){
- var timer = timers[i];
-
- if(ownLazyNumber(timer.getDontSave()) == 1) {
- var beginDate = new Date(Number(timer.getTimeBegin())*1000);
- var endDate = new Date(Number(timer.getTimeEnd())*1000);
- var namespace = {
- 'servicereference': timer.getServiceReference(),
- 'servicename': timer.getServiceName() ,
- 'title': timer.getName(),
- 'description': timer.getDescription(),
- 'descriptionextended': timer.getDescriptionExtended(),
- 'begin': timer.getTimeBegin(),
- 'beginDate': beginDate.toLocaleString(),
- 'end': timer.getTimeEnd(),
- 'endDate': endDate.toLocaleString(),
- 'state': timer.getState(),
- 'duration': Math.ceil((timer.getDuration()/60)),
- 'repeated': timer.getRepeated(),
- 'repeatedReadable': repeatedReadable(timer.getRepeated()),
- 'justplay': timer.getJustplay(),
- 'justplayReadable': justplayReadable[Number(timer.getJustplay())],
- 'afterevent': timer.getAfterevent(),
- 'aftereventReadable': aftereventReadable[Number(timer.getAfterevent())],
- 'disabled': timer.getDisabled(),
- 'onOff': OnOff[Number(timer.getDisabled())],
- 'color': colorTimerListEntry( timer.getState() )
- };
- listerHtml += RND(tplTimerListItem, namespace);
- }
- }
- openWindow("Record Now", listerHtml+tplRecordingFooter, 900, 500, "Record now window");
- }
-}
-function inserteSizes() {
-/* var screenW = 640, screenH = 480;
- if (parseInt(navigator.appVersion)>3) {
- screenW = screen.width;
- screenH = screen.height;
- } else if (navigator.appName == "Netscape"
- && parseInt(navigator.appVersion)==3
- && navigator.javaEnabled() ) {
- var jToolkit = java.awt.Toolkit.getDefaultToolkit();
- var jScreenSize = jToolkit.getScreenSize();
- screenW = jScreenSize.width;
- screenH = jScreenSize.height;
- }
- debug("screenW:"+screenW+" screenH:"+screenH);
- /* 640x480
- * 800x600
- * 1024x768
- * 1280x1024
- * 1600x1280
- if(screenH == 800) {
- debug("size 1");
- $("BodyContentChannellist").style.height = '20%';
- } else if(screenH == 1024) {
- debug("1024")
- $("BodyContentChannellist").style.height = '760px';
-
- } else {
- alert("unsupported screensize");
- }*/
-
-}
-function recordingPushedDecision(recordNowNothing,recordNowUndefinitely,recordNowCurrent) {
- var recordNow = recordNowNothing;
- recordNow = (recordNow == "") ? recordNowUndefinitely: recordNow;
- recordNow = (recordNow == "") ? recordNowCurrent: recordNow;
- if(recordNow != "nothing" && recordNow != "") {
- doRequest(url_recordnow+"?recordnow="+recordNow, incomingTimerAddResult, false);
- }
-}
-
-function ifChecked(rObj) {
- if(rObj.checked) {
- return rObj.value;
- } else {
- return "";
- }
-}
-function showAbout() {
- doRequest(url_about, incomingAbout, false);
-}
-function incomingAbout(request) {
- if(request.readyState == 4){
- debug("incomingAbout returned");
- var aboutEntries = getXML(request).getElementsByTagName("e2abouts").item(0).getElementsByTagName("e2about");
- for (var c =0; c < aboutEntries.length;c++){
- var xml = aboutEntries.item(c);
- try{
- var namespace = {
- 'enigmaVersion': xml.getElementsByTagName('e2enigmaversion').item(0).firstChild.data
-/*
- ,'lanDHCP': xml.getElementsByTagName('e2landhcp').item(0).firstChild.data
- ,'lanIP': xml.getElementsByTagName('e2lanip').item(0).firstChild.data
- ,'lanMask': xml.getElementsByTagName('e2lanmask').item(0).firstChild.data
- ,'lanGW': xml.getElementsByTagName('e2langw').item(0).firstChild.data
- ,'lanDNS': xml.getElementsByTagName('e2landns').item(0).firstChild.data
-*/
- ,'fpVersion': xml.getElementsByTagName('e2fpversion').item(0).firstChild.data
- ,'tunerInfo': xml.getElementsByTagName('e2tunerinfo').item(0).firstChild.data
- ,'hddInfo': xml.getElementsByTagName('e2hddinfo').item(0).firstChild.data
- ,'serviceName': xml.getElementsByTagName('e2servicename').item(0).firstChild.data
- ,'serviceProvider': xml.getElementsByTagName('e2serviceprovider').item(0).firstChild.data
- ,'serviceAspect': xml.getElementsByTagName('e2serviceaspect').item(0).firstChild.data
- ,'serviceNamespace': xml.getElementsByTagName('e2servicenamespace').item(0).firstChild.data
- ,'vPID': xml.getElementsByTagName('e2vpid').item(0).firstChild.data
- ,'vPIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2vpid').item(0).firstChild.data),16)+" "
- ,'aPID': xml.getElementsByTagName('e2apid').item(0).firstChild.data+" "
- ,'aPIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2apid').item(0).firstChild.data),16)+" "
- ,'pcrID': xml.getElementsByTagName('e2pcrid').item(0).firstChild.data
- ,'pcrIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2pcrid').item(0).firstChild.data),16)+" "
- ,'pmtPID': xml.getElementsByTagName('e2pmtpid').item(0).firstChild.data
- ,'pmtPIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2pmtpid').item(0).firstChild.data),16)+" "
- ,'txtPID': xml.getElementsByTagName('e2txtpid').item(0).firstChild.data
- ,'txtPIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2txtpid').item(0).firstChild.data),16)+" "
- ,'tsID': xml.getElementsByTagName('e2tsid').item(0).firstChild.data
- ,'tsIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2tsid').item(0).firstChild.data),16)+" "
- ,'onID': xml.getElementsByTagName('e2onid').item(0).firstChild.data
- ,'onIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2onid').item(0).firstChild.data),16)+" "
- ,'sid': xml.getElementsByTagName('e2sid').item(0).firstChild.data
- ,'sidh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2sid').item(0).firstChild.data),16)+" "
- };
- $('BodyContentChannellist').innerHTML = RND(tplAbout, namespace);;
- setBodyMainContent('BodyContentChannellist');
-
- } catch (e) {
- debug("About parsing Error" + e);
- }
- }
- }
-}
-function quotes2html(txt) {
- txt = txt.replace(/"/g, '"');
- return txt.replace(/'/g, ''');
-}
-
-// Spezial functions, mostly for testing purpose
-function openHiddenFunctions(){
- openWindow("Extra Hidden Functions",tplExtraHiddenFunctions,300,100);
-}
-function restartUpdateStream() {
- clearInterval(UpdateStreamReaderPollTimer);
- UpdateStreamReaderRequest.abort();
- UpdateStreamReaderRequest = null;
- UpdateStreamReaderPollTimerCounter = 0;
- UpdateStreamReaderStart();
-}
-function startDebugWindow() {
- DBG = true;
- debugWin = openWindow("DEBUG", "", 300, 300, "debugWindow");
-}
-function restartTwisted() {
- new Ajax.Request( "/web/restarttwisted", { asynchronous: true, method: "get" })
+Version = '$Header$';\r
+\r
+var doRequestMemory = new Object();\r
+var doRequestMemorySave = new Object();\r
+\r
+// Get Settings\r
+var settings = null;\r
+var parentControlList = null;\r
+\r
+// UpdateStreamReader\r
+var UpdateStreamReaderNextReadPos = 0;\r
+var UpdateStreamReaderPollTimer;\r
+var UpdateStreamReaderPollTimerCounter = 0;\r
+var UpdateStreamReaderPollTimerCounterTwisted = 0;\r
+UpdateStreamReaderRequest = null;\r
+function UpdateStreamReaderStart(){\r
+ var ua = navigator.userAgent;\r
+ if(navigator.userAgent.indexOf("MSIE") >=0) {\r
+ debug("UpdateStreamReader IE Fix");\r
+\r
+ var namespace = { \r
+ 'url_updates': url_updates\r
+ };\r
+ $('UpdateStreamReaderIEFixPanel').innerHTML = RND(tplUpdateStreamReaderIE, namespace);\r
+ \r
+ }else {\r
+ UpdateStreamReaderNextReadPos = 0;\r
+ allMessages = "";\r
+ UpdateStreamReaderRequest = new XMLHttpRequest();\r
+ UpdateStreamReaderRequest.onload = UpdateStreamReaderOnLoad;\r
+ UpdateStreamReaderRequest.onerror = UpdateStreamReaderOnError;\r
+ UpdateStreamReaderRequest.open("GET", url_updates, true);\r
+ UpdateStreamReaderRequest.send(null);\r
+ UpdateStreamReaderPollTimer = setInterval(UpdateStreamReaderLatestResponse, 10000);\r
+ }\r
+}\r
+ \r
+function UpdateStreamReaderLatestResponse() {\r
+ UpdateStreamReaderPollTimerCounter++;\r
+ debug(UpdateStreamReaderPollTimerCounter);\r
+ if(UpdateStreamReaderPollTimerCounter > 6) {\r
+ clearInterval(UpdateStreamReaderPollTimer);\r
+ UpdateStreamReaderRequest.abort();\r
+ UpdateStreamReaderRequest = null;\r
+ UpdateStreamReaderPollTimerCounter = 0;\r
+ UpdateStreamReaderStart();\r
+ \r
+ UpdateStreamReaderPollTimerCounterTwisted++;\r
+ return;\r
+ }\r
+ var allMessages = UpdateStreamReaderRequest.responseText;\r
+ do {\r
+ var unprocessed = allMessages.substring(UpdateStreamReaderNextReadPos);\r
+ var messageXMLEndIndex = unprocessed.indexOf("\n");\r
+ \r
+ if (messageXMLEndIndex!=-1) {\r
+ var endOfFirstMessageIndex = messageXMLEndIndex + "\n".length;\r
+ var anUpdate = unprocessed.substring(0, endOfFirstMessageIndex);\r
+ \r
+ var re = new RegExp("<script>parent\.(.*)</script>");\r
+ anUpdate = re.exec(anUpdate);\r
+\r
+ if(anUpdate != null){\r
+ if (anUpdate.length == 2){\r
+ eval(anUpdate[1]);\r
+ }\r
+ }\r
+ \r
+ UpdateStreamReaderNextReadPos += endOfFirstMessageIndex;\r
+ }\r
+ if(UpdateStreamReaderNextReadPos > 65000){\r
+ UpdateStreamReaderRequest.abort();\r
+ UpdateStreamReaderRequest = null;\r
+ UpdateStreamReaderPollTimerCounter = 0;\r
+ UpdateStreamReaderStart();\r
+ messageXMLEndIndex = -1;\r
+ }\r
+ } while (messageXMLEndIndex != -1);\r
+}\r
+\r
+function UpdateStreamReaderOnLoad(){\r
+ window.clearInterval(UpdateStreamReaderPollTimer);\r
+ debug("UpdateStreamReaderOnLoad");\r
+ Dialog.confirm(\r
+ "Live Update Stream ends!<br><br>You will not receive any Update from Enigma2.<br>Should I reconnect?",\r
+ {windowParameters: {width:300, className: windowStyle},\r
+ okLabel: "reconnect",\r
+ buttonClass: "myButtonClass",\r
+ cancel: function(win) {debug("cancel confirm panel")},\r
+ ok: function(win) {UpdateStreamReaderStart(); return true;}\r
+ }\r
+ );\r
+}\r
+function UpdateStreamReaderOnError(){\r
+ // TODO: change this, because it will be called on 'PageUnload' while the request is still running\r
+ debug("UpdateStreamReaderOnError");\r
+ window.clearInterval(UpdateStreamReaderPollTimer);\r
+ Dialog.confirm(\r
+ "Live Update Stream has an Error!<br><br>You will not receive any Update from Enigma2.<br>Should I try to reconnect?",\r
+ {windowParameters: {width:300, className: windowStyle},\r
+ okLabel: "reconnect",\r
+ buttonClass: "myButtonClass",\r
+ cancel: function(win) {debug("cancel confirm panel")},\r
+ ok: function(win) {UpdateStreamReaderStart(); return true;}\r
+ }\r
+ );\r
+}\r
+//end UpdateStreamReader\r
+\r
+function openWindow(title, inner, width, height, id){\r
+ if(id == null) id = new Date().toUTCString();\r
+ var win = new Window(id, {className: windowStyle, title: title, width: width, height: height });\r
+ win.getContent().innerHTML = inner;\r
+ win.setDestroyOnClose();\r
+ win.showCenter();\r
+ debug("opening Window: "+title);\r
+ return win;\r
+}\r
+function messageBox(t, m){\r
+ Dialog.alert(m, {windowParameters: {title: t, className: windowStyle, width:200}, okLabel: "Close"});\r
+}\r
+\r
+//RND Template Function (http://www.amix.dk)\r
+function RND(tmpl, ns) {\r
+ var fn = function(w, g) {\r
+ g = g.split("|");\r
+ var cnt = ns[g[0]];\r
+ //Support for filter functions\r
+ for(var i=1; i < g.length; i++) {\r
+ cnt = eval(g[i])(cnt);\r
+ }\r
+ return cnt || w;\r
+ };\r
+ return tmpl.replace(/%\(([A-Za-z0-9_|.]*)\)/g, fn);\r
+}\r
+function debug(text){\r
+ if(DBG){\r
+ try{\r
+ debugWin.getContent().innerHTML += "DEBUG: "+text+"<br>";\r
+ } catch (windowNotPresent) {}\r
+ }\r
+}\r
+function showhide(id){\r
+ o = $(id).style;\r
+ o.display = (o.display!="none")? "none":"";\r
+}\r
+function set(element, value){\r
+ //debug(element+"-"+value);\r
+ element = parent.$(element);\r
+ if(value.length > 550) {\r
+ value = value.substr(0,550) + "[...]";\r
+ }\r
+ if (element){\r
+ element.innerHTML = value;\r
+ }\r
+ if(navigator.userAgent.indexOf("MSIE") >=0) {\r
+ elementscript= $('UpdateStreamReaderIEFixIFrame').$('scriptzone');\r
+ if(elementscript){\r
+ elementscript.innerHTML = ""; // deleting set() from page, to keep the page short and to save memory \r
+ }\r
+ }\r
+}\r
+function setComplete(element, value){\r
+ //debug(element+"-"+value);\r
+ element = parent.$(element);\r
+ if (element){\r
+ element.innerHTML = value;\r
+ }\r
+ if(navigator.userAgent.indexOf("MSIE") >=0) {\r
+ elementscript= $('UpdateStreamReaderIEFixIFrame').$('scriptzone');\r
+ if(elementscript){\r
+ elementscript.innerHTML = ""; // deleting set() from page, to keep the page short and to save memory \r
+ }\r
+ }\r
+}\r
+// requestindikator\r
+var requestcounter = 0;\r
+function requestIndicatorUpdate(){\r
+ //debug(requestcounter+" open requests");\r
+ if(requestcounter>=1){\r
+ $('RequestIndicator').style.display = "inline";\r
+ }else{\r
+ $('RequestIndicator').style.display = "none";\r
+ }\r
+}\r
+function requestStarted(){\r
+ requestcounter +=1;\r
+ requestIndicatorUpdate();\r
+}\r
+function requestFinished(){\r
+ requestcounter -=1;\r
+ requestIndicatorUpdate();\r
+}\r
+// end requestindikator\r
+function doRequest(url, readyFunction, save){\r
+ requestStarted();\r
+ doRequestMemorySave[url] = save;\r
+ debug("doRequest: Requesting: "+url);\r
+ if(save == true && typeof(doRequestMemory[url]) != "undefined") {\r
+ readyFunction(doRequestMemory[url]);\r
+ } else {\r
+ debug("doRequest: loading");\r
+ new Ajax.Request(url,\r
+ {\r
+ asynchronous: true,\r
+ method: 'GET',\r
+ requestHeaders: ['Pragma', 'no-cache', 'Cache-Control', 'must-revalidate', 'If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'],\r
+ onException: function(o,e){ throw(e); }, \r
+ onSuccess: function (transport, json) {\r
+ if(typeof(doRequestMemorySave[url]) != "undefined") {\r
+ if(doRequestMemorySave[url]) {\r
+ debug("doRequest: saving request"); \r
+ doRequestMemory[url] = transport;\r
+ }\r
+ }\r
+ readyFunction(transport);\r
+ },\r
+ onComplete: requestFinished \r
+ });\r
+ }\r
+}\r
+\r
+function getXML(request){\r
+ if (document.implementation && document.implementation.createDocument){\r
+ var xmlDoc = request.responseXML\r
+ }\r
+ else if (window.ActiveXObject){\r
+ var xmlInsert = document.createElement('xml');\r
+\r
+ xmlInsert.setAttribute('innerHTML',request.responseText);\r
+ xmlInsert.setAttribute('id','_MakeAUniqueID');\r
+ document.body.appendChild(xmlInsert);\r
+ xmlDoc = $('_MakeAUniqueID');\r
+ document.body.removeChild($('_MakeAUniqueID'));\r
+ } else {\r
+ debug("Your Browser Sucks!");\r
+ }\r
+ return xmlDoc;\r
+}\r
+function parentPin(servicereference) {\r
+ servicereference = decodeURIComponent(servicereference);\r
+ if(parentControlList == null || String(getSettingByName("config.ParentalControl.configured")) != "True") {\r
+ return true;\r
+ }\r
+ debug("parentPin " + parentControlList.length);\r
+ if(getParentControlByRef(servicereference) == servicereference) {\r
+ if(String(getSettingByName("config.ParentalControl.type.value")) == "whitelist") {\r
+ debug("leaving here 1");\r
+ return true;\r
+ }\r
+ } else {\r
+ debug("leaving here 2");\r
+ return true;\r
+ }\r
+ debug("going to ask for PIN");\r
+\r
+ var userInput = prompt('ParentControll was switch on.<br> Please enter PIN','PIN');\r
+ if (userInput != '' && userInput != null) {\r
+ if(String(userInput) == String(getSettingByName("config.ParentalControl.servicepin.0")) ) {\r
+ return true;\r
+ } else {\r
+ return parentPin(servicereference);\r
+ }\r
+ } else {\r
+ return false;\r
+ }\r
+}\r
+var SubServicePoller;\r
+var SubServicePollerCounter = 0;\r
+var SubServicePollerRef = null;\r
+function zap(servicereference){\r
+ if(parentPin(servicereference)) {\r
+ new Ajax.Request( "/web/zap?sRef=" + servicereference, \r
+ {\r
+ asynchronous: true,\r
+ method: 'get'\r
+ }\r
+ );\r
+ if(SubServicePoller != 0){\r
+ clearInterval(SubServicePoller);\r
+ SubServicePollerCounter = 0;\r
+ }\r
+ SubServicePollerRef = servicereference;\r
+ SubServicePoller = setInterval(getSubServices, 10000);\r
+ SubServicePollerCounter = 1;\r
+ }\r
+}\r
+\r
+//++++ SignalPanel ++++\r
+function initSignalPanel(){\r
+ $('SignalPanel').innerHTML = tplSignalPanelButton;\r
+}\r
+function openSignalDialog(){\r
+ openWindow("Signal Info",tplSignalPanel, 215, 75);\r
+}\r
+\r
+\r
+//++++ EPG functions ++++\r
+function loadEPGBySearchString(string){\r
+ doRequest(url_epgsearch+escape(string),incomingEPGrequest, false);\r
+}\r
+function loadEPGByServiceReference(servicereference){\r
+ doRequest(url_epgservice+servicereference,incomingEPGrequest, false);\r
+}\r
+function incomingEPGrequest(request){\r
+ debug("incoming request" +request.readyState); \r
+ if (request.readyState == 4){\r
+ var EPGItems = new EPGList(getXML(request)).getArray(true);\r
+ debug("have "+EPGItems.length+" e2events");\r
+ if(EPGItems.length > 0){ \r
+ var html = tplEPGListHeader;\r
+ for (var i=0; i < EPGItems.length; i++){\r
+ try{\r
+ var item = EPGItems[i]; \r
+ var namespace = { \r
+ 'date': item.getTimeDay(),\r
+ 'eventid': item.getEventId(),\r
+ 'servicereference': item.getServiceReference(),\r
+ 'servicename': quotes2html(item.getServiceName()),\r
+ 'title': quotes2html(item.getTitle()),\r
+ 'titleESC': escape(item.getTitle()),\r
+ 'starttime': item.getTimeStartString(), \r
+ 'duration': Math.ceil(item.getDuration()/60000), \r
+ 'description': quotes2html(item.getDescription()),\r
+ 'endtime': item.getTimeEndString(), \r
+ 'extdescription': quotes2html(item.getDescriptionExtended()),\r
+ 'number': String(i),\r
+ 'extdescriptionSmall': extdescriptionSmall(item.getDescriptionExtended(),String(i)),\r
+ 'start': item.getTimeBegin(),\r
+ 'end': item.getTimeEnd()\r
+ };\r
+ //Fill template with data and add id to our result\r
+ html += RND(tplEPGListItem, namespace);\r
+ } catch (blubb) { debug("Error rendering: "+blubb); }\r
+ }\r
+ html += tplEPGListFooter;\r
+ openWindow("Electronic Program Guide", html, 900, 500);\r
+ } else {\r
+ messageBox('No Items found!', 'Sorry but i could not find any EPG Content containing your search value');\r
+ }\r
+ }\r
+}\r
+function extdescriptionSmall(txt,num) {\r
+ if(txt.length > 410) {\r
+ var shortTxt = txt.substr(0,410);\r
+ txt = txt.replace(/\'\'/g, '"');\r
+ txt = txt.replace(/\\/g, '\\\\');\r
+ txt = txt.replace(/\'/g, '\\\'');\r
+ txt = txt.replace(/\"/g, '"');\r
+ var smallNamespace = { 'txt':txt,'number':num, 'shortTxt':shortTxt};\r
+ return RND(tplEPGListItemExtend, smallNamespace);\r
+ } else {\r
+ return txt;\r
+ }\r
+} \r
+\r
+/////////////////////////\r
+\r
+function loadServiceEPGNowNext(servicereference){\r
+ var url = url_epgnow+servicereference;\r
+ doRequest(url, incomingServiceEPGNowNext, false); \r
+}\r
+\r
+function incomingServiceEPGNowNext(request){\r
+ if(request.readyState == 4){\r
+ var epgevents = getXML(request).getElementsByTagName("e2eventlist").item(0).getElementsByTagName("e2event");\r
+ for (var c =0; c < epgevents.length;c++){\r
+ var eventnow = new EPGEvent(epgevents.item(c));\r
+ \r
+ if (eventnow.getEventId() != 'None'){\r
+ buildServiceListEPGItem(eventnow,"NOW");\r
+ }\r
+ }\r
+ }\r
+}\r
+function buildServiceListEPGItem(epgevent,nownext){\r
+ var e = $(epgevent.getServiceReference()+'EPG'+nownext);\r
+ try{\r
+ var namespace = { \r
+ 'starttime': epgevent.getTimeStartString(), \r
+ 'title': epgevent.getTitle(), \r
+ 'length': Math.ceil(epgevent.duration/60) \r
+ };\r
+ e.innerHTML = RND(tplServiceListEPGItem, namespace);\r
+ } catch (blubb) {\r
+ debug("Error rendering: "+blubb);\r
+ } \r
+}\r
+///////////////////\r
+\r
+\r
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+//++++ GUI functions ++++\r
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+\r
+var currentBodyMainElement = null\r
+\r
+function setBodyMainContent(newelementname){\r
+ newelement =$(newelementname);\r
+ if(currentBodyMainElement != null){\r
+ currentBodyMainElement.style.display = "none";\r
+ \r
+ }\r
+ newelement.style.display = "";\r
+ currentBodyMainElement = newelement;\r
+}\r
+\r
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+//++++ volume functions ++++\r
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+\r
+function initVolumePanel(){\r
+ $('VolumePanel').innerHTML = tplVolumePanel;\r
+ getVolume(); \r
+}\r
+function getVolume(){\r
+ doRequest(url_getvolume,handleVolumeRequest, false);\r
+}\r
+function volumeSet(newvalue){\r
+ doRequest(url_setvolume+newvalue,handleVolumeRequest, false);\r
+}\r
+function volumeUp(){\r
+ doRequest(url_volumeup,handleVolumeRequest, false);\r
+}\r
+function volumeDown(){\r
+ doRequest(url_volumedown,handleVolumeRequest, false); \r
+}\r
+function volumeMute(){\r
+ doRequest(url_volumemute,handleVolumeRequest, false);\r
+}\r
+function handleVolumeRequest(request){\r
+ if (request.readyState == 4) {\r
+ var b = getXML(request).getElementsByTagName("e2volume");\r
+ var newvalue = b.item(0).getElementsByTagName('e2current').item(0).firstChild.data;\r
+ var mute = b.item(0).getElementsByTagName('e2ismuted').item(0).firstChild.data;\r
+ debug("volume"+newvalue+";"+mute);\r
+ \r
+ for (var i = 1; i <= 10; i++) {\r
+ if ( (newvalue/10)>=i){\r
+ $("volume"+i).src = "/webdata/gfx/led_on.png";\r
+ }else{\r
+ $("volume"+i).src = "/webdata/gfx/led_off.png";\r
+ }\r
+ }\r
+ if (mute == "False"){\r
+ $("speaker").src = "/webdata/gfx/speak_on.png";\r
+ }else{\r
+ $("speaker").src = "/webdata/gfx/speak_off.png";\r
+ }\r
+ } \r
+}\r
+\r
+var bouqetsMemory = new Object();\r
+\r
+function initChannelList(){\r
+ //debug("init ChannelList"); \r
+ var url = url_getServices+encodeURIComponent(bouqet_tv);\r
+ doRequest(url, incomingTVBouquetList, true);\r
+\r
+ var url = url_getServices+encodeURIComponent(bouqet_radio);\r
+ doRequest(url, incomingRadioBouquetList, true);\r
+\r
+ var url = url_getServices+encodeURIComponent(bouqet_provider_tv);\r
+ doRequest(url, incomingProviderTVBouquetList, true);\r
+\r
+ var url = url_getServices+encodeURIComponent(bouqet_provider_radio);\r
+ doRequest(url, incomingProviderRadioBouquetList, true);\r
+ \r
+ getSettings();\r
+}\r
+\r
+var servicereftoloadepgnow = "";\r
+var loadedChannellist = new Object();\r
+function loadBouquet(servicereference){ \r
+ debug("loading bouquet with "+servicereference);\r
+ servicereftoloadepgnow = servicereference;\r
+ debug("loadBouquet " + typeof(loadedChannellist[servicereftoloadepgnow]));\r
+ if(typeof(loadedChannellist[servicereftoloadepgnow]) == "undefined") {\r
+ doRequest(url_getServices+servicereference, incomingChannellist, true);\r
+ } else {\r
+ incomingChannellist();\r
+ }\r
+}\r
+\r
+function incomingTVBouquetList(request){\r
+ if (request.readyState == 4) {\r
+ var list0 = new ServiceList(getXML(request)).getArray();\r
+ debug("have "+list0.length+" TV Bouquet "); \r
+ $('accordionMenueBouquetContentTV').innerHTML = renderBouquetTable(list0,tplBouquetListHeader,tplBouquetListItem,tplBouquetListFooter);\r
+ //loading first entry of TV Favorites as default for ServiceList\r
+ loadBouquet(list0[0].getServiceReference());\r
+ bouqetsMemory["bouqet_tv"] = list0;\r
+ }\r
+}\r
+function incomingRadioBouquetList(request){\r
+ if (request.readyState == 4) {\r
+ var list1 = new ServiceList(getXML(request)).getArray();\r
+ debug("have "+list1.length+" Radio Bouquet "); \r
+ $('accordionMenueBouquetContentRadio').innerHTML = renderBouquetTable(list1,tplBouquetListHeader,tplBouquetListItem,tplBouquetListFooter);\r
+ } \r
+}\r
+function incomingProviderTVBouquetList(request){\r
+ if (request.readyState == 4) {\r
+ var list2 = new ServiceList(getXML(request)).getArray();\r
+ debug("have "+list2.length+" TV Provider Bouquet "); \r
+ $('accordionMenueBouquetContentProviderTV').innerHTML = renderBouquetTable(list2,tplBouquetListHeader,tplBouquetListItem,tplBouquetListFooter);\r
+ } \r
+}\r
+function incomingProviderRadioBouquetList(request){\r
+ if (request.readyState == 4) {\r
+ var list2 = new ServiceList(getXML(request)).getArray();\r
+ debug("have "+list2.length+" Radio Provider Bouquet "); \r
+ $('accordionMenueBouquetContentProviderRadio').innerHTML = renderBouquetTable(list2,tplBouquetListHeader,tplBouquetListItem,tplBouquetListFooter);\r
+ } \r
+}\r
+\r
+function renderBouquetTable(bouquet,templateHeader,templateItem,templateFooter){\r
+ debug("renderBouquetTable with "+bouquet.length+" Bouqet"); \r
+ var html = templateHeader;\r
+ for (var i=0; i < bouquet.length; i++){\r
+ try{\r
+ var namespace = {\r
+ 'servicereference': bouquet[i].getServiceReference(), \r
+ 'bouquetname': bouquet[i].getServiceName()\r
+ };\r
+ html += RND(templateItem, namespace);\r
+ } catch (blubb) {}\r
+ }\r
+ html += templateFooter;\r
+ return html;\r
+} \r
+\r
+function incomingChannellist(request){\r
+ var services = null;\r
+ if(typeof(loadedChannellist[servicereftoloadepgnow]) != "undefined"){\r
+ services = loadedChannellist[servicereftoloadepgnow];\r
+ } else if(request.readyState == 4) {\r
+ services = new ServiceList(getXML(request)).getArray();\r
+ loadedChannellist[servicereftoloadepgnow] = services;\r
+ debug("got "+services.length+" Services");\r
+ }\r
+ if(services != null) {\r
+ var smallNamespace = {'mainServiceRef': servicereftoloadepgnow };\r
+ listerHtml = RND(tplServiceListHeader, smallNamespace);\r
+ for ( var i = 0; i < services.length ; i++){\r
+ var reference = services[i];\r
+ var namespace = { \r
+ 'servicereference': reference.getServiceReference(),\r
+ 'servicename': reference.getServiceName()\r
+ };\r
+ listerHtml += RND(tplServiceListItem, namespace);\r
+ } \r
+ listerHtml += tplServiceListFooter;\r
+ $('BodyContentChannellist').innerHTML = listerHtml;\r
+ setBodyMainContent('BodyContentChannellist');\r
+ loadServiceEPGNowNext(servicereftoloadepgnow);\r
+ debug("incomingChannellist " + typeof(loadedChannellist[servicereftoloadepgnow]));\r
+ }\r
+}\r
+// Movies\r
+function loadMovieList(){\r
+ debug("loading movies");\r
+ doRequest(url_movielist, incomingMovieList); \r
+}\r
+\r
+function incomingMovieList(request){\r
+ if(request.readyState == 4){\r
+ var movies = new MovieList(getXML(request)).getArray();\r
+ debug("have "+movies.length+" movies");\r
+ listerHtml = tplMovieListHeader; \r
+ for ( var i = 0; i <movies.length; i++){\r
+ var movie = movies[i];\r
+ var namespace = { \r
+ 'servicereference': movie.getServiceReference(),\r
+ 'servicename': movie.getServiceName() ,\r
+ 'title': movie.getTitle(), \r
+ 'description': movie.getDescription(), \r
+ 'descriptionextended': movie.getDescriptionExtended(),\r
+ 'filelink': String(movie.getFilename()).substr(17,movie.getFilename().length),\r
+ 'filename': String(movie.getFilename()),\r
+ 'tags': movie.getTags().join(', ') \r
+ };\r
+ listerHtml += RND(tplMovieListItem, namespace);\r
+ }\r
+ listerHtml += tplMovieListFooter;\r
+ $('BodyContentChannellist').innerHTML = listerHtml;\r
+ setBodyMainContent('BodyContentChannellist');\r
+ \r
+ } \r
+}\r
+function delMovieFile(file,servicename,title,description) {\r
+ debug("delMovieFile: file("+file+"),servicename("+servicename+"),title("+title+"),description("+description+")");\r
+ Dialog.confirm(\r
+ "Selected timer:<br>"\r
+ +"Servicename: "+servicename+"<br>"\r
+ +"Title: "+title+"<br>"\r
+ +"Description: "+description+"<br>"\r
+ +"Are you sure that you want to delete the Timer?",\r
+ {windowParameters: {width:300, className: windowStyle},\r
+ okLabel: "delete",\r
+ buttonClass: "myButtonClass",\r
+ cancel: function(win) {debug("delMovieFile cancel confirm panel")},\r
+ ok: function(win) { debug("delMovieFile ok confirm panel"); doRequest(url_moviefiledelete+"?filename="+file, incomingDelMovieFileResult, false); return true; }\r
+ }\r
+ );\r
+ \r
+}\r
+function incomingDelMovieFileResult(request) {\r
+ debug("incomingDelMovieFileResult");\r
+ if(request.readyState == 4){\r
+ var delresult = new SimpleXMLResult(getXML(request));\r
+ if(delresult.getState()){\r
+ loadMovieList();\r
+ }else{\r
+ messageBox("Deletion Error","Reason: "+delresult.getStateText());\r
+ }\r
+ } \r
+}\r
+\r
+\r
+// send Messages\r
+function showMessageSendForm(){\r
+ $('BodyContentChannellist').innerHTML = tplMessageSendForm;\r
+}\r
+function sendMessage(messagetext,messagetype,messagetimeout){\r
+ if(!messagetext){\r
+ messagetext = $('MessageSendFormText').value;\r
+ } \r
+ if(!messagetimeout){\r
+ messagetimeout = $('MessageSendFormTimeout').value;\r
+ } \r
+ if(!messagetype){\r
+ var index = $('MessageSendFormType').selectedIndex;\r
+ messagetype = $('MessageSendFormType').options[index].value;\r
+ } \r
+ doRequest(url_message+'?text='+messagetext+'&type='+messagetype+'&timeout='+messagetimeout, incomingMessageResult, false);\r
+}\r
+function incomingMessageResult(request){\r
+\r
+ if(request.readyState== 4){\r
+ var b = getXML(request).getElementsByTagName("e2message");\r
+ var result = b.item(0).getElementsByTagName('e2result').item(0).firstChild.data;\r
+ var resulttext = b.item(0).getElementsByTagName('e2resulttext').item(0).firstChild.data;\r
+ if (result=="True"){\r
+ messageBox('message send','message send successfully! it appears on TV-Screen');\r
+ }else{\r
+ messageBox('message send failed',resulttext);\r
+ }\r
+ } \r
+}\r
+\r
+// PowerState Code\r
+function showPowerStateSendForm(){\r
+ $('BodyContentChannellist').innerHTML = tplPowerStateSendForm;\r
+}\r
+function sendPowerState(newState){\r
+ doRequest(url_powerstate+'?newstate='+newState, incomingPowerStateResult, false);\r
+}\r
+function incomingPowerStateResult(request){\r
+ debug(request.readyState);\r
+ if(request.readyState == 4){\r
+ var b = getXML(request).getElementsByTagName("e2powerstate");\r
+ var result = b.item(0).getElementsByTagName('e2result').item(0).firstChild.data;\r
+ var resulttext = b.item(0).getElementsByTagName('e2resulttext').item(0).firstChild.data;\r
+ var tplPowerStateSendForm2 = '<h1>PowerState is changing to:'+resulttext+ '</h1>' + tplPowerStateSendForm;\r
+ $('BodyContentChannellist').innerHTML = tplPowerStateSendForm2;\r
+ } else {\r
+ $('BodyContentChannellist').innerHTML = "<h1>some unknown error</h1>" + tplPasswordSendForm;\r
+ }\r
+}\r
+\r
+// RemoteControl Code\r
+function showRemoteControllSendForm(){\r
+ if(! $('rcWindow')){\r
+ openWindow("Remote", tplRemoteControlForm, 220, 615, "rcWindow");\r
+ }\r
+}\r
+function sendRemoteControlRequest(command){\r
+ doRequest(url_remotecontrol+'?command='+command, incomingRemoteControlResult, false);\r
+}\r
+function incomingRemoteControlResult(request){\r
+ if(request.readyState == 4){\r
+ var b = getXML(request).getElementsByTagName("e2remotecontrol");\r
+ var result = b.item(0).getElementsByTagName('e2result').item(0).firstChild.data;\r
+ var resulttext = b.item(0).getElementsByTagName('e2resulttext').item(0).firstChild.data;\r
+ } else {\r
+ $('rcWindow').innerHTML = "<h1>some unknown error</h1>" + tplRemoteControlForm;\r
+ }\r
+}\r
+\r
+function getSettings(){\r
+ doRequest(url_settings, incomingGetSettings, false);\r
+}\r
+\r
+function incomingGetSettings(request){\r
+ if(request.readyState == 4){\r
+ settings = new Settings(getXML(request)).getArray();\r
+ }\r
+ if(String(getSettingByName("config.ParentalControl.configured")) == "True") {\r
+ getParentControl();\r
+ }\r
+}\r
+function getSettingByName(txt) {\r
+ debug("getSettingByName ("+txt+")");\r
+ for(i = 0; i < settings.length; i++) {\r
+ debug("("+settings[i].getSettingName()+") (" +settings[i].getSettingValue()+")");\r
+ if(String(settings[i].getSettingName()) == String(txt)) {\r
+ return settings[i].getSettingValue();\r
+ } \r
+ }\r
+ return "";\r
+}\r
+function getParentControl() {\r
+ doRequest(url_parentcontrol, incomingParentControl, false);\r
+}\r
+function incomingParentControl(request) {\r
+ if(request.readyState == 4){\r
+ parentControlList = new ServiceList(getXML(request)).getArray();\r
+ debug("parentControlList got "+parentControlList.length + " services");\r
+ }\r
+}\r
+function getParentControlByRef(txt) {\r
+ debug("getParentControlByRef ("+txt+")");\r
+ for(i = 0; i < parentControlList.length; i++) {\r
+ debug("("+parentControlList[i].getClearServiceReference()+")");\r
+ if(String(parentControlList[i].getClearServiceReference()) == String(txt)) {\r
+ return parentControlList[i].getClearServiceReference();\r
+ } \r
+ }\r
+ return "";\r
+}\r
+function sendToggleTimerDisable(justplay,begin,end,repeated,channel,name,description,afterEvent,disabled){\r
+ disabled = (ownLazyNumber(disabled) == 0) ? 1 : 0;\r
+ \r
+ var descriptionClean = (description == " " || description == "N/A") ? "" : description;\r
+ var nameClean = (name == " " || name == "N/A") ? "" : name;\r
+\r
+ doRequest(url_timerchange+"?"+"sRef="+channel.replace(""", '"')+"&begin="+begin\r
+ +"&end="+end+"&name="+escape(nameClean)+"&description="+escape(descriptionClean)\r
+ +"&afterevent="+afterEvent+"&eit=0&disabled="+disabled\r
+ +"&justplay="+justplay+"&repeated="+repeated\r
+ +"&channelOld="+channel\r
+ +"&beginOld="+begin+"&endOld="+end\r
+ +"&deleteOldOnSave=1", incomingTimerAddResult, false);\r
+}\r
+function ownLazyNumber(num) {\r
+ if(isNaN(num)){\r
+ return 0;\r
+ } else {\r
+ return Number(num);\r
+ }\r
+}\r
+\r
+var subServicesInsertedList = new Object();\r
+\r
+function getSubServices(servicereference) {\r
+ clearInterval(SubServicePoller);\r
+ SubServicePollerCounter = 0;\r
+ doRequest(url_subservices,incomingSubServiceRequest, false);\r
+}\r
+function incomingSubServiceRequest(request){\r
+ if(request.readyState == 4){\r
+ var services = new ServiceList(getXML(request)).getArray();\r
+ listerHtml = ''; \r
+ debug("got "+services.length+" SubServices");\r
+ if(services.length > 1) {\r
+ \r
+ first = services[0];\r
+ var mainChannellist = loadedChannellist[String($('mainServiceRef').value)];\r
+ \r
+ var oldEntryPosition = -1;\r
+ for(i = 0; i < mainChannellist.length; i++) {\r
+ var service = mainChannellist[i];\r
+ if(String(service.getServiceReference()) == String(first.getServiceReference())) {\r
+ oldEntryPosition = i + 1;\r
+ break;\r
+ }\r
+ }\r
+ if(typeof(subServicesInsertedList[String(first.getServiceReference())]) != "undefined") {\r
+ for ( var i = 1; i < subServicesInsertedList[String(first.getServiceReference())].length ; i++){\r
+ var reference = subServicesInsertedList[String(first.getServiceReference())][i];\r
+ $(reference.getServiceReference()+'extend').innerHTML = "";\r
+ }\r
+ for(i = oldEntryPosition; i < oldEntryPosition + subServicesInsertedList[String(first.getServiceReference())].length; i++) {\r
+ mainChannellist.splice(i);\r
+ }\r
+ }\r
+ for ( var i = 0; i < services.length ; i++){\r
+ var reference = services[i];\r
+ var namespace = { \r
+ 'servicereference': reference.getServiceReference(),\r
+ 'servicename': reference.getServiceName()\r
+ };\r
+ listerHtml += RND(tplServiceListItem, namespace);\r
+ if(oldEntryPosition > -1) {\r
+ mainChannellist = mainChannellist.insert(oldEntryPosition++, reference);\r
+ }\r
+ }\r
+ $(first.getServiceReference()+'extend').innerHTML = listerHtml;\r
+ subServicesInsertedList[String(first.getServiceReference())] = services;\r
+ loadedChannellist[$('mainServiceRef').value] = mainChannellist;\r
+ }\r
+ }\r
+}\r
+// Array.insert( index, value ) - Insert value at index, without overwriting existing keys\r
+Array.prototype.insert = function( j, v ) {\r
+ if( j>=0 ) {\r
+ var a = this.slice(), b = a.splice( j );\r
+ a[j] = v;\r
+ return a.concat( b );\r
+ }\r
+}\r
+// Array.splice() - Remove or replace several elements and return any deleted elements\r
+if( typeof Array.prototype.splice==='undefined' ) {\r
+ Array.prototype.splice = function( a, c ) {\r
+ var i = 0, e = arguments, d = this.copy(), f = a, l = this.length;\r
+ if( !c ) { c = l - a; }\r
+ for( i; i < e.length - 2; i++ ) { this[a + i] = e[i + 2]; }\r
+ for( a; a < l - c; a++ ) { this[a + e.length - 2] = d[a - c]; }\r
+ this.length -= c - e.length + 2;\r
+ return d.slice( f, f + c );\r
+ };\r
+}\r
+function writeTimerListNow() {\r
+ new Ajax.Request( url_timerlistwrite, { asynchronous: true, method: 'get' });\r
+}\r
+function recordingPushed() {\r
+ doRequest(url_timerlist, incomingRecordingPushed, false);\r
+}\r
+function incomingRecordingPushed(request) {\r
+ if(request.readyState == 4){\r
+ var timers = new TimerList(getXML(request)).getArray();\r
+ debug("have "+timers.length+" timer");\r
+ \r
+ var aftereventReadable = new Array ('Nothing', 'Standby', 'Deepstandby/Shutdown');\r
+ var justplayReadable = new Array('record', 'zap');\r
+ var OnOff = new Array('on', 'off');\r
+ \r
+ listerHtml = '';\r
+ \r
+ for ( var i = 0; i <timers.length; i++){\r
+ var timer = timers[i];\r
+\r
+ if(ownLazyNumber(timer.getDontSave()) == 1) {\r
+ var beginDate = new Date(Number(timer.getTimeBegin())*1000);\r
+ var endDate = new Date(Number(timer.getTimeEnd())*1000);\r
+ var namespace = {\r
+ 'servicereference': timer.getServiceReference(),\r
+ 'servicename': timer.getServiceName() ,\r
+ 'title': timer.getName(), \r
+ 'description': timer.getDescription(), \r
+ 'descriptionextended': timer.getDescriptionExtended(), \r
+ 'begin': timer.getTimeBegin(),\r
+ 'beginDate': beginDate.toLocaleString(),\r
+ 'end': timer.getTimeEnd(),\r
+ 'endDate': endDate.toLocaleString(),\r
+ 'state': timer.getState(),\r
+ 'duration': Math.ceil((timer.getDuration()/60)),\r
+ 'repeated': timer.getRepeated(),\r
+ 'repeatedReadable': repeatedReadable(timer.getRepeated()),\r
+ 'justplay': timer.getJustplay(),\r
+ 'justplayReadable': justplayReadable[Number(timer.getJustplay())],\r
+ 'afterevent': timer.getAfterevent(),\r
+ 'aftereventReadable': aftereventReadable[Number(timer.getAfterevent())],\r
+ 'disabled': timer.getDisabled(),\r
+ 'onOff': OnOff[Number(timer.getDisabled())],\r
+ 'color': colorTimerListEntry( timer.getState() )\r
+ };\r
+ listerHtml += RND(tplTimerListItem, namespace);\r
+ }\r
+ }\r
+ openWindow("Record Now", listerHtml+tplRecordingFooter, 900, 500, "Record now window");\r
+ }\r
+}\r
+function inserteSizes() {\r
+/* var screenW = 640, screenH = 480;\r
+ if (parseInt(navigator.appVersion)>3) { \r
+ screenW = screen.width;\r
+ screenH = screen.height;\r
+ } else if (navigator.appName == "Netscape"\r
+ && parseInt(navigator.appVersion)==3\r
+ && navigator.javaEnabled() ) {\r
+ var jToolkit = java.awt.Toolkit.getDefaultToolkit();\r
+ var jScreenSize = jToolkit.getScreenSize();\r
+ screenW = jScreenSize.width;\r
+ screenH = jScreenSize.height;\r
+ }\r
+ debug("screenW:"+screenW+" screenH:"+screenH);\r
+ /* 640x480\r
+ * 800x600\r
+ * 1024x768\r
+ * 1280x1024\r
+ * 1600x1280\r
+ if(screenH == 800) {\r
+ debug("size 1");\r
+ $("BodyContentChannellist").style.height = '20%';\r
+ } else if(screenH == 1024) {\r
+ debug("1024")\r
+ $("BodyContentChannellist").style.height = '760px';\r
+ \r
+ } else {\r
+ alert("unsupported screensize");\r
+ }*/\r
+ \r
+}\r
+function recordingPushedDecision(recordNowNothing,recordNowUndefinitely,recordNowCurrent) {\r
+ var recordNow = recordNowNothing;\r
+ recordNow = (recordNow == "") ? recordNowUndefinitely: recordNow;\r
+ recordNow = (recordNow == "") ? recordNowCurrent: recordNow;\r
+ if(recordNow != "nothing" && recordNow != "") {\r
+ doRequest(url_recordnow+"?recordnow="+recordNow, incomingTimerAddResult, false);\r
+ }\r
+}\r
+\r
+function ifChecked(rObj) {\r
+ if(rObj.checked) {\r
+ return rObj.value;\r
+ } else {\r
+ return "";\r
+ }\r
+}\r
+function showAbout() {\r
+ doRequest(url_about, incomingAbout, false);\r
+}\r
+function incomingAbout(request) {\r
+ if(request.readyState == 4){\r
+ debug("incomingAbout returned");\r
+ var aboutEntries = getXML(request).getElementsByTagName("e2abouts").item(0).getElementsByTagName("e2about");\r
+ for (var c =0; c < aboutEntries.length;c++){\r
+ var xml = aboutEntries.item(c);\r
+ try{\r
+ var fptext = "V"+xml.getElementsByTagName('e2fpversion').item(0).firstChild.data;\r
+ var tunerinfo = "";\r
+ \r
+ var nims = xml.getElementsByTagName('e2tunerinfo').item(0).getElementsByTagName("e2nim");\r
+ for(var i=0;i< nims.length;i++){\r
+ tunerinfo += nims.item(i).firstChild.data+"<br>";\r
+ }\r
+ \r
+ var hdddata = xml.getElementsByTagName('e2hddinfo').item(0);\r
+ var hddinfo = "";\r
+ if(hdddata.firstChild.data != "None"){\r
+ hddinfo += "Model: "+hdddata.getElementsByTagName("model").item(0).firstChild.data;\r
+ hddinfo += "<br>Capacity: "+hdddata.getElementsByTagName("capacity").item(0).firstChild.data;\r
+ hddinfo += "<br>Free: "+hdddata.getElementsByTagName("free").item(0).firstChild.data;\r
+ }else{\r
+ hddinfo +="no Harddisc";
+ }\r
+\r
+ var namespace = {\r
+ 'enigmaVersion': xml.getElementsByTagName('e2enigmaversion').item(0).firstChild.data\r
+/*\r
+ ,'lanDHCP': xml.getElementsByTagName('e2landhcp').item(0).firstChild.data\r
+ ,'lanIP': xml.getElementsByTagName('e2lanip').item(0).firstChild.data\r
+ ,'lanMask': xml.getElementsByTagName('e2lanmask').item(0).firstChild.data\r
+ ,'lanGW': xml.getElementsByTagName('e2langw').item(0).firstChild.data\r
+ ,'lanDNS': xml.getElementsByTagName('e2landns').item(0).firstChild.data\r
+*/\r
+ ,'fpVersion': fptext\r
+ ,'tunerInfo': tunerinfo\r
+ ,'hddInfo': hddinfo\r
+ ,'serviceName': xml.getElementsByTagName('e2servicename').item(0).firstChild.data\r
+ ,'serviceProvider': xml.getElementsByTagName('e2serviceprovider').item(0).firstChild.data\r
+ ,'serviceAspect': xml.getElementsByTagName('e2serviceaspect').item(0).firstChild.data\r
+ ,'serviceNamespace': xml.getElementsByTagName('e2servicenamespace').item(0).firstChild.data\r
+ ,'vPID': xml.getElementsByTagName('e2vpid').item(0).firstChild.data\r
+ ,'vPIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2vpid').item(0).firstChild.data),16)+" "\r
+ ,'aPID': xml.getElementsByTagName('e2apid').item(0).firstChild.data+" "\r
+ ,'aPIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2apid').item(0).firstChild.data),16)+" "\r
+ ,'pcrID': xml.getElementsByTagName('e2pcrid').item(0).firstChild.data\r
+ ,'pcrIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2pcrid').item(0).firstChild.data),16)+" "\r
+ ,'pmtPID': xml.getElementsByTagName('e2pmtpid').item(0).firstChild.data\r
+ ,'pmtPIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2pmtpid').item(0).firstChild.data),16)+" "\r
+ ,'txtPID': xml.getElementsByTagName('e2txtpid').item(0).firstChild.data\r
+ ,'txtPIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2txtpid').item(0).firstChild.data),16)+" "\r
+ ,'tsID': xml.getElementsByTagName('e2tsid').item(0).firstChild.data\r
+ ,'tsIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2tsid').item(0).firstChild.data),16)+" "\r
+ ,'onID': xml.getElementsByTagName('e2onid').item(0).firstChild.data\r
+ ,'onIDh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2onid').item(0).firstChild.data),16)+" "\r
+ ,'sid': xml.getElementsByTagName('e2sid').item(0).firstChild.data\r
+ ,'sidh': parseInt(ownLazyNumber(xml.getElementsByTagName('e2sid').item(0).firstChild.data),16)+" "\r
+ };\r
+ $('BodyContentChannellist').innerHTML = RND(tplAbout, namespace);;\r
+ setBodyMainContent('BodyContentChannellist');\r
+ \r
+ } catch (e) {\r
+ debug("About parsing Error" + e);\r
+ } \r
+ }\r
+ }\r
+}\r
+function quotes2html(txt) {\r
+ txt = txt.replace(/"/g, '"');\r
+ return txt.replace(/'/g, ''');\r
+}\r
+\r
+// Spezial functions, mostly for testing purpose\r
+function openHiddenFunctions(){\r
+ openWindow("Extra Hidden Functions",tplExtraHiddenFunctions,300,100);\r
+}\r
+function restartUpdateStream() {\r
+ clearInterval(UpdateStreamReaderPollTimer);\r
+ UpdateStreamReaderRequest.abort();\r
+ UpdateStreamReaderRequest = null;\r
+ UpdateStreamReaderPollTimerCounter = 0;\r
+ UpdateStreamReaderStart();\r
+}\r
+function startDebugWindow() {\r
+ DBG = true;\r
+ debugWin = openWindow("DEBUG", "", 300, 300, "debugWindow");\r
+}\r
+function restartTwisted() {\r
+ new Ajax.Request( "/web/restarttwisted", { asynchronous: true, method: "get" })\r
}
\ No newline at end of file