// ==UserScript==
// @name SmiliesFTW emoticon replacer
// @version 1.1
// @description replace emoticons from vB_Text_Editor with other emoticons
// @include http://*.offtopic.com/*
// @author Limp_Brisket
// ==/UserScript==
// ---------------- EDIT THIS STUFF APPROPRIATELY ------------ //
var editorNames = ['vB_Editor_QR','vB_Editor_001'];
var er = new Array();
er[':eek3:'] = 'http://smiliesftw.com/x/xmaseek3.gif';
er[':wtc:'] = 'http://smiliesftw.com/x/xmastear.gif';
er[':rolleyes:'] = 'http://smiliesftw.com/x/xmasrollfawk.gif';
er[':hsugh:'] = 'http://smiliesftw.com/x/xmashsugh.gif';
er[':bowdown:'] = 'http://smiliesftw.com/x/xmasbowdown.gif';
er[':naughty:'] = 'http://smiliesftw.com/x/xmasnaughty.gif';
er[':rofl:'] = 'http://smiliesftw.com/x/xmasrofl.gif';
er[':wiggle:'] = 'http://smiliesftw.com/x/xmaswiggle.gif';
er[':naughty:'] = 'http://smiliesftw.com/x/xmasnaughty.gif';
er[':hs:'] = 'http://smiliesftw.com/x/xmashs.gif';
er[':squint:'] = 'http://smiliesftw.com/x/xmassquint.gif';
er[':ugh:'] = 'http://smiliesftw.com/x/xmasugh.gif';
er[':cool:'] = 'http://smiliesftw.com/x/xmascool.gif';
er[':x:'] = 'http://smiliesftw.com/x/xmasfingersx.gif';
er[':wavey:'] = 'http://smiliesftw.com/x/xmaswavey3.gif';
er[':squint:'] = 'http://smiliesftw.com/x/xmassquint.gif';
er[':noes:'] = 'http://smiliesftw.com/x/xmasohnoes.gif';
er[':wink:'] = 'http://smiliesftw.com/x/xmaswink.gif';
er[':greddy:'] = 'http://smiliesftw.com/x/xmasgreddy.gif';
er[':mamoru:'] = 'http://smiliesftw.com/x/xmaskekegay.gif';
er[':o'] = 'http://smiliesftw.com/x/xmasredface.gif';
er[':nono:'] = 'http://smiliesftw.com/x/xmasnono.gif';
er[':fawk:'] = 'http://smiliesftw.com/x/xmasfawk.gif';
er[':p'] = 'http://smiliesftw.com/x/xmastongue.gif';
er[':eek4:'] = 'http://smiliesftw.com/x/xmasugheek.gif';
er[':bigthumb:'] = 'http://smiliesftw.com/x/xmasthumbup.gif';
// ----------------------------------------------------------- //
// replace emoticons on page with smiliesFTW emoticons
var imgs = document.getElementsByTagName("img");
for(var i = 0; i < imgs.length; i++){
var t = ':'+imgs[i].title.replace(' ','').toLowerCase()+':';
var a = imgs[i].alt.replace(' ','').toLowerCase();
// try using titles first
if(er[t]){
imgs[i].src = er[t];
}
// if that doesn't work try the alt tags
else if(er[a]){
imgs[i].src = er[a];
}
}
// the function that will replace prepare_submit
var new_prepare_submit = 'function(subjecttext, minchars){var er = new Array();';
for(var i in er){
new_prepare_submit += 'er[\''+i+'\']=\''+er[i]+'\';';
}
new_prepare_submit += 'this.textobj.value = this.get_editor_contents();for(var i in er){var re = new RegExp(i,"i");this.textobj.value = this.textobj.value.replace(re,\'<img src="\'+er[i]+\'"/>\');}this.editdoc.body.innerHTML = this.textobj.value;var returnvalue = validatemessage(this.textobj.value, subjecttext, minchars);if (returnvalue){return returnvalue;}else if (this.captcha != null && this.captcha.failed){return returnvalue;}else{this.check_focus();return false;}}';
// the function that will replace insert_smilie
var new_insert_smilie = 'function(e, smilietext, smiliepath, smilieid){var er = new Array();';
for(var i in er){
new_insert_smilie += 'er[\''+i+'\']=\''+er[i]+'\';';
}
new_insert_smilie += 'var s=smilietext;if(er[s]){this.apply_format(\'insertimage\',false,er[s]);}else{this.check_focus();return this.insert_text(\'<img src="\' + smiliepath + \'" border="0" alt="0" smilieid="\' + smilieid + \'" />\', false);}};';
// overload insert_smilies functions for known vb_Editors using location hack
for(var i in editorNames){
location.href = "javascript:void(window.vB_Editor['" + editorNames[i] + "'].insert_smilie = " + eval(new_insert_smilie) + ")";
location.href = "javascript:void(window.vB_Editor['" + editorNames[i] + "'].prepare_submit = " + eval(new_prepare_submit) + ")";
}