//
// mailProtect.js
//
// Diese JavaScript-Datei enthält folgende Funktionen:
//
//		goForth(c, n, d)
//		goForthArg(c, n, d, p)
//		showText(c, n, d)
//		showTextArg(c, n, d, p)
//		decrypt(c, n, d)
//		setStatus(c, n, d)
//		setStatusArg(c, n, d, p)
//
////////////////////////////////////////////////////////////////////////////////
// Speaking of Java, this particular script is (C) Copyright 2002 Jim Tucek
// If you wish to use my Email Encryption script, these comments must be left
// alone!  That is all.

// Visit www.jracademy.com/~jtucek/ for script information and a bit of help
// setting it up, or www.jracademy.com/~jtucek/email.html for contact
// information.

// A brief history of this script can be found (and it's rather entertaining)
// at www.jracademy.com/~jtucek/eencrypt.html

function goForth(c, n, d)
{
	c += ' ';

	var length = c.length;
	var number = 0;
	var bar = 0;
	var answer = '';

	for (var i = 0; i < length; i++)
	{
		number = 0;
		bar = 0;

		while (c.charCodeAt(i) != 32)
		{
			number = number * 10;
			number = number + c.charCodeAt(i) - 48;
			i++;
		}

		answer += String.fromCharCode(decrypt(number, n, d));
	}

	// Updated security feature
	if (top != self && top.frames.length > 0)
	{
		// we have frames
		winobj = window.top;
	}
	else
	{
		// without frames, we can take the original code
		winobj = parent;
	}

	winobj.location = 'm' + 'a' + 'i' + 'l' + 't' + 'o' + ':' + answer;
}

function goForthArg(c, n, d, p)
{
	c += ' ';

	var length = c.length;
	var number = 0;
	var bar = 0;
	var answer = '';

	for (var i = 0; i < length; i++)
	{
		number = 0;
		bar = 0;

		while (c.charCodeAt(i) != 32)
		{
			number = number * 10;
			number = number + c.charCodeAt(i) - 48;
			i++;
		}

		answer += String.fromCharCode(decrypt(number, n, d));
	}

	// Updated security feature
	if (top != self && top.frames.length > 0)
	{
		// we have frames
		winobj = window.top;
	}
	else
	{
		// without frames, we can take the original code
		winobj = parent;
	}

	winobj.location = 'm' + 'a' + 'i' + 'l' + 't' + 'o' + ':' + answer + p;
}

function showText(c, n, d)
{
	c += ' ';

	var length = c.length;
	var number = 0;
	var bar = 0;
	var answer = '';

	for (var i = 0; i < length; i++)
	{
		number = 0;
		bar = 0;

		while (c.charCodeAt(i) != 32)
		{
			number = number * 10;
			number = number + c.charCodeAt(i) - 48;
			i++;
		}

		document.write('&');
		document.write('#');
		document.write(decrypt(number, n, d));
	}
}

function showTextArg(c, n, d, p)
{
	c += ' ';

	var length = c.length;
	var number = 0;
	var bar = 0;
	var answer = '';

	for (var i = 0; i < length; i++)
	{
		number = 0;
		bar = 0;

		while (c.charCodeAt(i) != 32)
		{
			number = number * 10;
			number = number + c.charCodeAt(i) - 48;
			i++;
		}

		document.write('&');
		document.write('#');
		document.write(decrypt(number, n, d));
	}

	document.write(p);
}

function decrypt(c, n, d)
{
	// Split exponents up
	if (d % 2 == 0)
	{
		bar = 1;

		for (var i = 1; i <= d / 2; i++)
		{
			foo = (c * c) % n;
			bar = (foo * bar) % n;
		}
	}
	else
	{
		bar = c;

		for (var i = 1; i <= d / 2; i++)
		{
			foo = (c * c) % n;
			bar = (foo*bar) % n;
		}
	}

	return bar;
}

function setStatus(c, n, d)
{
	c += ' ';

	var length = c.length;
	var number = 0;
	var bar = 0;
	var answer = '';

	for (var i = 0; i < length; i++)
	{
		number = 0;
		bar = 0;

		while (c.charCodeAt(i) != 32)
		{
			number = number * 10;
			number = number + c.charCodeAt(i) - 48;
			i++;
		}

		answer += String.fromCharCode(decrypt(number, n, d));
	}

	// Updated security feature
	answer = 'm' + 'a' + 'i' + 'l' + 't' + 'o' + ':' + answer;
	window.status = answer;

	return true;
}

function setStatusArg(c, n, d, p)
{
	c += ' ';

	var length = c.length;
	var number = 0;
	var bar = 0;
	var answer = '';

	for (var i = 0; i < length; i++)
	{
		number = 0;
		bar = 0;

		while (c.charCodeAt(i) != 32)
		{
			number = number * 10;
			number = number + c.charCodeAt(i) - 48;
			i++;
		}

		answer += String.fromCharCode(decrypt(number, n, d));
	}

	if (p.length > 0)
	{
		var first = p.charAt(0);

		// evtl. Erweiterungen in Differenzierung der beiden ersten Zeichen
		if (first == '%' || first == '@')
		{
			answer = answer.replace(/@/,"*");
			p = p.substr(1, p.length - 1);
		}
	}

	// Updated security feature
	answer = 'm' + 'a' + 'i' + 'l' + 't' + 'o' + ':' + answer + p;
	window.status = answer;

	return true;
}

