/* Table.js */ 

function Table () {
}

Table.nLetter = 0;
Table.letters = 0;
Table.lower = 0;
Table.upper = 0;
Table.digit = 0;
Table.space = 0;
Table.block = 0;
Table.period = 0;
Table.comma = 0;
Table.colon = 0;
Table.semicolor = 0;
Table.singlequote = 0;
Table.doublequote = 0;
Table.bang = 0;
Table.question = 0;
Table.at = 0;
Table.hash = 0;
Table.dollar = 0;
Table.percent = 0;
Table.rightparen = 0;
Table.leftparen = 0;
Table.asterisk = 0;
Table.minus = 0;
Table.plus = 0;
Table.leftbracket = 0;
Table.rightbracket = 0;
Table.leftbrace = 0;
Table.rightbrace = 0;
Table.backslash = 0;
Table.slash = 0;
Table.less = 0;
Table.greater = 0;
Table.equals = 0;
Table.underscore = 0;
Table.ampersand = 0;
Table.bullet = 0;
Table.notequal = 0;
Table.angstrom = 0;
Table.copyright = 0;
Table.cedilla = 0;
Table.lessequal = 0;
Table.greaterequal = 0;
Table.division = 0;

Table.initialize = function () {
    var idx = 0;
    Table.letters = new Array(Table.nLetter);
    Table.lower = idx;
    for (var l = 0; l < 26; l++) {
        Table.letters[idx] = new Image();
        var code = "a".charCodeAt(0) + l;
        var c = String.fromCharCode(code);
        Table.letters[idx].src = c + ".gif";
        idx++;
    }
    Table.upper = idx;
    for (var l = 0; l < 26; l++) {
        Table.letters[idx] = new Image();
        var code = "A".charCodeAt(0) + l;
        var c = String.fromCharCode(code);
        Table.letters[idx].src = c + "Cap.gif";
        idx++;
    }
    Table.digit = idx;
    for (var l = 0; l < 10; l++) {
        Table.letters[idx] = new Image();
        var code = "0".charCodeAt(0) + l;
        var c = String.fromCharCode(code);
        Table.letters[idx].src = c + ".gif";
        idx++;
    }
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "space.gif";
    Table.space = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "block.gif";
    Table.block = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "period.gif";
    Table.period = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "comma.gif";
    Table.comma = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "colon.gif";
    Table.colon = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "semicolon.gif";
    Table.semicolon = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "singlequote.gif";
    Table.singlequote = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "doublequote.gif";
    Table.doublequote = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "bang.gif";
    Table.bang = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "question.gif";
    Table.question = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "at.gif";
    Table.at = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "hash.gif";
    Table.hash = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "dollar.gif";
    Table.dollar = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "percent.gif";
    Table.percent = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "rightparen.gif";
    Table.rightparen = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "leftparen.gif";
    Table.leftparen = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "asterisk.gif";
    Table.asterisk = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "minus.gif";
    Table.minus = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "plus.gif";
    Table.plus = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "leftbracket.gif";
    Table.leftbracket = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "rightbracket.gif";
    Table.rightbracket = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "leftbrace.gif";
    Table.leftbrace = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "rightbrace.gif";
    Table.rightbrace = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "backslash.gif";
    Table.backslash = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "slash.gif";
    Table.slash = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "less.gif";
    Table.less = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "greater.gif";
    Table.greater = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "equals.gif";
    Table.equals = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "underscore.gif";
    Table.underscore = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "ampersand.gif";
    Table.ampersand = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "bullet.gif";
    Table.bullet = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "notequal.gif";
    Table.notequal = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "angstrom.gif";
    Table.angstrom = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "copyright.gif";
    Table.copyright = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "cedilla.gif";
    Table.cedilla = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "lessequal.gif";
    Table.lessequal = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "greaterequal.gif";
    Table.greaterequal = idx;
    idx++;
    Table.letters[idx] = new Image();
    Table.letters[idx].src = "division.gif";
    Table.division = idx;
    idx++;
    Table.nLetter = Table.letters.length;
}

Table.writeTable = function () {
    document.write("<table border=0 cellpadding=0 cellspacing=0 >\n");
    for (var h = 0; h < Matrix.height; h++) {
        Table.writeRow(h, Matrix.width);
    }
    document.write("</table>\n");
}

Table.writeRow = function (rowIndex, width) {
    document.write("<tr>\n");
    document.write("\n");
    for (var w = 0; w < width; w++) {
        Table.writeCell(w);
    }
    document.write("</tr>\n");
}

