/* EmailObfuscation
*************************************************************/
function EmailObfuscator(){
	var self = this;
	self.map = '';
	self.init = function(){
		self.map = self.rot13init();
		$("a[href^='/obfuser']").each(function(){
			var content = $(this).html();
			var href = $(this).attr('href').replace(/.*\/obfuser\/([a-z0-9._%-]+)\+([a-z0-9._%-]+)\+([a-z.]+)/i, '$1' + '@' + '$2' + '.' + '$3');
			content = (content.indexOf('...') > 0) ? self.str_rot13(href,self.map) : content;
			$(this).html(content);
			$(this).click(function(){
				self.geo_decode(this);
			});	
		});
	}
	
	self.geo_decode = function(anchor) { // function to recompose the orginal address
		var href = anchor.getAttribute('href');
		var address = href.replace(/.*\/obfuser\/([a-z0-9._%-]+)\+([a-z0-9._%-]+)\+([a-z.]+)/i, '$1' + '@' + '$2' + '.' + '$3');
		var linktext = anchor.innerHTML; // IE Fix
		if (href != address) {
			anchor.setAttribute('href','mailto:' + self.str_rot13(address,self.map)); // Add mailto link	
			anchor.innerHTML = linktext; // IE Fix
		}
	}
	
	self.rot13init = function() {
		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;
	}

	self.str_rot13 = function(a,map) {
		var s = "";
		for (var i = 0 ; i < a.length ; i++) {
			var b = a.charAt(i);
			s += (b>='A' && b<='Z' || b>='a' && b<='z' ? map[b] : b);
		}
		return s;
	}
	
	self.init();
}
