Youtube Middle Click Search

Middle clicking the search on youtube opens the results in a new tab

As of 2016-07-31. See the latest version.

// ==UserScript==
// @name       Youtube Middle Click Search
// @version    1.4
// @description  Middle clicking the search on youtube opens the results in a new tab
// @match      *://www.youtube.com/*
// @require https://greasyfork.org/scripts/5679-wait-for-elements/code/Wait%20For%20Elements.js?version=122976
// @namespace https://greasyfork.org/users/649
// @grant GM_openInTab
// ==/UserScript==
console.log('started YMCS');
var processBtn = function(element) {
	console.log('found search button');
	// setup references
	var oldButton = document.querySelector("#search-btn"),
		button = document.createElement('button'),
		input = document.querySelector('#masthead-search-term'),
		initSearch = input.value.trim();
	// imitate old button style
	button.appendChild(oldButton.firstChild.cloneNode(true));
	button.firstChild.style.margin = '0 25px';
	button.style.padding = '0';
	button.className = oldButton.className;
	button.setAttribute('type', 'button');
	// insert new button and remove old
	oldButton.parentNode.insertBefore(button, oldButton);
	oldButton.remove();
	// bind events
	button.addEventListener('mousedown', function(e) {
		if (e.button === 1) {
			e.preventDefault();
		}
	}, false);
	document.addEventListener('click', function(e) {
		if(button.isEqualNode(e.target)) {
			e.preventDefault();
			if (input.value.trim() === '' || input.value.trim() === initSearch && e.button !== 1) return false;
			var url = location.origin + '/results?search_query=' + encodeURIComponent(input.value);
			if (e.button === 1) {
				console.log('opening');
				GM_openInTab(url, true);
			} else if(e.button === 0) {
				window.location.href = url;
			}
			return false;
		}
	});
};

var processResults = function(element) {
	element.onmousedown =  function(e) {
		if (e.button === 1) {
			e.preventDefault();
		}
	};
	element.onclick = function(e) {
		var url = location.origin + '/results?search_query=' + encodeURIComponent(element.querySelector('span').textContent);
		if (e.button === 1) {
			console.log('opening');
			GM_openInTab(url, true);
		} else if(e.button === 0) {
			window.location.href = url;
		}
		e.preventDefault();
		return false;
	};
};

waitForElems('#search-btn', processBtn, true);
waitForElems('.gsq_a', processResults);