/* 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("22213 22193 109 12998 12618 4459 14628 16388 4566 13734 3091 64 1665 12618 13734 115 20298 16388 3091 13734 439 20298 16388 109");  // [0] pr - at 
if(!addresses) var addresses = new Array();
addresses.push("9313 9311 5899 9217 4720 2865 7458 1776 8016 4720 2699 752 6844 4720 1331 3212 5295 1776 2699 1331 8656 5295 1776 5899"); // [1] ir - at
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2478 2172 135 135 324 1744 2837 324 500 2655 365 1539 1718 2478 2172 2610 1718 2487 135 1790 2399 2172 2478");  // [2] terrymay - at - Hightechpr.net
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1985 365 2399 2645 1652 500 1539 365 2487 641 2610 1652 135 2487 1790 2610 1652 1744");  // [3]  info - at
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 987 2172 563 2172 1671 365 2837 1852 2478 1671 500 1539 1744 2837 365 1852 1790 2610 1652 1744");  // [4] info - at - webedialtd@gmail.com - Webedia Ltd.
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 365 641 1744 2837 365 1852 1790 2297 678 2297 2399 500 2610 2478 2172 2610 1718 1790 2610 1652 1744 1790 2478 135");  // [5] ismail.uzun - at - ctech.com.tr
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 365 2399 2645 1652 500 365 2399 2478 2172 135 1135 2610 1652 2399 641 2297 1852 2478 1790 365 2478");  // [6] info - at - inter-consult.it
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 365 2399 2645 1652 500 1671 641 2487 1135 365 2487 1790 2610 1652 1744");  // [7] info - at - dsp-ip.com
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 2399 1652 135 563 2172 135 2478 1790 1718 2837 135 1073 2837 1744 500 365 2399 2478 2172 135 2610 1652 1744 2487 1135 1671 2172 1790 2610 1652 1744");  // [8] norbert.harkam - at - intercomp-de.com
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 365 2399 2645 1652 2019 1852 2837 2478 365 2399 2019 2837 1744 2172 135 365 2610 2837 500 1539 365 2487 641 2610 1652 135 2487 1790 2610 1652 1744");  // [9] info_latin_america - at - gipscorp.com
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1073 1652 1744 365 641 641 2837 135 1652 3125 2837 500 2610 1652 135 2487 1790 1744 2837 365 1852 1790 135 2297");  // [10] komissarova - at - corp.mail.ru
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1852 2172 1539 2837 1852 500 1539 365 2487 641 2610 1652 135 2487 1790 2610 1652 1744");  // [11] legal - at - gipscorp.com
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1852 2172 1539 2837 1852 500 1539 1852 1652 563 2837 1852 365 2487 641 1652 2297 2399 1671 1790 2610 1652 1744");  // [12] legal - at - globalipsound.com
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 456 1652 563 641 500 1539 365 2487 641 2610 1652 135 2487 1790 2610 1652 1744");  // [13] jobs - at - gipscorp.com
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 456 1652 563 2019 641 2172 500 1539 365 2487 641 2610 1652 135 2487 1790 2610 1652 1744");  // [14] job_se - at - gipscorp.com
if(!addresses) var addresses = new Array();
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 641 2297 641 2837 2399 2399 2172 1790 563 2172 135 1539 1852 2297 2399 1671 500 1539 365 2487 641 2610 1652 135 2487 1790 2610 1652 1744");  // [15] susanne.berglund - at - gipscorp.com