//emailProtector.js

if(!addresses) var addresses = new Array();

addresses.push("5429 2263 2000 3160 153 2731 664 11 3059 153 80 2894 11");
addresses.push("5429 2263 2000 3160 153 2731 664 11 3059 2894 1980 3160 80 939 4413");
addresses.push("5429 2263 2000 3160 153 2731 664 11 3059 153 664 3160 2731 153 3160");

addresses.push("1007 749 561 735 953 774 678 422 210 953 971 619 422");
addresses.push("1007 749 561 735 953 774 678 422 210 735 590 953 735");
addresses.push("1007 749 561 735 953 774 678 422 210 832 160");
addresses.push("1007 749 561 735 953 774 678 422 210 214 832 703 422 462 214");
addresses.push("1007 749 561 735 953 774 678 422 210 76 214 422");
addresses.push("1007 749 561 735 953 774 678 422 210 50 561 735 971 598 735");
addresses.push("5429 2263 2000 3160 153 2731 664 11 3059 2731 3160"); 

// This script is (c) copyright 2006 Jim Tucek under the
// GNU General Public License (http://www.gnu.org/licenses/gpl.html)
// For more information, visit www.jracademy.com/~jtucek/email/ 
// Leave the above comments alone!

var decryption_cache = new Array();

function decrypt_string(crypted_string,n,decryption_key,just_email_address) {
	var cache_index = "'"+crypted_string+","+just_email_address+"'";

	if(decryption_cache[cache_index])	
		return decryption_cache[cache_index];	

	if(addresses[crypted_string])	
		var crypted_string = addresses[crypted_string];	

	if(!crypted_string.length)	
		return "Error, not a valid index.";

	if(n == 0 || decryption_key == 0) {	
		var numbers = crypted_string.split(' ');
		n = numbers[0];	decryption_key = numbers[1];		
		numbers[0] = ""; numbers[1] = "";				
		crypted_string = numbers.join(" ").substr(2);
	}

	var decrypted_string = '';
	var crypted_characters = crypted_string.split(' ');

	for(var i in crypted_characters) {
		var current_character = crypted_characters[i];
		var decrypted_character = exponentialModulo(current_character,n,decryption_key);
		if(just_email_address && i < 7)	
			continue;
		if(just_email_address && decrypted_character == 63)	
			break;
		decrypted_string += String.fromCharCode(decrypted_character);
	}
	
	decryption_cache[cache_index] = decrypted_string;

	return decrypted_string;
}

function generate_address(index,text) 
{
 		var username = '';
        var domain = "pakter.com";
        var atsign = "&#64;";
		
		username = decrypt_and_echo(index);	

        var addr = username + atsign + domain;
        return(
          "<" + "a" + " " + "href=" + "mail" + "to:" + addr + ">" +
          text +
          "<\/a>");
}

function decrypt_and_echo(crypted_string,n,decryption_key) {
	if(!n || !decryption_key) { n = 0; decryption_key = 0; }
	if(!crypted_string) crypted_string = 0;

	var decrypted_string = decrypt_string(crypted_string,n,decryption_key,true);

	return decrypted_string;
}

function exponentialModulo(base,exponent,y) {
	if (y % 2 == 0) {
		answer = 1;
		for(var i = 1; i <= y/2; i++) {
			temp = (base*base) % exponent;
			answer = (temp*answer) % exponent;
		}
	} else {
		answer = base;
		for(var i = 1; i <= y/2; i++) {
			temp = (base*base) % exponent;
			answer = (temp*answer) % exponent;
		}
	}
	return answer;
}