q = new Array();

q['q1'] = new Array('9cf47ffbdf5e4e44b0c634194c75dd9faac08e9b');
q['q2'] = new Array('7bb8f6d5733d04ce44ba1950b67ec2029c499fc8');
q['q3'] = new Array('57c067824968517dc25f950a808ad49b63e2508b');
q['q4'] = new Array('1da0561b13224e4a67df5ba2960ea4ccd45fb723');
q['q5'] = new Array('8eadb0a290ad92a03cc1e5180a60fc1fef8b209c');
q['q6'] = new Array('91b68ec389426289f7ddd3a9a25bdb32de469f68');
q['q7'] = new Array('e77772d7f545da6f18998793596ca65d0ef1103a');
q['q8'] = new Array('b95d8e43d2a4b75200c0ffdf511bd1863b15911a');
q['q9'] = new Array('98cdf45151a07b8ff8b947b92a0dda6c66f21ab4');
q['q10'] = new Array('aa690607949ec963997e3ce92d07978d1a84c9f9');
q['q11'] = new Array('08174468b5de8323f78b24a7cf85339cd2e3bcb0');
q['q12'] = new Array('4b7df4c81f3c3c1cbdb916d12e5ed94052cba454');
q['q13'] = new Array('2afb47adb79ff201d2bcc439189ddaec9eab90bc');
q['q14'] = new Array('78c8a6c7028d4b67d52c96a5bf6956309d6eedfa');
q['q15'] = new Array('a66f98612bbbce6fb0807fac6be0bd9b0ab676a6');
q['q16'] = new Array('edfba2d506d815f6b710caa115f109a22169337c');
q['q17'] = new Array('1ebbd754c60f8af4f098a9f7bffec6eca63a74fc');
q['q18'] = new Array('fbc94bfe069a626626a4f88635b151bea8ae06b8');
q['q19'] = new Array('a725d906a76cce598958920943a02b75527f2a21');
q['q20'] = new Array('d027da995e23b8445e30aa979bc7eb92a846e53c');
q['q21'] = new Array('e208670efa8f516aa0e6bca09306c32db7c1eb69');
q['q22'] = new Array('f4207fb0c3e3b1a0f80991ce47bd8e6766e09dea');
q['q23'] = new Array('ac5ea371f52647ce74a34feb48b85c6651447c81');
q['q24'] = new Array('3ff155c88f72a0227e2bd5a06c087b7ab2d59442');
q['q25'] = new Array('d2f6c52663f0d5d27967e258aab1118d03bcdc2b');
q['q26'] = new Array('e5136acea3c6da224fa4e3612afbb66f516d2017');
q['q27'] = new Array('37a52a740e06f8886f1227a8b3256261f9890a31');
q['q28'] = new Array('e05e4afec95871dcb4de44d16ed092ef0687bd56');
q['q29'] = new Array('11e2f4286dfad56667c3a63fb5416b43bebc432a');
q['q30'] = new Array('b38bd4960250fe045eb73f18e7d385cd912e9ba3');
q['q31'] = new Array('e56eb975d933d9b997bdfb2e8fca3eef05464769');
q['q32'] = new Array('5602e201bce60e30cbaa8644516edc1ba0f1dd72');
q['q33'] = new Array('588a9ba94545fc5807742dc8d596d8d8fa4d8147');
q['q34'] = new Array('63fcbf90e27e7fabfe0c1742630aeaa2017ed81c');
q['q35'] = new Array('db263a3b5e1c93d758da42a485f5d5b8b3b2efe8');
q['q36'] = new Array('534ee044e509eb8c377a16749d8bfe165c894c69');
q['q37'] = new Array('6eab254ae4804485502d3da96947ab4950a7b2b9');
q['q38'] = new Array('ce27c4b1cb731b85d8c14fdf1946472e4d93aef0');
q['q39'] = new Array('9fb27170fc5eab6ce856bf1b6ba1f6ee5aa730a2');
q['q40'] = new Array('2b083f19986ff56bca0016b65af042ee5b17647d');
q['q41'] = new Array('7274e0affd920af59fc46acbd63e45338711f2e3');
q['q42'] = new Array('60f58a30feeade24650c3d27b75f605b88334b5c');
q['q43'] = new Array('73ec5e8de1d2bf5ddcd314b216bd68c5360d4f3c');
q['q44'] = new Array('0c96bb0a619c63d19b6fde9f9e918431ac7a483c');
q['q45'] = new Array('717a902319ac6aba7985b3ee1117aa5659fd8a78');
q['q46'] = new Array('2f79765dbeae7a91c2d515cac938f6d1a054130b');
q['q47'] = new Array('3128d805194d4e6141766cc846778eeacb12e3ea');
q['q48'] = new Array('3a885d25d98d00a6d552af187df28a8018c39131');
q['q49'] = new Array('b6b59a6e2bbcd45cefb6e0ad6ce2077c42cf754d');
q['q50'] = new Array('6694507557effe8aee2c0b33ae3afa1377bc93be');
q['q51'] = new Array('4235a110e5289032ffe53aa1d8d2b27c994e5c91');
q['q52'] = new Array('8cf0c91fea00ec298b90b85410ef43ab304fa0b8');
q['q53'] = new Array('8eb2087fa29ef4ce42b98e8380daadb53f68e36f');
q['q54'] = new Array('0b752a42402652255a1118f2473540b6379b59b5');
q['q55'] = new Array('d9d96d3d3b0aa3e53c176725dcf22cfc760d93d0');
q['q56'] = new Array('80798a7beaf86fc3ebf7a65f3d16952c74a02758');
q['q57'] = new Array('3065cb5215d809156c53669212e45061b545f218');
q['q58'] = new Array('486d6aad1f119d186f9102053e3552ddf4ad9bf4');
q['q59'] = new Array('dbe46f6527cd9265b7e3826b8fe2f8933d2123f3');
q['q60'] = new Array('f94b50a1931448046c980cf852aa900a40c43486');
q['q61'] = new Array('d68921f22a7856f11b96bf95fbffb8cbdc9aa4fe');
q['q62'] = new Array('409f2d745d10c19a76f63110a3a7e14f5404d8b2');
q['q63'] = new Array('8c113a1605e003ed6e892d9492301aae293848bf');
q['q64'] = new Array('4614d46bd11f81781b898353f81dd49ab0fd92f5');
q['q65'] = new Array('922e6ef7547aa3234dc8d169cbf0463158e214c8');
q['q66'] = new Array('4f92dd4ffd6076881c67fad178f8dcfcb8fa506a');
q['q67'] = new Array('c0479d5a1be6cbc128e7e71292b8d45650d4703b');
q['q68'] = new Array('84b37487950c0f4253e192227c07253eaea32596');
q['q69'] = new Array('d19559fe305974158b595dd4ae78ff1ce350fcfe');
q['q70'] = new Array('aeab961f3ecd708dab625db7ad3edd9e20e7b65c');
q['q71'] = new Array('285ec9001f3f22cb416d44abd8a8ac8c8d8ead37');
q['q72'] = new Array('8cf7e49077a509d3cf1f0442242753fe41328f3b');
q['q73'] = new Array('bd5c8eb49d2313eae6aa5bf2f7291271a336f268');
q['q74'] = new Array('194ebf5c7bcdb06025e53224a2b309823fd7f493');
q['q75'] = new Array('f0875b118040305668f69ead6525bce1adea7de8');
q['q76'] = new Array('a9e6e540c83cea42b568b3e347fb5e012ef95d00');
q['q77'] = new Array('0f4c5e4dae8c1863259e76629db7537b268a1e05');
q['q78'] = new Array('543f3ad2bf72ea3d585af5731c2d08b4e2b6b896');
q['q79'] = new Array('ffc32800289ca3008aa77ba20a6fbf7dc68d33ba');
q['q80'] = new Array('6ae6e50b22575104e4bf2ca63cbcff640e7972f2');
q['q81'] = new Array('eb63e7096b18490a015466d30a31aee51414efd0');
q['q82'] = new Array('eb7c119066e394eb4a85b03e05bf0fd1127b26a9');
q['q83'] = new Array('9cce61c9fbc9882f8127e131d5288fd33095974d');
q['q84'] = new Array('fc5917f7f2dfdf57202d2819c59940a7e83304c4');
q['q85'] = new Array('13e28d3bfaef933cf130e553ab54c7178128cb29');
q['q86'] = new Array('750aef2a82886d9a13b489be30f61b15c2a8283b');
q['q87'] = new Array('32e414488b2b64c46e8b8ad072619077fd7a6af5');
q['q88'] = new Array('a480f3aa2e47bd4e6d6ceb4fe56ff1b9241affbc');
q['q89'] = new Array('1ff60d755c311d019235abd015037d7016dc7bec');
q['q90'] = new Array('0ec3dfb9653b08e0d7764a610566ed0d04e1ebcd');
q['q91'] = new Array('f962857f8df922673e87207c115b96f0f680de82');
q['q92'] = new Array('d422e7a01d54c491e47762b0a5bf86cd32beb3d1');
q['q93'] = new Array('b6d3a18654103a0b29e1ee45ce535e4595504b99');
q['q94'] = new Array('b2ce22f8e8e50b96dc7519598d2f520f40276b04');
q['q95'] = new Array('c663ae1bf156f741ddd8703c072eaa4d7ec3cfc5');
q['q96'] = new Array('4702fab9483c6ad51beb9e1d558248885dc7623f');
q['q97'] = new Array('e0dcf0819038e44c11a31ad9755414ebe87b9757');
q['q98'] = new Array('de992550c71cb0e1326be7eeb4ff3252f79bfbfe');
q['q99'] = new Array('a207a257955a34ab6335872bee38d7ad24649305');
q['q100'] = new Array('e4c697c53b4cb37d2d4189d3203747b11de6fb9e');
q['q101'] = new Array('4a2f5d6c17667f9447c094db0c33596f1b4a3d9d');
q['q102'] = new Array('8e5c1724fe9a608a7ca26c2ea97c2b9fec41eef2');
q['q103'] = new Array('b2ccbd8b218efcc106c03ebf26158c23bbe52d0f');
q['q104'] = new Array('4ae018dd5fa09e07801290b7c0470e620dae7360');
q['q105'] = new Array('1cc92b6cc48ada6fdc03451b778853983797783e');
q['q106'] = new Array('d7688cbf6b1980a047d92b47a2272aad06ffdaaa');
q['q107'] = new Array('dfce170464b981cfb3ab06622d12fea9ae3938aa');
q['q108'] = new Array('dbcb3413bb8ae9c5ed69021981d87b52d2e6a953');
q['q109'] = new Array('37c3e3835bf4f370c895b2ea80895ac7947cfe2a');
q['q110'] = new Array('f733843fff6de4e203fa661cf4640d721560bf11');
q['q111'] = new Array('97beed249deac06af8e424c9cbc25688f814c39b');
q['q112'] = new Array('9c2eedd90044382bfaabaeb45488051e337ac814');
q['q113'] = new Array('900ab3bc9943fad09ca8539aaf34f397b56ed587');
q['q114'] = new Array('30a5c8e3120b93ebb6c4f68db2ff090d89a24cea');
q['q115'] = new Array('9741e00f41322ffd130f3da9c770c3e1c1b1487c');
q['q116'] = new Array('ca17476072c0243ba18cb9be4ebda3f7252254e3');
q['q117'] = new Array('abc639742de63e02fde36fbad605959d36bffa16');
q['q118'] = new Array('9fd61e79eb949297b0197165123d973e15405c8d');
q['q119'] = new Array('156b2eacfb7070d2e465e4072bc04325c49f4239');
q['q120'] = new Array('f49a3182f22239b5de0737c4be1e0993bed5f156');
q['q121'] = new Array('ece9af793706472d3e126bda3232f3632a6ee622');
q['q122'] = new Array('1dde7b42a2e38677762de8a2dfc304ec4c58a33e');
q['q123'] = new Array('9720eec6fa20363918f9b6668b4b4b722107bf49');
q['q124'] = new Array('562bc71ceb8858ce8beca72b9315cffe4f75c939');
q['q125'] = new Array('587b328b08701ca54136676bda592a208e8774cc');
q['q126'] = new Array('436e18e2da0851ccc429aecc8634d9530e75d94b');
q['q127'] = new Array('43c2ae2eacabed5dd0c4aba299cd220d7e8a918c', '8a4554afb0d22f5ec94e312a2079bc36dcf38444');
q['q128'] = new Array('cde5c5d4eab3de50aa3529c539dbb4e4712825b8');
q['q129'] = new Array('f3d37c1ad98619030117c8dd3653c80de72e54d3');
q['q130'] = new Array('b8371b3f5f24ede5f46b467ecb862cd57a2b1bab');
q['q131'] = new Array('c8c53f65b47c69e45b4e3b5c9d67c8d70d924e5f');
q['q132'] = new Array('b78e2d3f9e1470dc9174b5ef2b0d19fcc4f2e844');
q['q133'] = new Array('7a45dac6476407488be69fcbe68d36c2e6f6ef52');
q['q134'] = new Array('8522aad518a7365bde6ba0f981ecd6bbe2729eb1');
q['q135'] = new Array('919acd6a32b00f2826fc45d11eb10c44c89fa1f7');
q['q136'] = new Array('a53301b6fdb13f97f792411a7fd30a45a883458f');
q['q137'] = new Array('cdfe8d8e7e7b82cc66753e2628b6907b673b1d18');
q['q138'] = new Array('a3ffb8b3a2842f92e52f3af8272896431bc1a977');
q['q139'] = new Array('12b9e258f977eef62134b6877ff0160fc6be929b');
q['q140'] = new Array('5d3a48fd7b7fd461f5ca174d9233c8d8d82fb327');
q['q141'] = new Array('3a8d80d8d05c72c054c0ca754ec9d78ef4e9c34f');
q['q142'] = new Array('7cb3ad17ba2f0c8245be1c99b4633e567f304d85');
q['q143'] = new Array('d373379a57af618cc36f7feaaebfa7e70dae6a21');
q['q144'] = new Array('6f390e681fd7f2aaeab951ea69096ba56dfa28d3');
q['q145'] = new Array('bdb42a148b5a9fafa63ed32bfeba0ebe4f6da056');
q['q146'] = new Array('43d969a78cd991850bec7f92f4a805b65ec62614');
q['q147'] = new Array('2c3b7f6d942cfe4f731c07ddb63b19704c6e2876');
q['q148'] = new Array('d4ed573e44e73072a72cb67f0aaf54c1a3cac820');
q['q149'] = new Array('359a92b86c9677e038aee5266f5fa255be8891b9');
q['q150'] = new Array('9246700b189bca385bb5a6159952934a5e267d48');
q['q151'] = new Array('0f214d3feb578a96ad2c16a1a1dffd3c8ecbddbc');
q['q152'] = new Array('68369a4ec6423ae88aa64b90d63bcb1192379cde');
q['q153'] = new Array('558861ea3fbdc917314f84da59e744babd823f09');
q['q154'] = new Array('149e11f53812368d08a0628b99072e10db738e2b');
q['q155'] = new Array('4df4e8b60c938b4278622ce07619b3464c656564');
q['q156'] = new Array('97b8223d3d79de999d582cf8debdd8c8ed79346f');
q['q157'] = new Array('d819de4b6e99cee16df38721bfa9005600806693');
q['q158'] = new Array('d5fcd878c21f4a4b709cf5e9d9d4901195a26d43');
q['q159'] = new Array('fd2c20867adebd484ff0741235c4ceb137ed9171');
q['q160'] = new Array('e18ab4a6c3a4e62d08f13a7708005d19129eaed7');


