Yahoo Mail Preview

By Raj Mohan Last update Jul 31, 2006 — Installed 1,512 times.
// ==UserScript==
// @name          Yahoo Mail Preview
// @namespace     http://www.devdive.com/
// @include       http://*.mail.yahoo.com/*
// @description	  Lets you preview Yahoo! email messages from Inbox
//                or a folder instead of having to click on them.
// ==/UserScript==

var a;
var msg_num=0;
var msg_header = " ";

var preview = document.createElement("div");
preview.id = "m_preview";
preview.style.display="none";
preview.style.position = "absolute";
preview.style.background = "#fff";
preview.style.border="1px solid #000";
preview.style.padding="4px 4px";
var w = screen.availWidth/2;
preview.style.overflow="auto";
preview.style.zIndex="999";
preview.addEventListener('click',function() {
	this.style.display="none";
},true);

document.body.appendChild(preview);

link_to_msgs = document.evaluate(
    "//a[contains(@id, 'folderviewmsg')]",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);

var msgs = new Array(link_to_msgs.snapshotLength);
var msg_id = new Array(link_to_msgs.snapshotLength);

for(var i=0;i<link_to_msgs.snapshotLength;i++) {	
	a=link_to_msgs.snapshotItem(i);	
	//alert(a.href);
	var prv_link = document.createElement('a');	
	prv_link.setAttribute('title', 'Click to see message preview');
	prv_link.setAttribute('href','javascript:void(0);');
	prv_link.setAttribute('onmouseover','window.defaultStatus=this.name;return true');
	prv_link.textContent = "\u00bb";	
	prv_link.id = a.href;
	prv_link.addEventListener('click',function(event) {
		var msg_prev = getMessage(this.id);
		preview.style.display="block";
		preview.style.left=(event.pageX-4)+"px";
		preview.style.top=(event.pageY-4)+"px";
		preview.innerHTML = msg_prev;		
	},true);	
	var t = document.createTextNode(" ");
	a.parentNode.insertBefore(t,a);
	a.parentNode.insertBefore(prv_link,t);	
	GM_xmlhttpRequest({
	method: 'GET',
	url: a.href,
	onload: function(responseDetails) {
		var msg_code = responseDetails.responseText;			
		var mid=msg_code.match(/Mid=.*&inc/);
		mid+='';
		mid=mid.replace(/Mid=((.)*)&inc/,"$1");		
		msg_id[msg_num]=mid+'';
		msgs[msg_num]=msg_code.match(/<div id=\"message\"(.|\n)*END TOC -->/g);		
		msg_num++;
		}
	});
}


function getMessage(href) {
	for(i=0;i<msg_id.length;i++) {
		var m = msg_id[i]+'';
		if(href.match(m)) {			
			return msgs[i];
		}
	}
	return "";
}