dc93da125dc717d489e8a40e43eff1501bfea567
[philo.git] / philo / contrib / sobol / static / sobol / ajax_search.js
1 (function($){
2         var sobol = window.sobol = {};
3         sobol.search = function(){
4                 var searches = sobol.searches = $('article.search');
5                 for (var i=0;i<searches.length;i++) {
6                         (function(){
7                                 var s = searches[i];
8                                 $.ajax({
9                                         url: s.getAttribute('data-url'),
10                                         dataType: 'json',
11                                         success: function(data){
12                                                 sobol.onSuccess($(s), data);
13                                         },
14                                         error: function(data, textStatus, errorThrown){
15                                                 sobol.onError($(s), textStatus, errorThrown);
16                                         }
17                                 });
18                         }());
19                 };
20         }
21         sobol.onSuccess = function(ele, data){
22                 // hook for success!
23                 ele.removeClass('loading')
24                 if (data['results'].length) {
25                         ele[0].innerHTML += "<dl>" + data['rendered'].join("") + "</dl>";
26                         if(data['hasMoreResults'] && data['moreResultsURL']) ele[0].innerHTML += "<footer><p><a href='" + data['moreResultsURL'] + "'>See more results</a></p></footer>";
27                 } else {
28                         ele.addClass('empty');
29                         ele[0].innerHTML += "<p>No results found.</p>";
30                         ele.slideUp();
31                 }
32         };
33         sobol.onError = function(ele, textStatus, errorThrown){
34                 // Hook for error...
35                 ele.removeClass('loading');
36                 text = errorThrown ? errorThrown : textStatus ? textStatus : "Error occurred.";
37                 ele[0].innerHTML += "<p>" + text + "</p>";
38         };
39         $(sobol.search);
40 }(jQuery));