Blame templates/html/extsearch.js

Packit Service 50c9f2
/*
Packit Service 50c9f2
 @licstart  The following is the entire license notice for the
Packit Service 50c9f2
 JavaScript code in this file.
Packit Service 50c9f2
Packit Service 50c9f2
 Copyright (C) 1997-2017 by Dimitri van Heesch
Packit Service 50c9f2
Packit Service 50c9f2
 This program is free software; you can redistribute it and/or modify
Packit Service 50c9f2
 it under the terms of the GNU General Public License as published by
Packit Service 50c9f2
 the Free Software Foundation; either version 2 of the License, or
Packit Service 50c9f2
 (at your option) any later version.
Packit Service 50c9f2
Packit Service 50c9f2
 This program is distributed in the hope that it will be useful,
Packit Service 50c9f2
 but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 50c9f2
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 50c9f2
 GNU General Public License for more details.
Packit Service 50c9f2
Packit Service 50c9f2
 You should have received a copy of the GNU General Public License along
Packit Service 50c9f2
 with this program; if not, write to the Free Software Foundation, Inc.,
Packit Service 50c9f2
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Packit Service 50c9f2
Packit Service 50c9f2
 @licend  The above is the entire license notice
Packit Service 50c9f2
 for the JavaScript code in this file
Packit Service 50c9f2
 */
Packit Service 50c9f2
function SearchBox(name, resultsPath, inFrame, label)
Packit Service 50c9f2
{
Packit Service 50c9f2
  this.searchLabel = label;
Packit Service 50c9f2
  this.DOMSearchField = function()
Packit Service 50c9f2
  {  return document.getElementById("MSearchField");  }
Packit Service 50c9f2
  this.DOMSearchBox = function()
Packit Service 50c9f2
  {  return document.getElementById("MSearchBox");  }
Packit Service 50c9f2
  this.OnSearchFieldFocus = function(isActive)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    if (isActive)
Packit Service 50c9f2
    {
Packit Service 50c9f2
      this.DOMSearchBox().className = 'MSearchBoxActive';
Packit Service 50c9f2
      var searchField = this.DOMSearchField();
Packit Service 50c9f2
      if (searchField.value == this.searchLabel)
Packit Service 50c9f2
      {
Packit Service 50c9f2
        searchField.value = '';
Packit Service 50c9f2
      }
Packit Service 50c9f2
    }
Packit Service 50c9f2
    else
Packit Service 50c9f2
    {
Packit Service 50c9f2
      this.DOMSearchBox().className = 'MSearchBoxInactive';
Packit Service 50c9f2
      this.DOMSearchField().value   = this.searchLabel;
Packit Service 50c9f2
    }
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
function trim(s) {
Packit Service 50c9f2
  return s?s.replace(/^\s\s*/, '').replace(/\s\s*$/, ''):'';
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
function getURLParameter(name) {
Packit Service 50c9f2
  return decodeURIComponent((new RegExp('[?|&]'+name+
Packit Service 50c9f2
         '='+'([^&;]+?)(&|#|;|$)').exec(location.search)
Packit Service 50c9f2
         ||[,""])[1].replace(/\+/g, '%20'))||null;
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
var entityMap = {
Packit Service 50c9f2
  "&": "&",
Packit Service 50c9f2
  "<": "<",
Packit Service 50c9f2
  ">": ">",
Packit Service 50c9f2
  '"': '"',
Packit Service 50c9f2
  "'": ''',
Packit Service 50c9f2
  "/": '/'
Packit Service 50c9f2
};
Packit Service 50c9f2
Packit Service 50c9f2
function escapeHtml(s) {
Packit Service 50c9f2
  return String(s).replace(/[&<>"'\/]/g, function (s) {
Packit Service 50c9f2
    return entityMap[s];
Packit Service 50c9f2
  });
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
function searchFor(query,page,count) {
Packit Service 50c9f2
  $.getJSON(serverUrl+"?cb=?",
Packit Service 50c9f2
  {
Packit Service 50c9f2
    n:count,
Packit Service 50c9f2
    p:page,
Packit Service 50c9f2
    q:query
Packit Service 50c9f2
  },
Packit Service 50c9f2
  function(data) {
Packit Service 50c9f2
    var results = $('#searchresults');
Packit Service 50c9f2
    $('#MSearchField').val(query);
Packit Service 50c9f2
    if (data.hits>0) {
Packit Service 50c9f2
      if (data.hits==1) {
Packit Service 50c9f2
        results.html('

'+searchResultsText[1]+'

');
Packit Service 50c9f2
      } else {
Packit Service 50c9f2
        results.html('

'+searchResultsText[2].replace(/\$num/,data.hits)+'

');
Packit Service 50c9f2
      }
Packit Service 50c9f2
      var r='';
Packit Service 50c9f2
      $.each(data.items, function(i,item){
Packit Service 50c9f2
        var prefix = tagMap[item.tag];
Packit Service 50c9f2
        if (prefix) prefix+='/'; else prefix='';
Packit Service 50c9f2
        r+=''+
Packit Service 50c9f2
           ''+(data.first+i+1)+'.'+
Packit Service 50c9f2
           ''+escapeHtml(item.type)+' '+
Packit Service 50c9f2
                '
Packit Service 50c9f2
                '">'+escapeHtml(item.name)+'';
Packit Service 50c9f2
        if (item.type=="source") {
Packit Service 50c9f2
          var l=item.url.match(/[1-9][0-9]*$/);
Packit Service 50c9f2
          if (l) r+=' at line '+parseInt(l[0]);
Packit Service 50c9f2
        }
Packit Service 50c9f2
        r+='';
Packit Service 50c9f2
        for (var i=0;i
Packit Service 50c9f2
        {
Packit Service 50c9f2
          r+=''+item.fragments[i]+'';
Packit Service 50c9f2
        }
Packit Service 50c9f2
        r+='';
Packit Service 50c9f2
      });
Packit Service 50c9f2
      r+='';
Packit Service 50c9f2
      if (data.pages>1) // write multi page navigation bar
Packit Service 50c9f2
      {
Packit Service 50c9f2
        r+='
';
Packit Service 50c9f2
        if (data.page>0)
Packit Service 50c9f2
        {
Packit Service 50c9f2
          r+='« ';
Packit Service 50c9f2
        }
Packit Service 50c9f2
        var firstPage = data.page-5;
Packit Service 50c9f2
        var lastPage  = data.page+5;
Packit Service 50c9f2
        if (firstPage<0)
Packit Service 50c9f2
        {
Packit Service 50c9f2
          lastPage-=firstPage;
Packit Service 50c9f2
          firstPage=0;
Packit Service 50c9f2
        }
Packit Service 50c9f2
        if (lastPage>data.pages)
Packit Service 50c9f2
        {
Packit Service 50c9f2
          lastPage=data.pages;
Packit Service 50c9f2
        }
Packit Service 50c9f2
        for(var i=firstPage;i
Packit Service 50c9f2
        {
Packit Service 50c9f2
          if (i==data.page)
Packit Service 50c9f2
          {
Packit Service 50c9f2
            r+=''+(i+1).toString()+' ';
Packit Service 50c9f2
          }
Packit Service 50c9f2
          else
Packit Service 50c9f2
          {
Packit Service 50c9f2
            r+=''+(i+1).toString()+' ';
Packit Service 50c9f2
          }
Packit Service 50c9f2
        }
Packit Service 50c9f2
        if (data.page+1
Packit Service 50c9f2
        {
Packit Service 50c9f2
          r+='»';
Packit Service 50c9f2
        }
Packit Service 50c9f2
        r+='';
Packit Service 50c9f2
      }
Packit Service 50c9f2
      results.append(r);
Packit Service 50c9f2
    } else {
Packit Service 50c9f2
      results.html('

'+searchResultsText[0]+'

');
Packit Service 50c9f2
    }
Packit Service 50c9f2
  });
Packit Service 50c9f2
}
Packit Service 50c9f2
/* @license-end */