﻿/* Kleine Unicode-Funktionen
 © Jürgen Auer, Berlin, 2004-11-11
*/

function set_err(output) {
	if (output.length > 0) {
		document.getElementById('errbox').childNodes[0].data = output;
		document.getElementById('errstatus').bgColor = '#800000';
	} else {	document.getElementById('errbox').childNodes[0].data = String.fromCharCode(160);
		document.getElementById('errstatus').bgColor = '#008000';}
}

// Umrechnung von int nach Hex, Anzeige des Unicode-Zeichens
function trans(intbox, hexbox,cType,charbox,errbox) {
	var i = 0;
	var j = -1;
	for(i = 0;i < 3;i++) {if(cType[i].checked) {j = i; };}
	document.getElementById('errbox').childNodes[0].data = String.fromCharCode(160);
	document.getElementById('errstatus').bgColor = '#ffffff';
	switch(j) {
	case 0: 	var inp = intbox.value.replace(/\s/g, '');
		intbox.value = inp;
		var a = parseInt(inp);
		var b = a.toString(16);
		var c = parseInt("0x" + b);
		if ((b != 'NaN') && (inp.toUpperCase() == c.toString().toUpperCase()))
			{ set_err('');hexbox.value = b; 
			charbox.value = String.fromCharCode(a);
//			document.getElementById('charbox').childNodes[0].data = String.fromCharCode(inp);
		}
		else { set_err('This is not a number');
			hexbox.value = '';charbox.value = ''; }; break;

	case 1: 	var inp = hexbox.value.replace(/\s/g, '');
		hexbox.value = inp;
		var a = "0x" + inp;
		b = parseInt(a);
		if ((b.toString() != 'NaN') && (inp.toUpperCase() == b.toString(16).toUpperCase()))
			{ set_err(''); intbox.value = b;
			// document.getElementById('charbox').childNodes[0].data = String.fromCharCode(b);
				charbox.value = String.fromCharCode(b);
			} 
		else { set_err("This isn't a hex-value");
			intbox.value = ''; charbox.value = '';};break;

	case 2:	var a = charbox.value.charCodeAt(0);
		var b = a.toString(16)
		var c = String.fromCharCode("0x" + b.toString());

		//alert(a); alert(b); alert(c);

		if((a.toString() != 'NaN') && (c == charbox.value)) {
			set_err('');
			intbox.value = a;
			hexbox.value = b;}
		else { set_err('Exact one char is required');
			intbox.value = '';
			hexbox.value = '';}

		break;


	}





	return;


	if (ctype[0].checked)
	{ //inthex
	var a = parseInt(intbox.value);
	var b = a.toString(16).toUpperCase();
	if (b != 'NAN') 
		{ hexbox.value = b; 
		// alert(document.getElementById('charbox').childNodes[0].data);
		document.getElementById('charbox').childNodes[0].data = String.fromCharCode(intbox.value);

}
	else { hexbox.value = 'This is not a number'; }
	}
	else
	{ // hexint
	var a = "0x" + hexbox.value;
	b = parseInt(a).toString();
	if (b.toUpperCase() != 'NAN') 
		{ intbox.value = b;document.getElementById('charbox').childNodes[0].data = String.fromCharCode(b);} 
	else {intbox.value = "This isn't a hex-value"; }
	}
}
function reset_1(charbox) {
	document.getElementById('errbox').childNodes[0].data = '';
	document.getElementById('errstatus').bgColor = '#ffffff';
}



// Verschlüsselung / Entschlüsselung von Text

function transText(longText, longHex, cType, eMail) {
	var i = 0;
	var j = -1;
	for(i = 0;i < 5;i++) {if(cType[i].checked) {j = i; };}
	switch(j) {
		case 0: longHex.value = trans_Text_intern(longText.value, longHex.value, 0); break;
		case 1: longHex.value = trans_Text_intern(longText.value, longHex.value, 1); break;
			break;
		case 2: longText.value = trans_Text_intern(longText.value, longHex.value, 2);break;
		case 3: var eMailHex = trans_Text_intern(eMail, longHex, 0);
			longHex.value = "<a href='" + trans_Text_intern("mailto:", longHex, 0) + eMailHex + "'>" + eMailHex + '</a>';
			longText.value = "<a href='mailto:" + eMail + "'>" + eMail + "</a>";break;
		case 4: var eMailHex = trans_Text_intern(eMail, longHex, 1);
			longHex.value = "<a href='" + trans_Text_intern("mailto:", longHex, 1) + eMailHex + "'>" + eMailHex + '</a>';
			longText.value = "<a href='mailto:" + eMail + "'>" + eMail + "</a>";break;
	}
}
	

function trans_Text_intern(longText, longHex, cType) {
	var sInput = '';
	var sTemp = '';
	var sOutput = '';
	var i = 0;
	var j = cType;
	switch(cType) {
	case 0: 	sInput = longText;
		for(i=0; i < sInput.length; i++) {
			sOutput += "&#" + sInput.charCodeAt(i).toString() + ";";
		}
		break;
	case 1:	sInput = longText;
		for(i=0;i< sInput.length;i++) {
			sOutput += "&#x" + sInput.charCodeAt(i).toString(16) + ";";
		}
		break
	case 2: 	sInput = longHex.split("&");
		for(i=0;i<sInput.length;i++) {
			sTemp = sInput[i];
			if (sTemp.length > 0) {
				if (sTemp.substr(0,2) == "#x") {
					sOutput += String.fromCharCode("0x" + sTemp.substring(2, sTemp.length - 1)); }
				else {
					if (sTemp.substr(0,1) == "#") {
						sOutput += String.fromCharCode(sTemp.substring(1, sTemp.length - 1)); }
					else {sOutput = 'Illegal sequence'; i = sInput.length;}
				}
			}
		}
		break;
	}
	return sOutput;
}

