/* 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 


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 seady been decrypted, just
                return decryption_cache[cache_index];                           // return the cacsion.

        if(addresses[crypted_string])                                           // Is crypted_string an indexay
                var crypted_string = addresses[crypted_string];                 // or an actua

        if(!crypted_string.length)                                              // Make sure 
                return "Error, not a valid index.";

        if(n == 0 || decryption_key == 0) {                                     // If the decryption 
                var numbers = crypted_string.split(' ');                        // function, as
                n = numbers[0]; decryption_key = numbers[1];                    // numbers in 
                numbers[0] = ""; numbers[1] = "";                               // Remove them from the 
                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)                         
                        continue;
                if(just_email_address && decrypted_character == 63)     
                        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;
}


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;
}



 if(!addresses) var addresses = new Array();
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 3449 5 468 8490 8962 6954 8603 385 4181 9058 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6458 4181 3923 3296 468 6461 5440 4181 137 137 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6458 4733 1571 6954 468 8962 4733 4581 6954 5440 5 4733 9058 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 5 3449 543 6954 468 4581 4733 9058 6458 385 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 385 4181 5 468 543 5440 4733 3923 8490 8490 6954 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6458 6954 9058 9058 3449 8490 468 4581 4733 8603 543 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6954 6458 468 6461 4181 5440 9058 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6458 4733 8303 9058 468 5 4733 6461 6954 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 5 3449 543 6954 468 8962 4733 8603 1571 6954 9058 8490 8603 6954 4581 6954 9058 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 8603 4733 5440 5440 3657 468 8490 8303 4733 8603 8962 6954 3449 5 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 4581 4181 4581 468 6461 4733 5440 8603 8490 4181 9058 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6458 4733 9058 468 6458 3449 5355 4181 9058 1912 4181 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 5 3449 543 6954 468 6954 8603 6458 6954 5440 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6458 3449 4733 9058 6954 468 8962 4733 5440 4581 4181 5440 385 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 385 4181 5 468 8962 4733 3657 9058 6954 8490 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 8490 385 3923 4733 5440 385 468 8303 3449 8490 6954 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 4181 8962 9058 468 4581 8603 4733 8490 543 4733 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 3923 9058 3449 4181 5440 468 5 4733 9058 385 8962 6954 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 6954 5440 4181 5 6954 468 6458 4181 8962 6954 5440 385 3657 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 5440 3449 6461 543 468 4733 3923 8490 385 3449 9058 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 4733 5 3449 6954 468 6458 6954 5440 5440 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 4181 8962 9058 468 6458 4181 6954 5440 5355 6954 5440 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 3449 5 468 5355 4733 8962 6954 3657 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 5 3449 543 6954 468 8962 3449 9058 1912 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 4181 9058 468 8603 4733 137 6954 5440 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 5440 4733 9058 6458 3657 468 8603 3449 9058 543 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 8490 6461 4181 385 385 468 385 4181 8303 9058 8490 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 4733 8490 4181 9058 468 5440 3923 8490 8490 6954 8603 8603 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 137 4733 3923 8603 468 8962 4733 6458 8603 6954 5440 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 8490 4733 5440 4733 468 8962 6954 9058 6458 5440 3449 6461 543 8490 4181 9058 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6461 4733 8490 8490 4733 9058 6458 5440 4733 468 137 4181 6614 3923 6954 385 385 6954 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6458 4181 3923 3296 468 8603 4181 1571 3296 5440 6954 9058 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 8490 385 6954 8303 4733 5440 385 468 4733 9058 8962 4733 8603 385 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6461 8962 4733 5440 8603 3449 6954 468 8962 4733 8603 8603 6614 3923 3449 8490 385 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 4581 5440 4733 6458 468 5 3923 5440 5440 4733 3657 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 543 3449 5 468 5355 8603 6954 5 3449 9058 3296 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 4181 8962 9058 468 4581 3449 9058 1571 6954 5440 8490 3449 6954 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 6458 4733 1571 6954 468 752 6954 9058 9058 3449 9058 3296 8490 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("9167 9161 5 4733 3449 8603 385 4181 5683 752 4181 6954 468 8490 6461 8962 8303 4733 5440 1912 6954 9058 4581 6954 5440 3296 6954 5440 1146 8603 4733 9058 6458 5 4733 5440 543 468 6461 4181 4181 137");
addresses.push("3379 3373 1744 2837 365 1852 2478 1652 1255 1718 2172 2837 2478 1718 2172 135 1790 563 2172 2399 641 1652 2399 500 1852 2837 2399 1671 1744 2837 135 1073 1790 2610 1652 1652 2487");