var Timers = {
timerList : [],
scrollDur : 100,
scrollFlip : 100,
btnMode : 0
// 0 nothing
// 1: delete
// 2:
};
Timers.init = function() {
/*
div with scrolling property
defualt: left ad right half
Line has "RecOngoing" "Channel" "Start" "Stop" "Title"
*/
this.btnSelected = 0;
this.scrolling = false;
var elem = document.getElementById('timerScreen-anchor');
elem.setAttribute('onkeydown', 'Timers.onInput();');
$("#timerScreen").hide();
};
Timers.show = function() {
Main.log("Timers.show");
$("#timerScreen").show();
this.btnSelected = 0;
Timers.focus();
Timers.readTimers();
// Timers.debug();
};
Timers.focus = function () {
Main.log("Timers.focus");
$("#timerScreen-anchor").focus();
};
Timers.debug = function () {
for (var i = 0; i < 20; i++) {
Timers.timerList.push( {title: "Timer One two three VZGTTTTTTGFDDD GHGZG"+i, isSingleEvent: true, printday:"", weekdays:0,
day: 0, start:2015, stop:2013, starttime: 0, stoptime: 0, channelid: "", channelname : "Hello Channel", flags: 0,
index: i, isrec: false, eventid: 0 });
}
Timers.createMenu();
};
Timers.hide = function() {
$("#timerScreen").hide();
Main.changeState(Main.eMAIN);
Main.enableKeys();
Timers.timerList = [];
$("#timerTable").remove();
};
Timers.insertColon = function (t) {
// insert the collon before the last two digits
var len = t.length;
var o = t;
if (len >= 2) {
o = t.substr(0, (len-2)) + ":" + t.substr(len-2);
switch (o.length) {
case 3:
o = "00" +o;
break;
case 4:
o = "0" + o;
break;
};
}
return o;
};
Timers.readTimers = function () {
var url = Config.serverUrl + "/timers.xml";
$.ajax({
url: url,
type : "GET",
success : function(data, status, XHR ) {
Main.log ("Timers: Got response");
$(data).find("timer").each(function () {
var title = $(this).find('file').text();
var isSingleEvent = ($(this).find('issingleevent').text() == "true") ? true : false;
var printday = $(this).find('printday').text();
var weekdays = parseInt($(this).find('weekdays').text());
var day = parseInt($(this).find('day').text());
var start = $(this).find('start').text();
var stop = $(this).find('stop').text();
var starttime = parseInt($(this).find('starttime').text());
var stoptime = parseInt($(this).find('stoptime').text());
var channelid = $(this).find('channelid').text();
var channelname = $(this).find('channelname').text();
var flags = parseInt($(this).find('flags').text());
var index = parseInt($(this).find('index').text());
var isrec = ($(this).find('isrec').text() == "true") ? true: false;
var eventid = parseInt($(this).find('eventid').text());
Timers.timerList.push( {title: title, isSingleEvent: isSingleEvent, printday:printday, weekdays:weekdays,
day: day, start: Timers.insertColon(start), stop: Timers.insertColon(stop), starttime: starttime, stoptime: stoptime, channelid: channelid, channelname : channelname,
flags: flags, index: index, isrec: isrec, eventid: eventid });
});
Timers.createMenu();
},
error : function (jqXHR, status, error) {
Main.logToServer ("Timers: Not found!!!");
}
});
};
Timers.createMenu= function () {
var p_width = $("body").outerWidth();
var p_height = $("body").outerHeight();
var table = $("
", {id : "timerTable", style :"overflow-y: scroll;margin-top:3px;margin-bottom:3px; padding-right:3px; height:100%;"});
$("#timerView").append(table);
$("#timerScreen").show();
var cur_date = 0;
for (var i = 0; i < Timers.timerList.length; i++) {
Main.log("Timers: " + Timers.timerList[i].title);
if (Timers.timerList[i].isSingleEvent == false) {
cur_date = 0;
table.append( $("
", { text : ((Timers.timerList[i].day != 0) ? (Timers.getPrintDate(Timers.timerList[i].day) + " - ") : "") +Timers.getWeekdays(Timers.timerList[i].weekdays), class : "style_menuItem style_headline", style : "text-align:left;overflow-x: hidden;white-space : nowrap;"}));
}else if (cur_date != Timers.timerList[i].day) {
cur_date = Timers.timerList[i].day;
table.append( $("
", { text : Timers.getPrintDate(Timers.timerList[i].day) , class : "style_menuItem style_headline", style : "text-align:left;overflow-x: hidden;white-space : nowrap;"}));
}
table.append(Timers.createEntry(i, $("#timerTable").width()));
}
this.btnSelected = 0;
$("#tmr-0").removeClass('style_menuItem').addClass('style_menuItemSelected');
};
Timers.getPrintDate = function (day) {
var d = new MyDate (day * 1000);
return d.getDate() + "." + (d.getMonth() +1) + "." + d.getFullYear();
};
Timers.getWeekdays = function (wd) {
var map = wd.toString(2);
var res = "";
if (map.length <= 7) {
var suf = "0000000".slice(0, (7-map.length));
map = suf + map;
}
else {
// take the last 7 digits
map = map.slice ((7-map.length));
}
res += ((map[6] == "1") ? "M" : "-");
res += ((map[5] == "1") ? "T" : "-");
res += ((map[4] == "1") ? "W" : "-");
res += ((map[3] == "1") ? "T" : "-");
res += ((map[2] == "1") ? "F" : "-");
res += ((map[1] == "1") ? "S" : "-");
res += ((map[0] == "1") ? "S" : "-");
return res;
};
Timers.createEntry= function (i, w) {
Main.log("width= " +w);
var row = $("
", {id: "tmr-"+i, class : "style_menuItem", style : "text-align:left;overflow-x: hidden;white-space : nowrap;"}); //, style : "text-overflow: ellipsis;white-space : nowrap;"
// row.append($("
", {class : ((Timers.timerList[i].isrec ==true) ? "style_timerRec" : ""), style : "display: inline-block;"}));
row.append($("
", {class : ((Timers.timerList[i].isrec ==true) ? "style_timerRec" : ((Timers.timerList[i].flags & 1) != 0) ? "style_timerAct" : "style_timerNone"), style : "display: inline-block; color : inherit;"}));
if ( Timers.timerList[i].isSingleEvent == true) {
}
else {
}
row.append($("
", {text : Timers.timerList[i].channelname, style : "padding-left:5px;width:12%; display: inline-block; color : inherit; ", class : "style_overflow"}));
row.append($("
", {text : Timers.timerList[i].start, style : "padding-left:5px; width:9%; display: inline-block; color : inherit; ", class : "style_overflow"}));
row.append($("
", {text : Timers.timerList[i].stop, style : "padding-left:5px; width:9%; display: inline-block; color : inherit; ", class : "style_overflow"}));
row.append($("
", {text : Timers.timerList[i].title, style : "padding-left:5px; width:68%;display: inline-block; color : inherit; ", class : "style_overflow"}));
return row;
};
Timers.resetBtns = function () {
this.btnSelected = 0;
for (var i =0; i <= Timers.timerList.length; i++) {
$("#tmr-" + i).removeClass('style_menuItemSelected').addClass('style_menuItem');
}
$("#tmr-0").removeClass('style_menuItem').addClass('style_menuItemSelected');
};
Timers.resetView = function () {
Timers.timerList = [];
$("#timerTable").remove();
Timers.readTimers();
};
Timers.timerCallback = function () {
// delete the current timer
Main.log("****** Delete Timer: " + Timers.timerList[this.btnSelected].title);
// var obj = new execRestCmd(RestCmds.CMD_DelTimer, Timers.timerList[this.btnSelected].index);
Server.delTimer(Timers.timerList[this.btnSelected].index);
};
Timers.selectBtnUp = function () {
var btnname = "#tmr-"+this.btnSelected;
Main.log( "Timers-BtnUp: Old: " +this.btnSelected + " btn= "+btnname);
$(btnname).removeClass('style_menuItemSelected').addClass('style_menuItem');
if (this.btnSelected == 0) {
this.btnSelected = (Timers.timerList.length-1);
$("#timerTable").animate ({scrollTop: $("#tmr-" + this.btnSelected).position().top}, this.scrollFlip);
}
else {
this.btnSelected--;
var pos = $("#tmr-" + this.btnSelected).position().top;
Main.log("pos= " + pos + " ovlBodyHeight= " + $("#timerTable").height() + " scrollTop= " + $("#timerTable").scrollTop());
if (pos < 0) {
$("#timerTable").animate ({scrollTop: $("#timerTable").scrollTop() + pos}, this.scrollDur);
Main.log("New scrollTop= " +$("#timerTable").scrollTop() +" new pos= " + $("#tmr-" + this.btnSelected).position().top);
}
}
$("#tmr-" + this.btnSelected).removeClass('style_menuItem').addClass('style_menuItemSelected');
Main.log("Timers-BtnUp: New: " +this.btnSelected);
};
Timers.selectBtnDown = function () {
var btnname = "#tmr-"+this.btnSelected;
$("#tmr-" + this.btnSelected).removeClass('style_menuItemSelected').addClass('style_menuItem');
Main.log( "Timers-BtnDown: Old: " +this.btnSelected + " btn= "+btnname);
if (this.btnSelected == (Timers.timerList.length-1)) {
this.btnSelected = 0;
$("#timerTable").animate ({scrollTop: 0}, this.scrollFlip);
}
else {
this.btnSelected++;
var pos = $("#tmr-" + this.btnSelected).position().top;
var height = $("#tmr-" + this.btnSelected).outerHeight() +10;
Main.log("pos= " + pos + " height= " + height + " ovlBodyHeight= " + $("#timerTable").height() + " scrollTop= " + $("#timerTable").scrollTop());
if ((pos + height) > $("#timerTable").height()) {
$("#timerTable").animate ({scrollTop: $("#timerTable").scrollTop() + (pos + height) - $("#timerTable").height()}, this.scrollDur);
Main.log("New scrollTop= " +$("#timerTable").scrollTop() +" new pos= " + $("#tmr-" + this.btnSelected).position().top);
}
}
Main.log( "Timers-BtnDown: New: " +this.btnSelected );
$("#tmr-" + this.btnSelected).removeClass('style_menuItem').addClass('style_menuItemSelected');
};
Timers.onInput = function () {
var keyCode = event.keyCode;
Main.log(" Timers key= " + keyCode);
switch(keyCode) {
case tvKey.KEY_UP:
Main.log("Timers-Select Up");
this.selectBtnUp();
break;
case tvKey.KEY_DOWN:
Main.log("Timers-Select Down");
this.selectBtnDown();
break;
case tvKey.KEY_ENTER:
Buttons.ynShow();
break;
case tvKey.KEY_YELLOW:
Timers.timerCallback = function () {
// delete the current timer
Main.log("Timers.timerCallback: " + Timers.timerList[this.btnSelected].title);
Server.delTimer(Timers.timerList[this.btnSelected].index);
};
Buttons.ynShow();
break;
case tvKey.KEY_RED:
if ((Timers.timerList[this.btnSelected].flags & 1) != 0) {
// Timer is currently active
Buttons.ynHeadlineText ("Deactivate Timer ?");
Timers.timerCallback = function () {
Main.log("Timers.timerCallback Deactivate Timer: " + Timers.timerList[this.btnSelected].title);
Server.actTimer(Timers.timerList[this.btnSelected].index, false);
};
}
else {
// Timer is currently deactive
Buttons.ynHeadlineText ("Activate Timer ?");
Timers.timerCallback = function () {
Main.log("Timers.timerCallback Activate Timer: " + Timers.timerList[this.btnSelected].title);
Server.actTimer(Timers.timerList[this.btnSelected].index, true);
};
}
Buttons.ynShow();
// Timers.hide();
break;
case tvKey.KEY_TOOLS:
Helpbar.showHelpbar();
break;
case tvKey.KEY_RETURN:
case tvKey.KEY_EXIT:
Timers.hide();
if (this.returnCallback != null)
this.returnCallback();
break;
}
try {
widgetAPI.blockNavigation(event);
}
catch (e) {
};
};