var tvDir = "../tv/";
var currentTime;
var startTime;
var endTime;
// Set width (seconds per pixel)
var widthPx = 15;
var dragTV;
function xmlvalue(content) {
if (content.textContent)
return content.textContent;
else {
// document.getElementById("tvinfo").innerHTML += content.childNodes[0].nodeValue + "
";
return content.childNodes[0].nodeValue;
}
}
function unixtime() {
var ut=new Date();
var h,m,s,ms;
today = new Date();
unixborn = new Date(70,0,1);
unixborn.setHours(15);
diff = today.getTime();
diff /= 1000;
diff = parseInt(diff);
return diff;
}
function loadtv(s) {
if (s > 0)
unixtime = s;
else
unixtime = unixtime() - 900;
var start = parseInt(unixtime) - parseInt(60 * 60 * 3);
endTime = parseInt(unixtime) + parseInt(60 * 60 * 5);
var url = tvDir+"listings.php?s=" + start + "&e=" + endTime;
if (window.XMLHttpRequest) {
var tvrequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
var tvrequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
var tvrequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return 0;
}
}
} else {
return 0;
}
tvrequest.open("GET",url);
// tvrequest.onload = function() {
tvrequest.onreadystatechange = function() {
if (tvrequest.readyState == 4) {
var xmlDoc = tvrequest.responseXML;
var feedlist = '';
var markers = xmlDoc.documentElement.getElementsByTagName("item");
startTime = 0;
var currentChannel;
var currentChannelNo = 0;
var channels = Array();
for (var i = 0; i < markers.length; i++) {
if (xmlvalue(xmlDoc.documentElement.getElementsByTagName("channel")[i]) != currentChannel) {
currentChannel = xmlvalue(xmlDoc.documentElement.getElementsByTagName("channel")[i]);
currentChannelNo += 1;
if (feedlist)
feedlist += '';
channels[currentChannelNo] = currentChannel;
/*
Padding for:
Firefox = *20 -6
IE = *14
Opera = ?
*/
feedlist += '
';
}
if (startTime == 0)
startTime = xmlvalue(xmlDoc.documentElement.getElementsByTagName("start")[i]);
var liheight = parseFloat(xmlvalue(xmlDoc.documentElement.getElementsByTagName("duration")[i]) / widthPx);
var listart = parseFloat((xmlvalue(xmlDoc.documentElement.getElementsByTagName("start")[i]) - startTime )/ widthPx);
if (xmlvalue(xmlDoc.documentElement.getElementsByTagName("fav")[i]) == 1) {
feedlist += '- ';
feedlist += xmlvalue(xmlDoc.documentElement.getElementsByTagName("title")[i]) + '
';
endTime = parseInt(xmlvalue(xmlDoc.documentElement.getElementsByTagName("start")[i])) + parseInt(xmlvalue(xmlDoc.documentElement.getElementsByTagName("duration")[i]));
}
var feedTime = '';
if (Math.ceil(startTime / (60 * 30)) == (startTime / (60 * 30))) {
var feedStartTime = startTime;
} else {
var feedStartTime = Math.ceil(startTime / (60 * 30)) * 60 * 30;
}
var thirtyNo = Math.floor((endTime - feedStartTime) / (60*30));
for (var i = 0; i < thirtyNo; i++) {
feedTime += '- '
feedTime += '';
feedTime += c2ht((parseFloat(feedStartTime) + parseFloat(i * 30 * 60)),2,"h:n") + '
';
}
feedlist = feedTime + '
' + feedlist;
var channelList = '';
for (var i = 1; i < channels.length; i++) {
/*
Padding for:
Firefox = 0px
IE = 4px
Opera = 11px
*/
//style="top: ' + (((i + 1) * 20) - 4 ) + '"
channelList += '- ' + channels[i] + '
';
}
channelList += '
';
document.getElementById('tvchannels').innerHTML = channelList;
document.getElementById('tv').innerHTML = feedlist + '
';
if (s > 0)
var startmod = 0;
else
var startmod = +50;
document.getElementById('tv').scrollLeft = ((unixtime - startTime) / widthPx) + startmod;
currentTime = parseInt(startTime) + parseInt((unixtime - startTime) + (startmod * widthPx));
//document.getElementById('tvinfo').innerHTML = '';
}
}
tvrequest.send(null);
}
function updateTime() {
currentTime = Number(startTime) + Number(document.getElementById('tv').scrollLeft * widthPx);
dragTV = 0;
if ((currentTime + (document.getElementById('tv').offsetWidth * widthPx)) > (endTime - 7200)) {
// update listings
loadtv(currentTime);
}
if (currentTime < (parseInt(startTime) + 7200)) {
loadtv(currentTime);
}
// document.getElementById('tvinfo').innerHTML = currentTime + " - "+ (startTime + 360);
}
function startDrag(e) {
if (!e)
e = window.event;
dragTV = parseInt(e.screenX) + 1;
}
function doDrag(e) {
if (dragTV > 0) {
if (!e)
e = window.event;
// document.getElementById('tvinfo').innerHTML = e.screenX;
// document.getElementById('tv').scrollLeft = parseInt(document.getElementById('tv').scrollLeft) + ((parseInt(e.screenX) - (dragTV - 1)) * (((endTime - startTime) / widthPx) / document.getElementById('tv').offsetWidth));
document.getElementById('tv').scrollLeft = parseInt(document.getElementById('tv').scrollLeft) - ((parseInt(e.screenX) - (dragTV - 1)));
dragTV = parseInt(e.screenX) + 1;
}
}
function startEvent() {
// alert('hi');
document.getElementById('tv').onmousedown = startDrag;
document.getElementById('tv').onmousemove = doDrag;
document.getElementById('tv').onmouseup = updateTime;
document.getElementById('tv').onmouseout = updateTime;
// tv.attachEvent('onmousedown',startDrag);
// tv.addEventListener('mousedown',startDrag,false);
}
function tvinfo(crid) {
var url = tvDir+'tvinfo.php?crid=' + crid;
if (window.XMLHttpRequest) {
var tvrequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
var tvrequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
var tvrequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return 0;
}
}
} else {
return 0;
}
tvrequest.open("GET",url);
tvrequest.onreadystatechange = function() {
if (tvrequest.readyState == 4) {
var xmlDoc = tvrequest.responseXML;
document.getElementById('tvinfo').innerHTML = " " + xmlvalue(xmlDoc.documentElement.getElementsByTagName("tvinfo")[0]) + "
";
}
}
tvrequest.send(null);
}
function addfav(title) {
var url = tvDir+'fav.php?t=1&add=1&title=' + title;
if (window.XMLHttpRequest) {
var tvfav = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
var tvfav = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
var tvfav = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return 0;
}
}
} else {
return 0;
}
tvfav.open("GET",url);
tvfav.onreadystatechange = function() {
if (tvfav.readyState == 4) {
if (tvfav.responseText > 2)
alert("Programme added to favourites");
else
alert("Failed to add programme to favourites (Response: " + tvfav.responseText + ")");
loadtv(currentTime);
}
}
tvfav.send(null);
}
function tvsearch(type,search) {
var url = tvDir+'search.php?' + type + '=' + search;
if (window.XMLHttpRequest) {
var tvrequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
var tvrequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
var tvrequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return 0;
}
}
} else {
return 0;
}
tvrequest.open("GET",url);
tvrequest.onreadystatechange = function() {
if (tvrequest.readyState == 4) {
var xmlDoc = tvrequest.responseXML;
document.getElementById('tvinfo').innerHTML = " " + xmlvalue(xmlDoc.documentElement.getElementsByTagName("tvinfo")[0]) + "
";
}
}
tvrequest.send(null);
}
function viewfav() {
var url = tvDir+'viewfav.php';
if (window.XMLHttpRequest) {
var tvrequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
var tvrequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
var tvrequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return 0;
}
}
} else {
return 0;
}
tvrequest.open("GET",url);
tvrequest.onreadystatechange = function() {
if (tvrequest.readyState == 4) {
var xmlDoc = tvrequest.responseXML;
document.getElementById('tvinfo').innerHTML = " " + xmlvalue(xmlDoc.documentElement.getElementsByTagName("tvinfo")[0]) + "
";
}
}
tvrequest.send(null);
}
function editfav() {
var url = tvDir+'fav.php';
if (window.XMLHttpRequest) {
var tvrequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
var tvrequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
var tvrequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return 0;
}
}
} else {
return 0;
}
tvrequest.open("GET",url);
tvrequest.onreadystatechange = function() {
if (tvrequest.readyState == 4) {
var xmlDoc = tvrequest.responseXML;
var favs = xmlvalue(xmlDoc.documentElement.getElementsByTagName("tvinfo")[0]);
//while (favs.indexOf("\\r\\n")) {
// favs = favs.replace("/\\r\\n/gi","\r\n");
//}
document.getElementById('tvinfo').innerHTML = " " + favs.replace(/\\r\\n/g,"\r\n"); + "
";
}
}
tvrequest.send(null);
}
function c2ht(ut) {
var ut = ut * 1000;
var d = new Date();
var hmdt = new String();
d.setTime(ut);
if (arguments[1] == 1) {
hmdt = lz(d.getHours()) + ":" + lz(d.getMinutes()) + ":" + lz(d.getSeconds());
} else if (arguments[1] == 2) {
if (arguments[2] == undefined) {
hmdt = lz(d.getDate()) + "/" + lz(d.getMonth()+1) + "/" + d.getFullYear();
} else {
format = String(arguments[2]);
for (i=0;i <= format.length;i++) {
charac = format.substr(i,1);
switch (charac) {
case "d":
hmdt = hmdt + String(lz(d.getDate()));
break;
case "m":
hmdt = hmdt + String(lz(d.getMonth()));
break;
case "y":
hmdt = hmdt + String(lz(d.getFullYear()));
break;
case "h":
hmdt = hmdt + String(lz(d.getHours()));
break;
case "n":
hmdt = hmdt + String(lz(d.getMinutes()));
break;
case "s":
hmdt = hmdt + String(lz(d.getSeconds()));
break;
case "l":
switch(d.getDay()) {
case 0: dn = "Sunday"; break;
case 1: dn = "Monday"; break;
case 2: dn = "Tuesday"; break;
case 3: dn = "Wednesday"; break;
case 4: dn = "Thursday"; break;
case 5: dn = "Friday"; break;
case 6: dn = "Saturday"; break;
}
hmdt = hmdt + String(dn);
break;
default:
hmdt = hmdt + String(charac);
break;
}
}
}
} else {
hmdt = lz(d.getHours()) + ":" + lz(d.getMinutes()) + ":" + lz(d.getSeconds());
}
return hmdt;
}
function lz(a) {
a = String(a);
a.length;
if (a.length < 2) {
a = "0" + a;
}
return a;
}
function toggle() {
if (document.getElementById('tvmenucontent').style.display == 'block') {
document.getElementById('tvmenucontent').style.display = 'none';
document.getElementById('tvmenutitle').innerHTML = '[+]
Menu';
} else {
document.getElementById('tvmenucontent').style.display = 'block';
document.getElementById('tvmenutitle').innerHTML = '[-]
Menu';
}
}