/* EMAIL ENCRYPTION SCRIPT */

// This script is (c) copyright 2008 by Dan Appleman under the
// GNU General Public License (http://www.gnu.org/licenses/gpl.html)
// This script is modified from an original script by Jim Tucek
// For more information, visit www.danappleman.com 
// Leave the above comments alone!
// see encryption_instructions.txt for explanation of usage
// Begin JRP email encription
// version 05.25.2010
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1718 2837 1744 2487 2478 1652 2399 2487 1652 1652 1852 2837 641 641 1652 2610 365 2837 2478 365 1652 2399 500 1539 1744 2837 365 1852");  // [0] pool gmale
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1744 2172 1744 563 2172 135 641 1718 365 2487 500 1718 2837 1744 2487 2478 1652 2399 2487 1652 1652 1852 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 2655 1683 79 1985 1683 1652 1652 1852 1985 3247 2172 1744 563 2172 135 641 1718 365 2487");  // [1] membership at hpa
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 987 2172 563 641 2172 135 3125 2837 2399 2478 500 1718 2837 1744 2487 2478 1652 2399 2487 1652 1652 1852 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 1803 1652 1744 1744 2172 2399 2478 641 1985 2837 2399 1671 1985 3080 2297 1539 1539 2172 641 2478 365 1652 2399 641 1985 2837 563 1652 2297 2478 1985 1718 2837 1744 2487 2478 1652 2399 2487 1652 1652 1852 1790 1652 135 1539");  // [2] the servant at hpa
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2837 1718 2837 2399 2172 641 500 2645 135 365 2172 2399 1671 641 563 2837 1852 2478 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 2033 2297 2172 641 2478 365 1652 2399 641 1255");  // [3] andy school
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1852 1718 2837 135 1852 2837 2399 500 2478 2172 2610 2610 1073 365 1671 641 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 1560 1652 1985 2655 2837 1744 2487 2478 1652 2399 1985 2655 2837 1744 1744 2172 135 1718 2172 2837 1671 641 469 1985 1985 1803 1652 2837 2610 1718 1985 1166 365 678");  // [4] Coach LH - tkorg
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2610 2837 2487 1652 135 2478 2172 135 367 1531 500 324 2837 1718 1652 1652 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 1560 1652 1985 2655 2837 1744 2487 2478 1652 2399 1985 2655 2837 1744 1744 2172 135 1718 2172 2837 1671 641 469 1985 1985 1803 1652 2837 2610 1718 1985 1803 1652 135 365");  // [5] Coach CP -ycom
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 563 1852 2297 1744 1931 1531 1931 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 1560 1652 1985 2655 2837 1744 2487 2478 1652 2399 1985 2655 2837 1744 1744 2172 135 1718 2172 2837 1671 641 469 1985 1985 1803 1652 2837 2610 1718 1985 2594 2837 324 1852 1652 135 1985 1484 16 1852 2297 1744 2480");  // [6] Coach TB - vnet
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2610 1652 2399 2399 365 2172 3125 1652 1852 1073 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2655 1683 79 1985 3080 987 365 1744 1985 2594 2172 2837 1744 1985 1803 1652 1652 135 1671 365 2399 2837 2478 1652 135 1985 1985 1803 1652 2399 2399 365 2172 1985 2235 1652 1852 1073");  // [7] connie v team co 1 at vet
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 987 2172 563 641 2172 135 3125 2837 2399 2478 500 1718 2837 1744 2487 2478 1652 2399 2487 1652 1652 1852 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 1683 1852 2837 2610 2172 1718 1652 1852 1671 2172 135");  // [8] the servant at hpa Placeholder
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 563 1852 2297 1744 1931 1531 1931 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2655 1683 79 1985 3080 987 365 1744 1985 2594 2172 2837 1744 1985 1803 1652 1652 135 1671 365 2399 2837 2478 1652 135");  // [9] JB team co 2at vnet 
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1539 2172 2172 1073 563 365 1073 2172 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [10] Board Joe at vnet
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 641 2610 1652 2478 2478 2645 135 2172 2399 2610 1718 500 2837 1652 1852 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [11] Board Scott at aol
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2399 2837 2399 1790 2399 2172 2172 1852 324 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [12] Board nan at vnet
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 456 1652 1718 2399 135 2487 2172 2837 135 641 1652 2399 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [13] Board JP at vnet 
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 641 1718 2172 2399 2837 641 1073 324 500 1744 641 2399 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [14] Board JS at m$n
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2478 563 1852 2837 365 135 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [15] Board Tom at vnet
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 563 2487 2610 2837 135 2478 2172 135 2757 1464 500 2610 1652 1744 2610 2837 641 2478 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [16] bc at ccast net
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1073 1852 2172 2837 2478 1718 2172 135 987 1652 1652 1671 500 1718 1652 2478 1744 2837 365 1852 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [17] board ml at  hotm 
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2487 2837 1744 2172 1852 2837 1790 2645 1652 135 2172 641 1744 2837 2399 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [18] board pfm at vnet
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2610 1671 2172 135 2399 2172 2478 678 500 1744 641 2399 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 16 1652 2837 135 1671");  // [19] chris d - ms$ftcom
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 135 2172 2837 1852 2478 1652 135 456 2837 2399 1931 1464 2560 500 324 2837 1718 1652 1652 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852 1985 2594 135 2172 2837 641 2297 135 2172 135");  // [20] Board Janis at ycom 
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1539 2172 2172 1073 563 365 1073 2172 500 3125 2172 135 365 678 1652 2399 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 2235 1652 1852 2297 2399 2478 2172 2172 135 1985 2399 2172 2172 1671 641 1985 2837 2478 1985 2655 2837 1744 2487 2478 1652 2399 1985 1683 1652 1652 1852");  // [21] joe Volunteer needs

// End JRP Email encription

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])					// If this string has already been decrypted, just
		return decryption_cache[cache_index];				// return the cached version.

	if(addresses[crypted_string])						// Is crypted_string an index into the addresses array
		var crypted_string = addresses[crypted_string];			// or an actual string of numbers?

	if(!crypted_string.length)						// Make sure the string is actually a string
		return "Error, not a valid index.";

	if(n == 0 || decryption_key == 0) {					// If the decryption key and n are not passed to the
		var numbers = crypted_string.split(' ');			// function, assume they are stored as the first two
		n = numbers[0];	decryption_key = numbers[1];			// numbers in crypted string.
		numbers[0] = ""; numbers[1] = "";				// Remove them from the crypted string and continue
		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)				// Skip 'mailto:' part
			continue;
		if(just_email_address && decrypted_character == 63)	// Stop at '?subject=....'
			break;
		decrypted_string += String.fromCharCode(decrypted_character);
	}
		decryption_cache[cache_index] = decrypted_string;			// Cache this string for any future calls

	return decrypted_string;
}

function decrypt_and_email(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,false);
	parent.location = decrypted_string;
}

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);
	document.write(decrypted_string);
	return true;
}

// Finds base^exponent % y for large values of (base^exponent)
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;
}

