me2DAY profile image preview

By Seungwon Jeong Last update Sep 20, 2008 — Installed 79 times.
// me2DAY profile image preview
// version 0.1
// 2008-09-18
// Copyright (c) 2008, Seungwon Jeong
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// --------------------------------------------------------------------
//
// ==UserScript==
// @name          me2DAY profile image preview
// @namespace     http://jeongsw.textcube.com/
// @description   preview me2DAY profile image
// @include       http://me2day.net/*
// ==/UserScript==

// Inspired by http://steelheart.kr/tc/143

// Profile Image
var image = document.createElement('IMG');
image.width = '77';
image.height = '77';
image.style.position = 'absolute';
image.style.display = 'none';
document.body.appendChild(image);

var imageOffset = 15;

// mouseover event handler
function showImage(event) {
  var id;

  if (event.target.tagName !== 'A') {
    return;
  }

  id = event.target.href.substr('http://me2day.net/'.length);

  if (id && /^[\-0-9a-z_]{3,12}$/.test(id)) {
    image.src = 'http://me2day.net/images/user/' + id + '/profile.png';
    image.style.left = (event.pageX + imageOffset) + 'px';
    image.style.top = (event.pageY + imageOffset) + 'px';
    image.style.display = 'inline';
  }
}

// mousemove event handler
function moveImage(event) {
  if (image.style.display === 'none') {
    return;
  }

  image.style.left = (event.pageX + imageOffset) + 'px';
  image.style.top = (event.pageY + imageOffset) + 'px';
}

// mouseout event handler
function hideImage(event) {
  if (image.style.display === 'none' || event.target.tagName !== 'A') {
    return;
  }

  image.style.display = 'none';
}

var i;
var div, divs;
var link, links;

// Comment Author
divs = document.evaluate("//div[@class='entry_comment']",
			 document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (i = 0; i < divs.snapshotLength; ++i) {
  div = divs.snapshotItem(i);

  div.addEventListener('mouseover', showImage, false);
  div.addEventListener('mousemove', moveImage, false);
  div.addEventListener('mouseout', hideImage, false);
}

// Comments To Me, Comments By Me
links = document.evaluate("//ul[@class='your_metoo']/li/a[1]",
			  document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (i = 0; i < links.snapshotLength; ++i) {
  link = links.snapshotItem(i);

  link.addEventListener('mouseover', showImage, false);
  link.addEventListener('mousemove', moveImage, false);
  link.addEventListener('mouseout', hideImage, false);
}

// Nick Name
links = document.evaluate("//span[@class='crumb nick']/a",
			  document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (i = 0; i < links.snapshotLength; ++i) {
  link = links.snapshotItem(i);

  link.addEventListener('mouseover', showImage, false);
  link.addEventListener('mousemove', moveImage, false);
  link.addEventListener('mouseout', hideImage, false);
}