function simplifica(msg) {
	
	var str=msg.toUpperCase();
	str=str.replace(/ /g,'');			
	str=str.replace(/\,/g,'');			
	str=str.replace(/\./g,'');			
	str=str.replace(/\-/g,'');			
	str=str.replace(/\'/g,'');			
	str=str.replace(/\:/g,'');			
	str=str.replace(/\(/g,'');			
	str=str.replace(/\)/g,'');	
	str=str.replace(/\?/g,'');			
	str=str.replace(/\¿/g,'');			
	str=str.replace(/\!/g,'');			
	str=str.replace(/\¡/g,'');							
	str=str.replace(/Á/g,'A');
	str=str.replace(/É/g,'E');
	str=str.replace(/Í/g,'I');
	str=str.replace(/Ó/g,'O');
	str=str.replace(/Ú/g,'U');
	
	
	return str;
	
}  


function mirar(str) {

var ok=0;
for (x in q[str])
{
	if(sha1Hash(simplifica(document.getElementById(str).value)) == (q[str][x]) 	)
	{
		
		ok=1;
	}
}  


	if(ok)
	{
		validar1(str);
	}
	else
	{
		validar2(str);
	}
	
}

function carga() { 
	
	for (var i=1; i<=160; i++) {		
		str='q'+i;	
		document.getElementById(str).style.border = '1px solid #A5ACB2';
		document.getElementById(str).disabled = false;

		/*str='q'+i+'b';	
		document.getElementById(str).style.border = '1px solid #A5ACB2';
		document.getElementById(str).disabled = false;*/
		
	} 
} 


function validar1(qstr) { 
	if(document.getElementById(qstr).disabled == false) {
	document.getElementById(qstr).disabled = true;
	document.getElementById(qstr).style.border = '2px solid #00FF00'; 
	document.getElementById('correct').innerHTML = document.getElementById('correct').innerHTML*1 + 1;
	}
}

function validar2(qstr) {
	if(document.getElementById(qstr).value=='') {
		document.getElementById(qstr).style.border = '1px solid #A5ACB2'; 
	}
	else
	{
	document.getElementById(qstr).style.border = '2px solid #FF0000'; 
	}
}


function sha1Hash(msg)
{
    // constants [4.2.1]
    var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];

    // PREPROCESSING 
 
    msg += String.fromCharCode(0x80);  // add trailing '1' bit to string [5.1.1]

    // convert string msg into 512-bit/16-integer blocks arrays of ints [5.2.1]
    var l = Math.ceil(msg.length/4) + 2;  // long enough to contain msg plus 2-word length
    var N = Math.ceil(l/16);              // in N 16-int blocks
    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]
    M[N-1][14] = ((msg.length-1) >>> 30) * 8;
    M[N-1][15] = ((msg.length-1)*8) & 0xffffffff;

    // set initial hash value [5.3.1]
    var H0 = 0x67452301;
    var H1 = 0xefcdab89;
    var H2 = 0x98badcfe;
    var H3 = 0x10325476;
    var H4 = 0xc3d2e1f0;

    // HASH COMPUTATION [6.1.2]

    var W = new Array(80); var a, b, c, d, e;
    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<80; t++) W[t] = ROTL(W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16], 1);

        // 2 - initialise five working variables a, b, c, d, e with previous hash value
        a = H0; b = H1; c = H2; d = H3; e = H4;

        // 3 - main loop
        for (var t=0; t<80; t++) {
            var s = Math.floor(t/20); // seq for blocks of 'f' functions and 'K' constants
            var T = (ROTL(a,5) + f(s,b,c,d) + e + K[s] + W[t]) & 0xffffffff;
            e = d;
            d = c;
            c = ROTL(b, 30);
            b = a;
            a = T;
        }

        // 4 - compute the new intermediate hash value
        H0 = (H0+a) & 0xffffffff;  // note 'addition modulo 2^32'
        H1 = (H1+b) & 0xffffffff; 
        H2 = (H2+c) & 0xffffffff; 
        H3 = (H3+d) & 0xffffffff; 
        H4 = (H4+e) & 0xffffffff;
    }

    return H0.toHexStr() + H1.toHexStr() + H2.toHexStr() + H3.toHexStr() + H4.toHexStr();
}

//
// function 'f' [4.1.1]
//
function f(s, x, y, z) 
{
    switch (s) {
    case 0: return (x & y) ^ (~x & z);
    case 1: return x ^ y ^ z;
    case 2: return (x & y) ^ (x & z) ^ (y & z);
    case 3: return x ^ y ^ z;
    }
}

//
// rotate left (circular left shift) value x by n positions [3.2.5]
//
function ROTL(x, n)
{
    return (x<<n) | (x>>>(32-n));
}

//
// extend Number class with a tailored hex-string method 
//   (note toString(16) is implementation-dependant, and  
//   in IE returns signed numbers when used on full words)
//
Number.prototype.toHexStr = function()
{
    var s="", v;
    for (var i=7; i>=0; i--) { v = (this>>>(i*4)) & 0xf; s += v.toString(16); }
    return s;
}
function resetForm() {
	
	for(i=1;i<=160;i++) {
	document.getElementById('q'+i).disabled = false;
	
	/*document.getElementById('q'+i+'b').disabled = false;*/
	}
	document.forms[0].reset();
}