StartPage.com - Number Results

Number search results on StartPage.com

// ==UserScript==
// @name           StartPage.com - Number Results
// @namespace      tag:r-a-y@gmx.com,2012:monkey
// @description    Number search results on StartPage.com
// @match          https://*.startpage.com/*/search*
// @author         r-a-y
// @version        1.1.4
// @license        GPL v3
// ==/UserScript==

var results = document.querySelectorAll( 'li.search-item' ), hasPagination = true, pageNumber,
    pagination, multiple, next, resultsNumber;

if ( results.length ) {
  hasPagination = false;
}

// Sometimes Startpage uses pagination.
if ( hasPagination ) {
  results = document.querySelectorAll( '.w-gl__result-title h3' );
  pageNumber = document.querySelector('.pagination .num--active').textContent;

// If no pagination, calculate page number from prev/next links.
} else {
  pagination = document.querySelectorAll('.pagination__link');
  multiple = pagination[1].value;
  next = pagination[1].value;

  // We're on the last page.
  if ( multiple === '-1' ) {
    multiple = pagination[0].value;
  }

  // Get number of results.
  if ( multiple % 20 === 0 ) {
    resultsNumber = 20;
  } else {
    resultsNumber = 10;
  }

  // Calculate the current page number.
  if ( next === '-1' ) {
    pageNumber = multiple / resultsNumber + 1;
  } else {
    pageNumber = next / resultsNumber - 1;
  } 
}

// DOM inject.
for ( i = 0, len = results.length; i < len; ++i ) {
  newSpan = document.createElement( "span" );
  newSpan.setAttribute( "style", "float:left; font-weight:600; font-size:1em; display:inline-block; margin-right:5px;" );

  if ( hasPagination ) {
   newContent = document.createTextNode( ( ( pageNumber - 1 ) * len + i + 1 ) + ". ");
  } else {
   newContent = document.createTextNode( ( pageNumber * resultsNumber + i + 1 ) + ". "); 
  }
  newSpan.appendChild( newContent );

  results[i].insertBefore( newSpan, results[i].firstChild );
}