2 var sobol = window.sobol = {};
3 sobol.favoredResults = []
4 sobol.favoredResultSearch = null;
5 sobol.search = function(){
6 var searches = sobol.searches = $('article.search');
7 if(sobol.favoredResults.length) sobol.favoredResultSearch = searches.eq(0);
8 for (var i=sobol.favoredResults.length ? 1 : 0;i<searches.length;i++) {
12 url: s.getAttribute('data-url'),
14 success: function(data){
15 sobol.onSuccess($(s), data);
17 error: function(data, textStatus, errorThrown){
18 sobol.onError($(s), textStatus, errorThrown);
24 sobol.renderResult = function(result){
25 // Returns the result rendered as a string. Override this to provide custom rendering.
26 var url = result['url'],
27 title = result['title'],
28 content = result['content'],
32 rendered += "<dt><a href='" + url + "'>" + title + "</a></dt>";
34 rendered += "<dt>" + title + "</dt>";
36 if(content && content != ''){
37 rendered += "<dd>" + content + "</dd>"
41 sobol.addFavoredResult = function(result) {
42 var dl = sobol.favoredResultSearch.find('dl');
45 dl.appendTo(sobol.favoredResultSearch);
46 sobol.favoredResultSearch.removeClass('loading');
48 dl[0].innerHTML += sobol.renderResult(result)
50 sobol.onSuccess = function(ele, data){
52 ele.removeClass('loading');
53 if (data['results'].length) {
54 ele[0].innerHTML += "<dl>";
55 $.each(data['results'], function(i, v){
56 ele[0].innerHTML += sobol.renderResult(v);
58 ele[0].innerHTML += "</dl>";
59 if(data['hasMoreResults'] && data['moreResultsURL']) ele[0].innerHTML += "<footer><p><a href='" + data['moreResultsURL'] + "'>See more results</a></p></footer>";
61 ele.addClass('empty');
62 ele[0].innerHTML += "<p>No results found.</p>";
65 if (sobol.favoredResultSearch){
66 for (var i=0;i<data['results'].length;i++){
67 var r = data['results'][i];
68 if ($.inArray(r['actual_url'], sobol.favoredResults) != -1){
69 sobol.addFavoredResult(r);
74 sobol.onError = function(ele, textStatus, errorThrown){
76 ele.removeClass('loading');
77 text = errorThrown ? errorThrown : textStatus ? textStatus : "Error occurred.";
78 ele[0].innerHTML += "<p>" + text + "</p>";