<script type="text/javascript">
<!--
// --------------------------------------------//
// CONSTRUCTOR: "Table" ---------------begin---//
// constructor : "Table" - methods: "Table.isDefaultProperty()" ---//
// subConstructor: "TableRow" - methods: "TableRow.isDefaultProperty()" ---//
// subConstructor: "TableCell" - methods: "TableCell.isDefaultProperty()" ---//
function tableIsDefaultProperty(propertyName) {
[native code]
}
// hilfsfunktion - vereint den quellcode aller drei "Object.isDefaultProperty()"-methoden;
function tableGetPropertyStatus(tableObject,propertyName) {
[native code]
}
// subConstructor: "TableCell" - methods: "TableCell.isDefaultProperty()" ---//
// subConstructor: "TableRow" - methods: "TableRow.isDefaultProperty()" ---//
// constructor : "Table" - methods: "Table.isDefaultProperty()" ---//
// constructor : "Table" - methods: "Table.refreshArguments()" ---//
// subConstructor: "TableRow" - methods: "TableRow.refreshArguments()" ---//
// subConstructor: "TableCell" - methods: "TableCell.refreshArguments()" ---//
function tableRefreshArguments() {
[native code]
}
// hilfsfunktion - vereint den quellcode aller drei "Object.refreshArguments()"-methoden;
function tableGetCurrentArguments(tableObject) {
[native code]
}
// subConstructor: "TableCell" - methods: "TableCell.refreshArguments()" ---//
// subConstructor: "TableRow" - methods: "TableRow.refreshArguments()" ---//
// constructor : "Table" - methods: "Table.refreshArguments()" ---//
// constructor : "Table" - methods: "Table.removeArguments()" ---//
// subConstructor: "TableRow" - methods: "TableRow.removeArguments()" ---//
// subConstructor: "TableCell" - methods: "TableCell.removeArguments()" ---//
function tableRemoveArguments() {
[native code]
}
// subConstructor: "TableCell" - methods: "TableCell.removeArguments()" ---//
// subConstructor: "TableRow" - methods: "TableRow.removeArguments()" ---//
// constructor : "Table" - methods: "Table.removeArguments()" ---//
// constructor : "Table" - methods: "Table.setArguments()" ---//
// subConstructor: "TableRow" - methods: "TableRow.setArguments()" ---//
// subConstructor: "TableCell" - methods: "TableCell.setArguments()" ---//
function tableSetArguments() {
[native code]
}
// subConstructor: "TableCell" - methods: "TableCell.setArguments()" ---//
// subConstructor: "TableRow" - methods: "TableRow.setArguments()" ---//
// constructor : "Table" - methods: "Table.setArguments()" ---//
// constructor: "Table" - method: "Table.getCode()" ---//
function tableGetCode() {
[native code]
}
// die hilfsfunktion "tableGetSpanMap" liefert die zweidimensionale boolsche "ansicht" der row- und colspan- gebiete eines jeden Table-objekts zurueck;
function tableGetSpanMap(tableObject) {
[native code]
}
// constructor: "Table" - method: "Table.getCode()" ---//
// constructor: "Table" - method: "Table.insertRows()" ---//
// constructor: "Table" - method: "Table.appendRows()" ---//
function tableInsertRows(rowsAmount,rowNumber) { // (amountOfRowsToBeInserted[mandatory], positionOfRowWhereInsertingShallTakePlace[default:alwaysFirstRow]);
[native code]
}
function tableAppendRows(rowsAmount,rowNumber) { // (amountOfRowsToBeAppended[mandatory], positionOfRowWhereAppendingShallTakePlace[default:alwaysLastRow]);
[native code]
}
// hilfsfunktion fuer die methoden "Table.insertRows()" und "Table.appendRows()";
function tableAddRows(tableObject,rowsAmount,rowNumber,addMethod) { // (tableObjectItself, amountOfRowsToBeAdded, positionOfRowWhereAdditionShallTakePlace, keywordThatIdentifiesTheMethodOfAddition:["insert" or "append"]);
[native code]
}
// constructor: "Table" - method: "Table.appendRows()" ---//
// constructor: "Table" - method: "Table.insertRows()" ---//
// constructor: "Table" - method: "Table.insertCols()" ---//
// constructor: "Table" - method: "Table.appendCols()" ---//
function tableInsertCols(colsAmount,colNumber) { // (amountOfColumnsToBeInserted[mandatory], positionOfColumnWhereInsertingShallTakePlace[default:alwaysFirstColumn]);
[native code]
}
function tableAppendCols(colsAmount,colNumber) { // (amountOfColumnsToBeAppended[mandatory], positionOfColumnWhereAppendingShallTakePlace[default:alwaysLastColumn]);
[native code]
}
// hilfsfunktion fuer die methoden "Table.insertCols()" und "Table.appendCols()";
function tableAddCols(tableObject,colsAmount,colNumber,addMethod) { // (tableObjectItself, amountOfColumnsToBeAdded, positionOfColumnWhereAdditionShallTakePlace, keywordThatIdentifiesTheMethodOfAddition:["insert" or "append"]);
[native code]
}
// constructor: "Table" - method: "Table.appendCols()" ---//
// constructor: "Table" - method: "Table.insertCols()" ---//
// constructor: "Table" - method: "Table.removeRows()" ---//
function tableRemoveRows() {
[native code]
}
// constructor: "Table" - method: "Table.removeRows()" ---//
// constructor: "Table" - method: "Table.removeCols()" ---//
function tableRemoveCols() {
[native code]
}
// constructor: "Table" - method: "Table.removeCols()" ---//
// constructor: "Table" - properties: "Table.rows[].cols[]" ---//
// CONSTRUCTOR: "TableRow" --------------begin---//
function TableRow(tableCols) {
// die 3 standardmaessigen (und finalen) argumente eines "TableRow"-objekts;
this.defaults = null; // liste alle per default definierten "TableRow"-argumente und -methoden;
this.arguments = null; // liste aller defaultmaessigen und aller noch zu vereinbarenden "TableRow"-argumente (wird vor jeder tabellen-internen berechnung ueber die methode "TableRow.refreshArguments()" auf den neuesten stand gebracht);
this.cols = null;
this.defaults = tableGetDefaultProperties(this); // siehe erklaerungen zur hilfsfunktion "tableGetDefaultProperties" und kommentar 3 zeilen hoeher;
this.cols = tableGetDefaultCols(tableCols); // siehe hilfsfunktion "tableGetDefaultCols";
}
// die 4 standardmaessigen (und finalen prototypen-)methoden eines "TableRow"-objekts;
TableRow.prototype.isDefaultProperty = tableIsDefaultProperty; // tableRowIsDefaultProperty;
TableRow.prototype.refreshArguments = tableRefreshArguments; // tableRowRefreshArguments;
TableRow.prototype.removeArguments = tableRemoveArguments; // tableRowRemoveArguments;
TableRow.prototype.setArguments = tableSetArguments; // tableRowSetArguments;
// CONSTRUCTOR: "TableRow" --------------end-----//
// CONSTRUCTOR: "TableCell" -------------begin---//
function TableCell() {
// die 3 standardmaessigen (und finalen) argumente eines "TableCell"-objekts;
this.defaults = null; // liste alle per default definierten "TableCell"-argumente und -methoden;
this.arguments = null; // liste aller defaultmaessigen und aller noch zu vereinbarenden "TableCell"-argumente (wird vor jeder tabellen-internen berechnung ueber die methode "TableCell.refreshArguments()" auf den neuesten stand gebracht);
this.value = " "; // default-zuweisung von "TableCell"-inhalten;
this.defaults = tableGetDefaultProperties(this); // siehe erklaerungen zur hilfsfunktion "tableGetDefaultProperties" und kommentar 3 zeilen hoeher;
}
// die 4 standardmaessigen (und finalen prototypen-)methoden eines "TableCell"-objekts;
TableCell.prototype.isDefaultProperty = tableIsDefaultProperty; // tableCellIsDefaultProperty;
TableCell.prototype.refreshArguments = tableRefreshArguments; // tableCellRefreshArguments;
TableCell.prototype.removeArguments = tableRemoveArguments; // tableCellRemoveArguments;
TableCell.prototype.setArguments = tableSetArguments; // tableCellSetArguments;
/*
TableCell.inherits(TableRow); // bei einer direkten referenzierung der funktionen im quellcode laeuft das script schneller;
*/
// CONSTRUCTOR: "TableCell" -------------end-----//
//die hilfsfunktion "tableGetDefaultRows" gibt der eigenschaft "Table.rows" ein array komplexer zeilen- und zellen-objekte zurueck;
function tableGetDefaultRows(tableRows,tableCols) {
var rowsArray = new Array();
for (var i=0;i<tableRows;i++) {
rowsArray[i] = new TableRow(tableCols); // vorbereitung fuer die initialisierung von spalten/zellen;
}
return rowsArray ;
}
//die hilfsfunktion "tableGetDefaultCols" gibt der eigenschaft "TableRow.cols" ein array von zellen-objekten zurueck;
function tableGetDefaultCols(tableCols) {
var colsArray = new Array();
for (var i=0;i<tableCols;i++) {
colsArray[i] = new TableCell(); // initialisierung von zellen-eigenschaften;
}
return colsArray;
}
// constructor: "Table" - properties: "Table.rows[].cols[]" ---//
// constructor: "Table" - "CONSTRUCTOR" --//
// constructor: "Table" - "CONSTRUCTOR" --//
function Table() {
var constructorArguments = Table.arguments;
var constructorArgumentsLength = constructorArguments.length;
var argumentName = "";
var tableRows = 1;
var tableCols = 1;
var argumentsObject = null;
// die 3 standardmaessigen (und finalen) argumente eines "Table"-objekts;
this.defaults = null; // liste alle per default definierten "Table"-argumente und -methoden;
this.arguments = null; // liste aller defaultmaessigen und aller initialisierten "Table"-argumente (wird vor jeder tabellen-internen berechnung ueber die methode "Table.refreshArguments()" auf den neuesten stand gebracht);
this.rows = null; // die hilfsfunktion "tableGetDefaultRows" weist im weiteren initialisierungsprozess diesem element ein array komplexer zeilen- und zellen-objekte zu;
this.defaults = tableGetDefaultProperties(this); // siehe erklaerungen zur hilfsfunktion "tableGetDefaultProperties" und kommentar 3 zeilen hoeher;
if ((constructorArgumentsLength == 1) && (typeof(constructorArguments[0]) == "string")) {
constructorArguments = constructorArguments.split(",");
constructorArgumentsLength = constructorArguments.length;
}
for (var i=0;i<constructorArgumentsLength;i++) {
if (constructorArguments[i].getConstructorName() == "Object()") { // because typeof(new Array()) returns "object" as well;
// akzeptiert ein objektliteral oder mehrere objektliterale als argumente des klassen-konstruktors;
argumentsObject = constructorArguments[i];
for (argumentName in argumentsObject) {
if (argumentName == "rows") {
tableRows = argumentsObject["rows"].toString().forceToNumber();
} else if (argumentName == "cols") {
tableCols = argumentsObject["cols"].toString().forceToNumber();
} else {
this[argumentName] = argumentsObject[argumentName]; // ueberschreiben einer existierenden oder initilisieren einer neuen "Table"-eigenschaft;
this[argumentName] = this[argumentName].toString();
}
}
} else if (typeof(constructorArguments[i]) == "string") {
// akzeptiert ein stringliteral oder mehrere stringliterale als argumente des klassen-konstruktors;
argumentName = ((constructorArguments[i].indexOf("=") >= 1) ? (constructorArguments[i].split("=")[0]) : (null));
if ((argumentName) && (argumentName.search(/\s/) == -1)) {
if (argumentName == "rows") {
tableRows = constructorArguments[i].split("=")[1].forceToNumber();
tableRows = ((isNaN(tableRows)) ? (1) : (tableRows));
} else if (argumentName == "cols") {
tableCols = constructorArguments[i].split("=")[1].forceToNumber();
tableCols = ((isNaN(tableCols)) ? (1) : (tableCols));
} else {
eval("this." + constructorArguments[i]); // ueberschreiben einer existierenden oder initilisieren einer neuen "Table"-eigenschaft;
this[argumentName] = this[argumentName].toString();
}
}
}
}
this.rows = tableGetDefaultRows(tableRows,tableCols); // hilfsfunktion zum generieren der zeilen- und spalten- defaults eines neuen "Table"-objekts;
}
// die 11 standardmaessigen (und finalen prototypen-)methoden eines "Table-objekts;
Table.prototype.isDefaultProperty = tableIsDefaultProperty;
Table.prototype.refreshArguments = tableRefreshArguments;
Table.prototype.removeArguments = tableRemoveArguments;
Table.prototype.setArguments = tableSetArguments;
Table.prototype.getCode = tableGetCode;
Table.prototype.insertRows = tableInsertRows;
Table.prototype.appendRows = tableAppendRows;
Table.prototype.removeRows = tableRemoveRows;
Table.prototype.insertCols = tableInsertCols;
Table.prototype.appendCols = tableAppendCols;
Table.prototype.removeCols = tableRemoveCols;
//Table.prototype.sortByCols = tableSortByCols;
//Table.prototype.sortByRows = tableSortByRows;
// die hilfsfunktion "tableGetDefaultProperties" gibt der eigenschaft "Table.defaults" ("TableRow.defaults", "TableCell.defaults")
// ein array aller standardmaessigen eigenschaften der gerade initialisierten tabelle
// zurueck - in dieser liste stehen alle methoden und argumente einer tabelle, die im
// nachhinein nicht mehr veraendert oder geloescht werden duerfen (js kennt eben kein
// abgestuftes sicherheits-/oeffentlichkeits-protokoll fuer datentypen mit schluessel-
// woertern wie z.b. "public", "privat" oder "final") - die liste wiederum kann nicht
// schon statisch vordefiniert sein, da eine js-tabelle ja immer ein objekt ist und
// bedingt durch das prototypenkonzept von javascript auch prototypen-eigenschaften
// von "Object" enthaelt welche jetzt noch nicht bekannt sind, die aber ohne weiteres
// zur laufzeit ausgelesen werden koennen - bsp.: ein benutzer verwendet den table-
// konstruktor in einer js-umgebung, in der dem "Object"-prototypen die eigenschaft
// "xyz" zugewiesen wurde ("Object.prototype.xyz = whatever;") - in dieser umgebung
// besitzt jetzt jedes table-object auch die prototypen-eigenschaft "xyz" zusaetzlich
// zu den schon bekannten nativen prototypen-methoden und tabellen-eigenen argumenten;
function tableGetDefaultProperties(rawObject) {
var defaultsArray = new Array();
var propertyName = "";
for (propertyName in rawObject) { // findet sowohl alle prototypen-eigenschaften als auch alle bis zum aufruf dieser funktion vereinbarten internen eigenschaften des uebergebenen constructor-objects "rawObject" ("Table", "TableRow", "TableCell");
defaultsArray[defaultsArray.length] = propertyName;
}
return defaultsArray;
}
// constructor: "Table" - "CONSTRUCTOR" --//
// constructor: "Table" - "CONSTRUCTOR" --//
// CONSTRUCTOR: "Table" ---------------begin---//
// --------------------------------------------//