Vman Smileyliste

By Sebastian Paaske Last update Jul 23, 2008 — Installed 170 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
// ==UserScript==
// @name           Vman Smileyliste
// @namespace      http://www.mathemaniac.org
// @include        http://www.virtualmanager.com/forum/reply.php*
// @include        http://www.virtualmanager.com/forum/edit.php*
// @include        http://www.virtualmanager.com/forum/*/*/new*
// @include        http://www.virtualmanager.com/mail/new.php*
// ==/UserScript==

// Custom smilies. Tilføj dine smilies her, hvis du har lyst. //////////////////
var customSmileyList = new Array(
    'http://www.vman.dk/gfx/accept.gif',
    'http://smilies.vidahost.com/contrib/blackeye/lol.gif',
    'http://smilies.vidahost.com/otn/funny/1poke.gif',
    'http://planetsmilies.net/sport-soccer-smiley-21.gif'
);
///////////////////////////////////////////////////////////////////
// Officiel smiley liste : //////////////////////////////////////////////
// Rør venligst ikke, tak. //////////////////////////////////////////////
var smileyList = new Array(
    [':)',          'http://www.vman.dk/gfx/moods/mood_7.gif'],
    [':(',          'http://www.vman.dk/gfx/moods/mood_3.gif'],
    [':D',          'http://www.vman.dk/gfx/moods/mood_9.gif'],
    ['D:',          'http://www.vman.dk/gfx/moods/mood_2.gif'],
    [':P',          'http://www.vman.dk/gfx/moods/mood_10.gif'],
    [':S',          'http://www.vman.dk/gfx/smileys/confused.gif'],
    [';)',          'http://www.vman.dk/gfx/smileys/wink.gif'],
    [':chok:',  'http://www.vman.dk/gfx/smileys/chok.gif'],
    [':ked:',    'http://www.vman.dk/gfx/smileys/sad.gif'],
    [':roll:',  'http://www.vman.dk/gfx/smileys/roll.gif'],
    [':hihi:',  'http://www.vman.dk/gfx/smileys/hihi.gif'],
    [':away:',  'http://www.vman.dk/gfx/smileys/away.gif'],
    [':back:',  'http://www.vman.dk/gfx/smileys/back.gif'],
    ['[w]',        'http://www.vman.dk/gfx/wonderkid.gif']
);
////////////////////////////////////////////////////////////////

for  each (var smiley in customSmileyList) {
    smileyList.push(['[img]'+smiley+'[/img]',smiley]);
}

GM_addStyle('.smileybtn { border: 0px; margin-right: 3px } ');

var xpath = '//tr[descendant::textarea]';
var it = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE,null);
var node = it.iterateNext();

var smileytr = document.createElement('tr');
var beskrivelsetd = document.createElement('td');
beskrivelsetd.className = 'top shrink';
beskrivelsetd.appendChild(document.createTextNode('Smilies'));
smileytr.appendChild(beskrivelsetd);

function smileyAddClickHandler(event) {
    var smileycode = event.target.getAttribute('alt');
    var textbox = document.evaluate('//textarea', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE,null).iterateNext();
    if (textbox.selectionStart || textbox.selectionStart == '0') {
        textbox.value = textbox.value.substring(0, textbox.selectionStart)+ smileycode+ textbox.value.substring(textbox.selectionEnd, textbox.value.length); 
    }
    else {
        textbox.value += smileycode; 
    }
     textbox.focus();
     event.preventDefault();
}

var smileytd = document.createElement('td');
for each (var smiley in smileyList) {
    var insertlink = document.createElement('a');
    insertlink.setAttribute('href','#');
    insertlink.addEventListener('click',smileyAddClickHandler,true);
    var smileyimg = document.createElement('img');
    smileyimg.className = 'smileybtn';
    smileyimg.src = smiley[1];
    smileyimg.setAttribute('alt',smiley[0]);
    insertlink.appendChild(smileyimg);
    smileytd.appendChild(insertlink);
}

smileytr.appendChild(smileytd);

node.parentNode.insertBefore(smileytr,node.nextSibling);