function wrtToolbarDCorDOTCd(b_dcDot, b_includeForm, s_urlTargetPre, s_urlTargetPost, s_slctdDCorDOT3Abrv, s_cmptbl4DOTorDC3Abrv, b_cmptblDimDel) {
wrtnl("");
wrtToolbarDCorDOT(b_dcDot, b_includeForm, s_urlTargetPre, s_urlTargetPost, s_slctdDCorDOT3Abrv, s_cmptbl4DOTorDC3Abrv, b_cmptblDimDel);
wrtnl("
");
}
function wrtToolbarDCorDOT(b_dcDot, b_includeForm, s_urlTargetPre, s_urlTargetPost, s_slctdDCorDOT3Abrv, s_cmptbl4DOTorDC3Abrv, b_cmptblDimDel) {
wrtnl(getToolbarDCorDOT(b_dcDot, b_includeForm, s_urlTargetPre, s_urlTargetPost, s_slctdDCorDOT3Abrv, s_cmptbl4DOTorDC3Abrv, b_cmptblDimDel).join(" "));
}
function getToolbarDCorDOT(b_dcDot, b_includeForm, s_urlTargetPre, s_urlTargetPost, s_slctdDCorDOT3Abrv, s_cmptbl4DOTorDC3Abrv, b_cmptblDimDel) {
var sF = "getToolbarDCorDOT";
var dotOrDC4Cmptblt;
var sCorOT;
var aThis;
var aOpposite;
var iThisIdx;
ciMissing(getToolbarDCorDOT, sF + " (ERRCHK)", "b_dcDot", b_dcDot);
if(df(s_urlTargetPre) ^ df(s_urlTargetPost)) {//ERRCHK
crsh("tbdcodot1", getToolbarDCorDOT, sF + " (ERRCHK): s_urlTargetPre (currently '" + s_urlTargetPre + "') and s_urlTargetPost (currently '" + s_urlTargetPost + "') must both be either defined or undefined.");
} //ERRCHK
if(df(s_slctdDCorDOT3Abrv)) {
if(b_dcDot) {
var iDCIdx = getAllDCIdx(sF + " [b_dcDot is true, so s_slctdDCorDOT3Abrv must be a DocConcept]", s_slctdDCorDOT3Abrv, true);
} else {
var iDOTIdx = getAllDOTIdx(sF + " [b_dcDot is false, so s_slctdDCorDOT3Abrv must be a DocObjType]", s_slctdDCorDOT3Abrv, true);
}
}
var iWhat2DoIncmptbl = -1;
if(df(s_cmptbl4DOTorDC3Abrv)) {
if(b_dcDot) {
var iDOTIdx = getAllDOTIdx(sF + " [b_dcDot is false, so s_cmptbl4DOTorDC3Abrv must be a DocObjType]", s_cmptbl4DOTorDC3Abrv, true);
dotOrDC4Cmptblt = aDOC_OT[iDOTIdx];
} else {
var iDCIdx = getAllDCIdx(sF + " [b_dcDot is true, so s_cmptbl4DOTorDC3Abrv must be a DocConcept]", s_cmptbl4DOTorDC3Abrv, true);
dotOrDC4Cmptblt = aDOC_C[iDCIdx];
}
ciMissing(getToolbarDCorDOT, sF + " (ERRCHK) [s_cmptbl4DOTorDC3Abrv is defined (currently '" + s_cmptbl4DOTorDC3Abrv + "']", "b_cmptblDimDel", b_cmptblDimDel);
} else if(df(b_cmptblDimDel)) { //ERRCHK
crsh("wtbdcodot1", getToolbarDCorDOT, sF + " (ERRCHK): s_cmptbl4DOTorDC3Abrv is undefined, so b_cmptblDimDel must also be undefined. Currently '" + b_cmptblDimDel + "'");
}
if(b_dcDot) {
sCorOT = "C";
aThis = aDOC_C;
iThisIdx = 0;
aOpposite = aDOC_OT;
} else {
ciMissing(getToolbarDCorDOT, sF + " (ERRCHK) (b_dcDot is false)", "b_includeForm", b_includeForm);
sCorOT = "OT";
aThis = aDOC_OT;
if(b_includeForm) {
iThisIdx = 0; //We want "frm"
} else {
iThisIdx = 1; //We don't want "frm"
}
aOpposite = aDOC_C;
}
var aTbItems = [];
for(var i = iThisIdx; i < aThis.length; i++) {
if(df(s_slctdDCorDOT3Abrv)) {
//Something is currently selected
if(s_slctdDCorDOT3Abrv == aThis[i].s3Abrv) {
//This is the currently-selected item. Bold,
//capitalize and don't link it.
aTbItems[aTbItems.length] = "" + aThis[i].s3Abrv.toUpperCase() + "";
continue;
//ELSE: This is not the currently-selected item.
} else if(!df(s_cmptbl4DOTorDC3Abrv)) {
//We don't care about compatibility. If it"s not
//the selected item, just print it out normal.
aTbItems[aTbItems.length] = getNormalItem(aThis[i].s3Abrv, s_urlTargetPre, s_urlTargetPost);
continue;
}
}
if(df(s_cmptbl4DOTorDC3Abrv)) {
//Only print out toolbar items that are compatible with the
if((b_dcDot &&
dotOrDC4Cmptblt.isCmptblDC(aThis[i].s3Abrv)) ||
(!b_dcDot &&
dotOrDC4Cmptblt.isCmptblDOT(aThis[i].s3Abrv))) {
//The toolbar dc/dot item is compatible with the
//currently-selected (and opposite-typed) dot/dc
//item.
aTbItems[aTbItems.length] = getNormalItem(aThis[i].s3Abrv, s_urlTargetPre, s_urlTargetPost);
continue;
//ELSE: Incompatible
} else {
//Dim
aTbItems[aTbItems.length] = '' + aThis[i].s3Abrv + '';
continue;
} //ELSE: Delete
}
//We don't care about what's selected, nor about
//compatibility. Just print the sucker
aTbItems[aTbItems.length] = getNormalItem(aThis[i].s3Abrv, s_urlTargetPre, s_urlTargetPost);
}
return aTbItems;
}
function getNormalItem(s_3abrv, s_urlTargetPre, s_urlTargetPost) {
if(!df(s_urlTargetPre)) {
//No link at all
return s_3abrv;
} else {
return '' + s_3abrv + '';
}
}
function DocConcept(s_3abbrv, s_nameTxt, s_nameHtml) {
ciMissing(DocConcept, "DocConcept (ERRCHK)", "s_nameTxt", s_nameTxt);
ciMissing(DocConcept, "DocConcept (ERRCHK)", "s_3abbrv", s_3abbrv);
ciMissing(DocConcept, "DocConcept (ERRCHK)", "s_nameHtml", s_nameHtml);
if(s_3abbrv.length != 3) { //ERRCHK
crsh("cncpt1", DocConcept, "DocConcept (ERRCHK): s_3abbrv (currently '" + s_3abbrv + "') must be exactly three characters in length.");
} //ERRCHK
//Variables
this.sNameTxt = s_nameTxt;
this.s3Abrv = s_3abbrv;
this.sNameHtml = s_nameHtml;
this.aCmptblDot;
this.aAllAttrsCA;
//Functions
this.get3Abrv = pb_get3Abrv;
this.getDCNameTxt = pb_getDCNameTxt;
this.getDCNameHtml = pb_getDCNameHtml;
this.setAllAttrsACA = pb_setAllAttrsACA;
this.setCmptblDOT = pb_setCmptblDOT;
this.getCmptblDOTIdx = pb_getCmptblDOTIdx;
this.isCmptblDOT = pb_isCmptblDOT;
this.getCmptblDOTFromIdx = pb_getCmptblDOTFromIdx;
// this.gt2StrDC = pb_gt2StrDC;
}
//Getters
function pb_get3Abrv() {
return this.s3Abrv;
}
function pb_getDCNameTxt() {
return this.sNameTxt;
}
function pb_getDCNameHtml() {
return this.sNameHtml;
}
// function pb_gt2StrDC() {
// return "DocConcept: this.get3Abrv()='" + this.get3Abrv() + "', this.getDCNameTxt()='" + this.getDCNameTxt() + "', this.getDCNameHtml()='" + this.getDCNameHtml() + "' ";
// }
//aCmptblDot related
function pb_setAllAttrsACA(a_allAttrsCA) {
this.aAllAttrsCA = a_allAttrsCA;
}
function pb_setCmptblDOT(a_cmptblDot) {
if(df(this.aCmptblDot)) { //ERRCHK
crsh("dc.scdot1", this.setCmptblDOT, "setCmptblDOT (ERRCHK): Already called. Can only call once.");
} //ERRCHK
cibRA("setCmptblDOT (ERRCHK)", "a_cmptblDot", a_cmptblDot);
for(var i = 0; i < a_cmptblDot.length; i++) { //ERRCHK
if(!df(a_cmptblDot[i].cot)) { //ERRCHK
crsh("dot.scdc2", this.setCmptblDC, "setCmptblDC (ERRCHK): a_cmptblDot[" + i + "] is not of type DocObjectType. a_cmptblDot[" + i + "].cot is undefined.");
} //ERRCHK
} //ERRCHK
this.aCmptblDot = a_cmptblDot;
}
function pb_getCmptblDOTIdx(s_dot3Abrv) {
for(var i = 0; i < this.aCmptblDot.length; i++) {
if(s_dot3Abrv == this.aCmptblDot[i].s3Abrv) {
return i;
}
}
return -1;
}
function pb_isCmptblDOT(s_dot3Abrv) {
if(this.getCmptblDOTIdx(s_dot3Abrv) == -1) {
//Crash if it's a bogus abbreviation
getAllDOTIdx("isCmptblDOT", s_dot3Abrv, true);
//It is a valid abbreviation, it's just not compatible with this object type
return false;
}
return true;
}
function pb_getCmptblDOTFromIdx(i_dx) {
cibRAIdx("getCmptblDOTFromIdx (ERRCHK)", i_dx, this.aCmptblDot);
return this.aCmptblDot[i_dx];
}
function DocObjType(s_3abbrv, cmptbl_ot) {
ciMissing(DocObjType, "DocObjType (ERRCHK)", "s_3abbrv", s_3abbrv);
ciMissing(DocObjType, "DocObjType (ERRCHK)", "cmptbl_ot", cmptbl_ot);
if(!df(cmptbl_ot.bOTorA) || !cmptbl_ot.bOTorA) { //ERRCHK
crsh("dotc4c1", DocObjType, "DocObjType (ERRCHK) cmptbl_ot (currently [" + doc_objType + "]) is not of type 'CmptblOTA'. cmptbl_ot.bOTorA must be defined and equal to true. Currently "+ cmptbl_ot.bOTorA + ".");
} //ERRCHK
this.s3Abrv = s_3abbrv;
this.cot = cmptbl_ot;
this.aCmptblDC;
this.get3Abrv = pb_get3Abrv;
this.getDOTName = pb_getDOTName;
this.getDOTNameHtml = pb_getDOTNameHtml;
this.getDOTNameHtmlLong = pb_getDOTNameHtmlLong;
this.setCmptblDC = pb_setCmptblDC;
this.isCmptblDC = pb_isCmptblDC;
this.getCmptblDCIdx = pb_getCmptblDCIdx;
this.getDCFromIdx = pb_getDCFromIdx;
this.getCmptblDCFromIdx = pb_getCmptblDCFromIdx;
// this.gt2StrDOT = pb_gt2StrDOT;
}
//Getters
function pb_get3Abrv() {
return this.s3Abrv;
}
function pb_getDOTName() {
return this.cot.sNm;
}
function pb_getDOTNameHtml() {
return "" + this.getDOTName() + "
";
}
function pb_getDOTNameHtmlLong() {
if(this.cot.sNm == "checkbox" ||
this.cot.sNm == "radio") {
return this.getDOTNameHtml() + " Set";
} else {
return this.getDOTNameHtml();
}
}
// function pb_gt2StrDOT() {
// return "DocObjType: this.get3Abrv()='" + this.get3Abrv() + "'";
// }
//Compatible DocConcepts
function pb_setCmptblDC(a_cmptblDC) {
if(df(this.aCmptblDC)) { //ERRCHK
crsh("dot.scdc1", this.setCmptblDC, "setCmptblDC (ERRCHK): Already called. Can only call once.");
} //ERRCHK
cibRA("setCmptblDC", "a_cmptblDC", a_cmptblDC); //ERRCHK
for(var i = 0; i < a_cmptblDC.length; i++) { //ERRCHK
if(!df(a_cmptblDC[i].sNameTxt)) { //ERRCHK
crsh("dot.scdc2", this.setCmptblDC, "setCmptblDC (ERRCHK): a_cmptblDC[" + i + "] is not of type DocConcept. a_cmptblDC[" + i + "].sNameTxt is undefined.");
} //ERRCHK
} //ERRCHK
this.aCmptblDC = a_cmptblDC;
}
function pb_getCmptblDCIdx(s_dc3Abrv) {
for(var i = 0; i < this.aCmptblDC.length; i++) {
if(s_dc3Abrv == this.aCmptblDC[i].s3Abrv) {
return i;
}
}
return -1;
}
function pb_isCmptblDC(s_dc3Abrv) {
if(this.getCmptblDCIdx(s_dc3Abrv) == -1) {
//Crash if it's a bogus abbreviation
getAllDCIdx("isCmptblDC", s_dc3Abrv, true);
//It is a valid abbreviation, it's just not compatible with this object type
return false;
}
return true;
}
function pb_getDCFromIdx(i_dx) {
cibRAIdx("getDCFromIdx (ERRCHK)", i_dx, this.aCmptblDC);
return this.aCmptblDC[i_dx];
}
function pb_getCmptblDCFromIdx(i_dx) {
cibRAIdx("getCmptblDCFromIdx (ERRCHK)", i_dx, this.aCmptblDC);
return this.aCmptblDC[i_dx];
}
var a2c_sMr = new Attr2Concept(ca_sMr);
var a2c_sMtd = new Attr2Concept(ca_sMtd);
var a2c_sMte = new Attr2Concept(ca_sMte);
var a2c_sMti = new Attr2Concept(ca_sMti);
var a2c_sMbl = new Attr2Concept(ca_sMbl);
var a2c_sMmcr = new Attr2Concept(ca_sMmcr);
//Bad sub-strings
var a2c_asGbss = new Attr2Concept(ca_asGbss);
var a2c_bsNbss = new Attr2Concept(ca_bsNbss);
var a2c_asBss = new Attr2Concept(ca_asBss);
var a2c_sMbss = new Attr2Concept(ca_sMbss);
//Trim spaces
var a2c_bsGts = new Attr2Concept(ca_bsGts);
var a2c_bsDts = new Attr2Concept(ca_bsDts);
var a2c_bsTs = new Attr2Concept(ca_bsTs);
var a2c_sMt = new Attr2Concept(aCMPTBL_ATTRS[13]);
//var aCMPTBL_OBJ_TYPES = [cotFrm, cotTxt, cotPwd, cotTxa, cotRdo, cotSl1, cotChk, cotSlm];
// 0 1 2 3 4 5 6 7
var dcRqd = new DocConcept("rqd", "sMsgRequired", "sMsgRequired
");
var dcDec = new DocConcept("dec", "sMsgTxtDec", "sMsgTxtDec
");
var dcEml = new DocConcept("eml", "sMsgTxtEmail", "sMsgTxtEmail
");
var dcInt = new DocConcept("int", "sMsgTxtInt", "sMsgTxtInt
");
var dcLen = new DocConcept("len", "sMsgBadLength", "sMsgBadLength
");
var dcMcr = new DocConcept("mcr", "sMsgMCRange", "sMsgMCRange
");
var dcBss = new DocConcept("bss", "Bad Sub-Strings", "Bad Sub-Strings");
var dcTrm = new DocConcept("trm", "Trim spaces", "Trim spaces");
var dcSif = new DocConcept("sif", "SIFmt-Attributes (sMsgTxt*)", "SIFmt
-Attributes (sMsgTxt*
)");
a2c_sMr.setDC(dcRqd);
a2c_sMtd.setDC(dcDec);
a2c_sMte.setDC(dcEml);
a2c_sMti.setDC(dcInt);
a2c_sMbl.setDC(dcLen);
a2c_sMmcr.setDC(dcMcr);
a2c_asGbss.setDC(dcBss);
a2c_bsNbss.setDC(dcBss);
a2c_asBss.setDC(dcBss);
a2c_sMbss.setDC(dcBss);
a2c_bsGts.setDC(dcTrm);
a2c_bsDts.setDC(dcTrm);
a2c_bsTs.setDC(dcTrm);
a2c_sMt.setDC(dcSif);
//rqd dec eml int sif mcr bss trm
// 0 1 2 3 4 5 6 7
var dotFrm = new DocObjType("frm", cotFrm);
var dotTxt = new DocObjType("txt", cotTxt);
var dotPwd = new DocObjType("pwd", cotPwd);
var dotTxa = new DocObjType("txa", cotTxa);
var dotRdo = new DocObjType("rdo", cotRdo);
var dotSl1 = new DocObjType("sl1", cotSl1);
var dotChk = new DocObjType("chk", cotChk);
var dotSlm = new DocObjType("slm", cotSlm);
//Must be defined before calling dc.setCmptblDOT() and dot.setCmptblDC()
//This is only used for mapping attributes to concepts, via getAllA2CIdx()
//sif.html should only a2c_sMt, above.
var aATTR2C = [a2c_sMr, a2c_sMtd, a2c_sMte, a2c_sMti, a2c_sMbl, a2c_sMmcr, a2c_asGbss, a2c_bsNbss, a2c_asBss, a2c_sMbss, a2c_bsGts, a2c_bsDts, a2c_bsTs];
for(var i = 13; i < aCMPTBL_ATTRS.length; i++) {
aATTR2C[aATTR2C.length] = new Attr2Concept(aCMPTBL_ATTRS[i], "Dummy purpose", "Dummy rules");
aATTR2C[aATTR2C.length - 1].setDC(dcSif);
}
;
var aDOC_C = [dcRqd, dcDec, dcEml, dcInt, dcLen, dcMcr, dcBss, dcTrm, dcSif];
var aDOC_OT = [dotFrm, dotTxt, dotPwd, dotTxa, dotRdo, dotSl1, dotChk, dotSlm];
dcRqd.setCmptblDOT([dotTxt, dotPwd, dotTxa, dotRdo, dotSl1, dotChk, dotSlm]);
dcDec.setCmptblDOT([dotTxt, dotPwd]);
dcEml.setCmptblDOT([dotTxt, dotPwd]);
dcInt.setCmptblDOT([dotTxt, dotPwd]);
dcLen.setCmptblDOT([dotTxt, dotPwd, dotTxa]);
dcMcr.setCmptblDOT([dotChk, dotSlm]);
dcBss.setCmptblDOT([dotFrm, dotTxt, dotPwd, dotTxa]);
dcTrm.setCmptblDOT([dotFrm, dotTxt, dotPwd, dotTxa]);
dcSif.setCmptblDOT([dotTxt, dotPwd]);
dcRqd.setAllAttrsACA([ca_sMr]);
dcDec.setAllAttrsACA([ca_sMtd]);
dcEml.setAllAttrsACA([ca_sMte]);
dcInt.setAllAttrsACA([ca_sMti]);
dcLen.setAllAttrsACA([ca_sMbl]);
dcMcr.setAllAttrsACA([ca_sMmcr]);
dcBss.setAllAttrsACA([ca_asGbss, ca_bsNbss, ca_asBss, ca_sMbss]);
dcTrm.setAllAttrsACA([ca_bsGts, ca_bsDts, ca_bsTs]);
var aSifAttrs = [];
for(var i = 13; i < aATTR2C.length; i++) {
aSifAttrs[aSifAttrs.length] = aATTR2C[i].ca;
}
dcSif.setAllAttrsACA(aSifAttrs);
dotFrm.setCmptblDC([dcBss, dcTrm]);
dotTxt.setCmptblDC([dcRqd, dcDec, dcEml, dcInt, dcLen, dcBss, dcTrm, dcSif]);
dotPwd.setCmptblDC([dcRqd, dcDec, dcEml, dcInt, dcLen, dcBss, dcTrm, dcSif]);
dotTxa.setCmptblDC([dcRqd, dcLen, dcBss, dcTrm]);
dotRdo.setCmptblDC([dcRqd]);
dotSl1.setCmptblDC([dcRqd]);
dotChk.setCmptblDC([dcRqd, dcMcr]);
dotSlm.setCmptblDC([dcRqd, dcMcr]);
function getAllDCIdx(s_callingFunc, s_dc3Abrv, b_crshIfNotFound) {
ciMissing(getAllDCIdx, "getAllDCIdx (ERRCHK)", "s_callingFunc", s_callingFunc);
ciMissing(getAllDCIdx, "getAllDCIdx (ERRCHK)", "s_dc3Abrv", s_dc3Abrv);
ciMissing(getAllDCIdx, "getAllDCIdx (ERRCHK)", "b_crshIfNotFound", b_crshIfNotFound);
for(var i = 0; i < aDOC_C.length; i++) {
if(s_dc3Abrv == aDOC_C[i].s3Abrv) {
return i;
}
}
if(b_crshIfNotFound) { //ERRCHK
crsh("gadci1", this.getAllDCIdx, s_callingFunc + " (ERRCHK) (b_crshIfNotFound=true): Unknown s_dc3Abrv: '" + s_dc3Abrv + "'.");
} //ERRCHK
return -1;
}
function getAllA2CIdx(s_callingFunc, s_attribute, b_crshIfNotFound) {
ciMissing(getAllA2CIdx, "getAllA2CIdx (ERRCHK)", "s_callingFunc", s_callingFunc);
ciMissing(getAllA2CIdx, "getAllA2CIdx (ERRCHK)", "s_attribute", s_attribute);
ciMissing(getAllA2CIdx, "getAllA2CIdx (ERRCHK)", "b_crshIfNotFound", b_crshIfNotFound);
for(var i = 0; i < aATTR2C.length; i++) {
if(s_attribute == aATTR2C[i].ca.sNm) {
return i;
}
}
if(b_crshIfNotFound) { //ERRCHK
crsh("gadci1", this.getAllA2CIdx, s_callingFunc + " (ERRCHK) (b_crshIfNotFound=true): Unknown s_attribute: '" + s_attribute + "'.");
} //ERRCHK
return -1;
}
function getAllDOTIdx(s_callingFunc, s_dot3Abrv, b_crshIfNotFound) {
ciMissing(getAllDOTIdx, "getAllDOTIdx (ERRCHK)", "s_callingFunc", s_callingFunc);
ciMissing(getAllDOTIdx, "getAllDOTIdx (ERRCHK)", "s_dot3Abrv", s_dot3Abrv);
ciMissing(getAllDOTIdx, "getAllDOTIdx (ERRCHK)", "b_crshIfNotFound", b_crshIfNotFound);
for(var i = 0; i < aDOC_OT.length; i++) {
if(s_dot3Abrv == aDOC_OT[i].s3Abrv) {
return i;
}
}
if(b_crshIfNotFound) { //ERRCHK
crsh("gadoti1", getAllDOTIdx, s_callingFunc + " (ERRCHK, b_crshIfNotFound=true): Unknown s_dot3Abrv: '" + s_dot3Abrv + "'.");
} //ERRCHK
return -1;
}
function getDOT3AbrvFromName(s_callingFunc, s_objType) {
for(var i = 0; i < aDOC_OT.length; i++) {
if(s_objType == aDOC_OT[i].cot.sNm) {
return aDOC_OT[i].s3Abrv;
}
}
crsh("gtod3afn", getDOT3AbrvFromName, s_callingFunc + " (ERRCHK): Unknown s_objType: '" + s_objType + "'.");
}
function Attr2Concept(cmptbl_attribute) {
ciMissing(Attr2Concept, "Attr2Concept (ERRCHK)", "cmptbl_attribute", cmptbl_attribute);
if(cmptbl_attribute.bOTorA) { //ERRCHK
crsh("da1", Attr2Concept, "Attr2Concept (ERRCHK): cmptbl_attribute is not an attribute cmptbl_attribute.sNm='" + cmptbl_attribute.sNm + "'");
} //ERRCHK
//Basic info
this.ca = cmptbl_attribute;
this.docConcept;
//Functions
this.setDC = pb_setDC;
}
function pb_setDC(doc_concept) {
ciMissing("da.sdc", this.setDC, "setDC (ERRCHK)", "doc_concept", doc_concept);
this.docConcept = doc_concept;
}