Wykop - scroll to unread comment

Scrolls window to first/next/prev unread comment @ wykop.pl

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name        Wykop - scroll to unread comment
// @description Scrolls window to first/next/prev unread comment @ wykop.pl
// @namespace   Wykop scripts
// @include     http://www.wykop.pl/link/*
// @version     1.5
// @license     MIT License
// @grant       none
// ==/UserScript==

var offsetFix = 0; /* poeksperymentowac, jesli przewija za mało lub za duzo */

if(document.getElementsByClassName('nav fix-b-border')[0].getElementsByTagName('ul')[0]
    .getElementsByTagName('a')[document.getElementsByClassName('nav fix-b-border')[0].getElementsByTagName('ul')[0]
        .getElementsByTagName('a').length-1]
    && document.getElementsByClassName('nav fix-b-border')[0].getElementsByTagName('ul')[0]
    .getElementsByTagName('a')[document.getElementsByClassName('nav fix-b-border')[0].getElementsByTagName('ul')[0]
        .getElementsByTagName('a').length-1].href.indexOf('/unreadCommentsToggle/')>0)
{
    var nowe_komcie = document.getElementsByClassName('wblock lcontrast dC  newComment');
    var ile_nowych = nowe_komcie.length;
    var aktual_poz = -1;   
    
    function dodaj_button(komcie_node, ii)
    {
        if (!ile_nowych) return;
        var button_node = document.createElement('button');
        if (ii < ile_nowych - 1)
        {
                button_node.innerHTML = 'NEXT';
                button_node.val = ii + 1;
                button_node.onclick = function() {
                    nowe_komcie[this.val].scrollIntoView(true);
                    window.scrollBy(0, offsetFix);
                    aktual_poz = ii + 1;
                }; /*    button_node.onclick = function(){nowe_komcie[ii+1].scrollIntoView(true);};*/
        }
        else
        {
            button_node.onclick = function() {
                nowe_komcie[0].scrollIntoView(true);
                window.scrollBy(0, offsetFix);
                aktual_poz = 0;
            };
            button_node.innerHTML = 'FIRST';
        }
        komcie_node.appendChild(button_node);
    }
    for (var i = 0; i < ile_nowych; ++i)
    {
        dodaj_button(nowe_komcie[i], i);
    }
    var button_node = document.createElement('button');
    button_node.innerHTML = 'FIRST';
    button_node.onclick = function () {
        nowe_komcie[0].scrollIntoView(true);
        window.scrollBy(0, offsetFix);
        aktual_poz = 0;
    }; /*  document.getElementById('comments-list-entry').appendChild(button_node);*/
    document.getElementById('itemsStream').insertBefore(button_node, document.getElementById('itemsStream').firstChild);
    function nastepny(e)
    {
      e = e || window.event;
      if (e.keyCode == '220' && !e.shiftKey)
      {
           aktual_poz = (aktual_poz+1)%ile_nowych;
      }
      else if (e.keyCode == '220' && e.shiftKey)
      { /* z shiftem jedziemy wstecz */
           if(aktual_poz==-1)
               aktual_poz = ile_nowych - 1;
           else
               aktual_poz = (ile_nowych+aktual_poz-1) % ile_nowych;
      }
      else
          return;
      nowe_komcie[aktual_poz].scrollIntoView(true);
      window.scrollBy(0, offsetFix);
    }

    document.onkeydown = nastepny;
}
void 0;