var widgets = new Array(); var xmlHttp = createXmlHttpRequestObject(); var cache = new Array(); var token = ""; var widgetscache = new Array(); var scriptscache = new Array(); function irc(id) { if (typeof id == "string") { return document.getElementById && document.getElementById(id) ? document.getElementById(id) : false; } else return id; } function ircval(id) { var element = irc(id); if (element) { if (element.type == "checkbox") { if (element.checked) return "1"; else return "0"; } else return element.value; } return -1; } function createXmlHttpRequestObject() { var xmlHttp = false; try { xmlHttp = new XMLHttpRequest(); } catch (e) { var XmlHttpVersions = new Array( "MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ); for (var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++) { try { xmlHttp = new ActiveXObject(XmlHttpVersions[i]); } catch (e) {} } } return xmlHttp; } function message(tokenLocal, msg, parameters, screen, progressbar, req) { var req = req ? req : "xml"; if (!xmlHttp) alert( "Извините, но платформа IRCODE работает только с web-браузерами, поддерживающими AJAX." ); else { if (msg) { token = encodeURIComponent(tokenLocal); msg = encodeURIComponent(msg); parameters = encodeURIComponent(parameters); cache.push([ "token=" + token + "&msg=" + msg + "¶meters=" + parameters, screen, progressbar, req, ]); } try { if ( (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0 ) { var casheEntry = cache.shift(); messageString = casheEntry[0]; var screen = casheEntry[1]; var progressbar = casheEntry[2]; var req = casheEntry[3]; xmlHttp.open("POST", "index.php?type=" + req, true); xmlHttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded;" ); var progressBarId = randomId(10); widgets.push(new ircPreloader(progressBarId, screen, progressbar, req)); getWidget(progressBarId).show(); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { handleServerResponse(xmlHttp.responseXML); getWidget(progressBarId).hide(); setTimeout("message();", 500); } }; setTimeout("xmlHttp.send(messageString);", 50); } } catch (e) { alert("Ошибка соединения с сервером."); } } } function ircodeParam(name, value) { if (value) myValue = new String(Base64.encode(String(value))); else myValue = ""; return "<" + name + ">" + myValue + ""; } function handleServerResponse(msg, parentNode) { if (msg) { if (msg.hasChildNodes()) { var elements = parentNode ? msg.childNodes : msg.getElementsByTagName("content")[0].childNodes; for (var i = 0; i < elements.length; i++) { var parent = elements[i].getAttribute("parent") ? elements[i].getAttribute("parent") : elements[i].parentNode.getAttribute("id"); var id = elements[i].getAttribute("id") ? elements[i].getAttribute("id") : randomId(10); elements[i].setAttribute("id", id); var action = elements[i].getAttribute("action") ? elements[i].getAttribute("action") : "new"; var data = elements[i].getAttribute("data") ? elements[i].getAttribute("data") : ""; var target = elements[i].getAttribute("target") ? elements[i].getAttribute("target") : ""; var element = elements[i].nodeName; if (element == "setdiv") { if (!parent) parent = elements[i].parentNode.getAttribute("id"); var setdiv = elements[i].childNodes; var content = ""; for (var j = 0; j < setdiv.length; j++) { content += setdiv[j].nodeValue; } var screen = irc(parent); if (screen) { var childs = screen.childNodes; screen.innerHTML = content; } } else if (element == "appenddiv") { if (!parent) parent = elements[i].parentNode.getAttribute("id"); var setdiv = elements[i].childNodes; var content = ""; for (var j = 0; j < setdiv.length; j++) { content += setdiv[j].nodeValue; } var screen = irc(parent); if (screen) { var childs = screen.childNodes; screen.innerHTML += content; } } else if (element == "action") { if (!parent) parent = elements[i].parentNode.getAttribute("id"); var event = elements[i].getAttribute("event") ? elements[i].getAttribute("event") : "click"; var action = elements[i].firstChild.nodeValue ? elements[i].firstChild.nodeValue : ""; action = action.replace(/\n/, ""); action = action.replace(/\r/, ""); action = action.replace("this", "elementAction"); var elementAction = irc(parent); if (elementAction) { var eventStart = function (event) { var event = event || window.event; var target = event.target || event.srcElement; if (target.id == parent) eval(action); }; if (elementAction.addEventListener) { elementAction.addEventListener(event, eventStart, false); } else if (elementAction.attachEvent) { elementAction.attachEvent("on" + event, eventStart); } else { elementAction["on" + event] = eventStart; } } } else if (element == "show") { var target = elements[i].childNodes[0].nodeValue; show(target); } else if (element == "hide") { var target = elements[i].childNodes[0].nodeValue; hide(target); } else if (element == "rawjs") { var js = elements[i].childNodes[0].nodeValue; js = js.replace(/\n/, ""); js = js.replace(/\r/, ""); eval(js); } else if (element == "clear") { var clear = elements[i].childNodes[0].nodeValue; var j = 0; while (j < widgets.length) { if (widgets[j].parent == clear) { removeLayer(widgets[j].id); } j++; } } else if (element == "ping") { // nothing } else if (element) { var objects = document.getElementsByTagName("link"); var is_exist = false; if (elements[i].hasChildNodes()) var msg = elements[i]; else var msg = ""; widgetscache.push([element, id, parent, action, data, msg, target]); for (var j = 0; j < objects.length; j++) { if ( objects[j].getAttribute("href") == "//open.gu-ural.ru/extern/css/" + element + ".css" ) { is_exist = true; } } if (!is_exist) { var css = document.createElement("link"); css.setAttribute("href", "//open.gu-ural.ru/extern/css/" + element + ".css"); css.setAttribute("type", "text/css"); css.setAttribute("rel", "Stylesheet"); document.getElementsByTagName("head")[0].appendChild(css); } var objects = document.getElementsByTagName("script"); var is_exist = false; for (var j = 0; j < objects.length; j++) { if ( objects[j].getAttribute("src") == "//open.gu-ural.ru/extern/js/" + element + ".js" ) { is_exist = true; } } if (!is_exist) { var script = document.createElement("script"); script.src = "//open.gu-ural.ru/extern/js/" + element + ".js"; script.type = "text/javascript"; script.setAttribute("element", element); script.onload = function () { if ( !this.readyState || this.readyState == "loaded" || this.readyState == "complete" ) { scriptscache.push(this.getAttribute("element")); setTimeout("handleServerResponse()", 1); } }; document.getElementsByTagName("head")[0].appendChild(script); } else { setTimeout("handleServerResponse()", 50); } } } } } else if (widgetscache.length > 0) { var execute = widgetscache.shift(); var element = execute[0]; var id = execute[1]; var parent = execute[2]; var action = execute[3]; var data = execute[4]; var msg = execute[5]; var target = execute[6]; var continues = false; for (var i = 0; i < scriptscache.length; i++) { if (scriptscache[i] == element) continues = true; } if (continues) { try { var widget = getWidget(id); if (widget && parent !== "students-lernen-content") { widget.draw(id, msg, data); } else { var procedure = element.substr(0, 1).toUpperCase() + element.substr(1, element.length - 1); eval( "widgets.push (new irc" + procedure + "(id, parent, action, data, msg, target));" ); } } catch (e) {} } else { widgetscache.unshift([element, id, parent, action, data, msg, target]); setTimeout("handleServerResponse()", 50); } } } function newClass(parent, prop) { var className = function () { if (className.preparing) return delete className.preparing; if (className.constr) { this.constructor = className; className.constr.apply(this, arguments); } }; className.prototype = {}; if (parent) { parent.preparing = true; className.prototype = new parent(); className.prototype.constructor = parent; className.constr = parent; } if (prop) { var cname = "constructor"; for (var k in prop) { if (k != cname) className.prototype[k] = prop[k]; } if (prop[cname] && prop[cname] != Object) className.constr = prop[cname]; } return className; } function getWidget(id) { for (var i = 0; i < widgets.length; i++) { if (widgets[i].id == id) { return widgets[i]; break; } } return false; } function randomId(value) { var array = new Array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "w", "v", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" ); do { var str = ""; for (var i = 0; i < value; i++) { str += array[Math.floor(Math.random() * array.length)]; } } while (irc(str)); return str; } function hasClass(elem, className) { return new RegExp("(^|\\s)" + className + "(\\s|$)").test(elem.className); } var Base64 = { keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode: function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = Base64.utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this.keyStr.charAt(enc1) + this.keyStr.charAt(enc2) + this.keyStr.charAt(enc3) + this.keyStr.charAt(enc4); } return output; }, decode: function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; var input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this.keyStr.indexOf(input.charAt(i++)); enc2 = this.keyStr.indexOf(input.charAt(i++)); enc3 = this.keyStr.indexOf(input.charAt(i++)); enc4 = this.keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = Base64.utf8_decode(output); return output; }, utf8_encode: function (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; }, utf8_decode: function (utftext) { var string = ""; var i = 0; var c = (c1 = c2 = 0); while (i < utftext.length) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if (c > 191 && c < 224) { c2 = utftext.charCodeAt(i + 1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i + 1); c3 = utftext.charCodeAt(i + 2); string += String.fromCharCode( ((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63) ); i += 3; } } return string; }, }; function show(layerId) { var myLayer = irc(layerId); if (myLayer) { myLayer.style.display = "block"; myLayer.style.visibility = "visible"; } } function hide(layerId) { var myLayer = irc(layerId); if (myLayer) { myLayer.style.display = "none"; myLayer.style.visibility = "hidden"; } } function getFirstChild(id) { for (var i = 0; i < widgets.length; i++) { if (widgets[i].parent == id) { return widgets[i].id; } } return false; } function removeWidget(id) { for (var i = 0; i < widgets.length; i++) { if (widgets[i].id == id) { widgets.splice(i, 1); break; } } } function removeLayer(id) { if (id) { while (getFirstChild(id)) removeLayer(getFirstChild(id)); removeWidget(id); } var myLayer = irc(id); if (myLayer) myLayer.parentNode.removeChild(myLayer); } function str_replace(search, replace, subject) { if (!(replace instanceof Array)) { replace = new Array(replace); if (search instanceof Array) { while (search.length > replace.length) { replace[replace.length] = replace[0]; } } } if (!(search instanceof Array)) search = new Array(search); while (search.length > replace.length) { replace[replace.length] = ""; } if (subject instanceof Array) { for (k in subject) { subject[k] = str_replace(search, replace, subject[k]); } return subject; } for (var k = 0; k < search.length; k++) { var i = subject.indexOf(search[k]); while (i > -1) { subject = subject.replace(search[k], replace[k]); i = subject.indexOf(search[k], i); } } return subject; } ircPreloader = newClass(null, { constructor: function (id, parent, image) { this.id = id; this.parent = parent; this.image = image ? image : "preloader.gif"; this.name = "preloader"; }, show: function () { var img = document.createElement("img"); img.src = "//open.gu-ural.ru/extern/images/" + this.image; img.id = this.id; var parent = irc(this.parent); if (parent) parent.insertBefore(img, parent.firstChild); }, hide: function () { if (irc(this.id)) irc(this.parent).removeChild(irc(this.id)); }, }); function stopUpload(on, nn, id, col, er) { irc(id + col + "EditLastForm" + "Preloader").style.display = "none"; irc(id + col + "EditLastError").style.display = "block"; if (!er) { irc(id + col + "EditLast").value = nn; irc(id + "name" + "EditLast").value = on; irc(id + col + "EditLastError").innerHTML = "Загружено"; } else { irc(id + col + "EditLastError").innerHTML = "Ошибка #" + er; } } function hideShow(id) { var screen = irc(id); if (screen) { if (screen.style.display == "block") { screen.style.display = "none"; return false; } else { screen.style.display = "block"; return true; } } } function disableSelection(target) { if (target) { target.onselectstart = function () { return false; }; target.unselectable = "on"; $(target).addClass("unselectable"); if (navigator.userAgent.toLowerCase().indexOf("opera") != -1) { target.onmousedown = function () { return false; }; } } } function explode(delimiter, string) { var emptyArray = { 0: "" }; if ( arguments.length != 2 || typeof arguments[0] == "undefined" || typeof arguments[1] == "undefined" ) { return null; } if (delimiter === "" || delimiter === false || delimiter === null) { return false; } if ( typeof delimiter == "function" || typeof delimiter == "object" || typeof string == "function" || typeof string == "object" ) { return emptyArray; } if (delimiter === true) { delimiter = "1"; } return string.toString().split(delimiter.toString()); } function in_array(what, where) { for (var i = 0; i < where.length; i++) if (what == where[i]) return i + 1; return false; } function print_r(array, return_val) { var output = "", pad_char = " ", pad_val = 4; var formatArray = function (obj, cur_depth, pad_val, pad_char) { if (cur_depth > 0) cur_depth++; var base_pad = repeat_char(pad_val * cur_depth, pad_char); var thick_pad = repeat_char(pad_val * (cur_depth + 1), pad_char); var str = ""; if (obj instanceof Array) { str += "Array\n" + base_pad + "(\n"; for (var key in obj) { if (obj[key] instanceof Array) { str += thick_pad + "[" + key + "] => " + formatArray(obj[key], cur_depth + 1, pad_val, pad_char); } else { str += thick_pad + "[" + key + "] => " + obj[key] + "\n"; } } str += base_pad + ")\n"; } else { str = obj.toString(); } return str; }; var repeat_char = function (len, char) { var str = ""; for (var i = 0; i < len; i++) { str += char; } return str; }; output = formatArray(array, 0, pad_val, pad_char); if (return_val !== true) { document.write("
" + output + "
"); return true; } else { return output; } } (function ($) { var cache = []; $.preLoadImages = function () { var args_len = arguments.length; for (var i = args_len; i--; ) { var cacheImage = document.createElement("img"); cacheImage.src = arguments[i]; cache.push(cacheImage); } }; })(jQuery); $.preLoadImages("//open.gu-ural.ru/extern/images/preloader.gif", "//open.gu-ural.ru/extern/images/preloader.gif"); $.preLoadImages( "//open.gu-ural.ru/extern/images/preloader-2.gif", "//open.gu-ural.ru/extern/images/preloader-2.gif" ); function combobox_from_base(base, value, className) { var array = explode("|", base), subject = ""; for (var i = 0; i < array.length; i++) { if (array[i]) { var str = new String(Base64.decode(String(array[i]))); subject += "" + str + ""; } } subject += ""; return subject; } function multiple_to_select(multiple, select, chosen) { var input = new Array(), output = new Array(), add = new Array(), del = new Array(); $(multiple) .find("option") .each(function () { if ($(this).attr("selected")) input.push($(this).val()); }); $(select) .find("option") .each(function () { output.push($(this).val()); }); for (var key in input) { if (!in_array(input[key], output)) add.push(input[key]); } for (var key in output) { if (!in_array(output[key], input)) del.push(output[key]); } $(select) .find("option") .each(function () { if (in_array($(this).val(), del)) $(this).remove(); }); for (var key in add) { var obj = $(multiple).find('option[value="' + add[key] + '"]'); $(select).append( '" ); } if (chosen) $(select).trigger("liszt:updated"); $(select).change(); } function clear_format(number) { number = str_replace(",", ".", number); number = str_replace(" ", "", number); return number; } function number_format(number, decimals, dec_point, thousands_sep) { var i, j, kw, kd, km; if (isNaN((decimals = Math.abs(decimals)))) { decimals = 2; } if (dec_point == undefined) { dec_point = ","; } if (thousands_sep == undefined) { thousands_sep = "."; } i = parseInt((number = (+number || 0).toFixed(decimals))) + ""; if ((j = i.length) > 3) { j = j % 3; } else { j = 0; } km = j ? i.substr(0, j) + thousands_sep : ""; kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep); //kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : ""); kd = decimals ? dec_point + Math.abs(number - i) .toFixed(decimals) .replace(/-/, 0) .slice(2) : ""; return km + kw + kd; } function rus_number_format(number) { if (number) return number_format(number, 2, ",", " "); return ""; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* SHA-256 implementation in JavaScript | (c) Chris Veness 2002-2010 | www.movable-type.co.uk */ /* - see http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html */ /* http://csrc.nist.gov/groups/ST/toolkit/examples.html */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ var Sha256 = {}; // Sha256 namespace /** * Generates SHA-256 hash of string * * @param {String} msg String to be hashed * @param {Boolean} [utf8encode=true] Encode msg as UTF-8 before generating hash * @returns {String} Hash of msg as hex character string */ Sha256.hash = function (msg, utf8encode) { // utf8encode = (typeof utf8encode == 'undefined') ? true : utf8encode; // convert string to UTF-8, as SHA only deals with byte-streams msg = Base64.utf8_encode(msg); // constants [§4.2.2] var K = [ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, ]; // initial hash value [§5.3.1] var H = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19, ]; // PREPROCESSING msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1] // convert string msg into 512-bit/16-integer blocks arrays of ints [§5.2.1] var l = msg.length / 4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length var N = Math.ceil(l / 16); // number of 16-integer-blocks required to hold 'l' ints var M = new Array(N); for (var i = 0; i < N; i++) { M[i] = new Array(16); for (var j = 0; j < 16; j++) { // encode 4 chars per integer, big-endian encoding M[i][j] = (msg.charCodeAt(i * 64 + j * 4) << 24) | (msg.charCodeAt(i * 64 + j * 4 + 1) << 16) | (msg.charCodeAt(i * 64 + j * 4 + 2) << 8) | msg.charCodeAt(i * 64 + j * 4 + 3); } // note running off the end of msg is ok 'cos bitwise ops on NaN return 0 } // add length (in bits) into final pair of 32-bit integers (big-endian) [§5.1.1] // note: most significant word would be (len-1)*8 >>> 32, but since JS converts // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators M[N - 1][14] = ((msg.length - 1) * 8) / Math.pow(2, 32); M[N - 1][14] = Math.floor(M[N - 1][14]); M[N - 1][15] = ((msg.length - 1) * 8) & 0xffffffff; // HASH COMPUTATION [§6.1.2] var W = new Array(64); var a, b, c, d, e, f, g, h; for (var i = 0; i < N; i++) { // 1 - prepare message schedule 'W' for (var t = 0; t < 16; t++) W[t] = M[i][t]; for (var t = 16; t < 64; t++) W[t] = (Sha256.sigma1(W[t - 2]) + W[t - 7] + Sha256.sigma0(W[t - 15]) + W[t - 16]) & 0xffffffff; // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value a = H[0]; b = H[1]; c = H[2]; d = H[3]; e = H[4]; f = H[5]; g = H[6]; h = H[7]; // 3 - main loop (note 'addition modulo 2^32') for (var t = 0; t < 64; t++) { var T1 = h + Sha256.Sigma1(e) + Sha256.Ch(e, f, g) + K[t] + W[t]; var T2 = Sha256.Sigma0(a) + Sha256.Maj(a, b, c); h = g; g = f; f = e; e = (d + T1) & 0xffffffff; d = c; c = b; b = a; a = (T1 + T2) & 0xffffffff; } // 4 - compute the new intermediate hash value (note 'addition modulo 2^32') H[0] = (H[0] + a) & 0xffffffff; H[1] = (H[1] + b) & 0xffffffff; H[2] = (H[2] + c) & 0xffffffff; H[3] = (H[3] + d) & 0xffffffff; H[4] = (H[4] + e) & 0xffffffff; H[5] = (H[5] + f) & 0xffffffff; H[6] = (H[6] + g) & 0xffffffff; H[7] = (H[7] + h) & 0xffffffff; } return ( Sha256.toHexStr(H[0]) + Sha256.toHexStr(H[1]) + Sha256.toHexStr(H[2]) + Sha256.toHexStr(H[3]) + Sha256.toHexStr(H[4]) + Sha256.toHexStr(H[5]) + Sha256.toHexStr(H[6]) + Sha256.toHexStr(H[7]) ); }; Sha256.ROTR = function (n, x) { return (x >>> n) | (x << (32 - n)); }; Sha256.Sigma0 = function (x) { return Sha256.ROTR(2, x) ^ Sha256.ROTR(13, x) ^ Sha256.ROTR(22, x); }; Sha256.Sigma1 = function (x) { return Sha256.ROTR(6, x) ^ Sha256.ROTR(11, x) ^ Sha256.ROTR(25, x); }; Sha256.sigma0 = function (x) { return Sha256.ROTR(7, x) ^ Sha256.ROTR(18, x) ^ (x >>> 3); }; Sha256.sigma1 = function (x) { return Sha256.ROTR(17, x) ^ Sha256.ROTR(19, x) ^ (x >>> 10); }; Sha256.Ch = function (x, y, z) { return (x & y) ^ (~x & z); }; Sha256.Maj = function (x, y, z) { return (x & y) ^ (x & z) ^ (y & z); }; // // hexadecimal representation of a number // (note toString(16) is implementation-dependant, and // in IE returns signed numbers when used on full words) // Sha256.toHexStr = function (n) { var s = "", v; for (var i = 7; i >= 0; i--) { v = (n >>> (i * 4)) & 0xf; s += v.toString(16); } return s; }; /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ function keyError(key, filename) { var name = "Файл " + filename + " не загружен. "; switch (key) { case "1": { return name + "Неизвестная ошибка. Код ошибки: #" + key; break; } case "2": { return name + "Превышен размер отправляемого файла."; break; } case "3": { return name + "Данный тип файла запрещен."; break; } case "4": { return name + "Неизвестная ошибка. Код ошибки: #" + key; break; } default: { return name + "Неизвестная ошибка. Код ошибки: #6 " + key; } } } function stopTaskAttach( filename, tempname, widget, user, msg, ext, error_code ) { var parent = $("#task-" + widget + "-" + user); if (!error_code) { $(parent).find(".send").css("display", "block"); $(parent) .find(".file") .addClass("complete") .append( 'Файл: ' + filename + "." + ext + "" ) .attr("file", tempname); $(parent).find("textarea").focus(); $(parent) .find(".file.complete") .click(function () { if (confirm("Удалить файл?")) { $(parent) .find(".file") .removeClass("complete") .removeAttr("file") .find("span.filename") .remove(); $(parent).find(".file input").css("display", "inline").val(""); message( token, msg, ircodeParam("action", "removefile") + ircodeParam("tempname", tempname) + ircodeParam("user", user) ); $(this).unbind("click"); $(parent).find(".send").css("display", "none"); } }); } else { $(parent).append( '
' + keyError(error_code, filename + "." + ext) + "
" ); $(parent) .find(".file") .removeClass("complete") .removeAttr("file") .find("span.filename") .remove(); $(parent).find(".file input").css("display", "inline"); $(parent).find(".send").css("display", "none"); } $(parent).find(".upload").remove(); } function stopPersonalAttach(filename, tempname, widget, error_code) { var form = $('form[target="event-attach-' + widget + '"]'), parent = $(form).parent(); if (!error_code) { $(parent).attr("file", tempname); $(parent).attr("filename", filename); $(parent).find("button[name='adding']").click(); } else { $(parent).append( '
' + keyError(error_code) + "
" ); $(form).css("display", "inline"); } $(parent).find(".upload").remove(); } function stopGlobalAttach(filename, tempname, widget, error_code) { var form = $('form[target="global-message-attach-' + widget + '"]'), parent = $(form).parent(); if (!error_code) { $(parent).attr("file", tempname); $(parent).attr("filename", filename); // $(parent).find("button[name='adding']").click(); $(parent).append("
" + Base64.decode(filename) + "
"); } else { $(parent).append( '
' + keyError(error_code) + "
" ); $(form).css("display", "inline"); } $(parent).find(".upload").remove(); } function stopPhotoAttach(filename, tempname, widget, error_code) { var form = $('form[target="photo-attach-' + widget + '"]'), parent = $(form).parent(); if (!error_code) { message( token, "teacher-portfolio", ircodeParam("action", "photo-upload") + ircodeParam("file", tempname) + ircodeParam("filename", filename) ); } else { $(parent).append( '
' + keyError(error_code) + "
" ); $(form).css("display", "inline"); } $(parent).find(".upload").remove(); } function stopEventAttach(tempname, widget, error_code) { var form = $('form[target="event-attach-' + widget + '"]'), parent = $(form).parent(); if (!error_code) { $(parent).attr("file", tempname); $(parent).find("button").click(); } else { $(parent).append( '
' + keyError(error_code) + "
" ); $(form).css("display", "inline"); } $(parent).find(".upload").remove(); } function stopMessageAnswerAttach(filename, tempname, widget, ext, error_code) { var parent = $("#" + widget), area = $(parent).find(".attach"); if (!error_code) { $(parent) .find(".attach") .addClass("complete") .append( 'Файл: ' + filename + "." + ext + "" ) .attr("file", tempname) .attr("filename", filename); $(parent).find("textarea").focus(); $(parent) .find(".attach.complete") .click(function () { if (confirm("Удалить файл?")) { $(parent) .find(".attach") .removeClass("complete") .removeAttr("file") .removeAttr("filename") .find("span.filename") .remove(); $(parent).find(".attach input").css("display", "block").val(""); message( token, "message-answer", ircodeParam("action", "removefile") + ircodeParam("tempname", tempname) ); $(this).unbind("click"); } }); } else { $(area).append( '
' + keyError(error_code, filename + "." + ext) + "
" ); $(area) .removeClass("complete") .removeAttr("file") .find("span.filename") .remove(); $(area).find("input").css("display", "block"); } //$(area).find('.upload').remove(); } function completeLoad(parent) { $("#" + parent + " button").removeAttr("disabled"); } function completeFilesLoad(msg, action, param) { message( token, msg, ircodeParam("action", action) + ircodeParam("param", param) ); } function validate(evt) { var theEvent = evt || window.event; // Handle paste if (theEvent.type === "paste") { key = event.clipboardData.getData("text/plain"); } else { // Handle key press var key = theEvent.keyCode || theEvent.which; key = String.fromCharCode(key); } var regex = /[0-9]|\./; if (!regex.test(key)) { theEvent.returnValue = false; if (theEvent.preventDefault) theEvent.preventDefault(); } }