function searchAfter() {
  var matchCount = this.matchList.length;
  var displayInfo = '';

  $('page_link_btm').innerHTML = '';

  if (matchCount != 0) {
    var start = 1;
    var end   = this.dispMax;

    if (this.dispMax == 0 || end > matchCount) {
      end = matchCount;
    }
    displayInfo = '(display :<span id="display">' + start + '-' + end + '</span>)';
  }
  $('status').innerHTML = matchCount.toString() + ' hits '
                          + displayInfo + ' / total : ' + this.searchValues.length.toString();
  this.createPageLink(1, 'page_link_btm');
  window.scrollTo(0, 0);
}

function searchBefore() {
  $('status').innerHTML = 'Search...';
}

function changePageAfter(pageNo){
  this.createPageLink(pageNo, 'page_link_btm');

  var start = (pageNo - 1) * this.dispMax + 1;
  var end   = start + this.dispMax - 1;

  var matchCount = this.matchList.length;
  if (end > matchCount) {
    end = matchCount;
  }

  $('display').innerHTML = start.toString() + '-' + end;
  window.scrollTo(0, 0);
}

function createBookmarkIncSearch(bookmarks) {
  return createIncSearch(IncSearch.ViewBookmark, bookmarks, arguments[1]);
}

function createTableIncSearch(list) {
  return createIncSearch(IncSearch.ViewTable, list, arguments[1]);
}

function createIncSearch(incsearch, list) {

  var options = arguments[2] || {};

  var startElementText = options.header ? '<table>' + options.header : '<table>';

  options = Object.extend({
              dispMax: 20,
              startElementText: startElementText,
              searchBefore: searchBefore,
              searchAfter: searchAfter,
              pageLink: 'page_link',
              changePageAfter: changePageAfter,
              hotkey: document,
              escape: true
           }, options);

  return new incsearch(
    'text',
    'view_area',
    list,
    options
  );
}
