Home | History | Annotate | Download | only in media
      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 }
    162