deviantSTATS 2.4b Update

By Solitude12 Last update Nov 16, 2008 — Installed 2,295 times.

There are 6 previous versions of this script.

Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)

// ==UserScript==
// @name           deviantSTATS
// @namespace      http://solitude12.deviantart.com/
// @description    Adds deviant stats to the userpage of any deviant!
// @include        http://*.deviantart.com/
// @include        http://*.deviantart.com/?*
// ==/UserScript==

/* 
 * Author: Solitude12
 * Date: November 12th, 2008
 * Version: 2.4b
 *
 * Copyright © Solitude12 - http://solitude12.deviantart.com/
 * Please do not redistribute any part of this code without
 * permission of Solitude12.
*/

var deviantNAME = document.getElementsByTagName('body')[0].innerHTML.match(/<h1>(.*)<a class="u" href="http:\/\/(.*).deviantart.com\/">(.*)<\/h1>/)[2];
var optionsIsCreated = false;
var extendSTATS = GM_getValue('deviantSTATS.extend', 'false'); // It is off by default.
var SCRIPT_VERSION = "2.4b";

var imageSRCS = ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKfSURBVDjLpZPrS1NhHMf9O3bOdmwDCWREIYKEUHsVJBI7mg3FvCxL09290jZj2EyLMnJexkgpLbPUanNOberU5taUMnHZUULMvelCtWF0sW/n7MVMEiN64AsPD8/n83uucQDi/id/DBT4Dolypw/qsz0pTMbj/WHpiDgsdSUyUmeiPt2+V7SrIM+bSss8ySGdR4abQQv6lrui6VxsRonrGCS9VEjSQ9E7CtiqdOZ4UuTqnBHO1X7YXl6Daa4yGq7vWO1D40wVDtj4kWQbn94myPGkCDPdSesczE2sCZShwl8CzcwZ6NiUs6n2nYX99T1cnKqA2EKui6+TwphA5k4yqMayopU5mANV3lNQTBdCMVUA9VQh3GuDMHiVcLCS3J4jSLhCGmKCjBEx0xlshjXYhApfMZRP5CyYD+UkG08+xt+4wLVQZA1tzxthm2tEfD3JxARH7QkbD1ZuozaggdZbxK5kAIsf5qGaKMTY2lAU/rH5HW3PLsEwUYy+YCcERmIjJpDcpzb6l7th9KtQ69fi09ePUej9l7cx2DJbD7UrG3r3afQHOyCo+V3QQzE35pvQvnAZukk5zL5qRL59jsKbPzdheXoBZc4saFhBS6AO7V4zqCpiawuptwQG+UAa7Ct3UT0hh9p9EnXT5Vh6t4C22QaUDh6HwnECOmcO7K+6kW49DKqS2DrEZCtfuI+9GrNHg4fMHVSO5kE7nAPVkAxKBxcOzsajpS4Yh4ohUPPWKTUh3PaQEptIOr6BiJjcZXCwktaAGfrRIpwblqOV3YKdhfXOIvBLeREWpnd8ynsaSJoyESFphwTtfjN6X1jRO2+FxWtCWksqBApeiFIR9K6fiTpPiigDoadqCEag5YUFKl6Yrciw0VOlhOivv/Ff8wtn0KzlebrUYwAAAABJRU5ErkJggg%3D%3D", // up to date
				 "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKgSURBVDjLlZLrS1NxGMd90ZvovdEfEBEUEhZIb0xMjdyLIuyGkiHGUFKydFKKJiRegjIyFJRwojMxzfJSaVOYeTfxtpSNuZ1tXnY2z27nsss5334uWloG9uLD7/A7z/fzPPx4IgBE7ISl3qWyelUvu9JIueZqeOdUmcCMFDgcQ3fntjSK0j/rwx+csesIZ3jbL1j6EbCPIej5DpE3QRIoBJ3LEFb74BjIxkbXVYNdrTixS8Ca3h/y6pSTfloD0UcRjCS8BJGbRdA7QRgjd1pIfhruyeewKOMdm+rCw2GBV1tXKZh7SIEVoqAjpwVS0AlIvhBSkCGyeQRcPYDogO1DNixvrveFBa6ZCkuAmSe1OtJpFVLATkJboWCIAE3+GYngI6ENgnUK+hcxfFiw9fWRT+RWEWTHEeRmyPhaMvYCgu5ZEpgkbzCCgPszBNsr8NY8iF4Ky5WnpLDArs41+zYnSPdF8OYi0qEcTHc6mF45mJ4M2Ftl4C1lYPU34KerwFNTWKmO/j2BfbiwghmvJuPawZsUsNVHgTPlEx6ANcjJeR9r5QfhWUqEJOlhbc+FoV42FBY4R0sPbPbKlz2LLeQB9aCbYkJhzpIFlkoDZ8zDRk0kRHYYrm8d0JYeEyyduUd37QH9pTBqvSOV9iy0wtmZ+VNAOm+HOeM92JtlYDQN0JYcD1BtmTf/WqRtbJ/yTxtUt9fXGhPBq5MhriVBtMYhoLkMQ1Ek5sqi3eb2O4l7buIvhlRPkmsfZ/ibax+iruosnpacQUFOOq7Fn5TUypJz/1zlnRQr5JSypRVKZRvq6htR/ewlriTH03vV7ilQ5NwaHRgchM1GY3p6Bq+bmpEii9XtWzCgqkhLuXSBTUg4L8XFxUoXk2K57obirH0L/ocfNQ8V8wE+uE0AAAAASUVORK5CYII%3D", // needs update
				 "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJPSURBVDjLpZPLS5RhFMYfv9QJlelTQZwRb2OKlKuINuHGLlBEBEOLxAu46oL0F0QQFdWizUCrWnjBaDHgThCMoiKkhUONTqmjmDp2GZ0UnWbmfc/ztrC+GbM2dXbv4ZzfeQ7vefKMMfifyP89IbevNNCYdkN2kawkCZKfSPZTOGTf6Y/m1uflKlC3LvsNTWArr9BT2LAf+W73dn5jHclIBFZyfYWU3or7T4K7AJmbl/yG7EtX1BQXNTVCYgtgbAEAYHlqYHlrsTEVQWr63RZFuqsfDAcdQPrGRR/JF5nKGm9xUxMyr0YBAEXXHgIANq/3ADQobD2J9fAkNiMTMSFb9z8ambMAQER3JC1XttkYGGZXoyZEGyTHRuBuPgBTUu7VSnUAgAUAWutOV2MjZGkehgYUA6O5A0AlkAyRnotiX3MLlFKduYCqAtuGXpyH0XQmOj+TIURt51OzURTYZdBKV2UBSsOIcRp/TVTT4ewK6idECAihtUKOArWcjq/B8tQ6UkUR31+OYXP4sTOdisivrkMyHodWejlXwcC38Fvs8dY5xaIId89VlJy7ACpCNCFCuOp8+BJ6A631gANQSg1mVmOxxGQYRW2nHMha4B5WA3chsv22T5/B13AIicWZmNZ6cMchTXUe81Okzz54pLi0uQWp+TmkZqMwxsBV74Or3od4OISPr0e3SHa3PX0f3HXKofNH/UIG9pZ5PeUth+CyS2EMkEqs4fPEOBJLsyske48/+xD8oxcAYPzs4QaS7RR2kbLTTOTQieczfzfTv8QPldGvTGoF6/8AAAAASUVORK5CYII%3D", // needs downdate
				 "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIsSURBVDjLpVNLSJQBEP7+h6uu62vLVAJDW1KQTMrINQ1vPQzq1GOpa9EppGOHLh0kCEKL7JBEhVCHihAsESyJiE4FWShGRmauu7KYiv6Pma+DGoFrBQ7MzGFmPr5vmDFIYj1mr1WYfrHPovA9VVOqbC7e/1rS9ZlrAVDYHig5WB0oPtBI0TNrUiC5yhP9jeF4X8NPcWfopoY48XT39PjjXeF0vWkZqOjd7LJYrmGasHPCCJbHwhS9/F8M4s8baid764Xi0Ilfp5voorpJfn2wwx/r3l77TwZUvR+qajXVn8PnvocYfXYH6k2ioOaCpaIdf11ivDcayyiMVudsOYqFb60gARJYHG9DbqQFmSVNjaO3K2NpAeK90ZCqtgcrjkP9aUCXp0moetDFEeRXnYCKXhm+uTW0CkBFu4JlxzZkFlbASz4CQGQVBFeEwZm8geyiMuRVntzsL3oXV+YMkvjRsydC1U+lhwZsWXgHb+oWVAEzIwvzyVlk5igsi7DymmHlHsFQR50rjl+981Jy1Fw6Gu0ObTtnU+cgs28AKgDiy+Awpj5OACBAhZ/qh2HOo6i+NeA73jUAML4/qWux8mt6NjW1w599CS9xb0mSEqQBEDAtwqALUmBaG5FV3oYPnTHMjAwetlWksyByaukxQg2wQ9FlccaK/OXA3/uAEUDp3rNIDQ1ctSk6kHh1/jRFoaL4M4snEMeD73gQx4M4PsT1IZ5AfYH68tZY7zv/ApRMY9mnuVMvAAAAAElFTkSuQmCC", // error
				 "data:image/gif;base64,R0lGODlhDwAPAJEAAP////X09EdSS////yH5BAEHAAMALAAAAAAPAA8AAAIrnC2Zx6O/GJxnWpRAUAEox2lCt1mjJpoJqa5oabHsp6TnB7ZC1TZqw8MdCgA7", // close
				 "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJrSURBVDjLdVNLaxNRFJ6VP6GgG7eCuBAEN65LFwUXLlyIEsUqKLgQdwXBhaal1YiYNK8mNCXBPBqIMYJJE/IqWeRlkyYpDc2DBJMmpU4TSqNJ+nnPpS06qRc+5s6Zc77vu+fcEQAIUoTD4Tdut7tuMpmOCLSn2Fm5I4GVlZUxq9X6G5JFMYvFcuFMgmPFMlMbMsDlciGfz2M4HGIwGCCbzfIYfaMcyj1xxAkYe+9vtUqlAofDgfX1dQ673c5jEkc9TuB0Oo0MyOVyXJEQi8Xg8XiwvLzMQXuKkZt+v49MJgOqWVxctAhMqb+5uYlkMolUKsUVSV26ThwlEgmEQiEEAgHodLq+wOyJ3W4XOzs72N7eRqlUAjsftra2Th3RPhKJoFAowOfzcaTTaWi1WlGw2WycYH9/H3t7e6hWq9xuPB4/7QGpUhOpMBgMcpBbjUYjUgM5gSiK2N3dRavVQr1e56p0tGg0ygvJMjkjJ0RAAmq1WhTYbH8dHByg0+mg0Wjw4nK5jGKxyEdJyVSodSjwXHUXj97dxD35OOZML6FUKnuC2Wz2EXutVuPHIBLqBTkgAvr28dMsXtnv48uGEt9/eKHwPcFtxRXcmZ6oCWxM59jlmFpaWipSd5vNJtrtNm8mEZB92ewEXNn3cOU/8InMr05BsfoY15+ePzy9kkajccxgMLxms/25trbGSYiMGjg5fRVfN/T/jPVzRkkEoz+HXq+/zOZrZiM6orvh9/tx49lFzHkfQO6V8WL5N9moAylYh8cXFhYCKpUqOvnimvXW/CW89T7kyvSkd0Yw/18CKVjyDEOHbB8/Zyj+B1XaG3VPBqIRAAAAAElFTkSuQmCC" //extend stats
				];

