$(document).ready(function() {
var getProxyJSON = function(host, path, data, callback) {
data['host'] = host;
data['path'] = path;
var uri = TRACEBACK.uri+'/relay';
$.getJSON(uri, data, callback);
};
// Manipulate DOM to add the iframe, and move things around
var newholder = $(document.createElement("div")).addClass('widget_layout');
$('div.feature-highlight').wrapAll(newholder[0])[0].appendChild(
$('button:last').remove()[0]);
$('div.widget_layout')[0].appendChild(document.getElementById('service_widget'));
$('#service_widget input.submit_traceback').click(function () {
$('#service_widget .posttracebacktab').html('Sending traceback...');
var uri = TRACEBACK.uri+'/post_traceback?debugcount='+debug_count
+'&host='+encodeURIComponent(TRACEBACK.host)
+'&path='+encodeURIComponent(TRACEBACK.traceback);
var opts = {
url: uri,
cache: false,
dataType: 'json',
success: function(data, textStatus) {
var iframe = document.createElement("iframe");
var tlink = data.traceback.link.replace(/\.xml/, '');
iframe.style.display = "none";
document.body.appendChild(iframe);
iframe.src = 'http://'+TRACEBACK.host+TRACEBACK.traceback
+'/'+encodeURIComponent(tlink)
+'/reown?uuid='+encodeURIComponent(data.traceback.uuid);
stuff = data;
var full_uri = 'http://' + TRACEBACK.host + TRACEBACK.traceback + '/' + tlink;
var reply = 'Traceback posted successfully.
';
reply += ' ' + full_uri + '';
$('#service_widget .posttracebacktab').html(reply);
}
};
$.ajax(opts);
return false;
});
// Hide the tabs we shouldn't see
$('.posttracebacktab, .searchtab').hide();
// Bind the click functions for each tab
$('a.overview').click(function () {
$('#supportnav li').removeClass('active');
$(this).parent().addClass('active');
$('.overviewtab').show();
$('.posttracebacktab, .searchtab').hide();
return false;
});
$('a.search').click(function () {
$('#supportnav li').removeClass('active');
$(this).parent().addClass('active');
$('.searchtab').show();
$('.posttracebacktab, .overviewtab').hide();
return false;
});
$('a.posttraceback').click(function () {
$('#supportnav li').removeClass('active');
$(this).parent().addClass('active');
$('div.posttracebacktab').show();
$('.searchtab, .overviewtab').hide();
return false;
});
// Set the search field to the exception as the default search
$('.searchtab input[@type="text"]')[0].value = $('code.main-exception').text();
// Bind the search button to hit the mail lists
$('.searchtab input[@type="submit"]').click(function () {
// Populate the lists array with the strings for the lists to include
// in the search
var lists = [];
var options = $('.searchtab input[@type="checkbox"]').serializeArray();
$.each(options, function(i, val) {
lists.push('list:' + val.value);
});
// Setup the search data
var data = {mode:'json', page:1};
data.q = lists.join(' ') + " " + $('.searchtab input[@type="text"]')[0].value;
var sr = $('.searchresults');
sr.html('Loading...');
var searchResults = getProxyJSON('markmail.org', '/results.xqy', data,
function(data, textStatus) {
stuff = data;
var numresults = $(document.createElement('p'));
numresults.addClass('results');
numresults.html(data.search.start + ' to ' + data.search.end
+ ' of ' + data.search.estimation);
var searchlink = document.createElement('a');
searchlink.href = 'http://markmail.org' + data.search.permalink;
searchlink.target = '_blank';
$(searchlink).html('View all results');
numresults.prepend(searchlink);
sr.html('').append(numresults);
// If there's no search results, stop here
if (!data.search.results) {
return false;
}
// Iterate through the search results adding them dynamically
// to the element
$.each(data.search.results.result, function(i, val) {
var result = $(document.createElement('div')).addClass('result');
var link = document.createElement('a');
link.href = 'http://markmail.org' + val.url;
link.target = '_blank';
$(link).html(val.subject);
result.append(link);
var blurb = $(document.createElement('div')).addClass('blurb');
blurb.html(val.blurb);
result.append(blurb);
var meta = $(document.createElement('div')).addClass('meta');
meta.html(val.date + ' - ' + val.from + ' - ' + val.list);
result.append(meta);
sr.append(result);
});
// Scroll the window down to the top of the service widget with some space
window.scrollTo(0, $('#service_widget').offset().top-20);
});
return false;
});
});