Mail.ru message view: "Mark as Unread" command

By rowaasr13 Last update Oct 13, 2008 — Installed 403 times.

There are 1 previous version of this script.

// ==UserScript==
// @name          Mail.ru message view: "Mark as Unread" command
// @namespace     http://*.mail.ru/cgi-bin/readmsg*
// @description   Adds "Mark as Unread" command to command bar on Mail.ru message view page, allowing you to return to message list marking message you were viewing as "unread".
// @include       http://*.mail.ru/cgi-bin/readmsg*
// ==/UserScript==

// find id of current message
function get_msgid(){
	var msgid;
	var links=document.getElementsByTagName("a");
	if (!links.length) { return; }
	for (var i=0; i<links.length; i++){
		var match;
		if (match=/sentmsg.*reply.*[?&]id=(\d+)/.exec(links[i].href)) { msgid=match[1]; break; }
	}
	// GM_log("MSG ID: "+msgid);
	return msgid;
}

function skip_siblings(element, skip){
	for (var i=0; i<skip; i++){
		element=element.nextSibling;
	}
	return element;
}

var msgid=get_msgid();
var insert_after_sibling=2;

var allTables=document.getElementsByTagName("table");
if (!allTables.length) { return; }
for (var i=0; i<allTables.length; i++){
	if(allTables[i].className=="mail_opc"){
		var after=allTables[i].getElementsByTagName("tr");
		if (!after.length) { return; }
		after=after[0].getElementsByTagName("td");
		if (!after.length) { return; }
		after=skip_siblings(after[0], insert_after_sibling);
		// construct new elements for mail_opc bar 
		// TODO: clone them from existing elements, replacing text, alt, img and link separately
		// new menu item
		var mark_unread=document.createElement("td");
		mark_unread.setAttribute("nowrap", "nowrap");
		mark_unread.innerHTML='<a href="movemsg?markmessage=1&mark=+%EE%EA+&id='+msgid+'"><img align=absmiddle src=http://img.mail.ru/mail/ru/images/500.gif width=14 height=14 title="Mark as unread" hspace=4></a><a href="movemsg?markmessage=1&mark=+%EE%EA+&id='+msgid+'">Unread</a>';
		// new menu separator
		var td_opc_after=document.createElement("td");
		td_opc_after.setAttribute("width", "4%");
		td_opc_after.innerHTML='<img src=http://img.mail.ru/0.gif width=2 height=1>';
		// reverse "unshift" order
		after.parentNode.insertBefore(td_opc_after, after);
		after.parentNode.insertBefore(mark_unread, after);
	}
}