//<script language="JavaScript">
// 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 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;
}

function decrypt_and_paypal(crypted_string,n,decryption_key,item_number,item_name,amount,shipping) {
	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);
	// Construct the paypal url. Change the email address and currency code as appropriate 
	var url = "https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business="
	url=url + decrypted_string
	url=url + "&currency_code=USD" 
	url = url + "&lc=US";
	url = url + "&charset=UTF%2d8";
	// Append the item and amount parts of the url 
	url = url + "&item_name=" + item_name; 
	url = url + "&item_number=" + item_number; 
	url = url + "&amount=" + amount; 
	url = url + "&shipping=" + shipping;
	url = url + "&no_shipping=2";
	url = url + "&cn=Phone%20Number";
	url = url + "&return=http://www.ohmigallery.com/Sales/PayPal-Payment_Received.htm"
	url = url + "&http://www.ohmigallery.com/Sales/PayPal-Transaction_Cancelled.htm"
	// Launch the web page. true means "open in a new browser window" 
	//app.launchURL("http://www.koitsu.com", true); 
	parent.location = url;
}


// 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;
}
// </script> 
//<script language="JavaScript">
if(!addresses) var addresses = new Array();
//og-01
//addresses.push("5963 3485 94 105 3983 1543 1306 2223 3395 2223 5456 94 3983 887 105 1543 1543 2925 456 2500 3090 4978 1976 2303 4637 2223 3983 1306 3169 2218 956 765 2223 94 1587");
//og-03
addresses.push("21293 12593 2921 1115 4355 3532 1376 4020 43 4020 6926 2921 4355 1116 1115 3532 3532 3459 14453 16734 2987 11930 14772 21006 9844 4020 4355 1376 12438 15149 17080 20839 4020 2921 9312");
//ross-01
addresses.push("5963 3485 94 105 3983 1543 1306 2223 3395 456 2223 3169 3169 3090 4978 1976 2303 4637 2223 3983 1306 3169 2218 956 765 2223 94 1587");
//</script>
