/* 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

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;
}

// Remove the comments below to improve spam resistance! 
// email addresses: 

 if(!addresses) var addresses = new Array();
 
addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 14368 6874 2543 2543 15878 10233 7419 4423 15878 2543 2543 7514 10233 10060 15878 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [0] hollis.gillespie

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 97 2543 15878 16217 15878 97 7419 13353 6874 15731 15731 7514 4423 6874 14897 10060 15878 7514 15731 16217 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [1] alicia.borrego-pierce

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 100 7514 9932 15878 10233 7514 7419 14368 15878 100 97 2543 4423 6874 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [2] denise.hidalgo

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 15731 6874 13353 7514 15731 17477 7419 10105 9932 4423 9932 97 100 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [3] robert.ungnade

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 15731 6874 16268 97 9932 9932 7514 7419 119 15878 17477 17477 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [4] roxanne.witt

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10233 14368 7514 15731 15878 16217 7514 7419 10060 97 100 15878 2543 2543 97 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [5] sherice.padilla

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 15731 97 16217 14368 7514 2543 7419 10060 7514 15731 15731 7514 17477 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [6] rachel.perret

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10233 14368 7514 15878 2543 97 7419 13353 7514 100 9932 97 15731 10233 4686 15878 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [7] sheila.bednarski

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 15731 15878 10233 7419 10233 97 9932 16217 14368 7514 122 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [8] chris.sanchez

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 5649 7514 10233 10233 15878 16217 97 7419 10233 97 10060 10105 9932 97 15731 14897 5649 10105 15731 10233 15878 16217 14368 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [9] jessica.sapunar-jursich

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 5649 97 6868 9932 7514 7419 97 10105 13353 7514 2543 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [10] jayne.aubele

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 13353 15731 15878 97 9932 9932 7514 7419 10233 15878 10233 9932 7514 15731 6874 10233 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [11] brianne.sisneros

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 7514 15878 2543 7514 7514 9932 11822 7419 7514 9276 7514 15731 7514 17477 17477 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [12] eileenm.everett 

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 97 15731 6874 2543 6868 9932 7419 4423 15731 7514 4423 6874 15731 6868 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [13] carolyn.gregory

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 14368 7514 97 17477 14368 7514 15731 7419 11822 97 16217 16217 10105 15731 100 6868 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [14] heather.maccurdy

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 17477 15878 10233 14368 7419 11822 6874 15731 15731 15878 10233 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [15] tish.morris

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 11822 15878 16217 14368 97 7514 2543 7419 10233 97 9932 16217 14368 7514 122 7422 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [16] michael.sanchez

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 97 10105 4423 10105 10233 17477 7419 119 97 15878 9932 119 15731 15878 4423 14368 17477 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [17] august.wainwright

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10060 97 10105 2543 7419 11822 97 10105 7514 15731 11822 97 9932 9932 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [18] paul.mauermann

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10233 10105 10233 97 9932 7419 100 97 9276 15878 10233 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [19] susan.davis

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 15731 15878 10233 7419 11822 6874 100 7514 2543 10233 4686 15878 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [20] chris.modelski

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10233 10060 7514 9932 16217 7514 15731 7419 2543 10105 16217 97 10233 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [21] spencer.lucas

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 4423 97 15731 6868 7419 11822 6874 15731 4423 97 9932 7422 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [22] gary.morgan1

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 17477 14368 6874 11822 97 10233 7419 119 15878 2543 2543 15878 97 11822 10233 6874 9932 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [23] thomas.williamson

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 2543 97 15731 15731 6868 7419 16217 15731 10105 11822 10060 2543 7514 15731 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [24] larry.crumpler

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10060 97 17477 15731 15878 16217 15878 97 7419 4423 7514 4423 15878 16217 4686 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [25] patricia.gegick

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10008 15731 15878 97 9932 7419 11844 15731 97 16217 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [26] Brian.Grace

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 11170 10105 10233 17477 15878 9932 7419 4662 10060 15878 7514 2543 11822 97 9932 9932 7422 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [27] Justin.Spielmann

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 2543 97 15731 15731 6868 7419 15731 15878 9932 7514 14368 97 15731 17477 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [28] larry.rinehart

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 6975 119 97 6868 9932 7514 7419 4476 2543 15878 13353 97 15731 15731 15878 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [29] Dwayne.Ulibarri

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10055 14368 97 15731 2543 7514 10233 7419 10055 6874 11822 10060 17477 6874 9932 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [30] Charles.Compton

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 5649 6874 10233 7514 10060 14368 7419 2543 6874 9932 4423 10233 14368 6874 15731 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [31] joseph.longshore

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 100 97 9276 15878 100 7419 13353 97 16217 16217 97 100 10105 17477 15731 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [32] david.baccadutre

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 15731 15878 10233 7419 7514 2543 2543 15878 10233 6874 9932 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [33] chris.ellison

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 5649 97 9932 7514 17477 7419 14368 7514 9276 7514 6868 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [34] janet.hevey

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 15731 15878 10233 17477 15878 7514 7419 4423 15731 6874 10233 10233 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [35] christie.gross

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 11822 15878 4686 7514 7419 10060 15878 7514 15731 16217 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [36] mike.pierce

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 15731 10105 100 6868 7419 100 6874 11822 15878 9932 4423 10105 7514 122 11277 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [37] rudy.dominguez

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 100 97 9932 15878 7514 2543 7419 10233 7514 16217 15731 15878 10233 17477 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [38] daniel.secrist

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10060 7514 100 15731 6874 7419 17477 6874 2543 7514 100 6874 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [39] pedro.toledo

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 9276 15878 16217 17477 6874 15731 7419 4423 6874 11822 7514 122 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [40] victor.gomez

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 15731 15878 10233 7419 16217 97 15731 15731 15878 2543 2543 6874 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [41] chris.carrillo

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 5649 6874 10233 7514 10060 14368 7419 11822 97 15731 17477 15878 9932 7514 122 7422 11277 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [42] joseph.martinez

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 5649 6874 14368 9932 7419 4423 10105 15731 10105 2543 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [43] john.gurule

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 9932 15878 16217 4686 7419 15731 6874 10233 7514 17477 17477 97 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [44] nick.rosetta

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 4423 97 15731 6868 7419 15731 10105 9932 6868 97 9932 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [45] gary.runyan

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 13353 10105 17477 16217 14368 7419 13353 15731 6874 9932 10233 6874 9932 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [46] butch.bronson

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 7514 10233 17477 7514 15731 7419 2543 97 119 15731 7514 9932 16217 7514 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [47] chester.lawrence

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 13353 15878 2543 2543 6868 7419 10233 97 9932 16217 14368 7514 122 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [48] billy.sanchez

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10233 14368 97 15731 6874 9932 7419 16217 14368 15731 15878 10233 17477 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [49] sharon.christ

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 15731 6874 9932 97 2543 100 7419 97 10060 6874 100 97 16217 97 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [50] ronald.apodaca

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 100 97 9276 15878 100 7419 11822 6874 6868 97 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [51] david.moya

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 15731 15878 10233 7419 9276 97 15731 7514 2543 97 7422 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [52] chris.varela

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 97 9932 17477 14368 6874 9932 6868 7419 10060 97 100 15878 2543 2543 97 7422 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [53] anthony.padilla

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 15731 15878 10233 7419 10233 97 15878 122 7422 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [54] chris.saiz

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 16217 14368 97 15731 2543 7514 10233 7419 10233 10105 11822 11822 7514 15731 10233 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [55] charles.summers

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 11822 15878 16217 14368 97 7514 2543 7419 10060 15878 2543 16217 14368 7514 15731 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [56] michael.pilcher

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 11822 97 15731 17477 15878 9932 7419 2543 6874 13353 97 17477 6874 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [57] martin.lobato

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 5649 97 16217 4686 7419 15731 15878 16217 14368 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [58] jack.rich

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 11822 97 17477 17477 7419 16217 7514 2543 7514 10233 4686 7514 6868 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [59] matt.celeskey

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 9932 11822 11822 9932 14368 10233 7419 15878 9932 11065 6874 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [60] nmmnhs.info

addresses.push("17593 17581 11822 97 15878 2543 17477 6874 8734 10233 11822 9932 14368 16217 7419 9932 11822 11822 9932 14368 10233 64 10233 17477 97 17477 7514 7419 9932 11822 7419 10105 10233");  // [61] smnhc.nmmnhs 