function runChecker() {
// declare
var i;
var item;
var word;
var character;
// load all databases
loadComponentArray();
loadCharacterComponentArray();
loadCharacterArray();
loadDominoWordArray();
loadWordArray();
// database statistics
document.writeln("Database statistics:" + "
");
i = 0;
for (item in CCM.componentArray) {
i++;
}
document.writeln(i + " components + meta-components" + "
");
i = 0;
for (item in CCM.characterComponentArray) {
i++;
}
document.writeln(i + " characters decomposed into components" + "
");
i = 0;
for (item in CCM.characterArray) {
i++;
}
document.writeln(i + " characters in all" + "
");
i = 0;
for (item in CCM.wordArray) {
i++;
}
document.writeln(i + " words" + "
");
i = 0;
for (item in CCM.dominoWordArray) {
i++;
}
document.writeln(i + " domino-words" + "
" + "
");
// check word database against character database
document.writeln("Word database check:" + "
");
i = 0;
for (word in CCM.wordArray) {
character = word[0];
if (CCM.characterArray[character] === undefined) {
document.writeln(character + " is missing!" + "
");
i++;
}
character = word[1];
if (CCM.characterArray[character] === undefined) {
document.writeln(character + " is missing!" + "
");
i++;
}
}
document.writeln("Maximum number of missing characters in database: " + i + "
" + "
");
// check domino-word database against character database
document.writeln("Domino-word database check:" + "
");
i = 0;
for (word in CCM.dominoWordArray) {
character = word[0];
if (CCM.characterArray[character] === undefined) {
document.writeln(character + " is missing!" + "
");
i++;
}
character = word[1];
if (CCM.characterArray[character] === undefined) {
document.writeln(character + " is missing!" + "
");
i++;
}
}
document.writeln("Maximum number of missing characters in database: " + i + "
");
}
function runViewer(script) {
// declare
var ib;
var chineseCharacter;
var chineseWord;
var chineseDominoWord;
var wordType;
// initialize
chineseCharacter = "";
chineseWord = "";
chineseDominoWord= "";
wordType = "";
// check database
if (script === "check")
runChecker();
// map character or word
else {
ib = script.length;
// character
if (ib === 1) {
chineseCharacter = script[0];
wordType = "Chinese character";
runMapper(chineseCharacter, chineseWord, chineseDominoWord, wordType);
}
// word
else if (ib > 1) {
chineseWord = script[0] + script[1];
wordType = "Chinese word";
runMapper(chineseCharacter, chineseWord, chineseDominoWord, wordType);
}
// alert
else {
alert ("Character or word is missing!");
}
}
}
function runMapper(chineseCharacter, chineseWord, chineseDominoWord, wordType) {
// load entire database (only once)
if (!(CCM.isLoadedDatabase)) {
loadComponentArray();
loadCharacterComponentArray();
loadCharacterArray();
loadWordArray();
loadDominoWordArray();
CCM.isLoadedDatabase = true;
}
// execute mapper
execMapper(chineseCharacter, chineseWord, chineseDominoWord, wordType);
}
function execMapper(chineseCharacter, chineseWord, chineseDominoWord, wordType) {
// declare
var ib;
var jb;
var i;
var j;
var k;
var a;
var b;
var d;
var t;
var x;
var y;
var r;
var km;
var dm;
var rm;
var am;
var xm;
var ym;
var sm;
var em;
var xt;
var xa;
var ya;
var xc;
var yc;
var xl;
var yl;
var xp;
var yp;
var ra;
var rc;
var rp;
var sa;
var ea;
var pi;
var year;
var text;
var canvas;
var context;
var xOffset;
var patternSize;
var component;
var orientation;
var isUndefinedCharacterComponent;
var colorArray;
var wordArray;
var characterArray;
var componentArray;
var characterComponentArray;
// get year
d = new Date();
year = d.getFullYear();
// initialize arrays
colorArray = [""];
wordArray = [""];
characterArray = [""];
componentArray = [""];
characterComponentArray = [""];
// set color array (12 colors max)
colorArray = ["green","blue","magenta","orange","turquoise","purple", "aqua","maroon","fuchsia","indigo","orchid","tomato"];
// set variables
pi = Math.PI;
isUndefinedCharacterComponent = false;
// set pattern size
patternSize = 770;
// map character
if (wordType === "Chinese character") {
// check character
if (CCM.characterArray[chineseCharacter] !== undefined) {
characterArray = CCM.characterArray[chineseCharacter].slice();
}
else {
alert ("Character " + chineseCharacter + " is not in database!");
return;
}
document.write('');
document.write('