function Comma(number)
{
	number = '' + number;
	if (number.length > 3)
	{
		var mod = number.length % 3;
		var output = (mod > 0 ? (number.substring(0,mod)) : '');
		for (i=0 ; i < Math.floor(number.length / 3); i++)
		{
			if ((mod == 0) && (i == 0))
				output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
			else
				output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
		}
		return (output);
	}
	else return number;
}

function closeOptions(){
	document.getElementsByTagName('body')[0].removeChild(document.getElementById('deviantSTATS_Options'));
	document.getElementsByTagName('body')[0].removeChild(document.getElementById('deviantSTATS_bgcover'));
	optionsIsCreated=false;
}

function checkForUpdates(){	
	document.getElementById('deviantSTATS_Options_Updates').innerHTML = '<span id="deviantSTATS_Options_Updates">Checking for updates...</span><br><br>';
	
	GM_xmlhttpRequest(
	{
		method: 'GET',
		url: 'http://www.deviantart.com/download/63017432/',
		onload: function(details){
			var theData = details.responseText; // get data
			theData = theData.match(/VERSION = "(.*)";/);
			if (theData){
				eval("var LATEST_" + theData[0]);
				if (LATEST_VERSION==SCRIPT_VERSION)
					document.getElementById('deviantSTATS_Options_Updates').innerHTML = '<img align="top" src="' + imageSRCS[0] + '"/> <b><u>deviantSTATS is up-to-date!</u></b><br>You currently have the most recent version: ' + SCRIPT_VERSION;
				else if (LATEST_VERSION>SCRIPT_VERSION)
					document.getElementById('deviantSTATS_Options_Updates').innerHTML = '<img align="top" src="' + imageSRCS[1] + '"/> <b><u>deviantSTATS needs an update!</u></b><br>Version ' + LATEST_VERSION + ' is available!<br><sub>       <a href="http://userscripts.org/scripts/source/20790.user.js">Direct Install</a> | <a href="http://www.deviantart.com/deviation/63017432/">Details</a>';
				else
					document.getElementById('deviantSTATS_Options_Updates').innerHTML = '<img align="top" src="' + imageSRCS[2] + '"/> <b><u>deviantSTATS is newer than it should be!</u></b><br>Stop messin\' with the variables! :C';
			} else {
				document.getElementById('deviantSTATS_Options_Updates').innerHTML = '<img align="top" src="' + imageSRCS[3] + '"/> <b><u>An error occured while checking for updates.</u></b><br>How Sad :(';
			}
			document.getElementById('deviantSTATS_Options_Updates').innerHTML += '<div align="right"><input type="submit" id="deviantSTATS_Options_CheckUpdates" value="Check again."/></div>';
			document.getElementById('deviantSTATS_Options_CheckUpdates').addEventListener('click', function(e){
				checkForUpdates();
			}, false);
		}
	});
}

