function runChecker() {
// declare
var i;
var item;
// load all databases
loadComponentArray();
loadCharacterComponentArray();
loadCharacterArray();
// database statistics
document.writeln("Database statistics:" + "
");
i = 0;
for (item in CWM.componentArray) {
i++;
}
document.writeln(i + " components" + "
");
i = 0;
for (item in CWM.characterComponentArray) {
i++;
}
document.writeln(i + " characters linked into 2-character words" + "
");
i = 0;
for (item in CWM.characterArray) {
i++;
}
document.writeln(i + " characters in all" + "
");
}
function runViewer(script) {
// declare
var chineseCharacter;
if (script !== "") {
// check database
if (script === "check") {
runChecker();
}
// map character
else {
chineseCharacter = script[0];
runMapper(chineseCharacter);
}
}
}
function runMapper(chineseCharacter) {
// load entire database (only once)
if (!(CWM.isLoadedDatabase)) {
loadComponentArray();
loadCharacterComponentArray();
loadCharacterArray();
CWM.isLoadedDatabase = true;
}
// execute mapper
execMapper(chineseCharacter);
}
function execMapper(chineseCharacter) {
// declare
var mapType;
var word;
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 maxNumberOfCircles;
var colorArray;
var characterArray;
var componentArray;
var characterComponentArray;
// get year
d = new Date();
year = d.getFullYear();
// initialize arrays
colorArray = [""];
characterArray = [""];
componentArray = [""];
characterComponentArray = [""];
// set color array (12 colors max)
colorArray = ["green","blue","magenta","orange","turquoise","purple", "aqua","maroon","fuchsia","indigo","orchid","tomato"];
// set variable
pi = Math.PI;
// set pattern size
patternSize = 770;
// set max number of peripheral circles
maxNumberOfCircles = 6;
// check databases
if (CWM.characterArray[chineseCharacter] !== undefined) {
characterArray = CWM.characterArray[chineseCharacter].slice();
}
else {
alert ("Character " + chineseCharacter + " is not in character database!");
return;
}
if (CWM.characterComponentArray[chineseCharacter] !== undefined) {
characterComponentArray = CWM.characterComponentArray[chineseCharacter].slice();
}
else {
alert ("Character " + chineseCharacter + " is not in character component database!");
return;
}
// set mapType
if (characterComponentArray.length <= maxNumberOfCircles) {
mapType = "Single map";
}
else if (characterComponentArray.length <= (2 * maxNumberOfCircles)) {
mapType = "Double map";
}
else if (characterComponentArray.length <= (3 * maxNumberOfCircles)) {
mapType = "Triple map";
}
else {
mapType = "Quadruple map";
}
// 1-SINGLE MAP
if (mapType === "Single map") {
// write to document
document.write('');
document.write('