function showFrame(anchor) {
var tbid = anchor.getAttribute('tbid');
var expanded = anchor.expanded;
if (expanded) {
hideElement(anchor.expandedElement);
anchor.expanded = false;
_swapImage(anchor);
return false;
}
anchor.expanded = true;
if (anchor.expandedElement) {
showElement(anchor.expandedElement);
_swapImage(anchor);
$('#debug_input_'+tbid).get(0).focus();
return false;
}
var url = debug_base
+ '/show_frame?tbid=' + tbid
+ '&debugcount=' + debug_count;
callbackXHR(url, null, function (data) {
var el = createElement('div');
anchor.parentNode.insertBefore(el, anchor.nextSibling);
el.innerHTML = data.responseText;
anchor.expandedElement = el;
_swapImage(anchor);
$('#debug_input_'+tbid).get(0).focus();
});
return false;
}
function _swapImage(anchor) {
var el = anchor.getElementsByTagName('IMG')[0];
if (anchor.expanded) {
var img = 'minus.jpg';
} else {
var img = 'plus.jpg';
}
el.src = debug_base + '/media/' + img;
}
function showSource(anchor) {
var location = anchor.getAttribute('location');
showSourceCode(location);
return false;
}
function showSourceCode(location) {
var url = debug_base + '/source_code?location=' + escape(location);
var source = document.getElementById('source_data');
source.innerHTML = 'Loading...';
switch_display('source_data');
callbackXHR(url, null, function (req) {
source.innerHTML = req.responseText;
if (location.indexOf(':') > 0) {
var lineno = location.substring(location.indexOf(':')+1);
lineno = parseInt(lineno) - 10;
if (lineno > 1) {
document.location.hash = '#'+(lineno-10);
}
}
});
}
function submitInput(button, tbid) {
var input = $('#' + button.getAttribute('input-from')).get(0);
var output = $('#' + button.getAttribute('output-to')).get(0);
var url = debug_base
+ '/exec_input';
var history = input.form.history;
input.historyPosition = 0;
if (! history) {
history = input.form.history = [];
}
history.push(input.value);
var vars = {
tbid: tbid,
debugcount: debug_count,
input: input.value
};
showElement(output);
callbackXHR(url, vars, function (data) {
var result = data.responseText;
output.innerHTML += result;
input.value = '';
input.focus();
});
return false;
}
function showError(msg) {
var el = $('#error-container').get(0);
if (el.innerHTML) {
el.innerHTML += '
\n' + msg;
} else {
el.innerHTML = msg;
}
showElement($('#error-area').get(0));
}
function clearError() {
var el = $('#error-container').get(0);
el.innerHTML = '';
$('#error-area').hide();
}
function expandInput(button) {
var input = button.form.elements.input;
stdops = {
name: 'input',
style: 'width: 100%',
autocomplete: 'off'
};
if (input.tagName == 'INPUT') {
var newEl = createElement('textarea', stdops);
var text = 'Contract';
} else {
stdops['type'] = 'text';
stdops['onkeypress'] = 'upArrow(this)';
var newEl = createElement('input', stdops);
var text = 'Expand';
}
newEl.value = input.value;
newEl.id = input.id;
swapDOM(input, newEl);
newEl.focus();
button.value = text;
return false;
}
function upArrow(input, event) {
if (window.event) {
event = window.event;
}
if (event.keyCode != 38 && event.keyCode != 40) {
// not an up- or down-arrow
return true;
}
var dir = event.keyCode == 38 ? 1 : -1;
var history = input.form.history;
if (! history) {
history = input.form.history = [];
}
var pos = input.historyPosition || 0;
if (! pos && dir == -1) {
return true;
}
if (! pos && input.value) {
history.push(input.value);
pos = 1;
}
pos += dir;
if (history.length-pos < 0) {
pos = 1;
}
if (history.length-pos > history.length-1) {
input.value = '';
return true;
}
input.historyPosition = pos;
var line = history[history.length-pos];
input.value = line;
}
function expandLong(anchor) {
var span = anchor;
while (span) {
if (span.style && span.style.display == 'none') {
break;
}
span = span.nextSibling;
}
if (! span) {
return false;
}
showElement(span);
hideElement(anchor);
return false;
}
function showElement(el) {
el.style.display = '';
}
function hideElement(el) {
el.style.display = 'none';
}
function createElement(tag, attrs /*, sub-elements...*/) {
var el = document.createElement(tag);
if (attrs) {
for (var i in attrs) {
el.setAttribute(i, attrs[i]);
}
}
for (var i=2; i' + name + '
');
}
function switch_source(el, hide_type) {
while (el) {
if (el.getAttribute &&
el.getAttribute('source-type') == hide_type) {
break;
}
el = el.parentNode;
}
if (! el) {
return false;
}
el.style.display = 'none';
if (hide_type == 'long') {
while (el) {
if (el.getAttribute &&
el.getAttribute('source-type') == 'short') {
break;
}
el = el.nextSibling;
}
} else {
while (el) {
if (el.getAttribute &&
el.getAttribute('source-type') == 'long') {
break;
}
el = el.previousSibling;
}
}
if (el) {
el.style.display = '';
}
return false;
}
$(document).ready(function() {
var hide_all = function() {
$('#short_text_version, #long_text_version, #short_traceback, #full_traceback, #short_xml_version, #long_xml_version, div.feature-highlight').hide();
$('#view_long_text, #view_short_text, #view_long_html, #view_short_html, #view_short_xml, #view_long_xml').removeClass('active');
};
if ($('#long_text_version').length == 0) {
$('#view_long_text').hide();
}
if ($('#full_traceback').length == 0) {
$('#view_long_html').hide();
}
$('#view_short_text').click(function() {
hide_all();
$('#short_text_version').show();
$(this).addClass('active');
return false;
});
$('#view_long_text').click(function() {
hide_all();
$('#long_text_version').show();
$(this).addClass('active');
return false;
});
$('#view_short_html').click(function() {
hide_all();
$('#short_traceback, div.feature-highlight').show();
$(this).addClass('active');
return false;
});
$('#view_long_html').click(function () {
hide_all();
$('#full_traceback, div.feature-highlight').show();
$(this).addClass('active');
return false;
});
$('#view_short_xml').click(function () {
hide_all();
$('#short_xml_version').show();
$(this).addClass('active');
return false;
});
$('#view_long_xml').click(function () {
hide_all();
$('#long_xml_version').show();
$(this).addClass('active');
return false;
});
});