PageRenderTime 51ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/python/Plugins/Extensions/WebInterface/web-data/timer.js

http://azbox-enigma2-project.googlecode.com/
JavaScript | 731 lines | 640 code | 78 blank | 13 comment | 132 complexity | 93ad7b46db0e45aa290b70d7dc18d9a4 MD5 | raw file
Possible License(s): CC-BY-3.0, GPL-2.0
  1. // $Header: /cvsroot/enigma2-plugins/enigma2-plugins/webinterface/src/web-data/timer.js,v 1.39 2009-11-01 23:03:31 sreichholf Exp $
  2. // TimerEdit variables:
  3. var addTimerEditFormArray = [];
  4. addTimerEditFormArray.TVList = [];
  5. addTimerEditFormArray.TVListFilled = 0;
  6. addTimerEditFormArray.RadioListFilled = 0;
  7. addTimerEditFormArray.deleteOldOnSave = 0;
  8. addTimerEditFormArray.eventID = 0;
  9. addTimerEditFormArray.locationsList = [];
  10. addTimerEditFormArray.tagsList = [];
  11. var days = [ 'mo', 'tu', 'we', 'th', 'fr', 'sa', 'su' ];
  12. var servicereftoloadepgnow = '';
  13. // Channel menu consists of:
  14. // 1. The currently selected channel, unless it is contained in 2.
  15. // 2. The currently selected bouquet
  16. // 3. The TV bouquets and the Radio bouquets
  17. function addTimerFormPrepareChannelMenu() {
  18. var result = {};
  19. var tvblist = addTimerEditFormArray.TVList;
  20. var radioblist = addTimerEditFormArray.RadioList;
  21. var currbouquet = addTimerEditFormArray.currBouquetName;
  22. var currblist = addTimerEditFormArray.currBouquetList;
  23. var found = false;
  24. for (var i = 0; i < currblist.length; i++) {
  25. var service = currblist[i];
  26. if (addTimerEditFormArray.channel == service.servicename) {
  27. found = true;
  28. break;
  29. }
  30. }
  31. if (!found) {
  32. result[addTimerEditFormArray.channel] = addTimerEditFormArray.channelName;
  33. }
  34. if (currbouquet) {
  35. result["<Currbouquet>"] = "-- " + currbouquet + " --";
  36. for (var i = 0; i < currblist.length; i++) {
  37. var service = currblist[i];
  38. result[service.servicereference] = service.servicename;
  39. }
  40. }
  41. result["<Bouquets>"] = "-- Bouquets --";
  42. for (var i = 0; i < tvblist.length; i++) {
  43. service = tvblist[i];
  44. result[service.servicereference] = service.servicename;
  45. }
  46. for (var i = 0; i < radioblist.length; i++) {
  47. service = radioblist[i];
  48. result[service.servicereference] = service.servicename;
  49. }
  50. return result;
  51. }
  52. function addTimerFormChangeChannel(newchannel) {
  53. var tvblist = addTimerEditFormArray.TVList;
  54. var radioblist = addTimerEditFormArray.RadioList;
  55. if (newchannel == "<Currbouquet>" || newchannel == "<Bouquets>") {
  56. // reset selection to last valid channel
  57. for ( var i = 0; i < $('channel').options.length; i++) {
  58. if ($('channel').options[i].value == addTimerEditFormArray.channel) {
  59. $('channel').options[i].selected = true;
  60. break;
  61. }
  62. }
  63. return;
  64. }
  65. var found = false;
  66. for (var i = 0; i < tvblist.length; i++) {
  67. var service = tvblist[i];
  68. if (service.servicereference == newchannel) {
  69. found = true;
  70. addTimerEditFormArray.currBouquetName = service.servicename;
  71. addTimerEditFormArray.currBouquetList = [];
  72. break;
  73. }
  74. }
  75. if (!found) {
  76. for (var i = 0; i < radioblist.length; i++) {
  77. var service = radioblist[i];
  78. if (service.servicereference == newchannel) {
  79. found = true;
  80. addTimerEditFormArray.currBouquetName = service.servicename;
  81. addTimerEditFormArray.currBouquetList = [];
  82. break;
  83. }
  84. }
  85. }
  86. if (found) {
  87. // bouquet selected, update menu
  88. servicereftoloadepgnow = service.servicereference;
  89. if (typeof (loadedChannellist[servicereftoloadepgnow]) == "undefined") {
  90. doRequest(URL.getservices + servicereftoloadepgnow,
  91. incomingAddTimerFormChangeChannel, true);
  92. } else {
  93. incomingAddTimerFormChangeChannel();
  94. }
  95. } else {
  96. // real channel selected, update channel and channelName
  97. addTimerEditFormArray.channel = newchannel;
  98. for (i = 0; i < $('channel').options.length; i++) {
  99. if ($('channel').options[i].value == newchannel) {
  100. addTimerEditFormArray.channelName = $('channel').options[i].text;
  101. break;
  102. }
  103. }
  104. }
  105. }
  106. function incomingAddTimerFormChangeChannel(request) {
  107. var services = null;
  108. if (typeof (loadedChannellist[servicereftoloadepgnow]) != "undefined") {
  109. services = loadedChannellist[servicereftoloadepgnow];
  110. } else if (request.readyState == 4) {
  111. services = new ServiceList(getXML(request)).getArray();
  112. loadedChannellist[servicereftoloadepgnow] = services;
  113. }
  114. if (services !== null) {
  115. debug("[incomingAddTimerFormChangeChannel] Got " + services.length + " Services");
  116. for ( var i = 0; i < services.length; i++) {
  117. var service = services[i];
  118. addTimerEditFormArray.currBouquetList[i] = service;
  119. }
  120. }
  121. var lst = addTimerFormPrepareChannelMenu();
  122. for (i = $('channel').options.length; i !== 0; i--) {
  123. $('channel').options[i - 1] = null;
  124. }
  125. for (var element in lst) {
  126. $('channel').options[i] = new Option(lst[element]);
  127. $('channel').options[i].value = element;
  128. if (element == addTimerEditFormArray.channel) {
  129. $('channel').options[i].selected = true;
  130. }
  131. i++;
  132. }
  133. }
  134. function addTimerFormPrepareTagsMenu(currtags) {
  135. var result = {};
  136. var resultsuff = {};
  137. var taglist = addTimerEditFormArray.tagsList;
  138. if (currtags === "") {
  139. i = 0;
  140. result[""] = "<None>";
  141. for ( var i = 0; i < taglist.length; i++) {
  142. result[taglist[i]] = taglist[i];
  143. }
  144. } else {
  145. result[currtags] = currtags;
  146. var tags = currtags.split(" ");
  147. for ( var i = 0; i < taglist.length; i++) {
  148. var res = "";
  149. var found = false;
  150. for ( var j = 0; j < tags.length; j++) {
  151. if (tags[j] != taglist[i]) {
  152. res += " " + tags[j];
  153. } else {
  154. found = true;
  155. }
  156. }
  157. if (!found) {
  158. res += " " + taglist[i];
  159. }
  160. if (res.length > 0) {
  161. res = res.substring(1, res.length);
  162. }
  163. if (found) {
  164. resultsuff[res] = "- " + taglist[i];
  165. } else {
  166. result[res] = "+ " + taglist[i];
  167. }
  168. }
  169. if (tags.length > 1) {
  170. for (var ele in resultsuff) {
  171. result[ele] = resultsuff[ele];
  172. }
  173. }
  174. result[""] = "<None>";
  175. }
  176. return result;
  177. }
  178. function addTimerFormChangeTags(newtags) {
  179. var lst = addTimerFormPrepareTagsMenu(newtags);
  180. for ( var i = $('tags').options.length; i !== 0; i--) {
  181. $('tags').options[i - 1] = null;
  182. }
  183. for (var element in lst) {
  184. $('tags').options[i] = new Option(lst[element]);
  185. $('tags').options[i].value = element;
  186. i++;
  187. }
  188. }
  189. // Timer
  190. function addTimerByID(sRef, eventID, justplay) {
  191. if (parentPin(sRef)) {
  192. debug("[addTimerByID] eventID: " + eventID);
  193. doRequest(URL.timeraddbyeventid + "?sRef=" + sRef + "&eventid=" +
  194. eventID + "&justplay=" + justplay, incomingTimerAddResult, false);
  195. }
  196. }
  197. function incomingTimerAddResult(request) {
  198. debug("[incomingTimerAddResult] called");
  199. if (request.readyState == 4) {
  200. var result = new SimpleXMLResult(getXML(request));
  201. if (result.getState()) {
  202. //timer has been added
  203. loadTimerList();
  204. }
  205. simpleResultHandler(result);
  206. }
  207. }
  208. function loadTimerList() {
  209. doRequest(URL.timerlist, incomingTimerList, false);
  210. }
  211. function incomingTimerList(request) {
  212. if (request.readyState == 4) {
  213. var timerList = new TimerList(getXML(request)).getArray();
  214. debug("[incomingTimerList] Got " + timerList.length + " timers");
  215. var data = {
  216. timer : timerList
  217. };
  218. processTpl('tplTimerList', data, 'contentMain');
  219. }
  220. }
  221. function repeatedReadable(num) {
  222. num = Number(num);
  223. if (num === 0) {
  224. return "One Time";
  225. }
  226. var retVal = "";
  227. var Repeated = {};
  228. Repeated["Mo-Su"] = 127;
  229. Repeated["Mo-Fr"] = 31;
  230. Repeated["Su"] = 64;
  231. Repeated["Sa"] = 32;
  232. Repeated["Fr"] = 16;
  233. Repeated["Th"] = 8;
  234. Repeated["We"] = 4;
  235. Repeated["Tu"] = 2;
  236. Repeated["Mo"] = 1;
  237. for (var rep in Repeated) {
  238. if (rep.toString() != 'extend') {
  239. var check = Number(Repeated[rep]);
  240. if (!(~num & check)) {
  241. num -= check;
  242. if (retVal === '') {
  243. retVal += rep.toString();
  244. } else {
  245. retVal = rep.toString() + ',' + retVal;
  246. }
  247. }
  248. }
  249. }
  250. return retVal;
  251. }
  252. function delTimer(sRef, begin, end, servicename, title, description,
  253. readyFunction) {
  254. debug("[delTimer] sRef(" + sRef + "),begin(" + begin + "),end(" +
  255. end + "),servicename(" + servicename + "),title(" +
  256. title + "),description(" + description + ")");
  257. var result = confirm("Selected timer:\n" + "Channel: " + servicename + "\n" +
  258. "Title: " + title + "\n" + "Description: " + description + "\n" +
  259. "Are you sure that you want to delete the Timer?");
  260. if (result) {
  261. debug("[delTimer] ok confirm panel");
  262. doRequest(URL.timerdelete + "?sRef=" + sRef + "&begin=" + begin +
  263. "&end=" + end, readyFunction, false);
  264. return true;
  265. } else {
  266. debug("[delTimer] cancel confirm panel");
  267. }
  268. return false;
  269. }
  270. function incomingTimerDelResult(request) {
  271. debug("[incomingTimerDelResult] called");
  272. if (request.readyState == 4) {
  273. var result = new SimpleXMLResult(getXML(request));
  274. simpleResultHandler(result);
  275. debug("[incomingTimerDelResult] Loading List");
  276. loadTimerList();
  277. }
  278. }
  279. function loadTimerFormNow() {
  280. var now = new Date();
  281. addTimerEditFormArray.year = now.getFullYear();
  282. addTimerEditFormArray.month = now.getMonth() + 1;
  283. addTimerEditFormArray.day = now.getDate();
  284. addTimerEditFormArray.shour = now.getHours();
  285. addTimerEditFormArray.smin = now.getMinutes();
  286. var plusTwoHours = new Date(now.getTime() + ((120 * 60) * 1000));
  287. addTimerEditFormArray.ehour = plusTwoHours.getHours();
  288. addTimerEditFormArray.emin = plusTwoHours.getMinutes();
  289. addTimerEditFormArray.justplay = "0";
  290. addTimerEditFormArray.channel = "";
  291. addTimerEditFormArray.channelName = "";
  292. addTimerEditFormArray.name = "";
  293. addTimerEditFormArray.description = "";
  294. addTimerEditFormArray.dirname = "";
  295. addTimerEditFormArray.tags = "";
  296. addTimerEditFormArray.repeated = 0;
  297. addTimerEditFormArray.afterEvent = "3";
  298. addTimerEditFormArray.deleteOldOnSave = 0;
  299. addTimerEditFormArray.beginOld = 0;
  300. addTimerEditFormArray.endOld = 0;
  301. addTimerEditFormArray.eventID = 0;
  302. debug("[loadTimerFormNow] done");
  303. loadTimerFormTags();
  304. }
  305. function loadTimerEditForm(justplay, begin, end, repeated, channel,
  306. channelName, name, description, dirname, tags, afterEvent,
  307. deleteOldOnSave, eit) {
  308. debug('[loadTimerEditForm] justplay: ' + justplay + ',begin: ' + begin +
  309. ',end: ' + end + ',repeated: ' + repeated + ',channel: ' +
  310. channel + ',name: ' + name + ',description: ' + description +
  311. ',dirname: ' + dirname + ',tags: ' + tags + ',afterEvent: ' +
  312. afterEvent + ',deleteOldOnSave: ' + deleteOldOnSave);
  313. var start = new Date(Number(begin) * 1000);
  314. addTimerEditFormArray.year = start.getFullYear();
  315. addTimerEditFormArray.month = start.getMonth() + 1;
  316. addTimerEditFormArray.day = start.getDate();
  317. addTimerEditFormArray.shour = start.getHours();
  318. addTimerEditFormArray.smin = start.getMinutes();
  319. var stopp = new Date(Number(end) * 1000);
  320. addTimerEditFormArray.ehour = stopp.getHours();
  321. addTimerEditFormArray.emin = stopp.getMinutes();
  322. addTimerEditFormArray.justplay = String(justplay);
  323. addTimerEditFormArray.channel = String(channel);
  324. addTimerEditFormArray.channelName = String(channelName);
  325. addTimerEditFormArray.name = String(name);
  326. addTimerEditFormArray.description = String(description);
  327. addTimerEditFormArray.dirname = String(dirname);
  328. addTimerEditFormArray.tags = String(tags);
  329. addTimerEditFormArray.repeated = Number(repeated);
  330. addTimerEditFormArray.afterEvent = afterEvent;
  331. debug("[loadTimerEditForm]" + justplay + "|" + begin + "|" + end + "|" +
  332. repeated + "|" + channel + "|" + name + "|" + description + "|" +
  333. dirname + "|" + tags + "|" + afterEvent);
  334. addTimerEditFormArray.deleteOldOnSave = Number(deleteOldOnSave);
  335. addTimerEditFormArray.beginOld = Number(begin);
  336. addTimerEditFormArray.endOld = Number(end);
  337. addTimerEditFormArray.eventID = Number(eit);
  338. loadTimerFormTags();
  339. }
  340. function loadTimerFormTags() {
  341. doRequest(URL.gettags, incomingTimerFormTags, false);
  342. }
  343. function incomingTimerFormTags(request) {
  344. debug("[incomingTimerFormTags] called");
  345. if (request.readyState == 4) {
  346. var result = new SimpleXMLList(getXML(request), "e2tag");
  347. addTimerEditFormArray.tagsList = result.getList();
  348. loadTimerFormLocations();
  349. }
  350. }
  351. function loadTimerFormLocations() {
  352. doRequest(URL.getlocations, incomingTimerFormLocations, false);
  353. }
  354. function incomingTimerFormLocations(request) {
  355. debug("[incomingTimerFormLocations] called");
  356. if (request.readyState == 4) {
  357. var result = new SimpleXMLList(getXML(request), "e2location");
  358. addTimerEditFormArray.locationsList = result.getList();
  359. if (addTimerEditFormArray.locationsList.length === 0) {
  360. addTimerEditFormArray.locationsList = [ "/hdd/movie" ];
  361. }
  362. loadTimerFormChannels();
  363. }
  364. }
  365. // starting to load for TV
  366. function loadTimerFormChannels() {
  367. if (addTimerEditFormArray.TVListFilled === 1 &&
  368. addTimerEditFormArray.RadioListFilled === 1) {
  369. loadTimerForm();
  370. } else if (addTimerEditFormArray.TVListFilled === 1 &&
  371. addTimerEditFormArray.RadioListFilled === 0) {
  372. addTimerListFormatTV();
  373. } else {
  374. doRequest(URL.getservices + encodeURIComponent(bouquetsTv),
  375. addTimerListFormatTV, false);
  376. }
  377. }
  378. function addTimerListFormatTV(request) {
  379. if (addTimerEditFormArray.RadioListFilled === 0) {
  380. if (request.readyState == 4) {
  381. var serviceList = new ServiceList(getXML(request)).getArray();
  382. var tv = [];
  383. for ( var i = 0; i < serviceList.length; i++) {
  384. var service = serviceList[i];
  385. tv[i] = service;
  386. }
  387. addTimerEditFormArray.TVListFilled = 1;
  388. addTimerEditFormArray.TVList = tv;
  389. }
  390. }
  391. if (addTimerEditFormArray.RadioListFilled == 1) {
  392. loadTimerForm();
  393. } else {
  394. doRequest(URL.getservices + encodeURIComponent(bouquetsRadio),
  395. addTimerListFormatRadio, false);
  396. }
  397. }
  398. function addTimerListFormatRadio(request) {
  399. if (request.readyState == 4) {
  400. var serviceList = new ServiceList(getXML(request)).getArray();
  401. var radio = [];
  402. for ( var i = 0; i < serviceList.length; i++) {
  403. var service = serviceList[i];
  404. radio[i] = service;
  405. }
  406. addTimerEditFormArray.RadioListFilled = 1;
  407. addTimerEditFormArray.RadioList = radio;
  408. }
  409. addTimerEditFormArray.currBouquetName = "";
  410. addTimerEditFormArray.currBouquetList = {};
  411. loadTimerForm();
  412. }
  413. function loadTimerForm() {
  414. var Action = {};
  415. Action["0"] = "Record";
  416. Action["1"] = "Zap";
  417. var Repeated = {};
  418. Repeated["1"] = "mo";
  419. Repeated["2"] = "tu";
  420. Repeated["4"] = "we";
  421. Repeated["8"] = "th";
  422. Repeated["16"] = "fr";
  423. Repeated["32"] = "sa";
  424. Repeated["64"] = "su";
  425. Repeated["31"] = "mf";
  426. Repeated["127"] = "ms";
  427. var AfterEvent = {};
  428. AfterEvent["0"] = "Nothing";
  429. AfterEvent["1"] = "Standby";
  430. AfterEvent["2"] = "Deepstandby/Shutdown";
  431. AfterEvent["3"] = "Auto";
  432. addTimerEditFormArray.name = (typeof (addTimerEditFormArray.name) != 'undefined') ? addTimerEditFormArray.name
  433. : '';
  434. addTimerEditFormArray.name = (addTimerEditFormArray.name === '') ? ' '
  435. : addTimerEditFormArray.name;
  436. addTimerEditFormArray.description = (typeof (addTimerEditFormArray.description) != 'undefined') ? addTimerEditFormArray.description
  437. : '';
  438. addTimerEditFormArray.description = (addTimerEditFormArray.description === '') ? ' '
  439. : addTimerEditFormArray.description;
  440. var channelObject = addTimerFormPrepareChannelMenu(
  441. addTimerEditFormArray.TVList, addTimerEditFormArray.RadioList);
  442. var locationsObject = {};
  443. for ( var i = 0; i < addTimerEditFormArray.locationsList.length; i++) {
  444. str = addTimerEditFormArray.locationsList[i];
  445. locationsObject[str] = str;
  446. }
  447. var tagsObject = addTimerFormPrepareTagsMenu(addTimerEditFormArray.tags);
  448. var namespace = {
  449. 'year' : createOptions(2009, 2015, addTimerEditFormArray.year),
  450. 'month' : createOptions(1, 12, addTimerEditFormArray.month),
  451. 'day' : createOptions(1, 31, addTimerEditFormArray.day),
  452. 'shour' : createOptions(0, 23, addTimerEditFormArray.shour),
  453. 'smin' : createOptions(0, 59, addTimerEditFormArray.smin),
  454. 'ehour' : createOptions(0, 23, addTimerEditFormArray.ehour),
  455. 'emin' : createOptions(0, 59, addTimerEditFormArray.emin),
  456. 'action' : createOptionList(Action, addTimerEditFormArray.justplay),
  457. 'channel' : createOptionList(channelObject,
  458. addTimerEditFormArray.channel),
  459. 'afterEvent' : createOptionList(AfterEvent,
  460. addTimerEditFormArray.afterEvent),
  461. 'repeated' : createOptionListRepeated(Repeated,
  462. addTimerEditFormArray.repeated),
  463. 'dirname' : createOptionList(locationsObject,
  464. addTimerEditFormArray.dirname),
  465. 'tags' : createOptionList(tagsObject, addTimerEditFormArray.tags),
  466. 'timer' : {
  467. 'name' : addTimerEditFormArray.name,
  468. 'description' : addTimerEditFormArray.description,
  469. 'deleteOldOnSave' : addTimerEditFormArray.deleteOldOnSave,
  470. 'channelOld' : addTimerEditFormArray.channel,
  471. 'beginOld' : addTimerEditFormArray.beginOld,
  472. 'endOld' : addTimerEditFormArray.endOld,
  473. 'eventID' : addTimerEditFormArray.eventID
  474. }
  475. };
  476. var data = namespace;
  477. processTpl('tplTimerEdit', data, 'contentMain');
  478. }
  479. function createOptions(start, end, number) {
  480. var namespace = [];
  481. for ( var i = start; i <= end; i++) {
  482. var txt = (String(i).length == 1) ? "0" + String(i) : String(i);
  483. var selected = (i == Number(number)) ? "selected" : " ";
  484. namespace[i] = {
  485. 'value' : i,
  486. 'txt' : txt,
  487. 'selected' : selected
  488. };
  489. }
  490. return namespace;
  491. }
  492. function createOptionList(object, selected) {
  493. var namespace = Array();
  494. var i = 0;
  495. for ( var element in object) {
  496. var txt = String(object[element]);
  497. var sel = " ";
  498. if (element == selected) {
  499. sel = "selected";
  500. }
  501. if (element != "extend") {
  502. namespace[i] = {
  503. 'value' : element,
  504. 'txt' : txt,
  505. 'selected' : sel
  506. };
  507. i++;
  508. }
  509. }
  510. return namespace;
  511. }
  512. function createOptionListRepeated(Repeated, repeated) {
  513. var num = Number(repeated);
  514. var list = [ 1, 2, 4, 8, 16, 32, 64, 31, 127 ];
  515. var namespace = [];
  516. var checked = [];
  517. for ( var i = 0; i < list.length; i++) {
  518. checked[i] = " ";
  519. if (!(~num & list[list.length - 1 - i])) {
  520. num -= list[list.length - 1 - i];
  521. checked[i] = "checked";
  522. }
  523. }
  524. for ( var i = 0; i < list.length; i++) {
  525. var txt = String(Repeated[String(list[i])]);
  526. if (String(Repeated[String(list[i])]) == "mf") {
  527. txt = "Mo-Fr";
  528. } else if (String(Repeated[String(list[i])]) == "ms") {
  529. txt = "Mo-Su";
  530. } else {
  531. txt = txt.substr(0, 1).toUpperCase() + txt.substr(1, 1);
  532. }
  533. namespace[i] = {
  534. 'id' : Repeated[String(list[i])],
  535. 'name' : Repeated[String(list[i])],
  536. 'value' : list[i],
  537. 'txt' : txt,
  538. 'checked' : checked[list.length - 1 - i]
  539. };
  540. }
  541. return namespace;
  542. }
  543. function sendAddTimer() {
  544. debug("[sendAddTimer]" + "parentChannel:" + $('channel').value);
  545. if (parentPin($('channel').value)) {
  546. var beginD = new Date(parseNr($('year').value),
  547. (parseNr($('month').value) - 1), parseNr($('day').value),
  548. parseNr($('shour').value), parseNr($('smin').value));
  549. var begin = beginD.getTime() / 1000;
  550. var endD = new Date(parseNr($('year').value),
  551. (parseNr($('month').value) - 1), parseNr($('day').value),
  552. parseNr($('ehour').value), parseNr($('emin').value));
  553. var end = endD.getTime() / 1000;
  554. if (end < begin) {
  555. end += 86400;
  556. }
  557. var descriptionClean = ($('descr').value == " " || $('descr').value == "N/A") ? ""
  558. : $('descr').value;
  559. var nameClean = ($('name').value == " " || $('name').value == "N/A") ? ""
  560. : $('name').value;
  561. descriptionClean = encodeURIComponent(descriptionClean);
  562. nameClean = encodeURIComponent(nameClean);
  563. var dirname = encodeURIComponent($F($('timerDir').dirname));
  564. var tags = encodeURIComponent($F($('timerTags').tags));
  565. var repeated = 0;
  566. if ($('ms').checked) {
  567. repeated = parseNr($('ms').value);
  568. } else if ($('mf').checked) {
  569. repeated = parseNr($('mf').value);
  570. if ($('su').checked) {
  571. repeated += parseNr($('su').value);
  572. }
  573. if ($('sa').checked) {
  574. repeated += parseNr($('sa').value);
  575. }
  576. } else {
  577. for ( var i = 0; i < days.length; i++) {
  578. if ($(days[i]).checked) {
  579. repeated += parseNr($(days[i]).value);
  580. }
  581. }
  582. }
  583. //addTimerByID(\'%(servicereference)\',\'%(eventid)\',\'False\');
  584. doRequest(URL.timerchange + "?" + "sRef=" +
  585. ($('channel').value).replace("&quot;", '"') + "&begin=" +
  586. begin + "&end=" + end + "&name=" + nameClean +
  587. "&description=" + descriptionClean + "&dirname=" + dirname+
  588. "&tags=" + tags + "&afterevent=" + $('after_event').value +
  589. "&eit=0&disabled=0" + "&justplay=" + parseNr($('justplay').value) +
  590. "&repeated=" + repeated + "&channelOld=" + $('channelOld').value +
  591. "&beginOld=" + $('beginOld').value + "&endOld=" + $('endOld').value +
  592. "&eventID" + $('eventID').value + "&deleteOldOnSave=" +
  593. parseNr($('deleteOldOnSave').value), incomingTimerAddResult, false
  594. );
  595. }
  596. }
  597. function cleanTimerListNow() {
  598. debug("[cleanTimerListNow] called");
  599. var result = confirm("Do you really want to cleanup the List of Timers?");
  600. if (result) {
  601. doRequest(URL.timercleanup, incomingCleanTimerListNow, false);
  602. }
  603. }
  604. function incomingCleanTimerListNow(request) {
  605. if (request.readyState == 4) {
  606. var result = new SimpleXMLResult(getXML(request));
  607. simpleResultHandler(result);
  608. loadTimerList();
  609. }
  610. }
  611. function incomingJustDoNothing(request) {
  612. debug("[incomingJustDoNothing] called");
  613. }
  614. function sendToggleTimerDisable(justplay, begin, end, repeated, channel, name,
  615. description, dirname, tags, afterEvent, disabled) {
  616. disabled = (parseNr(disabled) === 0) ? 1 : 0;
  617. var descriptionClean = (description == " " || description == "N/A") ? ""
  618. : description;
  619. var nameClean = (name == " " || name == "N/A") ? "" : name;
  620. nameClean = encodeURIComponent(nameClean);
  621. descriptionClean = encodeURIComponent(descriptionClean);
  622. tags = encodeURIComponent(tags);
  623. doRequest(URL.timerchange + "?" + "sRef=" + channel.replace("&quot;", '"') +
  624. "&begin=" + begin + "&end=" + end + "&name=" + nameClean+
  625. "&description=" + descriptionClean + "&dirname=" + dirname +
  626. "&tags=" + tags + "&afterevent=" + afterEvent + "&eit=0&disabled=" +
  627. disabled + "&justplay=" + justplay + "&repeated=" + repeated +
  628. "&channelOld=" + channel + "&beginOld=" + begin + "&endOld=" + end +
  629. "&deleteOldOnSave=1", incomingTimerAddResult, false
  630. );
  631. }
  632. function recordNowDecision(recordNowCurrent) {
  633. var recordNow = "infinite";
  634. if (recordNowCurrent === true) {
  635. recordNow = "current";
  636. }
  637. doRequest(URL.recordnow + "?recordnow=" + recordNow,
  638. incomingTimerAddResult, false);
  639. }
  640. function incomingWriteTimerListNow(request) {
  641. var result = new SimpleXMLResult(getXML(request));
  642. simpleResultHandler(result);
  643. }
  644. function writeTimerListNow() {
  645. doRequest(URL.timerlistwrite, incomingWriteTimerListNow);
  646. }