Sort Xbox Friends

By Thlayli Last update Oct 21, 2008 — Installed 322 times.

There are 2 previous versions of this script.

// ==UserScript==
// @name           Sort Xbox Friends
// @namespace      thlayli.detrave.net
// @description    Sort Xbox Friends Management list by date/time
// @include        http://live.xbox.com/en-us/profile/Friends.aspx*
// @version        1.2.1
// ==/UserScript==

var mainTable = document.evaluate("//table[contains(@class,'XbcProfileTable XbcFriendsListTable')]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null );
var tds = mainTable.singleNodeValue.getElementsByTagName('td');

trs = document.getElementsByTagName('tr');
offTime = new Array();
offDate = new Array();
offBlank = new Array();
function sortByTime(a,b) {
    var x = parseFloat(a.time);
    var y = parseFloat(b.time);
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
function sortByDate(a,b) {
    var x = Date.parse(a.date);
    var y = Date.parse(b.date);
    return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
for(i=0;i<trs.length;i++){
	if(trs[i].textContent.indexOf('Last seen')!=-1&&trs[i].textContent.indexOf('Offline')!=-1&&trs[i].textContent.indexOf('ago')!=-1){
		time = trs[i].textContent.replace(/.+Last seen (\d{1,60} \w{4,7}) ago(.+)?/,'$1');
		if(time.indexOf('minute')!=-1)
			time = time.replace(/ minutes?/,'');
		if(time.indexOf('hour')!=-1)
			time = time.replace(/(\d{1,60}) hours?/,'$1') * 60;
		offTime[offTime.length]={time:time,row:trs[i]};
	}
}
for(i=0;i<trs.length;i++){
	if(trs[i].textContent.indexOf('Last seen')!=-1&&trs[i].textContent.indexOf('Offline')!=-1&&trs[i].textContent.indexOf('ago')==-1){
		date = trs[i].textContent.replace(/.+Last seen (\d{1,2}\/\d{1,2}\/\d{2})(.+)?/,'$1');
		offDate[offDate.length]={date:date,row:trs[i]};
	}
}
for(i=0;i<trs.length;i++){
	if(trs[i].innerHTML.indexOf('<p>&nbsp;</p>')!=-1)
		offBlank[offBlank.length]=trs[i];
}
offTime.sort(sortByTime);
offDate.sort(sortByDate);
for(i=0;i<offTime.length;i++){
	prt = offTime[i].row.parentNode;
	prt.removeChild(offTime[i].row);
}
for(i=0;i<offDate.length;i++){
	prt = offDate[i].row.parentNode;
	prt.removeChild(offDate[i].row);
}
for(i=0;i<offBlank.length;i++){
	prt = offBlank[i].parentNode;
	prt.removeChild(offBlank[i]);
}
for(i=0;i<offTime.length;i++)
	prt.appendChild(offTime[i].row);
for(i=0;i<offDate.length;i++)
	prt.appendChild(offDate[i].row);
for(i=0;i<offBlank.length;i++)
	prt.appendChild(offBlank[i]);