JavaScript Misdirection Contest #0
See http://misdirect.ion.land
HTML
<!-- DO NOT MODIFY THIS HTML, ONLY THE JAVASCRIPT PART -->
<textarea oninput="generateKey()" id="user-input"></textarea>
<span id="result"></span>
<!-- DO NOT MODIFY THIS HTML, ONLY THE JAVASCRIPT PART -->
CSS
/* DO NOT MODIFY THIS CSS, ONLY THE JAVASCRIPT PART */
JavaScript
var basicSalt = 'I3S1THuz~SjFDEVo~3{1pQ9zeVz]}7';
var extraSalt = 'v^[';
var hash = function (h) {
var key = h.data.key;
var clean = /[^\d*]/g; //: (fix non-math stuff,.?)
var expression = '' + h.data.expression.replace(clean, '');
var result = eval(key[0] + eval(expression) + key[1] + expression);
self.postMessage(result);
}.toString();
function generateKey () {
var element = document.getElementById('user-input');
var input = element.value;
if (input.length === 7) {
if (window.URL && window.URL.createObjectURL && window.Blob) {
var worker = generateHashWorker();
worker.postMessage({
key: generateHashSalt(),
expression: generateExpression(input)
});
worker.addEventListener('message', function (e) {
var resultSpan = document.getElementById('result');
resultSpan.textContent = e.data || '';
});
} else {
throw new Error('Your browser is not secure enough to use VeryDependableCoin, sorry!');
}
}
}
function generateExpression (input) {
var expression = input.split('').map(function (character) {
return character.charCodeAt(0) + '*';
}).join('');
return expression.substring(0, expression.length - 1);
}
function generateHashWorker () {
var blob = new Blob(['self.onmessage = ' + hash], { type: 'text/javascript' });
return new Worker(window.URL.createObjectURL(blob));
}
function generateHashSalt () {
return [basicSalt, extraSalt].map(function (salt) {
return salt.split('').map(function (piece) {
return hash[piece.charCodeAt(0)];
}).join('');
});
}