rendered paste body<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title></title><meta name="generator" content="TSW WebCoder" /><meta name="author" content="Mathias Rav" /><style title="text/css" type="text/css">/*<![CDATA[*/<!--span { font-family: "Trebuchet MS", sans-serif; padding: 3px; margin: 2px; -moz-border-radius: 5px; display: -moz-inline-box; vertical-align: middle;}.equation { /* everything */ display: inline;}.led { /* enclosed around the left, and the right side of the (in)equal sign */ background-color: #FF9999; border: 3px solid #FF0000;}.led .led { /* plus/minus */ background-color: #99FF99; border: 2px solid #00FF00;}.led .led .led { /* mult/div */ background-color: #9999FF; border: 1px solid #0000FF;}.number { font-weight: bold;}.sign { font-weight: bold; color: White;}-->/*]]>*/</style><script type="text/javascript">/*<![CDATA[*/function EEquation() { this.Emode = 0; this.sides = new Array(new ENumber(0, ''), new ENumber(0, '')); this.sign = '=';}function ENumber(num, unit) { this.Emode = 1; this.iscomplex = false; this.value = num; this.unit = unit;}function EComNum(sign) { this.Emode = 1; this.iscomplex = true; this.value = new Array(0, sign, 0);}function init() { equations = new Array(new EEquation()); equations[0].sides[0] = new EComNum('+'); equations[0].sides[0].value[0] = new EComNum('*'); equations[0].sides[0].value[2] = new ENumber(1, 'b') equations[0].sides[0].value[0].value[0] = new ENumber(1, 'a'); equations[0].sides[0].value[0].value[2] = new ENumber(1, 'x'); //prompt('', etoa(equations[0])); //prompt('', etohtml(equations[0])); etodom(equations[0], document.body);}function etoa(e) { var result = ''; if (e.Emode == 0) { result = etoa(e.sides[0])+' '+e.sign+' '+etoa(e.sides[1]); } else if (e.iscomplex) { result = '('+etoa(e.value[0])+' '+e.value[1]+' '+etoa(e.value[2])+')'; } else { if (e.unit) { if (e.value == '1' || e.value == 1) { result = e.unit; } else { result = e.value+e.unit; } } else { result = e.value+e.unit; } } return result;}function etohtml(e) { var result = ''; if (e.Emode == 0) { result = '<span class="equation">'+etohtml(e.sides[0])+' '+e.sign+' '+etohtml(e.sides[1])+'</span>'; } else if (e.iscomplex) { result = '<span class="led">'+etohtml(e.value[0])+' '+e.value[1]+' '+etohtml(e.value[2])+'</span>'; } else { result = '<span class="number">'+etoa(e)+'</span>'; } return result;}function etodom(e, parent) { var result; if (e.Emode == 0) { result = document.createElement('span'); result = parent.appendChild(result); try {result.className = 'equation';} catch (err) {result.class = 'equation';} side1 = etodom(e.sides[0], result); result.appendChild(document.createTextNode(' '+e.sign+' ')); side2 = etodom(e.sides[1], result); } else if (e.iscomplex) { result = document.createElement('span'); result = parent.appendChild(result); try {result.className = 'led';} catch (err) {result.class = 'led';} firstside = etodom(e.value[0], result); txtnode = document.createTextNode(' '+e.value[1]+' '); result.appendChild(txtnode); secondside = etodom(e.value[2], result); } else { result = document.createElement('span'); result = parent.appendChild(result); try {result.className = 'number';} catch (err) {result.class = 'number';} txtnode = document.createTextNode(etoa(e)); result.appendChild(txtnode); //result.innerText = etoa(e); } return result;}/*]]>*/</script><!-- Thanks to HTML Tidy --></head><body><input type="button" onclick="init()" value="Initialize!" /></body></html>