tilde.club/~brennen/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

125 lines
3.1 KiB

var request = null;
var cache = {};
function previous() {
if (request) {
return false;
}
var select = document.getElementById('themeSelect');
var selectedIndex = select.selectedIndex;
var length = select.length;
if (selectedIndex === 0) {
select.selectedIndex = length - 1;
}
else {
select.selectedIndex = selectedIndex - 1;
}
loadStyle();
return false;
}
function next() {
if (request) {
return false;
}
var select = document.getElementById('themeSelect');
var selectedIndex = select.selectedIndex;
var length = select.length;
if (selectedIndex === length - 1) {
select.selectedIndex = 0;
}
else {
select.selectedIndex = selectedIndex + 1;
}
loadStyle();
return false;
}
function setStyle(text) {
var style = document.getElementsByTagName('style').item(0);
if (style.styleSheet) {
style.styleSheet.cssText = text;
}
else {
while (style.hasChildNodes()) {
style.removeChild(style.firstChild);
}
style.appendChild(document.createTextNode(text));
}
}
function handler() {
if (request.readyState === 4) {
try {
if (request.status === 0 || request.status === 200) {
setStyle(request.responseText);
var themeCode = document.getElementById('themeCode');
var value = themeCode.innerHTML;
cache[value] = request.responseText;
}
}
finally {
request = null;
var select = document.getElementById('themeSelect');
select.disabled = false;
var caption = document.getElementById('caption');
caption.style.display = 'block';
var throbber = document.getElementById('throbberImg');
throbber.style.display = 'none';
}
}
}
function loadStyle() {
var select = document.getElementById('themeSelect');
var value = select.options[select.selectedIndex].innerHTML;
var themeCode = document.getElementById('themeCode');
themeCode.innerHTML = value;
var cachedText = cache[value];
if (cachedText) {
setStyle(cachedText);
return;
}
select.disabled = true;
var caption = document.getElementById('caption');
caption.style.display = 'none';
var throbber = document.getElementById('throbberImg');
throbber.style.display = 'block';
request = sh_getXMLHttpRequest();
var url = 'css/sh_' + value + '.min.css';
request.open('GET', url, true);
request.onreadystatechange = handler;
request.send(null);
}
function body_load() {
if (/Konqueror/.test(navigator.userAgent)) {
var previous = document.getElementById('previous');
previous.innerHTML = '<';
var next = document.getElementById('next');
next.innerHTML = '>';
}
loadStyle();
sh_highlightDocument();
// Opera needs this, or else it truncates the pre
var pre = document.getElementById('codePre');
var width = pre.scrollWidth + 'px';
pre.style.width = width;
// freeze the width of the caption
var caption = document.getElementById('caption');
caption.style.width = width;
}