function createOptions(){
	optionsIsCreated = true;
	
	var bg = document.createElement('span');
	bg.setAttribute("id","deviantSTATS_bgcover");
	bg.setAttribute("style","position:fixed; top:0px; left:0px; bottom:0px; right:0px; background-image:url('http://st.deviantart.com/styles/minimal/minish/bg-fade.png'); z-index:225;");
	document.getElementsByTagName('body')[0].appendChild(bg);
	
	bg.addEventListener('click', function(e){
		closeOptions();
	}, false);
	
	var optionsPopup = document.createElement('div');
	optionsPopup.setAttribute("id","deviantSTATS_Options"); GM_addStyle("#deviantSTATS_Options a {color:#222222 !important; }");
	optionsPopup.setAttribute("style", "-moz-border-radius: 8px !important; background: url(http://st.deviantart.com/minish/main/bg-bubblb3.gif) repeat-x #BAC5BA 0px -35px;  border:none; border-top:1px #BEC9BF solid; top:50%; left:50%; margin-top:-157.5px; margin-left:-195px; position:fixed; height:275px; width:350px; z-index:226; padding: 20px; solid; font-size: 12px; color: #333333; -moz-opacity:1.0;opacity:1.0;");
	document.getElementsByTagName('body')[0].appendChild(optionsPopup);
	
	optionsPopup.innerHTML = '<span id="deviantSTATS_Options_close" title="Close" style="width: 17px; height: 17px; background:transparent url(' + imageSRCS[4] + ') no-repeat;position: absolute; right: 10px; top: 10px; cursor: pointer;"></span>' +
							 '<span style="position: absolute; left: 0px; bottom: 0px; background:#D6DED4; border-top:1px solid #E4EAE3; width:370px; padding:10px; -moz-border-radius: 0px 0px 7px 7px !important; font-size:10px; font-weight:bold;"><a target="_blank" style="outline:none;" href="http://www.deviantart.com/deviation/63017432/">deviantSTATS</a> v' + SCRIPT_VERSION + ' by =<a href="http://solitude12.deviantart.com/">Solitude12</a></span>' + 
							 '<span style="position: absolute; right: 0px; bottom: 0px; padding:10px; font-size:10px; font-weight:bold;"><a target="_blank" style="outline:none;" href="http://solitude.metagrounds.com/deviantSTATS/deviantSTATS-Release.html">What\'s new in v' + SCRIPT_VERSION + '?</a></span>' + 
							 '<div align="center" style="color:#333333;font-family:Trebuchet MS; font-size:22px;margin-bottom:10px; font-weight:bold; text-align:center;">deviantSTATS - Options<br><br></div><span id="deviantSTATS_Options_Updates"></span>';

	checkForUpdates();

	var onval="";
	var offval="";
	if (extendSTATS=='true')
		onval = ' checked="checked"';
	else
		offval = ' checked="checked"';
	optionsPopup.innerHTML += '<img align="top" src="' + imageSRCS[5] + '"/> <b><u>extendSTATS</u></b><br>This option allows deviantSTATS to load more information from different sources. By turning this on, you are risking longer loading times for deviantSTATS.<br><input type="radio" name="deviantSTATS_Options_Extend" id="deviantSTATS_Options_Extend" value="true"' + onval + '/><label for="deviantSTATS_Options_Extend_On">On</label> <input type="radio" id="deviantSTATS_Options_Extend"  name="deviantSTATS_Options_Extend" value="false"' + offval + '/><label for="deviantSTATS_Options_Extend_Off">Off</label>';
	optionsPopup.innerHTML += '<br><div align="right"><input type="submit" id="deviantSTATS_Options_Apply" value="Apply Changes"/> <input type="reset" id="deviantSTATS_Options_Cancel" value="Cancel"/><br><sub>Note: The current page will be refreshed to apply changes.</sub></div>';
	
	document.getElementById('deviantSTATS_Options_close').addEventListener('click', function(e){
			closeOptions();
		}, false);	
	
	document.getElementById('deviantSTATS_Options_Apply').addEventListener('click', function(e){
		GM_setValue('deviantSTATS.extend', '' + document.getElementById('deviantSTATS_Options_Extend').checked);
		extendSTATS = '' + document.getElementById('deviantSTATS_Options_Extend').checked;
		closeOptions();
		window.location = window.location;
	}, false);
	
	document.getElementById('deviantSTATS_Options_Cancel').addEventListener('click', function(e){
		closeOptions();
	}, false);

}


