function decryption(src) {
	var hexshift = src.substring(0,7);
	var shift = '';
	var result = '';
	var email = false;
	if(hexshift != 'mailto:') {
		shift = h2dconvert(hexshift);
		// If not valid hex, don't decrypt.
		if(shift == -1) {
			return src;
		}
	} else {
		src = src.substring(7);
		shift = h2dconvert(src.substring(0,2));
		if(shift == -1) {
			return 'mailto:' + src;
		}
		result = 'mailto:';
		email = true;
	}
	for(var i = 2, j = src.length;i < j;i += 2) {
		var nextchar = h2dconvert(src.substring(i,i+2));
		
		nextchar -= shift;
		result += String.fromCharCode(nextchar);
	}
	return result;
}

function decrypt() {
	var l = $(document.body).getElements('.crypted').each(function(el) {
		el.setProperty('href', decryption(el.getProperty('href')));
		el.setText(decryption(el.getText()));
	});	
}

var hexstr = '0123456789abcdef';

function h2dconvert(hexval) {
	var hexvalue = 0;
	if (hexstr.indexOf(hexval.charAt(0)) >= 0) {
		hexvalue += hexstr.indexOf(hexval.charAt(0)) * 16;
	} else {
		return -1;
	}
	if (hexstr.indexOf(hexval.charAt(1)) >= 0) {
		hexvalue += hexstr.indexOf(hexval.charAt(1));
	} else {
		return -1;
	}
	return hexvalue;
}