var bison = new Bison();

function stringToBison(str) {
	var obj;
	try {
		obj = eval("(" + str + ")");
		return bison.serialize(obj);
	} catch (e) {
		alert("Error in expression: " + e.message);
		return false;
	}
}

function zeroFill(str, len) {
	if (str.length < len) {
		var zeros = "";
		for (var i = 0; i < (len - str.length); i++) {
			zeros += "0";
		}
		return zeros + str;
	}
	return str;
}

function view() {
	var bisonStr = stringToBison(document.getElementById("code-box").value);
	if (bisonStr) {
		var hexStr = "00000   ";
		var binStr = "";
		for (var i = 0; i < bisonStr.length; i++) {
			if (i % 16 == 0 && i > 0) {
				hexStr += "  " + binStr + "\r\n" + zeroFill(i.toString(16).toUpperCase(), 5) + "   ";
				binStr = "";
			}			
			hexStr += zeroFill(parseInt(bisonStr.charCodeAt(i)).toString(16).toUpperCase(), 2) + " ";
			binStr += bisonStr.charAt(i);
		}
		document.getElementById("view-box").innerHTML = "<pre style=\"padding: 0; margin: 0\">" + hexStr + "</pre>";
	}
}