var intTimerID = 0;

var hexcase=0;var b64pad="";var chrsz=8;
function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}
function core_sha1(x,len){x[len>>5]|=0x80<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;var olde=e;for(var j=0;j<80;j++){if(j<16)w[j]=x[i+j];else w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;}a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);}return Array(a,b,c,d,e);}
function sha1_ft(t,b,c,d){if(t<20) return (b&c)|((~b)&d);if(t<40) return b^c^d;if(t<60) return (b&c)|(b&d)|(c&d);return b^c^d;}
function sha1_kt(t){return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;}
function core_hmac_sha1(key,data){var bkey=str2binb(key);if(bkey.length>16) bkey=core_sha1(bkey,key.length*chrsz);var ipad=Array(16), opad=Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i] ^ 0x36363636;opad[i]=bkey[i] ^ 0x5C5C5C5C;}var hash=core_sha1(ipad.concat(str2binb(data)),512+data.length*chrsz);return core_sha1(opad.concat(hash),512+160);}
function safe_add(x,y){var lsw=(x & 0xFFFF)+(y & 0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return (msw<<16)|(lsw & 0xFFFF);}
function rol(num,cnt){return (num<<cnt) | (num >>> (32-cnt));}
function str2binb(str){var bin=Array();var mask=(1 << chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)bin[i>>5] |= (str.charCodeAt(i/chrsz) & mask)<<(32-chrsz-i%32);return bin;}
function binb2hex(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2] >> ((3-i%4)*8+4)) & 0xF) +hex_tab.charAt((binarray[i>>2] >> ((3-i%4)*8)) & 0xF);}return str;}


function ShowDemoImage(strModule)
{
	var txtPinBox = document.getElementById('txtPIN')
	var imgCellPhone = document.getElementById('imgPhone');
	var lblText = document.getElementById('lblMessage');
	if(txtPinBox == null || imgCellPhone == null || lblText == null)
	{
		lblText.innerHTML = '<span style="color:red;">The PIN you entered or the image could not be read. Please try again later</span>';
		return;
	}

	var strPIN = txtPinBox.value;
	strPIN = strPIN.substring(0,12);
	strPIN = hex_sha1(strPIN.toLowerCase());

	var blnCorrectPin = 0;
	if (strModule == 'reward')
	{
		switch(strPIN)
		{
			case '1eba601a2ef0b86c781b53966eb26c3c27bd1fa4':
			case '7bea397772fb8923faf9317d19e3487701b80bdc':
			case 'fafe8b89a1f73abc1e337b25413012a42ea96c09':
			case 'e0dad797dad7f4acc94560d32e6b01750e869fcb':
			case 'a78b56c6e32c0d4a652d2a51bd61b50e7de8d1e5':
			case '3c1dbb603cff7c8955eb5fbfce3513c0b9466f4d':
			case '05bb15837b587c6c01f15610f16a05851b7f9c20':
			case '254ff0fcd11fc709ddf0959f8e75a39e22c42830':
			case '78660df69d579550891a0f9e8f946d8dbc82c68d':
			case '7855c1af4c74b561cfb1210041abe1b6c6d87167':
				blnCorrectPin = 1
				break;
		}
	}
	else if (strModule == 'tag')
	{
		switch(strPIN)
		{
			case '622f6db415ac192c61ebca9851b330711431c732':
			case '35a1281bde89483a174aa0f402b8e62e8edc97a6':
			case '63feb50192d21209d9c06a009b48cc3d0692151b':
			case 'e414184dab4783409c626e085729780766b4ae62':
			case '2d794885bddbc6ed3a111c03f18b118eadf07f5c':
			case '3cefbe7116172b0b305bd14d6cf52caabc7f65a5':
			case '04a86f0bc41fe8ec83ad02824195a732d367f72d':
			case 'd6b2cdd18b599a6e0795cfb66c3139c4b811c579':
			case '784a78648cd0f76708e02a55e8ac90c8976e744e':
			case '58a2f604e35b7fc2f6b5450d506f03b860bf2708':
				blnCorrectPin = 1
				break;
		}
	}
	else if (strModule == 'win')
	{
		switch(strPIN)
		{
			case 'e8a518d3ab657027e1fe70091bc93c5fa4df606e':
			case '3f82ddc259531127348e6df4e158fe9d6961a4e7':
			case 'd91b8cdd97f63caee41e468483cbc3bc166fd575':
			case 'a508cc85986fae050505f307ee8c8c1c0c24e74d':
			case '434b40a6e415b94cf18cd323e6da70826972ec04':
			case '0d0dc491e921ae94bf4b8f3be12ba8e439d4978d':
			case '70b3322f534abcc6db65f32bfd62105758bec972':
			case 'dbbab8b5148a8f455c3c0ae2147a7f5f0492b902':
			case '3081e23e8b9f1803394eada06f478af5360073f2':
			case '699820e5fdbbf539fc98e3da479805d8be0cbe5f':
				blnCorrectPin = 1
				break;
		}
	}

	if(blnCorrectPin == 1)
	{
		imgCellPhone.src = 'uploads/images/cellphone-chk' + strModule + '.jpg';
		txtPinBox.value = '';
		lblText.innerHTML = '<span style="color:#66cc00;">Successfully activated.</span>';
		ProcessTimeout(10);
	}
	else
	{
		imgCellPhone.src = 'uploads/images/cellphone-incorrectpin.jpg';
		txtPinBox.value = '';
		lblText.innerHTML = '<span style="color:red;">Incorrect PIN.</span>';
	}
}

function DeactivateDemo()
{
	var imgCellPhone = document.getElementById('imgPhone');
	var lblText = document.getElementById('lblMessage');
	if (imgCellPhone != null && lblText != null)
	{
		imgCellPhone.src = 'uploads/images/cellphone-blank.jpg';
		lblText.innerHTML = '&nbsp;';
	}
}

function ProcessTimeout(intTimeRemaining)
{
	if (intTimeRemaining > 0)
	{
		intTime = intTimeRemaining * 1000;
		if (intTimerID != 0)
			clearTimeout(intTimerID);

		intTimeRemaining--;
		intTimerID = setTimeout('ProcessTimeout(' + intTimeRemaining + ')', 1000);

		intHour = Math.floor((intTime % 86400000) / 3600000);
		intMin = Math.floor(((intTime % 86400000) % 3600000) / 60000);
		intSec = Math.floor((((intTime % 86400000) % 3600000) % 60000) / 1000);

		if(intSec < 10)
			strSeconds = '0' + intSec;
		else
			strSeconds = intSec;

		if(intMin < 10)
			strMinutes = '0' + intMin;
		else
			strMinutes = intMin;

		var lblTimer = document.getElementById('timer');
		if(lblTimer)
			lblTimer.innerHTML = 'Time remaining until switch off: ' + strMinutes + ':' + strSeconds;
	}
	else
	{
		DeactivateDemo();
		var lblTimer = document.getElementById('timer');
		if(lblTimer)
			lblTimer.innerHTML = '&nbsp;';
	}
}
