SHARE
TWEET

Untitled

a guest Apr 23rd, 2019 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var md5 = function(string) {
  2.     function RotateLeft(lValue, iShiftBits) {
  3.         return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
  4.     }
  5.     function AddUnsigned(lX, lY) {
  6.         var lX4, lY4, lX8, lY8, lResult;
  7.         lX8 = (lX & 0x80000000);
  8.         lY8 = (lY & 0x80000000);
  9.         lX4 = (lX & 0x40000000);
  10.         lY4 = (lY & 0x40000000);
  11.         lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
  12.         if (lX4 & lY4) {
  13.             return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
  14.         }
  15.         if (lX4 | lY4) {
  16.             if (lResult & 0x40000000) {
  17.                 return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
  18.             } else {
  19.                 return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
  20.             }
  21.         } else {
  22.             return (lResult ^ lX8 ^ lY8);
  23.         }
  24.     }
  25.     function F(x, y, z) {
  26.         return (x & y) | ((~x) & z);
  27.     }
  28.     function G(x, y, z) {
  29.         return (x & z) | (y & (~z));
  30.     }
  31.     function H(x, y, z) {
  32.         return (x ^ y ^ z);
  33.     }
  34.     function I(x, y, z) {
  35.         return (y ^ (x | (~z)));
  36.     }
  37.     function FF(a, b, c, d, x, s, ac) {
  38.         a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
  39.         return AddUnsigned(RotateLeft(a, s), b);
  40.     }
  41.     ;function GG(a, b, c, d, x, s, ac) {
  42.         a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
  43.         return AddUnsigned(RotateLeft(a, s), b);
  44.     }
  45.     ;function HH(a, b, c, d, x, s, ac) {
  46.         a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
  47.         return AddUnsigned(RotateLeft(a, s), b);
  48.     }
  49.     ;function II(a, b, c, d, x, s, ac) {
  50.         a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
  51.         return AddUnsigned(RotateLeft(a, s), b);
  52.     }
  53.     ;function ConvertToWordArray(string) {
  54.         var lWordCount;
  55.         var lMessageLength = string.length;
  56.         var lNumberOfWords_temp1 = lMessageLength + 8;
  57.         var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
  58.         var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
  59.         var lWordArray = Array(lNumberOfWords - 1);
  60.         var lBytePosition = 0;
  61.         var lByteCount = 0;
  62.         while (lByteCount < lMessageLength) {
  63.             lWordCount = (lByteCount - (lByteCount % 4)) / 4;
  64.             lBytePosition = (lByteCount % 4) * 8;
  65.             lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
  66.             lByteCount++;
  67.         }
  68.         lWordCount = (lByteCount - (lByteCount % 4)) / 4;
  69.         lBytePosition = (lByteCount % 4) * 8;
  70.         lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
  71.         lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
  72.         lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
  73.         return lWordArray;
  74.     }
  75.     ;function WordToHex(lValue) {
  76.         var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
  77.         for (lCount = 0; lCount <= 3; lCount++) {
  78.             lByte = (lValue >>> (lCount * 8)) & 255;
  79.             WordToHexValue_temp = "0" + lByte.toString(16);
  80.             WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
  81.         }
  82.         return WordToHexValue;
  83.     }
  84.     ;function Utf8Encode(string) {
  85.         string = string.replace(/\r\n/g, "\n");
  86.         var utftext = "";
  87.         for (var n = 0; n < string.length; n++) {
  88.             var c = string.charCodeAt(n);
  89.             if (c < 128) {
  90.                 utftext += String.fromCharCode(c);
  91.             } else if ((c > 127) && (c < 2048)) {
  92.                 utftext += String.fromCharCode((c >> 6) | 192);
  93.                 utftext += String.fromCharCode((c & 63) | 128);
  94.             } else {
  95.                 utftext += String.fromCharCode((c >> 12) | 224);
  96.                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  97.                 utftext += String.fromCharCode((c & 63) | 128);
  98.             }
  99.         }
  100.         return utftext;
  101.     }
  102.     ;var x = Array();
  103.     var k, AA, BB, CC, DD, a, b, c, d;
  104.     var S11 = 7
  105.       , S12 = 12
  106.       , S13 = 17
  107.       , S14 = 22;
  108.     var S21 = 5
  109.       , S22 = 9
  110.       , S23 = 14
  111.       , S24 = 20;
  112.     var S31 = 4
  113.       , S32 = 11
  114.       , S33 = 16
  115.       , S34 = 23;
  116.     var S41 = 6
  117.       , S42 = 10
  118.       , S43 = 15
  119.       , S44 = 21;
  120.     string = Utf8Encode(string);
  121.     x = ConvertToWordArray(string);
  122.     a = 0x67452301;
  123.     b = 0xEFCDAB89;
  124.     c = 0x98BADCFE;
  125.     d = 0x10325476;
  126.     for (k = 0; k < x.length; k += 16) {
  127.         AA = a;
  128.         BB = b;
  129.         CC = c;
  130.         DD = d;
  131.         a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
  132.         d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
  133.         c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
  134.         b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
  135.         a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
  136.         d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
  137.         c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
  138.         b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
  139.         a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
  140.         d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
  141.         c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
  142.         b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
  143.         a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
  144.         d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
  145.         c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
  146.         b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
  147.         a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
  148.         d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
  149.         c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
  150.         b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
  151.         a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
  152.         d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
  153.         c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
  154.         b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
  155.         a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
  156.         d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
  157.         c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
  158.         b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
  159.         a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
  160.         d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
  161.         c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
  162.         b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
  163.         a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
  164.         d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
  165.         c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
  166.         b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
  167.         a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
  168.         d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
  169.         c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
  170.         b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
  171.         a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
  172.         d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
  173.         c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
  174.         b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
  175.         a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
  176.         d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
  177.         c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
  178.         b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
  179.         a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
  180.         d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
  181.         c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
  182.         b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
  183.         a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
  184.         d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
  185.         c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
  186.         b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
  187.         a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
  188.         d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
  189.         c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
  190.         b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
  191.         a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
  192.         d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
  193.         c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
  194.         b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
  195.         a = AddUnsigned(a, AA);
  196.         b = AddUnsigned(b, BB);
  197.         c = AddUnsigned(c, CC);
  198.         d = AddUnsigned(d, DD);
  199.     }
  200.     var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
  201.     return temp.toLowerCase();
  202. };
  203. function clearText(field, focus) {
  204.     if (field.defaultValue == field.value)
  205.         field.value = '';
  206.     else if (field.value == '')
  207.         field.value = field.defaultValue;
  208.     if (!focus && field.defaultValue == field.value)
  209.         field.className = 'text default';
  210.     else
  211.         field.className = 'text';
  212. }
  213. if (!String.prototype.trim) {
  214.     String.prototype.trim = function() {
  215.         return this.replace(/^\s+|\s+$/g, '');
  216.     }
  217.     ;
  218. }
  219. function setClass(a, cls) {
  220.     id = 'q' + a.substr(1);
  221.     var e = document.getElementById(id);
  222.     if (e)
  223.         e.className = cls;
  224. }
  225. function checkHash(hash, answer) {
  226.     return hash.includes(md5(answer.trim().toLowerCase())) ? 1 : 0
  227. }
  228. function checkRadio(a) {
  229.     var r = form[a];
  230.     var ok = 0
  231.       , count = 0;
  232.     for (var i = 0; i < r.length; i++) {
  233.         if (r[i].checked)
  234.             count++;
  235.         if (r[i].checked && r[i].value == 1) {
  236.             ok = 1;
  237.             break;
  238.         }
  239.     }
  240.     if (count == 0) {
  241.         setClass(a, 'q noans');
  242.         return -1;
  243.     }
  244.     setClass(a, 'q');
  245.     return ok;
  246. }
  247. function checkCheckBox(a) {
  248.     var c = form[a];
  249.     var ok = 1
  250.       , count = 0;
  251.     for (var i = 0; i < c.length; i++) {
  252.         if (c[i].checked)
  253.             count++;
  254.         if (c[i].checked != c[i].value)
  255.             ok = 0;
  256.     }
  257.     if (count == 0) {
  258.         setClass(a, 'q noans');
  259.         return -1;
  260.     }
  261.     setClass(a, 'q');
  262.     return ok;
  263. }
  264. function checkText(a) {
  265.     if (form[a].defaultValue == form[a].value) {
  266.         setClass(a, 'q noans');
  267.         return -1;
  268.     }
  269.     setClass(a, 'q');
  270.     return checkHash(form[a + "_"].value, form[a].value)
  271. }
  272. function checkInt(a) {
  273.     res = checkText(a);
  274.     if (res >= 0) {
  275.         var s = form[a].value.trim();
  276.         if (parseInt(s) != s) {
  277.             alert('Не удаётся раскодировать целое число "' + s + '".');
  278.             setClass(a, 'q noans');
  279.             res = -1;
  280.         }
  281.     }
  282.     return res;
  283. }
  284. function checkPairs(a) {
  285.     var info = form[a];
  286.     var count = info.value;
  287.     var ok = 1;
  288.     for (var i = 0; i < count; i++) {
  289.         s = form[a + "_" + (i + 1)];
  290.         if (s.options[0].selected) {
  291.             setClass(a, 'q noans');
  292.             return -1;
  293.         }
  294.         for (var j = 1; j < s.options.length; j++) {
  295.             if (s.options[j].selected != s.options[j].value) {
  296.                 ok = 0;
  297.                 break;
  298.             }
  299.         }
  300.     }
  301.     setClass(a, 'q');
  302.     return ok;
  303. }
  304. var getPageScroll = (window.pageXOffset != undefined) ? function() {
  305.     return {
  306.         left: pageXOffset,
  307.         top: pageYOffset
  308.     };
  309. }
  310. : function() {
  311.     var html = document.documentElement;
  312.     var body = document.body;
  313.     var top = html.scrollTop || body && body.scrollTop || 0;
  314.     top -= html.clientTop;
  315.     var left = html.scrollLeft || body && body.scrollLeft || 0;
  316.     left -= html.clientLeft;
  317.     return {
  318.         top: top,
  319.         left: left
  320.     };
  321. }
  322. ;
  323. var qOK, qTotal;
  324. function checkAnswers(form) {
  325.     var code = form.code.value;
  326.     var a, res, noans = 0;
  327.     var errans = [];
  328.     qCount = code.length;
  329.     qOK = 0;
  330.     for (var i = 1; i <= qCount; i++) {
  331.         a = "a" + i;
  332.         setClass(a, "q");
  333.         switch (code.charAt(i - 1)) {
  334.         case 'r':
  335.             res = checkRadio(a);
  336.             break;
  337.         case 'c':
  338.             res = checkCheckBox(a);
  339.             break;
  340.         case 'v':
  341.             res = checkInt(a);
  342.             break;
  343.         case 's':
  344.             res = checkText(a);
  345.             break;
  346.         case 'm':
  347.             res = checkText(a);
  348.             break;
  349.         case 'p':
  350.             res = checkPairs(a);
  351.             break;
  352.         }
  353.         if (res < 0)
  354.             noans = 1;
  355.         else {
  356.             if (res == 0)
  357.                 errans.push(a);
  358.             qOK += res;
  359.         }
  360.     }
  361.     if (noans) {
  362.         alert('Вы не ответили на некоторые вопросы теста. Эти вопросы выделены красной рамкой.');
  363.         return false;
  364.     }
  365.     var showans = form["showans"].value;
  366.     if (showans == "1")
  367.         for (i = 0; i < errans.length; i++)
  368.             setClass(errans[i], "q errans");
  369.     showPopup(qOK, qCount);
  370.     return false;
  371. }
  372. function vpWidth() {
  373.     return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
  374. }
  375. function vpHeight() {
  376.     return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
  377. }
  378. Number.prototype.div = function(by) {
  379.     return (this - this % by) / by;
  380. }
  381. ;
  382. function ballsWord(ball) {
  383.     var res = 'баллов';
  384.     ball = ball % 100;
  385.     if (ball.div(10) != 1) {
  386.         ball = ball % 10;
  387.         if (ball == 1)
  388.             res = 'балл';
  389.         if (2 <= ball && ball <= 4)
  390.             res = 'балла';
  391.     }
  392.     return res;
  393. }
  394. function voprosWord(n) {
  395.     var res = 'вопросов';
  396.     n = n % 100;
  397.     if (n.div(10) != 1) {
  398.         n = n % 10;
  399.         if (n == 1)
  400.             res = 'вопрос';
  401.         if (2 <= n && n <= 4)
  402.             res = 'вопроса';
  403.     }
  404.     return res;
  405. }
  406. function wheel(e) {
  407.     preventDefault(e);
  408. }
  409. function disable_scroll() {
  410.     if (window.addEventListener) {
  411.         window.addEventListener('DOMMouseScroll', wheel, false);
  412.     }
  413.     window.onmousewheel = document.onmousewheel = wheel;
  414. }
  415. function enable_scroll() {
  416.     if (window.removeEventListener) {
  417.         window.removeEventListener('DOMMouseScroll', wheel, false);
  418.     }
  419.     window.onmousewheel = document.onmousewheel = document.onkeydown = null;
  420. }
  421. function showPopup(qOK, qCount) {
  422.     var scrXY = getPageScroll();
  423.     var c = document.getElementById("cover");
  424.     disable_scroll();
  425.     document.body.style.overflow = "hidden";
  426.     c.style.visibility = "visible";
  427.     c.style.left = scrXY.left + "px";
  428.     c.style.top = scrXY.top + "px";
  429.     var m = document.getElementById("msg");
  430.     var ball = qOK * 100;
  431.     ball = (ball - ball % qCount) / qCount;
  432.     txt = "Вы правильно ответили на " + qOK + " " + voprosWord(qOK) + " из " + qCount + ".<br />" + "Результат: " + ball + " " + ballsWord(ball) + " из 100.<br />";
  433.     otm = 2;
  434.     if (ball >= 50)
  435.         otm = 3;
  436.     if (ball >= 67)
  437.         otm = 4;
  438.     if (ball >= 84)
  439.         otm = 5;
  440.     txt = txt + "<b>Отметка: " + otm + "</b>.";
  441.     m.innerHTML = txt;
  442.     var p = document.getElementById("popup");
  443.     var html = document.documentElement;
  444.     var w = vpWidth();
  445.     var h = vpHeight();
  446.     p.style.left = scrXY.left + (w - p.offsetWidth).div(2) + 'px';
  447.     p.style.top = scrXY.top + (h - p.offsetHeight).div(2) + 'px';
  448.     p.style.visibility = "visible";
  449. }
  450. function hidePopup() {
  451.     var c = document.getElementById("cover");
  452.     c.style.visibility = "hidden";
  453.     var p = document.getElementById("popup");
  454.     p.style.visibility = "hidden";
  455.     enable_scroll();
  456.     document.body.style.overflow = "auto";
  457. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top