function expand(curline) {
    var code = curline.parentNode;
    var lines = code.getElementsByTagName('li');
 
    for (i = 0; i < lines.length; i++) {
        
        if (lines[i] == curline) {
            
            var n       = 0;
            var display = "";
            
            if (lines[i].className == 'startblock' || lines[i].className == 'substartblock') {
                lines[i].innerHTML  = lines[i].innerHTML.replace(/({)[^{]*?/g, "<span class=\"unexpanded\">...</span>");
                display             = 'none';
                lines[i].className  = (lines[i].className == 'startblock') ? 'block' : 'subblock';
            } else {
                lines[i].innerHTML  = lines[i].innerHTML.replace('<span class="unexpanded">...</span>', "{");
                lines[i].innerHTML  = lines[i].innerHTML.replace('<SPAN class=unexpanded>...</SPAN>', "{");
                display             = 'list-item';
                lines[i].className  = (lines[i].className == 'block') ? 'startblock' : 'substartblock';
            }
            
            for (j = i + 1; j < lines.length; j++) {
                if (!lines[j].expandcount) lines[j].expandcount = 0;
                if (display == 'none') {
                    lines[j].expandcount      += 1;
                    lines[j].style.display    = display;
                } else {
                    lines[j].expandcount     -= 1
                    if (lines[j].expandcount == 0) lines[j].style.display = display;
                }
                if (lines[j].className == 'startblock' || lines[j].className == 'block' || lines[j].className == 'substartblock' || lines[j].className == 'subblock') {
                    n++;
                } else if (lines[j].className == 'endblock' || lines[j].className == 'subendblock') {
                    if (n == 0) break;
                    else n--;
                }
            }
        }
    }
    code.style.listStyleType = 'none';
    code.style.listStyleType = 'decimal';
}
