3 // TimerEdit variables:
4 var addTimerEditFormObject = new Object();
5 addTimerEditFormObject["TVListFilled"] = 0;
6 addTimerEditFormObject["RadioListFilled"] = 0;
7 addTimerEditFormObject["deleteOldOnSave"] = 0;
8 addTimerEditFormObject["eventID"] = 0;
19 function addTimerByID(sRef,eventID,justplay){
21 debug("addTimerByID\neventID: "+eventID);
22 doRequest(url_timeraddbyeventid+"?sRef="+sRef+"&eventid="+eventID+"&justplay="+justplay, incomingTimerAddResult, false);
25 function incomingTimerAddResult(request){
26 debug("onTimerAdded");
27 if(request.readyState == 4){
28 var addresult = new SimpleXMLResult(getXML(request));
29 if(addresult.getState()){
33 messageBox("Timer Error","your Timer could not be added!\nReason: "+addresult.getStateText());
37 function loadTimerList(){
38 doRequest(url_timerlist, incomingTimerList, false);
41 function incomingTimerList(request){
42 if(request.readyState == 4){
43 var timers = new TimerList(getXML(request)).getArray();
44 debug("have "+timers.length+" timer");
45 var ns_tplTimerListHeader = {
46 'page_title': 'Timerlist',
49 'repeated': 'Repeated',
50 'duration': 'Time running',
51 'start': 'Start time',
54 'after_event': 'After event',
57 listerHtml = RND(tplTimerListHeader, ns_tplTimerListHeader);
58 var aftereventReadable = new Array ('Nothing', 'Standby', 'Deepstandby/Shutdown');
59 var justplayReadable = new Array('record', 'zap');
60 for ( var i = 0; i <timers.length; i++){
61 var timer = timers[i];
62 var beginDate = new Date(Number(timer.getTimeBegin())*1000);
63 var endDate = new Date(Number(timer.getTimeEnd())*1000);
65 'servicereference': timer.getServiceReference(),
66 'servicename': quotes2html(timer.getServiceName()),
67 'title': quotes2html(timer.getName()),
68 'description': quotes2html(timer.getDescription()),
69 'descriptionextended': quotes2html(timer.getDescriptionExtended()),
70 'begin': timer.getTimeBegin(),
71 'beginDate': beginDate.toLocaleString(),
72 'end': timer.getTimeEnd(),
73 'endDate': endDate.toLocaleString(),
74 'state': timer.getState(),
75 'duration': Math.ceil((timer.getDuration()/60)),
76 'repeated': timer.getRepeated(),
77 'repeatedReadable': repeatedReadable(timer.getRepeated()),
78 'justplay': timer.getJustplay(),
79 'justplayReadable': justplayReadable[Number(timer.getJustplay())],
80 'afterevent': timer.getAfterevent(),
81 'aftereventReadable': aftereventReadable[Number(timer.getAfterevent())],
82 'disabled': timer.getDisabled(),
83 'onOff': timer.getToggleDisabledIMG(),
84 'color': timer.getColor(),
85 'delTimer_FUNCTION': "delTimer(\'"+timer.getServiceReference()+"\',\'"+timer.getTimeBegin()
86 +"\',\'"+timer.getTimeEnd()+"\',\'"+quotes2html(timer.getServiceName())
87 +"\',\'"+quotes2html(timer.getName())+"\',\'"+quotes2html(timer.getDescription())
88 +"\',incomingTimerDelResult)",
89 'sendToggleTimerDisable_FUNCTION': "sendToggleTimerDisable(\'"+timer.getJustplay()+"\',\'"
90 +timer.getTimeBegin()+"\',\'"+timer.getTimeEnd()+"\',\'"+timer.getRepeated()
91 +"\',\'"+timer.getServiceReference()+"\',\'"+quotes2html(timer.getName())
92 +"\',\'"+quotes2html(timer.getDescription())+"\',\'"+timer.getAfterevent()
93 +"\',\'"+timer.getDisabled()+"\')",
94 'loadTimerFormSeconds_FUNCTION': "loadTimerFormSeconds(\'"+timer.getJustplay()+"\',\'"
95 +timer.getTimeBegin()+"\',\'"+timer.getTimeEnd()+"\',\'"+timer.getRepeated()
96 +"\',\'"+timer.getServiceReference()+"\',\'"+quotes2html(timer.getName())
97 +"\',\'"+quotes2html(timer.getDescription())+"\',\'"+timer.getAfterevent()+"\',1)"
99 listerHtml += RND(tplTimerListItem, namespace);
101 listerHtml += tplTimerListFooter;
102 $('BodyContent').innerHTML = listerHtml;
103 setBodyMainContent('BodyContent');
106 function repeatedReadable(num) {
113 var Repeated = new Object();
114 Repeated["Mo-Su"] =127;
117 Repeated["Mo-Fr"] = 31;
124 for(rep in Repeated) {
125 if(rep.toString() != "extend") {
126 var check = Number(Repeated[rep]);
130 html += rep.toString();
132 html = rep.toString()+","+html;
140 function colorTimerListEntry (state) {
143 } else if(state == 1) {
145 } else if(state == 2) {
151 function delTimer(sRef,begin,end,servicename,title,description,readyFunction){
152 debug("delTimer: sRef("+sRef+"),begin("+begin+"),end("+end+"),servicename("+servicename+"),title("+title+"),description("+description+")");
154 "Selected timer:<br>"
155 +"Channel: "+servicename+"<br>"
156 +"Title: "+title+"<br>"
157 +"Description: "+description+"<br>"
158 +"Are you sure that you want to delete the Timer?",
159 {windowParameters: {width:300, className: windowStyle},
161 buttonClass: "myButtonClass",
162 cancel: function(win) {debug("delTimer cancel confirm panel")},
164 debug("delTimer ok confirm panel");
165 doRequest(url_timerdelete+"?sRef="+sRef+"&begin="+begin+"&end="+end, readyFunction, false);
172 function incomingTimerDelResult(request){
173 debug("onTimerDeleted");
174 if(request.readyState == 4){
175 var delresult = new SimpleXMLResult(getXML(request));
180 function loadTimerFormNow() {
181 var now = new Date();
182 addTimerEditFormObject["syear"] = now.getFullYear();
183 addTimerEditFormObject["smonth"] = now.getMonth() + 1;
184 addTimerEditFormObject["sday"] = now.getDate();
185 addTimerEditFormObject["shour"] = now.getHours();
186 addTimerEditFormObject["smin"] = now.getMinutes();
188 var plusTwoHours = new Date(now.getTime() + ((120 *60)*1000) );
189 addTimerEditFormObject["eyear"] = plusTwoHours.getFullYear();
190 addTimerEditFormObject["emonth"] = plusTwoHours.getMonth() + 1;
191 addTimerEditFormObject["eday"] = plusTwoHours.getDate();
192 addTimerEditFormObject["ehour"] = plusTwoHours.getHours();
193 addTimerEditFormObject["emin"] = plusTwoHours.getMinutes();
195 addTimerEditFormObject["justplay"] = "record";
196 addTimerEditFormObject["channel"] = "";
197 addTimerEditFormObject["channelName"] = "";
198 addTimerEditFormObject["channelSort"] = "tv";
199 addTimerEditFormObject["name"] = "";
200 addTimerEditFormObject["description"] = "";
201 addTimerEditFormObject["repeated"] = 0;
202 addTimerEditFormObject["afterEvent"] = "0";
203 addTimerEditFormObject["deleteOldOnSave"] = 0;
205 addTimerEditFormObject["beginOld"] = 0;
206 addTimerEditFormObject["endOld"] = 0;
209 debug("loadTimerFormNow 2");
210 loadTimerFormChannels();
213 function loadTimerFormSeconds(justplay,begin,end,repeated,channel,channelName,name,description,afterEvent,deleteOldOnSave,eit) {
214 debug('justplay:'+justplay+' begin:'+begin+' end:'+end+' repeated:'+repeated+' channel:'+channel+' name:'+name+' description:'+description+' afterEvent:'+afterEvent+' deleteOldOnSave:'+deleteOldOnSave);
215 var start = new Date(Number(begin)*1000);
216 addTimerEditFormObject["syear"] = start.getFullYear();
217 addTimerEditFormObject["smonth"] = start.getMonth() + 1;
218 addTimerEditFormObject["sday"] = start.getDate();
219 addTimerEditFormObject["shour"] = start.getHours();
220 addTimerEditFormObject["smin"] = start.getMinutes();
222 var stopp = new Date(Number(end)*1000);
223 addTimerEditFormObject["eyear"] = stopp.getFullYear();
224 addTimerEditFormObject["emonth"] = stopp.getMonth() + 1;
225 addTimerEditFormObject["eday"] = stopp.getDate();
226 addTimerEditFormObject["ehour"] = stopp.getHours();
227 addTimerEditFormObject["emin"] = stopp.getMinutes();
229 addTimerEditFormObject["justplay"] = String(justplay);
230 addTimerEditFormObject["channel"] = decodeURIComponent(String(channel));
231 addTimerEditFormObject["channelName"] = String(channelName);
232 addTimerEditFormObject["channelSort"] = "";
233 addTimerEditFormObject["name"] = String(name);
234 addTimerEditFormObject["description"] = String(description);
235 addTimerEditFormObject["repeated"] = Number(repeated);
236 addTimerEditFormObject["afterEvent"] = Number(afterEvent);
238 debug(justplay+"|"+begin+"|"+end+"|"+repeated+"|"+channel+"|"+name+"|"+description+"|"+afterEvent);
240 addTimerEditFormObject["deleteOldOnSave"] = Number(deleteOldOnSave);
241 addTimerEditFormObject["beginOld"] = Number(begin);
242 addTimerEditFormObject["endOld"] = Number(end);
244 addTimerEditFormObject["eventID"] = Number(eit);
246 loadTimerFormChannels();
249 // startin to load for TV
250 function loadTimerFormChannels() {
251 if(addTimerEditFormObject["TVListFilled"] == 1 && addTimerEditFormObject["RadioListFilled"] == 1) {
253 } else if(addTimerEditFormObject["TVListFilled"] == 1 && addTimerEditFormObject["RadioListFilled"] == 0) {
254 addTimerListFormatTV();
256 var favorites = '1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.favourites.tv%22%20ORDER%20BY%20bouquet'
257 doRequest(url_getServices+favorites, addTimerListFormatTV, false);
261 function addTimerListFormatTV(request) {
262 if(addTimerEditFormObject["RadioListFilled"] == 0) {
263 if(request.readyState == 4){
264 var services = new ServiceList(getXML(request)).getArray();
265 var tv = new Object();
266 for ( var i = 0; i < services.length ; i++){
267 var reference = services[i];
268 tv[reference.servicereference] = reference.servicename;
270 addTimerEditFormObject["TVListFilled"] = 1;
271 addTimerEditFormObject["TVList"] = tv;
274 if(addTimerEditFormObject["RadioListFilled"] == 1) {
277 var favorites = '1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.favourites.radio%22%20ORDER%20BY%20bouquet';
278 doRequest(url_getServices+favorites, addTimerListFormatRadio, false);
281 function addTimerListFormatRadio(request) {
282 if(request.readyState == 4){
283 var services = new ServiceList(getXML(request)).getArray();
284 var radio = new Object();
285 for ( var i = 0; i < services.length ; i++){
286 var reference = services[i];
287 radio[reference.servicereference] = reference.servicename;
289 addTimerEditFormObject["RadioListFilled"] = 1;
290 addTimerEditFormObject["RadioList"] = radio;
295 function loadTimerForm(){
297 var Action = new Object();
298 Action["0"] = "Record";
301 var Repeated = new Object();
302 Repeated["1"] = "mo";
303 Repeated["2"] = "tu";
304 Repeated["4"] = "we";
305 Repeated["8"] = "th";
306 Repeated["16"] = "fr";
307 Repeated["32"] = "sa";
308 Repeated["64"] = "su";
309 Repeated["31"] = "mf";
310 Repeated["127"] ="ms";
312 var AfterEvent = new Object();
313 AfterEvent["0"] = "Nothing";
314 AfterEvent["1"] = "Standby";
315 AfterEvent["2"] = "Deepstandby/Shutdown";
317 addTimerEditFormObject["name"] = (typeof(addTimerEditFormObject["name"]) != "undefined") ? addTimerEditFormObject["name"] : "";
318 addTimerEditFormObject["name"] = (addTimerEditFormObject["name"] == "") ? " " : addTimerEditFormObject["name"];
320 addTimerEditFormObject["description"] = (typeof(addTimerEditFormObject["description"]) != "undefined") ? addTimerEditFormObject["description"] : "";
321 addTimerEditFormObject["description"] = (addTimerEditFormObject["description"] == "") ? " " : addTimerEditFormObject["description"];
323 var channelObject = addTimerEditFormObject["TVList"];
324 if( addTimerEditFormObject["channelSort"] == "tv") {
326 } else if( addTimerEditFormObject["channelSort"] == "radio") {
327 channelObject = addTimerEditFormObject["RadioList"];
330 for( element in addTimerEditFormObject["TVList"]) {
331 if( element == addTimerEditFormObject["channel"]) {
337 for( element in addTimerEditFormObject["RadioList"]) {
338 if( element == addTimerEditFormObject["channel"]) {
339 channelObject = addTimerEditFormObject["RadioList"];
346 addTimerEditFormObject["TVList"][addTimerEditFormObject["channel"]] = addTimerEditFormObject["channelName"];
349 var dashString = "------";
350 channelObject[dashString] = "- Bouquets -";
351 var listeNeu = new ServiceList(getXML(doRequestMemory[url_getServices+encodeURIComponent(bouqet_tv)])).getArray();
352 if(addTimerEditFormObject["channelSort"] == "radio") {
354 listeNeu = new ServiceList(getXML(doRequestMemory[url_getServices+encodeURIComponent(bouqet_radio)])).getArray();
356 for (i = 1; i < listeNeu.length; i++) {
357 var element = listeNeu[i];
358 channelObject[String(dashString+i)] = "---";
359 channelObject[element.getServiceReference()] = element.getServiceName();
362 'justplay': addTimerFormCreateOptionList(Action, addTimerEditFormObject["justplay"]),
363 'syear': addTimerFormCreateOptions(2008,2010,addTimerEditFormObject["syear"]),
364 'smonth': addTimerFormCreateOptions(1,12,addTimerEditFormObject["smonth"]),
365 'sday': addTimerFormCreateOptions(1,31,addTimerEditFormObject["sday"]),
366 'shour': addTimerFormCreateOptions(0,23,addTimerEditFormObject["shour"]),
367 'smin': addTimerFormCreateOptions(0,59,addTimerEditFormObject["smin"]),
368 'eyear': addTimerFormCreateOptions(2008,2010,addTimerEditFormObject["eyear"]),
369 'emonth': addTimerFormCreateOptions(1,12,addTimerEditFormObject["emonth"]),
370 'eday': addTimerFormCreateOptions(1,31,addTimerEditFormObject["eday"]),
371 'ehour': addTimerFormCreateOptions(0,23,addTimerEditFormObject["ehour"]),
372 'emin': addTimerFormCreateOptions(0,59,addTimerEditFormObject["emin"]),
373 'channel': addTimerFormCreateOptionList(channelObject, addTimerEditFormObject["channel"]),
374 'name': addTimerEditFormObject["name"],
375 'description': addTimerEditFormObject["description"],
376 'repeated': addTimerFormCreateOptionListRepeated(Repeated, addTimerEditFormObject["repeated"]),
377 'deleteOldOnSave': addTimerEditFormObject["deleteOldOnSave"],
378 'channelOld': addTimerEditFormObject["channel"],
379 'beginOld': addTimerEditFormObject["beginOld"],
380 'endOld': addTimerEditFormObject["endOld"],
381 'afterEvent': addTimerFormCreateOptionList(AfterEvent, addTimerEditFormObject["afterEvent"]),
382 'eventID': addTimerEditFormObject["eventID"]
384 var listerHtml = RND(tplAddTimerForm, namespace);
385 $('BodyContent').innerHTML = listerHtml;
387 // Empty some stuff, but keep others to have the performance
388 var tmp1 = addTimerEditFormObject["RadioList"];
389 var tmp2 = addTimerEditFormObject["TVList"];
390 addTimerEditFormObject = new Object();
391 addTimerEditFormObject["deleteOldOnSave"] = 0;
392 addTimerEditFormObject["RadioList"] = tmp1;
393 addTimerEditFormObject["TVList"] = tmp2;
394 addTimerEditFormObject["TVListFilled"] = 1;
395 addTimerEditFormObject["RadioListFilled"] = 1;
398 function addTimerFormCreateOptions(start,end,number) {
400 for(i = start; i <= end; i++) {
401 var txt = (String(i).length == 1) ? "0" + String(i) : String(i);
402 var selected = (i == Number(number)) ? "selected" : " ";
406 'selected': selected };
407 html += RND(tplAddTimerFormOptions, namespace);
411 function addTimerFormCreateOptionList(object,selected) {
414 for(var element in object) {
415 var txt = String(object[element]);
417 if(element == selected) {
425 if(element != "extend") {
426 html += RND(tplAddTimerFormOptions, namespace);
438 function timerFormExtendChannellist(bouqet) {
439 var listeTV = new ServiceList(getXML(doRequestMemory[url_getServices+encodeURIComponent(bouqet_tv)])).getArray();
440 var listeRadio = new ServiceList(getXML(doRequestMemory[url_getServices+encodeURIComponent(bouqet_radio)])).getArray();
442 for(i = 0; i < listeTV.length; i++) {
443 var element = listeTV[i];
444 if(String(element.getServiceReference()) == bouqet) {
450 for(i = 0; i < listeRadio.length; i++) {
451 var element = listeTV[i];
452 if(String(element.getServiceReference()) == bouqet) {
459 servicereftoloadepgnow = bouqet;
460 if( getElementOfChannelList(String(servicereftoloadepgnow)) ) {
461 incomingTimerFormExtendChannellist();
463 doRequest(url_getServices+servicereftoloadepgnow, incomingTimerFormExtendChannellist, true);
467 function incomingTimerFormExtendChannellist(request) {
469 if( getElementOfChannelList(String(servicereftoloadepgnow)) ) {
470 services = getElementOfChannelList(String(servicereftoloadepgnow));
471 } else if(request.readyState == 4) {
472 services = new ServiceList(getXML(request)).getArray();
473 setElementOfChannelList(String(servicereftoloadepgnow), services);
474 debug("got "+services.length+" Services");
476 var attachLater = new Object();
477 if(services != null) {
478 debug("incomingTimerFormExtendChannellist " + services.length);
479 var selected = $('channel').selectedIndex;
480 for(j = selected; j < $('channel').options.length; j++) {
481 if($('channel').options[j].value == servicereftoloadepgnow) {
483 for(var i = 0; i < services.length ; i++) {
484 var reference = services[i];
485 var newEntry = new Option(reference.getServiceName(), reference.getServiceReference(), false, true);
486 if(typeof($('channel').options[j]) != "undefined") {
487 attachLater[String($('channel').options[j].value)] = $('channel').options[j].text;
489 $('channel').options[j] = newEntry;
495 for(x in attachLater) {
496 var newEntry = new Option(attachLater[x], x, false, true);
498 $('channel').options[$('channel').options.length] = newEntry;
501 $('channel').options[selected].selected = true;
506 function addTimerFormChangeTime(which) {
507 var start = new Date( $('syear').value, ($('smonth').value -1), $('sday').value, $('shour').value, $('smin').value, 0);
508 var end = new Date($('eyear').value, ($('emonth').value -1), $('eday').value, $('ehour').value, $('emin').value, 0);
509 // debug("("+start+")(" + end+")");
511 if(start.getTime() > end.getTime()) {
512 opponent = (which.substr(0,1) == 's') ? 'e' + which.substr(1, which.length -1) : 's' + which.substr(1, which.length -1) ;
513 $(opponent).value = $(which).value;
515 var all = new Array('year','month','day','hour','min');
516 for(i=0; i < all.length; i++) {
517 if(which.substr(1, which.length -1) == all[i]) {
518 addTimerFormChangeTime(which.substr(0,1) + all[i+1] );
523 function addTimerFormChangeType() {
524 var selected = ($('tvradio').checked == true) ? addTimerEditFormObject["TVList"]: addTimerEditFormObject["RadioList"];
525 for (i = $('channel').options.length; i != 0; i--) {
526 $('channel').options[i - 1] = null;
529 for(element in selected) {
530 if(element != "extend") {
532 $('channel').options[i] = new Option(selected[element]);
533 $('channel').options[i].value = element;
537 function addTimerFormCreateOptionListRepeated(Repeated,repeated) {
538 var num = Number(repeated);
541 var list = new Array(127, 64, 32, 31, 16, 8, 4, 2, 1);
542 for(i = 0; i < list.length; i++) {
543 var txt = String(Repeated[String(list[i])]);
544 if( String(Repeated[String(list[i])]) == "mf") {
546 } else if( String(Repeated[String(list[i])]) == "ms") {
549 txt = txt.substr(0,1).toUpperCase() + txt.substr(1,1);
557 'id': Repeated[String(list[i])],
558 'name': Repeated[String(list[i])],
561 'checked': checked };
562 if(String(Repeated[String(list[i])]) == "mf" || String(Repeated[String(list[i])]) == "ms") {
563 html2 = RND(tplAddTimerFormCheckbox, namespace) + html2;
565 html = RND(tplAddTimerFormCheckbox, namespace) + html;
570 function sendAddTimer() {
571 debug("sendAddTimer" + "parentChannel:" +$('channel').value);
573 if(parentPin($('channel').value)) {
574 var beginD = new Date(ownLazyNumber($('syear').value), (ownLazyNumber($('smonth').value) - 1), ownLazyNumber($('sday').value), ownLazyNumber($('shour').value), ownLazyNumber($('smin').value));
575 var begin = beginD.getTime()/1000;
577 var endD = new Date(ownLazyNumber($('eyear').value), (ownLazyNumber($('emonth').value) - 1), ownLazyNumber($('eday').value), ownLazyNumber($('ehour').value), ownLazyNumber($('emin').value));
578 var end = endD.getTime()/1000;
581 if( $('ms').checked ) {
583 } else if($('mf').checked) {
585 if($('sa').checked) {
586 repeated += ownLazyNumber($('sa').value);
588 if($('su').checked) {
589 repeated += ownLazyNumber($('su').value);
592 var check = new Array('mo', 'tu', 'we', 'th', 'fr');
593 for(i = 0; i < check.length; i++) {
594 if($(check[i]).checked) {
595 repeated += Number($(check[i]).value);
600 var descriptionClean = ($('descr').value == " " || $('descr').value == "N/A") ? "" : $('descr').value;
601 var nameClean = ($('name').value == " " || $('name').value == "N/A") ? "" : $('name').value;
603 var neverString = "[0-9a-zA-Z\-_\.\!\(\)&=\+$,;\?/:\\\ ]*";
604 if(descriptionClean != descriptionClean.match(neverString) ||
605 nameClean != nameClean.match(neverString)) {
606 alert("Please only use "+neverString+" in the name and the description field");
611 if($('ms').checked) {
612 repeated = ownLazyNumber($('ms').value);
613 } else if($('mf').checked) {
614 repeated = ownLazyNumber($('mf').value);
615 if($('su').checked) {
616 repeated += ownLazyNumber($('su').value);
618 if($('sa').checked) {
619 repeated += ownLazyNumber($('sa').value);
622 for(i = 0; i < days.length; i++){
623 if($(days[i]).checked) {
624 repeated += ownLazyNumber($(days[i]).value);
628 //addTimerByID(\'%(servicereference)\',\'%(eventid)\',\'False\');
629 doRequest(url_timerchange+"?"+"sRef="+($('channel').value).replace(""", '"')+"&begin="+begin
630 +"&end="+end+"&name="+escape(nameClean)+"&description="+escape(descriptionClean)
631 +"&afterevent="+$('after_event').value+"&eit=0&disabled=0"
632 +"&justplay="+ownLazyNumber($('justplay').value)+"&repeated="+repeated
633 +"&channelOld="+$('channelOld').value
634 +"&beginOld="+$('beginOld').value+"&endOld="+$('endOld').value
635 +"&eventID"+$('eventID').value
636 +"&deleteOldOnSave="+ownLazyNumber($('deleteOldOnSave').value), incomingTimerAddResult, false);
640 function cleanTimerListNow(){
641 debug("cleanTimerListNow pushed");
642 doRequest(url_timerlist, incomingCleanTimerListNow, false);
644 function incomingCleanTimerListNow(request) {
645 if(request.readyState == 4){
646 var timers = new TimerList(getXML(request)).getArray();
647 debug("have "+timers.length+" timer");
648 for ( var i = 0; i <timers.length; i++){
649 var timer = timers[i];
650 debug(timer.getState() + " " + quotes2html(timer.getName()));
651 if(timer.getState() != 0 && timer.getState() != 2) {
652 delTimer(timer.getServiceReference(),timer.getTimeBegin(),timer.getTimeEnd()
653 ,quotes2html(timer.getServiceName()),quotes2html(timer.getName()),quotes2html(timer.getDescription()),incomingJustDoNothing);
658 function incomingJustDoNothing(request){
659 debug("just do nothing");
661 function sendToggleTimerDisable(justplay,begin,end,repeated,channel,name,description,afterEvent,disabled){
662 disabled = (ownLazyNumber(disabled) == 0) ? 1 : 0;
664 var descriptionClean = (description == " " || description == "N/A") ? "" : description;
665 var nameClean = (name == " " || name == "N/A") ? "" : name;
667 doRequest(url_timerchange+"?"+"sRef="+channel.replace(""", '"')+"&begin="+begin
668 +"&end="+end+"&name="+escape(nameClean)+"&description="+escape(descriptionClean)
669 +"&afterevent="+afterEvent+"&eit=0&disabled="+disabled
670 +"&justplay="+justplay+"&repeated="+repeated
671 +"&channelOld="+channel
672 +"&beginOld="+begin+"&endOld="+end
673 +"&deleteOldOnSave=1", incomingTimerAddResult, false);
678 function loadAutoTimerList(){
679 debug("loading AutoTimer");
680 doRequest(url_autotimerlist, incomingAutoTimerList, false);
683 var autotimers = null;
684 function incomingAutoTimerList(request){
685 if(request.readyState == 4){
686 autotimers = new AutoTimerList(getXML(request)).getArray();
687 debug("have "+autotimers.length+" timer");
688 var ns_tplTimerListHeader = {
689 'page_title': 'Auto timerlist',
692 'repeated': 'Repeated',
693 'duration': 'Time running',
694 'start': 'Start time',
697 'after_event': 'After event',
700 listerHtml = RND(tplTimerListHeader, ns_tplTimerListHeader);
701 var aftereventReadable = new Array ('Nothing', 'Standby', 'Deepstandby/Shutdown');
702 var justplayReadable = new Array('record', 'zap');
703 for ( var i = 0; i <autotimers.length; i++){
704 var timer = autotimers[i];
705 // var beginDate = new Date(Number(timer.getTimeBegin())*1000);
706 // var endDate = new Date(Number(timer.getTimeEnd())*1000);
708 'servicereference': timer.getServices()
709 ,'servicename': quotes2html(timer.getName())
710 ,'title': quotes2html(timer.getMatch())
711 ,'description': quotes2html(timer.getMatch())
712 ,'justplay': timer.getJustplay()
713 ,'justplayReadable': timer.getJustplay()
714 ,'repeated': timer.getCounter()
715 ,'repeatedReadable': timer.getCounter()
716 ,'afterevent': timer.getAfterevent()
717 ,'onOff': timer.getToggleDisabledIMG()
718 ,'begin': timer.getTimespanbegin()
719 ,'beginDate': timer.getTimespanbegin()
720 ,'end': timer.getTimespanend()
721 ,'endDate': timer.getTimespanend()
722 ,'duration': timer.getDuration()
724 ,'aftereventReadable': aftereventReadable[timer.getAfterevent()]
725 ,'sendToggleTimerDisable_FUNCTION': "sendToggleAutoTimerDisable("+i+")"
726 ,'delTimer_FUNCTION': "delAutoTimer("+i+")"
727 ,'loadTimerFormSeconds_FUNCTION': "loadAutoTimer("+i+")"
729 /* 'descriptionextended': quotes2html(timer.getDescriptionExtended()),
730 'state': timer.getState(),
731 'duration': Math.ceil((timer.getDuration()/60)),
733 'aftereventReadable': aftereventReadable[Number(timer.getAfterevent())],
734 'disabled': timer.getDisabled(),
735 'onOff': timer.getToggleDisabledIMG(),
736 'color': timer.getColor()*/
738 listerHtml += RND(tplTimerListItem, namespace);
740 listerHtml += tplTimerListFooter;
741 $('BodyContent').innerHTML = listerHtml;
742 setBodyMainContent('BodyContent');
746 function sendToggleAutoTimerDisable(element) {
747 timers = autotimers[Number(element)];
748 debug("sendToggleAutoTimerDisable["+element+"]: "+timers.getName());
750 doRequest(url_autotimertoggledisable+"?name="+timer.getName()+"&match="+timer.getMatch()
751 , loadAutoTimerList, false);
754 function delAutoTimer(element) {
755 timers = autotimers[Number(element)];
756 debug("delAutoTimer["+element+"]: "+timers.getName());
758 "Selected timer:<br>"
759 +"Name: "+quotes2html(timer.getName())+"<br>"
760 +"Match: "+quotes2html(timer.getMatch())+"<br>"
761 +"Are you sure that you want to delete the AutoTimer?",
762 {windowParameters: {width:300, className: windowStyle},
764 buttonClass: "myButtonClass",
765 cancel: function(win) {debug("delAutoTimer cancel confirm panel")},
767 debug("delAutoTimer ok confirm panel");
768 doRequest(url_autotimerdelete+"?name="+timer.getName()+"&match="+timer.getMatch(), loadAutoTimerList, false);
775 function loadAutoTimer(element) {
776 timer = autotimers[Number(element)];
777 debug("loadAutoTimer["+element+"]: "+timer.getName());
779 var Action = new Object();
780 Action["0"] = "Record";
783 var Repeated = new Object();
784 Repeated["1"] = "mo";
785 Repeated["2"] = "tu";
786 Repeated["4"] = "we";
787 Repeated["8"] = "th";
788 Repeated["16"] = "fr";
789 Repeated["32"] = "sa";
790 Repeated["64"] = "su";
791 Repeated["31"] = "mf";
792 Repeated["127"] ="ms";
794 var AfterEvent = new Object();
795 AfterEvent["0"] = "Nothing";
796 AfterEvent["1"] = "Standby";
797 AfterEvent["2"] = "Deepstandby/Shutdown";
799 var beginDate = timer.getTimespanbegin().split(":");
800 var endDate = timer.getTimespanend().split(":");
802 debug("loadedChannellist: "+loadedChannellist.length);
804 var services = splitPythonArray(timer.getServices());
805 var servicesNames = "";
806 for ( var i = 0; i <services.length; i++){
807 if(i > 0) {servicesNames += ", ";}
808 servicesNames += getServiceName(escape(services[i]));
812 'justplay': addTimerFormCreateOptionList(Action, timer.getJustplay)
813 ,'shour': addTimerFormCreateOptions(0,23,beginDate[0])
814 ,'smin': addTimerFormCreateOptions(0,59,beginDate[1])
815 ,'ehour': addTimerFormCreateOptions(0,23,endDate[0])
816 ,'emin': addTimerFormCreateOptions(0,59,endDate[1])
817 ,'name': timer.getName()
818 ,'description': timer.getMatch()
819 ,'repeated': addTimerFormCreateOptions(0,99,timer.getCounter())
820 ,'deleteOldOnSave': addTimerEditFormObject["deleteOldOnSave"]
821 ,'afterEvent': addTimerFormCreateOptionList(AfterEvent, timer.getAfterevent())
822 ,'timers_element': ""+element
823 ,'services': servicesNames
825 var listerHtml = RND(tplAddAutoTimerForm, namespace);
826 $('BodyContent').innerHTML = listerHtml;
827 $('services').disabled = true;
828 $('excludes').disabled = true;
829 $('includes').disabled = true;
832 function sendAddAutoTimer() {
833 debug("sendAddAutoTimer");
836 function editAutoTimerServices(element) {
837 debug("editAutoTimerServices " + element);
838 timer = autotimers[Number(element)];
840 services = splitPythonArray(timer.getServices());
841 debug("there are "+services.length+" services "+ services);
844 for ( var i = 0; i <services.length; i++){
845 debug("service "+services[i]);
846 channels += "<input type=checkbox name=\""+services[i]+"\">"+getServiceName(escape(services[i]))+"<br/>";
850 var dashString = "------";
851 channelObject[dashString] = "- Bouquets -";
852 var listeNeu = new ServiceList(getXML(doRequestMemory[url_getServices+encodeURIComponent(bouqet_tv)])).getArray();
853 /*if(addTimerEditFormObject["channelSort"] == "radio") {
855 listeNeu = new ServiceList(getXML(doRequestMemory[url_getServices+encodeURIComponent(bouqet_radio)])).getArray();
857 for (i = 1; i < listeNeu.length; i++) {
858 var element = listeNeu[i];
859 channelObject[String(dashString+i)] = "---";
860 channelObject[element.getServiceReference()] = element.getServiceName();
863 "Selected channels:<br>"
864 +"Channel: "+channels+"<br>"
865 +"Select: "+addTimerFormCreateOptionList(channelObject, "")+"<br/>"
866 ,{windowParameters: {width:300, className: windowStyle},
868 buttonClass: "myButtonClass",
869 cancel: function(win) {debug("editAutoTimerServices cancel confirm panel")},
871 debug("editAutoTimerServices ok confirm panel");
872 //doRequest(url_timerdelete+"?sRef="+sRef+"&begin="+begin+"&end="+end, readyFunction, false);
878 function splitPythonArray(str) {
879 //debug("splitPythonArray "+str);
880 str = str.replace(/\[[u]*\'(.*)\'\]/, "$1");
881 str = str.replace(/, u/, ", ");
882 return str.split("\', \'");