Youtube: I'm feeling lucky

Add I'm feeling lucky button to Youtube

// ==UserScript==
// @name         Youtube: I'm feeling lucky
// @namespace    http://tampermonkey.net/
// @version      1.0.5
// @description  Add I'm feeling lucky button to Youtube
// @author       divide100
// @match        *://www.youtube.com/*
// @grant        GM_openInTab
// @require https://greasyfork.org/scripts/5679-wait-for-elements/code/Wait%20For%20Elements.js?version=46106
// ==/UserScript==

(function() {
    'use strict';

    var util = {
        log: function () {
            var args = [].slice.call(arguments);
            args.unshift('%c' + SCRIPT_NAME + ':', 'font-weight: bold;color: purple;');
            console.log.apply(console, args);
        },
        q: function(query, context) {
            return (context || document).querySelector(query);
        },
        qq: function(query, context) {
            return [].slice.call((context || document).querySelectorAll(query));
        },
        xmlReq: function(url, cb, errcb){
            var xhr = new XMLHttpRequest();
            xhr.open('get', url, true);
            xhr.responseType = 'document';
            xhr.onload = cb;
            xhr.onerror = errcb;
            xhr.send();
        }
    };

    var SCRIPT_NAME = "Youtube's feeling lucky";

    util.log('Starting');

    waitForElems('#search-btn', function(searchBtn) {
        var btn = document.createElement('button');
        // copy classes
        btn.classList = searchBtn.classList;
        btn.style.paddingLeft = '10px';
        btn.style.paddingRight = '10px';
        btn.textContent = 'Feelin\' Lucky';

        var input = util.q('#masthead-search-term');

        btn.onmousedown = function(e) {
            if(e.button === 1) {
                e.preventDefault();
            }
        };
        btn.onclick = function(e) {
            e.preventDefault();
            var inputValue = input.value.trim();
            if(inputValue) {
                btn.disabled = true;
                util.xmlReq('https://www.youtube.com/results?search_query=' + encodeURIComponent(inputValue), function(xhe) {
                    var link = util.q('.yt-lockup-video .yt-uix-tile .yt-lockup-thumbnail a', xhe.target.response.body).href;
                    if(e.button === 1) {
                        GM_openInTab(link, false);
                    }
                    else {
                        window.location.href = link;
                    }
                    btn.disabled = false;
                }, function() {
                    btn.disabled = false;
                });
            }
            return false;
        };
        searchBtn.parentNode.insertBefore(btn, searchBtn);
    });
})();