function trimLeft(string)
{
    while (string.charAt(0) == ' ') {
	string = string.substring(1, string.length);
    }

    return string;
}

function setCookie(name, value, days, path)
{
    var expires = "";
    var pathStr = "";

    if (days != null) {
	var expireDate = new Date();

	expireDate.setDate(expireDate.getDate() + days);

	expires = "; expires=" + expireDate.toGMTString();
    }

    if (path != null) {
	pathStr = "; path=" + path;
    }

    document.cookie = escape(name) + "=" + escape(value) + expires + pathStr;
}

function setLanguageCookie(lang)
{
    setCookie("language", lang, 180, "/");
}

function getCookie(name)
{
    var value = null;

    var a = document.cookie.split(";");
    var search = escape(name) + "=";

    for (var i = 0; i < a.length; i++) {
	var c = trimLeft(a[i]);

	if (c.indexOf(search) == 0) {
	    value = unescape(c.substring(search.length, c.length));

	    break;
	}
    }

    return value;
}

function deleteCookie(name)
{
    if (getCookie(name) != null) {
	document.cookie = name + "=; expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
}

function getStyleSheets()
{
    var ss = new Array();

    var elements = document.getElementsByTagName("link");

    for (var i = 0; i < elements.length; i++) {
	var attribute = elements[i].getAttributeNode("rel");

	if (attribute != null && attribute.value.indexOf("style") != -1) {
	    ss[ss.length] = elements[i];
	}
    }

    return ss;
}

function setActiveStyle(title)
{
    var success = false;
    var states = new Array();

    var ss = getStyleSheets();

    for (var i = 0; i < ss.length; i++) {
	var styleTitle = ss[i].getAttributeNode("title");

	states[states.length] = ss[i].disabled;

	if (styleTitle != null && styleTitle.value != "") {
	    var attribute = ss[i].getAttributeNode("rel");

	    ss[i].disabled = true;

	    if (styleTitle.value == title) {
		ss[i].disabled = false;
		success = true;
	    }
	}
    }

    if (success == false) {
	for (var i = 0; i < ss.length; i++) {
	    ss[i].disabled = states[i];
	}
    }
}

function getActiveStyle()
{
    var activeStyle = null;

    var ss = getStyleSheets();

    for (var i = 0; i < ss.length; i++) {
	var styleTitle = ss[i].getAttributeNode("title");

	if (styleTitle != null && styleTitle.value != "" && ss[i].disabled == false) {
	    activeStyle = styleTitle.value;

	    break;
	}
    }

    return activeStyle;
}

function getPreferredStyle()
{
    var preferredStyle = null;

    var ss = getStyleSheets();

    for (var i = 0; i < ss.length; i++) {
	var styleTitle = ss[i].getAttributeNode("title");

	if (styleTitle != null && styleTitle.value != "") {
	    var attribute = ss[i].getAttributeNode("rel");

	    if (attribute != null && attribute.value.indexOf("alternate") == -1) {
		preferredStyle = styleTitle.value;

		break;
	    }
	}
    }

    return preferredStyle;
}

function createEmails()
{
    var m = "mailto:";
    var a = "@";
    var ld = "trineco.fi";

    var elements = document.getElementsByTagName("span");

    for (var i = elements.length - 1; i >= 0; i--) {
	var attributeNode = elements[i].getAttributeNode("class");

	if (attributeNode != null && attributeNode.value == "email") {
	    var titleNode = elements[i].getAttributeNode("title");

	    if (titleNode != null) {
		var title = titleNode.value;
		var address = title;
		var text = "";

		var position = title.lastIndexOf("/");

		if (position != -1) {
		    text = title.substring(position + 1);
		    title = title.substring(0, position);
		    address = title;
		}

		position = title.lastIndexOf(" ");

		if (position != -1) {
		    address = title.substring(position + 1);
		}

		address = address + a + ld;

		if (text == "") {
		    text = address;
		}

		var node = document.createElement("a");
		node.setAttribute("href", m + address);
		node.setAttribute("title", title + a + ld);
		node.appendChild(document.createTextNode(text));

		elements[i].parentNode.replaceChild(node, elements[i]);
	    }
	}
    }
}

function onLoad()
{
    var cookie = getCookie("style");
    var style = cookie != null ? cookie : getPreferredStyle();

    setActiveStyle(style);

    createEmails();
}

function onUnload()
{
    var style = getActiveStyle();

    if (style != null && style != "") {
	if (style == getPreferredStyle()) {
	    deleteCookie("style");
	}
	else {
	    setCookie("style", style, 180, null);
	}
    }
}

var cookie = getCookie("style");
var style = cookie != null ? cookie : getPreferredStyle();

setActiveStyle(style);
