// 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 char2int(z)
{
	if (z==' ') return 0;
	else if (z=='!') return 1;
	else if (z=='"') return 2;
	else if (z=='#') return 3;
	else if (z=='$') return 4;
	else if (z=='%') return 5;
	else if (z=='&') return 6;
	else if (z=='\'') return 7;
	else if (z=='(') return 8;
	else if (z==')') return 9;
	else if (z=='*') return 10;
	else if (z=='+') return 11;
	else if (z==',') return 12;
	else if (z=='-') return 13;
	else if (z=='.') return 14;
	else if (z=='/') return 15;
	else if (z=='0') return 16;
	else if (z=='1') return 17;
	else if (z=='2') return 18;
	else if (z=='3') return 19;
	else if (z=='4') return 20;
	else if (z=='5') return 21;
	else if (z=='6') return 22;
	else if (z=='7') return 23;
	else if (z=='8') return 24;
	else if (z=='9') return 25;
	else if (z==':') return 26;
	else if (z==';') return 27;
	else if (z=='<') return 28;
	else if (z=='=') return 29;
	else if (z=='>') return 30;
	else if (z=='?') return 31;
	else if (z=='@') return 32;
	else if (z=='A') return 33;
	else if (z=='B') return 34;
	else if (z=='C') return 35;
	else if (z=='D') return 36;
	else if (z=='E') return 37;
	else if (z=='F') return 38;
	else if (z=='G') return 39;
	else if (z=='H') return 40;
	else if (z=='I') return 41;
	else if (z=='J') return 42;
	else if (z=='K') return 43;
	else if (z=='L') return 44;
	else if (z=='M') return 45;
	else if (z=='N') return 46;
	else if (z=='O') return 47;
	else if (z=='P') return 48;
	else if (z=='Q') return 49;
	else if (z=='R') return 50;
	else if (z=='S') return 51;
	else if (z=='T') return 52;
	else if (z=='U') return 53;
	else if (z=='V') return 54;
	else if (z=='W') return 55;
	else if (z=='X') return 56;
	else if (z=='Y') return 57;
	else if (z=='Z') return 58;
	else if (z=='[') return 59;
	else if (z=='\\') return 60;
	else if (z==']') return 61;
	else if (z=='^') return 62;
	else if (z=='_') return 63;
	else if (z=='`') return 64;
	else if (z=='a') return 65;
	else if (z=='b') return 66;
	else if (z=='c') return 67;
	else if (z=='d') return 68;
	else if (z=='e') return 69;
	else if (z=='f') return 70;
	else if (z=='g') return 71;
	else if (z=='h') return 72;
	else if (z=='i') return 73;
	else if (z=='j') return 74;
	else if (z=='k') return 75;
	else if (z=='l') return 76;
	else if (z=='m') return 77;
	else if (z=='n') return 78;
	else if (z=='o') return 79;
	else if (z=='p') return 80;
	else if (z=='q') return 81;
	else if (z=='r') return 82;
	else if (z=='s') return 83;
	else if (z=='t') return 84;
	else if (z=='u') return 85;
	else if (z=='v') return 86;
	else if (z=='w') return 87;
	else if (z=='x') return 88;
	else if (z=='y') return 89;
	else if (z=='z') return 90;
	else if (z=='{') return 91;
	else if (z=='|') return 92;
	else if (z=='}') return 93;
	else if (z=='~') return 94;

}

function crypt_string(string, enc_key)
{
	//var pass='MUCHA';
	//var text='mailto:biuro@garder.pl';
	var crypttext= '';

	for (i=0; i<string.length ;i++)
	{
		crypttext += String.fromCharCode(((char2int(string.charAt(i)) + char2int(enc_key.charAt(i%enc_key.length)))%95) + 32);
	}
	return crypttext; 
	alert(crypttext );

}

function decrypt_string(crypted_string,dec_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.";

	var decrypted_string = '';
	for (i=0; i<crypted_string.length ;i++)
	{
		var decrypted_character = char2int(crypted_string.charAt(i)) - char2int(dec_key.charAt(i%dec_key.length))
		decrypted_character= (decrypted_character< 0 ? decrypted_character+=95 : decrypted_character)
		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 + 32);
	}

	decryption_cache[cache_index] = decrypted_string;			// Cache this string for any future calls

	return decrypted_string;
}

function decrypt_and_email(crypted_string,dec_key) {
	if(!dec_key) {dec_key = 'MUCHA';}
	if(!crypted_string) crypted_string = 0;

	var decrypted_string = decrypt_string(crypted_string,dec_key,false);
	parent.location = decrypted_string;
}

function decrypt_and_echo(crypted_string,dec_key) {
	if(!dec_key) {dec_key = 'MUCHA';}
	if(!crypted_string) crypted_string = 0;

	var decrypted_string = decrypt_string(crypted_string,dec_key,true);
	document.write(decrypted_string);
	return true;
}

function crypt_and_echo(string,dec_key) {
	if(!dec_key) {dec_key = 'MUCHA';}
	if(!string) string = 0;

	var crypted_string = crypt_string(string,dec_key);
	document.write(crypted_string);
	return true;
}

// -->
