StudiVZ - highlight unread messages

By Valentin Laube Last update Apr 10, 2007 — Installed 958 times.
// ==UserScript==
// @name           StudiVZ - highlight unread messages
// @namespace      http://valentinlaube.blogspot.com/
// @description    highlight unread messages
// @include        http://www.studivz.net/group.php*
// ==/UserScript==

var threadTitlesXPath = "id('profileganzbreit')/div/table/tbody/tr/td/div/div/strong/a";
var threadChangedTextsXPath = "id('profileganzbreit')/div/table/tbody/tr/td/div/a[2]/small";

var groupName = getGroupName();

var threadTitleTexts = getInnerHTMLFromNodes(getNodesFromXPath(threadTitlesXPath));
var threadChangeNodes = getNodesFromXPath(threadChangedTextsXPath)
var threadChangeTexts = getInnerHTMLFromNodes(threadChangeNodes);

for (var i=0; i<threadTitleTexts.length; i++) {
	if(!threadChangeNodes[i]) {
		continue;
	}

	var lastChangeText = GM_getValue('studivz.'+groupName+'.'+threadTitleTexts[i]);
	
	if(lastChangeText != threadChangeTexts[i]) {
		// thread changed since last visit
		threadChangeNodes[i].style.color = 'red';
		threadChangeNodes[i].style.fontWeight = 'bold';
	} else {
		// debug: no change
		//threadChangeNodes[i].style.color = 'green';
	}

	// update prefs
	GM_setValue('studivz.'+groupName+'.'+threadTitleTexts[i], threadChangeTexts[i]);
}



/******/

function getGroupName() {
	var xpath = "id('headline')/h1";
	var results = unsafeWindow.document.evaluate(xpath, document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

	return results.snapshotItem(0).innerHTML;
}

function getNodesFromXPath(xpath) {
	var results = unsafeWindow.document.evaluate(xpath, document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
	var resultarray = new Array();

	for (var i=0; i<results.snapshotLength; i++) {
		resultarray[i] = results.snapshotItem(i);
	}

	return resultarray;
}

function getInnerHTMLFromNodes(nodes) {
	var resultarray = new Array();

	for (var i=0; i<nodes.length; i++) {
		resultarray[i] = nodes[i].innerHTML;
	}

	return resultarray;
}