Table.writeCell = function (column) {
    document.write("<td>");
    document.write("<img src='space.gif' >");
    document.write("</td>\n");
}

Table.update = function (matrix) {
    var height = matrix.height;
    var hw = 0;
    var f = document.forms[0];
    for (var h = 0; h < Matrix.height; h++) {
        var row = matrix.row(h);
        var width = row.width;
        for (var w = 0; w < Matrix.width; w++) {
            if (document.images[hw].src != row.image(w)) {
                document.images[hw].src = row.image(w);
            }
            hw++;
        }
    }
}

Table.writeNavigation = function () {
    var nbutton = Matrix.nMatrix;
    if (nbutton < 1) nbutton = 1;
    var width = 720 / nbutton;
    document.write("<table bgcolor='blue' border=0 cellpadding=0 cellspacing=0 >\n");
    document.write("<tr>\n");
    for (var m = 0; m < Matrix.nMatrix; m++) {
        var matrix = Matrix.matrices[m];
        var name = matrix.name;
        Table.writeButton(name, width);
    }
    document.write("</tr>\n");
    document.write("</table>\n");
}

Table.writeButton = function (name, width) {
    var buttonName = name;
    if (buttonName == "HowToBuy") {
        buttonName = "How to Buy";
    }
    else if (buttonName == "OldSite") {
        buttonName = "Old Site";
    }
    document.write("<td bgcolor='blue' width='");
    document.write(width);
    document.write("' align='center'> \n");
    document.write("<input type = 'button' ");
    document.write(" value=\"");
    document.write(buttonName);
    document.write("\" ");
    document.write(" onClick=\"");
    document.write("Matrix.call('");
    document.write(name);
    document.write("')");
    document.write("\" ");
    document.write(" > \n");
    document.write("</td>\n");
}


Table.index2image = function (index) {
    var image = Table.letters[index].src;
    return image;
}
Table.char2image = function (c) {
    var index = Table.char2index(c);
    var image = Table.index2image(index);
    return image;
}

Table.char2index = function (c) {
    var index = 0;
    index = c.charCodeAt(0) - "a".charCodeAt(0);
    if (index >= 0 && index < 26) {
        return index + Table.lower
    }
    index = c.charCodeAt(0) - "A".charCodeAt(0);
    if (index >= 0 && index < 26) {
        return index + Table.upper
    }
    index = c.charCodeAt(0) - "0".charCodeAt(0);
    if (index >= 0 && index < 10) {
        return index + Table.digit
    }
    if (c == " ") {
    	return Table.space;
    }
    else if (c == ".") {
    	return Table.period;
    }
    else if (c == "$") {
    	return Table.dollar;
    }
    else if (c == ":") {
    	return Table.colon;
    }
    else if (c == "(") {
        return Table.leftparen;
    }
    else if (c == ")") {
        return Table.rightparen;
    }
    else if (c == "€") {
        return Table.bullet;
    }
    else if (c == "-") {
        return Table.minus;
    }
    else if (c == "*") {
        return Table.asterisk;
    }
    else if (c == "#") {
        return Table.hash;
    }
    else if (c == "&") {
        return Table.ampersand;
    }
    else if (c == ",") {
        return Table.comma;
    }
    else if (c == "@") {
        return Table.at;
    }
    // not recognized - use a block
    index = Table.block;
    return index;
}
Table.index2char = function (index) {
    var code = 0;
    var c = " ";
    if (index < 0) {
        code = " ".charCodeAt(0);
    }
    else if (index < Table.lower + 26) {
        code = "a".charCodeAt(0) + index;
    }
    else if (index < Table.upper + 26) {
        code = "A".charCodeAt(0) + index;
    }
    else if (index < Table.digit + 10) {
        code = "0".charCodeAt(0) + index;
    }
    else if (index == Table.space) {
        code = " ".charCodeAt(0);
    }
    else if (index == Table.dollar) {
        code = "$".charCodeAt(0);
    }
    else if (index == Table.colon) {
        code = ":".charCodeAt(0);
    }
    else if (index == Table.asterisk) {
        code = "*".charCodeAt(0);
    }
    else if (index == Table.hash) {
        code = "#".charCodeAt(0);
    }
    else if (index == Table.ampersand) {
        code = "&".charCodeAt(0);
    }
    else if (index == Table.comma) {
        code = ",".charCodeAt(0);
    }
    else if (index == Table.at) {
        code = "@".charCodeAt(0);
    }
    else {
        code = " ".charCodeAt(0);
    }
    c = String.fromCharCode(code);
    return c;
}


