CrikeyCleanCommentPreview

Fix Comment Preview box on crikey blogs

// ==UserScript==
// @name           CrikeyCleanCommentPreview
// @author         Musrum
// @namespace      2
// @description    Fix Comment Preview box on crikey blogs
// @include        https://blogs.crikey.com.au/*
// @include        https://www.crikey.com.au/*
// @include        http://blogs.crikey.com.au/*
// @include        http://www.crikey.com.au/*
// @exclude        http://www.crikey.com.au/*.gif
// @exclude        https://www.crikey.com.au/*.gif
// @require 	   https://greasyfork.org/scripts/1884-gm-config/code/GM_config.js?version=4836
// @grant          none
// @version        5.51
// ==/UserScript==
var scriptVer = '5.51';
// Ver 5.51
// Fixed issue with single page comment lists
// Ver 5.50
// Fixed Help Screen, Fixed Emoji support, Added check for uneven blockquotes
// Ver 5.49
// Fixed Basic UNICODE Emoji support not allowing quotes
// Ver 5.48
// Basic UNICODE Emoji support
////////////////////////////////////////////////////////////////////////////////
/*jslint browser: true */
/*global GM_config, GM_registerMenuCommand */
////////////////////////////////////////////////////////////////////////////////
//don't run in iframes
if (window.top !== window.self) {return;}
////////////////////////////////////////////////////////////////////////////////
// Config settings dialog
GM_config.storage = 'Crikey Clean Comment Preview';
GM_config.init('Crikey Clean Comment Preview - Ver ' + scriptVer,
    {
        cleanVertSpace: {
            label: 'Clean Vertical Space',
            type: 'checkbox',
            'default': true
        },
        addCommentNumbers: {
            label: 'Add Comment Numbers',
            type: 'checkbox',
            'default': true
        },
        betterCommentNavigation: {
            label: 'Better Comment Numbers',
            type: 'checkbox',
            'default': true
        },
        commentsPerPage: {
            label: 'Comments Per Page',
            type: 'text',
            'default': '50'
        },
        wordsFinder: {
            label: 'Word/phrase Finder (use the format: \'Username|NBN\')',
            type: 'text',
            'default': '',
            size:50
		}
    },
    {
        open: function() {
            GM_config.addBorder(); // add a fancy border
            GM_config.resizeFrame('200px','300px'); // resize the config window
        }
    },
    {
        save: function () { location.reload(); } // reload the page when configuration was changed
    }
    );
