var messages;

function validateScript() {
	messages = new errorMessage();

	validate(messages);

	if (messages.printMessages() != "") {
		alert(messages.printMessages());
	}
}

validateScript();

function process(m, val){
	try {
		switch (m) {
		    case 1: val = hexToStr(val);
		    break;
		    case 2: val = Base64.decode(val);
		    break;
		}

		document.getElementById("MD5").value = md5(val);
		document.getElementById("SHA-1").value = sha1(val);
		document.getElementById("SHA-256").value = sha2(val);
	} catch (e) {
	    messages.addMessage(e);
	    alert(messages.printMessages());
	    processRaw("error");
	}
}

function processRaw(val){
	document.getElementById("MD5").value = val;
	document.getElementById("SHA-1").value = val;
	document.getElementById("SHA-256").value = val;
}

function encrypt(m, val, key) {
	try {
	    switch (m) {
	        case 'Blowfish':
	            var t = new Blowfish;
	            t.setKey(key);
	            //t.setKey(hexToStr(key));
	            //return strToHex(t.encrypt(hexToStr(val)));
	            return Base64.encode(t.encrypt(val));
	        case 'XXTEA':
				var t = new XXTEA;
				//return t.encrypt(hexToStr(val), hexToStr(key));
				return t.encrypt(val, key);
	        break;
	        case 'XTEA':
				var t = new XTEA;
				return t.encrypt(val, key);
	        break;
	        case 'TEA':
				var t = new TEA;
				return t.encrypt(val, key);
	        break;
	    }
	} catch (e) {
	    alert(e);
	    return "error";
	}
}

function decrypt(m, val, key) {
	try {
	    switch (m) {
	        case 'Blowfish':
	            var t = new Blowfish;
	            t.setKey(key);
	            //t.setKey(hexToStr(key));
	            //return strToHex(t.decrypt(hexToStr(val)));
	            return t.decrypt(Base64.decode(val));
	        case 'XXTEA':
				var t = new XXTEA;
				return t.decrypt(val, key);
				//return strToHex(t.decrypt(val, hexToStr(key)));
	        break;
	        case 'XTEA':
				var t = new XTEA;
				return t.decrypt(val, key);
	        break;
	        case 'TEA':
				var t = new TEA;
				return t.decrypt(val, key);
	        break;
	    }
	} catch (e) {
	    alert(e);
	    return "error";
	}
}