function decrypt_email(id, hash)
{
	var f = 0;
	var b = hash.length - 1;
	var front = "";
	var back = "";

	while(f < b)
	{
		if(f % 2 == 0)
		{
			front += hash[b];
			back = hash[f] + back;
		}
		else
		{
			front += hash[f];
			back = hash[b] + back;
		}

		f++;
		b--;
	}

	var email = base64_decode(front + back);
	if(!email)
	{
		return;
	}

	var link = document.getElementById(id);
	link.href = "mailto:" + email;

	if(link.textContent)
	{
		link.textContent = email;
	}
	else
	{
		link.innerText = email;
	}
}

var b64_key = "ABCDEFGHIJKLMNOP" // 0x00 - 0x0F
            + "QRSTUVWXYZabcdef" // 0x10 - 0x1F
            + "ghijklmnopqrstuv" // 0x20 - 0x2F
            + "wxyz0123456789+/" // 0x30 - 0x3F
            + "=";               // 0x40

function base64_decode(b64_in)
{
	var b64_test = /[^A-Za-z0-9\+\/\=]/g;
	if(b64_test.exec(b64_in))
	{
		return null;
	}

	var b8_out = "";
	var i = 0;

	var c1, c2, c3;
	var b1, b2, b3, b4;

	do
	{
		c1 = c2 = c3 = "";
		b1 = b2 = b3 = b4 = "";

		b1 = b64_key.indexOf(b64_in.charAt(i++));
		b2 = b64_key.indexOf(b64_in.charAt(i++));
		b3 = b64_key.indexOf(b64_in.charAt(i++));
		b4 = b64_key.indexOf(b64_in.charAt(i++));

		c1 = (b1 << 2) | (b2 >> 4);
		c2 = ((b2 & 15) << 4) | (b3 >> 2);
		c3 = ((b3 & 3) << 6) | b4;

		b8_out += String.fromCharCode(c1);

		if(b3 != 64)
		{
			b8_out += String.fromCharCode(c2);
		}
		if(b4 != 64)
		{
			b8_out += String.fromCharCode(c3);
		}
	}
	while(i < b64_in.length);

	return unescape(b8_out);
}


