yzms/show/js/qric.js

147 lines
3.1 KiB
JavaScript

var kb_status = '1';
var kb_readStr = '';
var kb_isstart = false;
var kb_readfunc = '';
function start_read(func) {
kb_isstart = true;
kb_readfunc = func;
kb_status = '1';
kb_readStr = '';
}
function stop_read() {
kb_isstart = false;
kb_readfunc = '';
}
function fromKeyCode(code) {
if((code >= 48 && code <= 57) || (code >= 65 && code <= 90)) return String.fromCharCode(code);
var keys = {186: ';', 188: ',', 189: '-', 190: '.', 191: '/', 222: "'", 219: '[', 221: ']', 187: '=',
96:'Num 0', 97:'Num 1', 98:'Num 2', 99:'Num 3', 100:'Num 4', 101:'Num 5', 102:'Num 6', 103:'Num 7', 104:'Num 8', 105:'Num 9',
111:'Num /', 106:'Num *', 109:'Num -', 111:'Num /', 107:'Num +',13:'[enter]',8:'[back]',110:'Num .'
};
if(keys[code]) return keys[code];
return '*err*';
}
function hashCode(strKey)
{
var hash = 0;
if(strKey != null && strKey != "")
{
for (var i = 0; i < strKey.length; i++)
{
hash = hash * 31 + strKey.charCodeAt(i);
hash = intValue(hash);
}
}
return hash;
}
function intValue(num)
{
var MAX_VALUE = 0x7fffffff;
var MIN_VALUE = -0x80000000;
if(num > MAX_VALUE || num < MIN_VALUE)
{
return num &= 0xFFFFFFFF;
}
return num;
}
document.onkeydown = function() {
if(!kb_isstart) return ;
var code = event.keyCode;
//[st]sduf87fjsdfysd78,526976123;
if(code == 16) return ;
kb_dealKey(fromKeyCode(code));
}
function kb_dealKey(c) {
if(kb_status == '1') { //¿ªÊ¼
if(c == '[') {
kb_status = '2';
} else if(c == ';') { //IC¿¨
kb_status = '6';
}
else kb_readErr( 2);
} else if(kb_status == '2') { //¶ÁÈ¡s
if(c == 'S') kb_status = '3';
else {
kb_status = '1';
kb_readErr(3);
}
} else if(kb_status == '3') { //¶ÁÈ¡t
if(c == 'T') kb_status = '4';
else {
kb_status = '1';
kb_readErr(4);
}
} else if(kb_status == '4') { //¶ÁÈ¡]
if(c == ']') {
kb_status = '5';
kb_readStr = '';
} else {
kb_status = '1';
kb_readErr(5);
}
} else if(kb_status == '5') { //¶ÁÈ¡ÄÚÈÝ
if(c == ';') {
kb_status = '1';
var a = kb_readStr.split(",");
if(a.length == 2) {
var s1 = a[0].toLowerCase();
var hcode = a[1];
if(hashCode(s1) == hcode) {
kb_readContent(s1, 'qr');
} else {
//alert(s1+","+hcode+","+hashCode(s1));
kb_readErr(6);
}
} else {
kb_readErr(7);
}
kb_readStr = '';
} else {
if(c == '*err*') {
kb_status = '1';
kb_readErr(8);
} else {
kb_readStr += c;
}
}
} else if(kb_status == '6') { //IC¿¨¶ÁÈ¡ÄÚÈÝ
if(c == '/') {
kb_status = '1';
var s1 = kb_readStr.toLowerCase();
kb_readContent(s1, 'ic');
kb_readStr = '';
} else {
if(c >= '0' && c <= '9') {
kb_readStr += c;
} else {
kb_status = '1';
kb_readErr(8, 'ic');
}
}
}
//$("div1").innerHTML += kb_status+"<br />";
}
function kb_readErr(rs, type) {
kb_status = '1';
kb_readStr = '';
//alert(from+":¶ÁÈ¡´íÎó£¡"+rs);
var tname = '¶þάÂë';
if(type && type == 'ic') {
tname = 'IC¿¨';
}
}
function kb_readContent(str, type) {
if(!kb_isstart) return ;
try{kb_readfunc(type, str);} catch(e){}
}