function addStat(name, value)
{
	if (value != null && value!='')
		document.getElementById('deviantstats').innerHTML+='<li class="f"><strong>' + value + ' <\/strong> ' + name + '<\/li>';
	else
		document.getElementById('deviantstats').innerHTML+='<li class="f">' + name + '<\/li>';
}

function addExtensionsStat(name, value)
{
	if (value != null && value!='')
		document.getElementById('extendSTATS').innerHTML+='<li class="f"><strong>' + value + ' <\/strong> ' + name + '<\/li>';
	else
		document.getElementById('extendSTATS').innerHTML+='<li class="f">' + name + '<\/li>';
}

GM_xmlhttpRequest(
{
	method: 'GET',
	url: 'http://' + deviantNAME + '.deviantart.com/stats/gallery/',
	onload: function(responseDetails)
	{
		if (document.getElementById('deviant-stats').innerHTML.indexOf('Friend')>-1)
			return; // already should be running... (previous bug, now fixed!)
		var data = responseDetails.responseText; // get data
		data = data.substring(data.indexOf("deviantART.pageData")+20, data.indexOf("\n</script>")); // get data within data xD
		if (data=="" || data.charAt(0)!='{')
			return;
		eval("_data = "+data+";"); // evaluate data..
		
		uS = _data.userstats; // get stats from evaluated data
		gS= _data.devstats;   // ^^^ ^^^^^ ^^^^ ^^^^^^^^^ ^^^^

		if (!uS)
			return;

		var nodes;
		var node;
		nodes = document.evaluate("//ul[@class='f']/li[@class='f']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
		for (var i=0; node=nodes.snapshotItem(i); i++)
			if (node.innerHTML.indexOf('Pageviews')>-1)
			{
				node.innerHTML += '</li>';
				//if (document.getElementById('deviant-stats').innerHTML.indexOf('Deviations')>-1) // Something todo later >_>
					node.innerHTML += '<div id="faderingthing" style="position:absolute; bottom:0; left:0; right:0; height:48px; z-index:102; background:url(http://s.deviantart.com/styles/minimal/minish/deviant-fade.png) repeat-x bottom;"></div><span id="deviantstats"><div id="fading"></div></span><li style="display:none !important;">';
				//else
				//	node.innerHTML += '<span id="deviantstats"></span><li style="display:none !important;">';
			}
						
		var statsElement = document.getElementById('deviant-stats');
		statsElement.setAttribute('style', 'position:relative; opacity:1.0;  height:136px; overflow:hidden; overflow-x:visible; padding:6px; cursor:default; z-index:1; margin:-6px -6px -121px -6px; border:1px solid transparent;'); 
		statsElement.setAttribute('onmouseover', 'this.style.opacity="0.93"; this.style.zIndex="100"; this.style.height="auto"; this.style.overflow="show"; this.style.margin="-6px -6px -400px -6px"; document.getElementById(\'faderingthing\').style.display="none"; this.style.border="1px solid #9AA59A"; this.style.background="#CAD5CA";'); 
		statsElement.setAttribute('onmouseout', 'this.style.opacity="1.0"; this.style.height="136px"; this.style.overflow="hidden"; this.style.margin="-6px -6px -121px -6px"; document.getElementById(\'faderingthing\').style.display="block"; this.style.border="1px solid transparent"; this.style.background="transparent";');

		var mostv = 0, mostf = 0, mostc = 0, mostfv = 0, totalviewed = 0, totalfavs = 0, totalcomments = 0;
		var totalDaysOnDA = Math.round((new Date()-Date.parse(uS.since))/86400000);
		var categories = [];
		var subcategories = [];
		
		for (var i in gS)
		{
			if (gS[i].views>=gS[mostv].views)
				mostv = i;
				
			if (gS[i].favourites>=gS[mostf].favourites)
				mostf = i;
				
			if (gS[i].comments>=gS[mostc].comments)
				mostc = i;
				
			if (gS[i].fullviews>=gS[mostfv].fullviews)
				mostfv = i;
				
			totalviewed += gS[i].views;
			totalfavs += gS[i].favourites;
			totalcomments += gS[i].comments;
			
			// New system has a better cat system :D
			if(categories[gS[i].category.substring(0, gS[i].category.indexOf('/'))])
				categories[gS[i].category.substring(0, gS[i].category.indexOf('/'))]++;
			else
				categories[gS[i].category.substring(0, gS[i].category.indexOf('/'))]=1;
			
			// subcategories
			if(subcategories[gS[i].category])
				subcategories[gS[i].category]++;
			else
				subcategories[gS[i].category]=1;
		}
		
		var mostcatN=0, mostcatT="";
		for (var category in categories)
			if(categories[category]>=mostcatN)
			{
				mostcatT = category;
				mostcatN = categories[category];
			}	
			
		var mostSubcatN=0, mostSubcatT="";
		for (var subcategory in subcategories)
			if(subcategories[subcategory]>=mostSubcatN)
			{
				mostSubcatT = subcategory;
				mostSubcatN = subcategories[subcategory];
			}
			
		if (uS.friends)
			if (uS.friends!=1)
				addStat('Friends', Comma(uS.friends));
			else
				addStat('Friend', Comma(uS.friends));
		
		if (uS.friendswatching)
			if (uS.friendswatching!=1)
				addStat('Watchers', Comma(uS.friendswatching));
			else
				addStat('Watcher', Comma(uS.friendswatching));
			
		if (uS.shouts)
			if (uS.shouts!=1)
				addStat('Official Shouts', Comma(uS.shouts));
			else
				addStat('Official Shout', Comma(uS.shouts));
					
		if (uS.commentspolls)
			if (uS.commentspolls!=1)
				addStat('Official Poll Comments', Comma(uS.commentspolls));
			else
				addStat('Official Poll Comment', Comma(uS.commentspolls));		
				
		if (extendSTATS=='true'){
			document.getElementById('deviantstats').innerHTML+='<span id="extendSTATS"></span>';
					
			var P = 0;
			GM_xmlhttpRequest(
			{
				method: 'GET',
				url: 'http://' + deviantNAME + '.deviantart.com/journal/poll/',
				onload: function(responseDetails)
				{
					var pageBody = responseDetails.responseText;
					pageBody = pageBody.substring(pageBody.indexOf('<div class="iehh ppp mglist">'));
					var pollBody = pageBody.substring(0, pageBody.indexOf('</div>'));
					if (pollBody && pollBody.indexOf('<li>')>-1){
						var polls = pollBody.split('<li>');
						P = polls.length;
						if (P!=0){
							if (P!=1)
								addExtensionsStat('<a style="color: #2C3635 !important;" href="http://' + deviantNAME + '.deviantart.com/journal/poll/"><u>Polls Created</u></a>', Comma(P));
							else
								addExtensionsStat('<a style="color: #2C3635 !important;" href="http://' + deviantNAME + '.deviantart.com/journal/poll/"><u>Poll Created</u></a>', Comma(P));
						}
					}
				}
			});
			
			var DDS=0;
			GM_xmlhttpRequest(
			{
				method: 'GET',
				url: 'http://' + deviantNAME + '.deviantart.com/dds/',
				onload: function(responseDetails)
				{
					var ddBody = responseDetails.responseText;
					if (ddBody && ddBody.indexOf("<div class=\"tt-a\"")>-1){
						DDS = ddBody.split("<div class=\"tt-a\"").length-1;
						if (DDS!=0){
							if (DDS!=1)
								addExtensionsStat('<a style="color: #2C3635 !important;" href="http://' + deviantNAME + '.deviantart.com/dds/"><u>Daily Deviations</u></a>', Comma(DDS));
							else
								addExtensionsStat('<a style="color: #2C3635 !important;" href="http://' + deviantNAME + '.deviantart.com/dds/"><u>Daily Deviation</u></a>', Comma(DDS));
						}
					
					}
				}
			});			
			
			var entries = 0;
			var JE = 0;
			GM_xmlhttpRequest(
			{
				method: 'GET',
				url: 'http://' + deviantNAME + '.deviantart.com/journal/?offset=100000',
				onload: function(responseDetails)
				{
					var impossibleJournalBody = responseDetails.responseText; // 210, 22
					var lastPages = impossibleJournalBody.match(/<span class="shadow">(.*)&nbsp;<del>Next Page<\/del>/g);
					if (lastPages){
						lastPages[0] = lastPages[0].substring(21, lastPages[0].lastIndexOf('<del>'));
						var lastPageURL = lastPages[0].substring(lastPages[0].lastIndexOf('<a href="')+9 , lastPages[0].lastIndexOf('"'));
						var lastPageNum = lastPages[0].substring(lastPages[0].lastIndexOf('"')+2, lastPages[0].lastIndexOf('<'));
						var lastPage = lastPageURL.substring(lastPageURL.lastIndexOf('=')+1);
						if (lastPageNum=='Previous Page'){
							lastPageURL='/journal/';
							lastPage = 0;
						}
						GM_xmlhttpRequest(
						{
							method: 'GET',
							url: 'http://' + deviantNAME + '.deviantart.com'+lastPageURL,
							onload: function(details)
							{
								var lastPageBody = details.responseText; // 210, 22
								var boxes = lastPageBody.split('<div class="boxtop journaltop">');
								if (boxes){
									entries = boxes.length-1;
									JE = parseInt(lastPage) + parseInt(entries);
									if (JE!=0){
										if (JE!=1)
											addExtensionsStat('Journal Entries', Comma(JE));
										else
											addExtensionsStat('Journal Entry', Comma(JE));
									}
								}
								
							}
						});	
					}
						
				}
			});
		}
					
		if (uS.commentsjournals)
			if (uS.commentsjournals!=1)
				addStat('Journal Comments', Comma(uS.commentsjournals));
			else
				addStat('Journal Comment', Comma(uS.commentsjournals));

		if (totalDaysOnDA!=0){		
			if (Math.ceil(uS.pageviews/totalDaysOnDA)!=1)
				addStat('Pageviews Per Day', '~'+Comma(Math.ceil(uS.pageviews/totalDaysOnDA)));
			else
				addStat('Pageview Per Day', '~'+Comma(Math.ceil(uS.pageviews/totalDaysOnDA)));
			
			var yearsondA = totalDaysOnDA;
			if (totalDaysOnDA >= 365)
			{
				var modulo = totalDaysOnDA % 365;
				if (modulo == 0)
				{
					yearsondA = ( totalDaysOnDA / 365 ) + " year";
					if (( totalDaysOnDA / 365 )!=1)
					 yearsondA+="s";
				} else {
					yearsondA = Math.floor(totalDaysOnDA/365) + " year";
					if (Math.floor( totalDaysOnDA / 365 )!=1)
						yearsondA+="s";
					yearsondA+=", "+modulo+" day";
					if(modulo!=1)
						yearsondA+="s";
				}
			} else {
				if(yearsondA!=1)
					yearsondA+=" days";
				else
					yearsondA+=" day";
			}	
			
			if (totalDaysOnDA!=1)
				addStat('Days on deviantART', '<acronym title="~' + yearsondA + '">~'+Comma(totalDaysOnDA)+'</acronym>');
			else
				addStat('Day on deviantART', '<acronym title="~' + yearsondA + '">~'+Comma(totalDaysOnDA)+'</acronym>');			
		}
		
		if (uS.id) {
			var e = (uS.id%10);
			if (e==1)
				addStat('<b>' + Comma(uS.id) + 'st</b> Deviant');
			else if (e==2)
				addStat('<b>' + Comma(uS.id) + 'nd</b> Deviant');
			else if (e==3)
				addStat('<b>' + Comma(uS.id) + 'rd</b> Deviant');
			else
				addStat('<b>' + Comma(uS.id) + 'th</b> Deviant');
		}
		
		if (totalviewed!=0)
			if (totalviewed!=1)
				addStat('Deviation Views', Comma(totalviewed));
			else
				addStat('Deviation View', Comma(totalviewed));

		if (uS.comments)
			if (uS.comments!=1)
				addStat('Comments Given', Comma(uS.comments));
			else
				addStat('Comment Given', Comma(uS.comments));
		
		if (totalcomments!=0)
			if (totalcomments!=1)
				addStat('Comments Received', Comma(totalcomments));
			else
				addStat('Comment Received', Comma(totalcomments));
		
		if (uS.favourites)
			if (uS.favourites!=1)
				addStat('Favourites Given', Comma(uS.favourites));
			else
				addStat('Favourite Given', Comma(uS.favourites));
		
		if (totalfavs!=0)
			if (totalfavs!=1)
				addStat('Favourites Received', Comma(totalfavs));
			else
				addStat('Favourite Received', Comma(totalfavs));
		
		if (gS.length!=0)
		{
			addStat('<a class="a" href="http://' + deviantNAME + '.deviantart.com/gallery/' + mostcatT + '/" title="' + mostcatT + '">Most Used Category</a> (<b><acronym title="Deviations">' + Comma(mostcatN) + '</acronym></b>)');
			addStat('<a class="a" href="http://' + deviantNAME + '.deviantart.com/gallery/' + mostSubcatT + '/" title="' + mostSubcatT.substring(mostSubcatT.lastIndexOf('/')+1) + '">Most Used Subcategory</a> (<b><acronym title="Deviations">' + Comma(mostSubcatN) + '</acronym></b>)');
			addStat('<a class="a" href="http://www.deviantart.com/deviation/' + gS[mostv].id + '/" title="' + gS[mostv].title.replace('\\', '') + '">Most Viewed</a> (<b><acronym title="Views">'+Comma(gS[mostv].views)+'</acronym></b>)');
			addStat('<a class="a" href="http://www.deviantart.com/deviation/' + gS[mostfv].id + '/" title="' + gS[mostfv].title.replace('\\', '') + '">Most Downloaded</a> (<b><acronym title="Downloads">' + Comma(gS[mostfv].fullviews) + '</acronym></b>)');
			addStat('<a class="a" href="http://www.deviantart.com/deviation/' + gS[mostf].id + '/" title="' + gS[mostf].title.replace('\\', '') + '">Most Favourited</a> (<b><acronym title="Favourites">' + Comma(gS[mostf].favourites) + '</acronym></b>)');
			addStat('<a class="a" href="http://www.deviantart.com/deviation/' + gS[mostc].id + '/" title="' + gS[mostc].title.replace('\\', '') + '">Most Commented</a> (<b><acronym title="Comments">' + Comma(gS[mostc].comments) + '</acronym></b>)');
		}
		addStat('<sup><a class="a" id="deviantSTATS_Options_Link" href="javascript:;" title="deviantSTATS Options">Options</a></sup>');
		document.getElementById('deviantSTATS_Options_Link').addEventListener('click', function(e){
			if (!optionsIsCreated){
				createOptions();
				document.getElementById('deviantSTATS_Options_close').addEventListener('click', function(e){
					closeOptions();
				}, false);
			}
		}, false);
	}
});