Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name ForumManager
- // @version 1.0.1
- // @description Rozszerza standardowe forum
- // @author Slupik98
- // @downloadURL http://pastebin.com/raw/bFFzyA2Z
- // @updateURL http://pastebin.com/raw/bFFzyA2Z
- // @match https://*.plemiona.pl/game.php?village=*&screen=forum*
- // @match http://*.plemiona.pl/game.php?village=*&screen=forum*
- // ==/UserScript==
- $.getScript('https://gitcdn.xyz/repo/Slupik/TribalWars/master/SlupioScriptSettings/maincode.js');
- if (!('contains' in String.prototype)) {
- String.prototype.contains = function (str, startIndex) {
- return -1 !== String.prototype.indexOf.call(this, str, startIndex);
- };
- };
- if (!('replaceAll' in String.prototype)) {
- String.prototype.replaceAll = function (token, newToken, ignoreCase) {
- var _token;
- var str = this + "";
- var i = -1;
- if (typeof token === "string") {
- if (ignoreCase) {
- _token = token.toLowerCase();
- while ((
- i = str.toLowerCase().indexOf(
- _token, i >= 0 ? i + newToken.length : 0
- )
- ) !== -1
- ) {
- str = str.substring(0, i) +
- newToken +
- str.substring(i + token.length);
- }
- } else {
- return this.split(token).join(newToken);
- }
- }
- return str;
- };
- };
- FM_COOKIE_MANAGER = {
- HIDDEN_DEPARTMENTS_COOKIE_NAME: 'FM_Departments',//Departments - działy
- createCookie: function (name, decodedData, days) {
- var encodedData = window.btoa(decodedData);
- var value = encodedData;
- var expires;
- if (days) {
- var date = new Date();
- date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
- expires = "; expires=" + date.toGMTString();
- }
- else expires = "";
- document.cookie = name + "=" + value + expires + "; path=/";
- },
- getCookie: function (name) {
- var nameEQ = name + "=";
- var ca = document.cookie.split(';');
- for (var i = 0; i < ca.length; i++) {
- var c = ca[i];
- while (c.charAt(0) == ' ') c = c.substring(1, c.length);
- if (c.indexOf(nameEQ) === 0) {
- var encodedData = c.substring(nameEQ.length, c.length);
- var decodedData = window.atob(encodedData);
- return decodedData;
- }
- }
- return null;
- },
- deleteCookie: function (name) {
- document.createCookie(name, "", -1);
- },
- saveHiddenDepartments: function (dataObject) {
- var dataJSON = JSON.stringify(dataObject);
- FM_COOKIE_MANAGER.createCookie(FM_COOKIE_MANAGER.HIDDEN_DEPARTMENTS_COOKIE_NAME, dataJSON, 1000);
- },
- getHiddenDepartments: function () {
- var dataJSON = FM_COOKIE_MANAGER.getCookie(FM_COOKIE_MANAGER.HIDDEN_DEPARTMENTS_COOKIE_NAME);
- var dataObject = JSON.parse(dataJSON);
- if (dataObject === null) {
- dataObject = [];
- }
- return dataObject;
- }
- };
- FM_CSS = {
- setAllStyles: function () {
- FM_CSS.setTagStyles();
- FM_CSS.setShowerButtonStyle();
- },
- setTagStyles: function () {
- var cssPrefix = '.prefix {' + '\n' +
- ' vertical-align: middle;' + '\n' +
- ' display: inline-block;' + '\n' +
- ' height: 16px;' + '\n' +
- ' line-height: 16px;' + '\n' +
- ' font-size: 9px;' + '\n' +
- ' font-weight: bold;' + '\n' +
- ' text-transform: uppercase;' + '\n' +
- ' text-shadow: rgba(0,0,0,0.2) 0px -1px 0px;' + '\n' +
- ' -moz-border-radius: 3px;' + '\n' +
- ' -webkit-border-radius: 3px;' + '\n' +
- ' border-radius: 3px;' + '\n' +
- ' background-repeat: repeat-x;' + '\n' +
- ' color: #fff!important;' + '\n' +
- ' padding: 3px 9px;' + '\n' +
- //' background: #c1a264' + '\n' +//It is in style for every element
- '}';
- FM_CSS.setStyle(cssPrefix);
- var importantTopic = '.importantTopic {' + '\n' +
- ' background: #c1a264 url(https://dspl.innogamescdn.com/8.57.1/30830/graphic/screen/tableheader_bg3.png) repeat-x;' + '\n' +
- ' background-clip: padding-box;' + '\n' +
- ' padding: 3px;' + '\n' +
- ' box-sizing: border-box;' + '\n' +
- ' height: 23px;' + '\n' +
- ' border-top-left-radius: 3px;' + '\n' +
- ' border-top-right-radius: 3px;' + '\n' +
- ' border-bottom-right-radius: 3px;' + '\n' +
- ' border-bottom-left-radius: 3px;' + '\n' +
- ' cursor: pointer;' + '\n' +
- ' font-weight: bold;' + '\n' +
- '}';
- FM_CSS.setStyle(importantTopic);
- },
- setShowerButtonStyle: function () {
- var cssBtn = '.showerBtn {' + '\n' +
- ' display: inline-block;' + '\n' +
- ' background-color: #c6f9b1;' + '\n' +
- ' margin-bottom: 4px;' + '\n' +
- ' padding: 1px;' + '\n' +
- ' border: 1px solid #000;' + '\n' +
- ' border-radius: 2px;' + '\n' +
- ' white-space: nowrap;' + '\n' +
- ' line-height: 130%;' + '\n' +
- ' text-shadow: rgba(0,0,0,0.2) 0px -1px 0px;' + '\n' +
- '}';
- FM_CSS.setStyle(cssBtn);
- },
- setStyle: function (code) {
- var styleElement = document.createElement("style");
- styleElement.innerHTML = code;
- document.getElementsByTagName("head")[0].appendChild(styleElement);
- }
- };
- FM_SETTER = {
- TOPIC_ROW_NAME: 'topicRowName',
- setTopicRowNames: function () {
- var forumBox = document.getElementById('forum_box');
- var forumContainer = forumBox.children[0];
- var forumContent = forumContainer.children[2];
- var form = forumContent.children[1];
- var table = form.children[0];
- var topicRows = table.rows;
- for (var i = 1; i < topicRows.length - 1; i++) {
- var singleTopicRow = topicRows[i];
- singleTopicRow.setAttribute('name', FM_SETTER.TOPIC_ROW_NAME);
- }
- }
- };
- FM_TAGS = {
- setTags: function () {
- var rows = document.getElementsByName(FM_SETTER.TOPIC_ROW_NAME);
- for (var i = 0; i < rows.length; i++) {
- var row = rows[i];
- FM_TAGS.setTagsForRow(row);
- }
- },
- setTagsForRow: function (row) {
- var title = row.children[0];
- var href = FM_TAGS.getHrefFromTitle(title);
- var tags = FM_TAGS.getTags(href.textContent);
- var spaceToAdd = false;
- if (FM_TAGS.containsPreffixImportant(title)) {
- var text = title.children[2].textContent.replaceAll(':', '!');
- var importantPrefix = FM_TAGS.getImportantTag(text);
- if (title.children.length === 5) {
- title.insertBefore(importantPrefix, title.childNodes[title.childNodes.length - 5]);
- } else {
- title.insertBefore(importantPrefix, title.childNodes[title.childNodes.length - 3]);
- }
- title.children[2].remove();
- }
- for (var i = 0; i < tags.length; i++) {
- var tagText = tags[i];
- var formatedTag = FM_TAGS.getFormatedTag(tagText);
- title.insertBefore(formatedTag, title.childNodes[5 + i]);
- href.textContent = href.textContent.replaceAll(tagText, '');
- spaceToAdd = true;
- }
- if (spaceToAdd) {
- var space = document.createTextNode(" ");
- title.insertBefore(space, title.childNodes[6 + (tags.length - 1)]);
- href.textContent = href.textContent.trim();
- }
- },
- getImportantTag: function (tagText) {
- var spanElement = document.createElement("SPAN");
- tagText = tagText.toUpperCase();
- spanElement.textContent = tagText;
- spanElement.setAttribute('class', 'importantTopic');
- return spanElement;
- },
- getFormatedTag: function (tagText) {
- var spanElement = document.createElement("SPAN");
- tagText = tagText.toUpperCase();
- spanElement.textContent = tagText;
- spanElement.setAttribute('class', 'prefix');
- spanElement.setAttribute('style', 'background: ' + FM_TAGS.getTagColour(tagText));
- return spanElement;
- },
- getTagColour: function (tagText) {
- switch (tagText) {
- case '[I don\'t have any idea]':
- return '#c1a264';
- default:
- var word = tagText.substring(1, tagText.length);
- var md5Code = md5(word);
- var colour = '#' + md5Code.substring(0, 6);
- return colour;
- }
- },
- getTags: function (text) {
- var preElements = text.split(']');
- var tags = [];
- for (var i = 0; i < preElements.length; i++) {
- var probablyTag = preElements[i];
- probablyTag = probablyTag.trim();
- if (probablyTag.startsWith('[')) {
- var tag = probablyTag + ']';
- tag = tag.trim();
- tags.push(tag);
- }
- }
- return tags;
- },
- getHrefFromTitle: function (title) {
- var href = title.children[2];
- if (FM_TAGS.containsPreffixImportant(title)) {
- href = title.children[3];
- }
- return href;
- },
- containsPreffixImportant: function (title) {
- var titleElements = title.children;
- if (titleElements[2].nodeName == "STRONG") {
- return true;
- } else {
- return false;
- }
- }
- };
- FM_DEPARTMENTS_SHOWER = {
- getButton: function () {
- var btn = document.createElement('BUTTON');
- btn.setAttribute('class', 'showerBtn');
- //var text = document.createTextNode("Pokaż ukryte fora");
- var text = document.createElement('A');
- text.textContent = "Pokaż ukryte fora";
- btn.appendChild(text);
- btn.setAttribute('id', 'btnShowHiddenDepartments')
- return btn;
- },
- onShowHiddenDepartments: function () {
- document.getElementById('btnShowHiddenDepartments').remove();
- FM_DEPARTMENTS_SHOWER.showHiddenDepartments();
- },
- showHiddenDepartments: function () {
- var code = '';
- var hiddenDepartments = FM_DEPARTMENTS_HIDDER.hiddenDepartments;
- FM_DEPARTMENTS_HIDDER.hiddenDepartments = [];
- for (var i = 0; i < hiddenDepartments.length; i++) {
- var space = document.createTextNode(" ");
- code += hiddenDepartments[i].outerHTML + space.textContent;
- }
- var forumContainer = document.getElementsByClassName('forum-container')[0];
- var mainDiv = forumContainer.children[0];
- mainDiv.innerHTML += code;
- }
- }
- FM_DEPARTMENTS_HIDDER = {
- hiddenDepartments: [],
- hideHiddenDepartments: function () {
- var forumContainer = document.getElementsByClassName('forum-container')[0];
- var mainDiv = forumContainer.children[0];
- var allDepartments = mainDiv.children;
- var departmentsToHide = FM_COOKIE_MANAGER.getHiddenDepartments();// ['32696'];
- var code = '';
- for (var i = 0; i < allDepartments.length; i++) {
- var department = allDepartments[i];
- var id = FM_DEPARTMENTS_HIDDER.getDepartmentID(department);
- if (departmentsToHide.includes(id) && !department.getAttribute('class').contains('selected')) {
- //FM_DEPARTMENTS_HIDDER.hiddenDepartments.push(department.outerHTML);
- FM_DEPARTMENTS_HIDDER.hiddenDepartments.push(department);
- } else {
- var space = document.createTextNode(" ");
- var codePart = department.outerHTML + space.textContent;
- code += codePart;
- }
- }
- code += FM_DEPARTMENTS_SHOWER.getButton().outerHTML;
- var newDIV = document.createElement('DIV');
- newDIV.innerHTML = code;
- mainDiv.outerHTML = newDIV.outerHTML;
- document.getElementById('btnShowHiddenDepartments').addEventListener('click', function () {
- console.log('clicked!');
- FM_DEPARTMENTS_SHOWER.onShowHiddenDepartments();
- });
- },
- getDepartmentID: function (department) {
- var hrefElement = department.children[0];
- var href = hrefElement.getAttribute('href');
- var ID = href.split('forum_id=')[1];
- return ID;
- }
- };
- FM_APPLET_MANAGER = {
- loadApplet: function () {
- var forumContent = document.getElementsByClassName('forum-content')[0];
- var table = forumContent.children[0];
- var tbody = table.children[0];
- var hrefRow = tbody.children[0];
- var hrefCell = hrefRow.children[hrefRow.children.length - 1];
- var code = '<a id="appletHideDepartment" href="#" style="font-size: 10px;">' + '\n';
- if (FM_APPLET_MANAGER.isActualDepartmentHidden()) {
- code += '» Odkryj to forum' + '\n';
- } else {
- code += '» Ukryj to forum' + '\n';
- }
- code += '<a>';
- hrefCell.innerHTML += code;
- document.getElementById('appletHideDepartment').addEventListener('click', function () {
- FM_APPLET_MANAGER.onHideForum();
- });
- },
- onHideForum: function () {
- var id = FM_APPLET_MANAGER.getActualDepartmentID();
- var hiddenList = FM_COOKIE_MANAGER.getHiddenDepartments();
- var applet = document.getElementById('appletHideDepartment');
- if (FM_APPLET_MANAGER.isActualDepartmentHidden()) {
- applet.innerText = '» Ukryj to forum' + '\n';
- hiddenList.splice(hiddenList.indexOf(id), 1);
- } else {
- applet.innerText = '» Odkryj to forum' + '\n';
- hiddenList[hiddenList.length] = id;
- }
- FM_COOKIE_MANAGER.saveHiddenDepartments(hiddenList);
- FM_DEPARTMENTS_SHOWER.onShowHiddenDepartments();
- FM_DEPARTMENTS_HIDDER.hideHiddenDepartments();
- },
- getActualDepartmentID: function () {
- var departmentRow = document.getElementsByClassName('shared_selected');
- if (departmentRow.length === 0) {
- departmentRow = document.getElementsByClassName('forum selected')[0];
- } else {
- departmentRow = departmentRow[0];
- }
- var id = FM_DEPARTMENTS_HIDDER.getDepartmentID(departmentRow);
- return id;
- },
- isActualDepartmentHidden: function () {
- var hiddenList = FM_COOKIE_MANAGER.getHiddenDepartments();
- var id = FM_APPLET_MANAGER.getActualDepartmentID();
- return hiddenList.includes(id);
- }
- };
- FM_DISTANCE_SETTER = {
- setVillagesDistance: function () {
- var rows = document.getElementsByName(FM_SETTER.TOPIC_ROW_NAME);
- var howManyEdited = 0;
- for (var i = 0; i < rows.length; i++) {
- var row = rows[i];
- if(FM_DISTANCE_SETTER.setDistanceForRow(row)){
- howManyEdited++;
- }
- }
- if(howManyEdited>20){
- FM_GAME.setBiggerWindow();
- }
- },
- setDistanceForRow: function (row) {
- var title = row.children[0];
- var hrefElement = FM_TAGS.getHrefFromTitle(title);
- var href = hrefElement.innerHTML;
- var hrefParts = href.split(' ');
- var edited = false;
- for (var i = 0; i < hrefParts.length; i++) {
- var part = hrefParts[i];
- if (FM_DISTANCE_SETTER.isThisCoords(part)) {
- part = part.trim();
- var x = parseInt(part.split('|')[0]);
- var y = parseInt(part.split('|')[1]);
- var distance = FM_DISTANCE_SETTER.getDistanceFromActualVillage(x, y);
- distance = Math.round(distance);
- var code = part + '<font size="1"><i>(Odległość: ' + distance + ')</i></font>';
- href = href.replaceAll(part, code);
- edited = true;
- }
- }
- hrefElement.innerHTML = href;
- return edited;
- //console.log(href);
- },
- isThisCoords: function (text) {
- var match = text.match(/^([0-9]{1,3})\|([0-9]{1,3})$/);
- return (match !== null);
- },
- getDistanceFromActualVillage: function (x, y) {
- var ownVillage = {
- x: game_data.village.x,
- y: game_data.village.y
- };
- var tartgetVillage = {
- x: x,
- y: y
- }
- return FM_DISTANCE_SETTER.getDistance(ownVillage, tartgetVillage);
- },
- getDistance: function (v1, v2) {
- return Math.sqrt(
- (Math.pow(
- (v1.x - v2.x), 2
- ) +
- Math.pow(
- (v1.y - v2.y), 2
- )
- ));
- }
- };
- FM_LOADER = {
- preloader: function () {
- setTimeout(function () {
- if (FM_LOADER.canRun()) {
- FM_LOADER.load();
- } else {
- FM_LOADER.preloader();
- }
- }, 10);
- },
- canRun: function () {
- if (game_data.screen.toLowerCase() === 'forum') {
- return true;
- }
- return false;
- },
- load: function () {
- //load basic settings
- if (!window.location.search.contains('&thread_id=')) {
- FM_SETTER.setTopicRowNames();
- }
- FM_CSS.setAllStyles();
- //load others settings
- FM_DEPARTMENTS_HIDDER.hideHiddenDepartments();
- FM_APPLET_MANAGER.loadApplet();
- if (!window.location.search.contains('&thread_id=')) {
- FM_DISTANCE_SETTER.setVillagesDistance();//must be first because function below modify html code so hard
- FM_TAGS.setTags();
- }
- }
- };
- FM_GAME = {
- setBiggerWindow: function(){
- var mainCell = document.getElementsByClassName('maincell')[0];
- mainCell.setAttribute('style', 'width: 1000px;')
- }
- };
- //md5
- (function ($) {
- /*
- * JavaScript MD5
- * https://github.com/blueimp/JavaScript-MD5
- *
- * Copyright 2011, Sebastian Tschan
- * https://blueimp.net
- *
- * Licensed under the MIT license:
- * http://www.opensource.org/licenses/MIT
- *
- * Based on
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
- /* global define */
- 'use strict'
- /*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
- function safeAdd(x, y) {
- var lsw = (x & 0xFFFF) + (y & 0xFFFF)
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
- return (msw << 16) | (lsw & 0xFFFF)
- }
- /*
- * Bitwise rotate a 32-bit number to the left.
- */
- function bitRotateLeft(num, cnt) {
- return (num << cnt) | (num >>> (32 - cnt))
- }
- /*
- * These functions implement the four basic operations the algorithm uses.
- */
- function md5cmn(q, a, b, x, s, t) {
- return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)
- }
- function md5ff(a, b, c, d, x, s, t) {
- return md5cmn((b & c) | ((~b) & d), a, b, x, s, t)
- }
- function md5gg(a, b, c, d, x, s, t) {
- return md5cmn((b & d) | (c & (~d)), a, b, x, s, t)
- }
- function md5hh(a, b, c, d, x, s, t) {
- return md5cmn(b ^ c ^ d, a, b, x, s, t)
- }
- function md5ii(a, b, c, d, x, s, t) {
- return md5cmn(c ^ (b | (~d)), a, b, x, s, t)
- }
- /*
- * Calculate the MD5 of an array of little-endian words, and a bit length.
- */
- function binlMD5(x, len) {
- /* append padding */
- x[len >> 5] |= 0x80 << (len % 32)
- x[(((len + 64) >>> 9) << 4) + 14] = len
- var i
- var olda
- var oldb
- var oldc
- var oldd
- var a = 1732584193
- var b = -271733879
- var c = -1732584194
- var d = 271733878
- for (i = 0; i < x.length; i += 16) {
- olda = a
- oldb = b
- oldc = c
- oldd = d
- a = md5ff(a, b, c, d, x[i], 7, -680876936)
- d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)
- c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)
- b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)
- a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)
- d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)
- c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)
- b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)
- a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)
- d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)
- c = md5ff(c, d, a, b, x[i + 10], 17, -42063)
- b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)
- a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)
- d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)
- c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)
- b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)
- a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)
- d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)
- c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)
- b = md5gg(b, c, d, a, x[i], 20, -373897302)
- a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)
- d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)
- c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)
- b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)
- a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)
- d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)
- c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)
- b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)
- a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)
- d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)
- c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)
- b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)
- a = md5hh(a, b, c, d, x[i + 5], 4, -378558)
- d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)
- c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)
- b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)
- a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)
- d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)
- c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)
- b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)
- a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)
- d = md5hh(d, a, b, c, x[i], 11, -358537222)
- c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)
- b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)
- a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)
- d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)
- c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)
- b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)
- a = md5ii(a, b, c, d, x[i], 6, -198630844)
- d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)
- c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)
- b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)
- a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)
- d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)
- c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)
- b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)
- a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)
- d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)
- c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)
- b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)
- a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)
- d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)
- c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)
- b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)
- a = safeAdd(a, olda)
- b = safeAdd(b, oldb)
- c = safeAdd(c, oldc)
- d = safeAdd(d, oldd)
- }
- return [a, b, c, d]
- }
- /*
- * Convert an array of little-endian words to a string
- */
- function binl2rstr(input) {
- var i
- var output = ''
- var length32 = input.length * 32
- for (i = 0; i < length32; i += 8) {
- output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF)
- }
- return output
- }
- /*
- * Convert a raw string to an array of little-endian words
- * Characters >255 have their high-byte silently ignored.
- */
- function rstr2binl(input) {
- var i
- var output = []
- output[(input.length >> 2) - 1] = undefined
- for (i = 0; i < output.length; i += 1) {
- output[i] = 0
- }
- var length8 = input.length * 8
- for (i = 0; i < length8; i += 8) {
- output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32)
- }
- return output
- }
- /*
- * Calculate the MD5 of a raw string
- */
- function rstrMD5(s) {
- return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))
- }
- /*
- * Calculate the HMAC-MD5, of a key and some data (raw strings)
- */
- function rstrHMACMD5(key, data) {
- var i
- var bkey = rstr2binl(key)
- var ipad = []
- var opad = []
- var hash
- ipad[15] = opad[15] = undefined
- if (bkey.length > 16) {
- bkey = binlMD5(bkey, key.length * 8)
- }
- for (i = 0; i < 16; i += 1) {
- ipad[i] = bkey[i] ^ 0x36363636
- opad[i] = bkey[i] ^ 0x5C5C5C5C
- }
- hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)
- return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))
- }
- /*
- * Convert a raw string to a hex string
- */
- function rstr2hex(input) {
- var hexTab = '0123456789abcdef'
- var output = ''
- var x
- var i
- for (i = 0; i < input.length; i += 1) {
- x = input.charCodeAt(i)
- output += hexTab.charAt((x >>> 4) & 0x0F) +
- hexTab.charAt(x & 0x0F)
- }
- return output
- }
- /*
- * Encode a string as utf-8
- */
- function str2rstrUTF8(input) {
- return unescape(encodeURIComponent(input))
- }
- /*
- * Take string arguments and return either raw or hex encoded strings
- */
- function rawMD5(s) {
- return rstrMD5(str2rstrUTF8(s))
- }
- function hexMD5(s) {
- return rstr2hex(rawMD5(s))
- }
- function rawHMACMD5(k, d) {
- return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))
- }
- function hexHMACMD5(k, d) {
- return rstr2hex(rawHMACMD5(k, d))
- }
- function md5(string, key, raw) {
- if (!key) {
- if (!raw) {
- return hexMD5(string)
- }
- return rawMD5(string)
- }
- if (!raw) {
- return hexHMACMD5(key, string)
- }
- return rawHMACMD5(key, string)
- }
- if (typeof define === 'function' && define.amd) {
- define(function () {
- return md5
- })
- } else if (typeof module === 'object' && module.exports) {
- module.exports = md5
- } else {
- $.md5 = md5
- }
- } (this));
- //start script
- FM_LOADER.preloader();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement