// 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();

if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2837 1671 1744 365 2399 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3249 2172 563 641 365 2478 2172");  // [0] admin
addresses.push("1357 851 451 769 104 416 346 1132 1061 927 769 1140 416 1132 451 769 1035 243 451 769 342 104 1029 769 346 1035 989 44 1132 451 359 1035 353 791 927 338 44 346 362 115 1140 406 353 104 1057 676 200 34 1057 1132 451 200 581 769 342 104 1205 769 346 1035 200 358 338 791 200 490 104 346 338");	// [1] Jan
addresses.push("1357 851 451 769 104 416 346 1132 1061 769 1248 451 104 1140 243 451 769 342 104 1029 769 346 1035 989 44 1132 451 359 1035 353 791 927 338 44 346 362 115 1140 406 353 104 1057 676 200 34 1057 1132 451 200 581 769 342 104 1205 769 346 1035 200 358 338 791 200 490 104 346 338"); // [2] Lin
addresses.push("1189 747 208 710 728 561 928 281 116 50 627 509 30 1027 75 564 208 710 36 728 373 710 928 144 1027 75 281 1027 30 373 1008 357 144 30 693 827 627 75 928 1071 345 509 640 30 728 50 1140 665 620 50 281 208 665 1146 710 36 728 969 710 928 144 665 986 627 693 144 728 928 627"); // [3] Renu
addresses.push("1417 1037 109 15 66 1089 675 141 951 800 675 368 306 15 873 66 368 609 295 155 109 15 181 66 295 15 675 800 609 1152 141 609 286 295 917 800 286 596 84 368 1152 675 536 1000 15 181 66 1226 15 675 800 1289 595 873 588 286 66 836 530"); // [4] Stef
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2399 2560 2560 1671 365 500 2837 1652 1852 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3247 2837 1539 365 2285 2837 2478 641 1985 3249 2172 563 641 365 2478 2172"); // [5] Naveed
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 456 2837 2399 2172 1790 987 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3247 2837 1539 365 2285 2837 2478 641 1985 3249 2172 563 1985 3080 365 2478 2172"); // [6] Jane
addresses.push("7811 3053 6773 4967 931 857 4693 4983 6249 5349 3165 857 931 1640 2528 4734 2709 6773 4967 6038 931 7597 4967 4693 4734 2528 188 4983 2528 3165 7597 2127 4734 3165 6328 5349 1640 188 4693 682 3575 5272 7134 3165 931 7391 7104 6187 6398 7391 4983 6773 6187 7083 4967 6038 931 2587 4967 4693 4734 6187 2296 1640 6328 6187 209 931 4693 1640"); // [7] Julie
addresses.push("1357 851 451 769 104 416 346 1132 1061 1035 1268 769 1057 104 338 34 769 989 338 1140 342 416 769 1140 1248 243 1140 346 416 1122 1132 1057 416 1248 989 44 1132 451 359 1035 353 791 927 338 44 346 362 115 1140 406 353 104 1057 676 200 34 1057 1132 451 200 581 769 342 104 1205 769 346 1035 200 358 338 791 200 490 104 346 338"); // [8] Shareifa
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2487 1718 365 1852 1790 641 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3247 2837 1539 365 2285 2837 2478 641 1985 3249 2172 563 1985 3080 365 2478 2172"); // [9] Phil
addresses.push("1357 851 451 769 104 416 346 1132 1061 416 1132 1057 1057 769 104 1140 338 243 1248 44 338 1248 989 44 1132 989 353 1029 359 1035 353 791 927 338 44 346 362 115 1140 406 353 104 1057 676 200 34 1057 1132 451 200 581 769 342 104 1205 769 346 1035 200 358 338 791 200 490 104 346 338"); // [10] Lorraine
addresses.push("1189 747 208 710 728 561 928 281 116 827 30 509 627 1027 719 564 208 710 36 728 373 710 928 144 1027 75 281 1027 30 373 1008 357 144 30 693 827 627 75 928 1071 345 509 640 30 728 50 1140 665 620 50 281 208 665 1146 710 36 728 969 710 928 144 665 986 627 693 144 728 928 627"); // [11] June
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1852 1671 135 1652 563 2172 135 2478 641 500 2297 987 2610 1852 2297 563 1790 2399 2172 2478 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3247 2837 1539 365 2285 2837 2478 641 1985 3249 2172 563 641 365 2478 2172");  // [12] Lesley
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2478 365 1744 1652 2478 1718 324 1790 2610 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3247 2837 1539 365 2285 2837 2478 641 1985 3249 2172 563 1985 3080 365 2478 2172"); // [13] Tim
addresses.push("5977 4637 1092 5047 2008 3737 5473 2002 4467 3810 2002 4578 253 5206 4835 2008 1776 253 1533 840 3659 1092 5047 2577 2008 2670 5047 5473 4578 1533 3385 2002 1092 3509 4578 1600 5581 3810 253 3385 5473 4362 5851 1776 4236 1600 2008 5380 5975 5531 3977 5380 2002 1092 5531 4075 5047 2577 2008 4542 5047 5473 4578 5531 861 253 5581 4578 2008 5473 253"); // [14] Josephine
addresses.push("3053 1871 2562 193 1233 2459 20 2575 805 1007 1665 2508 1233 2508 1665 1750 20 2099 2562 193 2604 1233 981 193 20 205 1750 840 2575 2562 2603 2254 205 1608 1144 1007 1665 840 20 2327 2212 2508 383 1608 1233 12 2849 2817 2111 12 2575 2562 2817 1895 193 2604 1233 3032 193 20 205 2817 1506 1665 1144 205 1233 20 1665"); // [15] Jenine
addresses.push("3053 1871 2562 193 1233 2459 20 2575 805 20 1665 840 981 1750 243 2099 2562 193 2604 1233 981 193 20 205 1750 840 2575 2562 2254 205 1608 1144 1007 1665 840 20 2327 2212 2508 383 1608 1233 12 2849 2817 2111 12 2575 2562 2817 1895 193 2604 1233 3032 193 20 205 2817 1506 1665 1144 205 1233 20 1665"); // [16] Tech
addresses.push("6557 5117 2997 4549 1988 1090 1391 2974 1068 3162 3227 542 4613 1090 1049 6424 289 2997 4549 4085 1988 2509 4549 1391 603 1049 1448 2974 2997 1808 603 3382 3162 2349 3227 1448 1391 2245 3253 6424 1418 3382 1988 542 4613 2263 292 542 2974 2997 2263 1391 2410 3227 2263 2101 4549 4085 1988 3005 4549 1391 603 2263 3913 3227 3162 603 1988 1391 3227"); // [17] Beryl
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 641 1718 135 2297 2478 365 1790 2487 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1744 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 3247 2837 1539 365 2285 2837 2478 641 1985 3249 2172 563 641 365 2478 2172"); // [18] Shruti
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 135 365 2610 1073 1852 1652 1744 2837 641 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 3247 2837 1539 365 2285 2837 2478 641");   // [19] ricklomas
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2837 1852 2172 418 2837 2399 1671 135 2837 1790 641 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3249 2172 563 641 365 2478 2172");  // [20] alex
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 135 365 2610 1718 2837 135 1671 1790 2610 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3249 2172 563 641 365 2478 2172");  // [21] richard.c
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1671 2172 563 563 365 2172 1790 2478 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3249 2172 563 641 365 2478 2172");  // [22] debbie.t
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 456 2837 2399 1790 563 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3249 2172 563 3080 365 2478 2172");  // [23] jan ball
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2837 2399 1539 365 2172 1790 987 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1744 1790 2837 2297 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3249 2172 563 3080 365 2478 2172");  // [24] angie.w
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2399 2297 2478 2837 2399 1790 2610 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3249 2172 563 3080 365 2478 2172");  // [25] nutan.c
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 641 2297 2172 1790 1744 500 1744 2837 1539 365 1073 2837 2478 641 1790 2610 1652 1790 2297 1073 63 641 2297 563 456 2172 2610 2478 867 555 2399 2033 2297 365 135 324 1985 2645 135 1652 1744 1985 2478 1718 2172 1985 3249 2172 563 3080 365 2478 2172");  // [26] sue.m

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);
//	the next two lines are from the original code
//	document.write(decrypted_string);
//	return true;

	return decrypted_string ;
}

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