There are 9 previous versions of this script.
Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)
// ==UserScript==
// @name Emoplurk 3.0
// @namespace http://beinghacked.blogspot.com
// @include http://www.plurk.com/*
// @description Emoplurk.
// @version 3.0
// modified log:
// ==/UserScript==
// ********** Main Script ***********
var smileData = [];
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/G1/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/G1/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif','25.gif','26.gif','27.gif','28.gif',
'29.gif','30.gif','31.gif','32.gif','33.gif','34.gif','35.gif','36.gif','37.gif','38.gif','39.gif','40.gif','41.gif','42.gif','43.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/G2/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/G2/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif','25.gif','26.gif','27.gif','28.gif',
'29.gif','30.gif','31.gif','32.gif','33.gif','34.gif','35.gif','36.gif','37.gif','38.gif','39.gif',
'40.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/G3/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/G3/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.jpg','19.jpg',
'20.jpg','21.jpg','22.jpg','23.jpg','24.jpg','25.jpg','26.jpg','27.gif','28.gif',
'29.gif','30.gif','31.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/11/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/11/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif','25.gif','26.gif','27.gif','28.gif',
'29.gif','30.gif','31.gif','32.gif','33.gif','34.gif','35.gif','36.gif','37.gif','38.gif','39.gif',
]
]);
smileData.push([
'<IMG SRC="http://jiayun.org/onion/001.gif" width="20" ALT="1">',
'http://jiayun.org/onion/',
[
'001.gif','002.gif','003.gif','004.gif','005.gif', '006.gif','007.gif','008.gif','009.gif','010.gif',
'011.gif','012.gif','013.gif','014.gif','015.gif', '016.gif','017.gif','018.gif','019.gif','020.gif',
'021.gif','022.gif','023.gif','024.gif','025.gif', '026.gif','027.gif','028.gif','029.gif','030.gif',
'031.gif','032.gif','033.gif','034.gif','035.gif', '036.gif','037.gif','038.gif','039.gif','040.gif',
'041.gif','042.gif','043.gif','044.gif','045.gif', '046.gif','047.gif','048.gif','049.gif','050.gif',
'051.gif','052.gif','053.gif','054.gif','055.gif', '056.gif','057.gif','058.gif','059.gif','060.gif',
'061.gif','062.gif','063.gif','064.gif','065.gif', '066.gif','067.gif','068.gif','069.gif','070.gif',
'071.gif','072.gif','073.gif','074.gif','075.gif', '076.gif','077.gif','078.gif','079.gif','080.gif',
'081.gif','082.gif','083.gif','084.gif','085.gif', '086.gif','087.gif','088.gif','089.gif','090.gif',
'091.gif','092.gif','093.gif','094.gif','095.gif', '096.gif','097.gif','098.gif','099.gif','100.gif',
'101.gif','102.gif','103.gif','104.gif','105.gif', '106.gif','107.gif','108.gif','109.gif','110.gif',
'111.gif','112.gif','113.gif','114.gif','115.gif', '116.gif','117.gif','118.gif','119.gif','120.gif',
'121.gif','122.gif','123.gif','124.gif','125.gif', '126.gif','127.gif','128.gif','129.gif','130.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/MK/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/MK/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif','25.gif','26.gif','27.gif','28.gif','29.gif','30.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/TS/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/TS/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif','25.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/TB/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/TB/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/CD/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/CD/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/AP/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/AP/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif','25.gif','26.gif','27.gif','28.gif','29.gif','30.gif','31.gif','32.gif','33.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/KS/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/KS/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif','25.gif','26.gif','27.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/B2/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/B2/',
[
'1.gif','2.gif','3.jpg','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif','11.gif','12.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/GM/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/GM/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/UB/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/UB/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/CT/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/CT/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/MD/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/MD/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/OP/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/OP/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',
'20.gif','21.gif','22.gif','23.gif','24.gif','25.gif','26.gif','27.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/TT/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/TT/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif',
]
]);
smileData.push([
'<IMG SRC="http://s942.photobucket.com/albums/ad268/44ok88/WD/1.gif" width="20" ALT="1">',
'http://s942.photobucket.com/albums/ad268/44ok88/WD/',
[
'1.gif','2.gif','3.gif','4.gif','5.gif','6.gif','7.gif','8.gif','9.gif','10.gif',
'11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif','20.gif','21.jpg',
]
]);
var isinit = false;
var currInput = null;
var rplreg = /\[(\d+) (\d+)\]/g;
var pageState = location.href.split('/')[3];
window.addEventListener('load', function()
{
setTimeout(function()
{
var selImgs = document.getElementsByClassName('smily_holder');
// bind key up event
if(pageState == 'p')
getById('input_permalink').addEventListener('keyup', replaceSmile, false);
else
{
if (document.getElementById('input_big')) { getById('input_big').addEventListener('keyup', replaceSmile, false); }
getById('input_small').addEventListener('keyup', replaceSmile, false);
}
// create tabs
for(var i=0; i<selImgs.length; i++)
{
selImgs[i].setAttribute('ref', selImgs.length - i);
selImgs[i].addEventListener('click', function()
{
isinit || setTimeout(init, 1000);
currInput = pageState != 'p' ? this.getAttribute('ref') == 2 ? getById('input_big') : getById('input_small') : getById('input_permalink');
}, false);
}
}, 2000);
}, false);
// init
function init()
{
isinit = true;
// init contents
for(var i=0; i<smileData.length; i++)
{
addTab(i, smileData[i]);
}
// init css
getById('emoticons_show').style.width = '100%';
getById('emoticons_show').style.height = '200px';
getById('emoticons_show').style.overflow = 'auto';
}
function replaceSmile()
{
if(rplreg.test(this.value))
this.value = this.value.replace(rplreg, doReplace);
}
function doReplace(str, datid, smileid)
{
arr = smileData[datid];
if (typeof(arr) != 'undefined')
{
if(typeof(arr[2][smileid]) != 'undefined')
str = ' ' + smileData[datid][1] + smileData[datid][2][smileid] + ' ';
}
return str;
}
function addTab(id, data)
{
var myli = document.createElement('li');
myli.className = 'emoticon_selecter';
myli.innerHTML = '<a href="javascript:void 0;">'+data[0]+'</a>';
myli.addEventListener('click', function()
{
addImages(this, id);
}, false);
getById('emoticons_tabs').getElementsByTagName('ul')[0].appendChild(myli);
}
function addImages(obj, ind)
{
var showDiv = getById('emoticons_show');
var lis = getById('emoticons_tabs').getElementsByTagName('li');
for(var i=0; i<lis.length; i++)
lis[i].className = 'emoticon_selecter';
obj.className += ' current';
var data = smileData[ind];
var baseUrl = data[1];
var str = '<div>';
for(var i=0, dat = data[2], _url; i<dat.length; i++)
{
_url = baseUrl + dat[i];
str += '<a href="javascript:void 0;"><img width="40" src="'+_url+'" alt="'+dat[i]+'" title="['+ind+' '+i+']" /></a>';
}
str += '</div>';
showDiv.innerHTML = str;
var imgs = showDiv.getElementsByTagName('img');
for(var i=0; i<imgs.length; i++)
{
imgs[i].addEventListener('click', function()
{
currInput.value += ' ' + this.src + ' ';
currInput.focus();
}, false);
}
}
function getById(oid)
{
return document.getElementById(oid);
}
// == RE Speed== //
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);
function GM_wait() {
if(typeof unsafeWindow.jQuery == 'undefined') {
window.setTimeout(GM_wait,100);
} else {
$ = unsafeWindow.jQuery.noConflict(true);
window.setTimeout(doRTE, 2000);
}
}
GM_wait();
var uw = unsafeWindow;
var p = uw.Plurks;
var o_expand;
if(p) {
o_expand = p.expand;
p.expand = function(div) {
o_expand(div);
var ib = $('#input_big').get(0);
if(ib) {
var plurk = uw.getPD(div).obj;
var link = 'http://plurk.com/p/' + (plurk.plurk_id).toString(36);
var raw = plurk.content_raw;
var owner_id = plurk.owner_id;
var info_box = $(uw.$dp.info_box);
var pp = info_box.children(".perma_link");
if(info_box.children("#RePlurk").length == 0) {
var rp = $('<a href="#" id="RePlurk">Link</a>').css('float','right').css('right-padding','4px').click(function(){
doRePlurk(owner_id,raw,link);
});
pp.after(rp);
}
}
}
}
function doRePlurk(owner_id,raw,link){
var nick = uw.SiteState.getUserById(owner_id).nick_name;
$('#input_big').val(link + ' ([Original]) ' + ((nick) ? ( ' by ' + '@' + nick + ': ') : '') + raw);
p._removeExpand();
uw.MaxChar.updateBig();
}
// Plurk Translator v1.2 2009.03.21//
(function( ) {
function xpath(query) {
var elems = document.evaluate(query, document, null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var ret = []
for (var i = 0; i < elems.snapshotLength; i++) {
ret.push(elems.snapshotItem(i));
}
return ret;
}
function xpath_map(query, fn) {
var elements = xpath(query);
for (var i = 0; i < elements.length; i++) {
fn(elements[i]);
}
}
function translate(str, lang, callback) {
url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' +
escape(str) + '&langpair=%7Cen';
GM_xmlhttpRequest({
method: 'GET',
url: url,
headers: {
Referer: document.location
},
onload: function(response) {
callback(eval('(' + response.responseText + ')'));
}
});
}
function translate_plurk(text_holder) {
txt = text_holder.innerHTML;
translate(txt, 'en', function (response) {
text_holder.innerHTML = response.responseData.translatedText;
});
}
function translate_responses() {
xpath_map("//div[@class='list']//*//div[@class='text_holder']",
function(text_holder) {
translate_plurk(text_holder);
});
}
function create_translate_link(text_holder) {
var div = document.createElement('div');
div.style.textAlign='right';
div.className = 'translate';
var a = document.createElement('a');
a.innerHTML = "►";
a.addEventListener('click', function(evt) {
translate_plurk(text_holder);
translate_responses();
evt.stopPropagation();
}, false);
div.appendChild(a);
text_holder.parentNode.insertBefore(div, text_holder.nextSibling);
}
function has_parent(elem, name, cls) {
while (elem.parentNode) {
if (elem.parentNode.tagName == name.toUpperCase() &&
elem.parentNode.className == cls)
{
return true;
}
elem = elem.parentNode;
}
return false;
}
setInterval(function () {
xpath_map("//div[contains(@class, 'text_holder')]",
function(text_holder) {
if (text_holder.nextSibling &&
text_holder.nextSibling.className == "translate")
{
return;
}
if (has_parent(text_holder, 'div', 'plurk_box')) {
return;
}
create_translate_link(text_holder);
});
}, 500);
})();
// Plurker 2 _blank (fixed by Kiss K D)//
(function(blank) {
setTimeout(function() {
as = document.getElementsByTagName('a');
for (i = 0; i<as.length; i++) {
if (as[i].className == "name") as[i].setAttribute('target', '_blank');
}
setTimeout(arguments.callee, 1000);
}, 1000);
})();
// == Rich Edit == //
// == CONSTANTS == //
var CONTROL_BAR_ITEM_COMMAND = {
ITALICIZE: 1,
EMBOLDEN: 2,
UNDERLINE: 3,
LINK: 4,
FLICKR: 5,
}
// == LIFECYCLE == //
var o_Plurks_editPlurk;
var o_Plurks__cancelOnClick;
var o_Plurks__saveOnClick;
var o_Plurks_removeExpand;
var o_Plurks_editPlurk_cb;
doRTE = function(){
var taids = ["input_big", "input_permalink"];
for(i=0;i<taids.length;i++) {
var t = $("#" + taids[i])[0];
if(t) {
new ControlBar( true, true, true, true, true ).inject(t);
}
}
var p = unsafeWindow.Plurks;
if(p) {
o_Plurks_editPlurk = p._editPlurk;
o_Plurks__cancelOnClick = p.__cancelOnClick;
p.__cancelOnClick = function() {
if(o_Plurks_editPlurk_cb) o_Plurks_editPlurk_cb.empty();
o_Plurks__cancelOnClick();
};
o_Plurks_removeExpand = p._removeExpand;
p._removeExpand = function(D) {
if(o_Plurks_editPlurk_cb) o_Plurks_editPlurk_cb.empty();
o_Plurks_removeExpand(D);
};
$dp = unsafeWindow.$dp;
$($dp.man).children('.action').each(function(){
$(this).unbind('click',p._editPlurk);
$(this).click(function() {
o_Plurks_editPlurk();
o_Plurks_editPlurk_cb = new ControlBar( true, true, true, true, true ).inject($dp.ta);
p.repositonCurrent();
return false;
});
});
$($dp.saver).children('.cancel').each(function(){
$(this).unbind('click', o_Plurks__cancelOnClick);
$(this).click(p.__cancelOnClick);
});
if(p.poster) {
new ControlBar( true, true, true, true, true ).inject(p.poster.input);
}
}
};
// == CLASSES == //
function ControlBar( showItalic, showBold, showUnderline, showLink, showFlickr)
{
this.showItalic = showItalic;
this.showBold = showBold;
this.showUnderline = showUnderline;
this.showLink = showLink;
this.showFlickr = showFlickr;
this.inject = function( targetTextArea )
{
var controlBar = $("<span></span>").css('padding','1px').css('margin-bottom','1px').css('font-size','11px').css('background','#000').css('opacity','0.75').css('-moz-border-radius','4px').css('display','table');
if ( showItalic )
{
var item = new ControlBarItem( "<i>Italic</i>", CONTROL_BAR_ITEM_COMMAND.ITALICIZE, targetTextArea );
controlBar.append( item.create() );
}
if ( showBold )
{
var item = new ControlBarItem( "<b>Bold</b>", CONTROL_BAR_ITEM_COMMAND.EMBOLDEN, targetTextArea );
controlBar.append( item.create() );
}
if ( showUnderline )
{
var item = new ControlBarItem( "<u>Underline</u>", CONTROL_BAR_ITEM_COMMAND.UNDERLINE, targetTextArea );
controlBar.append( item.create() );
}
if ( showLink )
{
var item = new ControlBarItem( "Link", CONTROL_BAR_ITEM_COMMAND.LINK, targetTextArea );
controlBar.append( item.create() );
}
$(targetTextArea).before( controlBar);
return controlBar;
};
}
function ControlBarItem( label, editCommand, targetTextArea )
{
this.label = label;
this.editCommand = editCommand;
this.targetTextArea = targetTextArea;
this.create = function()
{
var link = document.createElement("a");
link.href = "javascript:;";
link.innerHTML = label;
link.editCommand = this.editCommand;
link.targetTextArea = this.targetTextArea;
link.execute = this.execute;
link.linkSelection = this.linkSelection;
link.tagSelection = this.tagSelection;
link.flickrSearch = this.flickrSearch;
addEvent( link, "click", "execute" );
return $(link).css('color','#fff').css('padding','4px').css('text-decoration','none');
}
this.execute = function(e)
{
switch( this.editCommand )
{
case CONTROL_BAR_ITEM_COMMAND.ITALICIZE:
this.tagSelection( "*", "*" );
break;
case CONTROL_BAR_ITEM_COMMAND.EMBOLDEN:
this.tagSelection( "**", "**" );
break;
case CONTROL_BAR_ITEM_COMMAND.UNDERLINE:
this.tagSelection( "__", "__" );
break;
case CONTROL_BAR_ITEM_COMMAND.LINK:
this.linkSelection();
break;
case CONTROL_BAR_ITEM_COMMAND.FLICKR:
this.flickrSearch();
break;
default:
throw "Unknown command encountered";
}
this.blur();
}
this.linkSelection = function()
{
var url = prompt( "Enter the URL:", "" );
if (url && url != '' )
{
// work around Mozilla Bug #190382
if ( this.targetTextArea.selectionEnd > this.targetTextArea.value.length )
{
this.targetTextArea.selectionEnd = this.targetTextArea.value.length;
}
//We will restore the selection later, so record the current selection.
var selectionStart = this.targetTextArea.selectionStart;
var selectionEnd = this.targetTextArea.selectionEnd;
var desc = '';
if(selectionStart == selectionEnd) {
desc = prompt( "Enter the Description:", "" );
}
if(!desc) desc = '';
this.tagSelection( url + ' (', desc + ')' );
}
}
this.flickrSearch = function()
{
showFlickrBox(targetTextArea);
}
this.tagSelection = function( tagOpen, tagClose )
{
if ( this.targetTextArea.selectionStart || this.targetTextArea.selectionStart == 0 ) //relies on this property.
{
//record scroll top to restore it later.
var scrollTop = this.targetTextArea.scrollTop;
// work around Mozilla Bug #190382
if ( this.targetTextArea.selectionEnd > this.targetTextArea.value.length )
{
this.targetTextArea.selectionEnd = this.targetTextArea.value.length;
}
//We will restore the selection later, so record the current selection.
var selectionStart = this.targetTextArea.selectionStart;
var selectionEnd = this.targetTextArea.selectionEnd;
this.targetTextArea.value =
this.targetTextArea.value.substring( 0, selectionStart ) + //text leading up to the selection start
tagOpen +
this.targetTextArea.value.substring( selectionStart, selectionEnd ) + //selected text
tagClose +
this.targetTextArea.value.substring( selectionEnd ); //text after the selection end
this.targetTextArea.selectionStart = selectionStart + tagOpen.length;
this.targetTextArea.selectionEnd = selectionEnd + tagOpen.length;
this.targetTextArea.scrollTop = scrollTop;
this.targetTextArea.focus();
}
}
}
// == Flickr Serach == //
var frAPIKey = '17f5005ce502a30e727c558a87cb8470';
var frVarWidth = 150;
var frKeyNSID = 'fr_key_nsid';
var frKeyRememberMe = 'fr_key_member_me';
var frBox;
var frResult;
var frCellNum;
var frRowNum;
var frOptUsername;
var frOptKeyword;
var frOptSort;
var frOptRememberMe;
var frSearchURL;
function showFlickrBox(targetTextArea) {
unsafeWindow.frTargetTA = targetTextArea;
if(!frBox) {
frCellNum = parseInt((window.innerWidth - 150) / frVarWidth);
frRowNum = parseInt((window.innerHeight - 200) / frVarWidth);
var frBoxWidth = (frCellNum * frVarWidth);
frBox = $('<div></div>').attr('id','frBox').css('position','absolute').css('overflow','visible').css('width',frBoxWidth + 'px').css('top','20px').css('padding','0px').css('margin','15px').css('left',(1*document.body.clientWidth-frBoxWidth)/2 + 'px').css('display','none').css('border','3px solid #F7861B').css('background','#ffffff').css('zIndex','999999999').css('font-family','Arial,Helvetica,sans-serif').css('-moz-border-radius','8px').css('color','#000');
$('body').append(frBox);
// title
var titlebar = $('<div><span style="color:#0063DC">Flick</span><span style="color:#FF0084">r</span> Search</div>').css('text-align','center').css('font-size','14px').css('font-weight','bold').css('letter-spacing','2px').css('padding','5px');
frBox.append(titlebar);
// option
var optionbar = $('<div></div>').css('padding','5px').css('background','#fefefe').css('border-top','1px dashed #000');
frBox.append(optionbar);
// Flickr Username or Email
var op1 = $('<span>NSID/Username/Email : </span>').css('padding','5px');
op1.append(frOptUsername = $('<input type="text" size="20"/>'));
optionbar.append(op1);
// retrieves
setTimeout(function(){
var nsid = GM_getValue(frKeyNSID);
if(nsid) {
frOptUsername.attr('value',nsid);
}
},0);
// remember me
var op4 = $('<span>Remember Account </span>').css('padding','5px');
op4.append(frOptRememberMe = $('<input type="checkbox"/>'));
optionbar.append(op4);
// retrieves
setTimeout(function(){
var rememberMe = GM_getValue(frKeyRememberMe);
if(rememberMe) {
frOptRememberMe.attr('checked',rememberMe);
}
},0);
optionbar.append('<br>');
// keyword
var op2 = $('<span>Keyword : </span>').css('padding','5px');
op2.append(frOptKeyword = $('<input type="text" size="20"/>'));
optionbar.append(op2);
// sort
var op3 = $('<span>Sort : </span>').css('padding','5px');
op3.append(frOptSort = $('<select id="frOptSort"></select>').html(
'<option value="interestingness-desc">Interestingness Desc</option>' +
'<option value="interestingness-asc">Interestingness Asc</option>' +
'<option value="date-posted-asc">Date Posted Asc</option>' +
'<option value="date-posted-desc">Date Posted Desc</option>' +
'<option value="date-taken-asc">Date Taken Asc</option>' +
'<option value="date-taken-desc">Date Taken Desc</option>' +
'<option value="relevance">relevance</option>'
));
optionbar.append(op3);
var searchbtn;
optionbar.append(searchbtn = $('<input type="button"/>').attr('value','Go'));
searchbtn.click(function() {
doFlickrURLAndSearch();
});
// result
frResult = $('<div></div>').css('padding','5px').css('border-top','1px dashed #000').css('text-align','center');
frBox.append(frResult);
// close
var closebar = $('<div></div>').css('text-align','right').css('background','#F7861B');
var close = $('<span>Close</span>').css('cursor','point').css('color','#fff').css('background','#F7861B').css('padding','2px').css('font-weight','bold');
close.click(function() {
frBox.fadeOut();
});
closebar.append(close);
frBox.append(closebar);
}
frBox.fadeIn();
}
function getFlickrURI(method, param) {
return 'http://api.flickr.com/services/rest/?method=' + method + '&format=json&jsoncallback=?&api_key=' + frAPIKey + '&' + param;
}
function doFlickrURLAndSearch() {
if(frOptUsername.val() == '') {
_doFlickrURLAndSearch('');
}else {
// by name
$.getJSON(getFlickrURI('flickr.people.findByUsername','username=' + frOptUsername.val()), function(rsp){
if(rsp.stat == 'ok') {
_doFlickrURLAndSearch(rsp.user.nsid);
}else {
// by email
$.getJSON(getFlickrURI('flickr.people.findByEmail','find_email=' + frOptUsername.val()), function(rsp) {
if(rsp.stat == 'ok') {
_doFlickrURLAndSearch(rsp.user.nsid);
}else {
_doFlickrURLAndSearch(frOptUsername.val());
}
});
}
});
}
// store
setTimeout(function() {
var frOptRememberMeisCheck = eval(frOptRememberMe.attr('checked'));
if(frOptRememberMeisCheck) {
GM_setValue(frKeyNSID, frOptUsername.attr('value'));
GM_setValue(frKeyRememberMe, frOptRememberMeisCheck);
}else {
GM_setValue(frKeyNSID, '');
GM_setValue(frKeyRememberMe, false);
}
},0);
}
function _doFlickrURLAndSearch(nsid) {
frSearchURL = getFlickrURI(
'flickr.photos.search',
'privacy_filter=1' +
'&per_page=' + (frCellNum * frRowNum) +
'&sort=' + $('#frOptSort option:selected')[0].value +
'&text=' + encodeURIComponent(frOptKeyword.val()) +
((nsid == '') ? '' : ('&user_id=' + nsid))
);
doFlickrSearch();
}
function doFlickrSearch(page) {
frResult.html('<img src="data:image/gif;base64,R0lGODlhKwALAPEAAP////eGG/rDj/eGGyH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAKwALAAACMoSOCMuW2diD88UKG95W88uF4DaGWFmhZid93pq+pwxnLUnXh8ou+sSz+T64oCAyTBUAACH5BAAKAAEALAAAAAArAAsAAAI9xI4IyyAPYWOxmoTHrHzzmGHe94xkmJifyqFKQ0pwLLgHa82xrekkDrIBZRQab1jyfY7KTtPimixiUsevAAAh+QQACgACACwAAAAAKwALAAACPYSOCMswD2FjqZpqW9xv4g8KE7d54XmMpNSgqLoOpgvC60xjNonnyc7p+VKamKw1zDCMR8rp8pksYlKorgAAIfkEAAoAAwAsAAAAACsACwAAAkCEjgjLltnYmJS6Bxt+sfq5ZUyoNJ9HHlEqdCfFrqn7DrE2m7Wdj/2y45FkQ13t5itKdshFExC8YCLOEBX6AhQAADsAAAAAAAAAAAA%3D">');
setTimeout(function(){
$.getJSON(frSearchURL + ((page) ? "&page=" + page : ""),function(rsp) {
generateFlickrResult(rsp);
});
}, 500);
}
function generateFlickrResult(rsp) {
frResult.html('');
if (rsp.stat != "ok"){
frResult.html('<b>' + rsp.message + '</b>');
return;
}
if(rsp.photos.total == 0) {
frResult.html('<b>No Match !</b>');
return;
}
var photo = rsp.photos.photo;
var table = $('<table></table>').css('width','100%');
frResult.append(table);
var tr;
for(i in photo) {
if(i % frCellNum == 0) {
tr = $('<tr></tr>');
table.append(tr);
}
var td = $('<td></td>').css('text-align','center').css('vertical-align','top').css('width',frVarWidth + 'px');
tr.append(td);
var p = photo[i];
var imgUrl = 'http://farm' + p.farm + '.static.flickr.com/' + p.server + '/' + p.id + '_' + p.secret + '_t.jpg';
var img = $('<img/>').attr('src',imgUrl).css('padding','5px');
td.append(img);
var title = $('<div>' + ((p.title.length > 30) ? (p.title.substr(0,30) + '...') : p.title) + '</div>');
td.append(title);
var imgLink = 'http://www.flickr.com/photos/' + p.owner + '/' + p.id + '/';
var append = $('<span><a href="#" style="color:#fff;font-weight:bold;text-decoration:none;" onclick="javascript:frTargetTA.value += \'' + imgLink + ' \';return false;">+</a></span>').css('background','red').css('-moz-border-radius','2px').css('margin-right','5px').css('padding','0px 2px').css('cursor','pointer');
title.prepend(append);
}
var pagebar = $('<div></div>').css('text-align','center').css('padding','5px').css('border-top','1px dashed #000');
frResult.append(pagebar);
var prev;
if(rsp.photos.page > 1) {
prev = $('<a/>').css('cursor','pointer').css('color','#0063DC');
prev.click(function(e) {
doFlickrSearch(rsp.photos.page-1);
});
}else {
prev = $('<span></span>');
}
prev.html('◄ Prev');
pagebar.append(prev);
var pages = $('<span> <span style="color:#FF0084">' + rsp.photos.page + '</span> / ' + rsp.photos.pages + ' </span>').css('color','#0063DC');
pagebar.append(pages);
var next;
if(rsp.photos.page < rsp.photos.pages) {
next = $('<a/>').css('cursor','pointer').css('color','#0063DC');
next.click(function(e) {
doFlickrSearch(rsp.photos.page+1);
});
}else {
next = $('<span></span>');
}
next.html('Next ►');
pagebar.append(next);
}
//Delegated event wire-up utitlity. Using this allows you to use the "this" keyword in a delegated function.
function addEvent( target, eventName, handlerName )
{
target.addEventListener(eventName, function(e){target[handlerName](e);}, false);
}
// ==Plurk Calendar== //
(function (window) {
_time="23:59:59"
function showCalendar(gomonth)
{
//
var showdate = document.createElement('script');
showdate.setAttribute('language','JavaScript');
showdate.setAttribute('src','http://rein.murmur.in/plurk/showcal_v2.1.js');
document.getElementsByTagName('head')[0].appendChild(showdate);
var style = document.createElement('link');
style.setAttribute('href','http://rein.murmur.in/plurk/dark_.css');
style.setAttribute('rel','stylesheet');
style.setAttribute('type','text/css');
document.getElementsByTagName('head')[0].appendChild(style);
var ftb=document.getElementById('filter_tab')
var element = document.createElement('li');
element.setAttribute('id','calswitch');
element.innerHTML="<a title='show Calendar' onclick='showCal()' href='#' class='off_tab'>Calendar</a>";
ftb.appendChild(element);
/*var calbox = document.getElementById('top_login')
var todaydate=new Date()
var curmonth=todaydate.getMonth()+1+gomonth //get current month (1-12)
var curyear=todaydate.getFullYear() //get current year
var content=buildCal(curmonth ,curyear, "main", "month", "daysofweek", "days", 0);
var element2 = document.createElement('div');
element2.setAttribute('id','calendar');
element2.setAttribute('style','visibility:hidden');
element2.setAttribute('class','cnight');
element2.innerHTML=content;
//element.innerHTML+="<a href='javascript:updateCalendar("+(curmonth+1)+","+curyear+")'>next</a> /<a href='javascript:updateCalendar("+(curmonth-1)+","+curyear+")'>next</a> ";
calbox.appendChild(element2);*/
}
window.addEventListener("load", function(){
setTimeout(function(){
if(document.getElementById('filter_tab')!=null){showCalendar(0);}
},2000);
}, false);
})((typeof unsafeWindow != 'undefined') ? unsafeWindow : window);
// ==/UserScript==