////////////////////////////////////////////////////////////////////////////////
function showConfigCCCP() {GM_config.open();}
////////////////////////////////////////////////////////////////////////////////
//  Declare Global Hashtable
var gh = [];
////////////////////////////////////////////////////////////////////////////////
// Run if DOM is ready, otherwise add a listerner to wait
if (document.readyState == "complete" || document.readyState == "loaded" || document.readyState == "interactive") {main();}
else {window.addEventListener('DOMContentLoaded',function(e){main();});}
////////////////////////////////////////////////////////////////////////////////
//  Init Global Hash Variables
function initGlobalHash() {
    console.log('cccp: initGlobalHash()');
    // RegExpr
    gh["rxp.removeHTML"]    = new RegExp('<[/]?([psu]|address|applet|area|base|basefont|bdo|big|body|br|button|caption|center|col|colgroup|dd|dfn|dir|div|dl|dt|fieldset|font|form|frame|frameset|head|h[1-6r]|html|iframe|img|input|ins|kbd|label|legend|li|link|map|menu|meta|noframes|noscript|object|ol|optgroup|option|param|pre|samp|script|select|small|span|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|ul|var:\w+)[^>]*?>', 'gi');
    // Images
    gh["img.quotes.png"]    = 'data:image/png;base64,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';
    // Avatar cosplay
    gh["avt.william bowe~"] = 'data:image/png;base64,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';
    gh["avt.musrum"]        = 'data:image/png;base64,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';
    //  URLS
    gh["url.Firefox"]       = "http://www.mozilla.com/en-US/firefox/personal.html";
    gh["url.Greasemonkey"]  = "https://addons.mozilla.org/en-US/firefox/addon/748";
    gh["url.Google Chrome"] = "http://www.google.com/chrome";
    gh["url.Tampermonkey"]  = "https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo";
    gh["url.cccp"]          = "https://greasyfork.org/en/scripts/18677-crikeycleancommentpreview";
    // Filters
    gh["flt.words"]         = GM_config.get('wordsFinder').toLowerCase();
    // Elements
    gh["emt.nav"]           = '<nav id="comment-nav-above" class="navigation comment-navigation" role="navigation"><h2 class="screen-reader-text">Comment navigation</h2><div class="nav-links"></div><!-- .nav-links --></nav>';
}
////////////////////////////////////////////////////////////////////////////////
//    If we are logged in, perform additional steps related to commenting
function main() {
    console.log('cccp: main()');
    initGlobalHash();
    if ( loginStatus() === 1 ) {
        mainFormating();
        mainCommenting();
     } else {
        mainFormating();
    }
}
////////////////////////////////////////////////////////////////////////////////
//    If we are logged in, perform additional steps related to commenting
function loginStatus() {
    var ul = document.getElementById("menu-top_right_logged_out_view");
    var ls = (! ul) ? 1 : 0;
    console.log('cccp: loginStatus() = ' + ls);
    return ls;
}
////////////////////////////////////////////////////////////////////////////////
function loginStatusOld2() {
    var li = document.getElementById("menu-item-543624");
    var ls = (li.firstChild.innerHTML === "Sign out") ? 1 : 0;
    console.log('cccp: loginStatus() = ' + ls);
    return ls;
}
////////////////////////////////////////////////////////////////////////////////
function loginStatusOld() {
    var pg = document.getElementsByClassName("page")[0];
    var p  = pg.getElementsByTagName("p");
    var ls = 0;
    for (var i = 0; i < p.length; i++ ) {
        if ( p[i].parentNode === pg && p[i].innerHTML.match(/User login status : /) ) {
            ls = parseInt(p[i].innerHTML.replace(/User login status : /,''));
            break;
        }
    }
    return ls;
}
////////////////////////////////////////////////////////////////////////////////
function mainFormating() {
    console.log('cccp: mainFormating()');
//    ensureCommentOrder();
    getPageNos();
    tweakAvatars();
    cleanVerticalSpace();
    fixDuplicateNavigationIds();
    addCommentNumbers();
    betterCommentNavigation();
    cccpNavBar();
    wordsFinder();
}
////////////////////////////////////////////////////////////////////////////////
function mainCommenting() {
    console.log('cccp: mainCommenting()');
    if (document.getElementById("comments")) {
        addCCCPLinks();
    }
    if (document.getElementById("respond")) {
        if (document.getElementsByClassName("comment-respond").length > 1 ) {
            removeExtraCommentBox();
        } else {
            moveCommentBox();
        }
//      removeReplyButtons();
        addSubmitButton();
        addPreviewButton();
        addQuoteButtons();
        cloneTextBox();
    }
}
////////////////////////////////////////////////////////////////////////////////
function fixDuplicateNavigationIds() {
    console.log('cccp: fixDuplicateNavigationIds()');
    var cna = document.querySelectorAll("#comment-nav-above")
    console.log('cccp: cna.length = ' + cna.length);
    if ( cna.length === 2 ) {
        cna[1].id = 'comment-nav-below';
    }
}
////////////////////////////////////////////////////////////////////////////////
function removeExtraCommentBox() {
    console.log('cccp: removeExtraCommentBox()');
    var resp = document.querySelectorAll("#respond")
    console.log('cccp: respond.length = ' + resp.length);
    if ( resp.length < 2 ) {return;}
    resp[0].parentNode.removeChild(resp[0]);
}
////////////////////////////////////////////////////////////////////////////////
function ensureCommentOrder() {
    var ol = document.getElementsByClassName("comment-list")[0];
    var cl = ol.getElementsByTagName("li");
    if (cl.length < 2 ) {return;}
    if ( parseInt(cl[0].id.replace('comment-','')) < parseInt(cl[1].id.replace('comment-','')) ) {return;}
    // List out of order: reverse order now
    for ( var i = cl.length-2; i >= 0; i-- ) {
        ol.appendChild(cl[i]);
    }
}
////////////////////////////////////////////////////////////////////////////////
function getPageNos() {
    console.log('cccp: getPageNos()');
    var nc = parseInt(document.getElementById("block_disqus").getElementsByClassName("block__label")[0].getElementsByClassName("info")[0].getElementsByClassName("info__title")[0].innerHTML.replace(/ comments/,''));
    console.log('cccp: nc = ' + nc);
    gh["pg.cno"] = nc;
    var cpp = parseInt(GM_config.get('commentsPerPage'));
    gh["pg.max"] = Math.ceil( parseInt(nc) / cpp );
    if ( window.location.href.match(/comment-page/) ) {
            gh["pg.cur"] = parseInt( window.location.href.replace(/.*\/comment-page-([0-9]+).*/,'$1') );
    } else {
            gh["pg.cur"] =  1; //gh["pg.max"];
    }
}
////////////////////////////////////////////////////////////////////////////////
function addCommentNumbers() {
    console.log('cccp: addCommentNumbers()');
    if (GM_config.get('addCommentNumbers') !== true) {return;}
    if (document.getElementsByClassName("comment-list").length === 0) {return;}

    var ol = document.getElementsByClassName("comment-list");
    var cpp = parseInt(GM_config.get('commentsPerPage'));
    var cno = gh["pg.cno"];
    var cur = gh["pg.cur"];
    var max = gh["pg.max"];
    
    var cl = ol[0].getElementsByTagName("li");
    console.log('cccp: cl.length = ' + cl.length);
    console.log('cccp: pg.cno = ' + cno);
    console.log('cccp: pg.cur = ' + cur);
    console.log('cccp: pg.max = ' + max);
    
    if (cl.length === 0 ) {return;}
//    var cn = cno - ((max-cur)*cpp);
    var cn = 1 + ((cur-1)*cpp);
    for ( var i = 0; i < cl.length; i++ ) {
        var a = cl[i].getElementsByClassName("commentmetadata")[0].getElementsByTagName("a");
        if ( a.length === 0 ) {continue;}
        if (a[0].firstChild) {
            var sp = document.createElement("span");
            sp.innerHTML = '#' + (cn+i) + ' ';
            a[0].insertBefore(sp,a[0].firstChild);
        } else {
            a[0].innerHTML  = '#' + (cn+i) + ' ' + a[0].innerHTML.replace(/^\s*/,'');
        }
    }
}
////////////////////////////////////////////////////////////////////////////////
function wordsFinder() {
    console.log('cccp: wordsFinder()');
    var wfon = ( gh["flt.words"  ] !== null && gh["flt.words"  ].replace(/\s*/,'').length > 0 );
    if ( ! wfon ) {return;}
	if ( document.getElementsByClassName("comment-list").length === 0 ) {return;}

    var wf = gh["flt.words"];
    var ol = document.getElementsByClassName("comment-list")[0];
    var cl = ol.getElementsByTagName("li");
    if (cl.length === 0 ) {return;}

    var ci = [];
    for ( var i = 0; i < cl.length; i++) {
	    if ( cl[i].getElementsByClassName('comment-content')[0].innerHTML.toLowerCase().match(wf) ) {
           ci.push(i);
        }
    }

    if (ci.length === 0 ) {return;}
    console.log('ci.length: ' + ci.length);
    // Create the link to the first found comment
    if (document.getElementById("comment-nav-below")) {
        wordsFinderTag('match',cl,ci,0,document.getElementById("comment-nav-below").getElementsByClassName("comment-notes")[0]);
    }
    if (document.getElementById("comment-nav-above")) {
        wordsFinderTag('match',cl,ci,0,document.getElementById("comment-nav-above").getElementsByClassName("comment-notes")[0]);
    }
    if (ci.length === 1 ) {return;}
    // Create additional links if required
    for ( i = 0; i < ci.length; i++ ) {
        var j   = ( i === ci.length-1 ) ? 0 : (i+1);
        var txt = ( j === 0 ) ? 'first' : 'next';
        wordsFinderTag(txt,cl,ci,j,cl[ci[i]].getElementsByClassName("comment-notes")[0]);
    }

}
//----------------------------------------------------------------------------//
function wordsFinderTag(txt,cl,ci,i,e) {
    var a = document.createElement('a');
    a.href = cl[ci[i]].getElementsByClassName("comment-meta")[0].getElementsByTagName("a")[0].href;
//  console.log(JSON.stringify(cc[ci[i]].parentNode.getElementsByClassName("comment-metadata")[0].getElementsByTagName("a")[0].href));
    var text = txt + ': ' + (i+1) + '/' + ci.length + ' ' + getAuthor(cl[ci[i]].firstChild);
    a.innerHTML = text;
    e.appendChild(a);
}
////////////////////////////////////////////////////////////////////////////////
function  getAuthor(e) {
    var author;
    var a = e.parentNode.getElementsByClassName('fn')[0];
    if ( a.firstChild.innerHTML === undefined ) {
        author = a.innerHTML;
    } else {
        author = a.firstChild.innerHTML;
    }
    return author.toLowerCase();
}
////////////////////////////////////////////////////////////////////////////////
//    Clean out wasted vertical space
function cleanVerticalSpace() {
    console.log('cccp: cleanVerticalSpace()');
    if (GM_config.get('cleanVertSpace') !== true) {return;}
    cleanAll("article-body__share");
    cleanAll("author");
    cleanAll("block_outlined-desktop");
    cleanAll("footer");
}
////////////////////////////////////////////////////////////////////////////////
function cleanAll(className) {
    var e = document.getElementsByClassName(className);
    if ( ! e ) {return;}
    for ( var i = 0; i < e.length; i++ ) {
        e[i].style.display = 'none';
    }
}
////////////////////////////////////////////////////////////////////////////////
//    Better Comment Navigation
function betterCommentNavigation() {
    console.log('cccp: betterCommentNavigation()');
//    if (GM_config.get('betterCommentNavigation') !== true) {return;}
    if ( ! document.getElementById("comment-nav-above") ) {return;}
//    var cpp = parseInt(GM_config.get('commentsPerPage'));

    //  Add Right-Side div for comment-notes (wordFinder) to bottom Nav Bar heading
    addRightSideDiv(document.getElementById("comment-nav-below").getElementsByTagName("h2")[0],"comment-notes");
    addRightSideDiv(document.getElementById("comment-nav-above").getElementsByTagName("h2")[0],"comment-notes");
    return;
    
    var nc = document.getElementsByClassName("info_linear-mobile")[0].getElementsByTagName("a")[1].innerHTML.replace(/ .*/,'');
    var pg = Math.ceil( parseInt(nc) / cpp );
    var href = window.location.href.replace(/\/comment-page-[0-9]+/,'').replace(/\/#comment?s/,'').replace(/\/#comment-[0-9]+/,'').replace(/\/$/,'');;
    var cp = pg;
    if ( window.location.href.match(/comment-page/) ) {
        cp = parseInt( window.location.href.replace(/.*\/comment-page-([0-9]+).*/,'$1') );
    }

    var nav = ["above","below"];
    for (var i = 0; i < nav.length; i++) {
        var nl = document.getElementById("comment-nav-" + nav[i]).getElementsByClassName("nav-links")[0];
        nl.innerHTML = '';
        for (var j = 1; j <= pg; j++) {
         var div = document.createElement('div');
         var a = document.createElement('a');
         div.setAttribute("class","nav-next");
         div.appendChild(a);
         a.href = href + '/comment-page-' + j + '/#comments';
         var d = document.createElement('div');
         a.appendChild(d);
         if ( j == cp ) {
             d.style.backgroundColor = "lightblue";
             a.href="javascript:location.reload();";
         }
         d.innerHTML = j;
         nl.appendChild(div);
        }
    }
}
////////////////////////////////////////////////////////////////////////////////
function moveCommentBox() {
    var e = document.getElementById("respond");
    var n = document.getElementById("cccp_nav");
    n.parentNode.insertBefore(e, n);
}
////////////////////////////////////////////////////////////////////////////////
function removeReplyButtons() {
    if (GM_config.get('removeReplyBtns') === false) {return;}
    var replys = document.getElementsByClassName('reply');
    for ( var i = 0; i < replys.length; i++ ) {
        replys[i].setAttribute("style","display: none");
    }
}
////////////////////////////////////////////////////////////////////////////////
function copyCCCPTextBox() {
    var comment = document.getElementById("comment");
    if (! comment ) {return;}
    var ctbx = document.getElementById("cccp-comment");
    if (! ctbx ) {return;}
    var text = ctbx.value;
//    console.log(text);

    // Add balancing open/close square brackets if required.
    var cOpen = (text.match(/\[/g) || []).length;
    var cClse = (text.match(/\]/g) || []).length;
    var pre = (cOpen < cClse) ? "[" : "";
    var pst = (cOpen > cClse) ? "]" : "";
    for ( var i = 0; i <= Math.abs(cOpen-cClse) ; i++ ) {
        text = pre + text + pst;
    }

    text = text.replace(/\[/g,'<blockquote>').replace(/\]/g,'</blockquote>');
    text = text.replace(/<p>[\s]*<p>/g,'<p>').replace(/<\/p>[\s]*<\/p>/g,'</p>');

    text = text.replace(/:smile:/g,'?');
    text = text.replace(/:grin:/g,'?');
    text = text.replace(/:sad:/g,'?');
    text = text.replace(/:eek:/g,'?');
    text = text.replace(/:shock:/g,'?');
    text = text.replace(/:\?\?\?:/g,'?');
    text = text.replace(/:cool:/g,'?');
    text = text.replace(/:mad:/g,'?');
    text = text.replace(/:razz:/g,'?');
    text = text.replace(/:neutral:/g,'?');
    text = text.replace(/:wink:/g,'?');
    text = text.replace(/:lol:/g,'?');

    console.log(text);
    comment.value = text;
}
////////////////////////////////////////////////////////////////////////////////
function finalCCCPTextBox() {
    var comment = document.getElementById("comment");
    if (! comment ) {return;}
    var text = comment.value;
    console.log(text);
    comment.value = text;
}
////////////////////////////////////////////////////////////////////////////////
function unicodeEscape(str) {
  for (var result = '', index = 0, charCode; !isNaN(charCode = str.charCodeAt(index++));) {
    result += '&#' + ('0000' + charCode.toString(16)).slice(-4) + ";";
  }
  return result;
}
////////////////////////////////////////////////////////////////////////////////
function cccpSubmit() {
    copyCCCPTextBox();
    finalCCCPTextBox();
    document.getElementById("submit").click();
}
////////////////////////////////////////////////////////////////////////////////
function addSubmitButton() {
    // Add the cccp Submit Button (hide original)
    var fs = respond.getElementsByClassName("form-submit")[0];
    fs.firstChild.setAttribute("style","display: none");
    var prv = document.createElement("input");
    fs.insertBefore(prv, fs.firstChild);
    prv.id    = "cccp-submit";
    prv.setAttribute("class", "submit");
    prv.setAttribute("type", "button");
    prv.value = "Submit";
    prv.addEventListener("click", cccpSubmit, false);
}
////////////////////////////////////////////////////////////////////////////////
function addPreviewButton() {
    // Add the Preview Button
    var fs = respond.getElementsByClassName("form-submit")[0];
    var sp = document.createElement("span");
    sp.innerHTML = ' ';
    fs.insertBefore(sp, fs.firstChild);
    var prv = document.createElement("input");
    fs.insertBefore(prv, fs.firstChild);
    prv.id    = "preview";
    prv.setAttribute("class", "submit");
    prv.setAttribute("type", "button");
    prv.value = "Preview";
    prv.addEventListener("click", previewCCCP, false);
}
////////////////////////////////////////////////////////////////////////////////
function addCCCPLinks() {

    // Fix for Help Box
    var cnb = document.getElementById("comment-nav-below");
    if ( cnb ) {
        cnb.style.position = 'relative';
        cnb.style.zIndex = 5;
    }

    var cccp_nav = document.getElementById("cccp_nav");

    if (! cccp_nav) {return;}

    cccp_nav.style.position = 'relative';
    cccp_nav.style.zIndex = 5;

    // Add the Recommend CCCP Link
    var rec = document.createElement("a");

    document.getElementById("cccp_rec").appendChild(rec);
    rec.innerHTML = "Recommend CCCP";
    rec.addEventListener("click", recommendCCCP, false);

    // Add the CCCP Help Link
    setupHelpCCCP();

}
////////////////////////////////////////////////////////////////////////////////
//  Create a new cccp_nav <div> with space for help/settings/recommend
function cccpNavBar() {
    var comments = document.getElementById("comments");
    if (! comments) {return;}

    var cccp_nav = document.createElement('div');
    cccp_nav.id = "cccp_nav";
    comments.appendChild(cccp_nav);

    var nav = ["hlp","set","rec"];
    var alg = ["left","center","right"];

    var tbl = document.createElement('table');
    cccp_nav.appendChild(tbl);
    var row = document.createElement('tr');
    tbl.appendChild(row);

    for (var i = 0; i < nav.length; i++) {
        var td = document.createElement('td');
        td.width = '33%';
        row.appendChild(td);
        var dv = document.createElement('div');
        dv.id = 'cccp_' + nav[i];
        dv.style = "text-align: " +  alg[i] + ";";
        td.appendChild(dv);
    }
    // Add the CCCP Settings Link
    var set = document.createElement("a");
    document.getElementById("cccp_set").appendChild(set);
    set.innerHTML = "CCCP Settings";
    set.addEventListener("click", showConfigCCCP, false);
}
////////////////////////////////////////////////////////////////////////////////
function recommendCCCP() {
    var comment = document.getElementById("cccp-comment");
    comment.value += '\nTo use the Crikey Clear Comment Preview script, install in order:\n';
    comment.value += '<a href="' + gh["url.Firefox"] + '">Firefox</a>\n';
    comment.value += '<a href="' + gh["url.Greasemonkey"] + '">Greasemonkey</a>\n';
    comment.value += '<a href="' + gh["url.cccp"] + '">cccp</a>\n';
    comment.value += 'or:\n';
    comment.value += '<a href="' + gh["url.Google Chrome"] + '">Google Chrome</a>\n';
    comment.value += '<a href="' + gh["url.Tampermonkey"] + '">Tampermonkey</a>\n';
    comment.value += '<a href="' + gh["url.cccp"] + '">cccp</a>\n';
}
////////////////////////////////////////////////////////////////////////////////
function setupHelpCCCP() {
    var styleEl = document.createElement('style'), styleSheet;
    document.head.appendChild(styleEl);
    styleSheet = styleEl.sheet;
    styleSheet.insertRule(".cccp-modal {display: none;position: fixed;z-index: 1000;padding-top: 100px;left: 0;top: 0;width: 100%;height: 100%;overflow: auto;background-color: rgb(0,0,0);background-color: rgba(0,0,0,0.4);}", 0);
    styleSheet.insertRule(".cccp-modal-content {background-color: #fefefe;margin: auto;padding: 20px;border: 1px solid #888;width: 80%;}", 0);
    styleSheet.insertRule(".cccp-close {color: #aaaaaa;float: right;font-size: 28px;font-weight: bold;}", 0);
    styleSheet.insertRule(".cccp-close:hover,.cccp-close:focus {color: #000;text-decoration: none;cursor: pointer;}", 0);

    // Add the CCCP Help Link
    var hlp = document.createElement("a");
    document.getElementById("cccp_hlp").appendChild(hlp);
    hlp.innerHTML = "CCCP Help";
    hlp.addEventListener("click", helpCCCP, false);

    var cccp_help = document.createElement('div');
    cccp_help.id = "cccp-help";
    document.getElementById("cccp_hlp").appendChild(cccp_help);
    cccp_help.setAttribute("class", "cccp-modal");
    var div = document.createElement('div');
    div.setAttribute("class", "cccp-modal-content");
    cccp_help.appendChild(div);
    var span = document.createElement('span');
    span.setAttribute("class", "cccp-close");
    span.innerHTML = '&times;';
    div.appendChild(span);
    var p = document.createElement('p');
    div.appendChild(p);
    // When the user clicks on <span> (x), close the modal
    span.onclick = function() {
        cccp_help.style.display = "none";
    }
    // When the user clicks anywhere outside of the modal, close it
    window.onclick = function(event) {
        if (event.target == cccp_help) {
            cccp_help.style.display = "none";
        }
    }

    var text = '';
    text += '<b>Emoticons:</b></br>';
    text += '<table>';
    text += '<tr><td>:smile:</td><td>?</td>';
    text += '<td>:grin:</td><td>?</td>';
    text += '<td>:sad:</td><td>?</td>';
    text += '<td>:eek:</td><td>?</td></tr>';
    text += '<tr><td>:shock:</td><td>?</td>';
    text += '<td>:???:</td><td>?</td>';
    text += '<td>:cool:</td><td>?</td>';
    text += '<td>:mad:</td><td>?</td></tr>';
    text += '<tr><td>:razz:</td><td>?</td>';
    text += '<td>:neutral:</td><td>?</td>';
    text += '<td>:wink:</td><td>?</td>';
    text += '<td>:lol:</td><td>?</td></tr>';
    text += '</table>';

    p.innerHTML = text;

}
////////////////////////////////////////////////////////////////////////////////
function helpCCCP() {
    document.getElementById('cccp-help').style.display = "block";
    return;


}
////////////////////////////////////////////////////////////////////////////////
function previewCCCP() {
    var comments = document.getElementById("comments");
    if (! comments ) {return;}
    var respond = document.getElementById("respond");
    if (! respond ) {return;}
    var comment = document.getElementById("comment");
    if (! comment ) {return;}
    copyCCCPTextBox();
    var preview;
    preview = document.getElementById("cccp_preview");
    if (! preview ) {
        var ol = document.createElement('ol');
        ol.setAttribute("class", "comment-list");
        comments.insertBefore(ol, document.getElementById("cccp_nav"));
        var li = document.createElement('li');
        li.setAttribute("class", "comment byuser even thread-even depth-1");
        ol.appendChild(li);
        var ar = document.createElement('article');
        ar.setAttribute("class", "comment-body");
        li.appendChild(ar);
        preview = document.createElement('div');
        preview.id = "cccp_preview";
        preview.setAttribute("class", "comment-content");
        ar.appendChild(preview);
    }
    preview.innerHTML = comment.value.replace(/\n/g,'<br>');
}
////////////////////////////////////////////////////////////////////////////////
function tweakAvatars() {
    console.log('cccp: tweakAvatars()');
    if ( document.getElementsByClassName("comment-list").length === 0) {return;}
    var cli = document.getElementsByClassName("comment-list")[0].getElementsByTagName("li");
    console.log('cccp: cli.length = ' + cli.length);

    var sar = GM_config.get('shiftAvatarRight');

    console.log('cccp: sar = ' + sar);

    for ( var i = 0; i < cli.length; i++ ) {
        var cc = cli[i].getElementsByClassName("comment-content-right")[0];
        var div = document.createElement('div');
        div.setAttribute("style", "width: 100%; display: inline-block;");
        div.setAttribute("class", "comment-content-right-top");
        cc.insertBefore(div,cc.firstChild);
        var tbl1 = document.createElement('table');
        div.appendChild(tbl1);
        tbl1.setAttribute("style", "margin-left: auto; margin-right: auto");
        var tr1 = document.createElement('tr');
        tr1.setAttribute("style", "width: 100%; padding: 0px;");
        tbl1.appendChild(tr1);
        var c11 = document.createElement('td');
        c11.setAttribute("style", "width: 91px; padding: 0px;");
        var c12 = document.createElement('td');
        tr1.appendChild(c11);
        tr1.appendChild(c12);

        var ca = cli[i].getElementsByClassName("comment-author")[0];
        c11.appendChild(ca);

        var tbl2 = document.createElement('table');
        c12.appendChild(tbl2);
        tbl2.setAttribute("style", "margin-left: auto; margin-right: auto");
        var tr2 = document.createElement('tr');
        tr2.setAttribute("style", "width: 100%; padding: 0px;");
        tbl2.appendChild(tr2);
        var c21 = document.createElement('td');
        c21.setAttribute("style", "width: 60%; padding: 0px;");
        var c22 = document.createElement('td');
        c22.setAttribute("style", "width: 40%; padding: 0px;");
        tr2.appendChild(c21);
        tr2.appendChild(c22);

        var fn = cli[i].getElementsByClassName("fn")[0];
        c21.appendChild(fn);
        var cm = cli[i].getElementsByClassName("comment-meta")[0];
        c21.appendChild(cm);

        var div2 = document.createElement('div');
        c22.appendChild(div2);
        div2.setAttribute("style", "text-align:right");
        div2.setAttribute("class", "comment-notes");
        
        var author = getAuthor(cli[i].firstChild);
//      console.log(author);
        if ( gh['avt.' + author] !== undefined ) {
            var img = cli[i].getElementsByClassName('avatar')[0];
            img.src = gh['avt.' + author];
        }
    }
}
//----------------------------------------------------------------------------//
function addRightSideDiv(e,className) {
    var div = document.createElement('div');
    div.setAttribute("style", "width: 100%; display: inline-block;");
    e.parentNode.insertBefore(div,e);
    var tbl = document.createElement('table');
    div.appendChild(tbl);
    var tr = document.createElement('tr');
    tr.setAttribute("style", "width: 100%; padding: 0px;");
    tbl.appendChild(tr);
    var c1 = document.createElement('td');
    c1.setAttribute("style", "width: 50%; padding: 0px;");
    tr.appendChild(c1);
    c1.appendChild(e);
    var c2 = document.createElement('td');
    tr.appendChild(c2);
    c2.setAttribute("style", "width: 50%; padding: 0px; text-align: right;");
    var div = document.createElement('div');
    c2.appendChild(div);
    div.setAttribute("style", "width: 100%; text-align:right");
    div.setAttribute("class", className);
}
////////////////////////////////////////////////////////////////////////////////
function addQuoteButtons() {
   var cb = document.getElementsByClassName('comment-body');
   for ( var i = 0; i < cb.length; i++ ) {
       (function (i) {
           var e = cb[i].getElementsByClassName('fn')[0];
           var img = document.createElement('img');
           img.setAttribute("src", gh["img.quotes.png"]);
           var a = document.createElement('a');
           a.appendChild(img);
           e.parentNode.insertBefore(a,e.nextSibling);
           var cid = cb[i].id;
//           console.log(cid);
           a.addEventListener("click", function() {getQuote(cid);} , false);
       })(i);
   }
}
////////////////////////////////////////////////////////////////////////////////
function getQuote(cid) {
    var comment = document.getElementById("cccp-comment");
    if (! comment ) {return;}
//    console.log(cid);
    var cmt = document.getElementById(cid);
    var ctn = cmt.getElementsByClassName("comment-content")[0];
    var author = getAuthor(cmt);
    var link = cmt.getElementsByClassName("commentmetadata")[0];
    comment.value += '<p><b>'+ author + '</b> @ ' + link.innerHTML.replace(/^\s*/,'').replace(/\s*$/,'').replace(/<br>/g,'').replace(/\n/g,'').replace(/[\s]+/g,' ') + '</p>\n';
    comment.value += '[';
    var quote = ctn.innerHTML.replace(/^[\s]*/,'').replace(/[\s]*$/,'');
    comment.value += quote;
    comment.value += ']\n';
}
////////////////////////////////////////////////////////////////////////////////
//  To enable easy quotes we need to hide the comment text box and submit button
//  And then create clones of these
function cloneTextBox() {
    var comment = document.getElementById("comment");
    if (! comment ) {return;}
    var ctbx = comment.cloneNode(true);
    ctbx.id = 'cccp-comment';
    comment.setAttribute("style","display: none");
    comment.parentNode.insertBefore(ctbx, comment);
}