// ==UserScript== // @name ru-board_online // @include http://forum.ru-board.com/* // @run-at document-start // ==/UserScript== this.whosonline = ({ autoHighlight: false, url: '/whosonline.cgi', load: function () { if(this.xmlHttp) return; try { this.xmlHttp = new XMLHttpRequest() if(this.xmlHttp.overrideMimeType && this.method == 'POST') this.xmlHttp.overrideMimeType('text/html') } catch(e) { var msv = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"] for(var j = 0; j <= msv.length; j++) { try { this.xmlHttp = new ActiveXObject(msv[j]) break } catch(e) {} } if(!this.xmlHttp) return false } var self = this this.xmlHttp.onreadystatechange = function () { if(self.xmlHttp.readyState == 4) { self.processResponse(self.xmlHttp.responseText) self.xmlHttp = null; } } this.xmlHttp.open("GET", this.url + '?timestamp=' + Math.floor(new Date().valueOf() / 60000), true); this.xmlHttp.send(null); }, processResponse: function (text) { var users = {}; text.replace(/<a href="profile\.cgi\?action=show&member=.*?">(.*?)<\/a>/g, function (a, b) { users[b] = true; }); this.users = users; this.autoHighlight && this.highlightUsers(); }, highlightUsers: function () { if(!this.users) { this.autoHighlight = true; if(!this.xmlHttp) { this.load(); } return; } try { var elements = document.getElementsByTagName('B'); for(var i = 0; i < elements.length; i++) { if(elements[i].parentNode.className == 'm' && this.users[elements[i].textContent]) { var status = document.createElement('img'); status.style.width='16px'; status.style.height='16px'; status.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB7UlEQVR4nG2TP25TQRCHv5l9f3AoIgRCUHAC+ki0qd8xohQRtNwgLR1KsHICqhQ+BGVqDkBN4ufE761nhmJtx07Y1Uq7q53fzH4zI+efznk6FEUQiHKOzZR49rbaPchmxna3J+DhBMH6el9AEBRFQ1GUFAmJEoXjmBgIhBShjUj11LiiorWW2muSJyKCLJlRRnLKrGSFqBBRInkUWBtPbML08zTlg3xitXUejixlVvXV1en3U4uqcDA1CNANMEVpvWX6ZZqGV8P1w9uHy/59383fzbv+TX95f3h/fXF2kapVVRiF7H8hRaKxhnyQT4bDoVu8XjAcDLg52iqrvOpYcpLG9ENUCgMB3VDXUNSVXOdubEeGycDwcr1eDAztwJjGTkzA2UaxzUIQEBBRKLs7Zoabg4O7F/pPSkGdklvHyWT0QWcyF/ROSX8Teqtl9YoudWZie4VVbbwbxqADqU9Xdaq71tqOpnjWXmlv21mzbK5ynfHkoCWCdPzhGKSAdHGOfh3FzcebnzLKn7RINHfN73befpssJl/PLs7MGiNSEFr+Ipte0FDEheSJalWhWVHTwkSdnDJWG14V7yE7hQTg4oiW3Hq93vsasBSR0NgzftZMIYGplSIRHomvc77txv81005LEgQispeyXa+74x/gbhaLySOftQAAAABJRU5ErkJggg=='; status.title='User online'; elements[i].parentNode.appendChild(status); } else if(elements[i].parentNode.className == 'm' && !this.users[elements[i].textContent]) { var status = document.createElement('img'); status.style.width='16px'; status.style.height='16px'; status.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABjUlEQVR4nKVTQY4TMRAsd3vszGYlkJC45Qd8IH/wgUfkwIEzz+CGxEp5AScOeQRv4AEcWZRs8MRjd3OJR56dIA601LLc7SqXym2z3W7xP2H/1lDVm3VjzL8JVHXKNogIqjojWRCoKkQEqopSygSooOck9hb4fc68TmnX5RxUBJHocGLef+q60nUdmHkimRFU8Kth+PoixtCnBBHBiShY58K71ertZ6AAmEhsC1ZVrFPavYwxvD6fcXe5QESwIkL2PpyB3Uj0wMwgIhhjQK2CUgpczuEuJawvF9zHiPsYsR4GrIYBNqVQfakGTwpqUa7mSSkoIhARFABSCuS6b19npsAYg2jM4UiER2b8vOYvZpyYMRAdqvTFM9bGydo9OxfGnIO/3vzEjEfvD7+d21tr0ZLwZrOZzcE3QN8Y82Uw5sfZWhyd+370/uNT33946PvivUdromn/Qh2ecRyRc8Y4jlBVEBGstXDO4bmCxSQy87R2XTd5Y4yZ3bzwoB6s4Apoe+1I3yRoDxPRonYr/gBFPtmRFHFB2gAAAABJRU5ErkJggg=='; status.title='User offline'; elements[i].parentNode.appendChild(status); } } } catch(e) { alert(e.message); } }, run: function () { return this; } }).run(); whosonline&&(whosonline.load(),window.onload=function(){whosonline.highlightUsers();}); |