/* yWeb EPG by yjogol */ /* EPG+ */ var g_width_px = 0; /* display width */ var g_number_of_cols = 0; /* nr of cols */ var g_width_all_items = 0; /* width without bouquet */ var c_width_px_per_min = 3; /* px per minute */ var c_min_per_col = 15; /* minutes per col */ var c_width_px_bouquet = 100; /* width of bouquet */ var c_slider_width = 25; var epg_data; /* all EPG Data in 2-dim Array */ var epg_data_index = 0; var g_timer_eventids = new Array(); var g_selected = 0; /* calc the dimension px and mins to display */ function epg_plus_calc_dimensions() { var show_dim = jQuery('#epg_plus').outerWidth(); var usable_width_px = show_dim.width - c_slider_width; /*get display width*/ var max_minutes_to_display = Math.round((usable_width_px - c_width_px_bouquet - c_width_px_per_min) / c_width_px_per_min); /* calc display minutes*/ g_number_of_cols = Math.round(max_minutes_to_display / c_min_per_col); g_width_px = g_number_of_cols * c_width_px_per_min * c_min_per_col + c_width_px_bouquet + c_width_px_per_min; g_width_all_items = g_width_px - c_width_px_bouquet - c_width_px_per_min; jQuery('#epg_plus').css('width', g_width_px); } function do_zap(channelid) { stb_zapto(channelid); } function epg_zapto() { stb_zapto(jQuery('#d_channel_id').text()); } function epg_set_timer_rec() { stb_set_timer_rec(jQuery("#d_channel_id").text(), jQuery("#d_start").text(), jQuery("#d_stop").text()); } function epg_set_timer_zap() { stb_set_timer_zap(jQuery("#d_channel_id").text(), jQuery("#d_start").text()); } function build_epg_clear() { var ep = jQuery("#epg_plus"); obj_clear_all_childs(ep); } /* set a layout box and content */ function build_epg_setbox(_item, _starttime, _stoptime, _start, _stop) { var d_start = Math.max(_start, _starttime); var d_stop = Math.min(_stop, _stoptime); var d_left = c_width_px_bouquet + c_width_px_per_min + Math.round((d_start - _starttime) * c_width_px_per_min / 60); var d_width = Math.max(0, Math.round((d_stop - d_start) * c_width_px_per_min / 60) - 3); d_width = Math.min(d_width, g_width_px - d_left); if (d_start < _stoptime) _item.css({ 'position': 'absolute', 'top': '0px', 'left': d_left + 'px', 'width': d_width + 'px' }) } /* show epg details */ function show_epg_item(_index) { g_selected=_index; jQuery("#d_desc").html(epg_data[_index][4] + " " + epg_data[_index][0]); jQuery("#d_info1").html(epg_data[_index][1]); jQuery("#d_info2").html(epg_data[_index][2]); jQuery("#d_start").html(epg_data[_index][3]); jQuery("#d_stop").html(epg_data[_index][5]); jQuery("#d_channel_id").html(epg_data[_index][6]); var logo = epg_data[_index][7]; jQuery("#d_logo").html((logo != "") ? "" : ""); var off= jQuery('#epg_plus').offset(); jQuery('#epg_info').css({ 'left': off.left + 50 + 'px', 'top': off.top + 50 + 'px', 'position': 'absolute' }); show_obj("epg_info",true); } /* build one channel row */ function build_epg_bouquet(__bdiv, __channel_id, _starttime, _stoptime, _logo) { var xml = loadSyncURLxml("/control/epg?xml=true&channelid=" + __channel_id + "&details=true&stoptime=" + _stoptime); if (xml) { var prog_list = xml.getElementsByTagName('prog'); for (var i = 0; i < prog_list.length; i++) { var prog = prog_list[i]; var _stop = getXMLNodeItemValue(prog, "stop_sec"); _stop = parseInt(_stop); if (_stop > _starttime) { var _start_t = getXMLNodeItemValue(prog, "start_t"); var _start = getXMLNodeItemValue(prog, "start_sec"); _start = parseInt(_start); var _stop_t = getXMLNodeItemValue(prog, "stop_t"); var _desc = epg_de_qout(getXMLNodeItemValue(prog, "description")); var _info1 = epg_de_qout(getXMLNodeItemValue(prog, "info1")); var _info2 = epg_de_qout(getXMLNodeItemValue(prog, "info2")); var __item = obj_createAt(__bdiv, "div", "ep_bouquet_item"); var epg_obj = new Array(_desc, _info1, _info2, _start, _start_t, _stop.toString(), __channel_id, _logo); epg_data.push(epg_obj); __item.innerHTML = "" + _desc + ""; build_epg_setbox(__item, _starttime, _stoptime, _start, _stop); epg_data_index++; } } /* look for timers*/ var fou = g_timer_eventids.findAll(function(e) { return e.get('channelid') == __channel_id; }); if (fou) { jQuery(fou).each(function(i, e) { var stTime="0"; var tclass=""; if (e.get('eventType') == 3) /* zap */ { stTime = e.get('alarmTime'); stTime = parseInt(stTime, 10) + 200; stTime = stTime.toString(); tclass = "ep_bouquet_zap"; } else if (e.get('eventType') == 5) /* record */ { stTime = e.get('stopTime'); tclass = "ep_bouquet_rec"; } var __item = obj_createAt(__bdiv, "div", tclass); build_epg_setbox(__item, _starttime, _stoptime, e.get('alarmTime'), stTime); }); } } } /* build time row */ function build_epg_time_bar(_tdiv, _starttime, _stoptime){ var _start = _starttime; for (var i = 0; i < g_number_of_cols; i++) { var __item = obj_createAt(_tdiv, "div", "ep_time_bar_item"); __item.innerHTML = format_time(new Date(_start * 1000)); var _stop = _start + (c_min_per_col * 60); build_epg_setbox(__item, _starttime, _stoptime, _start, _stop); _start = _stop; } } function get_timer() { g_timer_eventids = new Array(); var timer = loadSyncURL("/control/timer?format=id"); var lines = timer.split("\n"); jQuery(lines).each(function(index, line) { var vals = line.split(" "); if (vals.length >= 8 && (vals[1] == 3 || vals[5])) /* record and zap */ { var aTimer = $H( { 'eventID': vals[0], 'eventType': vals[1], 'eventRepeat': vals[2], 'repcount': vals[3], 'announceTime': vals[4], 'alarmTime': vals[5], 'stopTime': vals[6], 'channelid': vals[7] }); g_timer_eventids.push(aTimer); } },this); } /* main */ var g_i = 0; var g_bouquet_list; var g_display_logos = ""; function build_epg_plus(_bouquet, _starttime) { build_epg_clear(); epg_data = new Array(); epg_data_index=0; var _bouquets_xml = loadSyncURLxml("/control/getbouquet?bouquet=" + _bouquet + "&xml=true"); if (_bouquets_xml) { g_bouquet_list = _bouquets_xml.getElementsByTagName("channel"); var ep = jQuery("#epg_plus"); var _stoptime = _starttime + c_min_per_col * 60 * g_number_of_cols; var __tdiv = obj_createAt(ep, "div", "ep_time_bar"); var __tname_div = obj_createAt(__tdiv, "div", "ep_time_bar_item"); __tname_div.innerHTML = "Uhrzeit"; __tname_div.style.cssText = "width:" + c_width_px_bouquet + "px;"; build_epg_time_bar(__tdiv, _starttime, _stoptime); __tdiv.style.cssText = "width:" + g_width_px; var __ediv = obj_createAt(ep, "div", "epg_plus_container"); __ediv.setAttribute("id", "epg_plus_container") g_i = 0; window.setTimeout("build_epg_plus_loop(" + _starttime + "," + _stoptime + ")", 100); } } function build_epg_plus_loop(_starttime, _stoptime) { if (g_i" : __channel_name; jQuery("#"+__bname_div).css({ "width": c_width_px_bouquet + "px"}); jQuery("#"+__bname_div).html("" + ch_name_with_logo + ""); build_epg_bouquet(__bdiv, __channel_id, _starttime, _stoptime, __logo); window.setTimeout("build_epg_plus_loop(" + _starttime + "," + _stoptime + ")", 100); g_i++; } else { show_waitbox(false); obj_disable("btGet", false); } } /* main: build epg+ */ function build_epg_plus_main() { epg_plus_calc_dimensions(); get_timer(); show_obj("epg_info", false); show_waitbox(true); obj_disable("btGet", true); var sel = document.e.bouquets.selectedIndex; if (sel != -1) bou = document.e.bouquets[sel].value; else bou = 1; _secs = document.e.epg_time.value; _secs = parseInt(_secs); build_epg_plus(bou, _secs); //document.getElementById("epg_plus").width = g_width_px; } /* change time offset and build epg+ */ function build_epg_plus_delta(_delta) { if (document.e.epg_time.selectedIndex + _delta < document.e.epg_time.length && document.e.epg_time.selectedIndex + _delta >= 0) document.e.epg_time.selectedIndex += _delta; build_epg_plus_main(); } /* time delta dropdown-list */ function build_time_list(_delta) { var now = new Date(); now.setMinutes(0); now.setSeconds(0); now.setMilliseconds(0); now = new Date(now.getTime() + _delta * 60 * 60 * 1000); var _secs = now / 1000; var _hour = now.getHours(); var et = document.getElementById("epg_time"); for (i = 0; i < 24; i++) { var _time = (_hour + i) % 24; if(_time < 10) _time = "0" + _time; _time += ":00"; var _time_t = _secs + i * 3600; var __item = obj_createAt(et, "option", "ep_bouquet_item"); __item.text = _time; __item.value = _time_t; } } /* init call */ function epg_plus_init(_display_logos) { g_display_logos = _display_logos; window.onresize = epg_plus_calc_dimensions(); build_time_list(0); }