// The following javascript code is Copyright (c) 2004 Charles R. Estabrooks
// You are granted a license to use this javascript in your
// web site as long as it remains as-is including the
// copyright notice.  The author asks for a contribution
// of $10 or more to support further development. Funds
// may be transmitted via Paypal. Please visit
// www.estabrooks.org for Paypal ID and contact info
//
// seeds used: "P" - twenty-three "Q" fifty-three.  Be sure to use the same seeds
// when encrypting any text to be used with these javascripts
//
//
// 12-19-06 Added an extra argument to writecrypt/writeclear functions
//			Now you can pass a clear string which will be concatenated to the 
//			encrypted/decrypted string. This is useful for example to include a ?subject=foobar
//			when issuing the "mailto" call.
//
// The writecrypt() function scans the encrypted string, decrypts
// it and writes it to a new page, which is the '&#109;&#097;&#105;&#108;&#116;&#111;:' call
//
//		writecrypt(string, key1, key2, string);
//
function writecrypt(foo,key1,key2,bar) {
        foo += ' ';
        var len = foo.length;
        var digit = 0;
        var newstr = '';
        for(var inc = 0; inc < len; inc++) {
                digit = 0;
                while(foo.charCodeAt(inc) != 32) {
                        digit = digit * 10;
                        digit = digit + foo.charCodeAt(inc)-48;
                        inc++;
                }
                newstr += String.fromCharCode(decrypt(digit,key1,key2));
        }
        parent.location = 'm'+'a'+'i'+'l'+'t'+'o'+':'+newstr+bar;
}

//
// The writeclear() function scans the encrypted string, decrypts
// it and writes it to the HTML document.
//
//      writeclear(string, key1, key2);
//

function writeclear(foo,key1,key2,bar) {
        foo += ' ';
        var len = foo.length;
        var digit = 0;
        for(var inc = 0; inc < len; inc++) {
                digit = 0;
                while(foo.charCodeAt(inc) != 32) {
                        digit = digit * 10;
                        digit = digit + foo.charCodeAt(inc)-48;
                        inc++;
                }
                //document.write('&');
                //document.write('#');
                //document.write(decrypt(digit,key1,key2));
                document.write(String.fromCharCode(decrypt(digit,key1,key2))+bar);
        }
}
//
// The decrypt() function takes the encrypted string and
// two keys as arguments and returns the ASCII code of the
// decrypted character
//
// decrypt(string, key1, key2);
//
//

function decrypt(source,key1,key2) {
        holder = (source*source) % key1;
        result = Math.pow(source,(key2 % 2));
        for (var i=1; i<= key2/2; i++) {
                result = (holder*result) % key1;
        }
        return result;
}
