var colorDefault  = "green";
var layoutDefault = "roller";

window.onload = function() { initPage(); }

function setCookie(name, value, expire) {
    document.cookie = name + "=" + escape(value)
	+ ((expire == null) ? "" : ("; expires=" + expire.toGMTString()))
	+ ("; path=/")
}

function getCookie(name) {
    var search = name + "=";
    if (document.cookie.length > 0) { // if there are any cookies
	offset = document.cookie.indexOf(search);
	if (offset != -1) { // if cookie exists
	    offset += search.length;
	    // set index of beginning of value
	    end = document.cookie.indexOf(";", offset);
	    // set index of end of cookie value
	    if (end == -1)
		end = document.cookie.length;
	    return unescape(document.cookie.substring(offset, end));
	}
    }
}

function doCSSSelect(title, type) {
    var today = new Date();
    var expires = new Date();

    var style;

    if(title == undefined) {
	style = getCookie(type);

	if(style == undefined) {
	    style = eval(type + "Default");
	}
    } else {
	expires.setTime(today.getTime() + 1000 * 60 * 60 * 24 * 365);
	setCookie(type, title, expires);
	style = title;
    }

    var styles = document.getElementsByTagName("link");
    var i;
    for(i = 0; i < styles.length; i++) {
	var link = styles[i];

	if (link.title.substring(0, type.length) == type) {

	    // Let's disable all the screen stylesheets that we don't want to use
	    if((link.rel == "stylesheet" || link.rel == "alternate stylesheet")
	       && link.media == "screen") {
	        // Why does IE suddenly expect all the stylesheets to not be
	        // alternate?
	        if (navigator.appName == "Microsoft Internet Explorer") {
		    link.rel = "stylesheet";
	        }
	        link.disabled = ((type + "-" + style) != link.title);
	    }

	    // Convert the "shared" stylesheets to printer only if the selected
	    // style is "no style" (_)
	    // Apparently this doesn't work right in Mozilla.  I don't know how
	    // to fix it.  Maybe I should file a bug?
	    if (link.title == "_shared_") {
		    if (style == "_") {
			    link.media = "print";
		    } else {
			    link.media = "all";
		    }
	    }
	}
    }
    if(document.getElementById("logo") != undefined && type == "layout") {
	document.getElementById("logo").src = "/shared/logos/" + style + ".png";
	loadPNG(document.getElementById("logo"));
    }
}

function initStyle() {
    doCSSSelect(undefined, "color");
    doCSSSelect(undefined, "layout");
}

function initPage() {
    var style = getCookie("layout");

    if(style == undefined) {
        style = eval("layoutDefault");
    }

    initListbox("color");
    initListbox("layout");

    if(document.getElementById("logo") != undefined) {
	document.getElementById("logo").src = "/shared/logos/" + style + ".png";
    }

    loadPNGs();
}

function initListbox(type) {
    var style = getCookie(type);

    if(style == undefined) {
	style = eval(type + "Default");
    }

    var i;
    for (i = 0; i < document.getElementById(type + 'select').options.length; i++) {
	if (style == document.getElementById(type + 'select')[i].value) {
	    document.getElementById(type + 'select').selectedIndex = i;
	}
    }
}

/**********************************************************
Below code derived from Sleight (c) 2001 Aaron Boodman
http://www.youngpup.net
**********************************************************/
function loadPNGs() {
    if (navigator.platform != "Win32"
	|| navigator.appName != "Microsoft Internet Explorer") {
	return;
    }

    for (var i = document.images.length - 1, img = null;
	 (img = document.images[i]); i--) {
	loadPNG(img);
    }
}

function loadPNG(img) {
    if (navigator.platform != "Win32"
	|| navigator.appName != "Microsoft Internet Explorer") {
	return;
    }

    var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
    var isIE = (rslt != null && Number(rslt[1]) >= 5.5 && Number(rslt[1]) < 7.0);

    if (isIE && img.src.match("\.png$")) {
	var src = img.src;
	img.style.width = img.width + "px";
	img.style.height = img.height + "px";
	img.src = "/shared/spacer.png";
	img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')";
    }
}

initStyle();
