function getCookie(name) {
    // Returns the value of the named cookie.
    var cookies;
    cookies = document.cookie.split(";");
    for ( var i=0 ; i<cookies.length ; i++ ) {
	var cookie = cookies[i];
	while ( cookie.charAt(0)==" " ) // Bugware???
	    cookie = cookie.substring(1,cookie.length);
	if ( cookie.indexOf(name+"=") == 0 )
	    return unescape(cookie.substring(name.length+1, cookie.length));
    }
    return null;
}

function setCookie(name, value, ttl) {
    // Create a new cookie of given name and value with given time to live
    // (TTL in seconds).
    var newcookie;
    newcookie = name+"="+escape(value);
    if ( ttl ) {
	var expiryDate = new Date();
	expiryDate.setTime(expiryDate.getTime()+ttl);
	newcookie += "; expires="+expiryDate.toGMTString();
    }
    newcookie += "; path=/";
    // This does _not_ remove other existing cookies!
    document.cookie = newcookie;
}

function deleteCookie(name) {
    if ( getCookie(name) )
	setCookie(name, "", -1);
}

function setStyleSheet(title) {
    // Activate the specified stylesheet.
    var links, thei;
    links = document.getElementsByTagName("link");
    thei = null;
    for ( var i=0 ; i<links.length ; i++ ) {
	// Scan through <link> elements...
	var link = links.item(i);
	if ( ( link.getAttribute("rel") == "Stylesheet"
	       || link.getAttribute("rel") == "Alternate Stylesheet" )
	     && link.getAttribute("title") ) {
	    if ( link.getAttribute("title") == title )
		thei = i;
	    else
		link.disabled = true;
	}
    }
    if ( thei != null )
	links.item(thei).disabled = false;
}

function getStyleSheet() {
    // Returns the name of the active stylesheet.
    var links, thei;
    links = document.getElementsByTagName("link");
    for ( var i=0 ; i<links.length ; i++ ) {
	// Scan through <link> elements...
	var link = links.item(i);
	if ( ( link.getAttribute("rel") == "Stylesheet"
	       || link.getAttribute("rel") == "Alternate Stylesheet" )
	     && link.getAttribute("title")
	     && !link.disabled ) {
	    return link.getAttribute("title");
	}
    }
    return null;
}

function setStyleCookie(title) {
    if ( title )
	setCookie("Style_David_Madore", title, 2592000000);
    else
	deleteCookie("Style_David_Madore");
}

function getStyleCookie() {
    return getCookie("Style_David_Madore");
}

function setStyleSheetFromCookie() {
    var title;
    title = getStyleCookie();
    if ( title )
	setStyleSheet(title);
}

function setStyleSheetAndCookie(title) {
    setStyleCookie(title);
    setStyleSheet(title);
}

function setStyleCookieFromSheet() {
    var title;
    title = getStyleSheet();
    if ( title )
	setStyleCookie(title);
    else
	setStyleCookie("None");
}

function defaultOnLoad() {
    setStyleSheetFromCookie();
}

function defaultOnUnload() {
    setStyleCookieFromSheet();
}
