$().ready(function () { getUnique = function () { var uniquecnt = 0; function getUnique() { return (uniquecnt++); } return getUnique; }(); function decimalToHexString(number) { if (number < 0) { number = 0xFFFFFFFF + number + 1; } return number; } function digits(number, dig) { var shift = Math.pow(10, dig); return Math.floor(number * shift) / shift; } function escapeHtml(text) { return $('
').text(text).html(); } function swapendian32(val) { return (((val & 0xFF) << 24) | ((val & 0xFF00) << 8) | ((val >> 8) & 0xFF00) | ((val >> 24) & 0xFF)) >>> 0; } function arrayBufferToWordArray(arrayBuffer) { var fullWords = Math.floor(arrayBuffer.byteLength / 4); var bytesLeft = arrayBuffer.byteLength % 4; var u32 = new Uint32Array(arrayBuffer, 0, fullWords); var u8 = new Uint8Array(arrayBuffer); var cp = []; for (var i = 0; i < fullWords; ++i) { cp.push(swapendian32(u32[i])); } if (bytesLeft) { var pad = 0; for (var i = bytesLeft; i > 0; --i) { pad = pad << 8; pad += u8[u8.byteLength - i]; } for (var i = 0; i < 4 - bytesLeft; ++i) { pad = pad << 8; } cp.push(pad); } return CryptoJS.lib.WordArray.create(cp, arrayBuffer.byteLength); }; function bytes2si(bytes, outputdigits) { if (bytes < 1024) { // Bytes return digits(bytes, outputdigits) + " b"; } else if (bytes < 1048576) { // KiB return digits(bytes / 1024, outputdigits) + " KiB"; } return digits(bytes / 1048576, outputdigits) + " MiB"; } function bytes2si2(bytes1, bytes2, outputdigits) { var big = Math.max(bytes1, bytes2); if (big < 1024) { // Bytes return bytes1 + "/" + bytes2 + " b"; } else if (big < 1048576) { // KiB return digits(bytes1 / 1024, outputdigits) + "/" + digits(bytes2 / 1024, outputdigits) + " KiB"; } return digits(bytes1 / 1048576, outputdigits) + "/" + digits(bytes2 / 1048576, outputdigits) + " MiB"; } function progressiveRead(file, work, done) { var chunkSize = 262144; // 256KiB at a time var pos = 0; var reader = new FileReader(); function progressiveReadNext() { var end = Math.min(pos + chunkSize, file.size); reader.onload = function (e) { pos = end; work(e.target.result, pos, file); if (pos < file.size) { progressiveReadNext(); } else { // Done done(file); } } if (file.slice) { var blob = file.slice(pos, end); } else if (file.webkitSlice) { var blob = file.webkitSlice(pos, end); } reader.readAsArrayBuffer(blob); } progressiveReadNext(); }; var algorithms = [ { name: "MD5", type: CryptoJS.algo.MD5 } ]; function selectFile(f) { (function () { var start = (new Date).getTime(); var lastprogress = 0; var contentMd5 = CryptoJS.algo.MD5.create(); var sliceMd5 = CryptoJS.algo.MD5.create(); var slice = 0; var crc32intermediate = 0; var uid = "filehash" + getUnique(); $("#showTable").append('