/*
 *
 *
 * Dereferer-Dienst von Twinmail.de
 *
 *
 * Standardmässig sind keine Links geschützt. D.H. Alle
 * Links werden verschlüsselt. Alle Adressen, die nicht
 * verschlüsselt werden sollen, müssen im string "protectedLinks"
 * mit Komma getrennt, eigetragen werden.
 *
 * Z.B. Es sollen alle links zum metager.de und zu yahoo.de
 * nicht verschlüsselt werden:
 * var protectedLinks="metager.de, yahoo.de";
 */
cripple();

/*
 * Alle links des Dokuments suchen und ggf den href ändern
 */
function cripple() {
	/*
	 * Einige Kostanten
	 */
	var space=String.fromCharCode(32);
	var cripplePrefix="http://twinmail.de?";
	
	/*
	 * Bereits verschlüsselte Links in die protectedLinks
	 * mit aufnehmen
	 */
	if((typeof protectedLinks == "undefined")||(protectedLinks=="")) {
		protectedLinks=cripplePrefix;
	}else{
		protectedLinks+=","+cripplePrefix; 
	}

	/*
	 * Name des Host ermitteln und in die
	 * Liste der protectedLinks einfügen, denn
	 * Links auf die eigene Site sollen nicht
	 * anonymisiert werden.
	 */
	var hostName=window.location.hostname;
	if(hostName!=""){
		protectedLinks+=","+hostName;
	}

	/*
	 * Array mit allen protectedLinks aufbauen
	 */
	protectedLinks=protectedLinks.replace(space,"");
	var protectedLinksArray=new Array();
	protectedLinksArray=protectedLinks.split(",");
	var countProtectedLinks=protectedLinksArray.length;
		
	/*
	 * Über alle Links iterieren
	 * und ggf. verschlüsseln. Dabei wird die Liste der
	 * protectedLinks beachtet.
	 */
	var allAcors=document.getElementsByTagName("a");
	var countAncors=allAcors.length;
	var protectedAncor=false;
	var j=0;
	var hotAconcorRef="";
	
	for(var i=0;i<countAncors;i++) {
		protectedAncor=false;
		hotAconcorRef=allAcors[i].href;
		j=0;
		
		/*
		 * Festlegen ob dieser Ancor in der liste
		 * der geschützten Links enthalten ist.
		 * Ein link dar dann nicht übersetzt werden, wenn
		 * 1. Ein passender eintrag in den protectedLinks besteht.
		 * 2. Der Link ein verweis auf der selben Site ist.
		 * 3. der Link kein http:// enthällt.
		 */
		while(protectedAncor==false&&j<countProtectedLinks){
			protectedAncor= 
				(hotAconcorRef.match(protectedLinksArray[j]))
				||(!hotAconcorRef)
				||(!hotAconcorRef.match("http://"));
			j++;
		} 
		
		/*
		 * Ist ein Link nicht protected, wird er verschlüsselt.
		 */
		if(!protectedAncor){
			allAcors[i].href=cripplePrefix+hotAconcorRef;
		}
	}
}
		