1 line
3.7 KiB
JavaScript
1 line
3.7 KiB
JavaScript
/*
|
|
###############################################################################
|
|
# Chirpy!, a quote management system #
|
|
# Copyright (C) 2005-2007 Tim De Pauw <ceetee@users.sourceforge.net> #
|
|
###############################################################################
|
|
# This program is free software; you can redistribute it and/or modify it #
|
|
# under the terms of the GNU General Public License as published by the Free #
|
|
# Software Foundation; either version 2 of the License, or (at your option) #
|
|
# any later version. #
|
|
# #
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT #
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
|
# more details. #
|
|
# #
|
|
# You should have received a copy of the GNU General Public License along #
|
|
# with this program; if not, write to the Free Software Foundation, Inc., 51 #
|
|
# Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #
|
|
###############################################################################
|
|
|
|
###############################################################################
|
|
# style_switcher.js #
|
|
# Makes the user's alternate stylesheet choice persistent using a cookie #
|
|
# Largely based on http://www.alistapart.com/articles/alternate/ #
|
|
###############################################################################
|
|
# $Id:: style_switcher.js 291 2007-02-05 21:24:46Z ceetee $ #
|
|
###############################################################################
|
|
*/
|
|
|
|
function setActiveStyleSheet (title) {
|
|
var a;
|
|
var l = document.getElementsByTagName("link");
|
|
var found = false;
|
|
for (var i = 0; a = l[i]; i++) {
|
|
var t = a.getAttribute("title");
|
|
if (a.getAttribute("rel").indexOf("stylesheet") >= 0 && t) {
|
|
var d = (t != title);
|
|
a.disabled = d;
|
|
if (!d) found = true;
|
|
}
|
|
}
|
|
return found;
|
|
}
|
|
|
|
function getActiveStyleSheet () {
|
|
var a;
|
|
var l = document.getElementsByTagName("link");
|
|
for (var i = 0; a = l[i]; i++) {
|
|
var t = a.getAttribute("title");
|
|
if (a.getAttribute("rel").indexOf("stylesheet") >= 0 && t && !a.disabled)
|
|
return t;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function getPreferredStyleSheet () {
|
|
var a;
|
|
var l = document.getElementsByTagName("link");
|
|
for (var i = 0; a = l[i]; i++) {
|
|
var t = a.getAttribute("title");
|
|
if (t && a.getAttribute("rel") == "stylesheet")
|
|
return t;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function readCookie (name) {
|
|
var nameEq = name + "=";
|
|
var ca = document.cookie.split(/; */);
|
|
for (var i = 0; i < ca.length; i++) {
|
|
var c = ca[i];
|
|
if (c.indexOf(nameEq) == 0)
|
|
return c.substring(nameEq.length, c.length);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function createCookie (name, value) {
|
|
var date = new Date();
|
|
date.setYear(1900 + date.getYear() + 1);
|
|
document.cookie = name + "=" + value + "; expires=" + date.toGMTString()
|
|
+ "; path=" + cookiePath + "; domain=" + cookieDomain;
|
|
}
|
|
|
|
function addOnunloadFunction (f) {
|
|
if (window.onunload != null) {
|
|
var old = window.onunload;
|
|
window.onunload = function (e) {
|
|
old(e);
|
|
f();
|
|
};
|
|
}
|
|
else {
|
|
window.onunload = f;
|
|
}
|
|
}
|
|
|
|
addOnunloadFunction(function () {
|
|
var style = getActiveStyleSheet();
|
|
if (style) createCookie("style", style);
|
|
});
|
|
|
|
setActiveStyleSheet(readCookie("style"))
|
|
|| setActiveStyleSheet(getPreferredStyleSheet()); |