/* 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 06.09.2010
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2655 1803 2837 1718 365 1852 1852 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539");  // [0] HCahill - at - babcockpc.org
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 427 427 1652 2399 2172 641 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539");  // [1] JJones - at - babcockpc.org
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 229 2645 2645 365 2610 2172 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539");  // [2] Office - at - babcockpc.org
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 3249 2172 563 3080 2172 135 3125 2837 2399 2478 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539");  // [3] WebServant - at - babcockpc.org
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 3249 2172 563 3080 2172 135 3125 2837 2399 2478 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 3080 2172 135 1744 1652 2399 1985 68 1652 987 2399 1852 1652 2837 1671 1985 1683 135 1652 563 1852 2172 1744");  // [4] WebServant - at - babcockpc.org?subject=Sermon Download Problem
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 3249 2172 563 3247 2837 641 2478 2172 135 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539");  // [5] WebMaster - at - babcockpc.org
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 563 2837 563 2610 1652 2610 1073 500 563 2610 2487 1852 1790 2399 2172 2478");  // [6] babcock - at - bcpl.net
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2655 1803 2837 1718 365 1852 1852 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 2338 1985 1718 2837 3125 2172 1985 2033 2297 2172 641 2478 365 1652 2399 1985 2837 563 1652 2297 2478 1985 2478 1718 2172 1985 2338 2399 2033 2297 365 135 2172 3226 641 1985 2610 1852 2837 641 641");  // [7] HCahill - at - babcockpc.org?subject=I have question about the Inquire's class
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 3249 2172 563 3080 2172 135 3125 2837 2399 2478 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 3247 1652 2399 2478 1718 1852 324 1985 555 1135 1868 2172 987 641 1852 2172 2478 2478 2172 135");  // [8] WebServant - Monthly Subject E-Newsletter
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1718 2610 2837 1718 365 1852 1852 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 2338 1985 987 1652 2297 1852 1671 1985 1852 365 1073 2172 1985 1744 1652 135 2172 1985 365 2399 2645 1652 135 1744 2837 2478 365 1652 2399 1985 2837 563 1652 2297 2478 1985 16 2837 563 2610 1652 2610 1073 1985 1683 135 2172 641 1790 1985 1985 1985 987 2172 563");  // [9] hcahill - subject I would like more information about Babcock Pres.   web
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1652 2645 2645 365 2610 2172 500 563 2837 563 2610 1652 2610 1073 2487 2610 1790 1652 135 1539 63 641 2297 563 456 2172 2610 2478 867 2837 2478 2478 2172 2399 2478 365 1652 2399 1255 79 2645 2478 2172 135 641 2610 1718 1652 1652 1852 1985 229 3125 2172 135 641 365 1539 1718 2478 1985 1803 1652 1744 1744 365 2478 2478 2172 2172");   // [10] office - subject attention: Afterschool Oversight Committee
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1744 2172 1652 1852 365 2172 2399 500 2837 1652 1852 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 2338 1985 2837 1744 1985 365 2399 2478 2172 135 2172 641 2478 2172 1671 1985 365 2399 1985 2478 1718 2172 1985 16 2837 563 324 1985 3080 365 2478 2478 365 2399 1539 1985 1803 1852 2837 641 641");  // [11] Emily Baby Sitting Class!

// 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;
}


