hi,
you can add a onchange event to your "decisional" field and call some stuff from following function set. e. g. var myFirstField = zmanFields("remove", 1, 2) to remove and save a field the specific field for later use or zmanFields("insert", 1, 2) to re-add it, or zmanFields("non-edit", 1, 2) to make it non-accessible and so on.
greetings, pacy
//////////////////////////////////////////////////////////////////////////
/////
///// zmanFields(keyword, row1, field1, row2, field2)
/////
///// keyword = "toggle"
///// row1 = row number of header of field 1
///// field1 = col number of header of field 1
///// row2 = row number of header of field 2
///// field2 = col number of header of field 2
/////
///// keyword = "remove"
///// row1 = row number of header of field to remove
///// field1 = col number of header of field to remove
///// returns an array of 2 DOM nodes:
///// array[0] = DOM node of removed header
///// array[1] = DOM node of removed field
/////
///// keyword = "insert"
///// row1 = row number of header of field to insert
///// field1 = col number of header of field to insert
///// row2 = DOM node of header to insert
///// field2 = DOM node of field to insert
/////
///// keyword = "non-edit"
///// row1 = row number of header of field to disable
///// field1 = col number of header of field to disable
/////
///// keyword = "edit"
///// row1 = row number of header of field to enable
///// field1 = col number of header of field to enable
/////
///// mho * mbs * 30.04.2010
//////////////////////////////////////////////////////////////////////////
function zmanFields(keyword, row1, field1, row2, field2) {
saveHdr1 = new Object();
saveHdr2 = new Object();
saveCode1 = new Object();
saveCode1 = new Object();
tblRows = new Array();
// table. body. tr.
tblRowCount = _dtl.currTblObj.children[0].children.length;
for (var i = 1; i <= tblRowCount; i++) {
tblRows[i] = _dtl.currTblObj.children[0].children[i - 1];
}
// toggle two fields position
if( keyword == "toggle") {
saveHdr1 = tblRows[row1].children[field1 - 1].cloneNode(true);
saveCode1 = tblRows[row1 + 1].children[field1 - 1].cloneNode(true);
saveHdr2 = tblRows[row2].children[field2 - 1].cloneNode(true);
saveCode2 = tblRows[row2 + 1].children[field2 - 1].cloneNode(true);
tblRows[row1].replaceChild(saveHdr1, tblRows[row1].children[field2 - 1]);
tblRows[row1 + 1].replaceChild(saveCode1, tblRows[row1 + 1].children[field2 - 1]);
tblRows[row2].replaceChild(saveHdr2, tblRows[row2].children[field1 - 1]);
tblRows[row2 + 1].replaceChild(saveCode2, tblRows[row2 + 1].children[field1 - 1]);
}
// remove a field
if( keyword == "remove") {
saveHdr1 = tblRows[row1].children[field1 - 1].cloneNode(true);
saveCode1 = tblRows[row1 + 1].children[field1 - 1].cloneNode(true);
tblRows[row1].removeChild(tblRows[row1].children[field1 - 1]);
tblRows[row1 + 1].removeChild(tblRows[row1 + 1].children[field1 - 1]);
returnObject = new Array(saveHdr1, saveCode1);
return returnObject;
}
// insert a field
if( keyword == "insert") {
tblRows[row1].insertBefore(row2, tblRows[row1].children[field1 - 1]);
tblRows[row1 + 1].insertBefore(field2, tblRows[row1 + 1].children[field1 - 1]);
}
// editmodes of a field
if( keyword == "non-edit" || keyword == "edit") {
if(_dtl.edit) {
var mode = (keyword == "non-edit") ? true : false;
if (navigator.appName == "Netscape")
tblRows[row1 + 1].children[field1 - 1].childNodes[1].disabled = mode;
else
tblRows[row1 + 1].children[field1 - 1].childNodes[1].previousSibling.disabled = mode;
}
}
}
var zsave_days = new Array();
var zsave_date = new Array();
function zremove_fields() {
zsave_days = zmanFields("remove", 1, 3);
zsave_date = zmanFields("remove", 1, 2);
if(_dtl.edit) {
if ( document.main_form.elements["SET.interval"].value == 60 ) {
zmanFields('insert', 1, 2, zsave_date[0], zsave_date[1]);
}
else {
zmanFields('insert', 1, 2, zsave_days[0], zsave_days[1]);
}
}
else {
if ( "$args.interval.sym" == "ONCE" ) {
zmanFields('insert', 1, 2, zsave_date[0], zsave_date[1]);
}
else {
zmanFields('insert', 1, 2, zsave_days[0], zsave_days[1]);
}
}
}
function ztoggle_fields() {
if ( document.main_form.elements["SET.interval"].value == 60 ) {
zsave_days = zmanFields("remove", 1, 2);
zmanFields('insert', 1, 2, zsave_date[0], zsave_date[1]);
}
else {
zsave_date = zmanFields("remove", 1, 2);
zmanFields('insert', 1, 2, zsave_days[0], zsave_days[1]);
}
}