Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save saitamanodoruji/220377 to your computer and use it in GitHub Desktop.
Save saitamanodoruji/220377 to your computer and use it in GitHub Desktop.
TV.So-net Genre-Coloring for AutoPagerize
// ==UserScript==
// @name TV.So-net Genre-Coloring for AutoPagerize
// @namespace http://tv.so-net.ne.jp/p/saitamanodoruji/
// @description This script extends tv.so-net's native color-code function to pages inserted by AutoPagerize.
// @include http://tv.so-net.ne.jp/*chart*
// @version 0.0.3
// @author saitamanodoruji
// ==/UserScript==
(function executeGenreColoring(doc) {
var genres = {
init: function() {
var self = this;
$X("id('genre-color-examles')/li", doc).forEach(function(li) {
var genreID = /genre-(\d{6})/.exec(li.getAttribute("class"))[1];
var color = doc.defaultView.getComputedStyle(li, null).getPropertyValue("background-color");
self[genreID] = {
checked : false,
color : color
}
});
self.getChecked();
},
getChecked: function() {
var self = this;
for (var n in self) {
if (typeof(self[n]) != 'function') self[n].checked = false;
}
if ( doc.cookie.match(/gtv\.checkedGenreIds=\[([0-9,]*)\]/)) {
RegExp.$1.split(",").forEach(function(genreID) {
self[genreID].checked = true;
});
} else {
$X("id('chart-footer-genres')/li/label/input", doc).forEach(function(n) {
if ( n.checked ) self[n.value].checked = true;
});
}
}
}
var setColors = function(genres, evtNode) {
var re = /cell-genre-(\d{3}0{3})/;
$X(".//*[contains(concat(' ', @class, ' '), ' cell-schedule ')]", evtNode).forEach(function (n) {
if ( n.nodeType == 1 && n.getAttribute("class").match(re) && genres[RegExp.$1].checked ) {
n.style.backgroundColor = genres[RegExp.$1].color;
} else {
n.style.backgroundColor = "rgb(245, 245, 245)";
}
});
}
genres.init();
doc.body.addEventListener("AutoPagerize_DOMNodeInserted", function(event) {
setColors(genres, event.target);
}, false);
$X("id('chart-footer-genres')/li/label/input", doc).forEach(function(n) {
n.addEventListener("change", function() {
genres.getChecked();
setColors(genres, doc);
}, false);
});
// simple version of $X
// $X(exp);
// $X(exp, context);
// @source http://gist.github.com/3242.txt
function $X (exp, context) {
context || (context = document);
var expr = (context.ownerDocument || context).createExpression(exp, function (prefix) {
return document.createNSResolver(context.documentElement || context).lookupNamespaceURI(prefix) ||
context.namespaceURI || document.documentElement.namespaceURI || "";
});
var result = expr.evaluate(context, XPathResult.ANY_TYPE, null);
switch (result.resultType) {
case XPathResult.STRING_TYPE : return result.stringValue;
case XPathResult.NUMBER_TYPE : return result.numberValue;
case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
// not ensure the order.
var ret = [], i = null;
while (i = result.iterateNext()) ret.push(i);
return ret;
}
return null;
}
})(document);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment