Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var md5 = function(string) {
- function RotateLeft(lValue, iShiftBits) {
- return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
- }
- function AddUnsigned(lX, lY) {
- var lX4, lY4, lX8, lY8, lResult;
- lX8 = (lX & 0x80000000);
- lY8 = (lY & 0x80000000);
- lX4 = (lX & 0x40000000);
- lY4 = (lY & 0x40000000);
- lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
- if (lX4 & lY4) {
- return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
- }
- if (lX4 | lY4) {
- if (lResult & 0x40000000) {
- return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
- } else {
- return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
- }
- } else {
- return (lResult ^ lX8 ^ lY8);
- }
- }
- function F(x, y, z) {
- return (x & y) | ((~x) & z);
- }
- function G(x, y, z) {
- return (x & z) | (y & (~z));
- }
- function H(x, y, z) {
- return (x ^ y ^ z);
- }
- function I(x, y, z) {
- return (y ^ (x | (~z)));
- }
- function FF(a, b, c, d, x, s, ac) {
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
- return AddUnsigned(RotateLeft(a, s), b);
- }
- ;function GG(a, b, c, d, x, s, ac) {
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
- return AddUnsigned(RotateLeft(a, s), b);
- }
- ;function HH(a, b, c, d, x, s, ac) {
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
- return AddUnsigned(RotateLeft(a, s), b);
- }
- ;function II(a, b, c, d, x, s, ac) {
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
- return AddUnsigned(RotateLeft(a, s), b);
- }
- ;function ConvertToWordArray(string) {
- var lWordCount;
- var lMessageLength = string.length;
- var lNumberOfWords_temp1 = lMessageLength + 8;
- var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
- var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
- var lWordArray = Array(lNumberOfWords - 1);
- var lBytePosition = 0;
- var lByteCount = 0;
- while (lByteCount < lMessageLength) {
- lWordCount = (lByteCount - (lByteCount % 4)) / 4;
- lBytePosition = (lByteCount % 4) * 8;
- lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
- lByteCount++;
- }
- lWordCount = (lByteCount - (lByteCount % 4)) / 4;
- lBytePosition = (lByteCount % 4) * 8;
- lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
- lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
- lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
- return lWordArray;
- }
- ;function WordToHex(lValue) {
- var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
- for (lCount = 0; lCount <= 3; lCount++) {
- lByte = (lValue >>> (lCount * 8)) & 255;
- WordToHexValue_temp = "0" + lByte.toString(16);
- WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
- }
- return WordToHexValue;
- }
- ;function Utf8Encode(string) {
- string = string.replace(/\r\n/g, "\n");
- var utftext = "";
- for (var n = 0; n < string.length; n++) {
- var c = string.charCodeAt(n);
- if (c < 128) {
- utftext += String.fromCharCode(c);
- } else if ((c > 127) && (c < 2048)) {
- utftext += String.fromCharCode((c >> 6) | 192);
- utftext += String.fromCharCode((c & 63) | 128);
- } else {
- utftext += String.fromCharCode((c >> 12) | 224);
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
- utftext += String.fromCharCode((c & 63) | 128);
- }
- }
- return utftext;
- }
- ;var x = Array();
- var k, AA, BB, CC, DD, a, b, c, d;
- var S11 = 7
- , S12 = 12
- , S13 = 17
- , S14 = 22;
- var S21 = 5
- , S22 = 9
- , S23 = 14
- , S24 = 20;
- var S31 = 4
- , S32 = 11
- , S33 = 16
- , S34 = 23;
- var S41 = 6
- , S42 = 10
- , S43 = 15
- , S44 = 21;
- string = Utf8Encode(string);
- x = ConvertToWordArray(string);
- a = 0x67452301;
- b = 0xEFCDAB89;
- c = 0x98BADCFE;
- d = 0x10325476;
- for (k = 0; k < x.length; k += 16) {
- AA = a;
- BB = b;
- CC = c;
- DD = d;
- a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
- d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
- c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
- b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
- a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
- d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
- c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
- b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
- a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
- d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
- c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
- b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
- a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
- d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
- c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
- b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
- a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
- d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
- c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
- b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
- a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
- d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
- c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
- b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
- a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
- d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
- c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
- b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
- a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
- d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
- c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
- b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
- a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
- d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
- c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
- b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
- a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
- d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
- c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
- b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
- a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
- d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
- c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
- b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
- a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
- d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
- c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
- b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
- a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
- d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
- c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
- b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
- a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
- d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
- c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
- b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
- a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
- d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
- c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
- b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
- a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
- d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
- c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
- b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
- a = AddUnsigned(a, AA);
- b = AddUnsigned(b, BB);
- c = AddUnsigned(c, CC);
- d = AddUnsigned(d, DD);
- }
- var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
- return temp.toLowerCase();
- };
- function clearText(field, focus) {
- if (field.defaultValue == field.value)
- field.value = '';
- else if (field.value == '')
- field.value = field.defaultValue;
- if (!focus && field.defaultValue == field.value)
- field.className = 'text default';
- else
- field.className = 'text';
- }
- if (!String.prototype.trim) {
- String.prototype.trim = function() {
- return this.replace(/^\s+|\s+$/g, '');
- }
- ;
- }
- function setClass(a, cls) {
- id = 'q' + a.substr(1);
- var e = document.getElementById(id);
- if (e)
- e.className = cls;
- }
- function checkHash(hash, answer) {
- return hash.includes(md5(answer.trim().toLowerCase())) ? 1 : 0
- }
- function checkRadio(a) {
- var r = form[a];
- var ok = 0
- , count = 0;
- for (var i = 0; i < r.length; i++) {
- if (r[i].checked)
- count++;
- if (r[i].checked && r[i].value == 1) {
- ok = 1;
- break;
- }
- }
- if (count == 0) {
- setClass(a, 'q noans');
- return -1;
- }
- setClass(a, 'q');
- return ok;
- }
- function checkCheckBox(a) {
- var c = form[a];
- var ok = 1
- , count = 0;
- for (var i = 0; i < c.length; i++) {
- if (c[i].checked)
- count++;
- if (c[i].checked != c[i].value)
- ok = 0;
- }
- if (count == 0) {
- setClass(a, 'q noans');
- return -1;
- }
- setClass(a, 'q');
- return ok;
- }
- function checkText(a) {
- if (form[a].defaultValue == form[a].value) {
- setClass(a, 'q noans');
- return -1;
- }
- setClass(a, 'q');
- return checkHash(form[a + "_"].value, form[a].value)
- }
- function checkInt(a) {
- res = checkText(a);
- if (res >= 0) {
- var s = form[a].value.trim();
- if (parseInt(s) != s) {
- alert('Не удаётся раскодировать целое число "' + s + '".');
- setClass(a, 'q noans');
- res = -1;
- }
- }
- return res;
- }
- function checkPairs(a) {
- var info = form[a];
- var count = info.value;
- var ok = 1;
- for (var i = 0; i < count; i++) {
- s = form[a + "_" + (i + 1)];
- if (s.options[0].selected) {
- setClass(a, 'q noans');
- return -1;
- }
- for (var j = 1; j < s.options.length; j++) {
- if (s.options[j].selected != s.options[j].value) {
- ok = 0;
- break;
- }
- }
- }
- setClass(a, 'q');
- return ok;
- }
- var getPageScroll = (window.pageXOffset != undefined) ? function() {
- return {
- left: pageXOffset,
- top: pageYOffset
- };
- }
- : function() {
- var html = document.documentElement;
- var body = document.body;
- var top = html.scrollTop || body && body.scrollTop || 0;
- top -= html.clientTop;
- var left = html.scrollLeft || body && body.scrollLeft || 0;
- left -= html.clientLeft;
- return {
- top: top,
- left: left
- };
- }
- ;
- var qOK, qTotal;
- function checkAnswers(form) {
- var code = form.code.value;
- var a, res, noans = 0;
- var errans = [];
- qCount = code.length;
- qOK = 0;
- for (var i = 1; i <= qCount; i++) {
- a = "a" + i;
- setClass(a, "q");
- switch (code.charAt(i - 1)) {
- case 'r':
- res = checkRadio(a);
- break;
- case 'c':
- res = checkCheckBox(a);
- break;
- case 'v':
- res = checkInt(a);
- break;
- case 's':
- res = checkText(a);
- break;
- case 'm':
- res = checkText(a);
- break;
- case 'p':
- res = checkPairs(a);
- break;
- }
- if (res < 0)
- noans = 1;
- else {
- if (res == 0)
- errans.push(a);
- qOK += res;
- }
- }
- if (noans) {
- alert('Вы не ответили на некоторые вопросы теста. Эти вопросы выделены красной рамкой.');
- return false;
- }
- var showans = form["showans"].value;
- if (showans == "1")
- for (i = 0; i < errans.length; i++)
- setClass(errans[i], "q errans");
- showPopup(qOK, qCount);
- return false;
- }
- function vpWidth() {
- return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
- }
- function vpHeight() {
- return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
- }
- Number.prototype.div = function(by) {
- return (this - this % by) / by;
- }
- ;
- function ballsWord(ball) {
- var res = 'баллов';
- ball = ball % 100;
- if (ball.div(10) != 1) {
- ball = ball % 10;
- if (ball == 1)
- res = 'балл';
- if (2 <= ball && ball <= 4)
- res = 'балла';
- }
- return res;
- }
- function voprosWord(n) {
- var res = 'вопросов';
- n = n % 100;
- if (n.div(10) != 1) {
- n = n % 10;
- if (n == 1)
- res = 'вопрос';
- if (2 <= n && n <= 4)
- res = 'вопроса';
- }
- return res;
- }
- function wheel(e) {
- preventDefault(e);
- }
- function disable_scroll() {
- if (window.addEventListener) {
- window.addEventListener('DOMMouseScroll', wheel, false);
- }
- window.onmousewheel = document.onmousewheel = wheel;
- }
- function enable_scroll() {
- if (window.removeEventListener) {
- window.removeEventListener('DOMMouseScroll', wheel, false);
- }
- window.onmousewheel = document.onmousewheel = document.onkeydown = null;
- }
- function showPopup(qOK, qCount) {
- var scrXY = getPageScroll();
- var c = document.getElementById("cover");
- disable_scroll();
- document.body.style.overflow = "hidden";
- c.style.visibility = "visible";
- c.style.left = scrXY.left + "px";
- c.style.top = scrXY.top + "px";
- var m = document.getElementById("msg");
- var ball = qOK * 100;
- ball = (ball - ball % qCount) / qCount;
- txt = "Вы правильно ответили на " + qOK + " " + voprosWord(qOK) + " из " + qCount + ".<br />" + "Результат: " + ball + " " + ballsWord(ball) + " из 100.<br />";
- otm = 2;
- if (ball >= 50)
- otm = 3;
- if (ball >= 67)
- otm = 4;
- if (ball >= 84)
- otm = 5;
- txt = txt + "<b>Отметка: " + otm + "</b>.";
- m.innerHTML = txt;
- var p = document.getElementById("popup");
- var html = document.documentElement;
- var w = vpWidth();
- var h = vpHeight();
- p.style.left = scrXY.left + (w - p.offsetWidth).div(2) + 'px';
- p.style.top = scrXY.top + (h - p.offsetHeight).div(2) + 'px';
- p.style.visibility = "visible";
- }
- function hidePopup() {
- var c = document.getElementById("cover");
- c.style.visibility = "hidden";
- var p = document.getElementById("popup");
- p.style.visibility = "hidden";
- enable_scroll();
- document.body.style.overflow = "auto";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement