// ----- Meebo ------
// @url http://www.meebo.com/
// @name Meebo
// @desc Notifies about new messages.
// version 1.1
/**
* Revision history:
* version 1.1:
* - Added autologin.
* - Added preference parameters to configure display of: botom bar, meebo blog window, ads, meebo logo and info tooltip.
* - When the text in notification popup is clicked main window appears.
* - Added ability to change wallpaper.
* version 1.0:
* - First release.
*/
// anonymous function that wraps whole script to prevent naming conflicts
new function() {
//SSB.console.init("debug");
var meeboID = ""; // your Meebo ID.
var meeboPwd = ""; // your password.
var autoSubmit = false; // Enable/disable autologon feature
var removeBottomBar = true;
var hideBlog = true;
var hideAds = true;
var hideLogo = false;
var fixDetails = true;
SSB.setIcon("http://cd.pop3.ru/clearmeebo.ico");
document.getElementById('meeboid').value = meeboID;
document.getElementById('meebopassword').value = meeboPwd;
if(autoSubmit) window.setTimeout("gFrontPage.loginUser();", 1000);
if(removeBottomBar) createCSS( '.TaskBar', 'visibility:hidden;');
if(hideBlog) {
createCSS('#welcomeWin','visibility: hidden;');
createCSS('#welcomeWin #content div','overflow : hidden;');
}
if(hideAds) createCSS('.consoleAd','visibility: hidden;');
if(hideLogo) createCSS('#meebologo','visibility: hidden;');
if(fixDetails) createCSS('#infoTooltip','width: 380px;');
function addMeeboControlPanel() {
var meebotopcontainerElem = document.getElementById('meebotopcontainer');
if(meebotopcontainerElem != null){
var nodeControlPanel = document.createElement("div");
nodeControlPanel.innerHTML =
'
';
meebotopcontainerElem.appendChild(nodeControlPanel);
} else {
self.setTimeout(addMeeboControlPanel, 1000);
}
}
// Add control panel to meebo page.
addMeeboControlPanel();
setWallpaper();
// refreshTimeMS - refresh time in milliseconds to check for new messages
var refreshTimeMS = 1000;
checkTitleChange();
function checkTitleChange() {
try {
/* do this every refreshTimeMS seconds */
self.setTimeout(checkTitleChange, refreshTimeMS);
var new_message = document.title;
//SSB.console.debug("new_message=" + new_message);
if (new_message.search('meebo') == 0) {
SSB.setIcon("http://cd.pop3.ru/clearmeebo.ico");
} else {
// swap icon: title is not meebo.com so we must have a message
var iconURL = "http://cd.pop3.ru/meebo_new.ico";
SSB.console.debug("The icon URL is: " + iconURL);
SSB.setIcon("http://cd.pop3.ru/meebo_new.ico");
// check to see if this is an message or contact name
var result = new_message.match('^\".+\"$');
if (result && result.length > 0){
var user = SSB.prefs.getValue('username');
var old_message = SSB.prefs.getValue('prev_message');
// immediately update with new value
SSB.prefs.setValue('prev_message', new_message+'');
//display balloon if messages are different
if (old_message != new_message){
var html = getStringFromFunction(notificationHTML);
html = html.replace(/__USER__/, user);
html = html.replace(/__MESSAGE__/, new_message);
SSB.notify(html, 300, 110, 10);
SSB.prefs.setValue('username', '');
}
}
else SSB.prefs.setValue('username', new_message);
}
} catch(e) {
SSB.console.error("checkTitleChange:");
}
}
}
function createCSS(selector, declaration) {
// test for IE
var ua = navigator.userAgent.toLowerCase();
var isIE = (/msie/.test(ua)) && !(/opera/.test(ua)) && (/win/.test(ua));
// create the style node for all browsers
var style_node = document.createElement("style");
style_node.setAttribute("type", "text/css");
style_node.setAttribute("media", "screen");
// append a rule for good browsers
if (!isIE) style_node.appendChild(document.createTextNode(selector + " {" + declaration + "}"));
// append the style node
document.getElementsByTagName("head")[0].appendChild(style_node);
// use alternative methods for IE
if (isIE && document.styleSheets && document.styleSheets.length > 0) {
var last_style_node = document.styleSheets[document.styleSheets.length - 1];
if (typeof(last_style_node.addRule) == "object") last_style_node.addRule(selector, declaration);
}
}
function setWallpaper(){
var meeboWallPaper = SSB.prefs.getValue('meeboWallPaper');
if (meeboWallPaper){
createCSS('#body.loggedin','background:#000000 url(' + meeboWallPaper + ') repeat center !important;');
}
}
function changeWallPaper(){
var meeboWallPaper = '';
meeboWallPaper = prompt("Please type in the URL of the wallpaper");
if(meeboWallPaper != '' && meeboWallPaper != 'undefined'){
SSB.prefs.setValue('meeboWallPaper', meeboWallPaper);
setWallpaper();
}
return true;
}
/*
* Gets function reference and returns string of first matched text between commented
* block just like this one.
*/
function getStringFromFunction(fnc) {
var string = fnc.toString();
return string.match(/\/\*([\s\S]*)\*\//)[1];
}
function notificationHTML() {/*
meebo
meebo
__USER__
__MESSAGE__
*/}