Dread_Boy / Youtube Fixer

// ==UserScript==
// @name       Youtube Fixer
// @namespace  http://www.youtube.com/
// @version    0.3
// @description  Fixes many issues with Youtube (logo, watch later list, show all comments)
// @match      http://www.youtube.com/*
// @match      https://www.youtube.com/*
// @copyright  2013+, Matic Leva
// ==/UserScript==

function removeElement(node) {
    node.parentNode.removeChild(node);
}
var turnObjToArray = function(obj) {
  return [].map.call(obj, function(element) {
    return element;
  })
};

function init()
{
    if(!('contains' in String.prototype))
      String.prototype.contains = function(str, startIndex) { return -1 !== String.prototype.indexOf.call(this, str, startIndex); };
    
    logo();
    allComments();
    watchLater();
    creatorStudio();
    keepVidLink();
}

function keepVidLink(){
    var links = document.querySelectorAll(".yt-lockup-title a.yt-uix-tile-link, .pl-video-title a.pl-video-title-link");

    for(var l = 0; l < links.length; l++){
        var vlc = document.createElement('a');
        vlc.setAttribute('href', "http://www.keepvid.com/?url=" + encodeURIComponent("https://www.youtube.com" + links[l].getAttribute("href")));
        vlc.style.width = "20px";
        vlc.style.height = "20px";
        vlc.style.background = "url('https://lh3.ggpht.com/YSNcRsoWRD64jCbQMe590lMejt9SzM14FZrukHdc9R_6OD3EdHRzUdXcWcz2PwQtp04=w300') center center / 100% 100% no-repeat";
        vlc.style.display = "inline-block";
        vlc.target = "_blank";
		links[l].parentNode.insertBefore(vlc, links[l]);
        links[l].style.display = "inline";
        links[l].style.paddingLeft = "5px";
    }
}
function logo(){
	document.getElementById('logo-container').setAttribute('href', 'http://www.youtube.com/feed/subscriptions');
}
function allComments(){
    var videos = document.getElementsByClassName('vm-video-item-content');
    for(var v = 0; v < videos.length; v++)
    {
		var video_link = videos[v].getElementsByClassName('vm-video-title-content')[0].getAttribute("href");  
        var comments = videos[v].getElementsByClassName('vm-video-metric video-comments');
        
    	if(comments[0].parentNode.tagName.toLowerCase() != "a")
        {
            var link = document.createElement('a');
            link.setAttribute('href', "/all_comments" + video_link.substr(video_link.indexOf("?v=")));
            link.appendChild(comments[0]);
            videos[v].getElementsByClassName('vm-video-metrics')[0].appendChild(link);
        }
    }
}

function watchLater()
{
    var current_url = document.URL.toString();
    
    if(current_url.contains("feed/subscriptions"))
    {
    	var watch = document.getElementById('channel-navigation-menu').children[1].cloneNode(true);
    	watch.getElementsByTagName("a")[0].href = "/feed/watch_later";
    	watch.getElementsByTagName("a")[0].getElementsByTagName("span")[0].innerHTML = "Watch later";
        
        removeElement(document.getElementById('channel-navigation-menu').children[1]);
    	document.getElementById('channel-navigation-menu').appendChild(watch);
	}
}

function creatorStudio(){
    var button = document.getElementsByClassName('yt-masthead-picker-button-primary')[0];
    button.href = "/my_videos";
    button.getElementsByTagName("span")[0].innerHTML = "Video Manager";
}
init();