/**
 * Email decoder - see EmailObfuscatorTag.java
 *
 * TODO: use dom, not innerhtml
 */
function decode(l) {
    var href = l.getAttribute('href');
    if(href != null && href.length > 4) {
        if(href.indexOf('obfmail') != -1) {
            var address = href.replace(/.*obfmail_to\/([a-z0-9._%-]+)\+([a-z0-9._%-]+)\+([a-z.]+)/i, '$1' + '@' + '$2' + '.' + '$3');
            var mailto = address != href;
            if(!mailto) {
                address = href.replace(/.*obfmail\/([a-z0-9._%-]+)\+([a-z0-9._%-]+)\+([a-z.]+)/i, '$1' + '@' + '$2' + '.' + '$3');
            }
            var linktext = l.innerHTML.replace(/.*obfmail\/([a-z0-9._%-]+)\+([a-z0-9._%-]+)\+([a-z.]+)/i, '$1' + '@' + '$2' + '.' + '$3');
            if(linktext != l.innerHTML) {
                // löytyi matchi, oletetaan, että se oli osoite
                linktext = rot13(linktext);
            }
            if(href != address) {
                if(mailto) {
                    address = 'mailto:' + rot13(address);
                } else {
                    address = rot13(address);
                }
                l.setAttribute('href', address);
                // works in all browsers (?)
                l.innerHTML = linktext;
            }
        }
    }
}

/**
 * This should be called in body.onload.
 */
function decodeEmails() {
    var links = document.getElementsByTagName('a');
    for(var l=0; l<links.length; l++) {
        decode(links[l]);
    }
}

//// rot13

function rot13init() {
    var map = new Array();
    var s = "abcdefghijklmnopqrstuvwxyz";
    for(var i=0 ; i<s.length ; i++)
        map[s.charAt(i)] = s.charAt((i+13)%26);
    for(var i=0 ; i<s.length ; i++)
        map[s.charAt(i).toUpperCase()] = s.charAt((i+13)%26).toUpperCase();
    return map;
}
var rot13map = rot13init();
function rot13(a) {
	var s = "";
	for(var i=0 ; i<a.length ; i++) {
		var b = a.charAt(i);
		s += (b>='A' && b<='Z' || b>='a' && b<='z' ? rot13map[b] : b);
	}
	return s;
}
