1 var url_getvolume = '/web/vol?set=info';
2 var url_setvolume = '/web/vol?set=set'; // plus new value eq. set=set15
3 var url_volumeup = '/web/vol?set=up';
4 var url_volumedown = '/web/vol?set=down';
5 var url_volumemute = '/web/vol?set=mute';
7 var url_epgservice = "/web/epgservice?ref="; // plus serviceRev
8 var url_epgsearch = "/web/epgsearch?search="; // plus serviceRev
9 var url_epgnownext = "/web/epgnownext?ref="; // plus serviceRev
12 //$('debug').innerHTML += "DEBUG: "+text+"<br>";
14 function set(what, value)
16 //debug(what+"-"+value);
17 element = document.getElementById(what);
18 element.innerHTML = value;
19 $('scriptzone').innerHTML = ""; // deleting set() from page, to keep the page short and to save memory
24 var request = getHTTPObject();
25 var url = "/web/zap?ZapTo=" + escape(li.id);
26 //debug("requesting "+url);
27 new Ajax.Request( url,
35 function getHTTPObject()
39 @if (@_jscript_version >= 5)
42 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
48 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
58 if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
62 xmlhttp = new XMLHttpRequest();
73 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
74 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
75 //++++ EPG functions ++++
76 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
77 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
78 var EPGList = Class.create();
81 initialize: function(){
82 debug("init class EPGList");
84 getBySearchString: function(string,element){
85 debug("requesting "+ url_epgsearch+string);
86 targetElement = element;
87 new Ajax.Request( url_epgsearch+string,
90 onComplete: this.incomingEPGrequest
94 getByServiceReference: function(serviceRef,element){
95 targetElement = element;
96 new Ajax.Request(url_epgservice+serviceRef,
99 onComplete: this.incomingEPGrequest
103 renderTable: function(epglist){
104 debug("rendering Table with "+epglist.length+" events");
105 var html="<table width='100%'>";
106 for (var i=0; i<epglist.length;i++){
107 var item = epglist[i];
108 html +="<tr bgcolor='gray'>";
109 html +="<td>"+item.getTimeDay()+"</td>";
110 html +="<td>"+item.getTimeStartString()+"</td>";
111 html +="<td>"+item.getTimeEndString()+"</td>";
112 html +="<td>"+item.getTitle()+"</td>";
113 html +="<td>"+item.getDescription()+"</td>";
114 html +="<td>"+item.getDescriptionExtended()+"</td>";
115 html +="<td>"+(item.getDuration()/60000)+" min.</td>";
116 html +="<td>"+item.getServiceName()+"</td>";
120 targetElement.innerHTML = html;
123 incomingEPGrequest: function(originalRequest){
124 debug("incoming request" +originalRequest.readyState);
125 if (originalRequest.readyState == 4)
127 if (originalRequest.responseXML!="no data")
129 var EPGItems = originalRequest.responseXML.getElementsByTagName("e2eventlist").item(0).getElementsByTagName("e2event");
130 debug("have "+EPGItems.length+" e2events");
131 epglist = new Array();
132 for(var i=0;i<EPGItems.length;i++)
134 epglist.push(new EPGEvent(EPGItems.item(i)));
136 EPGList.prototype.renderTable(epglist);
144 function EPGEvent(element){
145 // parsing values from xml-element
146 this.eventID= element.getElementsByTagName('e2eventid').item(0).firstChild.data;
147 this.startTime= element.getElementsByTagName('e2eventstart').item(0).firstChild.data;
148 this.duration= element.getElementsByTagName('e2eventduration').item(0).firstChild.data;
149 this.title= element.getElementsByTagName('e2eventtitle').item(0).firstChild.data;
150 this.description= element.getElementsByTagName('e2eventdescription').item(0).firstChild.data;
151 this.descriptionE= element.getElementsByTagName('e2eventdescriptionextended').item(0).firstChild.data;
152 this.serviceRef= element.getElementsByTagName('e2eventservicereference').item(0).firstChild.data;
153 this.serviceName= element.getElementsByTagName('e2eventservicename').item(0).firstChild.data;
155 this.getEventId = function ()
159 this.getTimeStart = function ()
161 var date = new Date(parseInt(this.startTime)*1000);
164 this.getTimeStartString = function ()
166 var h = this.getTimeStart().getHours();
167 var m = this.getTimeStart().getMinutes();
173 this.getTimeDay = function ()
175 var Wochentag = new Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");
176 var wday = Wochentag[this.getTimeStart().getDay()];
177 var day = this.getTimeStart().getDate();
178 var month = this.getTimeStart().getMonth()+1;
179 var year = this.getTimeStart().getFullYear();
181 return wday+". "+day+"."+month+"."+year;
183 this.getTimeEnd = function ()
185 var date = new Date((parseInt(this.startTime)+parseInt(this.duration))*1000);
188 this.getTimeEndString = function ()
190 var h = this.getTimeEnd().getHours();
191 var m = this.getTimeEnd().getMinutes();
197 this.getDuration = function ()
199 return new Date(parseInt(this.duration)*1000);
201 this.getTitle = function ()
205 this.getDescription = function ()
207 return this.description;
209 this.getDescriptionExtended = function ()
211 return this.descriptionE;
213 this.getServiceReference = function ()
215 return this.serviceRef;
217 this.getServiceName = function ()
219 return this.serviceName.replace(" "," ");
221 }//END class EPGEvent
222 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
223 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
224 //++++ GUI functions ++++
225 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
226 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
227 var currentBodyMainElement = null
229 function setBodyMainContent(newelementname){
230 newelement =document.getElementById(newelementname);
231 if(currentBodyMainElement != null){
232 currentBodyMainElement.style.display = "none";
235 newelement.style.display = "inline";
236 currentBodyMainElement = newelement;
238 function doRequest(url,readyFunction){
240 http_request =getHTTPObject();
242 http_request.onreadystatechange = readyFunction;
244 http_request.open('GET', url, true);
245 http_request.send(null);
248 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
249 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
250 //++++ volume functions ++++
251 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
252 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
257 doRequest(url_getvolume,handleVolumeRequest);
259 function setVolume(newvalue)
261 doRequest(url_setvolume+newvalue,handleVolumeRequest);
265 doRequest(url_volumeup,handleVolumeRequest);
267 function volumeDown()
269 doRequest(url_volumedown,handleVolumeRequest);
271 function volumeMute()
273 doRequest(url_volumemute,handleVolumeRequest);
275 function handleVolumeRequest(){
276 if (http_request.readyState == 4) {
277 var a = http_request.responseText.split("\n");
280 set("Volume_Current",newvalue);
281 for (var i = 1; i <= 10; i++)
283 if ( (newvalue/10)>=i){
284 $("volume"+i).src = "/webdata/gfx/led_on.png";
286 $("volume"+i).src = "/webdata/gfx/led_off.png";
289 if (mute == "notmuted"){
290 $("speaker").src = "/webdata/gfx/speak_on.png";
292 $("speaker").src = "/webdata/gfx/speak_off.png";
296 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
297 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
298 //++++ Bouqet managing functions ++++
299 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
300 //+++++++++++++++++++++++++++++++++++++++++++++++++++++
301 function loadRootTVBouqet(){
302 //rootB = '/web/fetchchannels?ServiceListBrowse='+escape('1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET "bouquets.tv" ORDER BY bouquet');
303 rootB = '/web/fetchchannels?ServiceListBrowse='+escape('1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25) FROM BOUQUET "bouquets.tv" ORDER BY bouquet');
306 loadRootBouqet(rootB);
308 function loadRootBouqet(rootB){
311 t.onreadystatechange = incomingResult;
312 t.open('GET', rootB, true);
316 function incomingResult(){
317 if((t.readyState == 4) && (t.status == 200)) {
319 var r = t.responseXML;
321 var b = r.getElementsByTagName("e2servicelist").item(0).getElementsByTagName("e2service");
323 bouquets = new Array();
324 for ( var i=0; i < b.length; i++){
325 bRef = b.item(i).getElementsByTagName('e2servicereference').item(0).firstChild.data;
326 bName = b.item(i).getElementsByTagName('e2servicename').item(0).firstChild.data;
328 bu = new Array(bName,bRef);
331 refreshSelect(bouquets);
333 // die Anfrage enthielt Fehler;
334 // die Antwort war z.B. 404 (nicht gefunden)
335 // oder 500 (interner Server-Fehler)
339 // to add the bouqetts to the list
340 function refreshSelect(arraybouqet){
342 sel = document.getElementById("accordionMenueBouqetContent");
343 // options neu eintragen
345 for ( var i = 0 ; i < arraybouqet.length ; i++ ){
346 if(arraybouqet[i][0] && arraybouqet[i][1]){
348 html+="<a onclick=\"bouqetSelected(this); setBodyMainContent('BodyContentChannellist');\" id='";
349 html+= arraybouqet[i][1];
351 html+= arraybouqet[i][0];
358 refreshChannellist(arraybouqet[0][0],arraybouqet[0][1]);
360 //++++++++++++++++++++++
361 function bouqetSelected(element){
362 refreshChannellist(element.value,element.id)
365 function refreshChannellist(bname,bref){
366 urlx = '/web/fetchchannels?ServiceListBrowse='+escape(bref);
368 w.onreadystatechange = incomingChannellist;
369 w.open('GET', urlx, true);
375 function incomingChannellist(){
376 if (w.readyState == 4) {
377 // alles in Ordnung, Antwort wurde empfangen
378 if (w.responseXML != "no data"){
379 var services = w.responseXML.getElementsByTagName("e2servicelist").item(0).getElementsByTagName("e2service");
380 listerHtml = "<table id=\"ChannelSelect\" >";
382 for ( var i = 0; i < (services.length ); i++){
383 sRef = services.item(i).getElementsByTagName('e2servicereference').item(0).firstChild.data;
384 sName = services.item(i).getElementsByTagName('e2servicename').item(0).firstChild.data;
386 listerHtml += '<tr bgcolor="gray"><td><div onclick=\"zap(this)\" id="';
390 listerHtml += '</div></td>';
391 listerHtml += '<td><a onclick=\"new EPGList().getByServiceReference(this.id,$(\'BodyEPGPanel\'));setBodyMainContent(\'BodyEPGPanel\');\" id="';
393 listerHtml += '" >EPG</div><div><a target=\"blank" href=\"stream.m3u?ref=';
395 listerHtml += '\">Stream</a></div></td>';
396 listerHtml += '</tr>';
398 listerHtml += "</table>";
399 document.getElementById("BodyContentChannellist").innerHTML = listerHtml;
400 setBodyMainContent('BodyContentChannellist');
402 // die Anfrage enthielt Fehler;
403 // die Antwort war z.B. 404 (nicht gefunden)
404 // oder 500 (interner Server-Fehler)