// ==UserScript==
// @name SceneSatShower
// @description SceneSat Show Announce
// @version 0.0.2
// @include http://pouet.net/
// @copyright 2013+, mog@trbl.at
// @downloadURL https://github.com/mog/Pouet-Enhancement-Suite/raw/master/scenesatshower.user.js
// @updateURL https://github.com/mog/Pouet-Enhancement-Suite/raw/master/scenesatshower.user.js
// ==/UserScript==
var CORS_PROXY = "http://www.corsproxy.com/",
SCENESAT_SHOW_FEED = CORS_PROXY + "scenesat.com/rss/shows",
SCENESAT_LOGO = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAYAAAD52jQlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAq9JREFUeNq0lN9LWmEYx19/ZB06aYfJNDRNlrUikhoNxDAiiAzHQBi6NSF2t9G/sJHQLvI+NyKaDN2NFw0K11Xtqq2cndUuojG1Loxlw0yqKShn3yNuyEHHGNsDH17PeZ/3y/M+38cj4jiO/OuQ/mGeCOiBFlwBg+X1GzgGb0H0V7Kg0g6gA1RZ4DrQIKdhd3eXVigUdCqVojY3N1uMRmPD6elp7hKB30mr1epBblhY6cOdnZ17EomkSSQSScPhcGMikWDa2tpotVotiUQiJBqNEoPBUMJkMhGLxUIVCgVmbW1NjvPj1UTHV1ZWBjc2Noheryft7e2cSqUqHB0dndXX1182Nzer8/m81G63k76+PkJRFEEBBHs81P7+fm9nZ+c16MQqRcM2m02FQxKZTJZBwnexWJzF+0O+bwh7a2urdXl5uY4XQvUlUdy+VBxa1IS1hxclfE8ruAkGQQsQC/aeLC4uHsvlcq6rq4ubn5/nPB4PNzw8zPX393MzM0/PkfOczxW6v1XDfRk4wQ3O3G73VZZlycLCAjk4OCDFYpGYzWbCMAxf8kk196vFOA4+Wl9fN4RCoW60oKjValO8iUtLSw1wnszOzn6AB6tlo979bk67ecFkMnk7EAiY9vb2mgYGBtJOp5NVKpWHPp/PNTIyQhwOxxYE/ch9VmtOf4Y7l8vdnZub643H4xoYkx8dHf08NjbGV8Kgl3dwdWZycjIyNDT0olKwmqiFr257e9vm9/t74H6dRqNJTk1NfcIIvcxmsw+mp6fNFxcXjRMTE1sYeL9QUDindCaTeRwMBm+w7EdlR4fx3OVyvdfpdK+x94Y3KxaL0ehpHdyP1hIsRcXI0Ol0etXr9Z4FAsEvePaBW4Kxug9elVdSC+H1beW/G1t28uvffKVE/+PT90OAAQCmPmNrUPjTbAAAAABJRU5ErkJggg==",
req = new XMLHttpRequest();
//load XML from scenesat
req.onreadystatechange = function() {
if (req.readyState === 4){
displayItems(req.responseXML);
}
};
req.open('GET', SCENESAT_SHOW_FEED, true);
req.send(null);
//create holder
var holder = document.createElement('table'),
boxTitle = document.createElement('th'),
img = document.createElement("img");
img.setAttribute("src", SCENESAT_LOGO);
img.setAttribute("style", "float:left;");
boxTitle.appendChild(img);
boxTitle.innerHTML += "upcoming scenesat shows";
holder.setAttribute("class", "box");
holder.setAttribute("cellspacing", "1");
holder.setAttribute("cellpadding", "2");
holder.appendChild(boxTitle);
function displayItems(xml){
var entries = xml.getElementsByTagName('item');
for(var i = 0; i < entries.length; i++){
//title comes with date prepended, let's undo that
var title = entries[i].getElementsByTagName('title')[0].textContent.split(' - ', 2)[1],
date = entries[i].getElementsByTagName('pubDate')[0].textContent;
var row = document.createElement("tr"),
td = document.createElement("td"),
countdownHolder = document.createElement('span');
row.setAttribute("bgcolor", (i % 2) == 0 ? "#579" : "#468");
td.innerHTML = '' + title + '
';
td.setAttribute("title",
entries[i].getElementsByTagName('description')[0].textContent + '\n'+
date);
new Countdown(date, countdownHolder);
td.appendChild(countdownHolder);
row.appendChild(td);
holder.appendChild(row);
}
}
//insert into pouet page (before the third box)
var lineBreak = document.createElement('br'),
rightRow =document.querySelectorAll('td[width="20%"]')[1],
thirdBox = rightRow.getElementsByTagName('table')[2];
thirdBox.parentNode.insertBefore( holder, thirdBox.nextSibling );
thirdBox.parentNode.insertBefore( lineBreak, thirdBox.nextSibling );
var Countdown = function (dateString, element) {
var end = new Date(dateString).getTime();
var _dayV, _hourV, _minV;
init();
function init() {
if (Math.round((end - Date.now()) / 1000) > 0) {
update();
setInterval(update, 3000);
}
}
function update() {
var delta = Math.round((end - Date.now()) / 1000),
days = Math.floor(delta / 86400),
dayDelta = delta % 86400,
hours = Math.floor(dayDelta / 3600),
hourDelta = dayDelta - (hours * 3600),
minutes = Math.floor(hourDelta / 60);
element.innerHTML = ':: in ' + days + 'days, ' + hours + 'hours, ' + minutes + 'minutes';
}
};