/* Spam-me-not.js - JavaScript source of Spam-me-not. */

/* Encode email addresses to make it harder for Spammers to harvest them. */

/* Copyright (c) 2003 by Andreas Neudecker */
/* Licensed under the GNU General Public License (GPL), see http://www.gnu.org/copyleft/ */
/* Last changes: 2007-08-10 by Andreas Neudecker */

/* This is where the real encoding is done */
function encodeString( originalString, mode ) {
	var encodedString = "";
	var nowCodeString = "";
	var randomNumber = -1;
	var originalLength = originalString.length;
	for ( var i = 0; i < originalLength; i++ ) {
		switch ( mode ) {
			case 1:	// Decimal code:
				nowCodeString = "&#" + Number( originalString.charCodeAt( i ) ).toString() + ";";
			break;
			case 2: // Hexadecimal code:
				nowCodeString = "&#x" + Number( originalString.charCodeAt( i ) ).toString( 16 ) + ";";
			break;
			case 3: // Random encoding - which mode now?
				randomNumber = Math.ceil( 2 * Math.random() );
				switch ( randomNumber ) {
					case 1: // Random encoding - decimal code:
						nowCodeString = "&#" + Number( originalString.charCodeAt( i ) ).toString() + ";";
					break;
					case 2: // Random encoding - hexadecimal code:
						nowCodeString = "&#x" + Number( originalString.charCodeAt( i ) ).toString( 16 ) + ";";
					break;
					default:
						return( "ERROR: wrong random number." );
					break;
				}
			break;
			case 4: // URL encoding for e-mail in mailto link
			        // DO NOT USE FOR HTML code!
				nowCodeString = "%" + Number( originalString.charCodeAt( i ) ).toString( 16 );
			break;
			case 5: // Don't encode, use character itself:
				nowCodeString = originalString.charAt( i );
			break;
			default:
				return( "ERROR: wrong encoding mode." );
			break;
		}
		encodedString += nowCodeString;
	}
	return (encodedString);
}


/* The "main()" of this script */
function obfuscateEmail(emailLink) {
	var mailto = "mailto:";
	var aHref = "\<a href=\"";
	var aHrefEnd = "\">";
	var endHref = "\<\/a>";
	var mode = Number(4);
	var encodedMailto = "";

	// generate encoded "mailto:"
	if ( mode == 4 )
		encodedMailto = encodeString( mailto, 3 );
	else
		encodedMailto = encodeString( mailto, mode );

	var oriEmail = emailLink;
	if ( oriEmail != "" ) {
		var encodedEmail = encodeString( oriEmail, mode );
		// email only
		//document.nospam.encodedEmail.value = encodedEmail;
		// mailto: + email
		//document.nospam.encodedMailtoEmail.value = encodedMailto + encodedEmail;
		// complete link
		//if ( Number( document.nospam.linkText.value ) == 1 )
		//	document.nospam.completeEmailLink.value = aHref + encodedMailto + encodedEmail + aHrefEnd + encodeString( oriEmail, 3 ) + endHref;
		//else
		return (aHref + encodedMailto + encodedEmail + aHrefEnd + /*document.nospam.realName.value*/emailLink + endHref);
		//document.nospam.completeEmailLink.value = aHref + encodedMailto + encodedEmail + aHrefEnd + document.nospam.realName.value + endHref;
		
	}
}

// END OF SOURCE ---------------------------------------------------------------


