1. var EPG =
  2. {
  3. selected_program: 0,
  4. selected_page: 0,
  5. epg_array_index: 0,
  6. date: null,
  7. program_pages: 0,
  8. last_page_programs_counter: 0,
  9. epg_array : [ ],
  10. epg_day : 0,
  11. from_uts : 0,
  12. come_from: 0
  13. }
  14. EPG.show = function()
  15. {
  16. KeyHandler.setFocus(Main.EpgMenu_ID);
  17. if(EPG.come_from==2)
  18. document.getElementById("ch_list").style.display="block";
  19. else
  20. document.getElementById("ch_list").style.display="none";
  21. document.getElementById("help_navi_epg").style.display="block";
  22. document.getElementById("help_navi_menu").style.display="none";
  23. document.getElementById("help_navi_vod").style.display="none";
  24. if( true == EPG.getEPG() ){
  25. EPG.last_page_programs_counter = RTV_API.last_page_programs_counter;
  26. EPG.setProgramList();
  27. }
  28. }
  29. EPG.setProgramList = function()
  30. {
  31. var chan = Array();
  32. var time = 0;
  33. var pr_on_page = 10;
  34. for (var index = 0; index < 10; index++)
  35. {
  36. document.getElementById("ch"+index).style.display="";
  37. widgetAPI.putInnerHTML(document.getElementById("time"+index), "");
  38. widgetAPI.putInnerHTML(document.getElementById("number"+index), "");
  39. widgetAPI.putInnerHTML(document.getElementById("progress"+index), "");
  40. document.getElementById("percent"+index).style.width= "0%";
  41. widgetAPI.putInnerHTML(document.getElementById("title"+index), "");
  42. document.getElementById("title"+index).style.width= "400px";
  43. document.getElementById("descr"+index).style.display="none";
  44. document.getElementById("img"+index).src="";
  45. document.getElementById("record"+index).style.backgroundImage= "";
  46. document.getElementById("number"+index).style.backgroundImage = "";
  47. }
  48. alert("EPG.last_page_programs_counter: " + EPG.last_page_programs_counter );
  49. if(EPG.selected_page > EPG.program_pages-1)
  50. EPG.selected_page = 0;
  51. if(EPG.selected_page < 0)
  52. EPG.selected_page = EPG.program_pages-1;
  53. if(EPG.selected_page == EPG.program_pages-1)
  54. {
  55. pr_on_page = EPG.last_page_programs_counter;
  56. for (var index = pr_on_page; index < 10; index++)
  57. {
  58. document.getElementById("ch"+index).style.display="none";
  59. }
  60. if(EPG.selected_program > EPG.last_page_programs_counter-1)
  61. EPG.selected_program = EPG.last_page_programs_counter-1;
  62. }
  63. for (var index = 0; index < pr_on_page; index++)
  64. {
  65. var pr_array_index = 10*EPG.selected_page + index;
  66. chan[index] = document.getElementById("chan"+index);
  67. chan[index].style.backgroundImage= "url(img/menu.png)";
  68. if ( 0 < EPG.epg_array.length ){
  69. time = EPG.epg_array[pr_array_index].begin;
  70. if(time)
  71. {
  72. var Time = RTV_API.timeToString(time)
  73. widgetAPI.putInnerHTML(document.getElementById("time"+index), Time);
  74. }
  75. if(RTV_API.channels[Main.chan_array_index].has_archive && ( time < (RTV_API.servertime - 15*60)))
  76. { document.getElementById("img"+index).src='img/rec.png';
  77. document.getElementById("percent"+index).style.width="100%";
  78. }
  79. else
  80. document.getElementById("img"+index).src='img/clock.png';
  81. if(EPG.epg_array[pr_array_index].info)
  82. {
  83. var percent = (RTV_API.channels[Main.chan_array_index].end - RTV_API.channels[Main.chan_array_index].begin)/100;
  84. var elapsed_time = (RTV_API.servertime - RTV_API.channels[Main.chan_array_index].begin);
  85. if(percent)
  86. {
  87. percent = (elapsed_time/percent);
  88. if(percent>100)
  89. percent = 100;
  90. widgetAPI.putInnerHTML(document.getElementById("progress"+index), parseInt(percent)+"%");
  91. document.getElementById("percent"+index).style.width= parseInt(percent)+"%";
  92. }
  93. }
  94. widgetAPI.putInnerHTML(document.getElementById("title"+index), EPG.epg_array[pr_array_index].title);
  95. widgetAPI.putInnerHTML(document.getElementById("descr"+index), EPG.epg_array[pr_array_index].info);
  96. }
  97. }
  98. EPG.epg_array_index = 10*EPG.selected_page + EPG.selected_program;
  99. alert( EPG.selected_program );
  100. if( chan[EPG.selected_program] ){
  101. chan[EPG.selected_program].style.backgroundImage= "url(img/menu_act.png)";
  102. //document.getElementById("number"+EPG.selected_program).style.backgroundImage= "url(img/menu_act.png)";
  103. }
  104. EPG.updateCurrentChannelEPG();
  105. }
  106. EPG.updateCurrentChannelEPG = function()
  107. {
  108. if ( EPG.epg_array.length ){
  109. unix = EPG.epg_array[EPG.epg_array_index].begin;
  110. epg_date = RTV_API.DateMenu(unix);
  111. server_date = RTV_API.DateMenu(RTV_API.servertime);
  112. if(epg_date==server_date)
  113. epg_date = "СЕГОДНЯ ";
  114. widgetAPI.putInnerHTML(document.getElementById("infoList"), "");
  115. var epg = '<div><div id="epg_date_style">' + epg_date + '</div><div id="epg_img"> <img src="' + RTV_API.RODNOE_ICON + RTV_API.channels[Main.chan_array_index].icon + '.gif"></div><div id="epg_channel_name">'+RTV_API.channels[Main.chan_array_index].name+'</div></div><br><br><br>' + EPG.epg_array[EPG.epg_array_index].title+'<br><br>'+EPG.epg_array[EPG.epg_array_index].info;
  116. if(EPG.epg_array[EPG.epg_array_index].title)
  117. widgetAPI.putInnerHTML(document.getElementById("infoList"), epg);
  118. if(RTV_API.channels[Main.chan_array_index].end && ( EPG.epg_array[EPG.epg_array_index].begin < (RTV_API.servertime - 15*60)))
  119. document.getElementById("archive_play").style.display="block";
  120. else
  121. document.getElementById("archive_play").style.display="none";
  122. }else{
  123. widgetAPI.putInnerHTML(document.getElementById("infoList"), "");
  124. }
  125. }
  126. EPG.getEPG = function()
  127. {
  128. if(!this.date)
  129. date = EPG.timeToDate(RTV_API.servertime);
  130. else
  131. date = this.date;
  132. this.epg_array = RTV_API.getEPG(Main.ch_id_selected, EPG.from_uts, RTV_API.channels[Main.chan_array_index].begin);
  133. if( 0 == this.epg_array.length ){
  134. if( 0 < EPG.epg_day) EPG.prevDay();
  135. else EPG.nextDay();
  136. return false;
  137. }
  138. this.program_counter = this.epg_array.length;
  139. this.program_pages = this.program_counter;
  140. this.last_page_programs_counter = this.program_counter % 10;
  141. if ( this.last_page_programs_counter > 0 && this.last_page_programs_counter < 5)
  142. this.program_pages = Math.round(this.program_pages / 10) + 1;
  143. else
  144. this.program_pages = Math.round(this.program_pages / 10);
  145. return true;
  146. }
  147. EPG.selectNextProgram = function()
  148. {
  149. EPG.selected_program++;
  150. if(EPG.selected_program>=10 || (EPG.selected_page == EPG.program_pages-1 && EPG.selected_program==EPG.last_page_programs_counter))
  151. {
  152. EPG.selected_program = 0;
  153. EPG.selected_page++;
  154. }
  155. EPG.setProgramList();
  156. }
  157. EPG.selectPrevProgram = function()
  158. {
  159. EPG.selected_program--;
  160. if(EPG.selected_page == 0 && EPG.selected_program<0)
  161. {
  162. EPG.selected_program = EPG.last_page_programs_counter- 1;
  163. EPG.selected_page = EPG.program_pages-1;
  164. }
  165. if(EPG.selected_program<0)
  166. {
  167. EPG.selected_program = 9;
  168. EPG.selected_page--;
  169. }
  170. EPG.setProgramList();
  171. }
  172. EPG.selectPrevPage = function()
  173. {
  174. EPG.selected_page--;
  175. EPG.setProgramList();
  176. }
  177. EPG.selectNextPage = function()
  178. {
  179. EPG.selected_page++;
  180. EPG.setProgramList();
  181. }
  182. EPG.PlayChannel = function()
  183. {
  184. if(RTV_API.channels[Main.chan_array_index].end && ( EPG.epg_array[EPG.epg_array_index].begin < (RTV_API.servertime - 15*60)))
  185. {
  186. RTV_API.getChannel_url(Main.ch_id_selected, EPG.epg_array[EPG.epg_array_index].begin);
  187. ArchivePlayer.current_archive_time = parseInt(EPG.epg_array[EPG.epg_array_index].begin);
  188. //alert("EPG.PlayChannel ArchivePlayer.current_archive_time: " + ArchivePlayer.current_archive_time + "EPG.from_uts: " + EPG.from_uts );
  189. var next_day_date = EPG.timeToDate(parseInt(EPG.epg_array[0].begin) + 24*60*60);
  190. ArchivePlayer.last_program_end_time = EPG.epg_array[EPG.epg_array.length-1].end;//parseInt(RTV_API.getEPGnextDAYstart(Main.ch_id_selected, next_day_date)); // TODO
  191. Player.setVideoURL(RTV_API.url);
  192. ArchivePlayer.statusmessage = "запуск передачи из архива";
  193. ArchivePlayer.playVideo();
  194. KeyHandler.setFocus(Main.ArchivePlayer_ID);
  195. }
  196. }
  197. EPG.timeToDate = function(time)
  198. {
  199. if(!time)
  200. return ""
  201. var mmToMonth = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
  202. var Unixtime = new Date(time* 1000);
  203. var Day = Unixtime.getDate();
  204. if(Day<10)
  205. Day = '0' + Day;
  206. var Month = mmToMonth[Unixtime.getMonth()];
  207. var Year = Unixtime.getFullYear();
  208. Year = Year.toString();
  209. Year = Year.substring(2,4);
  210. return Day+Month+Year
  211. }
  212. EPG.prevDay = function()
  213. {
  214. EPG.epg_day -= 1;
  215. EPG.setDate();
  216. }
  217. EPG.nextDay = function()
  218. {
  219. EPG.epg_day += 1;
  220. EPG.setDate();
  221. }
  222. EPG.setDate = function()
  223. {
  224. EPG.from_uts = parseInt(RTV_API.servertime) + EPG.epg_day*24*60*60;
  225. EPG.date = EPG.timeToDate(EPG.from_uts);
  226. EPG.show();
  227. }