/* $Id: styleswitch.js,v 1.4 2004/01/05 23:46:29 elkner Exp $ */

function getStyleOld(preferred) {
	var links = document.getElementsByTagName('link');
	for (i=0; i < links.length; i++) {
		link = links[i]; 
		if(link.getAttribute('rel').indexOf('style') != -1 
			&& link.getAttribute('title')) 
		{
			if (preferred) {
				if (link.getAttribute('rel').indexOf('alt') == -1) {
					return link.getAttribute('title');
				}
			} else if (!link.disabled) {
				return link.getAttribute('title');
			}
		}
    }
    return null;
}

function setStyleOld(title) {
	if (!title) {
		return;
	}
	var links = document.getElementsByTagName('link');
	for (i=0; i < links.length; i++) {
		link = links[i]; 
		if(link.getAttribute('rel').indexOf('style') != -1 
			&& link.getAttribute('title') ) 
		{
			link.disabled = true;
			if (link.getAttribute('title') == title) {
				link.disabled = false;
			}
		}
    }
}

function getStyle(preferred) {
	var i, style, rel;
	if (document.styleSheets) {
		for (i=0; i < document.styleSheets.length; i++) {
			style = document.styleSheets[i];
			if (preferred) {
				rel = null;
				try {
					rel = style.ownerNode.rel;
				} catch (msie) {
					// is a mother fucking bug
				}
				if (rel && (rel.indexOf('alt') == -1) && style.title) {
					return style.title;
				}
			} else if (! style.disabled) {
				return style.title;
			}
		}
	}
	window.status = "Grrr - CSS2 inkompatibler/veralteter Browser.";
	return getStyleOld(preferred);
}

function setStyle(title) {
	var i, style;
	if (!title) {
		return;
	}
	if (document.styleSheets) {
		for (i=0; i < document.styleSheets.length; i++) {
			style = document.styleSheets[i];
			style.disabled = (style.title == title) ? false : true;
		}
		return;
	}
	window.status = "Grrr - CSS2 inkompatibler/veralteter Browser.";
	setStyleOld(title);
}

function getFontsize() {
	var size = document.body.style.fontSize;
	if (!size || (size.indexOf('%') != (size.length - 1))) {
		return 100;
	}
	size = parseInt(size);
	return isNaN(size) ? 100 : size;
}

function setFontsize(percent) {
	var size = 100;
	if (!percent) {
		size = getFontsize();
	} else {
		size = parseInt(percent);
		if (isNaN(size)) {
			size = 100;
		}
	}
	document.body.style.fontSize = "" + size + "%";
}

function adjustFontsize(percent) {
	var size;
	if (percent) {
		size = parseInt(percent);
		if (size != 0 && !isNaN(size)) {
			size += getFontsize();
			setFontsize(size);
			alert("Neue Fontgröße: " + getFontsize() + "%");
			// force to layout _everything_ again (i.e. comp.revalidate());
			document.body.style.display = "none";
			document.body.style.display = "block";
		}
	} 
}

function resetFontsize() {
	setFontsize(100);
	// force to layout _everything_ again (i.e. comp.revalidate());
	document.body.style.display = "none";
	document.body.style.display = "block";
}

function createCookie(name,value,days) {
	var date, expires;
	if (days) {
		date = new Date();
		date.setTime(date.getTime() + (days*24*60*60*1000));
		expires = ';expires=' + date.toGMTString();
	} else {
		expires = '';
	}
	document.cookie = name + '=' + escape(value) + expires + '; path=/';
}

function readCookie(name) {
	var search = name + '=';
	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length
			end = document.cookie.indexOf(';', offset);
			if (end == -1) {
				end = document.cookie.length;
			}
			return unescape(document.cookie.substring(offset, end));
		}
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name, '', -1);
}

window.onload = function(e) {
	var cookie = readCookie('de.mdlug.html.style');
	if (cookie) {
		title = getStyle(true);
		// alert("default style: " + title + "\ncookie: " + cookie);
		if (title != cookie) {
			setStyle(cookie);
		}
	}
	cookie = readCookie('de.mdlug.html.font.size');
	if (cookie) {
		size = parseInt(cookie);
		// alert("default size: 100\ncookie: " + cookie);
		if (size != getFontsize()) {
			setFontsize(size);
		}
	}
}

window.onunload = function(e) {
	var title = getStyle(false);
	var title2 = getStyle(true);
	if (title && title != title2) {
		createCookie('de.mdlug.html.style', title, 365);
	} else {
		eraseCookie('de.mdlug.html.style');
	}
	var size = getFontsize();
	if (size == 100) {
		eraseCookie('de.mdlug.html.font.size');
	} else {
		createCookie('de.mdlug.html.font.size', size, 365);
	}
}