| 1 | function showFrame(anchor) { |
|---|
| 2 | var tbid = anchor.getAttribute('tbid'); |
|---|
| 3 | var expanded = anchor.expanded; |
|---|
| 4 | if (expanded) { |
|---|
| 5 | MochiKit.DOM.hideElement(anchor.expandedElement); |
|---|
| 6 | anchor.expanded = false; |
|---|
| 7 | _swapImage(anchor); |
|---|
| 8 | return false; |
|---|
| 9 | } |
|---|
| 10 | anchor.expanded = true; |
|---|
| 11 | if (anchor.expandedElement) { |
|---|
| 12 | MochiKit.DOM.showElement(anchor.expandedElement); |
|---|
| 13 | _swapImage(anchor); |
|---|
| 14 | $('debug_input_'+tbid).focus(); |
|---|
| 15 | return false; |
|---|
| 16 | } |
|---|
| 17 | var url = debug_base |
|---|
| 18 | + '/show_frame?tbid=' + tbid |
|---|
| 19 | + '&debugcount=' + debug_count; |
|---|
| 20 | var d = MochiKit.Async.doSimpleXMLHttpRequest(url); |
|---|
| 21 | d.addCallbacks(function (data) { |
|---|
| 22 | var el = MochiKit.DOM.DIV({}); |
|---|
| 23 | anchor.parentNode.insertBefore(el, anchor.nextSibling); |
|---|
| 24 | el.innerHTML = data.responseText; |
|---|
| 25 | anchor.expandedElement = el; |
|---|
| 26 | _swapImage(anchor); |
|---|
| 27 | $('debug_input_'+tbid).focus(); |
|---|
| 28 | }, function (error) { |
|---|
| 29 | showError(error.req.responseText); |
|---|
| 30 | }); |
|---|
| 31 | return false; |
|---|
| 32 | } |
|---|
| 33 | |
|---|
| 34 | function _swapImage(anchor) { |
|---|
| 35 | var el = anchor.getElementsByTagName('IMG')[0]; |
|---|
| 36 | if (anchor.expanded) { |
|---|
| 37 | var img = 'minus.jpg'; |
|---|
| 38 | } else { |
|---|
| 39 | var img = 'plus.jpg'; |
|---|
| 40 | } |
|---|
| 41 | el.src = debug_base + '/media/' + img; |
|---|
| 42 | } |
|---|
| 43 | |
|---|
| 44 | function submitInput(button, tbid) { |
|---|
| 45 | var input = $(button.getAttribute('input-from')); |
|---|
| 46 | var output = $(button.getAttribute('output-to')); |
|---|
| 47 | var url = debug_base |
|---|
| 48 | + '/exec_input'; |
|---|
| 49 | var history = input.form.history; |
|---|
| 50 | input.historyPosition = 0; |
|---|
| 51 | if (! history) { |
|---|
| 52 | history = input.form.history = []; |
|---|
| 53 | } |
|---|
| 54 | history.push(input.value); |
|---|
| 55 | var vars = { |
|---|
| 56 | tbid: tbid, |
|---|
| 57 | debugcount: debug_count, |
|---|
| 58 | input: input.value |
|---|
| 59 | }; |
|---|
| 60 | MochiKit.DOM.showElement(output); |
|---|
| 61 | var d = MochiKit.Async.doSimpleXMLHttpRequest(url, vars); |
|---|
| 62 | d.addCallbacks(function (data) { |
|---|
| 63 | var result = data.responseText; |
|---|
| 64 | output.innerHTML += result; |
|---|
| 65 | input.value = ''; |
|---|
| 66 | input.focus(); |
|---|
| 67 | }, function (error) { |
|---|
| 68 | showError(error.req.responseText); |
|---|
| 69 | }); |
|---|
| 70 | return false; |
|---|
| 71 | } |
|---|
| 72 | |
|---|
| 73 | function showError(msg) { |
|---|
| 74 | var el = $('error-container'); |
|---|
| 75 | if (el.innerHTML) { |
|---|
| 76 | el.innerHTML += '<hr noshade>\n' + msg; |
|---|
| 77 | } else { |
|---|
| 78 | el.innerHTML = msg; |
|---|
| 79 | } |
|---|
| 80 | MochiKit.DOM.showElement('error-area'); |
|---|
| 81 | } |
|---|
| 82 | |
|---|
| 83 | function clearError() { |
|---|
| 84 | var el = $('error-container'); |
|---|
| 85 | el.innerHTML = ''; |
|---|
| 86 | MochiKit.DOM.hideElement('error-area'); |
|---|
| 87 | } |
|---|
| 88 | |
|---|
| 89 | function expandInput(button) { |
|---|
| 90 | var input = button.form.elements.input; |
|---|
| 91 | stdops = { |
|---|
| 92 | name: 'input', |
|---|
| 93 | style: 'width: 100%', |
|---|
| 94 | autocomplete: 'off' |
|---|
| 95 | }; |
|---|
| 96 | if (input.tagName == 'INPUT') { |
|---|
| 97 | var newEl = MochiKit.DOM.TEXTAREA(stdops); |
|---|
| 98 | var text = 'Contract'; |
|---|
| 99 | } else { |
|---|
| 100 | stdops['type'] = 'text'; |
|---|
| 101 | stdops['onkeypress'] = 'upArrow(this)'; |
|---|
| 102 | var newEl = MochiKit.DOM.INPUT(stdops); |
|---|
| 103 | var text = 'Expand'; |
|---|
| 104 | } |
|---|
| 105 | newEl.value = input.value; |
|---|
| 106 | newEl.id = input.id; |
|---|
| 107 | MochiKit.DOM.swapDOM(input, newEl); |
|---|
| 108 | newEl.focus(); |
|---|
| 109 | button.value = text; |
|---|
| 110 | return false; |
|---|
| 111 | } |
|---|
| 112 | |
|---|
| 113 | function upArrow(input, event) { |
|---|
| 114 | if (window.event) { |
|---|
| 115 | event = window.event; |
|---|
| 116 | } |
|---|
| 117 | if (event.keyCode != 38 && event.keyCode != 40) { |
|---|
| 118 | // not an up- or down-arrow |
|---|
| 119 | return true; |
|---|
| 120 | } |
|---|
| 121 | var dir = event.keyCode == 38 ? 1 : -1; |
|---|
| 122 | var history = input.form.history; |
|---|
| 123 | if (! history) { |
|---|
| 124 | history = input.form.history = []; |
|---|
| 125 | } |
|---|
| 126 | var pos = input.historyPosition || 0; |
|---|
| 127 | if (! pos && dir == -1) { |
|---|
| 128 | return true; |
|---|
| 129 | } |
|---|
| 130 | if (! pos && input.value) { |
|---|
| 131 | history.push(input.value); |
|---|
| 132 | pos = 1; |
|---|
| 133 | } |
|---|
| 134 | pos += dir; |
|---|
| 135 | if (history.length-pos < 0) { |
|---|
| 136 | pos = 1; |
|---|
| 137 | } |
|---|
| 138 | if (history.length-pos > history.length-1) { |
|---|
| 139 | input.value = ''; |
|---|
| 140 | return true; |
|---|
| 141 | } |
|---|
| 142 | input.historyPosition = pos; |
|---|
| 143 | var line = history[history.length-pos]; |
|---|
| 144 | input.value = line; |
|---|
| 145 | } |
|---|
| 146 | |
|---|
| 147 | function expandLong(anchor) { |
|---|
| 148 | var span = anchor; |
|---|
| 149 | while (span) { |
|---|
| 150 | if (span.style && span.style.display == 'none') { |
|---|
| 151 | break; |
|---|
| 152 | } |
|---|
| 153 | span = span.nextSibling; |
|---|
| 154 | } |
|---|
| 155 | if (! span) { |
|---|
| 156 | return false; |
|---|
| 157 | } |
|---|
| 158 | MochiKit.DOM.showElement(span); |
|---|
| 159 | MochiKit.DOM.hideElement(anchor); |
|---|
| 160 | return false; |
|---|
| 161 | } |
|---|