- // ==UserScript==
- // @name Improved Steam Achievements
- // @namespace http://greasyfork.org/users/2240-doodles
- // @author Doodles
- // @version 3
- // @description Improves the appearance of Steam achievements on Steam pages and also on Achievement Stats pages.
- // @include *://www.achievementstats.com/*
- // @include *://achievementstats.com/*
- // @include *://steamcommunity.com/*
- // @exclude *://steamcommunity.com/*xml=1*
- // @exclude *://steamcommunity.com/*tab=leaderboards*
- // @exclude *://steamcommunity.com/*/leaderboards/*
- // @run-at document-end
- // @require https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js
- // @require https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js
- // @require https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.27.1/js/jquery.tablesorter.js
- // @grant GM_getValue
- // @grant GM_setValue
- // @updateVersion 3
- // ==/UserScript==
- this.$ = this.jQuery = jQuery.noConflict(true);
- $(document).ready(function () {
- 'use strict';
- // =======================================================================================================================
- // Prototype Functions
- String.prototype.isaReplaceAll = function(f, r) {
- return this.split(f).join(r);
- };
- String.prototype.isaRemoveEnd = function(end) {
- return (this.length < end.length || this.substring(this.length - end.length) != end) ? this : this.substring(0, this.length - end.length);
- };
- Number.prototype.toSuffixedString = function() {
- var i = this;
- var suffixes = ['th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th'];
- var iStr = i.toString();
- i = (i > 99) ? parseInt(iStr.substring(iStr.length - 2), 10) : i;
- i = (i > 13) ? parseInt(iStr.substring(iStr.length - 1), 10) : i;
- return iStr + suffixes[i];
- };
- String.prototype.padTwo = function() {
- return (this.length == 1) ? '0' + this : this;
- };
- Number.prototype.padTwo = function() {
- return (this < 10) ? '0' + this.toString() : this.toString();
- };
- Date.prototype.isaToString = function() {
- return this.getFullYear().toString() + '/' + (1 + this.getMonth()).padTwo() + '/' + this.getDate().padTwo() + ' ' + this.getHours().padTwo() + ':' + this.getMinutes().padTwo();
- };
- String.prototype.lastPart = function(s) {
- var p = this.split(s);
- return p[p.length - 1];
- };
- // =======================================================================================================================
- // Data Variables
- var defaultTitleDelim = ' - ';
- var defaultLinkDelim = ' | ';
- var backTile = 'data:image/gif;base64,R0lGODlhAwAJAJEAABoaGiIiIhISEgAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZX' +
- 'RhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucy' +
- 'MiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL2' +
- '5zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjAwMUJCRTEyQzMxMUU1QjQ1REZBQkU2QU' +
- 'VFQUJDMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0NjAwMUJCRjEyQzMxMUU1QjQ1REZBQkU2QUVFQUJDMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MDAxQkJDMTJDMzExRTVCNDVERkFCRTZBRU' +
- 'VBQkMwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MDAxQkJEMTJDMzExRTVCNDVERkFCRTZBRUVBQkMwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/' +
- 'b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxram' +
- 'loZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAAAAAAAsAAAAAAMACQAAAgeMYHiXrW8KADs=';
- var arrowDown = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAYAAAB24g05AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD' +
- '0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPH' +
- 'JkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxucz' +
- 'p4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2' +
- 'luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjUwMUY4NzEzNDFBMTFFNTlEM0E5MkY5MEUwMzBGRTciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjUwMUY4NzIzNDFBMTFFNTlEM0E5MkY5MEUwMzBGRTciPiA8eG1wTU06RGVyaX' +
- 'ZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNTAxRjg2RjM0MUExMUU1OUQzQTkyRjkwRTAzMEZFNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNTAxRjg3MDM0MUExMUU1OUQzQTkyRjkwRTAzMEZFNyIvPiA8L3JkZjpEZXNjcm' +
- 'lwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtTTibEAAAFdSURBVHjaYmRgYGAEYi4g5gTib1CMD3BB8XeYWmY1E0fj6uUXdgHZNkDMi0czSM4GpBakB6SXCeSCnz+/S4uo6rtWrbu1homJGWSIEBAzIWkEsY' +
- 'VAciA1ILUgPSC9YEV//vxh+/oP6C4ZVfHqfe/XKxk7RgCFpYCYBYqlQGIgOZAakFqQHpjJ/3///fPtM1AQhH9x8LKHTt031Ty2rBQopwPCIDZIDCQHUwfSA9LLCA1E9ZD55zaKqBmqIXv45rYFJ0G0uleCObL4m1vnb61JNPIHKWGEinEDsbZNy9puWf' +
- 'sgO3xR8PjgukNHaoJBrrsKxF+ZoeK/gfjto32rjv1iZGLj0bc3/vmfgQEdX1nQNPt8b2YtUO0NaDRiAFYglhO28iuy2fH1l93+//9BGMQGiYHkoGrwAlDAirDwCfvrLn/4EoRBbJAYWtSCASMeg/iAWBLKfg7En7ApAggwAF08i46C7tfuAAAAAElFTk' +
- 'SuQmCC';
- var arrowUp = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAYAAAB24g05AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD' +
- '0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPH' +
- 'JkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxucz' +
- 'p4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2' +
- 'luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Rjg5RTY1MDEzNDFBMTFFNTk0NUU4NTQxM0I4NDFBOUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Rjg5RTY1MDIzNDFBMTFFNTk0NUU4NTQxM0I4NDFBOUQiPiA8eG1wTU06RGVyaX' +
- 'ZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGODlFNjRGRjM0MUExMUU1OTQ1RTg1NDEzQjg0MUE5RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGODlFNjUwMDM0MUExMUU1OTQ1RTg1NDEzQjg0MUE5RCIvPiA8L3JkZjpEZXNjcm' +
- 'lwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrqW0q0AAAFySURBVHjaYmTADbiAWBTKfg3E3xiIBIxAzA/EDhWLT18EYRAbKsZISDMzEIuJyCiHN2x/+rH/zP//IAxig8RAclA1KBpggA2IZfTcIxMSpuyezM' +
- 'IjwPn7PwMDCDNx8bKbBmUEvnt699PLu1ceQr3zF9kADiBWdcztrnHI6y38zcTM9AuoERmDxFQdg53YOHmEH5zafQOo/hMQ/2GE+kvRs3vLXHkrbwdk5z09u+8BiJY2dlJAFn94bOuB7aU+yUDmfSaQAbwyqsoCFt4OH/8xMMDwuY2zN23Oc44FYRAbWQ' +
- '6kFqQHpJcFSDAxcfPzffoHNf7///9XJ+V1P1g3ZQ6Q9wgkdKorrfjl7YvXdfInlzEwMoJjAqQHRIHYLLwaZgF2+///t9z45huvukkSUEwKJI7kahBbEiQHUgNSC9IDU8PMZ+xqrbfyyS0g2w2IBXHENyNUzg2kFqQHpBcWiLxAzA3En4H4C4G0wgNV/x' +
- 'WkHiDAAPxMjVutShxmAAAAAElFTkSuQmCC';
- var settingsIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAYAAACN1PRVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD' +
- '0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPH' +
- 'JkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIH' +
- 'htbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpDMkMwRT' +
- 'FGNjE5MzRFNTExOTRGQjk5NTdFM0Y0NjI3OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NjZDMjgzMzM3NkUxMUU1ODcxNUJCRjhEOUUzRERDQSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NjZDMjgzMjM3NkUxMUU1ODcxNUJCRjhEOU' +
- 'UzRERDQSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhCQjBDNDI5NkUzN0U1MTE5RjE5QzI1QTgzNDMyMkE5IiBzdFJlZj' +
- 'pkb2N1bWVudElEPSJ4bXAuZGlkOkMyQzBFMUY2MTkzNEU1MTE5NEZCOTk1N0UzRjQ2Mjc4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+kBEuTwAABWBJREFUeNq8VgtMU1cY9r' +
- 'a3T1ootS3QNryqUEqx2PoCRB3OF8vYMnAbGdkcU5ksczpli5htxi06QTLdMl0kmmw+YjIm2cZmptNZDCgTpwiICqQFoVSh8mhpe3v72DnmXHJXisFs2Um+e57/+e7/n///z8ECgcCM/6vg8INh2HTX8wCiAcQADoB+VE+vPEEzJgAH1VRJeL/aWH/gsp' +
- '3YdeauiScUpdPmGQCsoPX/KIwQY1BNIYBmzYaPi0GdAiCAxEKxbJY0Tj0P5wnYktik+PSc/JVgPAyAC5C4rPC9tUwWOxW0I0LtHYqMmZK5Wlt24vrpVRt3fb31WOP38llpeWA8a3FB6Qa+WMbzgQ5E8sIVL4MqE2BxcUVNdd7miu+2H28+Y1hVmIG0nH' +
- 'xmk/4AZ0ulqrRkHzhNZVqGel1l7Tce17hHlpAi9tKsnrq8QF92uvWkl/T4lGq9FE7JVGmqSEWiGjSNk0wGzyzIQaC2qW8fMdYkzF2S9LQeZ7vf9ehgkT6PcNqbQNc7lRkx1IcgTa1Xu6EWT4ue9mu9gMhJ2x8LNiMHZ3NjZCptvHNkiBMuU6RpVhRmkz' +
- 'STATN6e29e7rB2tjQ7RwaHhBK5MkZtmB+ry1IxmPjEhkr90mTVwpXPDZk7pGGRMvJRX1ev2zEKQ8RNmVGZv7fmQJzhmVwf6QkwcRbOi5jJpjYYsZhG66s/qWw9e/wn0B2EmqOwiF5UVLYuo+iDjXyRhEOtd9uHSZJwkUCBGZb2JuPprbmbwHAPpZkgOn' +
- '3JcqZQzKOCxIO0Ihyj5LmD23Z3GmtPgu4QckSqPLx6orLK5/f7l5R+vpnSkCGIZHEAYFuauigbhdLEmY3euVRbMzYy5CbRb1O41/hLIyCqQxr5gvwBOkD/tVNV3/bcaugMlnURLp+p+eLvcH86me3CvpLddTvXbrd2tw1DrSAIn39GX0vDJagBgH8KB4' +
- 'SE1r7WK1coOQibxez8bc/6PXXlBWVIfoLMA2Dp/+tSw4PuNjMl4PIQ/lGLyYLmn1SI8eFBK51ssOduf+e5U9AiZjhPJ4POIJfpsjME8Zo4SsCHczC2OEo8VfDTkwMzLEJEJ+NExcnAeRlQ4mbRyWbO23Z4Z9ZnP1SFJc4RUwIkxsAiUxbA1BNJj5cQKU' +
- '8inD13Hp2MF6uOyNr7437Dlq92wHk6mShqaf4rWISURxeAkGbm5YQnaBeBNeEhCB8TKZYV5Ebqc3TBsgyRjC9f8dob6EqaIHM8bG2sd7tdpMsxRrpdTh8MaAhcohDoPjy6L3yWbjVYF4vcmIsye2JU5vOvJm/cWx7ghOGUDEG4/Wgfr62r5QZY56TnRi' +
- '4vJiFOmDhH4xl+wGKFizWa7UfKuBIFn1LBZTXbbdfO/WG7cdFI2AaG+HKVQqzPeVYyf1UmWyTlUutI+7Cn44vSL8H6ZrY42uvs7+p0mNq6ICE9ETPQxQc7yclbDh1SvLBp8aTL1ksG/F6Pj8HhMTFwpsHzA2eP/dlR8VYJaHagcKEQoHsZNfj4xuWr58' +
- 'eTIf2OhQHgUwUdOzYlCv0wGRyboS5PXLamWMudbVBSmdxxv9MOMOb1ByZl+XFrjwPASfV56gWx0pWvp4QKl1BkAa/LYbH3dJig8PBNY9vtHbnrWzakFz04f6KJTjRQV228VWIouvPRi6Wjt5vuwTHngHkAisF9pvPggSaIYHD4+pg3P30XtLXoDSIUZb' +
- '9Umn7e6597IRDQ/eok+eoFhdQcgE75zoFyjlyVheKS8TSvKxxdIzjNCpqko+13tD/bidmHr98E/SRa7OHoqceaKgGEehY8qcCXlBwFOMzkFiqG/u278T8vfwswANrMfI9dB/UpAAAAAElFTkSuQmCC';
- var settingsIconHover = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAYAAACN1PRVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD' +
- '0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPH' +
- 'JkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIH' +
- 'htbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpDMkMwRT' +
- 'FGNjE5MzRFNTExOTRGQjk5NTdFM0Y0NjI3OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCODE3QjlGRDM3NkUxMUU1QkIwNUNDMjVEN0NBN0ZEMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCODE3QjlGQzM3NkUxMUU1QkIwNUNDMjVEN0' +
- 'NBN0ZEMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhCQjBDNDI5NkUzN0U1MTE5RjE5QzI1QTgzNDMyMkE5IiBzdFJlZj' +
- 'pkb2N1bWVudElEPSJ4bXAuZGlkOkMyQzBFMUY2MTkzNEU1MTE5NEZCOTk1N0UzRjQ2Mjc4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Z/YQbwAABW5JREFUeNq8VgtMU1cYpu' +
- '0tLdACLaU85VWhLbSCvBniGGPOlI0xxTE2Nh0SHYQ93MTER4ZT94pjc5oxo05jNhY2MYwpcTNGrExYBygO5FmhvIqTV0pLKb3t7c7Be8m1XIhmy07y3XvOf+453/2f59BsNpvD/9UQ+KDRaI/6vROANwAfwAAwgr8frS2jGQOAhb+JFnz8vPL6tR793L' +
- 'n67n6uq3sUaZ4OwLT7/qFGp5BBNbkA4fk7PsgHbykABxLzBMKVASslsSwXjqN/SFhQasbGdUDuAsAGCMkpeGcTk+kYAfpulHtTaIYkpK5POn2p5U79EIYdr2noFEnkrwB5Wv57+3/6fdhmI/BheWUzkK8HSD90oqqurn/OcvbKX+r0rNz1uFUW+2yRkO' +
- 'noGSCRi63Am5LoJMnBU9XHZ40z5sBQKd9C+rcURXb0mSttFajZbA2TR3tCWaBYLvJZESIBXeUik0HN7AIEqh/xxTll1aqEtWGPG3EjGvVkoSI602jQq8DQspTPaPgYAm2/+cddFGjxuOhobRoEREbS/jR7M7IcWWyfALEsaHpynOXh7Sdfk5mbgpJMZj' +
- 'LOWDqa6jv7O2436ybHxvlevv4r5TFx0phkEQNBFjaUJjwpXp2yLmNI3enpLhCiWo160KjXwRQxEWb0LymvOiJLekphQc02BsJEuDwPR2KD+0P9usovSw8rq7/7BQzHoOZ4AHi/sK1kS9abu7a58gQLAWHQTaFm0ywKFHDoaVUpP3pDUQjEA4RmnNC4tU' +
- '+zXPlOxAoUe/AGf4WePvT+gabL1RVgOA5gJZn+fs2Jw2VWDMNyd336NoPxQEMWl8eEgP2QyMQUPJUWfKZr/K26amJy3GQGpiOj6WptAyC6iGtktYsHGAAjF0+Vnb3TfKPXfq1hdtba2nD1CtyfTDZxZt/2A0eLN+3UdLdPEc42WzGHrpYb16AGANgSAQ' +
- 'gJ73XfbGwkB8rosMZ4cnfBx8eKs0vw9QtkZgBtt+rajYHudo0ZbAthNM1hwF9afH65NqebGLtHrIMYvts9orrwA7SIBs6TyWAw+IpiU5IEovBAwgwYk0XjeHjxl0r+h+oAx82dbEKuT6AwKDIxBi/cTDKZx4bSb/a+9tX5MkHYKj6xAKXRaX7y+CQwzy' +
- 'PnC0V9FXhLV8eSyXjBErfNX9d8nrXv2G44TyZzl6RvzGG6ezqRTQERmpqZ5hUqSwTfuFIQzhPJ1mUrAuLTIu3XOvKEzrKMVzfjR9ICmaHvVsN1I8gNg34aNc4arYSjnYR+nMwD337mLY6ExTUAD2M2XtlDxKnPv5z27id7aGwXhFgzazJh+D6W4a7bt2' +
- 'AGkWsj290vOFAYtip8ZuJvppMbP1yx/0QJV+jnTKig02r0fQ2X6zSqq0rD2Og4b4XILyghLT0k+dknnHme7IVKMz1lvnSo6KhuRNPMEXhbJgfVvWPqdjUkJBdiOn7wwYH4mb3l5VEvFa6xdxBmQW1W1GxFWE4MGp2+yI9tP5/+89fSrdtBtxNPFwI2cp' +
- 'QRwvkTVxARF4RSHeIMJg0AmS/nFPNuwVIv/IdR+9ykOqmR8Kx8mYckxh+eXRDjA716gGkLZnMgZASmtAMGACMxFkTEB0iee11KlS5UZLa5GYN2rK+zHy4ebFa2XyhWFFTmROV11H6vIhO1nT+p/DE3Jq92R1aRtk3VM08+ohkF6kxR6k1xLYAmcEPYzt' +
- 'ExhQffAn0ZfgfhBqVtKNraZMEKWmy2LQ1G1DMiPpeYA4hM3Hlkj6u/KBnPS/rj3K4Q/BhBSFYIf/Hcna68ev1cZkVLKxiHkXIPwa96zKUKANW1YLkGb1K+eILDSq4lcujf3hv/8/aPAAMA9bWbSWlT7cIAAAAASUVORK5CYII=';
- var closeIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD' +
- '0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPH' +
- 'JkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxucz' +
- 'p4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2' +
- 'luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REU2NUE2RkYzODQxMTFFNUJGMTc4MDk5QkNBOUVBNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REU2NUE3MDAzODQxMTFFNUJGMTc4MDk5QkNBOUVBNjkiPiA8eG1wTU06RGVyaX' +
- 'ZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpERTY1QTZGRDM4NDExMUU1QkYxNzgwOTlCQ0E5RUE2OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpERTY1QTZGRTM4NDExMUU1QkYxNzgwOTlCQ0E5RUE2OSIvPiA8L3JkZjpEZXNjcm' +
- 'lwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PriqgcMAAAE5SURBVHjanJK/SgNBEIfvTsEiBEwhYuUL+BCm0U5JEREUjRBOEAQfQ9JrkkNQxEpQBME/ZdQHsLK3sjIpQooQw/kN7Mlk3CYZ+Ji9m/n9bnfnwj' +
- 'RNg0kjzMRxHC+TtuAgSZKBbaQekU7gnvrDn5hCkfUNFOAK9mj4UcKQ1JAl9KBM/TFy9SMnlNiGcwTTSlh3Qomc6w8ycQWe1S7F4BLhHDmBfVV7gx175pzb+qpq/IRFI1xjy50RsTK4hRXP5Y4I/4mdwSzpAxbU6zYsIfzSvZHnCzWYN+/EsIbxlHfO7q' +
- 'tNdasSfZhRzzLGCjsY6jmL46kRyhkP4dhcohhUMehn2z4zwhdYp+Fdfgh4MmO80GduwdCtX6GEUC4pIHdJG8agZecsjruwieDb82/nSddwR73pHdU48SvAAF0zfh0+f5wAAAAAAElFTkSuQmCC';
- var colWidUnlockPercent = '158';
- var colWidUnlockPoint = '110';
- var colWidUnlockDate = '180';
- var colWidUnlockLink = '95';
- var titleDone = false;
- // =======================================================================================================================
- // Stored Data Variables
- var titleDelim = GM_getValue('isaDataTitleDelim', defaultTitleDelim);
- var linkDelim = GM_getValue('isaDataLinkDelim', defaultLinkDelim);
- var meName = GM_getValue('isaDataMeName', false);
- var meSteamId = GM_getValue('isaDataMeSteamId', false);
- var meUrlBit = GM_getValue('isaDataMeUrlBit', false);
- var achPeople = [];
- pushPeople(meName, meSteamId, meUrlBit);
- function pushPeople(name, steamid, urlbit){
- if (achPeople === false || !$.isArray(achPeople)) {
- achPeople = [];
- }
- if(steamid !== false || urlbit !== false) {
- var alreadyInList = false;
- for (var i = 0; i < achPeople.length; i++) {
- var person = achPeople[i];
- if((person[1] !== false && person[1] == steamid) || (person[2] !== false && person[2] == urlbit)) {
- alreadyInList = true;
- break;
- }
- }
- if(!alreadyInList){
- achPeople.push([name, steamid, urlbit]);
- }
- }
- }
- // =======================================================================================================================
- // Functions
- function urlContains(urlfragment) {
- return document.URL.indexOf(urlfragment) != -1;
- }
- function htmlDateDifference(to, from) {
- if (to === false || from === false) {
- return '';
- }
- var ss = Math.floor((to - from) / 1000);
- var yy = Math.floor(ss / 31536000); //60 / 60 / 24 / 365
- ss -= yy * 31536000;
- var dd = Math.floor(ss / 86400); //60 / 60 / 24
- ss -= dd * 86400;
- var hh = Math.floor(ss / 3600); //60 / 60
- ss -= hh * 3600;
- var mm = Math.floor(ss / 60); //60
- ss -= mm * 60;
- var timeDesc = '<span title="Time between this and the previous achievement." class="isaSpanSmallBold ';
- if (yy > 0) {
- return timeDesc + 'isaSpanRed2">' + yy + ((yy == 1) ? 'year ' : 'years ') + dd + ((dd == 1) ? 'day ' : 'days ') + hh + 'h ' + mm + 'm ' + ss + 's</span>';
- } else if (dd > 0) {
- return timeDesc + 'isaSpanRed2">' + dd + ((dd == 1) ? 'day ' : 'days ') + hh + 'h ' + mm + 'm ' + ss + 's</span>';
- } else if (hh > 0) {
- return timeDesc + 'isaSpanYel2">' + hh + 'h ' + mm + 'm ' + ss + 's</span>';
- } else if (mm > 0) {
- return timeDesc + 'isaSpanBlu">' + mm + 'm ' + ss + 's</span>';
- } else if (ss > 0) {
- return timeDesc + 'isaSpanBlu">' + ss + 's</span>';
- } else {
- return timeDesc + 'isaSpanGre">Same Time as Previous</span>';
- }
- }
- function textTimeAgo(dateUnlocked) {
- if (dateUnlocked === false) {
- return '';
- }
- var ss = Math.floor((Date.now() - dateUnlocked.getTime()) / 1000);
- var yy = Math.floor(ss / 31536000); //60 / 60 / 24 / 365
- ss -= yy * 31536000;
- var dd = Math.floor(ss / 86400); //60 / 60 / 24
- ss -= dd * 86400;
- var hh = Math.floor(ss / 3600); //60 / 60
- ss -= hh * 3600;
- var mm = Math.floor(ss / 60); //60
- ss -= mm * 60;
- if (yy > 0) {
- return yy + ((yy == 1) ? 'year ' : 'years ') + dd + ((dd == 1) ? 'day ' : 'days ') + hh + 'h ' + mm + 'm ' + ss + 's ago';
- } else if (dd > 0) {
- return dd + ((dd == 1) ? 'day ' : 'days ') + hh + 'h ' + mm + 'm ' + ss + 's ago';
- } else if (hh > 0) {
- return hh + 'h ' + mm + 'm ' + ss + 's ago';
- } else if (mm > 0) {
- return mm + 'm ' + ss + 's ago';
- } else if (ss > 0) {
- return ss + 's ago';
- } else {
- return 'just now';
- }
- }
- function htmlFromUl(ul) {
- var liHtml = [];
- $(ul).find('li').each(function () { liHtml.push($(this).html()); });
- return liHtml.join(linkDelim);
- }
- function htmlAstatsPoint(value) {
- if (!(value > 0)) {
- return '<span class="isaSpanRed" title="Unachieved: No one recorded on AStats has this achievement.">' + value + '</span>';
- } else if (value >= 3) {
- return '<span class="isaSpanRed" title="Hard: 3+">' + value + '</span>';
- } else if (value >= 2) {
- return '<span class="isaSpanYel" title="Moderate: 2-2.99">' + value + '</span>';
- } else if (value >= 1) {
- return '<span class="isaSpanBlu" title="Easy: 1-1.99">' + value + '</span>';
- } else {
- return '<span class="isaSpanGre" title="Simple: 0-0.99">' + value + '</span>';
- }
- }
- function htmlSteamAchProgress(str) {
- var numbs = str.trim().split(' / ');
- var value = numbs[0].isaReplaceAll(',', '') / numbs[1].isaReplaceAll(',', '');
- if (value <= 0.33) {
- return '<span class="isaSpanRed isaSpanSmallBold">Progress: ' + str + '</span>';
- } else if (value <= 0.66) {
- return '<span class="isaSpanYel isaSpanSmallBold">Progress: ' + str + '</span>';
- } else if (value < 1) {
- return '<span class="isaSpanBlu isaSpanSmallBold">Progress: ' + str + '</span>';
- } else {
- return '<span class="isaSpanGre isaSpanSmallBold">Progress: ' + str + '</span>';
- }
- }
- function domPercentCell(cell, percent) {
- var hslHue = Math.floor(2 * parseInt(percent, 10));
- $(cell).css({ 'background-color': 'hsl(' + hslHue + ', 60%, 20%)', 'background': 'linear-gradient(hsl(' + hslHue + ', 60%, 20%), hsl(' + hslHue + ', 60%, 15%))' }).text(percent);
- }
- function textDateFixSteam(str) {
- var parts1 = str.replace('Unlocked ', '').split(' @ ');
- var parts2 = parts1[0].split(',');
- var parts3 = parts2[0].split(' ');
- var parts4 = parts1[1].split(':');
- var ye = parts2.length == 2 ? parts2[1].trim() : new Date().getFullYear();
- var da = (parts3[0] < 10) ? '0' + parts3[0].trim() : parts3[0].trim();
- var month = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'].indexOf(parts3[1].trim().toLowerCase()) + 1;
- var mo = (month < 10) ? '0' + month : month;
- var mi = parts4[1].trim().substring(0, 2);
- var timecode = parts4[1].trim().substring(2, 4);
- var ho = parts4[0].trim();
- if (timecode == 'am') {
- if(ho == '12'){
- ho = '00';
- }else if(ho.length == 1) {
- ho = '0' + ho;
- }
- } else if (ho != '12') {
- ho = (parseInt(ho, 10) + 12).toString();
- }
- return ye + '/' + mo + '/' + da + ' ' + ho + ':' + mi;
- }
- function htmlPercentStr(str, value) {
- if (value <= 0.33) {
- return '<span class="isaSpanRed">' + str + '</span>';
- } else if (value <= 0.66) {
- return '<span class="isaSpanYel">' + str + '</span>';
- } else if (value < 1) {
- return '<span class="isaSpanBlu">' + str + '</span>';
- } else {
- return '<span class="isaSpanGre">' + str + '</span>';
- }
- }
- function textStringToDate(str) {
- if (!str || $.trim(str) === '') {
- return false;
- }
- var parts1 = str.split(' ');
- var parts2 = parts1[0].split('/');
- var parts3 = parts1[1].split(':');
- if (parts3.length == 3) {
- return new Date(parts2[0], parts2[1] - 1, parts2[2], parts3[0], parts3[1], parts3[2]); //new Date(year, month, day, hours, minutes, seconds, milliseconds);
- } else {
- return new Date(parts2[0], parts2[1] - 1, parts2[2], parts3[0], parts3[1]);
- }
- }
- function domDateColumn(rows, column, detailCell) {
- if (typeof(detailCell)==='undefined') { detailCell = false; }
- if (rows.length > 1) {
- rows.sort(function(a, b) {
- var aText = $(a).find('td:eq(' + column + ') > span:eq(0)').text().trim();
- var bText = $(b).find('td:eq(' + column + ') > span:eq(0)').text().trim();
- if (aText == bText) {
- return 0;
- }
- var aNum = 0;
- if (aText == 'Locked') {
- aNum = 99999999999999;
- } else if (aText == 'Unlocked') {
- aNum = 88888888888888;
- } else if (aText == 'Unlocked Pre-Tracking') {
- aNum = 0;
- } else {
- aNum = aText.isaReplaceAll('/', '').isaReplaceAll(':', '').isaReplaceAll(' ', '');
- }
- var bNum = 0;
- if (bText == 'Locked') {
- bNum = 99999999999999;
- } else if (bText == 'Unlocked') {
- bNum = 88888888888888;
- } else if (bText == 'Unlocked Pre-Tracking') {
- bNum = 0;
- } else {
- bNum = bText.isaReplaceAll('/', '').isaReplaceAll(':', '').isaReplaceAll(' ', '');
- }
- return aNum - bNum;
- });
- if (detailCell !== false) {
- var timesCheck1 = [], timesCheck2 = [], times = 0, duplicateTimes = 0;
- $(rows).each(function() {
- var rowTime = $(this).find('td:eq(' + column + ')').text();
- if (rowTime != 'Locked' && rowTime != 'Unlocked' && rowTime != 'Unlocked Pre-Tracking') {
- times++;
- if (jQuery.inArray(rowTime, timesCheck1) == -1) {
- timesCheck1.push(rowTime);
- } else {
- duplicateTimes++;
- if (jQuery.inArray(rowTime, timesCheck2) == -1) {
- timesCheck2.push(rowTime);
- }
- }
- }
- });
- duplicateTimes += timesCheck2.length;
- var ratio = duplicateTimes / times;
- if (ratio >= 0.5) {
- var dupPercent = Math.round((duplicateTimes * 10000) / times) / 100;
- var dupPercentStr = duplicateTimes + ' / ' + times + ' (' + dupPercent + '%) duplicate times';
- var percentSpan = '';
- if (ratio >= 0.9) {
- percentSpan = '<span class="isaSpanRed">' + dupPercentStr + '</span>';
- } else if (ratio > 0.75) {
- percentSpan = '<span class="isaSpanOra">' + dupPercentStr + '</span>';
- } else {
- percentSpan = '<span class="isaSpanYel">' + dupPercentStr + '</span>';
- }
- $(detailCell).append('<div class="isaStat" title="Possible cheater">' + percentSpan + '</div>');
- }
- }
- for (var i = rows.length - 1; i >= 1; i--) {
- var dateLaterString = $(rows[i]).find('td:eq(' + column + ') > span:eq(0)').text();
- var dateFirstString = $(rows[i - 1]).find('td:eq(' + column + ') > span:eq(0)').text();
- var skipFirst = dateFirstString == 'Locked' || dateFirstString == 'Unlocked' || dateFirstString == 'Unlocked Pre-Tracking';
- var skipLater = dateLaterString == 'Locked' || dateLaterString == 'Unlocked' || dateLaterString == 'Unlocked Pre-Tracking';
- if (!(skipFirst || skipLater)) {
- $(rows[i]).find('td:eq('+column+')').append('<br />' + htmlDateDifference(textStringToDate(dateLaterString), textStringToDate(dateFirstString)));
- }
- }
- for (var i = 0, l = rows.length - 1; i <= l; i++) {
- var dateString = $(rows[i]).find('td:eq(' + column + ') > span:eq(0)').text();
- if (dateString != 'Locked' && dateString != 'Unlocked' && dateString != 'Unlocked Pre-Tracking') {
- $(rows[i]).find('td:eq(' + column + ') span:eq(0)').attr('title', 'Date-Time Unlocked (' + textTimeAgo(textStringToDate(dateString)) + ')');
- }
- }
- var rank = 1;
- var marked = 0;
- var lastDate = '';
- for (var i = 0, l = rows.length; i < l; i++) {
- var thisDate = $(rows[i]).find('td:eq(' + column + ') > span:eq(0)').text();
- if (thisDate == 'Locked' || thisDate == 'Unlocked') {
- // do nothing
- } else if (thisDate == 'Unlocked Pre-Tracking') {
- marked++;
- } else if (thisDate == lastDate) {
- $(rows[i]).find('td:eq(' + column + ')').append('<br /><span title="Place in the unlock history this achievement was unlocked.">' + rank.toSuffixedString() + '</span>');
- marked++;
- } else {
- rank = marked + 1;
- $(rows[i]).find('td:eq(' + column + ')').append('<br /><span title="Place in the unlock history this achievement was unlocked.">' + rank.toSuffixedString() + '</span>');
- marked++;
- lastDate = thisDate;
- }
- }
- } else if (rows.length == 1 && $(rows[0]).find('td').length > 1) {
- var cell = $(rows[0]).find('td:eq(' + column + ')');
- var dateString = $(cell).find('span:eq(0)').text();
- if (dateString != 'Locked' && dateString != 'Unlocked' && dateString != 'Unlocked Pre-Tracking') {
- $(cell).find('span:eq(0)').attr('title', 'Date-Time Unlocked (' + textTimeAgo(textStringToDate(dateString)) + ')');
- $(cell).append('<br /><span title="Place in the unlock history this achievement was unlocked.">1st</span>');
- }
- }
- }
- function jsRowHighlight(table) {
- if (typeof(table)==='undefined') { table = 'table#isaSecondTable'; }
- $(table).find('tbody > tr').hover(
- function () { $(this).addClass('isaHoverHighlight'); },
- function () { $(this).removeClass('isaHoverHighlight'); }
- );
- }
- function jsOptionsMenuSave() {
- var temp1 = $('#isaSettingsDialog input:eq(0)').val().trim();
- meName = (temp1 == '' ? false : temp1);
- var temp2 = $('#isaSettingsDialog input:eq(1)').val().trim();
- meSteamId = (temp2 == '' ? false : temp2);
- var temp3 = $('#isaSettingsDialog input:eq(2)').val().trim();
- meUrlBit = (temp3 == '' ? false : temp3);
- titleDelim = $('#isaSettingsDialog input:eq(3)').val();
- linkDelim = $('#isaSettingsDialog input:eq(4)').val();
-
- GM_setValue('isaDataMeName', meName);
- GM_setValue('isaDataMeSteamId', meSteamId);
- GM_setValue('isaDataMeUrlBit', meUrlBit);
- GM_setValue('isaDataTitleDelim', titleDelim);
- GM_setValue('isaDataLinkDelim', linkDelim);
- }
- function jsOptionsMenuReset() {
- $('#isaSettingsDialog input:eq(0)').val('');
- $('#isaSettingsDialog input:eq(1)').val('');
- $('#isaSettingsDialog input:eq(2)').val('');
- $('#isaSettingsDialog input:eq(3)').val(defaultTitleDelim);
- $('#isaSettingsDialog input:eq(4)').val(defaultLinkDelim);
- }
- // =======================================================================================================================
- // Link HTML Functions
- function htmlLinksProfile(steamProfileId64) {
- var html = '<span>Steam:</span> ';
- html += '<a title="Steam Profile" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '">Profile</a>' + linkDelim;
- html += '<a title="Games" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/games/">Games</a>' + linkDelim;
- html += '<a title="Games - All" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/games?tab=all">All Games</a>' + linkDelim;
- html += '<a title="Screenshots" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/screenshots/?appid=0&sort=newestfirst&browsefilter=myfiles&view=grid">Screenshots</a>' + linkDelim;
- html += '<a title="Videos" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/videos/">Videos</a>' + linkDelim;
- html += '<a title="Artwork" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/images/">Artwork</a>' + linkDelim;
- html += '<a title="Reviews" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/recommended/">Reviews</a>' + linkDelim;
- html += '<a title="Guides" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/myworkshopfiles/?section=guides">Guides</a>' + linkDelim;
- html += '<a title="Workshop Items" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/myworkshopfiles/">Workshop Items</a>' + linkDelim;
- html += '<a title="Greenlight Items" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/myworkshopfiles/?section=greenlight">Greenlight Items</a>' + linkDelim;
- html += '<a title="Friends" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/friends/">Friends</a>' + linkDelim;
- html += '<a title="Groups" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/groups/">Groups</a>' + linkDelim;
- html += '<a title="Inventory" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/inventory/">Inventory</a>' + linkDelim;
- html += '<a title="All Comments" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/allcomments">All Comments</a>' + linkDelim;
- html += '<a title="Name History" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/namehistory">Name History</a>' + linkDelim;
- html += '<a title="Friends in Common" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/friendscommon">Friends in Common</a>' + linkDelim;
- html += '<a title="Groups in Common" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/groupscommon">Groups in Common</a>' + linkDelim;
- html += '<a title="Badges" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/badges/">Badges</a>' + linkDelim;
- html += '<a title="Wishlist" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/wishlist/">Wishlist</a>';
- html += '<br /><span>Third Party:</span> ';
- html += '<a title="SteamRep" href="http://steamrep.com/profiles/' + steamProfileId64 + '">SteamRep</a>' + linkDelim;
- html += '<a title="SteamDB" href="http://steamdb.info/calculator/?player=' + steamProfileId64 + '">SteamDB</a>' + linkDelim;
- html += '<a title="Achievement Stats" href="http://www.achievementstats.com/index.php?action=profile&playerId=' + steamProfileId64 + '">Achievement Stats</a>' + linkDelim;
- html += '<a title="astats.nl" href="http://astats.astats.nl/astats/User_Info.php?steamID64=' + steamProfileId64 + '">astats.nl</a>';
- return html;
- }
- function htmlLinksGameShort(steamAppId, gameName, steamProfileId64, steamUrlBit) {
- if (typeof(steamUrlBit)==='undefined' || steamUrlBit === false) { steamUrlBit = steamAppId; }
- if (typeof(steamProfileId64)==='undefined') { steamProfileId64 = false; }
- var html = '';
- html += '<a title="Steam Store" href="http://store.steampowered.com/app/' + steamAppId + '">Steam Store</a>' + linkDelim;
- html += '<a title="Steam Hub" href="http://steamcommunity.com/app/' + steamAppId + '">HUB</a>' + linkDelim;
- html += '<a title="Steam Achievements" href="http://steamcommunity.com/stats/' + steamUrlBit + '/achievements">Achievements</a>' + linkDelim;
- if (steamProfileId64 !== false) {
- html += '<a title="Player Achievements on Steam" href="http://steamcommunity.com/profiles/' + steamProfileId64 + '/stats/' + steamUrlBit + '/achievements">Player</a>' + linkDelim;
- }
- html += '<a title="Steam Hub Guides" href="http://steamcommunity.com/app/' + steamAppId + '/guides/">Steam Guides</a>' + linkDelim;
- html += '<a title="AchievementStats.com" href="http://www.achievementstats.com/index.php?action=games&gameId=' + steamAppId + '">Achievement Stats</a>' + linkDelim;
- html += '<a title="AStats.nl" href="http://astats.astats.nl/astats/Steam_Game_Info.php?AppID=' + steamAppId + '">AStats</a>' + linkDelim;
- html += '<a title="SteamDB.info" href="http://steamdb.info/app/' + steamAppId + '/">SteamDB</a>';
- return html;
- }
- function htmlLinksGameLong(gameAppId, gameName, steamUrlBit, steamProfiles) {
- if (typeof(steamUrlBit)==='undefined' || steamUrlBit === false) { steamUrlBit = gameAppId; }
- if (typeof(steamProfiles)==='undefined') { steamProfiles = false; }
- var html = '<span>Steam:</span> ';
- html += '<a title="Steam Store" href="http://store.steampowered.com/app/' + gameAppId + '">Store</a>' + linkDelim;
- html += '<a title="Steam DLC" href="http://store.steampowered.com/dlc/' + gameAppId + '">DLC</a>' + linkDelim;
- html += '<a title="Steam Store - Similar items" href="http://store.steampowered.com/recommended/morelike/app/' + gameAppId + '">Similar</a>' + linkDelim;
- html += '<a title="Steam HUB" href="http://steamcommunity.com/app/' + gameAppId + '">Hub</a>' + linkDelim;
- html += '<a title="Steam Forum" href="http://store.steampowered.com/forum/' + gameAppId + '">Forum</a>' + linkDelim;
- html += '<a title="News on Steam" href="http://store.steampowered.com/news/?appids=' + gameAppId + '">News</a>' + linkDelim;
- html += '<a title="Steam Market Search" href="http://steamcommunity.com/market/search?q=' + gameName + '">Market</a>' + linkDelim;
- html += '<span>Achievements:</span> ';
- html += '<a title="" href="http://steamcommunity.com/stats/' + steamUrlBit + '/achievements">Global</a>';
- if (steamProfiles !== false && $.isArray(steamProfiles)) {
- for (var i = 0; i < steamProfiles.length; i++) {
- var person = steamProfiles[i];
- if(person[1] !== false || person[2] !== false) {
- var nameLabelA = person[0] === false ? 'Me' : person[0];
- var nameLabelB = person[0] === false ? 'My' : person[0] + '\'s';
- var tempUrlBit = person[2] !== false ? 'id/' + person[2] : 'profiles/' + person[1];
- html += linkDelim + '<a title="' + nameLabelB + ' Achievements on Steam" href="http://steamcommunity.com/' + tempUrlBit + '/stats/' + steamUrlBit + '/achievements">' + nameLabelA + ' on Steam</a>';
- html += linkDelim + '<a title="' + nameLabelB + ' XML Unlock History" href="http://steamcommunity.com/' + tempUrlBit + '/stats/' + steamUrlBit + '/achievements?xml=1">' + nameLabelB + ' XML</a>';
- if (person[1] !== false) {
- html += linkDelim + '<a title="' + nameLabelB + ' Achievements on Astats" href="http://www.achievementstats.com/index.php?action=profile&playerId=' + person[1] + '&mode=history&gameId=' +
- gameAppId + '">' + nameLabelA + ' on Astats</a>';
- }
- }
- }
- }
- html += '<br /><span>Steam HUB:</span> ';
- html += '<a title="Steam Hub" href="http://steamcommunity.com/app/' + gameAppId + '/">Steam Hub</a>' + linkDelim;
- html += '<a title="Steam Hub Discussions" href="http://steamcommunity.com/app/' + gameAppId + '/discussions/">Discussions</a>' + linkDelim;
- html += '<a title="Steam Hub Screenshots" href="http://steamcommunity.com/app/' + gameAppId + '/screenshots/">Screenshots</a>' + linkDelim;
- html += '<a title="Steam Hub Artwork" href="http://steamcommunity.com/app/' + gameAppId + '/images/">Artwork</a>' + linkDelim;
- html += '<a title="Steam Hub Videos" href="http://steamcommunity.com/app/' + gameAppId + '/videos">Videos</a>' + linkDelim;
- html += '<a title="Steam Hub News" href="http://steamcommunity.com/app/' + gameAppId + '/news">News</a>' + linkDelim;
- html += '<a title="Steam Hub Announcements" href="http://steamcommunity.com/app/' + gameAppId + '/announcements">Announcements</a>' + linkDelim;
- html += '<a title="Steam Hub Guides" href="http://steamcommunity.com/app/' + gameAppId + '/guides/">Guides</a>' + linkDelim;
- html += '<a title="Steam Hub Reviews" href="http://steamcommunity.com/app/' + gameAppId + '/reviews/">Reviews</a>';
- html += '<br /><span>Third Party:</span> ';
- html += '<a title="AchievementStats.com" href="http://www.achievementstats.com/index.php?action=games&gameId=' + gameAppId + '">Achievement Stats</a>' + linkDelim;
- html += '<a title="Official Site for the Game" href="http://store.steampowered.com/appofficialsite/' + gameAppId + '">Official Site</a>' + linkDelim;
- html += '<a title="AStats.nl" href="http://astats.astats.nl/astats/Steam_Game_Info.php?AppID=' + gameAppId + '">AStats</a>' + linkDelim;
- html += '<a title="SteamDB.info" href="http://steamdb.info/app/' + gameAppId + '/">SteamDB</a>' + linkDelim;
- html += '<a title="Steam Card Exchange" href="http://www.steamcardexchange.net/index.php?gamepage-appid-' + gameAppId + '">Card Exchange</a>' + linkDelim;
- html += '<a title="SteamCharts.com" href="http://steamcharts.com/app/' + gameAppId + '">SteamCharts</a>' + linkDelim;
- html += '<a title="SteamGraph.net" href="http://steamgraph.net/index.php?action=graph&appid=' + gameAppId + '&from=0">SteamGraph</a>' + linkDelim;
- html += '<a title="SteamSpy" href="http://steamspy.com/app/' + gameAppId + '">SteamSpy</a>' + linkDelim;
- html += '<a title="PC Gaming Wiki" href="http://pcgamingwiki.com/api/appid.php?appid=' + gameAppId + '">PC Gaming Wiki</a>' + linkDelim;
- html += '<a title="News RSS Feed (by getoffmalawn.com)" href="http://www.getoffmalawn.com/steamnews/' + gameAppId + '.atom">RSS News</a>' + linkDelim;
- html += '<a title="GameFAQs.com Search" href="http://www.gamefaqs.com/search/index.html?platform=19&game=' + gameName + '">GameFAQ Search</a>' + linkDelim;
- html += '<a title="HowLongToBeat Search" href="http://howlongtobeat.com/?q=' + gameName + '">HowLongToBeat Search</a>' + linkDelim;
- html += '<a title="IsThereAnyDeal.com Search" href="http://isthereanydeal.com/#/search:' + gameName + ';/scroll:%23gamelist">IsThereAnyDeal</a>';
- return html;
- }
- function htmlLinksDLC(game, dlc) {
- var html = '<span>Steam:</span> ';
- html += '<a href="http://store.steampowered.com/app/' + dlc + '">Store</a>' + linkDelim;
- html += '<a href="http://store.steampowered.com/dlc/' + game + '">DLC</a>' + linkDelim;
- html += '<a href="http://steamcommunity.com/app/' + game + '">Hub</a>' + linkDelim;
- html += '<a href="http://steamcommunity.com/stats/' + game + '/achievements">Achievements</a>' + linkDelim;
- html += '<span>Third Party:</span> ';
- html += '<a title="AchievementStats.com" href="http://www.achievementstats.com/index.php?action=games&gameId=' + game + '">Achievement Stats</a>' + linkDelim;
- html += '<a title="AStats.nl" href="http://astats.astats.nl/astats/Steam_Game_Info.php?AppID=' + game + '">AStats</a>' + linkDelim;
- html += '<a title="Steam DB" href="http://steamdb.info/app/' + dlc + '/">SteamDB.info</a>' + linkDelim;
- html += '<a title="Steam DB" href="http://steamdb.info/app/' + game + '/">SteamDB.info (Parent Game)</a>' + linkDelim;
- html += '<a title="PC Gaming Wiki" href="http://pcgamingwiki.com/api/appid.php?appid=' + game + '">PC Gaming Wiki</a>';
- return html;
- }
- function htmlLinksAch(game, achName, useLabel, gameAppId) {
- if (typeof(useLabel)==='undefined') { useLabel = false; }
- if (typeof(gameAppId)==='undefined') { gameAppId = false; }
- var html = '';
- if (useLabel) {
- html += '<span>Guide Search:</span> ';
- }
- html += '<a title="Search for a Guide on Google" href="http://www.google.com/#q=%22' + game + '%22 %22' + achName + '%22">Google</a>';
- html += (useLabel ? linkDelim : '<br />');
- html += '<a title="Search for a Guide on YouTube" href="https://www.youtube.com/results?search_query=%22' + game + '%22 %22' + achName + '%22">YouTube</a>';
- if (gameAppId !== false) { //http://steamcommunity.com/app/200900/guides/?searchText=Pea+Shooter&browsefilter=trend&requiredtags[]=-1
- html += (useLabel ? linkDelim : '<br />');
- html += '<a title="Search Steam Guides" href="http://steamcommunity.com/app/' + gameAppId + '/guides/?searchText=' + achName + '&browsefilter=trend&requiredtags[]=-1">Guides</a>';
- }
- return html;
- }
- // =======================================================================================================================
- // Universal Stuff: SLG Styles, Custom Tablesort Parser, Title Edit Var
- $('<style></style>').prop('type', 'text/css').html('' +
- '#isaPageWrap { background-color:#222222; padding:10px; border-top:1px solid #000000; background-image: url(' + backTile + '); }' +
- 'div.isaTableSpacer {height:10px;} .isaWidth100 { width:100%; }' +
- 'h2.isaPageTitleFirst, h2.isaPageTitle { color:#3c9fe5; margin:0; padding:8px 0 2px 0; text-align:center; font-size:24px; font-weight:bold; } ' +
- 'form.isaSmallButton {display:block; float:right;} form.isaSmallButton input {display:inline-block; font-size:10px; margin:0 0 0 0;}' +
- 'span.isaSpanSmallBold { font-weight:bold; font-size:12px; }' +
- 'span.isaSpanRed { color:#ff6161; } span.isaSpanRed2 { color:#f66666; }' +
- 'span.isaSpanYel { color:#ffff5e; } span.isaSpanYel2 { color:#d3d325; }' +
- 'span.isaSpanBlu { color:#7fb3e9; } span.isaSpanBlu2 { color:#2591ff; }' +
- 'span.isaSpanOra { color:#ffae00; } span.isaSpanGre { color:#a6d36a; }' +
- 'span.isaSpanPin { color:#ff68e8; }' +
- 'table.isaTable { background-color:#000000; border-collapse:separate; border-spacing:1px; }' +
- 'table.isaTable td { background-color:#333333; background: linear-gradient(#3A3A3A,#333333); vertical-align:top; padding:2px 4px 3px 4px; color:#EEEEEE;font-size:14px;}' +// border:1px solid #555555;
- 'table.isaTable td a:link, table.isaTable td a:visited { color:#7fb3e9;text-decoration: none; } ' +
- 'table.isaTable td a:hover, table.isaTable td a:active { color:#ffffff;text-decoration: underline; } ' +
- 'table.isaTable th { font-size:16px;background-color:#555555;background:linear-gradient(#5C5C5C,#555555);text-align:center;padding:4px;text-shadow:1px 1px 2px #000000;white-space:nowrap;color:#daf0ff; }' +
- 'table.isaTable th a:link, table.isaTable th a:visited { text-decoration: none; } table.isaTable th a:hover, table.isaTable th a:active { text-decoration: underline; } ' +
- 'table.isaTable td.isaGameImage { text-align:center; padding:3px; vertical-align:top; width:184px; }' +
- 'table.isaTable td.isaGameIcon { text-align:center; padding:3px; vertical-align:top; width:64px; }' +
- 'table.isaTable td.isaGameImage img, table.isaTable td.isaGameIcon img { border:1px solid #676767; }' +
- 'table.isaTable td.isaTitleCell { background-color:#555555; background: linear-gradient(#5C5C5C,#555555); padding:2px 2px 4px 5px; font-size:24px; font-weight:bold; color:#ffffff; text-shadow:2px 2px 4px #000000; }' +
- 'table.isaTable td.isaTitleCell a:link, table.isaTable td.isaTitleCell a:visited { text-decoration: none; color:#24a4ff; }' +
- 'table.isaTable td.isaTitleCell a:hover, table.isaTable td.isaTitleCell a:active { text-decoration: underline; }' +
- 'table.isaTable td.isaTitleCell div.isaTitleAppend { display:inline-block;padding:0 0 0 15px; font-weight:normal; }' +
- 'table.isaTable td.isaLinkContainer { color:#4d4d4d; font-size:12px; text-shadow:1px 1px 2px #000000; padding:3px 5px 3px 5px; } ' +
- 'table.isaTable td.isaLinkContainerMid { text-align:center; vertical-align:middle;color:#4d4d4d; font-size:12px; text-shadow:1px 1px 2px #000000; padding:3px 5px 3px 5px; } ' +
- 'table.isaTable td.isaLinkContainer span, table.isaTable td.isaLinkContainerMid span { color:#cccccc; font-weight:bold; } ' +
- 'table.isaTable td.isaLinkContainerDark { text-align:center; vertical-align:middle;color:#777777; font-size:12px; text-shadow:1px 1px 2px #000000; padding:3px 5px 3px 5px; } ' +
- 'table.isaTable td.isaLinkContainerDark a:link, table.isaTable td.isaLinkContainerDark a:visited { color:#777777;text-decoration: none; } ' +
- 'table.isaTable td.isaLinkContainerDark a:hover,table.isaTable td.isaLinkContainerDark a:active { color:#FFFFFF;text-decoration: underline; } ' +
- 'table.isaTable td.isaStatsCell { padding:4px 0 0 4px; font-size:14px; }' +
- 'table.isaTable td.isaStatsCell div.isaStat { display:inline-block;margin:0 4px 4px 0; padding:2px 7px 2px 5px; color:#beffb9; font-weight:bold; }' +
- 'table.isaTable td.isaStatsCell div.isaStat span { color:#CCCCCC; font-weight:normal; }' +
- 'table.isaTable td.isaListGameImage { padding:3px; width:184px; }' +
- 'table.isaTable td.isaListAchImage { padding:3px; width:64px; }' +
- 'table.isaTable td.isaListAchImage img, table.isaTable td.isaListGameImage img { border:none;padding:0;margin:0;display:block; }' +
- 'table.isaTable td.isaListAchs { padding:5px;width:256px; }' +
- 'table.isaTable td.isaListNumber { padding:2px 4px 2px 4px;vertical-align:middle;text-align:center; }' +
- 'table.isaTable td.isaListBigNumber { padding:2px 4px 2px 4px;vertical-align:middle;text-align:center;font-weight:bold;font-size:24px; }' +
- 'table.isaTable td.isaListSmall { font-size:12px; }' + 'table.isaTable td.isaListSmaller { font-size:10px; }' +
- 'table.isaTable td.isaEvenPadding { padding:3px; }' +
- 'table.isaTable td.isaStatsLarge { padding:2px 0 0 5px; font-size:18px; font-weight:bold; text-shadow:2px 2px 4px #000000; }' +
- 'table.isaTable td.isaStatsLarge div.isaStat { display:inline-block;padding:0 15px 2px 0; color:#cae4ff; font-weight:bold; }' +
- 'table.isaTable td.isaListTitle { font-weight:bold;font-size:16px;color:#b9e2ff; }' +
- 'table.isaTable td.isaListTitle a:link, table.isaTable td.isaListTitle a:visited {color:#b9e2ff;text-decoration:none;}' +
- 'table.isaTable td.isaListTitle a:hover, table.isaTable td.isaListTitle a:active {color:#2591ff;text-decoration:underline;}' +
- 'table.isaTable td.isaListAchDetail { font-size:12px;color:#cccccc;text-shadow:1px 1px 1px #000000; }' +
- 'table.isaTable td.isaListAchDetail h3 { padding:0 0 1px 0;margin:0;font-weight:bold;font-size:16px;color:#b9e2ff; }' +
- 'table.isaTable td.isaListAchDetail h3 a:link, table.isaTable td.isaListAchDetail h3 a:visited {color:#b9e2ff;text-decoration:none;}' +
- 'table.isaTable td.isaListAchDetail h3 a:hover, table.isaTable td.isaListAchDetail h3 a:active {color:#2591ff;text-decoration:underline;}' +
- 'table.isaTable td.isaListAchDetail span { display:inline-block; padding-top:1px; }' +
- 'table.isaTable tr.isaAchBroken td {background-color:#572424; background: linear-gradient(#632929,#572424);}' +
- 'table.isaTable tr.isaAchSeasonal td {background-color:#492e16; background: linear-gradient(#533418,#492e16);}' +
- 'table.isaTable tr.isaAchNonRecurring td, table.isaTable tr.isaAchTemporary td {background-color:#38380a; background: linear-gradient(#40400b,#38380a);}' +
- 'table.isaTable tr.isaAchMonetary td {background-color:#5f2356; background: linear-gradient(#5f2356,#541e4b);}' +
- 'table.isaTable td.isaListShadow { box-shadow:inset 0 0 10px 0 #222; }' +
- 'table.isaTable td.isaListTextShadow { text-shadow:2px 2px 4px #000000; }' +
- 'table.isaTable td.isaListAchUnlocked { background-color:#243d26; background: linear-gradient(#243d26,#29452b);text-shadow:1px 1px 1px #000000; }' +
- 'table.isaTable td.isaBlackedOut { background-color:#111111; background: linear-gradient(#1A1A1A,#111111); color:#777777;font-size:12px; }' +
- 'table.isaTable td.isaHideCell, table.isaTable tr.isaHideCell { display:none; } div.isaActionDiv { cursor:pointer; }' +
- 'table.isaTable tr.isaHoverHighlight td {box-shadow:0px 0px 10px rgba(255, 255, 255, 0.2) inset;} ' +
- 'table.isaTable tr.isaHoverHighlight td.isaListAchDetail, table.isaTable tr.isaHoverHighlight td.isaListAchDetail h3 {text-shadow:1px 1px 1px #000000;} ' +
- 'table.isaTable th.tablesorter-headerAsc { background:url("'+arrowDown+'") right 5px center no-repeat, linear-gradient(to bottom,#5C5C5C,#555555); }' +
- 'table.isaTable th.tablesorter-headerDesc { background:url("'+arrowUp+'") right 5px center no-repeat, linear-gradient(to bottom,#5C5C5C,#555555); }' +
- 'div#isaSettingsContainer { padding:2px 2px 0 0; float: right; display:block; }' +
- 'div#isaSettingsButton { width:27px; height:27px; display:block;background-image: url("'+settingsIcon+'");cursor:pointer; }' +
- '.ui-corner-all {border-radius: 0 !important;}' +
- '.ui-dialog { z-index:403 !important; background-color:#333333;color:#EEEEEE;font-size:14px; border:1px solid #000000;box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);font-family: Arial,Helvetica,Verdana,sans-serif !important;}' +
- '.ui-dialog-titlebar {font-size:16px;background-color:#555555;background:linear-gradient(#5C5C5C,#555555);padding:4px 4px 4px 7px;text-shadow:1px 1px 2px #000000;color:#daf0ff;'+
- 'font-weight:bold; border:none !important;}' +
- '.ui-dialog-titlebar-close {float:right;width:19px;height:19px; background-color:#333333 !important; border:1px solid #222222 !important;background-image:url("'+closeIcon+
- '") !important;background-position:center !important; background-repeat:no-repeat !important; }' +
- '.ui-dialog-titlebar-close:hover {background-color:#0c3551 !important; border:1px solid #333333 !important;} .ui-dialog-titlebar-close span { display: none; }' +
- '.ui-dialog-content {background: linear-gradient(#3A3A3A,#333333);padding:5px;text-shadow:1px 1px 1px #000000;border:none !important;}' +
- '.ui-dialog-content input, .ui-dialog-content textarea {color:#ffffff;background-color:rgba(0, 0, 0, 0.2);border:1px solid #000;border-radius:3px;font-size:12px;font-family: "Courier New", Courier, monospace;margin:0px;}' +
- '.ui-dialog-content fieldset {border:1px solid #000000;} .ui-dialog-content fieldset:not(:first-child) {margin-top:8px;}' +
- '.ui-dialog-content legend { padding:2px 4px 2px 4px;font-weight:bold;}' +
- '.ui-dialog-buttonpane {padding:2px 7px 7px 7px;background-color:none !important;background:none !important;border:none; } .ui-dialog-buttonset {text-align:right;}' +
- '.ui-dialog-buttonset button {margin-left:5px;background: #174a6b !important;text-shadow: 1px 1px 0px #000000;color: #ffffff !important;padding: 2px 10px 2px 10px !important;border: solid #1f628d 1px !important;' +
- 'font-family:Arial,Helvetica,Verdana,sans-serif !important;}' +
- '.ui-dialog-buttonset button:hover {background: #3395d7 !important;}' +
- '.ui-widget-overlay { position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000000;opacity:.60;filter:Alpha(Opacity=60);background-image:none !important;}' +
- 'div.isaSettingsSetting { height:24px;vertical-align:top; }' +
- 'div.isaSettingsSetting label { float:left; }' +
- 'div.isaSettingsSetting input { float:right; }' +
- 'div.isaSettingsText { height:94px;vertical-align:top; }' +
- 'div.isaSettingsText label { float:left; }' +
- 'div.isaSettingsText textarea { float:right; }' +
- '').appendTo('head');
- $.tablesorter.addParser({
- id: 'isaDate', is: function (s) { return false; },
- format: function (s, table, cell, cellIndex) {
- s = $(cell).find('span:eq(0)').text();
- if (s == 'Locked') { return 99999999999999; }
- if (s == 'Unlocked') { return 88888888888888; }
- if (s == 'Unlocked Pre-Tracking') { return 0; }
- s = s.isaReplaceAll('/', '').isaReplaceAll(':', '').isaReplaceAll(' ', '');
- return s;
- }, type: 'numeric'
- });
- $.tablesorter.addParser({
- id: 'isaAstatsPoint', is: function (s) { return false; },
- format: function (s) {
- if (!(s > 0)) { return 99; }
- return s;
- }, type: 'numeric'
- });
- $('body').append('<div id="isaSettingsDialog" title="Improved Steam Achievements - Settings"><fieldset style="width:600px;"><legend>My Details:</legend>' +
- '<div class="isaSettingsSetting"><label for="isaMyName">Name</label><input name="isaMyName" type="text" id="isaMyName" style="width:470px;" /></div>' +
- '<div class="isaSettingsSetting"><label for="isaMySteamId">Steam 64 ID:</label><input name="isaMySteamId" type="text" id="isaMySteamId" style="width:470px;" /></div>' +
- '<div class="isaSettingsSetting"><label for="isaMySteamBit">Steam URL Bit:</label><input name="isaMySteamBit" type="text" id="isaMySteamBit" style="width:470px;" /></div>' +
- '</fieldset><fieldset style="width:600px;"><legend>Deliminators:</legend>' +
- '<div class="isaSettingsSetting"><label for="isaDelimTitle">Title Deliminator:</label><input name="isaDelimTitle" type="text" id="isaDelimTitle" style="width:470px;" /></div>' +
- '<div class="isaSettingsSetting"><label for="isaDelimLink">Link Deliminator:</label><input name="isaDelimLink" type="text" id="isaDelimLink" style="width:470px;" /></div>' +
- '</fieldset></div>');
- $('#isaSettingsDialog input:eq(0)').val((meName === false ? '' : meName));
- $('#isaSettingsDialog input:eq(1)').val((meSteamId === false ? '' : meSteamId));
- $('#isaSettingsDialog input:eq(2)').val((meUrlBit === false ? '' : meUrlBit));
- $('#isaSettingsDialog input:eq(3)').val(titleDelim);
- $('#isaSettingsDialog input:eq(4)').val(linkDelim);
- $('#isaSettingsDialog').dialog({
- modal:true, resizable: false, autoOpen: false, width: 634, position: { my: "center top", at: "center top+120", of: window },
- buttons: [
- { text: "Reset To Defaults", click: function() { jsOptionsMenuReset(); } },
- { text: "Save Settings", click: function() { jsOptionsMenuSave(); } },
- { text: "Close", click: function() { $( this ).dialog( "close" ); } }
- ]
- });
- var settingsButton = $('<div id="isaSettingsContainer"><div id="isaSettingsButton" title="Improved Steam Achievements - Settings"></div></div>');
- $(settingsButton).find('#isaSettingsButton').click(function() {$('#isaSettingsDialog').dialog('open');});
- $(settingsButton).find('#isaSettingsButton').hover(
- function() { $(this).css('background-image', 'url('+settingsIconHover+')');},
- function() { $(this).removeAttr('style'); }
- );
- // =======================================================================================================================
- // Achievement Stats Pages - Changes to All Astats Pages
- if (urlContains('achievementstats.com') && window.top == window.self) {
- $('body').css('font-family', 'Arial');
- //$('body').children().not(':first-child').wrapAll('<div id="isaPageWrap" />');
- $('div#menuBar').nextAll().not('script').not('link').wrapAll('<div id="isaPageWrap" />');
- //$('table').addClass('isaTable');
- // ===================================================================================================================
- // Achievement Stats - Profile Page
- if (urlContains('action=profile') && urlContains('playerId=') && window.location.search.substring(1).split('&').length == 2) {
- // Get Info and Elements
- var formButton = $('#isaPageWrap > :first-child').detach();
- var titleProfileName = $('#isaPageWrap > :first-child').detach().text();
- var ul = $('#isaPageWrap > :first-child').detach();
- var featureImage = $('#isaPageWrap > :first-child').detach();
- var pieChart = $('#isaPageWrap > :first-child').detach().removeAttr('style').css({ 'width': '260px' });
- var statsTable = $('#isaPageWrap > :first-child').detach();
- if ($('#isaPageWrap > :first-child').text().indexOf('summary') != -1) {
- $('#isaPageWrap > :first-child').remove();
- $('#isaPageWrap > :first-child').remove();
- }
- var steamProfileId64 = document.URL.split('playerId=')[1].split('&')[0].split('?')[0].split('#')[0];
- $('#isaPageWrap > :first-child').remove();
- $('#isaPageWrap > :first-child').css('margin', '3px');
- $('#isaPageWrap > table:eq(0)').attr('id', 'isaSecondTable').removeAttr('style').addClass('isaTable isaWidth100');
- $(featureImage).removeAttr('style').find('img').removeAttr('style');
- $(formButton).removeAttr('style').addClass('isaSmallButton');
- $(formButton).find('input').removeAttr('style').attr('value', 'queue profile for update').attr('title', 'Queue this Profile for Update');
- // Make Header Table
- var isaTopTable = $('<table class="isaTable isaWidth100" id="isaTopTable">' +
- '<tr><td rowspan="5" class="isaGameImage"></td><td class="isaTitleCell"></td><td rowspan="5"></td></tr>' +
- '<tr><td class="isaStatsLarge"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr><td class="isaStatsCell"></td></tr></table>');
- $(isaTopTable).find('td:eq(0)').append(featureImage);
- $(isaTopTable).find('td:eq(1)').text(titleProfileName).attr('title', titleProfileName + ' - Profile');
- $(isaTopTable).find('td:eq(1)').prepend(settingsButton);
- $(isaTopTable).find('td:eq(2)').append(pieChart).css({ 'width':'264px', 'vertical-align':'top', 'overflow':'hidden' });
- $(isaTopTable).find('td:eq(4)').html(htmlLinksProfile(steamProfileId64));
- $(isaTopTable).find('td:eq(5)').html('<span>Achievement Stats Controls: </span> ' + htmlFromUl(ul));
- $(isaTopTable).find('td:eq(5)').append(formButton);
- $(statsTable).find('tr').each(function() {
- var statLabel = $(this).find('th:eq(0)').text().trim();
- var statText = $(this).find('td:eq(0)').html();
- if (statLabel == 'Achievements') {
- var statTextParts = statText.split('(');
- statTextParts[0] = statTextParts[0].trim();
- if (statTextParts[0].length > 0) {
- $(isaTopTable).find('td:eq(3)').append('<div class="isaStat" title="Total Achievements Unlocked">' + statTextParts[0] + ' achieved</div>');
- $(isaTopTable).find('td:eq(3)').append('<div class="isaStat" title="Total Astats Points Earned">' + statTextParts[1].replace(' points)', '') + ' points</div>');
- } else {
- $(isaTopTable).find('td:eq(3)').append('<div class="isaStat" title="Total Achievements Unlocked"><span class="isaSpanRed">0 achieved</span></div>');
- $(isaTopTable).find('td:eq(3)').append('<div class="isaStat" title="Total Astats Points Earned"><span class="isaSpanRed">0 points</span></div>');
- }
- } else if (statLabel == 'Completion rate') {
- statText = statText.replace(' ', '').replace('%', '');
- var statPercent = statText / 100;
- $(isaTopTable).find('td:eq(3)').append('<div class="isaStat" title="The average percentage of achievements earned per game/DLC.">' + htmlPercentStr(statText + '% average completion', statPercent) + '</div>');
- } else {
- $(isaTopTable).find('td:eq(6)').append('<div class="isaStat"><span>' + statLabel + ':</span> ' + statText + '</div>');
- }
- });
- var detailLastUpdated = $('table#isaSecondTable').next().detach().text().trim();
- if (detailLastUpdated.length > 0) { // profiles not yet crawled have this detail blank (length zero)
- $(isaTopTable).find('td:eq(6)').append('<div class="isaStat">' + detailLastUpdated + '</div>');
- }
- $(isaTopTable).find('td:eq(6)').append('<div class="isaStat">' + $('table#isaSecondTable').next().detach().text() + '</div>');// Next automatic update
- // Append and Title
- $('#isaPageWrap').prepend(isaTopTable);
- document.title = titleProfileName + titleDelim + 'Profile';
- titleDone = true;
- // Second Table thead Adjustment
- $('table#isaSecondTable').prepend('<thead></thead>');
- $('table#isaSecondTable > thead').append($('table#isaSecondTable > tbody > tr:lt(2)').detach());
- $('table#isaSecondTable > thead > tr:eq(0)').append('<th rowspan="2">Links</th>');
- $('table#isaSecondTable > thead > tr:eq(0) > th:eq(3)').css('width', '40px');
- $('table#isaSecondTable > thead > tr:eq(0) > th:eq(4)').css('width', '230px');
- $('table#isaSecondTable > thead > tr:eq(1) > th:eq(1)').css('width', '40px');
- $('table#isaSecondTable > thead > tr:eq(1) > th:eq(2)').css('width', '60px');
- $('table#isaSecondTable > thead > tr:eq(1) > th:eq(4)').css('width', '40px');
- $('table#isaSecondTable > thead > tr:eq(1) > th:eq(5)').css('width', '60px');
- // Second Table tbody Adjustment
- var completedGames = 0;
- if ($('table#isaSecondTable > tbody > tr:eq(0) > td').length > 1) {
- $('table#isaSecondTable > tbody > tr').each(function (index) {
- if ($(this).find('td:eq(6)').text() == '0') {
- completedGames++;
- }
- var gameAppId = $(this).find('td:eq(1) > a').attr('href').split('gameId=')[1];
- var gameName = $(this).find('td:eq(1) > a').text();
- var newCell = $('<td class="isaLinkContainer"></td>').html(htmlLinksGameShort(gameAppId, gameName, steamProfileId64, false));
- $(this).append(newCell);
- $(this).find('td:eq(0)').addClass('isaListGameImage');
- $(this).find('td:eq(1)').addClass('isaListTitle');
- $(this).find('td:eq(2)').addClass('isaListAchs');
- $(this).find('td:eq(3)').addClass('isaListNumber');
- $(this).find('td:eq(4)').addClass('isaListNumber');
- $(this).find('td:eq(5)').addClass('isaListAchs');
- $(this).find('td:eq(6)').addClass('isaListNumber');
- $(this).find('td:eq(7)').addClass('isaListNumber');
- $(this).find('td:eq(8)').addClass('isaListNumber');
- });
- $('table#isaTopTable td:eq(3)').append('<div class="isaStat" title="Games where this player has gotten every achievement.">' +
- (completedGames > 0 ? '<span class="isaSpanGre">' + completedGames : '<span class="isaSpanRed">0') + ' completed</span></div>');
- jsRowHighlight('table#isaSecondTable');
- } else {
- $('table#isaSecondTable > tbody > tr:eq(0) > td:eq(0)').attr('colspan','10');
- }
- }
- // ===================================================================================================================
- // Achievement Stats - Game Page / DLC Page
- if (urlContains('action=games') && urlContains('gameId=') && window.location.search.substring(1).split('&').length == 2) {
- var titleGameName = '';
- $('#isaPageWrap > form > table:eq(0)').attr('id', 'isaSecondTable').removeAttr('style').addClass('isaTable isaWidth100');
- if ($('#isaPageWrap > form').length == 3) { // Game Page
- // Get Info and Elements
- //alert("sdsadsdf");
- var formButton = $('#isaPageWrap > :first-child').detach();
- titleGameName = $('#isaPageWrap > :first-child').detach().text();
- var featureImage = $('#isaPageWrap > :first-child').detach().find('a:eq(0)');
- var dlcElement = $('#isaPageWrap > :first-child').is('p') ? $('#isaPageWrap > :first-child').detach() : false;
- var ulElement = $('#isaPageWrap > :first-child').detach();
- var detailCompletionTime = $('#isaPageWrap > :first-child').detach().text();
- var detail = $('#isaPageWrap > :first-child').find('table > caption:eq(0)').detach().text();
- var detailAchCount = detail.split(' achievements ')[0];
- var detailAchPoints = detail.split('worth of ')[1].split(' points')[0];
- var gameId = document.URL.split('gameId=')[1].split('&')[0].split('?')[0].split('#')[0];
- var detailDlcUpdated = $('#isaPageWrap > form:eq(0)').next().detach().text();
- var detailNextUpdate = $('#isaPageWrap > form:eq(0)').next().detach().text();
- $(featureImage).removeAttr('style').find('img').removeAttr('style');
- $(formButton).removeAttr('style').addClass('isaSmallButton');
- $(formButton).find('input').removeAttr('style').attr('value', 'update dlc').attr('title', 'Queue this Game for DLC Update');
- // Make Header Table
- var isaTopTable = $('<table class="isaTable isaWidth100" id="isaTopTable">' +
- '<tr><td rowspan="5" class="isaGameImage"></td><td class="isaTitleCell"></td></tr>' +
- '<tr><td class="isaStatsLarge"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr><td class="isaStatsCell"></td></tr></table>');
- $(isaTopTable).find('td:eq(0)').append(featureImage);
- $(isaTopTable).find('td:eq(1)').text(titleGameName).attr('title', 'Achievements for ' + titleGameName);
- $(isaTopTable).find('td:eq(1)').prepend(settingsButton);
- $(isaTopTable).find('td:eq(2)').append('<div class="isaStat">' + detailAchCount + ' achievement'+ (detailAchCount == 1 ? '' : 's') + '</div>');
- $(isaTopTable).find('td:eq(2)').append('<div class="isaStat" title="Astats Point Value of all Achievements">' + detailAchPoints + ' points</div>');
- $(isaTopTable).find('td:eq(3)').html(htmlLinksGameLong(gameId, titleGameName, false, achPeople));
- $(isaTopTable).find('td:eq(4)').html('<span>Achievement Stats Controls: </span> ' + htmlFromUl(ulElement)).append(formButton);
- $(isaTopTable).find('td:eq(5)').append('<div class="isaStat"><span>Average Time Needed for Completion: </span> ' + detailCompletionTime.replace('average hours needed for completion.', '') + 'hours</div>');
- $(isaTopTable).find('td:eq(5)').append('<div class="isaStat"><span>DLC Last Updated:</span> ' + detailDlcUpdated.split('updated on')[1] + '</div>');
- $(isaTopTable).find('td:eq(5)').append('<div class="isaStat"><span>Next Automatic Update:</span> ' + detailNextUpdate.split('update on')[1] + '</div>');
- if (dlcElement !== false) {
- $(isaTopTable).find('td:eq(0)').attr('rowspan', '6');
- $(isaTopTable).find('tr:eq(1)').after('<tr><td></td></tr>');
- $(isaTopTable).find('td:eq(3)').addClass('isaEvenPadding').html(dlcElement.html());
- }
- // Append and Title
- $('#isaPageWrap').prepend('<div class="isaTableSpacer"></div>');
- $('#isaPageWrap').prepend(isaTopTable);
- document.title = titleGameName + titleDelim + 'Game';
- titleDone = true;
- } else { // DLC Page
- // Get Info and Elements
- titleGameName = $('#isaPageWrap > :first-child').detach().text();
- var featureImage = $('#isaPageWrap > :first-child').detach().find('a:eq(0)');
- var parentGame = $('#isaPageWrap > :first-child').detach();
- var ulElement = $('#isaPageWrap > :first-child').detach();
- var detail = $('#isaPageWrap > :first-child').find('table > caption:eq(0)').detach().text();
- var detailAchCount = detail.split(' achievements ')[0];
- var detailAchPoints = detail.split('worth of ')[1].split(' points')[0];
- var gameId = parentGame.find('a').attr('href').split('gameId=')[1].split('&')[0].split('?')[0].split('#')[0];
- var dlcId = document.URL.split('gameId=')[1].split('&')[0].split('?')[0].split('#')[0];
- // Make Header Table
- var isaTopTable = $('<table class="isaTable isaWidth100" id="isaTopTable">' +
- '<tr><td rowspan="5" class="isaGameImage"></td><td class="isaTitleCell"></td></tr>' +
- '<tr><td class="isaStatsLarge"></td></tr><tr><td class="isaEvenPadding"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr><td class="isaLinkContainer"></td></tr></table>');
- $(featureImage).removeAttr('style').find('img').removeAttr('style');
- $(isaTopTable).find('td:eq(0)').append(featureImage);
- $(isaTopTable).find('td:eq(1)').append(document.createTextNode(titleGameName)).attr('title', 'Achievements for ' + titleGameName);
- $(isaTopTable).find('td:eq(1)').prepend(settingsButton);
- $(isaTopTable).find('td:eq(2)').append('<div class="isaStat">DLC</div>');
- $(isaTopTable).find('td:eq(2)').append('<div class="isaStat">' + detailAchCount + ' achievement'+ (detailAchCount == 1 ? '' : 's') + '</div>');
- $(isaTopTable).find('td:eq(2)').append('<div class="isaStat" title="Astats Point Value of all Achievements">' + detailAchPoints + ' points</div>');
- $(isaTopTable).find('td:eq(3)').html(parentGame.html());
- $(isaTopTable).find('td:eq(4)').html(htmlLinksDLC(gameId, dlcId));
- $(isaTopTable).find('td:eq(5)').html('<span>Achievement Stats Controls: </span> ' + htmlFromUl(ulElement));
- // Append and Title
- $('#isaPageWrap').prepend('<div class="isaTableSpacer"></div>');
- $('#isaPageWrap').prepend(isaTopTable);
- document.title = titleGameName + titleDelim + 'DLC';
- titleDone = true;
- }
- // More Info to Header Table
- var brokenCount = $('table#isaSecondTable > tbody > tr.broken').length;
- if (brokenCount > 0) {
- $('table#isaTopTable td:eq(2)').append('<div class="isaStat" title="Broken Achievements cannot be unlocked."><span class="isaSpanRed">' +
- brokenCount + ' broken achievement' + (brokenCount == 1 ? '' : 's') + '</span></div>');
- }
- var seasonalCount = $('table#isaSecondTable > tbody > tr.seasonal').length;
- if (seasonalCount > 0) {
- $('table#isaTopTable td:eq(2)').append('<div class="isaStat" title="Seasonal Achievements can only be unlocked unlocked at certain times."><span class="isaSpanYel">' +
- seasonalCount + ' seasonal achievement' + (seasonalCount == 1 ? '' : 's') + '</span></div>');
- }
- var nonrecurringCount = $('table#isaSecondTable > tbody > tr.nonrecurring').length;
- if (nonrecurringCount > 0) {
- $('table#isaTopTable td:eq(2)').append('<div class="isaStat" title="Non-Recurring Achievements were unlockable for a certain time, but that time has passed."><span class="isaSpanOra">' +
- nonrecurringCount + ' non-recurring achievement' + (nonrecurringCount == 1 ? '' : 's') + '</span></div>');
- }
- var temporaryCount = $('table#isaSecondTable > tbody > tr.temporary').length;
- if (temporaryCount > 0) {
- $('table#isaTopTable td:eq(2)').append('<div class="isaStat" title="Temporary Achievements are planned to be removed of changed."><span class="isaSpanYel">' +
- temporaryCount + ' temporary achievement' + (temporaryCount == 1 ? '' : 's') + '</span></div>');
- }
- var monetaryCount = $('table#isaSecondTable > tbody > tr.monetary').length;
- if (monetaryCount > 0) {
- $('table#isaTopTable td:eq(2)').append('<div class="isaStat" title="Monetary Achievements require a purchase to unlock."><span class="isaSpanPin">' +
- monetaryCount + ' monetary achievement' + (monetaryCount == 1 ? '' : 's') + '</span></div>');
- }
- // Second Table thead Adjustment
- $('<th rowspan="2">Links</th>').insertAfter($('table#isaSecondTable > thead > tr:eq(0) > th:eq(3)'));
- $('table#isaSecondTable > thead > tr:eq(0) > th:eq(2)').detach().insertAfter($('table#isaSecondTable > thead > tr:eq(0) > th:eq(3)'));//move crawled th
- $('table#isaSecondTable > thead > tr:eq(0) > th:eq(1)').remove();// remove desc th
- $('table#isaSecondTable > thead > tr > th:eq(0)').removeAttr('class');
- $('table#isaSecondTable > thead > tr > th:eq(1)').css('width', colWidUnlockPoint + 'px').removeAttr('class').attr('data-sorter', 'isaAstatsPoint');
- $('table#isaSecondTable > thead > tr > th:eq(2)').css('width', colWidUnlockLink + 'px').attr('data-sorter', 'false');
- $('table#isaSecondTable > thead > tr > th:eq(3)').css('width', '110px').removeAttr('class').attr('data-sorter', 'false');
- $('table#isaSecondTable > thead > tr > th:eq(4)').css('width', '96px').removeAttr('class').attr('data-sorter', 'false');
- // Second Table tbody Adjustment
- if ($('table#isaSecondTable > tbody > tr:eq(0) > td').length > 1) {
- $('table#isaSecondTable > tbody > tr').each(function (index) {
- //[pic][title/desc][points][links][crawled][report]
- // data
- var achTitle = $(this).find('td:eq(1) > a').text();
- var achDescr = $(this).find('td:eq(2)').text();
- var achPoint = $(this).find('td:eq(4)').text();
- var achId = $(this).find('td:eq(5) input').attr('value');
- var achTitleHtml = $(this).find('td:eq(1)').html();
- // cells
- $(this).find('td:eq(2)').remove();
- $(this).find('td:eq(2)').detach().insertAfter($(this).find('td:eq(2)'));
- $('<td></td>').insertAfter($(this).find('td:eq(2)'));
- // content
- $(this).find('td:eq(1)').html('<h3>' + achTitleHtml + '</h3>' + achDescr);
- $(this).find('td:eq(2)').html(htmlAstatsPoint(achPoint));
- $(this).find('td:eq(3)').html(htmlLinksAch(titleGameName, achTitle));
- $(this).find('td:eq(4)').html($(this).find('td:eq(4)').text().split(' ').join('<br />'));
- //styles
- $(this).find('td:eq(0)').addClass('isaListAchImage');
- $(this).find('td:eq(1)').addClass('isaListAchDetail');
- $(this).find('td:eq(2)').addClass('isaListBigNumber isaListTextShadow isaListShadow').removeAttr('style');
- $(this).find('td:eq(3)').addClass('isaLinkContainerDark');
- $(this).find('td:eq(4)').addClass('isaLinkContainerDark');
- $(this).find('td:eq(5)').addClass('isaListNumber');
- // row styles and content
- var attr = $(this).attr('class');
- if (typeof attr !== typeof undefined && attr !== false) {
- if (attr == "broken") {
- $(this).removeClass('broken').addClass('isaAchBroken');
- $(this).find('td:eq(1)').append('<br /><span class="isaSpanRed isaSpanSmallBold">Note: This achievement is Broken</span>');
- } else if (attr == 'seasonal') {
- $(this).removeClass('seasonal').addClass('isaAchSeasonal');
- $(this).find('td:eq(1)').append('<br /><span class="isaSpanOra isaSpanSmallBold">Note: This achievement is Seasonal</span>');
- } else if (attr == 'nonrecurring') {
- $(this).removeClass('nonrecurring').addClass('isaAchNonRecurring');
- $(this).find('td:eq(1)').append('<br /><span class="isaSpanYel isaSpanSmallBold">Note: This achievement is Non-recurring</span>');
- } else if (attr == 'temporary') {
- $(this).removeClass('temporary').addClass('isaAchTemporary');
- $(this).find('td:eq(1)').append('<br /><span class="isaSpanYel isaSpanSmallBold">Note: This achievement is Temporary</span>');
- } else if (attr == 'monetary') {
- $(this).removeClass('monetary').addClass('isaAchMonetary');
- $(this).find('td:eq(1)').append('<br /><span class="isaSpanPin isaSpanSmallBold">Note: This achievement is Monetary</span>');
- }
- }
- });
- jsRowHighlight('table#isaSecondTable');
- $('table#isaSecondTable').tablesorter({
- headers: {
- 0: { sortInitialOrder: 'asc' }, 1: { sortInitialOrder: 'asc' }
- }
- });
- }
- }
- // ===================================================================================================================
- // Achievement Stats - Achievement Page
- if (urlContains('action=games') && urlContains('achievementId=') && window.location.search.substring(1).split('&').length == 2) {
- // Get Info and Elements
- var featureImage = $('#isaPageWrap > :nth-child(2)').detach().find('a:eq(0)');
- var iconsAndText = $('#isaPageWrap > :nth-child(2)').detach();
- var picNo = $(iconsAndText).find(':first-child').detach().removeAttr('style');
- var picYes = $(iconsAndText).find(':first-child').detach().removeAttr('style');
- var achText = $(iconsAndText).html().split('<br>');
- var achTitle = achText[0].replace('<b>', '').replace('</b>', '');
- var achDet = achText[1];
- var achValue = achText[2].replace('(', '').replace(')', '').split('poi')[0].trim();
- var markedAs = $('#isaPageWrap > :nth-child(2)').is('form') ? $('#isaPageWrap > :nth-child(2)').detach() : false;
- var markedAsCalender = $('#isaPageWrap > :nth-child(2)').is('p') ? $('#isaPageWrap > :nth-child(2)').detach() : false;
- var ul = $('#isaPageWrap > :nth-child(2)').detach();
- var gameId = $(featureImage).attr('href').split('gameId=')[1].split('&')[0].split('?')[0].split('#')[0];
- var gameName = $(featureImage).attr('title');
- $(featureImage).removeAttr('style').find('img').removeAttr('style');
- $('#isaPageWrap > table:eq(0)').attr('id', 'isaSecondTable').addClass('isaTable');
- // Make Header Table
- var isaTopTable = $('<table class="isaTable isaWidth100" id="isaTopTable">' +
- '<tr><td rowspan="5" class="isaGameIcon"></td><td rowspan="5" class="isaGameIcon"></td><td class="isaTitleCell"></td><td rowspan="5" class="isaGameImage"></td></tr>' +
- '<tr><td></td></tr><tr><td class="isaLinkContainer"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr><td class="isaLinkContainer"></td></tr></table>');
- $(isaTopTable).find('td:eq(0)').append(picYes);
- $(isaTopTable).find('td:eq(1)').append(picNo);
- $(isaTopTable).find('td:eq(2)').html(achTitle + ' (' + htmlAstatsPoint(achValue) + ' points</span>)').attr('title', 'Achievement');
- $(isaTopTable).find('td:eq(2)').prepend(settingsButton);
- $(isaTopTable).find('td:eq(3)').append(featureImage);
- $(isaTopTable).find('td:eq(4)').text(achDet);
- $(isaTopTable).find('td:eq(5)').html(htmlLinksAch(gameName, achTitle, true));
- $(isaTopTable).find('td:eq(6)').html('<span>Achievement Stats Controls: </span> ' + htmlFromUl(ul));
- $(isaTopTable).find('td:eq(7)').html(htmlLinksGameLong(gameId, gameName, false, achPeople));
- if (markedAs !== false) {
- markedAs = $(markedAs).find('ul > li').text().trim();
- $(isaTopTable).find('td:eq(4)').append('<br />');
- if (markedAs == 'Broken') {
- $(isaTopTable).find('td:eq(4)').append('<span class="isaSpanRed isaSpanSmallBold" title="Broken Achievements cannot be unlocked.">Note: This achievement is marked as Broken.</span>');
- } else if (markedAs == 'Seasonal') {
- $(isaTopTable).find('td:eq(4)').append('<span class="isaSpanOra isaSpanSmallBold" title="Seasonal Achievements can only be unlocked unlocked at certain times.">Note: This achievement is marked as Seasonal.</span>');
- } else if (markedAs == 'Non-recurring') {
- $(isaTopTable).find('td:eq(4)').append('<span class="isaSpanYel isaSpanSmallBold" title="Non-Recurring Achievements were unlockable for a certain time, but that time has passed.">Note: This achievement is marked as Non-Recurring.</span>');
- } else if (markedAs == 'Temporary') {
- $(isaTopTable).find('td:eq(4)').append('<span class="isaSpanYel isaSpanSmallBold" title="Temporary Achievements are planned to be removed of changed.">Note: This achievement is marked as Temporary.</span>');
- } else if (markedAs == 'Monetary') {
- $(isaTopTable).find('td:eq(4)').append('<span class="isaSpanPin isaSpanSmallBold" title="Monetary Achievements require a purchase to unlock.">Note: This achievement is marked as Monetary.</span>');
- } else {
- $(isaTopTable).find('td:eq(4)').append('<span class="isaSpanRed isaSpanSmallBold">Note: This achievement is marked as ' + markedAs + '.</span>');
- }
- if (markedAsCalender !== false) {
- $(isaTopTable).find('td:eq(4)').append('<br />');
- $(isaTopTable).find('td:eq(4)').append($(markedAsCalender).children().not('br'));
- }
- }
- // Append and Title
- $('#isaPageWrap > :first-child').after('<div class="isaTableSpacer"></div>');
- $('#isaPageWrap > :first-child').after(isaTopTable);
- document.title = achTitle + titleDelim + 'Achievement';
- titleDone = true;
- }
- // ===================================================================================================================
- // Achievement Stats - Player Unlock History Page
- if (urlContains('action=profile') && urlContains('playerId=') && urlContains('mode=history') && urlContains('gameId=') && window.location.search.substring(1).split('&').length == 4) {
- $('#isaPageWrap > table:eq(0)').attr('id', 'isaSecondTable').addClass('isaTable isaWidth100');
- $('#isaPageWrap > table:eq(1)').attr('id', 'isaLockedTable');
- var thereIsUnlocked = $('table#isaSecondTable > tbody > tr:eq(1) > td').length != 1;
- var thereIsLocked = $('table#isaLockedTable > tbody > tr:eq(1) > td').length != 1;
- if (thereIsUnlocked || thereIsLocked) {
- // Get Info and Elements
- var featureImage = thereIsUnlocked ? $('#isaPageWrap > table:eq(0) > tbody > tr:eq(1) > td:eq(0) > :first-child') : $('table#isaLockedTable > tbody > tr:eq(1) > td:eq(0) > :first-child');
- var titleGameName = $(featureImage).find('img:eq(0)').attr('title');
- var gameAppId = $(featureImage).attr('href').split('gameId=')[1];
- var formButton = $('#isaPageWrap > :first-child').detach(); // put this somewhere
- var titleCellHtml = $('#isaPageWrap > :first-child').detach();
- var playTime = $('#isaPageWrap > :first-child').detach().text().split(' playing')[0];
- $('#isaPageWrap > h3:eq(0)').remove();
- var rssHistoryButton = $(titleCellHtml).find('a:eq(1)').removeAttr('style').css({ 'dislay': 'inline-block', 'margin-left':'15px' });//.css({ 'float':'right' });
- var playerName = $(titleCellHtml).find('a:eq(0)').text();
- var playerId64 = $(titleCellHtml).find('a:eq(0)').attr('href').split('playerId=')[1];
- pushPeople(playerName, playerId64, false);
- $(featureImage).removeAttr('style').find('img').removeAttr('style');
- // Make Header Table
- var isaTopTable = $('<table class="isaTable isaWidth100" id="isaTopTable">' +
- '<tr><td rowspan="4" class="isaGameImage"></td><td class="isaTitleCell"></td></tr>' +
- '<tr><td class="isaStatsLarge"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr class="isaHideCell"><td class="isaLinkContainer"></td></tr></table>');
- $(isaTopTable).find('td:eq(0)').append(featureImage).append(formButton);
- $(isaTopTable).find('td:eq(1)').text(titleGameName).append(rssHistoryButton);
- $(isaTopTable).find('td:eq(1)').prepend(settingsButton);
- var titleAppend = $('<div class="isaTitleAppend isaActionDiv">' + playerName + '\'s Unlock History</div>');
- $(titleAppend).insertBefore(rssHistoryButton);
- $(titleAppend).click(function () { $('table#isaTopTable tr:eq(3)').toggleClass('isaHideCell'); });
- $(titleAppend).hover(function () { $(this).css({ 'text-decoration': 'underline', 'color': '#00c6ff' }); }, function () { $(this).removeAttr('style'); });
- $(isaTopTable).find('td:eq(3)').html(htmlLinksGameLong(gameAppId, titleGameName, false, achPeople));
- $(isaTopTable).find('td:eq(4)').html(htmlLinksProfile(playerId64));
- // Append and Title
- $('#isaPageWrap').prepend('<div class="isaTableSpacer"></div>');
- $('#isaPageWrap').prepend(isaTopTable);
- document.title = playerName + titleDelim + titleGameName + titleDelim + 'Unlock History';
- titleDone = true;
- // Adjust Second Table
- $('table#isaSecondTable').prepend('<thead></thead>');
- $('table#isaSecondTable > thead').append($('table#isaSecondTable > tbody > tr:eq(0)').detach());
- $('table#isaSecondTable > thead > tr > th:eq(0)').remove();
- $('table#isaSecondTable > thead > tr').append('<th style="width:' + colWidUnlockLink + 'px;" data-sorter="false">Links</th>');
- $('table#isaSecondTable > thead > tr > th:eq(1)').css('width', colWidUnlockPoint + 'px').attr('data-sorter', 'isaAstatsPoint');
- $('table#isaSecondTable > thead > tr > th:eq(2)').css('width', colWidUnlockDate + 'px').attr('data-sorter', 'isaDate');
- var achCount = 0;
- var achLockd = 0;
- if (thereIsUnlocked) {
- var rowsUnlocked = $('table#isaSecondTable > tbody > tr');
- for (var i = 0, l = rowsUnlocked.length - 1; i < l; i += 2) {
- $(rowsUnlocked[i]).find('td:eq(0)').remove(); // game image
- $(rowsUnlocked[i]).find('td:eq(0)').addClass('isaListAchImage').removeAttr('rowspan'); //ach icon
- var achTitle = $(rowsUnlocked[i]).find('td:eq(1)').text();
- var achDetail = $(rowsUnlocked[i + 1]).find('td:eq(0)').text();
- $(rowsUnlocked[i]).find('td:eq(1)').addClass('isaListAchDetail').html('<h3>' + achTitle + '</h3>' + achDetail);
- $(rowsUnlocked[i]).find('td:eq(2)').addClass('isaListBigNumber isaListShadow isaListTextShadow').removeAttr('rowspan').removeAttr('style');
- $(rowsUnlocked[i]).find('td:eq(2)').html(htmlAstatsPoint($(rowsUnlocked[i]).find('td:eq(2)').text()));
- $(rowsUnlocked[i]).find('td:eq(3)').addClass('isaListNumber isaListShadow isaListAchUnlocked').removeAttr('rowspan');
- $(rowsUnlocked[i]).append($('<td class="isaLinkContainerDark isaListShadow"></td>').html(htmlLinksAch(titleGameName, achTitle)));
-
- var achTime = $(rowsUnlocked[i]).find('td:eq(3)').text().trim();
- if (achTime == '') {
- $(rowsUnlocked[i]).find('td:eq(3)').html('<span title="This achievement was unlocked before Steam began tracking the date and time achievements are unlocked.">Unlocked Pre-Tracking</span>');
- } else {
- var achTimeParts1 = $(rowsUnlocked[i]).find('td:eq(3)').text().split(' ');
- var achTimeParts2 = achTimeParts1[0].split('/');
- $(rowsUnlocked[i]).find('td:eq(3)').html('<span>' + achTimeParts2[2] + '/' + achTimeParts2[1] + '/' + achTimeParts2[0] + ' ' + achTimeParts1[1] + '</span>');
- }
- achCount++;
- }
- $('table#isaSecondTable > tbody > tr:odd').remove();
- } else {
- $('table#isaSecondTable > tbody > tr:eq(0)').remove();
- }
- if (thereIsLocked) {
- var rowsLocked = $('table#isaLockedTable > tbody > tr');
- for (var i = 1, l = rowsLocked.length - 1; i < l; i += 2) {
- var achTitle = $(rowsLocked[i]).find('td:eq(2)').text();
- var achDetail = $(rowsLocked[i + 1]).find('td:eq(0)').text();
- $(rowsLocked[i]).find('td:eq(0)').remove(); //game pic
- $(rowsLocked[i]).find('td:eq(0)').addClass('isaListAchImage').removeAttr('rowspan'); // ach icon
- $(rowsLocked[i]).find('td:eq(1)').addClass('isaListAchDetail');
- $(rowsLocked[i]).find('td:eq(1)').html('<h3>' + achTitle + '</h3>' + achDetail);
- $(rowsLocked[i]).find('td:eq(2)').addClass('isaListBigNumber isaListShadow isaListTextShadow').removeAttr('rowspan').removeAttr('style');
- $(rowsLocked[i]).find('td:eq(2)').html(htmlAstatsPoint($(rowsLocked[i]).find('td:eq(2)').text()));
- $(rowsLocked[i]).append('<td class="isaListNumber isaListShadow isaListTextShadow"><span>Locked</span></td>');
- $(rowsLocked[i]).append($('<td class="isaLinkContainerDark isaListShadow"></td>').html(htmlLinksAch(titleGameName, achTitle)));
- $('table#isaSecondTable > tbody').append(rowsLocked[i]);
- achLockd++;
- }
- }
- $('table#isaLockedTable').remove();
- domDateColumn($('table#isaSecondTable > tbody > tr'), 3, $('table#isaTopTable td:eq(2)'));
- jsRowHighlight('table#isaSecondTable');
- // More Info to Header Table
- var achTotal = achCount + achLockd;
- var percentStr = achCount + ' / ' + achTotal + ' (' + (Math.round((achCount * 10000) / achTotal) / 100) + '%) completed';
- $('table#isaTopTable td:eq(2)').prepend('<div class="isaStat" title="Total Time ' + playerName + ' has played this game.">' + playTime + '</div>');
- $('table#isaTopTable td:eq(2)').prepend('<div class="isaStat">' + htmlPercentStr(percentStr, achCount / achTotal) + '</div>');
- $('table#isaTopTable td:eq(2)').prepend('<div class="isaStat">' + achTotal + ' achievements</div>');
- // TableSort Second Table
- $('table#isaSecondTable').tablesorter({
- headers: {
- 0: { sortInitialOrder: 'asc' },
- 1: { sortInitialOrder: 'asc' },
- 2: { sortInitialOrder: 'asc' }
- }
- });
- } else {
- $('#isaPageWrap > h2:eq(0)').addClass('isaPageTitleFirst');
- $('#isaPageWrap > h3:eq(0)').remove();
- $('table#isaSecondTable > tbody > tr:eq(0) > th:eq(0)').remove();
- $('table#isaSecondTable > tbody > tr:eq(1) > td:eq(0)').attr('colspan', '4');
- $('table#isaLockedTable').remove();
- }
- }
- // ===================================================================================================================
- // Title
- if (titleDone === false) {
- var newTitle = document.title;
- newTitle = newTitle.replace('Achievement Stats » ', '').replace('Achievement Stats » ', '');
- newTitle = newTitle.isaReplaceAll(' » ', titleDelim).isaReplaceAll(' » ', titleDelim);
- document.title = newTitle;
- }
- }
- // =======================================================================================================================
- if (urlContains('steamcommunity.com')){
- var loggedInSteam64 = false;
- var steamLoggedName = '';
- if($('script:contains("g_steamID")').length > 0){
- var tempStr = $('script:contains("g_steamID"):eq(0)').text().split('g_steamID = "');
- if(tempStr.length == 2){
- loggedInSteam64 = tempStr[1].split('"')[0];
- }
- }
- var steamLoggedIn = loggedInSteam64 != false;
- if(steamLoggedIn){
- var str = $('a.menuitem.supernav.username');
- if (str.length > 0){
- str = (str.length == 1) ? $(str).first() : $(str).eq(1);
- steamLoggedName = $(str).text();
-
- var tempUrl = $(str).attr('href').split('/home')[0];
- if (tempUrl.indexOf('/id/') != -1) {
- pushPeople(steamLoggedName,loggedInSteam64,tempUrl.split('/id/')[1]);
- }else{
- pushPeople(steamLoggedName,loggedInSteam64,false);
- }
- }else{
- steamLoggedIn = false;
- }
- }
- // ===================================================================================================================
- // Global Achievements Page - Can have Player Stats on it
- if (urlContains('steamcommunity.com/stats/') || urlContains('steamcommunity.com//stats/')) {
- $('div.pagecontent:eq(0)').children().slice(0, 2).wrapAll('<div id="isaPageWrap" />');
- // Get Info and Elements
- var titleGameName = $('#isaPageWrap > :first-child > div > h1:eq(0)').text();
- var featureImage = $('#isaPageWrap > :first-child > div > div > div > a:eq(0)');
- $('#isaPageWrap > :first-child').remove();
- $(featureImage).removeAttr('style').find('img').removeAttr('style');
- var gameId = $(featureImage).attr('href').split('/app/')[1].split('/')[0].split('?')[0];
- var steamUrlBit = document.URL.split('/stats/')[1].split('/')[0].split('?')[0];
- var steamLoggedGameOwned = $('#headerContentLeft').text().split('do not own this').length != 2;
- var steamLoggedGotAchData = $('div.compareImg').length > 0;
- // Make Header Table
- var isaTopTable = $('<table class="isaTable isaWidth100" id="isaTopTable">' +
- '<tr><td rowspan="5" class="isaGameImage"></td><td class="isaTitleCell"></td></tr>' +
- '<tr><td class="isaStatsLarge"></td></tr><tr><td class="isaLinkContainer"></td></tr></tr><tr class="isaHideCell"><td class="isaLinkContainer"></td></tr>'+
- '<tr class="isaHideCell"><td class="isaLinkContainer"></td></tr></table>');
- $(isaTopTable).find('td:eq(0)').append(featureImage);
- $(isaTopTable).find('td:eq(1)').text(titleGameName).attr('title', 'Global Achievement Stats for ' + titleGameName);
- $(isaTopTable).find('td:eq(1)').prepend(settingsButton);
- $(isaTopTable).find('td:eq(3)').html(htmlLinksGameLong(gameId, titleGameName, steamUrlBit, achPeople));
- // Make Second Table
- var isaSecondTable = $('<table class="isaTable isaWidth100" id="isaSecondTable" style="margin-bottom:7px;"><thead><tr><th colspan="2">Achievement</th>' +
- '<th style="width:' + colWidUnlockPercent + 'px;" title="Global Completion Percentage">Global Percent</th>' +
- '<th style="width:' + colWidUnlockDate + 'px;" title="Has this player unlocked the achievement\u000ADate Format: YYYY/MM/DD" data-sorter="'+(steamLoggedGameOwned ? 'isaDate' : false)+'">Unlocked</th>' +
- '<th style="width:' + colWidUnlockLink + 'px;" data-sorter="false">Links</th></tr></thead><tbody></tbody></table>');
- // Append and Title
- $('#isaPageWrap').prepend(isaSecondTable);
- $('#isaPageWrap').prepend('<div class="isaTableSpacer"></div>');
- $('#isaPageWrap').prepend(isaTopTable);
- document.title = titleGameName + titleDelim + ((steamLoggedGotAchData) ? 'Me' + titleDelim + 'Unlock History' : 'Game');
- titleDone = true;
- // Tabs Cell
- var tabs = $('div#tabs > div.tab').not('#achievementsTabOff').not('#achievementsTabOn');
- if(tabs.length > 0){
- $(isaTopTable).find('tr:eq(4)').removeClass('isaHideCell');
- var aHtml = [];
- $(tabs).find('a').each(function () { aHtml.push($(this).parent().html()); });
- var aHtmlJoined = '<span>Other Tabs: </span> ' + aHtml.join(linkDelim);
- $(isaTopTable).find('td:eq(5)').html(aHtmlJoined);
- }
- // Second Table Data
- var achievements = $('div.achieveRow');
- var achCount = 0;
- var achTotal = $(achievements).length;
- if ($(achievements).length > 0) {
- $.each(achievements, function (index, value) {
- var newRow = $('<tr><td class="isaListAchImage"></td><td class="isaListAchDetail"></td><td class="isaListBigNumber isaListShadow isaListTextShadow"></td>' +
- '<td class="isaListNumber isaListShadow"></td><td class="isaLinkContainerDark isaListShadow"></td></tr>');
- var image = $(value).find('div.achieveImgHolder > img:eq(0)');
- var title = $(value).find('div.achieveTxtHolder > div.achieveTxt > h3:eq(0)').text();
- var description = $(value).find('div.achieveTxtHolder > div.achieveTxt > h5:eq(0)').text();
- var percent = $(value).find('div.achieveTxtHolder > div.achievePercent:eq(0)').text();
- $(newRow).find('td:eq(0)').append(image);
- $(newRow).find('td:eq(1)').html('<h3>' + title + '</h3>' + description);
- $(newRow).find('td:eq(4)').html(htmlLinksAch(titleGameName, title, false, gameId));
- domPercentCell($(newRow).find('td:eq(2)'), percent);
- var compare = $(value).find('div.compareImg');
- if ($(compare).length > 0) {
- if ($(compare).find('img:eq(0)').attr('src') == $(image).attr('src')) {
- $(newRow).find('td:eq(3)').addClass('isaListAchUnlocked').html('<span>Unlocked</span>');
- achCount++;
- } else {
- $(newRow).find('td:eq(3)').html('<span>Locked</span>');
- }
- } else if (!steamLoggedGameOwned) {
- $(newRow).find('td:eq(3)').addClass('isaBlackedOut').html('<span>You don\'t own this game</span>');
- }
- $('table#isaSecondTable > tbody:eq(0)').append(newRow);
- });
- if (!steamLoggedIn) {
- $('table#isaSecondTable > tbody:eq(0) tr > td:nth-child(4)').addClass('isaBlackedOut').html('<span>Not Logged In</span>');
- }
- } else {
- $('table#isaSecondTable > tbody:eq(0)').append('<tr><td colspan="5"><div align="center">No Achievements</div></td></tr>');
- }
- $('#isaPageWrap > :nth-child(4)').remove(); // remove achievement data div once all data has been obtained
- jsRowHighlight('table#isaSecondTable');
- // More Info to Header Table and Title Append JS
- $('table#isaTopTable td:eq(2)').append('<div class="isaStat">' + achTotal + ' achievements</div>');
- if (steamLoggedGotAchData) {
- var steamLoggedPercent = Math.round((achCount * 10000) / achTotal) / 100;
- var steamLoggedPercentStr = achCount + ' / ' + achTotal + ' (' + steamLoggedPercent + '%) completed';
- $('table#isaTopTable td:eq(2)').append('<div class="isaStat">' + htmlPercentStr(steamLoggedPercentStr, achCount / achTotal) + '</div>');
- var titleAppend = $('<div class="isaTitleAppend isaActionDiv">My Unlock History</div>');
- $('table#isaTopTable td:eq(1)').append(titleAppend);
- if (steamLoggedIn) {
- $('table#isaTopTable td:eq(4)').html(htmlLinksProfile(loggedInSteam64));
- $(titleAppend).click(function () { $('table#isaTopTable tr:eq(3)').toggleClass('isaHideCell'); });
- $(titleAppend).hover(function () { $(this).css({ 'text-decoration': 'underline', 'color': '#00c6ff' }); }, function () { $(this).removeAttr('style'); });
- }
- }
- // TableSort
- $('table#isaSecondTable').tablesorter({ sortInitialOrder: "asc" });
- // AJAX: Player Unlock Dates
- if (steamLoggedGotAchData && steamLoggedIn) {
- $.ajax({
- type: 'GET', url: 'http://steamcommunity.com/profiles/' + loggedInSteam64 + '/stats/' + steamUrlBit + '/achievements?xml=1', dataType: 'xml',
- success: function (data) {
- var visibilityState = $(data).find('playerstats > visibilityState');
- if (visibilityState.length > 0 && $(visibilityState).text() == '3') {
- //var hoursStat = $(data).find('playerstats > stats > hoursPlayed').text();
- //$('table#isaTopTable td:eq(2)').append('<div class="isaStat" title="Playtime the past two weeks.">' + hoursStat + ' hours</div>');
- $(data).find('playerstats > achievements > achievement').each(function () {
- var achName = $(this).find('name').text();
- var h3 = $('table#isaSecondTable > tbody > tr > td:nth-child(2) > h3').filter(function() { return achName == $(this).text(); });
- if ($(this).attr('closed') == '1') {
- var timeUnlocked = $(this).find('unlockTimestamp');
- if (h3) {
- if (timeUnlocked) {
- $(h3).parent().next().next().html('<span>' + new Date($(timeUnlocked).text() * 1000).isaToString() + '</span>');
- } else {
- $(h3).parent().next().next().html('<span title="This achievement was unlocked before Steam began tracking the date and time achievements are unlocked.">Unlocked Pre-Tracking</span>');
- }
- }
- } else {
- //$(h3).parent().next().next().removeClass('isaListAchUnlocked').html('<span>Locked</span>');
- // maybe xml file isnt updated yet? why show achievement as "locked" when its unlocked...
- }
- });
- domDateColumn($('table#isaSecondTable > tbody > tr'), 3, $('table#isaTopTable td:eq(2)'));
- $('table#isaSecondTable').trigger('updateRows');
- }
- },
- error: function () { }, timeout: 5000
- });
- }
- }
- // ===================================================================================================================
- // Player Achievement Unlock History for a Game
- if (((urlContains('steamcommunity.com/id/') || urlContains('steamcommunity.com//id/')) && urlContains('/stats/')) || (urlContains('steamcommunity.com/profiles/') || urlContains('steamcommunity.com//profiles/')) && urlContains('/stats/')) {
- // Get Info and Elements
- var funnyPage = ($('div.pagecontent:eq(0)').length == 0);
- var comparePage = (urlContains('/compare') && steamLoggedIn && $('a:contains("Remove comparison view")').length > 0);
- if(funnyPage === true){
- $('#BG_top,#BG_bottom').wrapAll('<div id="isaPageWrap" />');
- var titleGameName = $('#isaPageWrap > :first-child > h2:eq(0)').text().isaRemoveEnd(' Stats');
- var featureImage = $('#isaPageWrap > :first-child > div > div > div > a:eq(0)');
- var titleProfileName = $('#isaPageWrap > :first-child > h1:eq(0)').text();
- if(comparePage){
- titleProfileName = $('#isaPageWrap > :first-child > h1:eq(0)').clone().find('span').remove().end().text();
- titleProfileName = titleProfileName.trim().isaRemoveEnd(' vs');
- }
- var profileUrl = $('#isaPageWrap > :first-child > div > div > div > a:eq(1)').attr('href');
- var profileUrlType = (profileUrl.indexOf('/profiles/') != -1);
- var profileUrlBit = profileUrlType ? profileUrl.split('/profiles/')[1] : profileUrl.split('/id/')[1];
- $('#isaPageWrap > :first-child').remove();
- var steamAppId = $(featureImage).attr('href').split('/app/')[1].split('/')[0].split('?')[0].split('#')[0];
- var steamUrlBit = urlContains('/stats/appid/') ? document.URL.split('/stats/appid/')[1].split('/')[0].split('?')[0] : document.URL.split('/stats/')[1].split('/')[0].split('?')[0];
- $(featureImage).removeAttr('style').find('img').removeAttr('style');
- }else{
- $('div.pagecontent:eq(0)').children().slice(0, 2).wrapAll('<div id="isaPageWrap" />');
- var titleGameName = $('#isaPageWrap > :first-child > div > div > a > span:eq(1)').text().isaRemoveEnd(' Stats');
- var featureImage = $('#isaPageWrap > :first-child > div > div > div > a:eq(0)');
- var titleProfileName = $('#isaPageWrap > :first-child > div > div > span> a:eq(0)').text();
- var profileUrl = $('#isaPageWrap > :first-child > div > div > span> a:eq(0)').attr('href');
- var profileUrlType = (profileUrl.indexOf('/profiles/') != -1);
- var profileUrlBit = profileUrlType ? profileUrl.split('/profiles/')[1] : profileUrl.split('/id/')[1];
- $('#isaPageWrap > :first-child').remove();
- var steamAppId = $(featureImage).attr('href').split('/app/')[1].split('/')[0].split('?')[0].split('#')[0];
- var steamUrlBit = urlContains('/stats/appid/') ? document.URL.split('/stats/appid/')[1].split('/')[0].split('?')[0] : document.URL.split('/stats/')[1].split('/')[0].split('?')[0];
- $(featureImage).removeAttr('style').find('img').removeAttr('style');
- }
- if (profileUrlType) {
- pushPeople(titleProfileName,profileUrlBit,false);
- }else{
- pushPeople(titleProfileName,false,profileUrlBit);
- }
- if (comparePage){
- var achSummary = $('#topSummaryAchievements').text().split(' of ');
- var achCount = achSummary[0];
- var achTotal = achSummary[1].split(' (')[0];
- var achCount2 = achSummary[1].split('earned:')[1];
- var achTotal2 = achSummary[2].split(' (')[0];
- var avatarLeft = $('div.topAvatarsLeft > div > div > a:eq(0)');
- var avatarRight = $('div.topAvatarsRight > div > div > a:eq(0)');
- var compareRemovalLink = $('a:contains("Remove comparison view"):eq(0)');
- $('div.topAvatarsLeft').remove();
- $('div.topAvatarsRight').remove();
- // Make Header Table - Apply Some Data
- var isaTopTable = $('<table class="isaTable isaWidth100" id="isaTopTable">' +
- '<tr><td rowspan="5" class="isaListAchImage"></td><td class="isaTitleCell"></td><td rowspan="5" class="isaListAchImage"></td></tr>' +
- '<tr><td class="isaStatsLarge"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr class="isaHideCell"><td class="isaLinkContainer"></td></tr>' +
- '<tr class="isaHideCell"><td class="isaLinkContainer"><span>Other Tabs: </span> </td></tr></table>');
- $(isaTopTable).find('td:eq(0)').append(avatarLeft);
- $(isaTopTable).find('td:eq(1)').append(titleGameName + ' - ' + titleProfileName + ' vs. ' + steamLoggedName + ' (me) - Unlock History Compared - ');
- $(isaTopTable).find('td:eq(1)').append(compareRemovalLink);
- $(isaTopTable).find('td:eq(1)').prepend(settingsButton);
- $(isaTopTable).find('td:eq(2)').append(avatarRight);
- $(isaTopTable).find('td:eq(3)').append('<div class="isaStat">' + achTotal + ' achievements</div>');
- $(isaTopTable).find('td:eq(4)').html(htmlLinksGameLong(steamAppId, titleGameName, steamUrlBit, achPeople));
- var percent = Math.round((achCount * 10000) / achTotal) / 100;
- var percentStr = titleProfileName + ': ' + achCount + ' / ' + achTotal + ' (' + percent + '%) completed';
- $(isaTopTable).find('td:eq(3)').append('<div class="isaStat">' + htmlPercentStr(percentStr, achCount / achTotal) + '</div>');
- var percent2 = Math.round((achCount2 * 10000) / achTotal2) / 100;
- var percentStr2 = steamLoggedName + ' (me): ' + achCount2 + ' / ' + achTotal2 + ' (' + percent2 + '%) completed';
- $(isaTopTable).find('td:eq(3)').append('<div class="isaStat">' + htmlPercentStr(percentStr2, achCount2 / achTotal2) + '</div>');
- if ($('#personalAchieve div.achieveImgHolder').length < achTotal) {
- $(isaTopTable).find('td:eq(3) > div.isaStat:eq(0)').append(' <span class="isaSpanRed">(' + (achTotal - $('#personalAchieve div.achieveImgHolder').length) + ' hidden)</span>');
- }
- // Make Second Table
- var isaSecondTable = $('<table class="isaTable isaWidth100" id="isaSecondTable" style="margin-bottom:7px;"><thead><tr>' +
- '<th colspan="2">Achievement</th>' +
- '<th style="width:' + colWidUnlockPercent + 'px;" title="Global Completion Percentage">Global Percent</th>' +
- '<th style="width:' + colWidUnlockDate + 'px;" data-sorter="isaDate" title="Has this player unlocked the achievement\u000ADate Format: YYYY/MM/DD">'+titleProfileName+' Unlocked</th>' +
- '<th style="width:' + colWidUnlockDate + 'px;" data-sorter="isaDate" title="Has this player unlocked the achievement\u000ADate Format: YYYY/MM/DD">'+steamLoggedName+' (me) Unlocked</th>' +
- '<th style="width:' + colWidUnlockLink + 'px;" data-sorter="false">Links</th></tr></thead><tbody></tbody></table>');
- // Append and Title
- $('#isaPageWrap').prepend(isaSecondTable);
- $('#isaPageWrap').prepend('<div class="isaTableSpacer"></div>');
- $('#isaPageWrap').prepend(isaTopTable);
- document.title = titleGameName + titleDelim + titleProfileName + titleDelim + 'Unlock History';
- titleDone = true;
- // Tabs Cell
- var tabs = $('div#tabs > div.tab').not( "#personalAchieveTabOff" ).not( "#personalAchieveTabOn" );
- if(tabs.length > 0){
- $(isaTopTable).find('tr:eq(5)').removeClass('isaHideCell');
- var aHtml = [];
- $(tabs).find('a').each(function () { aHtml.push($(this).parent().html()); });
- var aHtmlJoined = '<span>Other Tabs: </span> ' + aHtml.join(linkDelim);
- $(isaTopTable).find('td:eq(6)').html(aHtmlJoined);
- }
- // Second Table Data
- if ($('#personalAchieve div.achieveImgHolder').length > 0) {
- var achChildren = $('#personalAchieve div.achieveRow');
- for (var i = 0, k = achChildren.length; i < k; i++) {
- var achChild = achChildren[i];
- var newRow = $('<tr><td class="isaListAchImage"></td><td class="isaListAchDetail"></td><td class="isaListBigNumber isaListShadow isaListTextShadow"></td>' +
- '<td class="isaListNumber isaListShadow"></td><td class="isaListNumber isaListShadow"></td><td class="isaLinkContainerDark isaListShadow"></td></tr>');
- var image = $(achChild).find('div:eq(0) img:eq(0)');
- var details = $(achChild).find('div:eq(1)');
- var unlocked = $(details).find('div.achieveUnlockTime');
- var title = $(details).find('div.achieveTxt > h3:eq(0)').text();
- var description = $(details).find('div.achieveTxt > h5:eq(0)').text();
- var progress = $(details).find('div.achievementProgressBar');
- $(newRow).find('td:eq(0)').append(image);
- $(newRow).find('td:eq(1)').html('<h3>' + title + '</h3>' + description);
- $(newRow).find('td:eq(5)').html(htmlLinksAch(titleGameName, title, false, steamAppId));
- if ($(progress).length > 0) {
- progress = $(progress).text();
- $(newRow).find('td:eq(1)').append('<br />');
- $(newRow).find('td:eq(1)').append(progress);
- }
- $(newRow).find('td:eq(2)').text('-');//percent cell
- if (unlocked.length > 0) {
- var unlockedParts = $(unlocked).first().html().split('<br>');
-
- var unlocked1 = unlockedParts[0].trim();
- if(unlocked1.indexOf('Unlocked') != -1){
- unlocked1 = textDateFixSteam(unlocked1);
- $(newRow).find('td:eq(3)').append('<span>' + unlocked1 + '</span>');
- $(newRow).find('td:eq(3)').addClass('isaListAchUnlocked');
- }else{
- $(newRow).find('td:eq(3)').append('<span>Locked</span>');
- }
-
- var unlocked2 = unlockedParts[1].trim();
- if(unlocked2.indexOf('Unlocked') != -1){
- unlocked2 = $(unlocked2).text();
- unlocked2 = textDateFixSteam(unlocked2);
- $(newRow).find('td:eq(4)').append('<span>' + unlocked2 + '</span>');
- $(newRow).find('td:eq(4)').addClass('isaListAchUnlocked');
- }else{
- $(newRow).find('td:eq(4)').append('<span>Locked</span>');
- }
- } else {
- $(newRow).find('td:eq(3)').append('<span>Locked</span>');
- $(newRow).find('td:eq(4)').append('<span>Locked</span>');
- }
- $('table#isaSecondTable > tbody:eq(0)').append(newRow);
- }
- } else {
- $('table#isaSecondTable > tbody:eq(0)').append('<tr><td colspan="6"><div align="center">No Achievements</div></td></tr>');
- }
- $('#isaPageWrap > :nth-child(4)').remove();
- jsRowHighlight('table#isaSecondTable');
- // TableSort
- $('table#isaSecondTable').tablesorter({
- headers: {
- 0: { sortInitialOrder: 'asc' },
- 1: { sortInitialOrder: 'desc' },
- 2: { sortInitialOrder: 'asc' },
- 3: { sortInitialOrder: 'asc' }
- }
- });
- // Adjust Second Table - Date Column
- domDateColumn($('table#isaSecondTable > tbody > tr'), 3);
- domDateColumn($('table#isaSecondTable > tbody > tr'), 4);
- // AJAX: Global Percent Cells
- $.ajax({
- type: 'GET', url: 'http://steamcommunity.com/stats/' + steamUrlBit + '/achievements', dataType: 'html',
- success: function (data) {
- $(data).find('#mainContents > div.achieveRow').each(function () {
- var percent = $(this).find('div.achievePercent').text();
- var achName = $(this).find('div.achieveTxt > h3').text().trim();
- var h3 = $('table#isaSecondTable > tbody > tr > td:nth-child(2) > h3').filter(function() { return achName == $(this).text().trim(); });
- if (h3) {
- domPercentCell($(h3).parent().next(), percent);
- }
- });
- $('table#isaSecondTable').trigger('updateRows');
- }, error: function () { }, timeout: 5000
- });
- }else{
- var achSummary = $('#topSummaryAchievements').text().split(' of ');
- var achCount = achSummary[0];
- var achTotal = achSummary[1].split(' (')[0];
- // Make Header Table - Apply Some Data
- var isaTopTable = $('<table class="isaTable isaWidth100" id="isaTopTable">' +
- '<tr><td rowspan="5" class="isaGameImage"></td><td class="isaTitleCell"></td></tr>' +
- '<tr><td class="isaStatsLarge"></td></tr><tr><td class="isaLinkContainer"></td></tr><tr class="isaHideCell"><td class="isaLinkContainer"></td></tr>' +
- '<tr class="isaHideCell"><td class="isaLinkContainer"><span>Other Tabs: </span> </td></tr></table>');
- $(isaTopTable).find('td:eq(0)').append(featureImage);
- $(isaTopTable).find('td:eq(1)').append(titleGameName + '<div class="isaTitleAppend">' + titleProfileName + '\'s Unlock History</div>');
- if (urlContains('/compare')){
- if (steamLoggedIn){
- $(isaTopTable).find('td:eq(1)').append('<span> - You cannot compare to yourself</span>');
- }else{
- $(isaTopTable).find('td:eq(1)').append('<span> - You must be logged in to compare</span>');
- }
- }
- $(isaTopTable).find('td:eq(1)').prepend(settingsButton);
- $(isaTopTable).find('td:eq(3)').html(htmlLinksGameLong(steamAppId, titleGameName, steamUrlBit, achPeople));
- $(isaTopTable).find('td:eq(2)').append('<div class="isaStat">' + achTotal + ' achievements</div>');
- var percent = Math.round((achCount * 10000) / achTotal) / 100;
- var percentStr = achCount + ' / ' + achTotal + ' (' + percent + '%) completed';
- $(isaTopTable).find('td:eq(2)').append('<div class="isaStat">' + htmlPercentStr(percentStr, achCount / achTotal) + '</div>');
- if ($('#personalAchieve div.achieveImgHolder').length < achTotal) {
- $(isaTopTable).find('td:eq(2) > div.isaStat:eq(0)').append(' <span class="isaSpanRed">(' + (achTotal - $('#personalAchieve div.achieveImgHolder').length) + ' hidden)</span>');
- }
- // Make Second Table
- var isaSecondTable = $('<table class="isaTable isaWidth100" id="isaSecondTable" style="margin-bottom:7px;"><thead><tr>' +
- '<th colspan="2">Achievement</th>' +
- '<th style="width:' + colWidUnlockPercent + 'px;" title="Global Completion Percentage">Global Percent</th>' +
- '<th style="width:' + colWidUnlockDate + 'px;" data-sorter="isaDate" title="Has this player unlocked the achievement\u000ADate Format: YYYY/MM/DD">Unlocked</th>' +
- '<th style="width:' + colWidUnlockLink + 'px;" data-sorter="false">Links</th></tr></thead><tbody></tbody></table>');
- // Append and Title
- $('#isaPageWrap').prepend(isaSecondTable);
- $('#isaPageWrap').prepend('<div class="isaTableSpacer"></div>');
- $('#isaPageWrap').prepend(isaTopTable);
- document.title = titleGameName + titleDelim + titleProfileName + titleDelim + 'Unlock History';
- titleDone = true;
- // Tabs Cell
- var tabs = $('div#tabs > div.tab').not( "#personalAchieveTabOff" ).not( "#personalAchieveTabOn" );
- if(tabs.length > 0){
- $(isaTopTable).find('tr:eq(4)').removeClass('isaHideCell');
- var aHtml = [];
- $(tabs).find('a').each(function () { aHtml.push($(this).parent().html()); });
- var aHtmlJoined = '<span>Other Tabs: </span> ' + aHtml.join(linkDelim);
- $(isaTopTable).find('td:eq(5)').html(aHtmlJoined);
- }
- // Second Table Data
- if ($('#personalAchieve div.achieveImgHolder').length > 0) {
- var achChildren = $('#personalAchieve').children();
- var doingUnlocked = $('#personalAchieve > br').length == 3;
- var brFound = false;
- for (var i = 0, k = achChildren.length; i < k; i++) {
- var achChild = achChildren[i];
- if ($(achChild).is('div') && $(achChild).find('.achieveHiddenBox').length == 0) {
- var newRow = $('<tr><td class="isaListAchImage"></td><td class="isaListAchDetail"></td><td class="isaListBigNumber isaListShadow isaListTextShadow"></td>' +
- '<td class="isaListNumber isaListShadow"></td><td class="isaLinkContainerDark isaListShadow"></td></tr>');
- var image = $(achChild).find('div:eq(0) img:eq(0)');
- var details = $(achChild).find('div:eq(1)');
- var unlocked = $(details).find('div.achieveUnlockTime');
- var title = $(details).find('div.achieveTxt > h3:eq(0)').text();
- var description = $(details).find('div.achieveTxt > h5:eq(0)').text();
- var progress = $(details).find('div.achievementProgressBar');
- $(newRow).find('td:eq(0)').append(image);
- $(newRow).find('td:eq(1)').html('<h3>' + title + '</h3>' + description);
- $(newRow).find('td:eq(4)').html(htmlLinksAch(titleGameName, title, false, steamAppId));
- if ($(progress).length > 0) {
- progress = $(progress).text();
- $(newRow).find('td:eq(1)').append('<br />');
- $(newRow).find('td:eq(1)').append(htmlSteamAchProgress(progress));
- }
- $(newRow).find('td:eq(2)').text('-');//percent cell
- if (unlocked.length > 0) {
- unlocked = $(unlocked).text();
- unlocked = textDateFixSteam(unlocked);
- $(newRow).find('td:eq(3)').append('<span>' + unlocked + '</span>');
- $(newRow).find('td:eq(3)').addClass('isaListAchUnlocked');
- } else {
- if (doingUnlocked && !brFound) {
- $(newRow).find('td:eq(3)').addClass('isaListAchUnlocked');
- $(newRow).find('td:eq(3)').append('<span title="This achievement was unlocked before Steam began tracking the date and time achievements are unlocked.">Unlocked Pre-Tracking</span>');
- } else {
- $(newRow).find('td:eq(3)').append('<span>Locked</span>');
- }
- }
- $('table#isaSecondTable > tbody:eq(0)').append(newRow);
- } else if (doingUnlocked) {
- if ($(achChild).is('br')) {
- brFound = true;
- }
- }
- }
- } else {
- $('table#isaSecondTable > tbody:eq(0)').append('<tr><td colspan="5"><div align="center">No Achievements</div></td></tr>');
- }
- $('#isaPageWrap > :nth-child(4)').remove();
- jsRowHighlight('table#isaSecondTable');
- // TableSort
- $('table#isaSecondTable').tablesorter({
- headers: {
- 0: { sortInitialOrder: 'asc' },
- 1: { sortInitialOrder: 'desc' },
- 2: { sortInitialOrder: 'asc' }
- }
- });
- // Adjust Second Table - Date Column
- domDateColumn($('table#isaSecondTable > tbody > tr'), 3, $('table#isaTopTable td:eq(2)'));
- // AJAX: Global Percent Cells
- $.ajax({
- type: 'GET', url: 'http://steamcommunity.com/stats/' + steamUrlBit + '/achievements', dataType: 'html',
- success: function (data) {
- $(data).find('#mainContents > div.achieveRow').each(function () {
- var percent = $(this).find('div.achievePercent').text();
- var achName = $(this).find('div.achieveTxt > h3').text().trim();
- var h3 = $('table#isaSecondTable > tbody > tr > td:nth-child(2) > h3').filter(function() { return achName == $(this).text().trim(); });
- if (h3) {
- domPercentCell($(h3).parent().next(), percent);
- }
- });
- $('table#isaSecondTable').trigger('updateRows');
- }, error: function () { }, timeout: 5000
- });
- // AJAX: Get Steam 64 ID
- if (profileUrlType) {
- $('table#isaTopTable td:eq(4)').html(htmlLinksProfile(profileUrlBit));
- var titleAppend = $(isaTopTable).find('div.isaTitleAppend:eq(0)').addClass('isaActionDiv');
- $(titleAppend).click(function () { $('table#isaTopTable tr:eq(3)').toggleClass('isaHideCell'); });
- $(titleAppend).hover(function () { $(this).css({ 'text-decoration': 'underline', 'color': '#00c6ff' }); }, function () { $(this).removeAttr('style'); });
- if (meSteamId !== false && profileUrlBit != meSteamId) {
- pushPeople(titleProfileName,profileUrlBit,false);
- $('table#isaTopTable td:eq(3)').html(htmlLinksGameLong(steamAppId, titleGameName, steamUrlBit, achPeople));
- }
- } else {
- $.ajax({
- type: 'GET', url: 'http://steamcommunity.com/id/' + profileUrlBit + '/?xml=1', dataType: 'xml',
- success: function (data) {
- var steamID64 = $(data).find('profile > steamID64').text();
- $('table#isaTopTable td:eq(4)').html(htmlLinksProfile(steamID64));
- var titleAppend = $('table#isaTopTable div.isaTitleAppend:eq(0)').addClass('isaActionDiv');
- $(titleAppend).click(function () { $('table#isaTopTable tr:eq(3)').toggleClass('isaHideCell'); });
- $(titleAppend).hover(function () { $(this).css({ 'text-decoration': 'underline', 'color': '#00c6ff' }); }, function () { $(this).removeAttr('style'); });
- if (meSteamId !== false && steamID64 != meSteamId) {
- pushPeople(titleProfileName,steamID64,profileUrlBit);
- $('table#isaTopTable td:eq(3)').html(htmlLinksGameLong(steamAppId, titleGameName, steamUrlBit, achPeople));
- }
- }, error: function () { }, timeout: 5000
- });
- }
- }
- }
- // ===================================================================================================================
- // Title
- if (!titleDone) {
- document.title = document.title.replace('Steam Community :: ', '').replace(' :: ', titleDelim);
- }
- }
- // =======================================================================================================================
- // End Brace for document.ready function
- });