// ==UserScript==
// @name           No Xbox Live Arcade Demos
// @author         Ben Hollis
// @namespace      http://brh.numbera.com/software/greasemonkeyscripts
// @description    Removes the demo XBLA games from your Xbox.com games list, and removes their score from your total score.
// @include        http://live.xbox.com/*/profile/Achievements/ViewAchievementSummary.aspx*
// @version        1.0
// ==/UserScript==

function removeDemos() {
	var single = true;
	
	if(window.location.href.match(/compareTo/))
		single = false;		

	var games = document.evaluate('//tbody[starts-with(@id,"as_")]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	
	var numRemoved = 0;
	var notPlayed = 0;

	for(var i = 0; i < games.snapshotLength; i++) {
		var game = games.snapshotItem(i);
		// tbody/tr/td<last>/strong/text
		var score = game.firstChild.lastChild.firstChild.firstChild.nodeValue;

		var score2 = score;

		if(!single) {
			// tbody/tr/td<last>/<previous>/strong/text
			score2 = game.firstChild.lastChild.previousSibling.firstChild.firstChild.nodeValue;
		}

		if(score.match(/^0 of 200/) && score2.match(/^0 of 200/)) {
			game.parentNode.removeChild(game);
			numRemoved++;
		} 
		
	}

	if(single) {
		var elements = document.evaluate('//p[@class="XbcFloatLeft"]/strong', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

		for(var i = 0; i < elements.snapshotLength; i++) {
			var element = elements.snapshotItem(i);
		
			var elementContents = element.firstChild.nodeValue;

			var numGamesResult = /(\d+) Game\(s\) Played/.exec(elementContents);

			if(numGamesResult && numGamesResult.length == 2) {
				var numGames = numGamesResult[1];
				numGames -= numRemoved;

				element.innerHTML = elementContents.replace(/(\d+)/, numGames);
			}
			else {
				var scoreResult = /of (\d+) Gamerscore/.exec(elementContents);

				if(scoreResult && scoreResult.length == 2) {
					var score = scoreResult[1];
					score -= 200 * numRemoved;

					element.innerHTML = elementContents.replace(/of (\d+) Gamerscore/, "of " + score + " Gamerscore");
				}
			}
		}		
	}
}

removeDemos();