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">(.*) <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);
}
});
