Sort/Remove YouTube Watch Later List

Adds sort and remove button for the Youtube Watch Later page

As of 2016-05-05. See the latest version.

// ==UserScript==
// @id           SortRemoveYouTubeWatchLaterlist
// @namespace    https://greasyfork.org/users/42190
// @name         Sort/Remove YouTube Watch Later List
// @Author       Jus7ForFun
// @version      0.2.1
// @description  Adds sort and remove button for the Youtube Watch Later page
// @match        https://www.youtube.com/*
// @match        http://www.youtube.com/*
// @license      GNU GPL v3
// @require      https://code.jquery.com/jquery-latest.min.js
// @require      https://greasyfork.org/scripts/1003-wait-for-key-elements/code/Wait%20for%20key%20elements.js?version=49342
// ==/UserScript==


waitForKeyElements ("#pl-video-table", SortButton);

waitForKeyElements(".playlist-actions", RemoveButton);


function qselector(query, context) {
    return (context || document).querySelector(query);
}

function MakeButton(text, action) {
    var btn = document.createElement('button');
    btn.className = 'yt-uix-button yt-uix-button-size-default yt-uix-button-default';
    btn.innerHTML = '<span class="yt-uix-button-content">' + text + '</span>';
    btn.addEventListener('click', action, false);
    qselector('.playlist-actions').appendChild(btn);
}


function RemoveButton () {
    MakeButton ('Clear The List', function(evt) {
        Removelist ();
    });
}


function SortButton () {
    MakeButton ('Sort Alphabetically', function(evt) {
        SortList ();
    });
}


function Removelist(){
    var el = document.getElementsByClassName('pl-video-edit-remove');
    if (el.length > 0) {
        el[el.length-1].click();
        setTimeout(Removelist,200);
    }
}

function SortList () {
    $('html, body').css('display', 'none');
    var WatchLaterListRows = [],
        SortedList = '';
    $('#pl-video-table > tbody  > tr').each(function() {
        var video = $(this);
        WatchLaterListRows.push(video[0]);
        video.remove();
    });
    var Sorted = $.makeArray(WatchLaterListRows).sort(function(a,b){
        return ( $(a).attr('data-title') < $(b).attr('data-title') ) ? -1 : 1;
    });
    $.each(Sorted, function(index, video) {
        SortedList += video.outerHTML;
    });
    $('#pl-load-more-destination').append(SortedList);
    $('html, body').css('display', 'block');
}