//************************************************************************/ //** //** Copyright (C) 2001-2013 Trans-Mit Pty. Ltd. Melbourne Australia //** This software may not be loaned, resold, changed or copied //** in any way without the express written permission of author //** and Trans-Mit Pty. Ltd., Australia. //** //************************************************************************* //** //** $Header: /usr/local/lib/cake/RCS/rcshead,v 1.6 2000/01/24 01:16:29 root Exp $ //** $Author: root $ //** $Date: 2000/01/24 01:16:29 $ //** $Locker: $ //** //************************************************************************* //*/ //**Start Encode** // Globals var theTITLE = ""; var workfolder = ""; var xlsfilepath = ""; var csvfilepath = ""; var pictureurl = ""; var docurl = ""; var DOFF = 2; var NDROWS = 13 var ENQDAT_RECORDNOCOL = -1; var ENQDAT_CUSTOMIDCOL = -1; var RECORDNOCOL = -1; var SDATECOL = -1; var EDATECOL = -1; var UPDATEDCOL = -1; var EMAILCOL = -1; var PICTURECOL = -1; var DOCCOL = -1; var doinitialsrch = 0 var enqdat_loading = 1; var recfilt; var extrarecfilt = ""; var lastrecfilt = ""; var colfilt = new Array(); var savesrchinput = new Array(); var unisoactiverow = -1; var unisocurfld = -1; var unisoactiverecordNumber = -1;; var unisoactivepage = -1; var firsttime = 1; var got_enqdatconfig = 0; var mydonekey = 0; var activerow = 0; var activerecordNumber = 0; var go_activerecordNumber = 0; var activepage = 0; var go_activepage = 0; var curinput; var changes_made = 0; var lastfield; var reccountspoken = 0; var curpos = 0; var thisRecordNo = -1; var lastRecordNo = -1; var keysrch_thisRecordNo = -1; var key_exit = false; var select_on_focus = true var mgmsg = ""; var gmsg = ""; var gmsg1 = ""; var gmsg2 = ""; var gmsg3 = ""; var gmsg4 = ""; var gmsg5 = ""; var gmsg6 = ""; var gmsg7 = ""; var gmsg8 = ""; var gmsg9 = ""; var SPEECHSPEED_INC = 20; var SPEECHPITCH_INC = 30; var SPEECHPITCH_MIN = 30; var SPEECHPITCH_MAX = 300; var in_maint = 0; var in_modify = 0; var in_add = 0; var in_reassign = 0; var can_reassign = 0; var edate_before = ""; var enqdatupdcmd = "" var sayready = 0; var saydesconfocus = 0; var saytxtonfocus = 0; var acthasmsg = 0; var nflds = 0; var nhflds = 0; var ntexflds = 0; var maxtexorder = 0; var maxhfldgroup = 1; var curhfldgroup = 1; var curfld = 1; var have_TEXINFO = 0; var have_HFLDS = 0; var savemystatus = ""; var fld_datafld = new Array(); var fld_hdr = new Array(); var fld_len = new Array(); var fld_type = new Array(); var fld_extendedconfig_e = new Array(); var fld_extendedconfig_f = new Array(); var fld_extendedconfig_g = new Array(); var fld_casesensitive = new Array(); var fld_replink = new Array(); var fld_replinkparam_d = new Array(); var fld_viewonly = new Array(); var fld_disabled = new Array(); var fld_maintexclude = new Array(); var fld_hotkey = new Array(); var fld_desc = new Array(); var fld_cell = new Array(); var fld_label = new Array(); var fld_skip = new Array(); var fld_span = new Array(); var fld_group = new Array(); var fld_display = new Array(); var fld_hidden = new Array(); var fld_order = new Array(); var fld_validate = new Array(); var fld_validate_required_constraint = new Array(); var fld_validate_comparison_constraint = new Array(); var fld_validate_CC = new Array(); var fld_validate_allownew = new Array(); var fld_validate_customid = new Array(); var fld_validate_fldidref = new Array(); var fld_validate_p = new Array(); var fld_validate_ref1 = new Array(); var fld_validate_ref2 = new Array(); var fld_validate_ref3 = new Array(); var fld_validate_picklist_valid = new Array(); var fld_validate_picklist_vals = new Array(); var fld_validate_SQLpicklist_vals_to_desc = new Array(); var fld_validate_picklist_setup = new Array() var fld_validate_date_setup = new Array() var fld_validate_GroupID_setup = new Array() var done_historic_changes_in_save_alert = false var fld_has_changed = new Array() var fld_val_since_last = new Array() var do_refresh_after_save = false var get_custompicklist_recs = 1 var custompicklist_recs = new Array() var get_SQLpicklist_recs = new Array() var SQLpicklist_recs = new Array() var get_SELFpicklist_recs = new Array() var SELFpicklist_recs = new Array() var fld_hfld = new Array(); var hfld_fld = new Array(); var msg_fld = new Array(); var msglines = 0; var tex_order = new Array(); var now = new Date() var ExcelApp; var kickoff_isdone = 1; var TTSON = 0; var saymsgwhenisolate = 0; var saydesconhotkey = 0; var ttsidx = 1; var max_ttsidx = 1; var parentid_fld = 0 var extngrpid_fld = 0 var extn_fld = 0 // SPECIAL key codes var BS_KEYCODE = 8; var TAB_KEYCODE = 9; var ENTER_KEYCODE = 13; var SHIFT_KEYCODE = 16; var CTRL_KEYCODE = 17; var ALT_KEYCODE = 18; var PAUSE_KEYCODE = 19; var ESC_KEYCODE = 27; var DOUBLEQUOTE_KEYCODE = 34; var PAGEUP_KEYCODE = 33; var PAGEDOWN_KEYCODE = 34; var END_KEYCODE = 35; var HOME_KEYCODE = 36; var LEFTARROW_KEYCODE = 37; var UPARROW_KEYCODE = 38; var RIGHTARROW_KEYCODE = 39; var DOWNARROW_KEYCODE = 40; var INSERT_KEYCODE = 45; var DELETE_KEYCODE = 45; var DIG0_KEYCODE = 48; var DIG1_KEYCODE = 49; var DIG2_KEYCODE = 50; var DIG3_KEYCODE = 51; var DIG4_KEYCODE = 52; var DIG5_KEYCODE = 53; var DIG6_KEYCODE = 54; var DIG7_KEYCODE = 55; var DIG8_KEYCODE = 56; var DIG9_KEYCODE = 57; var KEYPAD0_KEYCODE = 96; var KEYPAD1_KEYCODE = 97; var KEYPAD2_KEYCODE = 98; var KEYPAD3_KEYCODE = 99; var KEYPAD4_KEYCODE = 100; var KEYPAD5_KEYCODE = 101; var KEYPAD6_KEYCODE = 102; var KEYPAD7_KEYCODE = 103; var KEYPAD8_KEYCODE = 104; var KEYPAD9_KEYCODE = 105; var KEYPADASTERIX_KEYCODE = 106; var KEYPADPLUS_KEYCODE = 107; var KEYPADDASH_KEYCODE = 109; var KEYPADDOT_KEYCODE = 110; var KEYPADSLASH_KEYCODE = 111; var F1_KEYCODE = 112; var F2_KEYCODE = 113; var F3_KEYCODE = 114; var F4_KEYCODE = 115; var F5_KEYCODE = 116; // F5 - Reserverd for REFRESH var F6_KEYCODE = 117; var F7_KEYCODE = 118; var F8_KEYCODE = 119; var F9_KEYCODE = 120; var F10_KEYCODE = 121; var F11_KEYCODE = 122; var F12_KEYCODE = 123; var NUNLOCK_KEYCODE = 144; var SCROLLLOCK_KEYCODE = 145; var SLASH_KEYCODE = 191; // Define feature code var CLEARFIELD = 1; var CLEARALL = 2; var PAGEUP = 3; var PAGEDOWN = 4; var FIRSTPAGE = 5; var LASTPAGE = 6; var UPACTIVEROW = 7; var DOWNACTIVEROW = 8; var PREVIOUSFIELD = 9; var NEXTFIELD = 10; var SHOWMSG = 11; var OPENEMAILAPP = 12; var OPENDOCURL = 13; var GOFIELD1 = 14; var GOFIELD2 = 15; var GOFIELD3 = 16; var SPEAKCURRENT = 17; var SPELLCURRENT = 18; var FASTERSPEECH = 19; var SLOWERSPEECH = 20; var NEXTSPEAKER = 21; var ABOUTSPEECH = 22; var PREVIOUSSPEAKER = 23; var PITCHUP = 24; var PITCHDOWN = 25; var CPLSPEECH = 26; var SPEECHONOFF = 27; var SAYMSGWHENISOLATEONOFF = 28; var SAYDESCONHOTKEYONOFF = 29; var SPEECHDICTIONARY = 30; var SHOWHELP = 31; var XLEDITDATA = 32; var ISOLATEREC = 33; var UNISOLATE = 34; var HFLDSLEFT = 35; var HFLDSRIGHT = 36; var SAYRECORDCOUNT = 37; var SAYMSGLINE1 = 41; var SAYMSGLINE2 = 42; var SAYMSGLINE3 = 43; var SAYMSGLINE4 = 44; var SAYMSGLINE5 = 45; var SAYMSGLINE6 = 46; var SAYMSGLINE7 = 47; var SAYMSGLINE8 = 48; var SAYMSGLINE9 = 49; var ISOLATE_0 = 50; var ISOLATE_1 = 51; var ISOLATE_2 = 52; var ISOLATE_3 = 53; var ISOLATE_4 = 54; var ISOLATE_5 = 55; var ISOLATE_6 = 56; var ISOLATE_7 = 57; var ISOLATE_8 = 58; var ISOLATE_9 = 59; var ISOLATE_10 = 60; var ISOLATE_11 = 61; var ISOLATE_12 = 62; var SHOW_HFLD_GROUP_0 = 70; var SHOW_PICKLIST = 71; var TOGGLE_STATUS_LOG = 100; var MAINT_MODIFY = 101; var MAINT_ADD = 102; var MAINT_DELETE = 103; var MAINT_REASSIGN = 104; var MAINT_CANCEL = 110; var MAINT_UNDO = 111; var MAINT_SAVE = 112; var CUSTOM_HOTKEY = 200; var OUTPUT = 201; var EXPORT = 202; //------------------------------ // masking for keycodes var KEY_MASK = 65535; var KEY_SHIFT = 1 * KEY_MASK; var KEY_CTRL = 2 * KEY_MASK; var KEY_ALT = 4 * KEY_MASK; //------------------------------ // define key map var keycodemap = new Array(); keycodemap[CLEARFIELD] = ENTER_KEYCODE; keycodemap[CLEARALL] = ESC_KEYCODE; keycodemap[PAGEUP] = PAGEUP_KEYCODE; keycodemap[PAGEDOWN] = PAGEDOWN_KEYCODE; keycodemap[FIRSTPAGE] = HOME_KEYCODE + KEY_CTRL; keycodemap[LASTPAGE] = END_KEYCODE + KEY_CTRL; keycodemap[UPACTIVEROW] = UPARROW_KEYCODE; keycodemap[DOWNACTIVEROW] = DOWNARROW_KEYCODE; keycodemap[PREVIOUSFIELD] = LEFTARROW_KEYCODE + KEY_ALT; keycodemap[NEXTFIELD] = RIGHTARROW_KEYCODE + KEY_ALT; keycodemap[SHOWMSG] = F10_KEYCODE; keycodemap[OPENEMAILAPP] = F11_KEYCODE; keycodemap[OPENDOCURL] = F11_KEYCODE + KEY_ALT; keycodemap[GOFIELD1] = F1_KEYCODE + (gofieldFKEYSwithALT ? KEY_ALT : 0); keycodemap[GOFIELD2] = F2_KEYCODE + (gofieldFKEYSwithALT ? KEY_ALT : 0); keycodemap[GOFIELD3] = F3_KEYCODE + (gofieldFKEYSwithALT ? KEY_ALT : 0); keycodemap[SPEAKCURRENT] = F6_KEYCODE; keycodemap[SPELLCURRENT] = F4_KEYCODE; keycodemap[CPLSPEECH] = F12_KEYCODE + KEY_ALT; keycodemap[SPEECHONOFF] = F12_KEYCODE + KEY_SHIFT; keycodemap[SAYMSGWHENISOLATEONOFF] = F10_KEYCODE + KEY_SHIFT; keycodemap[SAYDESCONHOTKEYONOFF] = F6_KEYCODE + KEY_SHIFT; keycodemap[FASTERSPEECH] = F7_KEYCODE; keycodemap[SLOWERSPEECH] = F7_KEYCODE + KEY_SHIFT; keycodemap[PITCHUP] = F8_KEYCODE; keycodemap[PITCHDOWN] = F8_KEYCODE + KEY_SHIFT; keycodemap[ABOUTSPEECH] = F9_KEYCODE + KEY_CTRL; keycodemap[NEXTSPEAKER] = F9_KEYCODE; keycodemap[PREVIOUSSPEAKER] = F9_KEYCODE + KEY_SHIFT; keycodemap[SPEECHDICTIONARY] = F9_KEYCODE + KEY_ALT; keycodemap[SHOWHELP] = F1_KEYCODE + KEY_CTRL; keycodemap[XLEDITDATA] = F12_KEYCODE; keycodemap[ISOLATEREC] = UPARROW_KEYCODE + KEY_CTRL; keycodemap[UNISOLATE] = DOWNARROW_KEYCODE + KEY_CTRL; keycodemap[HFLDSLEFT] = LEFTARROW_KEYCODE + KEY_CTRL; keycodemap[HFLDSRIGHT] = RIGHTARROW_KEYCODE + KEY_CTRL; keycodemap[SAYRECORDCOUNT] = HOME_KEYCODE + KEY_SHIFT; keycodemap[SAYMSGLINE1] = DIG1_KEYCODE + KEY_ALT; keycodemap[SAYMSGLINE2] = DIG2_KEYCODE + KEY_ALT; keycodemap[SAYMSGLINE3] = DIG3_KEYCODE + KEY_ALT; keycodemap[SAYMSGLINE4] = DIG4_KEYCODE + KEY_ALT; keycodemap[SAYMSGLINE5] = DIG5_KEYCODE + KEY_ALT; keycodemap[SAYMSGLINE6] = DIG6_KEYCODE + KEY_ALT; keycodemap[SAYMSGLINE7] = DIG7_KEYCODE + KEY_ALT; keycodemap[SAYMSGLINE8] = DIG8_KEYCODE + KEY_ALT; keycodemap[SAYMSGLINE9] = DIG9_KEYCODE + KEY_ALT; keycodemap[ISOLATE_0] = KEYPAD0_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_1] = KEYPAD1_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_2] = KEYPAD2_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_3] = KEYPAD3_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_4] = KEYPAD4_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_5] = KEYPAD5_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_6] = KEYPAD6_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_7] = KEYPAD7_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_8] = KEYPAD8_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_9] = KEYPAD9_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_10] = KEYPADDASH_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_11] = KEYPADPLUS_KEYCODE + KEY_CTRL; keycodemap[ISOLATE_12] = KEYPADDOT_KEYCODE + KEY_CTRL; keycodemap[MAINT_MODIFY] = F2_KEYCODE + KEY_CTRL; keycodemap[MAINT_ADD] = F3_KEYCODE + KEY_CTRL; keycodemap[MAINT_DELETE] = F4_KEYCODE + KEY_CTRL; keycodemap[MAINT_REASSIGN] = F5_KEYCODE + KEY_CTRL; keycodemap[MAINT_CANCEL] = F6_KEYCODE + KEY_CTRL; keycodemap[MAINT_UNDO] = F7_KEYCODE + KEY_CTRL; keycodemap[MAINT_SAVE] = F8_KEYCODE + KEY_CTRL; keycodemap[OUTPUT] = F7_KEYCODE + KEY_ALT; keycodemap[EXPORT] = F7_KEYCODE + KEY_SHIFT + KEY_ALT; keycodemap[CUSTOM_HOTKEY] = F8_KEYCODE + KEY_ALT; keycodemap[SHOW_HFLD_GROUP_0] = F7_KEYCODE + KEY_CTRL + KEY_ALT; keycodemap[TOGGLE_STATUS_LOG] = F8_KEYCODE + KEY_CTRL + KEY_ALT; keycodemap[SHOW_PICKLIST] = DOWNARROW_KEYCODE + KEY_ALT; // ------------------------------------- window.status = "Loading Please Wait..." theTITLE = document.title //document.title = window.status = theTITLE + " - " + window.status; // ------------------------------------- // ------------------------------------- // set local var from external val in config var l_t21servercontrol_url try { l_t21servercontrol_url = t21servercontrol_url } catch(exccode) { l_t21servercontrol_url = "" } var l_custom_initT21Enquiry try { l_custom_initT21Enquiry = custom_initT21Enquiry } catch(exccode) { l_custom_initT21Enquiry = function () {} } var l_custom_enqdatconfig try { l_custom_enqdatconfig = custom_enqdatconfig } catch(exccode) { l_custom_enqdatconfig = function () {} } var l_force_reload try { l_force_reload = force_reload } catch(exccode) { l_force_reload = 0 } var l_force_reload_secs_after_key try { l_force_reload_secs_after_key = force_reload_secs_after_key } catch(exccode) { l_force_reload_secs_after_key = 30 } var l_enableprogressbar try { l_enableprogressbar = enableprogressbar } catch(exccode) { l_enableprogressbar = 0 } var l_recordno_desc = "" try { l_recordno_desc = recordno_desc } catch(exccode) { l_recordno_desc = "RecordNo"; } var l_maintobjectfield = "" try { l_maintobjectfield = maintobjectfield } catch(exccode) { l_maintobjectfield = 0; } var l_defaultsrchval = new Array() try { l_defaultsrchval = defaultsrchval } catch(exccode) { ; } var l_initialsrchval = new Array() try { l_initialsrchval = initialsrchval } catch(exccode) { ; } var l_initial_reassign = new Array() try { l_initial_reassign = initial_reassign } catch(exccode) { l_initial_reassign = false; } var l_domaint try { l_domaint = domaint } catch(exccode) { l_domaint = 0 } var l_mainttable try { l_mainttable = mainttable } catch(exccode) { l_mainttable = "" } var l_maint_entry_exists_SQLwhere try { l_maint_entry_exists_SQLwhere = maint_entry_exists_SQLwhere } catch(exccode) { l_maint_entry_exists_SQLwhere = "" } var l_maint_historic_overlaps_SQLwhere try { l_maint_historic_overlaps_SQLwhere = maint_historic_overlaps_SQLwhere } catch(exccode) { l_maint_historic_overlaps_SQLwhere = "" } var l_maint_current_overlaps_SQLwhere try { l_maint_current_overlaps_SQLwhere = maint_current_overlaps_SQLwhere } catch(exccode) { l_maint_current_overlaps_SQLwhere = "" } var l_clearbeforereassign try { l_clearbeforereassign = clearbeforereassign } catch(exccode) { l_clearbeforereassign = true } var l_recordno_is_rowid try { l_recordno_is_rowid = recordno_is_rowid } catch(exccode) { l_recordno_is_rowid = 0 } var l_maintbuttons_pos try { l_maintbuttons_pos = maintbuttons_pos } catch(exccode) { l_maintbuttons_pos = 0 } // copy up default to on if speech enabled // (speech leters in search fiels useing left/right arrow) var l_copyupdata try { l_copyupdata = copyupdata } catch(exccode) { l_copyupdata = dospeech } var l_html_before_maintbuttons try { l_html_before_maintbuttons = html_before_maintbuttons } catch(exccode) { l_html_before_maintbuttons = "" } var l_t21message_desc try { l_t21message_desc = t21message_desc } catch(exccode) { l_t21message_desc = "" } if ( l_t21message_desc.length <= 0 ) // set deafult l_t21message_desc = "Message" var l_audittrail try { l_audittrail = audittrail } catch(exccode) { l_audittrail = false } var l_custombuttons try { l_custombuttons = custombuttons } catch(exccode) { l_custombuttons = null } var l_outputbutton try { l_outputbutton = outputbutton } catch(exccode) { l_outputbutton = 0 } var l_output_style try { l_output_style = output_style } catch(exccode) { l_output_style = "" } var l_output_field_order = new Array() try { l_output_field_order = output_field_order } catch(exccode) { } // see initT21enquiry for deafult var l_exportbutton try { l_exportbutton = exportbutton } catch(exccode) { l_exportbutton = 0 } var l_customexportstart try { l_customexportstart = customexportstart } catch(exccode) { l_customexportstart = null } var l_customexportfilter try { l_customexportfilter = customexportfilter } catch(exccode) { l_customexportfilter = null } var l_firstlastpage_buttons try { l_firstlastpage_buttons = firstlastpage_buttons } catch(exccode) { l_firstlastpage_buttons = 1 } var l_searchwithin try { l_searchwithin = searchwithin } catch(exccode) { l_searchwithin = 0 } var l_helpbutton try { l_helpbutton = helpbutton } catch(exccode) { l_helpbutton = 1 } var l_exitbutton try { l_exitbutton = exitbutton } catch(exccode) { l_exitbutton = 0 } var l_no_control_buttons try { l_no_control_buttons = no_control_buttons } catch(exccode) { l_no_control_buttons = 0 } var l_gap_after_buttons try { l_gap_after_buttons = gap_after_buttons } catch(exccode) { l_gap_after_buttons = 5 } var l_banner_params try { l_banner_params = banner_params } catch(exccode) { l_banner_params = "height='60'" } var l_gap_before_TEX try { l_gap_before_TEX = gap_before_TEX } catch(exccode) { l_gap_before_TEX = 5 } var l_msgline_length try { l_msgline_length = msgline_length } catch(exccode) { l_msgline_length = 55 } var l_rowselect try { l_rowselect = rowselect } catch(exccode) { l_rowselect = function () {} } var l_custom_on_set_maint try { l_custom_on_set_maint = custom_on_set_maint } catch(exccode) { l_custom_on_set_maint = function () {} } var l_custom_record_terminated try { l_custom_record_terminated = custom_record_terminated } catch(exccode) { l_custom_record_terminated = function () {} } var l_custom_set_hidden_from_direnq try { l_custom_set_hidden_from_direnq = custom_set_hidden_from_direnq } catch(exccode) { l_custom_set_hidden_from_direnq = function () {} } var l_custom_get_name try { l_custom_get_name = custom_get_name } catch(exccode) { l_custom_get_name = function (rs_src) { return "" } } var l_gofield1 try { l_gofield1 = gofield1 } catch(exccode) { l_gofield1 = 1 } var l_gofield2 try { l_gofield2 = gofield2 } catch(exccode) { l_gofield2 = 2 } var l_gofield3 try { l_gofield3 = gofield3 } catch(exccode) { l_gofield3 = 3 } var l_ctrlentertoclearfield try { l_ctrlentertoclearfield = ctrlentertoclearfield } catch(exccode) { l_ctrlentertoclearfield = false } var l_picturewidth try { l_picturewidth = picturewidth } catch(exccode) { l_picturewidth = "120px" } var l_local_status_display try { l_local_status_display = local_status_display } catch(exccode) { l_local_status_display = 0 } // ------------------------------------- // ------------------------------------- function setsrchfld(fld, rel) { while ( 1 ) { // handle relative set field if ( rel < 0 ) { fld = fld + rel if ( fld < 1 || fld > nflds ) { // move to Msg ( unless we were in Msg) if ( fld != -2 && in_maint && msglines > 0 ) { fld = -1 myMsg.blur(); myMsg.focus(); return } else { // move to last fld = nflds; } } } if ( rel > 0 ) { fld = fld + rel if ( fld < 1 || fld > nflds ) { // move to Msg ( unless we were in Msg) if ( fld != 0 && in_maint && msglines > 0 ) { fld = -1 myMsg.blur(); myMsg.focus(); return } else { // move to first fld = 1; } } } // check for NON focus-able Fields // (ie. NOT srch and NOT hfld and NOT TEX) // or hidden (hfld group 0) // or disabled // or (viewonly and in_maint) if ( ((fld_type[fld] & 8) == 0 && (fld_type[fld] & 4) == 0 && (fld_type[fld] & 2) == 0) || fld_group[fld] == 0 /* hidden */ || fld_disabled[fld] == 1 /* disabled */ || (fld_viewonly[fld] == 1 && in_maint) /* viewonly */ ) { if ( rel < 0 || rel > 0 ) { //alert("NON display fld = " + fld + " desc = " + fld_desc[fld]) continue } else { return } } // if HFLD then set correct hfld group if ( (fld_type[fld] & 4) && curhfldgroup != fld_group[fld] ) { curhfldgroup = fld_group[fld] show_hfldgroup(curhfldgroup) } // check TEX field if ( fld_type[fld] & 2 ) { // single isolated record (ie. TEXINFO displayed) if (enqdat.Recordset.RecordCount == 1) { if ( (fld_type[fld] & 8) == 0 ) { //show_status( " move to TEX only field fld = " + fld + " desc = " + fld_desc[fld]) // move to TEX only field var newfield = eval("TEXfld" + fld); if ( rel == 0 ) newfield.blur(); newfield.focus(); return } } else { // TEXINFO not shown // check for TEX only field if ( (fld_type[fld] & 8) == 0 ) { if ( rel < 0 || rel > 0 ) { //alert("TEX Only fld = " + fld + " desc = " + fld_desc[fld]) continue } else { return } } } } //show_status( " move to field fld = " + fld + " desc = " + fld_desc[fld]) //alert( " move to field fld = " + fld + " desc = " + fld_desc[fld]) // move to field var srchfld = eval("srchfld" + fld) //if ( rel == 0 ) // srchfld.blur(); // note: must always force focus // to run on focus to test prevfied changed // and to set new curfld and curinput srchfld.blur(); srchfld.focus(); break; } } // ------------------------------------- function initT21Enquiry() { //alert("initT21Enquiry()"); // render enquiry not complete yet if ( typeof(mystatus) == "undefined" ) { // come back in a short while setTimeout('initT21Enquiry()', 5000, "JavaScript"); return } if ( xlsfile != "" ) { var fso; fso = new ActiveXObject("Scripting.FileSystemObject"); // get current working folder workfolder = fso.GetFolder(".\\"); } //alert("workfolder=" + workfolder); if ( xlsfolder == "" ) xlsfilepath = workfolder + "\\" + xlsfile; else xlsfilepath = xlsfolder + "\\" + xlsfile; //alert("xlsfolder=" + xlsfolder + " xlsfile=" + xlsfile + " xlsfilepath=" + xlsfilepath); if ( csvfolder == "" ) csvfilepath = workfolder + "\\" + csvfile; else csvfilepath = csvfolder + "\\" + csvfile; //alert("csvfolder=" + csvfolder + " csvfile=" + csvfile + " csvfilepath=" + csvfilepath); // require Ctrl-Enter to Clear Field if ( l_ctrlentertoclearfield ) { keycodemap[CLEARFIELD] = ENTER_KEYCODE + KEY_CTRL; } // xyzzy // prebuild cached picklists //fld_VALIDATE_build_options(-1,0); for ( var fld=1; fld < nflds; ++fld ) { switch ( fld_validate[fld] ) { case 21: // SELFpicklist case 3: // SQLpicklist // cached picklist if ( !(fld_validate_required_constraint[fld] & 8) ) { fld_VALIDATE_addoptions(fld,0) } break; } } if ( l_domaint ) { if ( l_mainttable.length <= 0 ) { alert("ERROR: mainttable not specified.") } if ( ENQDAT_CUSTOMIDCOL >= 0 && (typeof(customid) == "undefined" || customid.length <= 0)) { alert("ERROR: CustomID col. exists but var customid is NOT set.") } init_changes_vars() } // curfld is -1 when in message // set this so message input is casesensitive fld_casesensitive[-1] = 1 // call custom init l_custom_initT21Enquiry() if ( document.all.but_showhelp ) document.all.but_showhelp.disabled = false if ( document.all.but_clearall ) document.all.but_clearall.disabled = false if ( document.all.but_clearfield ) document.all.but_clearfield.disabled = false if ( t21mailtobutton && t21mailto != "" ) { document.all.but_t21mailto.disabled = false; } if ( l_exitbutton && document.all.but_exit ) document.all.but_exit.disabled = false; if ( have_HFLDS ) { if ( document.all.but_hflds_left ) document.all.but_hflds_left.disabled = false; if ( document.all.but_hflds_right ) document.all.but_hflds_right.disabled = false; } if ( dospeech ) { TTSON = getCookie("TTSON") //alert("TTSON=[" + TTSON + "]"); if (TTSON == null ) TTSON = 0 else TTSON = parseInt(TTSON) //alert("TTSON=[" + TTSON + "]"); } if ( dospeech ) { saymsgwhenisolate = getCookie("saymsgwhenisolate") //alert("saymsgwhenisolate=[" + saymsgwhenisolate + "]"); if (saymsgwhenisolate == null ) saymsgwhenisolate = 1 else saymsgwhenisolate = parseInt(saymsgwhenisolate) //alert("saymsgwhenisolate=[" + saymsgwhenisolate + "]"); saydesconhotkey = getCookie("saydesconhotkey") //alert("saydesconhotkey=[" + saydesconhotkey + "]"); if (saydesconhotkey == null ) saydesconhotkey = 1 else saydesconhotkey = parseInt(saydesconhotkey) //alert("saydesconhotkey=[" + saydesconhotkey + "]"); } init_tts(); clearall(0,1); saydesconfocus = 1; saytxtonfocus = 1; firsttime = 0; //SPK //mysay(theTITLE + " Ready."); //mysay("Ready."); //waitspeaking(); // ZZZZ //dumpobj( window ); //drows.onblur = blurT21Enquiry(); //window.onblur = blurT21Enquiry(); //document.onfocusout = blurT21Enquiry(); //document.ondeactivate = blurT21Enquiry(); //window.onfocus = focusT21Enquiry(); // set default output field order if not deafined if ( l_output_field_order.length <= 0 ) { for (var ni=0; ni < enqdat.Recordset.Fields.Count; ni++) { l_output_field_order[ni] = ni } } // kick off async server control if configured if ( l_t21servercontrol_url != "" ) { //servercontrol(l_t21servercontrol_url) // give enqdat time to load setTimeout('servercontrol("' + l_t21servercontrol_url + '")', 5000, "JavaScript"); } // kick off alarm timeout my_alarm() for ( var i in l_initialsrchval ) { if ( fld_desc[i] == l_recordno_desc ) { // recordno search keysrch_thisRecordNo = l_initialsrchval[i] doinitialsrch = 1 continue } // if is srchfld if (fld_type[i] & 8) { // is a srch field var srchfld = eval("srchfld" + i) srchfld.value = l_initialsrchval[i] doinitialsrch = 1 } } if ( doinitialsrch == 1 ) { keySrchCol() } show_status("Ready."); clear_enqdat_loading(); curinput.blur(); curinput.focus(); } // ------------------------------------- var my_alarm_key_downcount = -1; var my_alarm_reload_downcount = -1 function my_alarm() { //if ( my_alarm_key_downcount >= 0 ) --my_alarm_key_downcount if ( my_alarm_key_downcount == 0 ) { //alert("my_alarm()") // only search if XXX ms since last keystroke if ( !in_maint) keySrchCol(); } // force data reload every l_force_reload minutes if ( my_alarm_reload_downcount > 0 ) --my_alarm_reload_downcount if ( l_force_reload > 0 ) { if ( my_alarm_reload_downcount < 0 ) { my_alarm_reload_downcount = l_force_reload * 10 * 60 } if ( my_alarm_reload_downcount == 0 ) { // must be at least 30 secs after last key press var ms_after_key = 10 * l_force_reload_secs_after_key if ( my_alarm_key_downcount < (-1 * ms_after_key) ) { my_alarm_reload_downcount = -1 //enqdat.DataURL = enqdat.DataURL; //enqdat.Reset(); reload_enqdat() } } } setTimeout(' my_alarm(); ', 100, "JavaScript"); } // ------------------------------------- function hflds_left() { //alert("hflds_left()"); if ( !have_HFLDS ) { curinput.focus(); return } if ( --curhfldgroup < 1 ) curhfldgroup = maxhfldgroup show_hfldgroup(curhfldgroup) //curinput.focus(); } function hflds_right() { //alert("hflds_right()"); if ( !have_HFLDS ) { curinput.focus(); return } var i = 1 if ( ++curhfldgroup > maxhfldgroup ) curhfldgroup = 1 show_hfldgroup(curhfldgroup) //curinput.focus(); } function show_hfldgroup(grp) { curhfldgroup = grp //alert("curhfldgroup = " + curhfldgroup) // hide all groups other than curhfldgroup var fst_new_hfld = -1 var curfld_was_hfld = 0 for ( var j = 1; j <= nhflds; ++j ) { var i = hfld_fld[j] if ( fld_group[i] == curhfldgroup ) { fld_display[i] = "" if ( fst_new_hfld == -1 ) fst_new_hfld = i } else { fld_display[i] = "none" if ( curfld == i ) curfld_was_hfld = 1 } //alert("curhfldgroup = " + curhfldgroup + " i = " + i + " >>>> " + fld_datafld[i] + " group = " + fld_group[i] + " display = [" + fld_display[i] + "]") set_hfld(i) } //if ( curfld_was_hfld ) { // move to first hfld // curfld = fst_new_hfld // setsrchfld(curfld,0) //} if ( curfld_was_hfld && fst_new_hfld >= 0 ) { // move to first hfld setsrchfld(fst_new_hfld,0) } } function set_hfld(j) { if ( !have_HFLDS ) return if ( !(fld_type[j] & 4) ) // not hfld return //alert("set_hfld(" + j + ")" + " fld_datafld[" + j + "] = " + fld_datafld[j] + " fld_display[" + j + "] = [" + fld_display[j] + "]") // ZZZZZ // check if hiding current field and if so move to startfld if ( j == curfld && fld_display[j] == "none" ) { setsrchfld(startfld,0) } eval("hdr_hfld" + j + ".style.display='" + fld_display[j] + "'") eval("inp_hfld" + j + ".style.display='" + fld_display[j] + "'") for ( var i=DOFF; i < drows.rows.length; ++i) { //alert(" dumpobj drows i = " + i + " j = " + j + " fld_cell[j] = " + fld_cell[j]) cellobj = drows.rows[i].cells[fld_cell[j]] //dumpobj(cellobj) //alert(" nodeName = " + cellobj.nodeName) //alert(" outerText = " + cellobj.outerText) cellobj.style.display = fld_display[j]; } } // ------------------------------------- function focusT21Enquiry() { //alert("focusblurT21Enquiry()"); // got focus window.status = "got focus"; } function blurT21Enquiry() { //alert("blurT21Enquiry()"); // losing focus //show_status("lost focus"); stopspeaking(); } // ------------------------------------- function do_ondatasetchanged() { //alert("event ondatasetchanged"); // init reload counter } function do_ondataavailable() { //alert("event ondataavailable"); } function do_ondatasetcomplete() { //alert("event ondatasetcomplete"); get_enqdatconfig(); } // ------------------------------------- function setCookie(name, value, expires, path, domain, secure) { var curCookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "") document.cookie = curCookie } function getCookie(name) { var prefix = name + "=" var cookieStartIndex = document.cookie.indexOf(prefix) if (cookieStartIndex == -1) return null var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length) if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex)) } function deleteCookie(name, path, domain) { if (getCookie(name)) { document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT" } } function fixDate(date) { var base = new Date(0) var skew = base.getTime() if (skew > 0) date.setTime(date.getTime() - skew) } // ------------------------------------- function showhelp() { stopspeaking(); var helpmsg = "Help.\n\ Clear All\t\t - Escape. \t Clear Field\t - " + (l_ctrlentertoclearfield ? "Ctrl-" : "") + "Enter.\n\ Previous Page\t - Page Up. \t Next Page\t - Page Down.\n\ First Page\t - Ctrl-Home. \t Last Page\t - Ctrl-End.\n\ \n\ Previous Row\t - Up Arrow.\n\ Next Row\t\t - Down Arrow.\n\ \n\ Next Field\t - Tab or Alt-Right Arrow.\n\ Previous Field\t - Shift-Tab or Alt-Left Arrow.\n\ Show Picklist\t - Alt-Down Arrow. (Esc to Hide)\n\ \n\ Field Edit" helpmsg += dospeech ? " and Spell" : "" helpmsg += "\t- Left and Right Arrow, Home, End, Backspace, Delete\n\ \n" helpmsg += "\ Isolate Record \t- Ctrl-KeyPad #, Ctrl-Up Arrow, Left Mouse Click #\n\ UnIsolate \t- Ctrl-Down Arrow.\n\ " helpmsg += have_HFLDS ? "\ Scroll Field Groups \t- Ctrl-Left Arrow, Ctrl-Right Arrow\n\ \n" : "" helpmsg += "\ Goto " + fld_desc[1] + "\t - " +(gofieldFKEYSwithALT ? "Alt-" : "")+ "F1. \t\t \ Goto " + fld_desc[2] + "\t - " +(gofieldFKEYSwithALT ? "Alt-" : "")+ "F2.\n\ Goto " + fld_desc[3] + "\t - " +(gofieldFKEYSwithALT ? "Alt-" : "")+ "F3. \t\t \ Goto Field\t - Alt-accesskey.\n\ " helpmsg += dospeech ? "\ Spell Current\t - F4. \t\t Speak Current\t - F6.\n\ Speech Faster\t - F7. \t\t Speech Slower\t - Shift-F7.\n\ Next Speaker\t - F9. \t\t Previous Speaker\t - Shift-F9.\n\ Speech Dictionary\t - Alt-F9.\t\t Say Msg Line\t - Alt-1..9.\n\ \n" : "" helpmsg += dospeech ? "Say Field Description on Hot Key On/Off\t - Shift-F6\n" : "" helpmsg += dospeech ? (msglines ? "Say " + l_t21message_desc + " when isolate On/Off\t - Shift-F10\n" : "") : "" helpmsg += "Stop Speech\t - Ctrl.\n" helpmsg += dospeech ? "Speech On/Off\t - Shift-F12.\n" : "" helpmsg += "\n" if ( l_domaint ) { helpmsg += "Modify\t - Ctrl-F2 or Ctrl-Shift-M \tCancel\t - Ctrl-F6 or Ctrl-Shift-C\n" helpmsg += "Add\t - Ctrl-F3 or Ctrl-Shift-A \tUndo\t - Ctrl-F7 or Ctrl-Shift-U\n" helpmsg += "Delete\t - Ctrl-F4 or Ctrl-Shift-D \tSave\t - Ctrl-F8 or Ctrl-Shift-S\n" helpmsg += "Reassign\t - Ctrl-F5 or Ctrl-Shift-R\n" helpmsg += "\n" helpmsg += "Show Log - Ctrl-Alt-F8\n" helpmsg += "\n" } if ( l_outputbutton ) { helpmsg += "Output\t - Alt-F7 or Ctrl-Shift-O" helpmsg += "\t " } if ( l_exportbutton ) { helpmsg += "Export\t - Alt-Shift-F7 or Ctrl-Shift-E" } if ( l_outputbutton || l_exportbutton ) { helpmsg += "\n" } if ( typeof(custom_hotkey) == "function" ) { var desc = (typeof(custom_hotkey_desc) == "string") ? custom_hotkey_desc : "Custom Hotkey" helpmsg += desc + "\t - Alt-F8\n" } helpmsg += msglines ? "Show " + l_t21message_desc + "\t - F10. \t\t" : "" helpmsg += (EMAILCOL >= 0 ) ? "Open Email App\t - F11.\n" : "" helpmsg += (DOCCOL >= 0 ) ? "Open Document\t - Alt-F11.\n" : "" helpmsg += "Show Help\t - Ctrl-F1.\n\ \n\ " helpmsg += (xlsfile != "") ? "\n\ Excel Edit Data\t - F12. \t Control Panel Speech App\t - Alt-F12.\n\ \n\ " : "" helpmsg += (workfolder != "") ? "workfolder=" + workfolder + "\n" : "" if ( xlsfile != "" ) { helpmsg += "xlsfolder=" + xlsfolder +"\n" helpmsg += "xlsfile=" + xlsfile + "\t xlsfilepath=" + xlsfilepath + "\n" helpmsg += "csvfolder=" + csvfolder + "\n" helpmsg += "csvfile=" + csvfile + "\t csvfilepath=" + csvfilepath + "\n" } show_status("Show Help"); mysay( helpmsg ); alert( helpmsg ); show_status("Ready."); select_on_focus = false // don't select when focus curinput.focus() // going back to curinput //clearall(1,1); } // ------------------------------------- // output report function output_generation() { mysay( "Output Generation" ) // no rows if (drows.rows.length <= DOFF) { mysay("No Rows."); curinput.focus(); return 0 } var msg1 = "Reading and Generating Output..." mysay(msg1) show_status(msg1) loading_progress(1, msg1) // use internal output TDC // set filter and sort to enqdat repenq.Filter = enqdat.Filter repenq.SortColumn = enqdat.SortColumn repenq.SortAscending = enqdat.SortAscending // this will force data reload // (is needed to get new possibly vals for excluded Fields) repenq.DataURL = enqdat.DataURL try { repenq.Reset() } catch ( exccode ) { alert("ERROR: reading output data. (exccode = " + exccode + ")") return } } function output_generation_dataready() { var row var ni var outp = "" var fldname var startrow = 1 var startcol = 1 //alert("output_data_dataready()") var repenq_rs = repenq.Recordset if (repenq_rs.RecordCount == 0) { alert("Output Generation - No rows found.") return 0 } // html geader outp += "\r\n" outp += "\r\n" outp += "" + theTITLE + " Output\r\n" outp += "\r\n" outp += "\r\n" // table header outp += "\r\n" outp += "\r\n" for (var i=0; i < l_output_field_order.length; ++i) { ni = l_output_field_order[i] fldname = fld_desc[ni] outp += "\r\n" } outp += "\r\n" if (repenq_rs.RecordCount > 0) { repenq_rs.MoveFirst() } // rows for (row=0; row < repenq_rs.RecordCount; ++row ) { show_status("Reading and Generating Output" + "... " + (row+1) + " of " + enqdat.Recordset.RecordCount) // table row outp += "\r\n" for (var i=0; i < l_output_field_order.length; ++i) { ni = l_output_field_order[i] var fld = fld_cell[ni] var val = repenq_rs.Fields.Item(ni).value var vx = val switch ( fld_validate[fld] ) { case 3: // SQLpicklist var desc = fld_validate_SQLpicklist_vals_to_desc[fld][val] if ( val != desc ) vx = desc } // table data outp += "\r\n" } outp += "\r\n" repenq_rs.MoveNext() } // table trailer outp += "
\r\n" outp += fldname if ( fldname == "" ) outp += " " outp += "
\r\n" outp += vx if ( vx == "" ) outp += " " outp += "
\r\n" // html trailer outp += "\r\n" outp += "\r\n" // display output try { mysay("Opening Output Window."); repwin = window.open('','','titlebar=yes,status=yes,scrollbars=yes,toolbar=yes,menubar=yes,resizable=yes,location=no,width=800,height=600'); repwin.document.write(outp) } catch(exccode) { alert("ERROR: trying to Display Output. (exccode = " + exccode + ")") return 0 } var msg1 = "Output generation complete." loading_progress(0, msg1) show_status(msg1) return 1 } // ------------------------------------- // export var owcsso1desc = "No OWC SS" var owcsso1 try { owcsso1 = new ActiveXObject('OWC11.Spreadsheet') owcsso1desc = "owc11_" + owcsso1.Version } catch ( exccode ) { try { owcsso1 = new ActiveXObject('OWC10.Spreadsheet') owcsso1desc = "owc10_" + owcsso1.Version } catch ( exccode ) { try { owcsso1 = new ActiveXObject('OWC.Spreadsheet') owcsso1desc = "owc9_" + owcsso1.Version } catch ( exccode ) { if ( l_exportbutton ) { alert("ERROR: Export enabled, but NO OWC object found.") } } } } function export_data() { mysay( "Export Data" ) // no rows if (drows.rows.length <= DOFF) { mysay("No Rows."); curinput.focus(); return 0 } if ( typeof(owcsso1) == "undefined" ) { alert("ERROR: Office Web Components Spread Sheet object is not defined.") return 0 } if ( l_customexportstart != null ) { if ( !l_customexportstart() ) return; } // clear wooksheet owcsso1.Cells.Clear() //alert("export_data() OWC SS version = " + owcsso1desc) var msg1 = "Reading and Exporting data..." mysay(msg1) show_status(msg1) loading_progress(1, msg1) // use internal export TDC // set filter and sort to enqdat expenq.Filter = enqdat.Filter expenq.SortColumn = enqdat.SortColumn expenq.SortAscending = enqdat.SortAscending // this will force data reload // (is needed to get new possibly vals for excluded Fields) expenq.DataURL = enqdat.DataURL try { expenq.Reset() } catch ( exccode ) { alert("ERROR: reading export data. (exccode = " + exccode + ")") return } } function export_data_dataready() { var exprow = 0; var row var ni var fldname var startrow = 1 var startcol = 1 //alert("export_data_dataready()") //owcsso1.Cells(1,1) = 'testval' //owcsso1.Cells(1,2) = 'one-two' //owcsso1.Cells(2,1) = 'two-one' //owcsso1.ActiveSheet.Export() //return var expenq_rs = expenq.Recordset if (expenq_rs.RecordCount == 0) { alert("Export data - No rows found.") return 0 } // header for (ni=0; ni < expenq_rs.Fields.Count; ni++) { //fldname = expenq_rs.Fields.Item(ni).name.replace(/[\!-\/\:\;\<\=\>\?\@\\\]\^\_\'\{\|\}\~]/g,"") //if ( ni == ENQDAT_RECORDNOCOL || ni > nflds ) // fldname = expenq_rs.Fields.Item(ni).name //else // fldname = fld_desc[ni] fldname = fld_desc[ni] owcsso1.Cells(startrow+0,startcol+ni) = fldname } if (expenq_rs.RecordCount > 0) { expenq_rs.MoveFirst() } // rows for (row=0; row < expenq_rs.RecordCount; ++row ) { show_status("Reading and Exporting data" + " (" + owcsso1desc + ")" + "... " + (row+1) + " of " + enqdat.Recordset.RecordCount) if ( l_customexportfilter != null ) { if ( !l_customexportfilter(expenq_rs) ) { expenq_rs.MoveNext(); continue; } } for (ni=0; ni < expenq_rs.Fields.Count; ni++) { var fld = fld_cell[ni] //if ( !confirm("ni=" + ni + + " fld=" + fld + " fld_cell[" + ni + "]=" + fld_cell[ni] + " fld_desc[" + fld + "]=" + fld_desc[fld] + " fld_type[" + fld + "]=" + fld_type[fld]) ) // break var val = expenq_rs.Fields.Item(ni).value var vx = val switch ( fld_validate[fld] ) { case 3: // SQLpicklist var desc = fld_validate_SQLpicklist_vals_to_desc[fld][val] if ( val != desc ) vx = desc } if ( fld_type[fld] & 1 ) { // spell field set //alert("set spread sheet cell format to text for fied name = " + expenq_rs.Fields.Item(ni).name) //owcsso1.ActiveCell.NumberFormat = "@" //owcsso1.Cells(startrow+1+exprow,startcol+ni).NumberFormat = "Text" //alert("cell NumberFormat = " + owcsso1.Cells(startrow+1+exprow,startcol+ni).NumberFormat) //owcsso1.Cells(startrow+1+exprow,startcol+ni) = vx.toString() //owcsso1.Cells(startrow+1+exprow,startcol+ni).Formula = "='" + vx + "'" //owcsso1.Cells(startrow+1+exprow,startcol+ni).Formula = "=TEXT(" + vx + ")" //owcsso1.Cells(startrow+1+exprow,startcol+ni) = "='" + vx + "'" //owcsso1.Cells(startrow+1+exprow,startcol+ni) = "" //owcsso1.Cells(startrow+1+exprow,startcol+ni) = "some text" owcsso1.Cells(startrow+1+exprow,startcol+ni) = vx + "\t" } else { try { owcsso1.Cells(startrow+1+exprow,startcol+ni) = vx + "\t"; } catch(exccode) { alert("ERROR: trying to set Cell data. (exccode = " + exccode + ")" + "\r\n" + " owcsso1.Cells(" + startrow + "+" + 1 + "+" + exprow + "," + startcol + "+" + ni + ") = [" + owcsso1.Cells(startrow+1+exprow,startcol+ni) + "]" + " vx=[" + vx + "]") } } } ++exprow; expenq_rs.MoveNext(); } try { if ( owcsso1desc.substr(0,5) == "owc9_" ) { owcsso1.ActiveSheet.Export() //owcsso1.ActiveSheet.Export("DirEnqExport.xls") //owcsso1.Export("DirEnqExport.xls") } else { //owcsso1.ActiveSheet.Export() owcsso1.Export() } } catch(exccode) { alert("ERROR: trying to export data. (exccode = " + exccode + ")") return 0 } var msg1 = "Export complete." loading_progress(0, msg1) show_status(msg1) return 1 } // ------------------------------------- function saymsgline(msgline) { if ( msglines == 0 ) return; stopspeaking(); // no rows if (drows.rows.length <= DOFF) { curinput.focus(); return 0 } var msgcol = 0; switch( msgline ) { case 1: var msgcol = msg_fld["Msg1"]; break; case 2: var msgcol = msg_fld["Msg2"]; break; case 3: var msgcol = msg_fld["Msg3"]; break; case 4: var msgcol = msg_fld["Msg4"]; break; case 5: var msgcol = msg_fld["Msg5"]; break; case 6: var msgcol = msg_fld["Msg6"]; break; case 7: var msgcol = msg_fld["Msg7"]; break; case 8: var msgcol = msg_fld["Msg8"]; break; case 9: var msgcol = msg_fld["Msg9"]; break; } //alert("saymsgline(" + msgline + ") msgcol = " + msgcol); var mlstr = msgcol ? drows.rows[DOFF+activerow].cells[msgcol].innerText : ""; mysay( expmsg(mlstr) ); return (mlstr == "") ? 0 : 1; } function showmsg(arow,dodisplay) { var retval = 0; if ( msglines == 0 ) return retval; if ( dodisplay ) stopspeaking(); // no rows if (drows.rows.length <= DOFF) { if ( dodisplay ) mysay("No Rows."); curinput.focus(); return retval } if ( dodisplay ) { show_status("Show " + l_t21message_desc + "."); //mysay("Show " + l_t21message_desc + "."); } var absrow = DOFF + arow; gmsg1 = msg_fld["Msg1"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg1"]].innerText) : ""; gmsg2 = msg_fld["Msg2"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg2"]].innerText) : ""; gmsg3 = msg_fld["Msg3"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg3"]].innerText) : ""; gmsg4 = msg_fld["Msg4"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg4"]].innerText) : ""; gmsg5 = msg_fld["Msg5"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg5"]].innerText) : ""; gmsg6 = msg_fld["Msg6"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg6"]].innerText) : ""; gmsg7 = msg_fld["Msg7"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg7"]].innerText) : ""; gmsg8 = msg_fld["Msg8"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg8"]].innerText) : ""; gmsg9 = msg_fld["Msg9"] ? fldclip(drows.rows[absrow].cells[msg_fld["Msg9"]].innerText) : ""; mgmsg = "" gmsg = "" gmsg += msg_fld["Msg1"] ? (gmsg1 == "" ? "\n" : gmsg1 + ".\n") : "" gmsg += msg_fld["Msg2"] ? (gmsg2 == "" ? "\n" : gmsg2 + ".\n") : "" gmsg += msg_fld["Msg3"] ? (gmsg3 == "" ? "\n" : gmsg3 + ".\n") : "" gmsg += msg_fld["Msg4"] ? (gmsg4 == "" ? "\n" : gmsg4 + ".\n") : "" gmsg += msg_fld["Msg5"] ? (gmsg5 == "" ? "\n" : gmsg5 + ".\n") : "" gmsg += msg_fld["Msg6"] ? (gmsg6 == "" ? "\n" : gmsg6 + ".\n") : "" gmsg += msg_fld["Msg7"] ? (gmsg7 == "" ? "\n" : gmsg7 + ".\n") : "" gmsg += msg_fld["Msg8"] ? (gmsg8 == "" ? "\n" : gmsg8 + ".\n") : "" gmsg += msg_fld["Msg9"] ? (gmsg9 == "" ? "\n" : gmsg9 + ".\n") : "" // all message lines are blank if ( gmsg.substr(0,msglines) == "\n\n\n\n\n\n\n\n\n".substr(0,msglines) ) { retval = 0; mgmsg = ""; gmsg = ""; } else { retval = 1; mgmsg = l_t21message_desc + ":\n" + gmsg } if ( !dodisplay ) return retval; if ( retval ) { // speak message & pop window with message //mysay("Hit Escape Key to Finish."); mysay(expmsg(mgmsg)); // record NOT iosolated, so pop message in mondow //if (enqdat.Recordset.RecordCount == 1) { // alert(mgmsg); alert(mgmsg); //WSK waitspeaking(); } else { // no message show_status("No " + l_t21message_desc + "."); mysay("No " + l_t21message_desc + "."); //WSK waitspeaking(); } stopspeaking(); curinput.focus(); return retval; } function expmsg(str) { var i; var c; var emstr = ""; for ( i = 0; i < str.length; ++i ) { c = str.substr(i,1); if ( c >= "0" && c <= "9" ) emstr += " "; emstr += c; } return emstr.toLowerCase(); } function openemailapp() { if ( EMAILCOL == -1 ) return; stopspeaking(); // no rows if (drows.rows.length <= DOFF) { mysay("No Rows."); curinput.focus(); return } if ( EMAILCOL >= 0 ) { if ( drows.rows[DOFF+activerow].cells[EMAILCOL].innerText != "" ) { var emurl = "mailto:" + drows.rows[DOFF+activerow].cells[EMAILCOL].innerText; //alert(emurl); mysay("Opening Email Application."); window.open(emurl,'','toolbar=no,menubar=no,location=no,height=300,width=650'); } else { if ( TTSON ) mysay("No Email address."); else alert("No Email Address"); } } } function opendocurl() { if ( DOCCOL == -1 ) return; // no rows if (drows.rows.length <= DOFF) return; docurl = drows.rows[DOFF+activerow].cells[DOCCOL].innerText; if ( docurl.length > 0 ) { str1 = "Opening Document - " + docurl; mysay(str1); savemystatus = mystatus.innerHTML; show_status(str1); setTimeout(' window.open(docurl,"","toolbar=no,menubar=no,location=no,height=300,width=650"); ', 500, "JavaScript"); setTimeout(' show_status(savemystatus); ', 3000, "JavaScript"); } } function show_TEXINFO() { var fldval = ""; if ( !have_TEXINFO ) return 0; // display TEXINFO Fields fldcnt_TEXINFO = 0 html_TEXINFO = " 0 && (fldcnt_TEXINFO % TEX_perline) == 0 ) { //alert("go to next row") ++tex_row tex_col = 0 html_TEXINFO += "" html_TEXINFO += "" } var texcolskip = fld_skip[i] if ( texcolskip ) { //alert(fld_datafld[i] + " TEX skip " + texcolskip) while ( texcolskip-- > 0 ) { //alert(" TEX skip " + texcolskip) html_TEXINFO += "" html_TEXINFO += "" } } } var texcolspan = fld_span[i] //alert("TEX i = " + i + " fldcnt_TEXINFO = " + fldcnt_TEXINFO + " TEX_perline = " + TEX_perline + " >>>> skip = " + texcolskip ") if ( texcolspan > TEX_perline ) // span too big texcolspan = TEX_perline // not enough cols left for texcolspan var texcolsleft = TEX_perline - (fldcnt_TEXINFO % TEX_perline) //alert("TEX i = " + i + " fldcnt_TEXINFO = " + fldcnt_TEXINFO + " TEX_perline = " + TEX_perline + " >>>> colspan = " + texcolspan + " " + fld_datafld[i] + " cols left on line = " + texcolsleft) if ( texcolsleft < texcolspan ) { while ( (fldcnt_TEXINFO % TEX_perline) != 0 ) { //alert("not enough cols left fldcnt_TEXINFO = " + fldcnt_TEXINFO) html_TEXINFO += "" html_TEXINFO += "" } } } var labelcols = 0 if ( fld_label[i] != 9 ) { // label displayed var labelcols = 1 html_TEXINFO +=""; // make all (except hidden and email) Fields click to isolate //for ( j = 1; j <= nflds; ++j ) { // switch ( j ) { // case RECORDNOCOL: // case EMAILCOL: // case msg_fld["Msg1"]: // case msg_fld["Msg2"]: // case msg_fld["Msg3"]: // case msg_fld["Msg4"]: // case msg_fld["Msg5"]: // case msg_fld["Msg6"]: // case msg_fld["Msg7"]: // case msg_fld["Msg8"]: // case msg_fld["Msg9"]: // continue; // } // drows.rows[i].cells[j].innerHTML = ""; //} drows.rows[i].cells[0].style.color = "black"; if ( showmsg(i-DOFF,0) ) { drows.rows[i].cells[0].style.background = "lightgreen"; } else { drows.rows[i].cells[0].style.background = "#CCEEEE"; } // // scan cols // for ( var fld = 1; fld <= nflds; ++fld ) { // switch ( fld_validate[fld] ) { // case 3: // SQLpicklist // var val = fldclip(drows.rows[i].cells(fld).innerText) // var desc = fld_validate_SQLpicklist_vals_to_desc[fld][val] // if ( val != desc ) // drows.rows[i].cells(fld).innerText = desc // break // } // } if ( DOCCOL >= 0 ) { docurl = drows.rows[i].cells[DOCCOL].innerText; if ( docurl.length > 0 ) { drows.rows[i].cells[0].style.color = "red"; } } } if ( offset < 0 && drows.rows[DOFF+activerow].recordNumber == 1 ) { stopspeaking(); TTSON && TTSObj.Speak("First Row"); //WSP waitspeaking(); offset = 0; // stay on first dosaycombo = 0; } if ( offset > 0 && drows.rows[DOFF+activerow].recordNumber == enqdat.Recordset.RecordCount ) { stopspeaking(); TTSON && TTSObj.Speak("Last Row"); //WSP waitspeaking(); offset = 0; // stay on last dosaycombo = 0; } // ??? offset = offset % nrows; ??? if ( rel ) { activerow = activerow + offset; if ( activerow < 0 ) { previousPage(); //activerow = drows.rows.length - DOFF - 1; activerow = NDROWS - 1; return } if ( activerow >= nrows ) { nextPage(); activerow = 0; return } } else { activerow = offset; } if ( activerow < 0 ) activerow = 0; if ( activerow > nrows ) activerow = drows.rows.length - DOFF - 1; activerecordNumber = drows.rows[DOFF+activerow].recordNumber activepage = Math.floor(activerecordNumber / NDROWS) if ( msglines != 0 ) { if ( acthasmsg = showmsg(activerow,0) ) { drows.rows[DOFF+activerow].cells[0].style.color = "white"; drows.rows[DOFF+activerow].cells[0].style.background = "green"; document.all.but_showmsg.disabled = false; } else { drows.rows[DOFF+activerow].cells[0].style.color = "white"; drows.rows[DOFF+activerow].cells[0].style.background = "blue"; document.all.but_showmsg.disabled = true; } if ( DOCCOL >= 0 ) { docurl = drows.rows[DOFF+activerow].cells[DOCCOL].innerText; if ( docurl.length > 0 ) { drows.rows[DOFF+activerow].cells[0].style.color = "red"; } } } else { drows.rows[DOFF+activerow].cells[0].style.color = "white"; drows.rows[DOFF+activerow].cells[0].style.background = "blue" } if ( EMAILCOL >= 0 ) { if ( drows.rows[DOFF+activerow].cells[EMAILCOL].innerText != "" ) document.all.but_openemailapp.disabled = false; else document.all.but_openemailapp.disabled = true; } // ZZZZZ // only show visible hflds show_hfldgroup(curhfldgroup) // show RecordNo var RecordNo = (RECORDNOCOL >= 0) ? drows.rows[DOFF+activerow].cells[RECORDNOCOL].innerText : -1; //myRecordNo.innerHTML = "" + "RecordNo=" + RecordNo + ""; myRecordNo.innerHTML = "RecordNo=" + RecordNo; if ( dosaycombo ) saycombo(0,1); if ( RecordNo != "" ) { //l_rowselect(activerecordNumber,activerow,RecordNo) run_after_speaking_done('l_rowselect(' + activerecordNumber + ',' + activerow + ',' + RecordNo + ')') } //else { // alert("ERROR: blank RecordNo doing setactiverow(" + rel + "," + offset + ")" + " activerow=" + activerow + " nrows=" + nrows) //} } function copyupdata() // copy active row data to template { //alert("copyupdata()") // no data if (drows.rows.length <= (DOFF + activerow) ) { return } for ( var i=1; i <= nflds; ++i ) { //alert("fld_desc[" + i + "]=[" + fld_desc[i] + "]" + " fld_type[" + i + "]=" + fld_type[i]) if ( fld_type[i] & 8 ) { // search field var fldstr = drows.rows[DOFF+activerow].cells[i].innerText; fldstr = fldstr.replace( / *$/, ""); // trim trailing spaces //fldstr = fldstr.replace( /&/g, "\\&") // fix search //fldstr = fldstr.replace( /#/g, "\\#") // fix search drows.rows[1].cells(i).firstChild.firstChild.value = fldstr; colfilt[i] = fldstr; fld_val_since_last[i] = fldstr } } } function isolaterec(thisrow) { // no row if (drows.rows.length <= (DOFF + thisrow) ) { mysay("No Row."); return 0 } if ( unisoactiverow >= 0 ) // already isolated return //alert( "isolaterec() thisrow = " + thisrow); activerow = thisrow; activerecordNumber = drows.rows[DOFF+activerow].recordNumber activepage = Math.floor(activerecordNumber / NDROWS) //var recinfo = "" //recinfo += drows.rows[DOFF+activerow].cells[1].innerText //recinfo += " " //recinfo += drows.rows[DOFF+activerow].cells[2].innerText //recinfo += " " //recinfo += drows.rows[DOFF+activerow].cells[3].innerText //recinfo += " activerecordNumber = " + activerecordNumber //recinfo += " activepage = " + activepage //alert("after activerow = " + activerow + " recinfo = " + recinfo) // // if not already isolated - save search // if ( unisoactiverow < 0 ) { // NO - always do this, as a new search may have been done!!! for ( var i=1; i <= nflds; ++i ) { if ( fld_type[i] & 8 ) { // search field savesrchinput[i] = drows.rows[1].cells(i).firstChild.firstChild.value; } } unisoactiverow = activerow; unisocurfld = curfld; unisoactiverecordNumber = activerecordNumber; unisoactivepage = activepage; // } myRecordNo.innerHTML = ""; hide_myDetails(); clear_srch_vars(); var RecordNo = (RECORDNOCOL >= 0) ? drows.rows[DOFF+thisrow].cells[RECORDNOCOL].innerText : -1; //alert("isolate RecordNo = " + RecordNo) //if ( RecordNo <= 0 ) { // // NO RecordnO - so isolate record by serach data // Copy active row to search input // copyupdata() //} // copy up so left/right arrow can be used to SPELL Fields if ( l_copyupdata == 1 ) copyupdata() // select current input field (to make left/right arrows code ok) curinput.select(); curpos = -1; // work around for Search... forever problem // occurs Reset(); twice for same search enqdat.Filter = fld_desc[ENQDAT_RECORDNOCOL] + "=-1"; enqdat.Reset(); if ( RecordNo > 0 ) { // isolate record using Recordno keysrch_thisRecordNo = RecordNo } keySrchCol() // re-search to isolate return 1; } function unisolate() { if ( unisoactiverow < 0 ) { show_status("unisolate() - NO saved search"); return; } show_status("unisolate() unisoactiverow=" + unisoactiverow); myRecordNo.innerHTML = ""; hide_myDetails(); //clear_srch_vars(); clearall(0,1); var newfield = drows.rows[1].cells(unisocurfld).firstChild.firstChild; // if HFLD then set correct hfld group if ( (fld_type[unisocurfld] & 4) && curhfldgroup != fld_group[unisocurfld] ) { curhfldgroup = fld_group[unisocurfld] show_hfldgroup(curhfldgroup) } for ( var i=1; i <= nflds; ++i ) { if ( fld_type[i] & 8 ) { // search field drows.rows[1].cells(i).firstChild.firstChild.value = savesrchinput[i]; colfilt[i] = savesrchinput[i]; //alert("unisolate restore colfilt[" + i + "] = [" + colfilt[i] + "]") } } // move to new field newfield.focus(); // select current input field (to make left/right arrows code ok) newfield.select(); curpos = -1; // work around for Search... forever problem // occurs Reset(); twice for same search enqdat.Filter = fld_desc[ENQDAT_RECORDNOCOL] + "=-1"; enqdat.Reset(); keySrchCol(); // re-search to isolate activerow = unisoactiverow; activerecordNumber = unisoactiverecordNumber; go_activerecordNumber = unisoactiverecordNumber; activepage = unisoactivepage; go_activepage = unisoactivepage; unisoactiverow = -1; unisocurfld = -1; unisoactiverecordNumber = -1; unisoactivepage = -1; } //---------------------------------------------- //---------------------------------------------- function on_beforeunload() { var retval = -1 //alert("on_beforeunload() theTITLE = " + theTITLE + // "\n event.clientY= " + event.clientY + // "\n event.clientX= " + event.clientX + // "\n document.body.clientWidth= " + document.body.clientWidth + // "\n document.body.clientHeight= " + document.body.clientHeight + // "\n screen.availWidth= " + screen.availWidth + // "\n screen.availHeight= " + screen.availHeight + // "\n event.offsetY= " + event.offsetY + // "\n event.offsetX= " + event.offsetX + // "\n event.screenY= " + event.screenY + // "\n event.screenX= " + event.screenX + // "\n key_exit= " + key_exit + // "" // ) if (!in_maint ) return // click was within window if ( !key_exit && event.clientY >= 0 && event.clientY <= document.body.clientHeight && event.clientX >= 0 && event.clientX <= document.body.clientWidth ) { //alert("DEBUG: NOT REAL unload") key_exit = false event.keyCode = "" //event.cancelBubble = true return } key_exit = false var str1 = "Exit..." retval = save_changes() if ( retval == 1 ) str1 += " - Changes have been saved" if ( retval == 0 ) str1 += " - No changes have been made" if ( retval == -1 ) str1 += " - Field validation error" if ( retval == -2 ) str1 += " - Save changes cancelled" if ( retval == 1 || retval == -2 ) str1 += "\n\n *** Clicking OK will LOSE any changes since last saved ***" //alert("DEBUG: on_unload() after save_changes() str1 = [" + str1 + "]") event.returnValue = str1 return true } //---------------------------------------------- var MAINT_HISTORIC_WARNING = "WARNING: Changing historic information may have\n" + " undesired or unexpected results.\n" var ENDDATECURRENTPROMPT = "WARNING: A current Entry already exists, do you want\n" + " to EndDate it and continue with the Add?" function doModifyEntry() { mysay( "Modify Entry" ) if (enqdat.Recordset.RecordCount != 1) // not single rec return mysay( "Confirm Modify Entry" ) //if ( !in_reassign && !confirm(MAINT_HISTORIC_WARNING + "\n" // + "Confirm that you want to Modify the Entry?") ) { // lastfield.disabled = false // lastfield.focus() // return //} show_status("Modifying Entry...") //rjs once only per session //done_historic_changes_in_save_alert = false in_modify = 1 copyupdata() // copy activerec to template set_maint(curfld) show_hfldgroup(1) // set first scroll group curfld = startfld setsrchfld(curfld,0) // move to startfld } function doAddEntry() { mysay( "Add Entry" ) in_add = 1 //clearall(0,1) // clear without search enqdat //drows.rows.length = DOFF // clear drows.rows //show_myDetails() // show details //thisRecordNo = 0 //set_maint(-1) // clear default search values for ( var i=1; i <= nflds; ++i ) { if ( typeof(l_defaultsrchval[i]) != "undefined" && l_defaultsrchval[i] != "" && l_defaultsrchval[i] == drows.rows[1].cells(i).firstChild.firstChild.value ) { drows.rows[1].cells(i).firstChild.firstChild.value = "" } } // force search for no matches (forces blank myDetails if in_add) // see in_add code in drows_info_changed() enqdat.Filter = l_recordno_desc + "=-1" enqdat.Reset() mysay( "Adding new Entry" ) show_status("Adding new Entry...") show_hfldgroup(1) // set first scroll group curfld = startfld setsrchfld(curfld,0) // move to startfld } function doDeleteEntry() { if (enqdat.Recordset.RecordCount != 1) // not single rec return document.all.but_AddEntry.disabled = true; document.all.but_Cancel.disabled = true; document.all.but_Undo.disabled = true; mysay( "Confirm Delete Entry" ) if ( !ynConfirm(MAINT_HISTORIC_WARNING + "\n" + "Confirm that you want to Delete the Entry?") ) { return } show_status("Deleting Entry...") //set_maint(-1) var sql = "" // delete sql += "delete from " + l_mainttable sql += " where" if ( l_recordno_is_rowid ) sql += " rowid = " + thisRecordNo else sql += " " + fld_desc[ENQDAT_RECORDNOCOL] + " = " + thisRecordNo //alert("sql=[" + sql + "]") audittrailtxt = ""; for ( j=0; j < enqdat.Recordset.Fields.Count; ++j ) { if ( typeof(maint_db_fld_order) == "undefined" ) { // if maint_db_order array is NOT defined at all // then default to physical header config order ni = j; } else { if ( typeof(maint_db_fld_order[j]) == "undefined" ) { alert("ERROR: in config db_fld_order. Array is NOT defined or is incorrectly defined.") return -1 } ni = maint_db_fld_order[j] } var isfld = 0 if ( fld_type[ni] & 8 ) { // srchfld isfld = 1 } else { if ( fld_type[ni] & 2 ) { // TEX info isfld = 1 } } var flddes = fld_desc[ni]; if ( isfld || msg_fld[flddes] ) { if ( ni != l_maintobjectfield ) { var extraoldvalue = ""; if ( fld_validate[ni] == 6 ) { // DirectoryID var name = l_custom_get_name("ENQDAT"); if ( name != "" ) extraoldvalue = " (" + name + ")"; } var oldvalue = enqdat.Recordset.Fields.Item(ni).value; audittrailtxt += flddes + ": " + oldvalue + extraoldvalue; audittrailtxt += "\n"; } } } var unlid3 = wbtgetunl(false,handle_delete_RecordNo, '../wbt_dosql.cgi?DOSQLCMD="'+sql+'"', 'POST') //reset_maint() clearall(0,1) // clear all } function handle_delete_RecordNo(unlid,irow,rowstr,nflds,fld_arr,rec_arr) { //alert("handle_delete_RecordNo(" + unlid + "," + irow + "," + rowstr + "," + nflds + "," + fld_arr[0] + ")") if ( irow < 0 ) { // done // test status if ( rec_arr.status != 0 ) { //alert("Testing ERROR: handle_delete_RecordNo - wbtgetunl() rec_arr.status = " + rec_arr.status + " will continue anyway!") return } var recordno = enqdat.Recordset.Fields.Item(ENQDAT_RECORDNOCOL).value; do_audittrail("Delete", recordno); /// Delete current record from enqdat //alert("RecordNumber = " + enqdat.Recordset.RecordNumber) //var i = enqdat.Recordset.rows.Delete() //var i = enqdat.Recordset.DeleteRecord() //var i = enqdat.Recordset.Delete() //alert("Recordset Delete returned = [" + i + "]") // force data reload enqdat.DataURL = enqdat.DataURL; enqdat.Reset(); return 1 } return 1 } function doReassignEntry() { if ( !can_reassign ) return if ( !in_reassign ) { mysay( "Reassign Entry" ) if (enqdat.Recordset.RecordCount != 1) // not single rec return mysay( "Confirm Reassign" ) if ( !ynConfirm("Confirm that you want to Reassign the Entry?") ) { curinput.focus() return } in_reassign = 1 } show_status("Reassign Entry...") in_modify = 1 copyupdata() // copy activerec to template set_maint(-1) var edatestr = fldtrim(drows.rows[1].cells(EDATECOL).firstChild.firstChild.value) // if Edate is NOT set then force user to set Edate on current record if ( edatestr == "" ) { // NO Edate set alert("Please set End date.") drows.rows[1].cells(EDATECOL).firstChild.firstChild.focus() return } in_modify = 0 // set Sdate to aboves (Edate + 1 day), set Edate to blank, and then force ADD var edd = 1 * edatestr.substr(0,2) var emm = 1 * edatestr.substr(3,2) var eyyyy = 1 * edatestr.substr(6,4) var edate = new Date() edate.setFullYear(eyyyy, emm - 1, edd) var sdate = new Date() sdate.setFullYear(eyyyy, emm - 1, edd + 1) var sdd = sdate.getDate() var smm = sdate.getMonth() + 1 var syyyy = sdate.getFullYear() var sdatestr = (sdd < 10 ? "0" : "") + sdd + "-" + (smm < 10 ? "0" : "") + smm + "-" + syyyy drows.rows[1].cells(SDATECOL).firstChild.firstChild.value = sdatestr drows.rows[1].cells(EDATECOL).firstChild.firstChild.value = "" in_add = 1 if ( l_clearbeforereassign ) { // clear any assiged person/group for ( var i=1; i <= nflds; ++i ) { if ( fld_validate[i] == 6 ) // DirectoryID drows.rows[1].cells(i).firstChild.firstChild.value="" if ( fld_validate[i] == 5 ) // GroupID drows.rows[1].cells(i).firstChild.firstChild.value="" } } alert("Please assign a new owner") thisRecordNo = 0 set_maint(-1) } function inputfield(fld) { var infield = null if ( fld_type[fld] & 8 ) { // srchfld takes precedence infield = eval("srchfld" + fld) } else { if ( fld_type[fld] & 2 ) { // TEX info infield = eval("TEXfld" + fld) } } if ( infield == null ) { alert("ERROR: inputfield(" + fld + ")" + " is neither a srchfld or TEXfld field.") } return infield } //------------------------------------- function set_maint(fld) { curfld = fld if ( curfld == -1 ) { // current field not set curfld = startfld // start at start curinput = inputfield(curfld) } lastfield = curinput l_custom_on_set_maint() if ( l_exitbutton ) document.all.but_exit.disabled = true; document.all.but_ModifyEntry.disabled = true; document.all.but_AddEntry.disabled = true; document.all.but_DeleteEntry.disabled = true; if ( can_reassign ) document.all.but_ReassignEntry.disabled = true; document.all.but_Cancel.disabled = false; document.all.but_Undo.disabled = true; document.all.but_Save.disabled = true; document.all.but_clearall.disabled = true if ( msglines != 0 ) document.all.but_showmsg.disabled = true // edate is configured if ( in_modify && EDATECOL >= 0 ) { // save original edate value if ( in_modify ) edate_before = enqdat.Recordset.Fields.Item(EDATECOL).value else edate_before = "" } in_maint = 1 reset_changes_made() // disable viewonly srch Fields for ( var i=1; i <= nflds; ++i ) { if (fld_disabled[i] || ((fld_type[i] & 8) && fld_viewonly[i])) { // search field - view only var srchfld = eval("srchfld" + i) srchfld.disabled = "disabled" // hide any viewonly groupid pick icon switch ( fld_validate[i] ) { case 05: // GroupID var fldid = "fld_VALIDATE_GroupID_" + i; eval(fldid + ".style.display = 'none'"); break; } } } //// enable non viewonly TEX Fields //for ( var j=1; have_TEXINFO && j <= ntexflds; ++j ) { // var i = tex_order[j] // process in correct order // if ( !fld_disabled[i] && !fld_viewonly[i] ) { // var texfld = eval("TEXfld" + i) // texfld.disabled = "" // } //} if ( msglines != 0 ) { // myDetail may not be draw yet // so this may fail, but its OK, because when it does draw // it set readonly baseed on the above in_maint being set try {myMsg.readOnly = false;} catch (exccode) {} } //rjs rb // rebuild picklists // fld_VALIDATE_build_options(-1,0) //alert("DEBUG: curfld=" + curfld + " curinput.id = " + curinput.id + " fld_desc[" + curfld + "] = " + fld_desc[curfld]) //curinput.focus(); } function reset_maint() { if ( l_exitbutton ) document.all.but_exit.disabled = false; document.all.but_ModifyEntry.disabled = (enqdat.Recordset.RecordCount == 1) ? false : true; document.all.but_AddEntry.disabled = false; document.all.but_DeleteEntry.disabled = (enqdat.Recordset.RecordCount == 1) ? false : true; if ( can_reassign ) document.all.but_ReassignEntry.disabled = (enqdat.Recordset.RecordCount == 1) ? false : true; document.all.but_Cancel.disabled = true; document.all.but_Undo.disabled = true; document.all.but_Save.disabled = true; document.all.but_clearall.disabled = false if ( msglines != 0 ) document.all.but_showmsg.disabled = false in_modify = 0 in_add = 0 in_maint = 0 in_reassign = 0 reset_changes_made() // enable viewonly srch Fields for ( var i=1; i <= nflds; ++i ) { if ( ((fld_type[i] & 8) && fld_viewonly[i]) ) { // search field - view only var srchfld = eval("srchfld" + i) srchfld.disabled = "" // show any viewonly groupid pick icon switch ( fld_validate[i] ) { case 05: // GroupID var fldid = "fld_VALIDATE_GroupID_" + i; eval(fldid + ".style.display = ''"); break; } } } //// disable TEX Fields //for ( var j=1; have_TEXINFO && j <= ntexflds; ++j ) { // var i = tex_order[j] // process in correct order // var texfld = eval("TEXfld" + i) // texfld.disabled = "disabled" //} if ( msglines != 0 ) { // myDetail may not be draw yet // so this may fail, but its OK, because when it does draw // it set readonly baseed on the above in_maint being set try {myMsg.readOnly = true;} catch (exccode) {} } if ( curfld == startfld ) curinput.blur(); drows.rows[1].cells(startfld).firstChild.firstChild.focus(); } //------------------------- function cancel_changes() { mysay( "Confirm Cancel Changes" ) if ( !ynConfirm("Confirm that you want to Cancel the Changes?") ) { curinput.focus() return } reset_maint() clearall(1,1) } function undo_changes() { if ( !changes_made ) return mysay( "Confirm Undo Changes" ) if ( !ynConfirm("Confirm that you want to Undo the Changes?") ) { curinput.focus() return } show_status("Undo...") reset_changes_made() if ( in_add ) { // add clearall(0,0) // clear without search enqdat //drows.rows.length = DOFF // clear drows.rows //show_myDetails() // show details clearall(1,1) // clear enqdat - no matches (forces blank myDetails if in_add) thisRecordNo = 0 } else { // modify ////copyupdata() // copy activerec to template //isolaterec(0) // redisplay current entry for ( var ni=0; ni < enqdat.Recordset.Fields.Count; ++ni ) { var field = "" if ( fld_type[ni] & 8 ) { // srchfld field = eval("fldvalue = srchfld" + ni) field.value = in_modify ? enqdat.Recordset.Fields.Item(ni).value : "" } if ( fld_type[ni] & 2 ) { // TEX info field = eval("fldvalue = TEXfld" + ni) field.value = in_modify ? enqdat.Recordset.Fields.Item(ni).value : "" } } show_myDetails() // show details } set_maint() } function save_changes() { //alert("save_changes()") if ( !changes_made ) return 0 // xyzzy //alert("curfld = " + curfld // + " curinput.id = [" + curinput.id + "]" // + " curinput.value = [" + curinput.value + "]" // + " fld_val_since_last[" + curfld + "] = [" + fld_val_since_last[curfld] + "]" // + " fld_has_changed[" + curfld + "] = [" + fld_has_changed[curfld] + "]" // ); //if ( fld_val_since_last[curfld] != curinput.value ) { // // run field changed code to force validation and // // copy to srch/TEX fld // check_field_changed(curinput,1,1) //} // validate last field //if ( !check_field_changed(curinput,1,1) ) // return -1; //if ( !validate_input(curinput,curfld) ) // return -1; //if ( validate_field(curinput,curfld,1) <= 0 ) // return -1; mysay( "Confirm that you want to Save the Changes" ) if ( !ynConfirm("Save Changes\n\n(RecordNo=" + thisRecordNo + ")?") ) { //butNameSearch.disabled = false //butNameSearch.focus() return -2 } // flag not in any field curfld = -1 curinput = null // xyzzy // validate all Fields - prompting for Add NEW in custom picklists if ( !validate_input("",-1) ) { // input needs correcting //alert("DEBUG: save_changes() validate_input(ALL) returned bad") if ( curfld == -1 || curinput == null ) { curfld = startfld setsrchfld(curfld,0) // move to startfld } return -1 } show_status("Saving...") mysay("Saving!") var sqlbit = "" enqdatupdcmd = "" audittrailtxt = ""; //------------------------ // process field changes building sql and updating local cache // process field in database order for ( var j=0; j < enqdat.Recordset.Fields.Count; ++j ) { if ( typeof(maint_db_fld_order) == "undefined" ) { // if maint_db_order array is NOT defined at all // then default to physical header config order ni = j; } else { if ( typeof(maint_db_fld_order[j]) == "undefined" ) { alert("ERROR: in config db_fld_order. Array is NOT defined or is incorrectly defined.") return -1 } ni = maint_db_fld_order[j] } //alert("ni=" + ni // + " ENQDAT_RECORDNOCOL=" + ENQDAT_RECORDNOCOL // + " ENQDAT_CUSTOMIDCOL=" + ENQDAT_CUSTOMIDCOL // + " field("+ni+").name = ["+enqdat.Recordset.Fields.Item(ni).name // + " fld_desc["+ni+"]=[" + fld_desc[ni] // + " sqlbit=[" + sqlbit + "]") if ( fld_maintexclude[ni] ) { // exclude from maint continue } if ( ENQDAT_RECORDNOCOL >= 0 && ni == ENQDAT_RECORDNOCOL ) { sqlbit += ((sqlbit.length > 0) ? ", " : "") if ( !l_recordno_is_rowid ) { if ( thisRecordNo == 0 ) // insert new sqlbit += "0" // new serial recordno else // update sqlbit += "" // serial key notUpdated } continue } if ( customid == "NULL" ) customid = null if ( ENQDAT_CUSTOMIDCOL >= 0 && ni == ENQDAT_CUSTOMIDCOL) { enqdatupdcmd += "enqdat.Recordset.Fields.Item(" + ni + ").value = " + "'" + customid + "'" + ";" sqlbit += ((sqlbit.length > 0) ? ", " : "") if ( thisRecordNo == 0 ) // insert new sqlbit += "'" + customid + "'" else // update sqlbit += " CustomID = '" + customid + "'" continue } var fldvalue = "" var isfld = 0 if ( fld_type[ni] & 8 ) { // srchfld fldvalue = eval("srchfld" + ni + ".value") isfld = 1 } else { if ( fld_type[ni] & 2 ) { // TEX info fldvalue = eval("TEXfld" + ni + ".value") isfld = 1 } } if ( isfld && (thisRecordNo == 0 || fldvalue != enqdat.Recordset.Fields.Item(ni).value) ) { // field changed fldvalue = fldvalue.replace(/\'/g,"\^") fldvalue = fldvalue.replace(/\"/g,'\\"') //alert("field changed: enqdat.Recordset.Fields.Item(" + ni + ")" + // " name=" + enqdat.Recordset.Fields.Item(ni).name + // " value=[" + enqdat.Recordset.Fields.Item(ni).value + "]" + // " fldvalue=[" + fldvalue + "]") enqdatupdcmd += "enqdat.Recordset.Fields.Item(" + ni + ").value = " + "'" + fldvalue + "'" + ";" sqlbit += ((sqlbit.length > 0) ? ", " : "") if ( thisRecordNo == 0 ) { // insert new sqlbit += "'" + fldvalue + "'" } else { // update sqlbit += fld_desc[ni] + " = " + "'" + fldvalue + "'" } if ( ni != l_maintobjectfield ) { // for audit trail var flddes = fld_desc[ni]; var extrafldvalue = ""; var extraoldvalue = ""; if ( thisRecordNo == 0 ) { // Add if ( fld_validate[ni] == 6 ) { // DirectoryID var name = l_custom_get_name("DIRENQ"); if ( name != "" ) extrafldvalue = " (" + name + ")"; } if ( (fldvalue + extrafldvalue) != "" ) { audittrailtxt += flddes + ": " + fldvalue + extrafldvalue; audittrailtxt += "\n"; } } else { // Update if ( fld_validate[ni] == 6 ) { // DirectoryID var name = l_custom_get_name("ENQDAT"); if ( name != "" ) extraoldvalue = " (" + name + ")"; var name = l_custom_get_name("DIRENQ"); if ( name != "" ) extrafldvalue = " (" + name + ")"; } var oldvalue = enqdat.Recordset.Fields.Item(ni).value; audittrailtxt += flddes + ": " + oldvalue + extraoldvalue; audittrailtxt += " -> " + fldvalue + extrafldvalue; audittrailtxt += "\n"; } } } } //------------------------ // NOTE: this assumes message Fields are last in the maint db table // process message changes if ( msglines != 0 ) { //// test for overflow //alert("myMsg.scrollHeight = " + myMsg.scrollHeight + " myMsg.clentHeight = " + myMsg.clientHeight) //if ( myMsg.scrollHeight > myMsg.clientHeight ) { // if ( !confirm("Warning: hidden " + l_t21message_desc + " line(s) will be lost! Continue?") ) // return 0 //} var newmsgline = myMsg.value.replace(/\r/g,"").replace(/\n*$/,"").split("\n") //alert("newmsgline.length = " + newmsgline.length + " actual msglines = " + msglines) var foundnonblank = 0 for ( var i = (newmsgline.length - 1); i >= 0; --i ) { //alert("test trim: newmsgline[" + i + "] = [" + newmsgline[i] + "]") newmsgline[i] = newmsgline[i].replace(/[ \t]*$/, ""); // trim trailing space if ( !foundnonblank && newmsgline[i] == "" ) { newmsgline.pop() // remove trailing blank lines //alert("pop blank line i = " + i) continue } else { foundnonblank = true } //alert("trim: newmsgline[" + i + "] = [" + newmsgline[i] + "]") } var msgoverflow = "" var j = 0 var k = 1 for ( var i = 1; i <= msglines; ++i ) { var newmsg = "" if ( msgoverflow.length > 0 ) { newmsg = msgoverflow msgoverflow = "" //alert("overflow: alter to newmsg=[" + newmsg + "]") } else { //alert("j = " + j + " newmsgline.length = " + newmsgline.length) if ( j < newmsgline.length ) { //alert("newmsgline[" + j + "] =[" + newmsgline[j] + "]") newmsg = newmsgline[j++].replace(/[\r\n]/g,"") } else { // no more data newmsg = "" } //alert("newmsg=[" + newmsg + "]") } // handle overflow wrap if ( newmsg.length > l_msgline_length ) { //alert("newmsg.length=" + newmsg.length + " is > " + " l_msgline_length=" + l_msgline_length) // handle word wrap // find last blanmk space and wrap at that point // else wrap at line length var wwrap = newmsg.substr(0,l_msgline_length).search(/\w+?$/) if ( wwrap > 0 ) { // word wrap //alert("word wrap at " + wwrap) msgoverflow = newmsg.substr(wwrap) newmsg = newmsg.substr(0, wwrap) } else { // line length wrap //alert("wrap at linelength = " + l_msgline_length) msgoverflow = newmsg.substr(l_msgline_length) newmsg = newmsg.substr(0,l_msgline_length) } //alert("wrap: alter to newmsg=[" + newmsg + "]") } //alert("new msg line " + i + "=[" + newmsg + "]" + " j=" + j + " k=" + k) // store msg line in correct msg field for ( ; k <= 9;) { // Msg1 ... Msg9 possibles var msgtag = "Msg" + k++ if ( msg_fld[msgtag] ) { //alert("Store " + msgtag + " = [" + newmsg + "]") var ni = msg_fld[msgtag] if ( thisRecordNo == 0 || newmsg != enqdat.Recordset.Fields.Item(ni).value ) { // add or msg line changed //alert("have changed " + msgtag + " ni=" + ni + "\n value=[" + enqdat.Recordset.Fields.Item(ni).value + "]" + "\n newmsg=[" + newmsg + "]") newmsg = newmsg.replace(/\'/g,"\\^") newmsg = newmsg.replace(/\"/g,'\\"') enqdatupdcmd += "enqdat.Recordset.Fields.Item(" + ni + ").value = " + "'" + newmsg + "'" + "; " sqlbit += ((sqlbit.length > 0) ? ", " : "") if ( thisRecordNo == 0 ) { // insert new sqlbit += "'" + newmsg + "'" } else { // update sqlbit += msgtag + " = " + "'" + newmsg + "'" } // for audit trail if ( thisRecordNo == 0 ) {//Add audittrailtxt += msgtag + ": " + newmsg; audittrailtxt += "\n"; } else { // Update var oldmsg = enqdat.Recordset.Fields.Item(ni).value; audittrailtxt += msgtag + ": " + oldmsg; audittrailtxt += " -> " + newmsg; audittrailtxt += "\n"; } } else { if ( thisRecordNo == 0 ) { // insert new sqlbit += ((sqlbit.length > 0) ? ", " : "") sqlbit += "''" } } break } } } //alert("j = " + j + " newmsgline.length = " + newmsgline.length) //// test for overflow) if ( j < newmsgline.length || msgoverflow.length > 0 ) { if ( !ynConfirm("Warning: There are too many lines in the " + l_t21message_desc + ". Information will be lost! Continue?") ) return 0 } //--------------- } //alert("sqlbit=[" + sqlbit + "]") //---------------------------------- if ( sqlbit == "" ) { //alert("Nothing Changed!") } else { var sql = "" if ( thisRecordNo == 0 ) { // insert new sql += "insert into " + l_mainttable + " values (" sql += sqlbit sql += ")" } else { // update sql += "update " + l_mainttable + " set " + sqlbit sql += " where" if ( l_recordno_is_rowid ) sql += " rowid = " + thisRecordNo else sql += " " + fld_desc[ENQDAT_RECORDNOCOL] + " = " + thisRecordNo } //alert("sql=[" + sql + "]") var unlid3 = wbtgetunl(false,handle_save_RecordNo, '../wbt_dosql.cgi?DOSQLCMD="'+sql+'"', 'POST') } // edate is configured if ( EDATECOL >= 0 ) { var edate_after = enqdat.Recordset.Fields.Item(EDATECOL).value // record was terminated if ( edate_before == "" && edate_after != "" ) { l_custom_record_terminated() } } if ( in_reassign ) { // in reassig if ( in_modify ) { // this was a modify // end date should have been set // now go and add new reassigned entry // (get user to set edate if not set doReassignEntry() return } if ( in_add ) { // this was a add phase of reassign in_reassign = 0 // so done. } } reset_maint() //clearall(1,1) // clear all //rjs rb // rebuild non-cached pick lists // fld_VALIDATE_build_options(-1,0) clear_srch_vars(); curfld = startfld; curinput = drows.rows[1].cells(curfld).firstChild.firstChild; curinput.blur(); curinput.focus(); // force search for this record keysrch_thisRecordNo = thisRecordNo // search for recordno only keySrchCol() // re-search to isolate return 1 } function handle_save_RecordNo(unlid,irow,rowstr,nflds,fld_arr,rec_arr) { //alert("handle_save_RecordNo(" + unlid + "," + irow + "," + rowstr + "," + nflds + "," + fld_arr[0] + ")") if ( irow < 0 ) { // done //alert("dumpobj fld_arr") //dumpobj(fld_arr) //alert("dumpobj rec_arr") //dumpobj(rec_arr) // test status if ( rec_arr.status != 0 ) { //alert("Testing ERROR: handle_save_RecordNo - wbtgetunl() rec_arr.status = " + rec_arr.status + " will continue anyway!") return } if ( in_add ) { var newrecordno = 0; if ( l_recordno_is_rowid ) newrecordno = rec_arr.rowid; else newrecordno = rec_arr.serial; do_audittrail("Add", newrecordno); } else { var recordno = enqdat.Recordset.Fields.Item(ENQDAT_RECORDNOCOL).value; do_audittrail("Update", recordno); } if ( in_add ) { enqdat.Recordset.AddNew() } l_custom_set_hidden_from_direnq(); // change local cahce values //alert("enqdatupdcmd=[" + enqdatupdcmd + "]") if ( enqdatupdcmd.length > 0 ) // save new message to enqdat eval(enqdatupdcmd) if ( thisRecordNo == 0 ) { // new inserted if ( l_recordno_is_rowid ) thisRecordNo = rec_arr.rowid else thisRecordNo = rec_arr.serial enqdat.Recordset.Fields.Item(ENQDAT_RECORDNOCOL).value = thisRecordNo //alert("set thisRecordNo to " + thisRecordNo) } if ( do_refresh_after_save ) { do_refresh_after_save = false // because edate in db on other rec changed enqdat.DataURL = enqdat.DataURL; enqdat.Reset(); } return 1 } return 1 } //---------------------------------------------- function validate_input(field,fld) { var sqlcondition = "" var found = -1 var infield = field //alert("validate_input() fld=" + fld) if ( field != "" ) { show_status("Validating " + field.id + "...") //alert("validate_input() SINGLE fld=" + fld + " ...") if ( validate_field(field,fld,0) <= 0 ) { //alert("validate_field() SINGLE fld=" + fld + " returned INVALID.") return 0 // NOT OK } // dont check constraints unless doing all Fields - see below) } else { show_status("Validating...") //alert("validate_input() ALL ...") //alert("DEBUG: validate required constraints...") for ( fld=1; fld < nflds; ++fld ) { if ( (fld_desc[fld] == "Sdate" || fld_desc[fld] == "Edate" ) && fld_has_changed[fld] && in_modify && !done_historic_changes_in_save_alert ) { done_historic_changes_in_save_alert = true if ( in_modify && !ynConfirm(MAINT_HISTORIC_WARNING + "\n" + "Confirm that you want to Continue?") ) { curfld = fld setsrchfld(curfld,0) // move to fld return 0 // NOT OK } } if ( fld_validate[fld] >= 0 ) { infield = inputfield(fld) if ( validate_field(infield,fld,0) <= 0 ) { //alert("DEBUG: validate_field() validate required fld=" + fld + " fld_desc[" + fld + "]=" + fld_desc[fld] + " returned INVALID.") curfld = fld setsrchfld(curfld,0) // move to fld return 0 // NOT OK } } } //alert("DEBUG: validate compare constriants...") for ( fld=1; fld < nflds; ++fld ) { if ( fld_validate[fld] >= 0 ) { infield = inputfield(fld) if ( !validate_compare_constraints(infield,fld) ) { //alert("DEBUG: validate_compare_constraint() fld=" + fld + " returned INVALID.") curfld = fld setsrchfld(curfld,0) // move to fld return 0 // NOT OK } } } // all Fields OK. // check for overlapping historic entries //alert("DEBUG: check for historic (edate set) overlap") sqlcondition = maint_historic_overlaps_SQLwhere found = count_entry_exists_SQL(sqlcondition) //alert("DEBUG: count_entry_exists_SQL(historic_overlaps) returned exists (" + found + ").") // if overlapping historic entries if ( found == 1 ) { alert("Historic Entry already exists (" + entry_cnt + ")") curfld = startfld setsrchfld(curfld,0) return 0 // NOT OK. } // check for overlapping currenty entry(s) //alert("DEBUG: check for current (blank edate) overlap") sqlcondition = maint_current_overlaps_SQLwhere found = count_entry_exists_SQL(sqlcondition) //alert("DEBUG: count_entry_exists_SQL(current_overlaps) returned exists (" + found + ").") // if overlapping current exists if ( found == 1 ) { // current entry exists in db // if in ADD prompt to set Edate on existing //alert("DEBUG: found current (blank edate) overlap - (if ADDing then ask to set edate on historic)") if ( in_add && can_reassign ) { if ( !ynConfirm(ENDDATECURRENTPROMPT) ) { curfld = startfld setsrchfld(curfld,0) return 0 // NOT OK } // endate date current entry(s) //alert("go end it all") // get new entries Sdate var sdatestr = fldtrim(drows.rows[1].cells(SDATECOL).firstChild.firstChild.value) // set existing entries edate to // aboves (sdatestr - 1 day) var sdd = 1 * sdatestr.substr(0,2) var smm = 1 * sdatestr.substr(3,2) var syyyy = 1 * sdatestr.substr(6,4) var edate = new Date() edate.setFullYear(syyyy, smm-1, sdd) var sdate = new Date() sdate.setFullYear(syyyy, smm-1, sdd-1) var edd = sdate.getDate() var emm = sdate.getMonth() + 1 var eyyyy = sdate.getFullYear() var edatestr = (edd < 10 ? "0":"") + edd + "-" + (emm < 10 ? "0":"") + emm + "-" + eyyyy //alert("edatestr = [" + edatestr + "]") var basesql = "" basesql = "update " + l_mainttable basesql += " set edate = '" + edatestr + "'" basesql += " where edate IS NULL" basesql += " and sdate <= '" + edatestr + "'" basesql += " and " + l_maint_entry_exists_SQLwhere + ";" var sql = parseSQL(basesql) //alert("sql=[" + sql + "]") //audittrailtxt = "Edate: " + edatestr; audittrailtxt = sql; var unlid = wbtgetunl(false,handle_end_existing, '../wbt_dosql.cgi?DOSQLCMD="'+sql+'"', 'POST') } else { alert("Entry already exists (" + entry_cnt + ")") curfld = startfld setsrchfld(curfld,0) return 0 // NOT OK. } } //alert("DEBUG: addnew phase...") for ( fld=1; fld < nflds; ++fld ) { if ( fld_validate[fld] >= 0 ) { infield = inputfield(fld) // add new if ( validate_field(infield,fld,1) <= 0 ) { //alert("validate_field() ADD NEW fld=" + fld + " returned INVALID.") curfld = fld setsrchfld(curfld,0) // move to fld return 0 // NOT OK } } } } return 1 // OK } function handle_end_existing(unlid,irow,rowstr,nflds,fld_arr,rec_arr) { //alert("handle_end_existing(" + unlid + "," + irow + "," + rowstr + "," + nflds + "," + fld_arr[0] + ")") if ( irow < 0 ) { // done if ( rec_arr.status != 0 ) { return 0 } audittrailtxt += "\n"; audittrailtxt += "Rows Affetced: " + rec_arr.nrows; var recordno = -1; do_audittrail("EndExisting", recordno); // force data reload after save do_refresh_after_save = true } return 1 } function validate_field(field,fld,addnew) { var isvalid = 0 //alert("validate_field() addnew=" + addnew + " fld=" + fld + " fld_desc=" + fld_desc[fld] + " field.id=" + field.id + " field.value=[" + field.value + "]" + " fld_validate[" + fld + "]=" + fld_validate[fld] + " fld_validate_required_constraint[" + fld + "]=" + fld_validate_required_constraint[fld]) var newval // handle required constraint if ( fldtrim(field.value).length == 0 ) { // is blank switch ( fld_validate_required_constraint[fld] & 3 ) { case 0: // not required default: isvalid = 1 // return OK. return isvalid case 1: // required if ( field.value.length <= 0 ) { // is blank curfld = fld setsrchfld(curfld,0) // stay in field isvalid = 0 // return NOT OK alert(fld_desc[fld] + " requires a value.") return isvalid } break; // stay and validate case 2: // required unless CC case 3: // required unless CC and clear CC if this set if ( fld_validate_CC[fld] >= 0 && fld_validate_CC[fld] < 99 ) { var relinfield = inputfield(fld_validate_CC[fld]) // CC has a value so this field is NOT required if ( fldtrim(relinfield.value).length > 0 ) { isvalid = 1 // return OK. return isvalid } var desc1 = "" if ( (fld_validate[fld] == 6 /*DirectoryID*/ && fld_validate[fld_validate_CC[fld]] == 5 /*GroupID*/) || (fld_validate[fld] == 5 /*GroupID*/ && fld_validate[fld_validate_CC[fld]] == 6 /*DirectoryID*/)) desc1 = "Please assign a Person or Group to this Entry." else desc1 = fld_desc[fld] + " requires a value because " + fld_desc[fld_validate_CC[fld]] + " is BLANK." curfld = fld setsrchfld(curfld,0) // stay in field isvalid = 0 // return NOT OK alert(desc1) return isvalid } else { alert("ERROR: in configuration fld_validate_required_constraint[" + fld + "]=" + fld_validate_required_constraint[fld] + " but fld_validate_CC[" + fld + "] is NOT set.") } break; } } // field is not blank, so validate it //alert("DEBUG: validate_field() fld=" + fld + " addnew=" + addnew + " fld_validate[" + fld + "]=" + fld_validate[fld]) switch ( fld_validate[fld] ) { case 19: // custom case 18: // custom case 17: // custom case 16: // custom case 15: // custom case 14: // custom case 13: // custom case 12: // custom case 11: // custom case 10: // custom var customvalidatefunc = "custom_validate_" + fld_validate[fld] + "(" + field.id + "," + fld + ")" //alert("DEBUG: fld=" + fld + " about to call " + customvalidatefunc) try { isvalid = eval(customvalidatefunc) //alert("DEBUG: " + customvalidatefunc + " RETURNED: isvalid = " + isvalid) if ( isvalid <= 0 ) { //alert("DEBUG: " + customvalidatefunc + " returned NOT valid") isvalid = 0 // NOT OK } break } catch(exccode) { curfld = fld setsrchfld(curfld,0) // stay in field alert("ERROR: in configuration, " + customvalidatefunc + " eval.") isvalid = 0 break } isvalid = 1 break; case 9: // money var fldval = parseFloat(fldtrim(field.value)); if ( isNaN(fldval) ) { curfld = fld; setsrchfld(curfld,0); // stay in field alert("Invalid value for " + fld_desc[fld]); isvalid = 0; break; } isvalid = 1 // OK. break; case 8: // float var fldval = parseFloat(fldtrim(field.value)); if ( isNaN(fldval) ) { curfld = fld; setsrchfld(curfld,0); // stay in field alert("Invalid value for " + fld_desc[fld]); isvalid = 0; break; } isvalid = 1 // OK. break; case 7: // integer var fldval = parseInt(fldtrim(field.value)); if ( isNaN(fldval) ) { curfld = fld; setsrchfld(curfld,0); // stay in field alert("Invalid value for " + fld_desc[fld]); isvalid = 0; break; } isvalid = 1 // OK. break; case 6: // DirectoryID isvalid = 1 // OK. break; case 5: // GroupID //try { // search_direnq("","",field.value,"") //} //catch (exccode) { // alert("ERROR: trying search directory") // isvalid = 0 // NOT OK // break //} //... // need to test direnq frame // ->fldtrim(drows.rows[1].cells(7).firstChild.firstChild.value) // for matching grid // but need to wait for // if (drows.readyState == "complete" // && drows.rows.length > DOFF) { // in onreadystatechange event which fires multiple times!!! //... isvalid = 1 // OK. break; case 4: // Date setup_fld_VALIDATE_date(field) // may not have been done yet newval = field.value.replace(/ +/g,"-") // make formatting consistantly '-'s newval = newval.replace(/[\/\t\.]/g,"-") // make formatting consistantly '-'s if ( newval.search(/\-/) >= 0 ) { // has dashes //alert("before split neval=[" + newval + "]") var newdt_arr = newval.split("-") if ( newdt_arr.length == 3 ) { var new_dd = newdt_arr[0] * 1 var new_mm = newdt_arr[1] * 1 var new_year = newdt_arr[2] * 1 //alert("new_dd=" + new_dd + " new_mm=" + new_mm + " new_year=" + new_year) newval = ((new_dd < 10 ? "0" : "") + new_dd) + ((new_mm < 10 ? "0" : "") + new_mm) + ((new_year < 10 ? "0" : "") + new_year) //alert("reformed: newval=[" + newval + "]") } } newval = newval.replace(/[\/ \-\t\.]/g,"") // remove formatting //alert("clean: newval=[" + newval + "]") if ( newval.length != 8 && newval.search(/^[0-9][0-9][0-9][0-9][0-9][0-9]*$/) == 0 ) { //ddmmyy, add century var yy = newval.substr(4,2) var now_ccyy = "" + now.getFullYear() var now_yy = now_ccyy.substr(2,2) var now_century = Math.floor(now_ccyy / 100) //alert("yy=" + yy + " now_yy=" + now_yy + " now_century=" + now_century) var centurystr = (now_century < 10 ? "0" : "") + now_century newval = newval.substr(0,4) + centurystr + yy } if ( newval.length != 8 && newval.search(/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]*$/) != 0 ) { // clear bad entry so you can click calendar button field.value = "" // run field changed code (without validation) to // copy to srch/TEX fld check_field_changed(field,0,0) curfld = fld setsrchfld(curfld,0) // stay in field isvalid = 0 // NOT OK alert(fld_desc[fld] + " bad format") break } // reformat newval = newval.substr(0,2) + "-" + newval.substr(2,2) + "-" + newval.substr(4,4) var calobj = eval("calendar_" + field.id) var newdate = calobj.prs_date(newval) if ( newdate == null ) { // calendar would have popped an alert // clear bad entry so you can click calendar button field.value = "" // run field changed code (without validation) to // copy to srch/TEX fld check_field_changed(field,0,0) curfld = fld setsrchfld(curfld,0) // stay in field isvalid = 0 // NOT OK alert("Invalid value for " + fld_desc[fld]) break } newval = calobj.gen_date(newdate) //alert("newval=[" + newval + "]") if ( newval != field.value ) // replace original if changed field.value = newval isvalid = 1 // OK. break; case 21: // SELFpicklist isvalid = fld_VALIDATE_addoptions(fld,in_maint) if ( isvalid <= 0 ) { // not in picklist // always allow new isvalid = 1 } break; case 20: // CODEDpicklist isvalid = fld_VALIDATE_addoptions(fld,in_maint) if ( isvalid <= 0 ) { // not in picklist // NO new allowed curfld = fld setsrchfld(curfld,0) // stay in field alert("Invalid value for " + fld_desc[fld]) } break; case 3: // SQLpicklist isvalid = fld_VALIDATE_addoptions(fld,in_maint) if ( isvalid <= 0 ) { // not in picklist if ( fld_validate_allownew[fld] ) { //allownew isvalid = 1 } else { //NO new allowed curfld = fld setsrchfld(curfld,0) // stay in field alert("Invalid value for " + fld_desc[fld]) } } break; case 2: // Boolean (special type of picklist) isvalid = fld_VALIDATE_addoptions(fld,in_maint) if ( isvalid <= 0 ) { // not in picklist // NO new allowed (only TRUE/FALSE) curfld = fld setsrchfld(curfld,0) // stay in field alert("Invalid value for " + fld_desc[fld]) } break; case 1: // custom Picklist // validate custom picklist isvalid = validate_custom_picklist(field,fld,addnew) if ( isvalid <= 0 ) { // not in picklist //alert("DEBUG: validate_custom_picklist() fld+" + fld + " addnew=" + addnew + " returned isvalid=" + isvalid) curfld = fld setsrchfld(curfld,0) // stay in field //alert("Invalid value for " + fld_desc[fld]) } break; case 0: // no validate except for possible constraint isvalid = 1 // OK break; case -1: // not a VALIDATE field isvalid = 1 // OK break; default: // all other VALIDATE Fields isvalid = 1 // OK break; } //alert("DEBUG: validate_field() fld=" + fld + " addnew=" + addnew + " RETURN: isvalid=" + isvalid) return isvalid } //--------------------------------------- function validate_custom_picklist(field,fld,addnew) { var isvalid = 1 //alert("validate_custom_picklist() addnew=" + addnew + " fld=" + fld + " fld_desc=" + fld_desc[fld] + " field.id=" + field.id + " field.value=[" + field.value + "]" + " fld_validate[" + fld + "]=" + fld_validate[fld] + " fld_validate_required_constraint[" + fld + "]=" + fld_validate_required_constraint[fld] + " fld_validate_fldidref[" + fld + "]=" + fld_validate_fldidref[fld]) if ( fld_validate[fld] != 1 ) { alert("ERROR: fld=" + fld + " is NOT a custom picklist.") return 0 } var curfldidref = fld_validate_fldidref[fld] if ( curfldidref >= 0 && curfldidref < 99 ) { // scan for this and associated fldidref custom picklist // (ie. ones with the same fldidref) for ( var i=1; i < nflds; ++i ) { // custom picklist related to or is fld if ( curfldidref == fld_validate_fldidref[i] ) { // validate all related lists (incl. fld) if (fld_VALIDATE_addoptions(i,in_maint) <= 0) { isvalid = 0 // NOT OK } } } } else { // single NON fldidref picklist isvalid = fld_VALIDATE_addoptions(fld,in_maint) } if ( !addnew && fld_validate_allownew[fld] ) { //alert("validate_custom_picklist()" + " fld=" + fld + " fld_desc=" + fld_desc[fld] + " isvalid=" + isvalid + " :: NEW NEEDED AND ALLOWED BUT NOT addnew PHASE") //return isvalid return 2 // return NEW NEEDED } if ( isvalid > 0 ) { //alert("validate_custom_picklist()" + " fld=" + fld + " fld_desc=" + fld_desc[fld] + " :: IS VALID") return isvalid // OK. } //alert("[" + field.value + "] is NOT a valid pick item for " + fld_desc[fld]) //alert("fld_validate_allownew[" + fld + "]=" + fld_validate_allownew[fld]) // NEW NOT allowed if ( !fld_validate_allownew[fld] ) { alert("Invalid pick value for " + fld_desc[fld] + " (new not allowed).") return 0 } //-------- // ADD NEW //alert("validate_custom_picklist() addnew=" + addnew + " fld=" + fld + " fld_desc=" + fld_desc[fld] + " field.id=" + field.id + " field.value=[" + field.value + "]" + " fld_validate[" + fld + "]=" + fld_validate[fld] + " fld_validate_required_constraint[" + fld + "]=" + fld_validate_required_constraint[fld] + " fld_validate_fldidref[" + fld + "]=" + fld_validate_fldidref[fld] + " XXX ADD NEW XXX") var newpickvals = field.value var newpickdescs = fld_desc[fld] if ( fld_validate_ref1[fld] >= 0 && fld_validate_ref1[fld] < 99 && fld != fld_validate_ref1[fld] ) { newpickvals += ", " + inputfield(fld_validate_ref1[fld]).value newpickdescs += ", " + fld_desc[fld_validate_ref1[fld]] } if ( fld_validate_ref2[fld] >= 0 && fld_validate_ref2[fld] < 99 && fld != fld_validate_ref2[fld] ) { newpickvals += "," + inputfield(fld_validate_ref2[fld]).value newpickdescs += "," + fld_desc[fld_validate_ref2[fld]] } if ( fld_validate_ref3[fld] >= 0 && fld_validate_ref3[fld] < 99 && fld != fld_validate_ref3[fld] ) { newpickvals += ", " + inputfield(fld_validate_ref3[fld]).value newpickdescs += ", " + fld_desc[fld_validate_ref3[fld]] } if ( ynConfirm("Add a NEW picklist item '" + newpickvals + "' for " + newpickdescs) ) { // add new //alert("adding new desc=[" + field.value + "]" + " fld=" + fld) if ( typeof(custompicklisttable) == "undefined" || custompicklisttable.length <= 0 ) { //alert("ERROR: custompicklisttable configuration is not set.") return retval } var sql = "" sql += "insert into " + custompicklisttable sql += " values (" sql += "0" // pickid serial sql += "," if (fld_validate_customid[fld]) // use customid sql += "'" + customid + "'" else sql += "''" sql += "," if (curfldidref) // use fldrefid sql += "'" + fld_desc[fld_validate_fldidref[fld]] + "'" else sql += "''" sql += "," var ref1fld = (fld_validate_p[fld] == 1) ? fld : fld_validate_ref1[fld] if (ref1fld >= 0 && ref1fld < 99) // ref1 sql += "'" + inputfield(ref1fld).value + "'" else sql += "''" sql += "," var ref2fld = (fld_validate_p[fld] == 2) ? fld : fld_validate_ref2[fld] if (ref2fld >= 0 && ref2fld < 99) // ref2 sql += "'" + inputfield(ref2fld).value + "'" else sql += "''" sql += "," var ref3fld = (fld_validate_p[fld] == 3) ? fld : fld_validate_ref3[fld] if (ref3fld >= 0 && ref3fld < 99) // ref3 sql += "'" + inputfield(ref3fld).value + "'" else sql += "''" sql += ");" //alert("sql=[" + sql + "]") audittrailtxt = sql; wbtgetunl(false,handle_insertnewcustompick, '../wbt_dosql.cgi?DOSQLCMD="'+sql+'"', 'POST') if ( newpick_status ) { alert("ERROR: during insert of new pick value.") return 0 } get_custompicklist_recs = 1 fld_VALIDATE_build_options(fld,0) } else { // invalid alert("Invalid pick value for " + fld_desc[fld] + ".") return 0 } return 1 } //--------------------------------------- function count_entry_exists_SQL(sqlcondition) { // check if record already exists if ( l_maint_entry_exists_SQLwhere == "" ) { alert("ERROR: in configuation, maint_extry_exists_SQLwhere is NOT defined.") return -2 } //alert("l_maint_entry_exists_SQLwhere=[" + l_maint_entry_exists_SQLwhere + "]") var basesql = "select count(*) from " + l_mainttable + " where " + l_maint_entry_exists_SQLwhere if ( sqlcondition != "") { basesql += " and " + sqlcondition } //alert("basesql=[" + basesql + "]") var sql = parseSQL(basesql) if ( in_modify ) { sql += " and " + fld_desc[ENQDAT_RECORDNOCOL] + " != " + thisRecordNo } //alert("DEBUG: sql=[" + sql + "]") entry_cnt = -1 unlid = wbtgetunl(false,proc_entry_cnt, '../wbt_dosql.cgi?DOSQLFMT="UNL"&DOSQLCMD="'+sql+'"', 'POST') //if ( entry_cnt != 0 ) { // //alert("Testing: return OK") // //return 0 //} return entry_cnt } function parseSQL(basesql) { var sql = basesql var re = new RegExp("(%[0-9]+)+", "g") while ( (re_arr = re.exec(basesql)) != null ) { //alert(re_arr.index + "-" + re_arr.lastIndex + "\t" + re_arr[1]); var i = parseInt(re_arr[1].substr(1)) if ( isNaN(i) || (i > nflds && i != 99) ) { alert("ERROR: parsing SQL [" + basesql + "]. found illegal [" + re_arr[1] + "]" + " nflds=" + nflds) return -3 } var sstr = "NOTSET" sstr = fldclip(inputfield(i).value) var rep_re = new RegExp(re_arr[1], "") sql = sql.replace(rep_re, sstr) //alert("replaced " + re_arr[1] + " with [" + sstr + "]\n" + " sql=[" + sql + "]" ) } return sql } var entry_cnt = -1 function proc_entry_cnt(unlid,irow,rowstr,nflds,fld_arr,rec_arr) { //alert("proc_entry_cnt(" + unlid + "," + irow + "," + rowstr + "," + nflds + "," + fld_arr[0] + ")") if ( irow < 0 ) { // done //alert("entry_cnt = " + entry_cnt) return 1 } entry_cnt = parseInt(fld_arr[0]) return 1 } function validate_compare_constraints(field,fld) { //alert("validate_compare_constraints() fld=" + fld + " + fld_desc=" + fld_desc[fld] + " field.id=" + field.id + " field.value=[" + field.value + "]" + " fld_validate[" + fld + "]=" + fld_validate[fld] + " fld_validate_required_constraint[" + fld + "]=" + fld_validate_required_constraint[fld] + " fld_validate_comparison_constraint[" + fld + "]=" + fld_validate_comparison_constraint[fld]) var fldrequired = null var fldval = null var relfldval = null var relfldrequired = null // check contraint switch ( fld_validate[fld] ) { case 9: // money case 8: // float fldrequired = fld_validate_required_constraint[fld] fldval = parseFloat(fldtrim(field.value)) if ( isNaN(fldval) ) fldval = null if ( fld_validate_CC[fld] >= 0 && fld_validate_CC[fld] < 99 ) { relfldrequired = fld_validate_required_constraint[fld_validate_CC[fld]] relfldval = parseFloat(fldtrim(drows.rows[1].cells(fld_validate_CC[fld]).firstChild.firstChild.value)) if ( isNaN(relfldval) ) relfldval = null } break case 7: // integer fldrequired = fld_validate_required_constraint[fld] fldval = parseInt(fldtrim(field.value)) if ( isNaN(fldval) ) fldval = null if ( fld_validate_CC[fld] >= 0 && fld_validate_CC[fld] < 99 ) { relfldrequired = fld_validate_required_constraint[fld_validate_CC[fld]] relfldval = parseInt(fldtrim(drows.rows[1].cells(fld_validate_CC[fld]).firstChild.firstChild.value)) if ( isNaN(relfldval) ) relfldval = null } break case 4: // date dd-mm-yyyy fldrequired = fld_validate_required_constraint[fld] var tmpfldval = fldtrim(field.value) var yyyy_str = tmpfldval.substr(6,4) var mm_str = tmpfldval.substr(3,2) var dd_str = tmpfldval.substr(0,2) var datestr = yyyy_str + mm_str + dd_str //alert("datestr=[" + datestr + "]") fldval = parseInt(datestr) if ( isNaN(fldval) ) fldval = null //alert("fld=" + fld + " fld_desc[" + fld + "] = " + fld_desc[fld] + " fld_validate_CC[" + fld + "] = " + fld_validate_CC[fld]) if ( fld_validate_CC[fld] >= 0 && fld_validate_CC[fld] < 99 ) { relfldrequired = fld_validate_required_constraint[fld_validate_CC[fld]] tmpfldval = fldtrim(inputfield(fld_validate_CC[fld]).value) //tmpfldval = fldtrim(drows.rows[1].cells(fld_validate_CC[fld]).firstChild.firstChild.value) yyyy_str = tmpfldval.substr(6,4) mm_str = tmpfldval.substr(3,2) dd_str = tmpfldval.substr(0,2) datestr = yyyy_str + mm_str + dd_str //alert("rel datestr=[" + datestr + "]") relfldval = parseInt(datestr) if ( isNaN(relfldval) ) relfldval = null } break; default: // all others assume string fldrequired = fld_validate_required_constraint[fld] fldval = fldclip(field.value) if ( fldval == "" ) fldval = null if ( fld_validate_CC[fld] >= 0 && fld_validate_CC[fld] < 99 ) { //relfldval = fldclip(inputfield(fld_validate_CC[fld]).value) relfldval = fldclip(drows.rows[1].cells(fld_validate_CC[fld]).firstChild.firstChild.value) relfldrequired = fld_validate_required_constraint[fld_validate_CC[fld]] if ( relfldval == "" ) relfldval = null } } // NOTE: field required constraint is checked in validate_field() //alert("fldrequired=[" + fldrequired + "]" + " fldval=[" + fldval + "]" + " relfldrequired=[" + relfldrequired + "]" + " relfldval=[" + relfldval + "]") // field anf rel CC field BOTH have values if ( fldval != null && relfldval != null ) { switch ( fld_validate_comparison_constraint[fld] ) { case 0: // no comparison constraint default: break; case 1: // reserved case 2: // reserved case 3: // reserved break; case 4: // < CC if ( !(fldval < relfldval) ) { alert(fld_desc[fld] + " must be less than " + fld_desc[fld_validate_CC[fld]]) return 0 } break; case 5: // <= CC if ( !(fldval <= relfldval) ) { alert(fld_desc[fld] + " must be less than or equal to " + fld_desc[fld_validate_CC[fld]]) return 0 } break; case 6: // == CC if ( !(fldval == relfldval) ) { alert(fld_desc[fld] + " must equal to " + fld_desc[fld_validate_CC[fld]]) return 0 } break; case 7: // >= CC if ( !(fldval >= relfldval) ) { alert(fld_desc[fld] + " must greater than or equal to " + fld_desc[fld_validate_CC[fld]]) return 0 } break; case 8: // > CC if ( !(fldval > relfldval) ) { alert(fld_desc[fld] + " must greater than " + fld_desc[fld_validate_CC[fld]]) return 0 } break; case 9: // != CC if ( !(fldval != relfldval) ) { alert(fld_desc[fld] + " must NOT be equal to " + fld_desc[fld_validate_CC[fld]]) return 0 } break; } } return 1 } var newpick_status = 0 function handle_insertnewcustompick(unlid,irow,rowstr,nflds,fld_arr,rec_arr) { if ( irow == -1 ) { // done newpick_status = rec_arr.status if ( rec_arr.status != 0 ) { alert("ERROR: handle_insertnewcustompick - wbtgetunl() rec_arr.status = " + rec_arr.status) return 0 } do_audittrail("AddPick", -1); return 1 } return 1 } //---------------------------------------------- var default_pick_options_startidx = -1; function add_picklist_option(fld,selinp,desc,val,selected,hide,classname) { //alert("add_picklist_option() fld=" + fld + " desc=[" + desc + "]") // check if already in list for ( var i = 0; i < selinp.options.length; ++i ) { var checkdesc = fld_validate_picklist_vals["a"+fld+i] //alert("add tag=[" + ("a" + fld + i) + "]" + " desc=[" + desc + "]" + " check=[" + checkdesc + "]") if ( checkdesc == desc ) return } var pickidx = selinp.options.length // next option will be fld_validate_picklist_vals["a"+fld+pickidx] = (val != null) ? val : desc var option = new Option(hide ? " ... " : desc, pickidx) option.selected = selected option.className = classname //why doesn't this work? //if ( hide ) // option.style.display = "none" selinp.options.add(option) return pickidx } //------------------------------------- function getpicklistpos(fld) { var inppos = drows.rows[1].cells(fld).offsetLeft var dropwidth = drows.rows[1].cells(fld).offsetWidth //if ( fld_validate[fld] == 3 ) // SQL picklist // dropwidth += 100 var dropwidth = eval("fld_picklist_popup_" + fld + ".offsetWidth") var droppos = inppos - dropwidth if ( droppos < 0 ) droppos = inppos + dropwidth //window.status = "inppos=" + inppos + " dropwidth=" + dropwidth + " dropos=" + droppos return droppos } function hdr_fld_VALIDATE_picklist(fld, hdrtag, hdrlen) { var outp = ""; var desc = ""; var fldid = "fld_VALIDATE_picklist_" + fld // selector outp += "Building picklists",0,0) if ( l_enableprogressbar > 0 ) BusyOn() for ( var fld=1; fld < nflds; ++fld ) { switch ( fld_validate[fld] ) { case 21: // SELFpicklist case 20: // CODEDpicklist case 3: // SQLpicklist case 2: // Boolean (special type of picklist) case 1: // custom picklist if ( thisfld > 0 && thisfld < 99 ) { // only rebuild thisfld // and for custom piclist - any related Fields if ( fld == thisfld ) { isvalid = fld_VALIDATE_addoptions(fld,0) } else { // for custom picklist only if ( fld_validate[fld] == 1 ) { // rebuild related fldidref picklist var curfldidref = fld_validate_fldidref[fld] var thisfldidref = fld_validate_fldidref[thisfld] if ( curfldidref > 0 && curfldidref < 99 && curfldidref == thisfldidref ) { isvalid = fld_VALIDATE_addoptions(fld,0) } } } } else { // rebuild all custom picklists isvalid = fld_VALIDATE_addoptions(fld,0) } break; case 0: // no validation except for possible constraint case -1: // not a VALIDATE field default: // all other types isvalid = 1 } // if current field if ( fld == curfld && curfld != -1 && in_maint && bva == 1 && (isvalid <= 0) ) { //alert("in_maint build_options() INVALID fld=" + fld) inputfield(fld).select() // select field } if ( isvalid <= 0 ) allvalid = 0 } //show_PB("centre", "", 1, 0) if ( l_enableprogressbar > 0 ) BusyOff(); show_status("Building picklists - Done.") } function fld_VALIDATE_addoptions(fld,bva) { // bva: 0 = build, 1 = validate, 2 = show all var pickval = ""; var pickdesc = ""; var pickidx = -1; var isvalid = -1; //alert("fld_VALIDATE_addoptions(" + fld + "," + bva + ")" + " curfld=" + curfld) var opdesc = (bva == 1) ? "Validating" : "Building" //show_PB("centre", "" + opdesc + " " + fld_desc[fld] + " picklist", 0,0) show_status(opdesc + " picklist for " + fld_desc[fld] + " ...") if ( l_enableprogressbar >= 0 ) BusyOn() var hdrtag = (!(fld_type[fld] & 4)) ? "ffld" : "hfld" var selinp = eval("fld_picklist_popup_" + fld) var infield = inputfield(fld) pickidx = selinp.options.length = 1 // clear options (leave header) default_pick_options_startidx = -1; switch ( fld_validate[fld] ) { case 21: // SELFpicklist // if haven't got the SQLpicklist yet // or it is configured to be NON caching if ( get_SELFpicklist_recs[fld] || (fld_validate_required_constraint[fld] & 8) ) { var basesql = "select distinct " + fld_desc[fld] + "," + fld_desc[fld] + " from " + l_mainttable + " order by 2" var url = '' var getpost = '' if ( parseInt(getCookie("testing")) ) { getpost = 'get' url = './tstSIDMAINT_SELFpicklist_' + ((fld < 10) ? "0" : "") + fld + '.unl' } else { var sql = parseSQL(basesql) getpost = 'POST' url = '../wbt_dosql.cgi?DOSQLFMT="UNL"&DOSQLCMD="' + sql + '"' } //alert("SELFpicklist fld=" + fld + " url=[" +url+ "]") var p_src = getFile(url,'',getpost,null,null) SELFpicklist_recs[fld] = p_src.split("\n") get_SELFpicklist_recs[fld] = 0 } var p_rec = new Array() isvalid = 0 // flag not found yet var recid = -1 for (var row=0; row < SELFpicklist_recs[fld].length; ++row ) { var rowstr = fldclip(SELFpicklist_recs[fld][row]) //alert("SELFpicklist rowstr=[" + rowstr + "]") if ( rowstr == "" ) // ignore blank rows continue var p_rec = rowstr.split("|") if ( p_rec[0] == "Status:" ) { // handle status var statusmsg = p_rec[1] var nrows = parseInt(p_rec[2]) var sqlerr = rowstr.split("~") //alert("sqlerr[i]=[" + sqlerr[1] + "]") var status = parseInt(sqlerr[1]) if ( status ) alert("ERROR: fld_validate[" + fld + "]=" + fld_validate[fld] + " statusmsg=" + statusmsg + " nrows=" + nrows) break } pickval = p_rec[0] pickdesc = p_rec[1] if ( pickval != pickdesc ) pickdesc = p_rec[0] + ": " + p_rec[1] //alert("SELFpick fld=" + fld + " add pickdesc=[" + pickdesc + "] pickval=[" + pickval + "]") add_picklist_option(fld,selinp,pickdesc,pickval,0,0,hdrtag +"x") if ( bva == 1 ) { // validate current value //alert("validate current field.value=[" + infield.value + "] against picklist pickidx=" + pickidx + " pickval=[" + pickval + "]") if ( pickval == infield.value ) { //alert("found infield.value=[" + infield.value + "] in the picklist fld=" + fld) isvalid = 1 // found in list } } } if ( in_maint && selinp.options.length == 1 ) { //alert("SELFpicklist fld=" + fld + " NO PICK OPTIONS!") } // in_add and there is only one choice and // field has not already been changed then set input if ( in_add && selinp.options.length == 2 && fld_has_changed[fld] == 0 ) { pickval = fld_validate_picklist_vals["a"+fld+1] //alert("SELFpicklist fld=" + fld + " SINGLE PICK OPTION - set field.value to fld=" + fld + " pickval=[" + pickval + "]") infield.value = pickval // run field changed code (without validation) to force copy to TEX info check_field_changed(infield,0,0) } break; case 20: // CODEDpicklist if ( typeof(CODEDpicklist[fld]) == "undefined" || CODEDpicklist[fld].length <= 0 ) { alert("ERROR: CODEDpicklist[" + fld + "] configuration is not set.") break; } for (var i=0; i < CODEDpicklist[fld].length; ++i ) { pickval = CODEDpicklist[fld][i] pickdesc = pickval //alert("CODEDpick fld=" + fld + " add pickdesc=[" + pickdesc + "] pickval=[" + pickval + "]") add_picklist_option(fld,selinp,pickdesc,pickval,0,0,hdrtag +"x") if ( bva == 1 ) { // validate current value //alert("validate current field.value=[" + infield.value + "] against picklist pickidx=" + pickidx + " pickval=[" + pickval + "]") if ( pickval == infield.value ) { //alert("found infield.value=[" + infield.value + "] in the picklist fld=" + fld) isvalid = 1 // found in list } } } if ( in_maint && selinp.options.length == 1 ) { //alert("CODEDpicklist fld=" + fld + " NO PICK OPTIONS!") } // in_add and there is only one choice and // field has not already been changed then set input if ( in_add && selinp.options.length == 2 && fld_has_changed[fld] == 0 ) { pickval = fld_validate_picklist_vals["a"+fld+1] //alert("CODEDpicklist fld=" + fld + " SINGLE PICK OPTION - set field.value to fld=" + fld + " pickval=[" + pickval + "]") infield.value = pickval // run field changed code (without validation) to force copy to TEX info check_field_changed(infield,0,0) } break; case 3: // SQLpicklist if ( typeof(SQLpicklist[fld]) == "undefined" || SQLpicklist[fld].length <= 0 ) { alert("ERROR: SQLpicklist[" + fld + "] configuration is not set.") break; } // if haven't got the SQLpicklist yet // or it is configured to be NON caching if ( get_SQLpicklist_recs[fld] || (fld_validate_required_constraint[fld] & 8) ) { var basesql = SQLpicklist[fld] var url = '' var getpost = '' if ( SQLpicklist[fld].substr(0,3) == "tst" ) {// testing url = basesql getpost = "GET" } else { var sql = parseSQL(basesql) url = '../wbt_dosql.cgi?DOSQLFMT="UNL"&DOSQLCMD="' + sql + '"' getpost = "POST" } //alert("SQLpicklist fld=" + fld + " url=[" +url+ "]") var p_src = getFile(url,'',getpost,null,null) SQLpicklist_recs[fld] = p_src.split("\n") get_SQLpicklist_recs[fld] = 0 } var p_rec = new Array() isvalid = 0 // flag not found yet var recid = -1 var SQLpicklist_vals_to_desc = new Array() for (var row=0; row < SQLpicklist_recs[fld].length; ++row ) { var rowstr = fldclip(SQLpicklist_recs[fld][row]) //alert("SQLpicklist rowstr=[" + rowstr + "]") if ( rowstr == "" ) // ignore blank rows continue var p_rec = rowstr.split("|") if ( p_rec[0] == "Status:" ) { // handle status var statusmsg = p_rec[1] var nrows = parseInt(p_rec[2]) var sqlerr = rowstr.split("~") //alert("sqlerr[i]=[" + sqlerr[1] + "]") var status = parseInt(sqlerr[1]) if ( status ) alert("ERROR: fld_validate[" + fld + "]=" + fld_validate[fld] + " statusmsg=" + statusmsg + " nrows=" + nrows) break } //if ( ++recid == 0 ) // ignore header // continue pickval = p_rec[0] pickdesc = p_rec[1] if ( pickval != pickdesc ) pickdesc = p_rec[0] + ": " + p_rec[1] SQLpicklist_vals_to_desc[pickval] = pickdesc //alert("SQLpick fld=" + fld + " add pickdesc=[" + pickdesc + "] pickval=[" + pickval + "]") add_picklist_option(fld,selinp,pickdesc,pickval,0,0,hdrtag +"x") if ( bva == 1 ) { // validate current value //alert("validate current field.value=[" + infield.value + "] against picklist pickidx=" + pickidx + " pickval=[" + pickval + "]") if ( pickval == infield.value ) { //alert("found infield.value=[" + infield.value + "] in the picklist fld=" + fld) isvalid = 1 // found in list } } } fld_validate_SQLpicklist_vals_to_desc[fld] = SQLpicklist_vals_to_desc if ( in_maint && selinp.options.length == 1 ) { //alert("SQLpicklist fld=" + fld + " NO PICK OPTIONS!") } // in_add and there is only one choice and // field has not already been changed then set input if ( in_add && selinp.options.length == 2 && fld_has_changed[fld] == 0 ) { pickval = fld_validate_picklist_vals["a"+fld+1] //alert("SQLpicklist fld=" + fld + " SINGLE PICK OPTION - set field.value to fld=" + fld + " pickval=[" + pickval + "]") infield.value = pickval // run field changed code (without validation) to force copy to TEX info check_field_changed(infield,0,0) } break; case 2: // Boolean (special type of picklist) add_picklist_option(fld,selinp,"TRUE",null,0,0,hdrtag + "x") add_picklist_option(fld,selinp,"FALSE",null,0,0,hdrtag +"x") if ( bva == 1 ) { // validate current value //alert("validate current field.value=[" + infield.value + "] against TRUE/FALSE") if ( infield.value == "TRUE" || infield.value == "FALSE" ) { //alert("found infield.value=[" + infield.value + "] in the picklist fld=" + fld) isvalid = 1 // found in list } } break; case 1: // custom Picklist // read picklist values from refp - filter by customid fldidref ref1 ref2 ref3 ////if ( fld_validate_allownew[fld] ) //(New) //// add_picklist_option(fld,selinp,"(New)",null,0,!in_maint,hdrtag +"Z") //if ( fld_validate_allownew[fld] && in_maint ) //(New) // add_picklist_option(fld,selinp,"(New)",null,0,0,hdrtag +"Z") if ( typeof(custompicklist) == "undefined" || custompicklist.length <= 0 ) { alert("ERROR: custompicklist configuration is not set.") break; } var getpost = (custompicklist.substr(0,3) == "tst") ? "GET" : "POST" //alert("getFile() custompicklist=" + custompicklist + " getpost=" + getpost) if ( get_custompicklist_recs ) { var p_src = getFile(custompicklist,'',getpost,null,null) custompicklist_recs = p_src.split("\n") get_custompicklist_recs = 0 } var fldidref = fld_validate_fldidref[fld] var fldidrefdesc = fld_desc[fldidref] var p_rec = new Array() isvalid = 0 // flag not found yet for (var row=0; row < custompicklist_recs.length; ++row ) { var rowstr = fldclip(custompicklist_recs[row]) //alert("custompicklist rowstr=[" + rowstr + "]") if ( rowstr == "" ) // ignore blank rows continue var p_rec = rowstr.split(",") var pickid = p_rec[0] var pickcustomid = p_rec[1] var pickfieldid = p_rec[2] var pickref1 = p_rec[3] var pickref2 = p_rec[4] var pickref3 = p_rec[5] if ( pickid == "ID" ) // ignore header continue pickdesc = "" switch ( fld_validate_p[fld] ) { case 1: pickdesc = pickref1 break case 2: pickdesc = pickref2 break case 3: pickdesc = pickref3 break default: alert("ERROR: fld_validate_p[" + fld + "]=" + fld_validate_p[fld] + " is out of range.") } // must match customid if ( fld_validate_customid[fld] ) { if ( typeof(customid) == "undefined" || customid.length <= 0 ) { alert("ERROR: customid configuration is not set.") isvalid = -1 break; } // don't add to picklist if not customid if ( pickcustomid != customid ) { //alert("don't include fld=" + fld + " picklist must match customid=[" + customid + "]" + " pickcustomid=[" + pickcustomid + "]") continue } } if ( fldidref >= 0 && fldidref < 99 ) { // must match fielidref desc // don't add to picklist if not fieldid if ( pickfieldid != fldidrefdesc ) { //alert("don't include fld=" + fld + " pickist must match fldidrefdesc=[" + fldidrefdesc + "]" + " pickfieldid=[" + pickfieldid + "]") continue } } // filter picklist based on ref Fields if ( bva == 0 || bva == 1 ) { // filter by ref1 fld var ref1_fld = fld_validate_ref1[fld] if ( ref1_fld >= 0 && ref1_fld < 99 ) { var reffld1matchval = fldclip(drows.rows[1].cells(ref1_fld).firstChild.firstChild.value) if ((in_maint && fld_validate_p[fld] == 1 && fld == fld_validate_ref1[fld] ) || reffld1matchval != "") { if (pickref1!=reffld1matchval){ //alert("don't include pickdesc=[" + pickdesc + "] in picklist for fld=" + fld + " - ref1_fld=" + ref1_fld + " refval=[" + reffld1matchval + "]" + " picklist ref1 =[" + pickref1 + "]") continue } } } // filter by ref2 fld var ref2_fld = fld_validate_ref2[fld] if ( ref2_fld >= 0 && ref2_fld < 99 ) { var reffld2matchval = fldclip(drows.rows[1].cells(ref2_fld).firstChild.firstChild.value) if ((in_maint && fld_validate_p[fld] == 2 && fld == fld_validate_ref2[fld] ) || reffld2matchval != "") { if (pickref2!=reffld2matchval){ //alert("don't include pickdesc=[" + pickdesc + "] in picklist for fld=" + fld + " - ref2_fld=" + ref2_fld + " val=[" + reffld2matchval + "]" + " picklist ref2 =[" + pickref2 + "]") continue } } } // filter by ref3 fld var ref3_fld = fld_validate_ref3[fld] if ( ref3_fld >= 0 && ref3_fld < 99 ) { var reffld3matchval = fldclip(drows.rows[1].cells(ref3_fld).firstChild.firstChild.value) if ((in_maint && fld_validate_p[fld] == 3 && fld == fld_validate_ref3[fld] ) || reffld3matchval != "") { if (pickref3!=reffld3matchval){ //alert("don't include pickdesc=[" + pickdesc + "] in picklist for fld=" + fld + " - ref3_fld=" + ref3_fld + " refval=[" + reffld3matchval + "]" + " picklist ref3 =[" + pickref3 + "]") continue } } } } pickval = pickdesc //alert("custompick fld=" + fld + " add pickdesc=[" + pickdesc + "] fld_validate_p[" + fld + "]= " + fld_validate_p[fld]) add_picklist_option(fld,selinp,pickdesc,pickval,0,0,hdrtag +"x") //alert("field.value=[" + infield.value + "] against picklist pickidx=" + pickidx + " pickval=[" + pickval + "]") if ( pickval == infield.value ) { //alert("found infield.value=[" + infield.value + "] in the picklist fld=" + fld) isvalid = 1 // found in list } } default_pick_options_startidx = selinp.options.length add_picklist_option(fld,selinp,"-ShowFullPicks-",null,0,0,hdrtag + "Z") var curfldidref = fld_validate_fldidref[curfld] var thisfldidref = fld_validate_fldidref[fld] //alert("fld_VALIDATE_addoptions(" + "fld=" + fld + "," + "bva=" + bva + ")" + " *** custom picklist ***" + " curfld=" + curfld + " in_maint=" + in_maint + " curfldidref=" + curfldidref + " thisfldidref=" + thisfldidref + " fld_validate_picklist_valid[" + fld + "]=" + fld_validate_picklist_valid[fld]) // in_maint and validating // and fld is NOT curfld // and fld is related to curfld // and field is not already invalid (ie. for adding NEW picks) // and hasn't already been changed if ( in_maint && bva == 1 && fld != curfld && curfld != -1 && curfldidref > 0 && curfldidref < 99 && curfldidref == thisfldidref && fld_validate_picklist_valid[fld] == 1 && fld_has_changed[fld] == 0 ) { //alert("fld_VALIDATE_addoptions(" + "fld=" + fld + "," + "bva=" + bva + ")" + " *** custom picklist ***" + " curfld=" + curfld + " in_maint=" + in_maint + " curfldidref=" + curfldidref + " thisfldidref=" + thisfldidref + " fld_validate_picklist_valid[" + fld + "]=" + fld_validate_picklist_valid[fld] + " XXXXXXX> " + " selinp.options.length=" + selinp.options.length + " fld_validate_picklist_vals[a+fld+5]=" + fld_validate_picklist_vals["a"+fld+5]) // validating and not curfld switch ( selinp.options.length ) { case 5: // there are NO choices // clear input if not blank if ( infield.value != "" ) { //alert("custom picklist fld=" + fld + " NO PICK OPTION - clear field.value in fld=" + fld) infield.value = "" // if field not allowed to be blank if ( fld_validate_required_constraint[fld] & 3 ) { // store fld invalid //alert("...addoptions() A fld=" + fld + " set invalid") fld_validate_picklist_valid[fld] = 0 } // run field changed code (no validate) // to force copy to TEX info check_field_changed(infield,0,0) } break; case 6: // there is only one choice pickval = fld_validate_picklist_vals["a"+fld+5] // set input if different if ( infield.value != pickval ) { //alert("custom picklist fld=" + fld + " SINGLE PICK OPTION - set field.value to fld=" + fld + " pickval=[" + pickval + "]") infield.value = pickval // store fld valid //alert("...addoptions() B fld=" + fld + " set valid") fld_validate_picklist_valid[fld] = 1 // run field changed code (no validate) // to force copy to TEX info check_field_changed(infield,0,0) } break default: // more than 1 choice // clear input if not one of the choices if ( isvalid <= 0 ) { //alert("custom picklist fld=" + fld + " SINGLE PICK OPTION - set field.value to fld=" + fld + " pickval=[" + pickval + "]") infield.value = "" // if field not allowed to be blank if ( fld_validate_required_constraint[fld] & 3 ) { // store fld invalid //alert("...addoptions() C fld=" + fld + " set invalid") fld_validate_picklist_valid[fld] = 0 } // run field changed code (no validate) // to force copy to TEX info check_field_changed(infield,0,0) } else { // store fld valid //alert("...addoptions() D fld=" + fld + " set valid") fld_validate_picklist_valid[fld] = 1 } break } } else { if ( bva == 1 ) { // validating // store fld valid/invalid //alert("...addoptions() E fld=" + fld + " store isvalid=" + isvalid) fld_validate_picklist_valid[fld] = isvalid } } //if ( bva == 1 ) { // if ( isvalid > 0 ) // alert("IS a VALID picklist item: infield.value=[" + infield.value + "] fld=" + fld) // else // alert("NOT a VALID picklist item: infield.value=[" + infield.value + "] fld=" + fld) //} break; case 0: // no validation except for possible constraint case -1: // not a VALIDATE field default: // all other VALIDATE Fields alert("ERROR: hdr_fld_VALIDATE_picklist() fld=" + fld + " - IS NOT a VALIDATE picklist or boolean field validation type.") break; } // in search mode - add default picklist options to end of picklist if ( !in_maint ) { if ( default_pick_options_startidx < 0 ) default_pick_options_startidx = selinp.options.length add_picklist_option(fld,selinp,"(All)",null,0,1,hdrtag+"Z") add_picklist_option(fld,selinp,"(Blank)",null,0,1,hdrtag+"Z") add_picklist_option(fld,selinp,"(NotBlank)",null,0,1,hdrtag+"Z") } //show_PB("centre", "", 1, 0) if ( l_enableprogressbar > 0 ) BusyOff(); show_status(opdesc + " picklist for " + fld_desc[fld] + " - Done.") return isvalid } //------------------------------------- function select_fld_VALIDATE_picklist(field,fld) { var pickval = ""; var pickdesc = ""; var pickidx = -1; //alert("select_fld_VALIDATE_picklist()" + " fld=" + fld + " field.id=" + field.id + " pick = " + field.value) pickidx = parseInt(field.value) //alert("pickidx = " + pickidx) var infield = inputfield(fld) if ( fld == curfld ) infield.blur() select_on_focus = !in_maint // don't select when focus infield.focus() // de-select choice and set back item 0 (field desc) as selected field.options(pickidx).selected = false field.options(0).selected = true switch ( field.options(pickidx).innerText ) { case "(All)": if ( !in_maint ) infield.value = '' break; case "(Blank)": if ( !in_maint ) infield.value = '=' break; case "(NotBlank)": if ( !in_maint ) infield.value = '!=' break; case "-ShowFullPicks-": fld_VALIDATE_addoptions(fld,2) if ( picklist_ispopped(fld) ) picklist_hide(fld); picklist_popup(fld,null,false); // show picklist return; default: if ( pickidx == 0 ) // header break; // handle pick value switch ( fld_validate[fld] ) { case 21: // SELFpicklist pickval = fld_validate_picklist_vals["a"+fld+pickidx] break case 20: // CODEDpicklist pickval = fld_validate_picklist_vals["a"+fld+pickidx] break case 3: // SQLpicklist pickval = fld_validate_picklist_vals["a"+fld+pickidx] break case 2: // Boolean (speacial type of picklist) if ( pickidx == 1 /*5*/ ) { // TRUE pickval = "Y" break } if ( pickidx == 2 /*6*/ ) { // FALSE pickval = "N" break } break case 1: // custom picklist pickval = fld_validate_picklist_vals["a"+fld+pickidx] break case 0: // no validation except for possible constraint case -1: // not a VALIDATE field default: alert("ERROR: VALIDATE fld=" + fld + " is not a picklist type") } infield.value = pickval } // hide picklist popup if ( picklist_ispopped(fld) ) picklist_hide(fld); //infield.select() // select field // run field changed code to force validation and copy to TEX info //alert("force change fld=" + fld) //infield.blur() //infield.focus() //infield.fireEvent("onchange") check_field_changed(infield,1,1) if ( !in_maint ) { keySrchCol() // go search } } //---------------------------------------------- function hdr_fld_VALIDATE_date(fld, hdrtag, hdrlen) { var outp = ""; var fldid = "fld_VALIDATE_date_" + fld //outp += "= 6 && (field.id.substr(0,6) == "TEXfld") ) { fld = parseInt(field.id.substr(6)) fldtag = "TEXfld" } else { fld = parseInt(field.id.substr(7)) fldtag = "srchfld" } if ( fld_validate_date_setup[fld] == 1 ) return // already setup //alert("setup_fld_VALIDATE_date() fld=" + fld) var calobj = eval("calendar_" + field.id + " = new calendar1(inputfield(" + fld + "),select_fld_VALIDATE_date)") calobj.year_scroll = true calobj.time_comp = false fld_validate_date_setup[fld] = 1 return } function select_fld_VALIDATE_date(field) { //alert("select_fld_VALIDATE_date()" + " field.id=" + field.id + " pick = " + field.value) field.focus() // force prev field validation // run field changed code to force validation and copy to TEX info check_field_changed(field,1,1) if ( !in_maint) { keySrchCol() } } //---------------------------------------------- function hdr_fld_VALIDATE_GroupID(fld, hdrtag, hdrlen) { var outp = ""; var fldid = "fld_VALIDATE_GroupID_" + fld //outp += "= 6 && (field.id.substr(0,6) == "TEXfld")){ fld = parseInt(field.id.substr(6)) fldtag = "TEXfld" } else { fld = parseInt(field.id.substr(7)) fldtag = "srchfld" } } // dynamic search direnq for DirectoryID or GroupID // as they are being typed // (see below code to clear field in maint mode, ao as // to force selection of valid values) switch ( fld_validate[fld] ) { case 6: /* DirectoryID */ // if DirectoryID has changed and is not blank if ( field.value != "" ) { // start direnq search for DirectoryID try { search_direnq(field.value,"","","") } catch (exccode) { alert("ERROR: during dynamic directory search for DirectoryID") } } break; case 5: /* GroupID */ // if GroupID has changed and is not blank if ( field.value != "" ) { // start direnq search for GroupID try { search_direnq("","",field.value,"") } catch (exccode) { alert("ERROR: during dynamic directory search for GroupID") } } break; } // check if value changed if ( field.value != fld_val_since_last[fld] ) has_changed_since_last = 1 //alert("check_field_changed() field.id=" + field.id + " field.value=[" + field.value + "]" + " fld=" + fld + " fld_desc[" + fld + "]=" + fld_desc[fld] + " validate=" + validate + " clearelconstraint=" + clearrelconstraint + " curfld=" + curfld + " fld_val_since_last[" + curfld + "]=[" + fld_val_since_last[curfld] + "]" + " has_changed_since_last=" + has_changed_since_last + " fld_has_changed[" + fld + "]=" + fld_has_changed[fld]) fld_val_since_last[fld] = field.value if ( validate ) { // if validateing if ( ! ( has_changed_since_last // NOT (changed since last || fld_has_changed[fld] // OR changed since start || field.value == "" // OR blank) ) ) return 1 // OK } else { // not validating if ( !has_changed_since_last ) // NOT changed since last return 1 // OK } if ( !in_maint ) { return 1 // return OK. } //alert("check_field_changed() field.id=" + field.id + " field.value=[" + field.value + "]" + " fld=" + fld + " validate=" + validate + " clearelconstraint=" + clearrelconstraint + " curfld=" + curfld + " fld_val_since_last[" + curfld + "]=[" + fld_val_since_last[curfld] + "]" + " has_changed_since_last=" + has_changed_since_last + " fld_has_changed[" + fld + "]=" + fld_has_changed[fld] + " ::: in maint and FIELD HAS CHANGED or BLANK") // if we get to here then in_maint and field has changed or is blank fld_has_changed[fld] = 1 // flag change made if ( has_changed_since_last ) set_changes_made() // clear any rel constraint Fields switch ( fld_validate_required_constraint[fld] & 3 ) { case 3: // required unless CC and clear CC if this set if ( clearrelconstraint && fld_validate_CC[fld] >= 0 && fld_validate_CC[fld] < 99 ) { //alert("clear rel field if constaint type 3") var relCCinfield = inputfield(fld_validate_CC[fld]) relCCinfield.value = "" // run field changed code (without validation) to // force copy to TEX info check_field_changed(relCCinfield,0,0) } break; default: break; } var retval = 1 if ( validate ) { retval = validate_input(field,fld) } // copy to any corresponding TEXfld if ( fldtag == "srchfld" && (fld_type[fld] & 2) ) { //alert("set: " + "TEXfld" + fld + ".value = '" + field.value.replace(/\'/g,"\\'") + "'") var texfld = eval("TEXfld" + fld) texfld.value = field.value.replace(/\'/g,"\\'") } // copy to any corresponding srchfld if ( fldtag == "TEXfld" && (fld_type[fld] & 8) ) { var srchfld = eval("srchfld" + fld) srchfld.value = field.value.replace(/\'/g,"\\'") } return retval } function set_changes_made() { //alert("set_changes_made() changes_made = " + changes_made + " UPDATEDCOL=" + UPDATEDCOL) // on first change set updated to today if ( changes_made == 0 && UPDATEDCOL >= 0 ) { var updated = new Date() var dd = updated.getDate() var mm = updated.getMonth() + 1 var yyyy = updated.getFullYear() var updatedstr = (dd < 10 ? "0" : "") + dd + "-" + (mm < 10 ? "0" : "") + mm + "-" + yyyy var updatedfld = drows.rows[1].cells(UPDATEDCOL).firstChild.firstChild updatedfld.value = updatedstr // run field changed code to force validation & copy to TEX fld check_field_changed(updatedfld,0,0) } changes_made = 1 but_Undo.disabled = false but_Save.disabled = false } function init_changes_vars() { changes_made = 0 for ( var i=0; i < nflds; ++i ) { fld_has_changed[i] = 0 // in modify and field is srchfld or TEX info if ( in_modify && ((fld_type[i] & 8) || (fld_type[i] & 2)) ) { var srchfld = eval("srchfld" + i) fld_val_since_last[i] = srchfld.value } else { fld_val_since_last[i] = "" } } } function reset_changes_made() { init_changes_vars() but_Save.disabled = true but_Undo.disabled = true } //---------------------------------------------- var audittrailtxt = ""; function do_audittrail(changetype, recordno) { var str1 = ""; var j = 0; var ni = 0; var objname = ""; var objid = ""; var userid = getCookie("WB_userid"); var dt = new Date(); if ( l_audittrail == false ) return; if ( changetype == "AddPick" ) { objname = "PickItem"; objid = ""; } //if ( changetype == "EndExisting" ) { // objname = "TerminateAndAdd"; // objid = ""; //} if ( changetype == "Add" ) { objname = fld_desc[l_maintobjectfield]; if ( fld_type[l_maintobjectfield] & 8 ) { // srchfld objid = eval("srchfld" + l_maintobjectfield + ".value") } else { if ( fld_type[l_maintobjectfield] & 2 ) { // TEX info objid = eval("TEXfld" + l_maintobjectfield + ".value") } } } if ( changetype == "Delete" || changetype== "Update" ) { objname = fld_desc[l_maintobjectfield]; objid = enqdat.Recordset.Fields.Item(l_maintobjectfield).value; } //fixDate(dt); //str1 += "--------------------------------------------------\n"; str1 += objname + ": " + objid + ", " + "changetype: " + changetype + ", " + "customid: " + customid + "\n"; str1 += "By: " + userid + "\n"; str1 += "On: " + dt.toLocaleString() + "\n"; str1 += "\n"; str1 += audittrailtxt; str1 += "\n"; if ( recordno >= 0 ) { str1 += "RecordNo: " + recordno; str1 += "\n"; } //alert("do_audittrail(" + changetype + ")\n" + "str1=[\n" + str1 +"\n]"); var url = '../wbt_T21Enquiry_audittrail.cgi'; url += '?' + 'op="' + "store" + '"'; url += '&' + 'customid="' + customid + '"'; url += '&' + 'objname="' + objname + '"'; url += '&' + 'objid="' + objid + '"'; url += '&' + 'userid="' + userid + '"'; url += '&' + 'on="' + dt.toLocaleString() + '"'; url += '&' + 'txt="' + str1 + '"'; //alert("url=[" + url + "]"); var res = getFile(encodeURI(url), '', "POST", null, null, null); if ( res.match(/Done.\n$/) == null ) alert("Audit Error res=[" + res + "]"); } function show_audittrail() { var objname = fld_desc[l_maintobjectfield]; var objid = ""; // default to audit on all if ( enqdat.Recordset.RecordCount > 0 ) { // audit only on active row objid = drows.rows[DOFF+activerow].cells[l_maintobjectfield].innerText; } //alert("Show the Audit Trail objname=[" + objname + "]" + " objid=[" + objid + "]"); var url = '../wbt_T21Enquiry_audittrail.cgi'; url += '?' + 'op="' + "show" + '"'; url += '&' + 'customid="' + customid + '"'; url += '&' + 'objname="' + objname + '"'; url += '&' + 'objid="' + objid + '"'; //alert("url=[" + url + "]"); //var res = getFile(encodeURI(url), '', "POST", null, null, null); //alert("Audit Trail res=[" + res + "]"); // display Audit Trail try { mysay("Opening Audit Trail Window."); var audittrailwin = window.open(url,'','titlebar=yes,status=yes,scrollbars=yes,toolbar=yes,menubar=yes,resizable=yes,location=no,width=800,height=600'); } catch(exccode) { alert("ERROR: trying to Display AuditTrail. (exccode = " + exccode + ")") return 0 } } //---------------------------------------------- function fixmailto(a) { if ( a.href.indexOf("mailto:") == -1 ) { a.href = "mailto:" + a.href; } } function do_lexdict() { TTSON && TTSObj.LexiconDlg(TTSObj.hWnd,'LexiconDlg - Dictionary'); curinput.focus(); } //---------------------------------------------- function w(str) { //alert(str); document.writeln(str); } function fldtrim(s) { s.replace( /^ */, ""); // trim leading spaces s.replace( / *$/, ""); // trim trailing spaces s.replace(/\'/g,"\\'") // qoute ' return s } function fldclip(s) { s.replace( / *$/, ""); // trim trailing spaces s.replace(/\'/g,"\\'") // qoute ' return s } //================================================================ function do_t21mailto() { window.open(t21mailto,'','toolbar=no,menubar=no,location=no,height=300,width=650'); } //================================================================ // CONF function get_enqdatconfig() { alert("get_enqdatconfig() got_enqdatconfig = " + got_enqdatconfig); if ( got_enqdatconfig ) return dbgwindow("XXXXXXXX get_enqdatconfig() enqdat.Recordset.Fields.Count = " + enqdat.Recordset.Fields.Count); // data not ready yet or invalid or not accessable ??? if ( enqdat.Recordset.Fields.Count <= 0 ) { alert("ERROR: Data " + t21webdirdataurl + " has not loaded corectly." ); } // init Message fireld cols msg_fld["Msg1"] = 0; msg_fld["Msg2"] = 0; msg_fld["Msg3"] = 0; msg_fld["Msg4"] = 0; msg_fld["Msg5"] = 0; msg_fld["Msg6"] = 0; msg_fld["Msg7"] = 0; msg_fld["Msg8"] = 0; msg_fld["Msg9"] = 0; // get field headers,lengths,type,hotkeys,descriptions & number of Fields // up to first Message line nflds = 0; for ( ni=0; ni < enqdat.Recordset.Fields.Count; ++ni ) { if ( enqdat.Recordset.Fields.Item(ni).name == l_recordno_desc || enqdat.Recordset.Fields.Item(ni).name == "ID" ) { ENQDAT_RECORDNOCOL = ni // set to last field of in table RECORDNOCOL = enqdat.Recordset.Fields.Count; fld_cell[ni] = RECORDNOCOL; fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg1" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni; fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg2" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg3" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg4" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg5" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg6" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg7" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg8" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } if ( enqdat.Recordset.Fields.Item(ni).name == "Msg9" ) { msg_fld[enqdat.Recordset.Fields.Item(ni).name] = ni; fld_cell[ni] = ni fld_desc[ni] = enqdat.Recordset.Fields.Item(ni).name; ++msglines; continue; } // rjs //if ( ni < 10 ) // continue; ++nflds; fld_datafld[nflds] = enqdat.Recordset.Fields.Item(ni).name; fld_hdr[nflds] = ""; fld_len[nflds] = 0; // default type: IS search field (bit 3), // NOT hfld (bit 2), // NOT TEX (bit 1), // NOT spell (bit 0) fld_type[nflds] = 8; fld_extendedconfig_e[nflds] = 0 fld_extendedconfig_f[nflds] = 0 fld_extendedconfig_g[nflds] = 0 fld_casesensitive[nflds] = false; fld_replink[nflds] = 0; fld_replinkparam_d[nflds] = 0; fld_viewonly[nflds] = 0; fld_disabled[nflds] = 0; fld_maintexclude[nflds] = 0; fld_hotkey[nflds] = ""; fld_desc[nflds] = ""; fld_cell[nflds] = ni; fld_label[nflds] = 0; fld_skip[nflds] = 0; fld_span[nflds] = 1; fld_group[nflds] = 1; fld_hidden[nflds] = 0; fld_display[nflds] = ""; fld_order[nflds] = 0; fld_validate[nflds] = -1; fld_validate_required_constraint[nflds] = 0; fld_validate_comparison_constraint[nflds] = 0; fld_validate_CC[nflds] = 99; fld_validate_allownew[nflds] = 0; fld_validate_customid[nflds] = 1; fld_validate_fldidref[nflds] = 99; fld_validate_p[nflds] = 0; fld_validate_ref1[nflds] = 99; fld_validate_ref2[nflds] = 99; fld_validate_ref3[nflds] = 99; fld_validate_picklist_valid[nflds] = 1 fld_validate_picklist_vals[nflds] = 0 fld_validate_SQLpicklist_vals_to_desc[nflds] = []; fld_validate_picklist_setup[nflds] = 0 fld_validate_date_setup[nflds] = 0 fld_validate_GroupID_setup[nflds] = 0 fld_hfld[nflds] = 0; //hfld_fld[nflds] = 0; get_SQLpicklist_recs[nflds] = 1 get_SELFpicklist_recs[nflds] = 1 if ( enqdat.Recordset.Fields.Item(ni).name == "CustomID" ) { ENQDAT_CUSTOMIDCOL = ni // set field not in drows table (excluded) fld_type[nflds] = 0 } var ppppppppppppppppppcnfch = "" var pppppppppppppppppcnfch = "" var ppppppppppppppppcnfch = "" var pppppppppppppppcnfch = "" var ppppppppppppppcnfch = "" var pppppppppppppcnfch = "" var ppppppppppppcnfch = "" var pppppppppppcnfch = "" var ppppppppppcnfch = "" var pppppppppcnfch = "" var ppppppppcnfch = "" var pppppppcnfch = "" var ppppppcnfch = "" var pppppcnfch = "" var ppppcnfch = "" var pppcnfch = "" var ppcnfch = "" var pcnfch = "" function initp() { ppppppppppppppppppcnfch = "" pppppppppppppppppcnfch = "" ppppppppppppppppcnfch = "" pppppppppppppppcnfch = "" ppppppppppppppcnfch = "" pppppppppppppcnfch = "" ppppppppppppcnfch = "" pppppppppppcnfch = "" ppppppppppcnfch = "" pppppppppcnfch = "" ppppppppcnfch = "" pppppppcnfch = "" ppppppcnfch = "" pppppcnfch = "" ppppcnfch = "" pppcnfch = "" ppcnfch = "" pcnfch = "" } for ( var i = 0; i < fld_datafld[nflds].length; ++i ) { gc = fld_datafld[nflds].substr(i,1); // field config introducers if ( gc == "^" ) { // [ field - hfld if ( !(fld_type[nflds] & 8) ) { alert("ERROR: " + fld_datafld[nflds] + " can't have hfld that is NOT in search template") } have_HFLDS = 1; fld_hfld[nflds] = ++nhflds; // store hfld hfld_fld[nhflds] = nflds; // hfld only array fld_type[nflds] |= 4; //alert("hfld fld_datafld[" + nflds + "] = " + fld_datafld[nflds] + " fld_type[" + nflds + "] = " + fld_type[nflds]); initp() pcnfch = gc continue; } if ( gc == "[" ) { // [ field - TEXINFO ONLY if ( fld_type[nflds] & 4 ) { alert("ERROR: " + fld_datafld[nflds] + " can't have TEX only hfld") } have_TEXINFO = 1; fld_type[nflds] |= 2; fld_type[nflds] &= ~8; //alert("TEXINFO ONLY fld_datafld[" + nflds + "] = " + fld_datafld[nflds] + " fld_type[" + nflds + "] = " + fld_type[nflds]); initp() pcnfch = gc continue; } if ( gc == "]" ) { // [ field - TEXINFO have_TEXINFO = 1; fld_type[nflds] |= 2; fld_type[nflds] |= 8; //alert("TEXINFO fld_datafld[" + nflds + "] = " + fld_datafld[nflds] + " fld_type[" + nflds + "] = " + fld_type[nflds]); initp() pcnfch = gc continue; } if ( gc == "#" ) { // # field - spell only fld_type[nflds] |= 1; //alert("SPELL fld_datafld[" + nflds + "] = " + fld_datafld[nflds] + " fld_type[" + nflds + "] = " + fld_type[nflds]); initp() pcnfch = gc continue; } if ( gc == "!" ) { // extended config ![e[f[g]]] // ![0[x]] field - (default) extra saycombo field // defaults fld_type[nflds] |= 16; // set extra combo bit fld_casesensitive[nflds] = false; fld_extendedconfig_e[nflds] = 1 // extra combo e=1 fld_extendedconfig_f[nflds] = 0 // case sensitive f=1 fld_extendedconfig_g[nflds] = 0 //alert("EXTRACOMBO fld_datafld[" + nflds + "] = " + fld_datafld[nflds] + " fld_type[" + nflds + "] = " + fld_type[nflds]); initp() pcnfch = gc continue; } if ( gc == "~" ) { // # field - order fld_order[nflds] = 0; //alert("ORDER fld_datafld[" + nflds + "] = " + fld_datafld[nflds]); initp() pcnfch = gc continue; } if ( gc == "}" ) { // } field - report link field fld_replink[nflds] = 1; initp() pcnfch = gc continue; } if ( gc == "{" ) { // { field - Validate fld_validate[nflds] = 0; fld_validate_required_constraint[nflds] = 0 fld_validate_comparison_constraint[nflds] = 0 fld_validate_CC[nflds] = 99 fld_validate_allownew[nflds] = 0 fld_validate_customid[nflds] = 1 fld_validate_fldidref[nflds] = 99 fld_validate_p[nflds] = 0 fld_validate_ref1[nflds] = 99 fld_validate_ref2[nflds] = 99 fld_validate_ref3[nflds] = 99 //alert("VALIDATE fld_validate[" + nflds + "] = " + fld_validate[nflds]); initp() pcnfch = gc continue; } // ------------------------------------------------------------ // Field Configuration Introducers Defaults // ______________________| // | // # Spell (also export as String) NO // ^h hfld scroll group 1 // [nm[l] TEXINFO ONLY field 100 // ]nm[l] TEXINFO/Search field 100 // (n=colspan, m=colskipcols, l=collabelspec) // ~xx TEXINFO field order Template Order // ![e[f[g]]] Extended Config 000 // (! but NO efg means extra say Combo) 100 // }[d] Custom Report Link field NO // {vv[rccCCabffpRR] Field Validation NONE // ------------------------------------------------------------ // Field Configuration Values // e=[0-9] extended config:e (1=extra say combo) // f=[0-9] extended config:f (1=CaseSensitive) // g=[0-9] extended config:g // h=[0-9] hfld group (0=hidden) // n=[0-9] TEX colspan // m=[0-9] TEX colskip // l=[0-9] TEX collabelspec // 0 = left of field data // 9 = Don't display label // xx=[0-9] Order TEX Fields (0=disabled) // d=[0-9] report link field param // (1=internal code to handle isolate record) // vv=[0-9] Validate Type: // 00 = constraint only // 01 = custompicklist // 02 = boolean // 03 = SQLpicklist // 04 = date // 05 = GroupID // 06 = DirectoryID // 07 = integer // 08 = float // 09 = money // 10:19 = custom 0:9 // 20 = CODEDpicklist // 21 = SELFpicklist // r=[0-9] Field required constraint // BIT 3210 // 0X00 (0): not required // 0X01 (1): required (cannot be blank/null) // 0X10 (2): required unless field CC has value // 0X11 (3): required unless field CC has value // and clear CC field if this field set // 01XX (4): ViewOnly (OR'ed with above) // 1X00 (8): required -NONcachingSQL/SELFpicklist // 1X01 (9): not required -NONcachingSQL/SELFpicklist // cc=[00-99] Field comparison constraint // 00 : none // 01 : reserved // 02 : reserved // 03 : Auto set to TODAY // 04 : < field CC // 05 : <= field CC // 06 : == field CC // 07 : >= field CC // 08 : > field CC // 09 : != field CC // CC=[00-99] relative constraint field / grouping // a=[01] allow (New) // For validate type 1 (custompicklist) only // b=[01] customid filter used // ff=[00-99] fldidref filter used // p=[123] Pick value from this ref field // RR=[00-99] Validate Ref1 // SS=[00-99] Validate Ref2 // TT=[00-99] Validate Ref3 // ------------------------------------------------------------ if ( pcnfch != "" && (gc >= "0" && gc <= "9") ) { // ^h h = hfld group if ( pcnfch == "^" && (gc >= "0" && gc <= "9") ) { fld_group[nflds] = 1 * gc // keep max group if ( fld_group[nflds] > maxhfldgroup ) maxhfldgroup = fld_group[nflds] // other than group 1 are initially hidden if ( fld_group[nflds] != 1 ) // only show scro1l fld_display[nflds] = "none" // group 1 at start if ( fld_group[nflds] == 0 ) { // field is hidden fld_display[nflds] = "none" fld_hidden[nflds] = 1 } } // [n n = colspan for TEXONLY field // ]n n = colspan for TEX field if ( (pcnfch == "[" || pcnfch == "]") && (gc >= "0" && gc <= "9") ) { fld_span[nflds] = 1 * gc if ( fld_span[nflds] == 0 ) { // field is hidden fld_display[nflds] = "none" fld_hidden[nfls] = 1 } //alert(" colspan = " + fld_span[nflds]) } // [nm m = skip for TEXONLY field // ]nm m = skip for TEX field if ( (ppcnfch == "[" || ppcnfch == "]") && (gc >= "0" && gc <= "9") ) { fld_skip[nflds] = 1 * gc } // [nml l = col label spec for TEXONLY field // ]nml m = col label spec for TEX field if ( (pppcnfch == "[" || pppcnfch == "]") && (gc >= "0" && gc <= "9") ) { fld_label[nflds] = 1 * gc } // ~x x = Order for TEX field if ( pcnfch == "~" && (gc >= "0" && gc <= "9") ) { fld_order[nflds] = 1 * gc } // field Order ~xx if ( ppcnfch == "~" && (gc >= "0" && gc <= "9") ) { fld_order[nflds] = (10 * fld_order[nflds]) + (1 * gc) if ( fld_order[nflds] == 0 ) // (order == 0) - field is disabled fld_disabled[nflds] = 1 if ( fld_order[nflds] == 99 ) { // (order == 99) - field is excluded fld_type[nflds] = 0 // exclude from drows fld_maintexclude[nflds] = 1 // exclude from maint } } // extended config !e if ( pcnfch == "!" && (gc >= "0" && gc <= "9") ) { fld_extendedconfig_e[nflds] = 1 * gc // e=1 : extra say combo if ( fld_extendedconfig_e[nflds] == 1 ) { // set extra combo bit fld_type[nflds] |= 16; } else { // reset default extra saycombo bit fld_type[nflds] &= ~16; } } // extended config !ef if ( ppcnfch == "!" && (gc >= "0" && gc <= "9") ) { fld_extendedconfig_f[nflds] = 1 * gc // f=1 : CaseSensitive if ( fld_extendedconfig_f[nflds] == 1 ) { fld_casesensitive[nflds] = true } } // extended config !efg if ( pppcnfch == "!" && (gc >= "0" && gc <= "9") ) { fld_extendedconfig_g[nflds] = 1 * gc } // report link field param if ( pcnfch == "}" && (gc >= "0" && gc <= "9") ) { fld_replinkparam_d[nflds] = 1 * gc } // field Validate {v if ( pcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate[nflds] = 1 * gc } // field Validate {vv if ( ppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate[nflds] = (10 * fld_validate[nflds]) + (1 * gc) } // field Validate {vvr if ( pppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_required_constraint[nflds] = 1 * gc; if ( fld_validate_required_constraint[nflds] & 4 ) fld_viewonly[nflds] = 1; } // field Validate {vvrc if ( ppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_comparison_constraint[nflds] = 1 * gc; } // field Validate {vvrcc if ( pppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_comparison_constraint[nflds] = (10 * fld_validate_comparison_constraint[nflds]) + (1 * gc) } // field Validate {vvrccC if ( ppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_CC[nflds] = 1 * gc } // field Validate {vvrccCC if ( pppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_CC[nflds] = (10 * fld_validate_CC[nflds]) + (1 * gc) } // field Validate {vvrccCCa if ( ppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_allownew[nflds] = 1 * gc } // field Validate {vvrccCCab if ( pppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_customid[nflds] = 1 * gc } // field Validate {vvrccCCabf if ( ppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_fldidref[nflds] = 1 * gc } // field Validate {vvrccCCabff if ( pppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_fldidref[nflds] = (10 * fld_validate_fldidref[nflds]) + (1 * gc) } // field Validate {vvrccCCabffp if ( ppppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_p[nflds] = 1 * gc; } // field Validate {vvrccCCabffpR if ( pppppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_ref1[nflds] = 1 * gc } // field Validate {vvrccCCabffpRR if ( ppppppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_ref1[nflds] = (10 * fld_validate_ref1[nflds]) + (1 * gc) } // field Validate {vvrccCCabffpRRS if ( pppppppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_ref2[nflds] = 1 * gc } // field Validate {vvrccCCabffpRRSS if ( ppppppppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_ref2[nflds] = (10 * fld_validate_ref2[nflds]) + (1 * gc) } // field Validate {vvrccCCabffpRRSST if ( pppppppppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_ref3[nflds] = 1 * gc } // field Validate {vvrccCCabffpRRSSTT if ( ppppppppppppppppppcnfch == "{" && (gc >= "0" && gc <= "9") ) { fld_validate_ref3[nflds] = (10 * fld_validate_ref3[nflds]) + (1 * gc) } ppppppppppppppppppcnfch = pppppppppppppppppcnfch pppppppppppppppppcnfch = ppppppppppppppppcnfch ppppppppppppppppcnfch = pppppppppppppppcnfch pppppppppppppppcnfch = ppppppppppppppcnfch ppppppppppppppcnfch = pppppppppppppcnfch pppppppppppppcnfch = ppppppppppppcnfch ppppppppppppcnfch = pppppppppppcnfch pppppppppppcnfch = ppppppppppcnfch ppppppppppcnfch = pppppppppcnfch pppppppppcnfch = ppppppppcnfch ppppppppcnfch = pppppppcnfch pppppppcnfch = ppppppcnfch ppppppcnfch = pppppcnfch pppppcnfch = ppppcnfch ppppcnfch = pppcnfch pppcnfch = ppcnfch ppcnfch = pcnfch pcnfch = gc continue; } // ------------------- // the rest of the header is description, // and hot key, and underscores to set field length if ( pcnfch != "" ) { // after field config initp() } fld_hdr[nflds] += gc; fld_len[nflds] += 1; if ( fld_hotkey[nflds] == "" && gc >= "A" && gc <= "Z" ) fld_hotkey[nflds] = gc; fld_desc[nflds] += gc; } // handle underscores in field desc fld_desc[nflds] = fld_desc[nflds].replace(/_*$/,"") fld_desc[nflds] = fld_desc[nflds].replace(/_/g," ") // speciel field desc's if ( fld_desc[nflds] == "Sdate" ) { SDATECOL = ni; } if ( fld_desc[nflds] == "Edate" ) { EDATECOL = ni; } if ( fld_desc[nflds] == "Updated" ) { UPDATEDCOL = ni; } if ( fld_desc[nflds] == "Email" ) { EMAILCOL = ni; } if ( fld_desc[nflds] == "Picture" ) { PICTURECOL = ni; fld_type[nflds] &= ~8; // is NOT search field } if ( fld_desc[nflds] == "Document" ) { DOCCOL = ni; fld_type[nflds] &= ~8; // is NOT search field } // get max TEXINFO field if ( fld_type[nflds] & 2 ) { // TEXINFO ++ntexflds if ( fld_order[nflds] > maxtexorder ) maxtexorder = fld_order[nflds] tex_order[fld_order[nflds]] = nflds //alert("TEXINFO fld_datafld[" + nflds + "] = " + fld_datafld[nflds] + " fld_order[" + nflds + "] = " + fld_order[nflds] + " ntexflds = " + ntexflds + " maxtexorder = " + maxtexorder); } //alert("fld_datafld[" + nflds + "] = " + fld_datafld[nflds]); //alert("fld_hdr[" + nflds + "] = " + fld_hdr[nflds]); //alert("fld_len[" + nflds + "] = " + fld_len[nflds]); //alert("fld_type[" + nflds + "] = " + fld_type[nflds]); //alert("fld_extendedconfig_e[" + nflds + "] = " + fld_extendedconfig_e[nflds]); //alert("fld_extendedconfig_f[" + nflds + "] = " + fld_extendedconfig_f[nflds]); //alert("fld_extendedconfig_g[" + nflds + "] = " + fld_extendedconfig_g[nflds]); //alert("fld_casesensitive[" + nflds + "] = [" + fld_casesensitive[nflds] + "]"); //alert("fld_hotkey[" + nflds + "] = " + fld_hotkey[nflds]); //alert("fld_desc[" + nflds + "] = [" + fld_desc[nflds] + "]"); //alert("fld_cell[" + nflds + "] = [" + fld_cell[nflds] + "]"); //alert("fld_label[" + nflds + "] = [" + fld_label[nflds] + "]"); //alert("fld_skip[" + nflds + "] = [" + fld_skip[nflds] + "]"); //alert("fld_span[" + nflds + "] = [" + fld_span[nflds] + "]"); //alert("fld_group[" + nflds + "] = [" + fld_group[nflds] + "]"); //alert("fld_display[" + nflds + "] = [" + fld_display[nflds] + "]"); //alert("fld_hidden[" + nflds + "] = [" + fld_hidden[nflds] + "]"); //alert("fld_order[" + nflds + "] = [" + fld_order[nflds] + "]"); //alert("fld_replink[" + nflds + "] = [" + fld_replink[nflds] + "]"); //alert("fld_replinkparam_d[" + nflds + "] = [" + fld_replinkparam_d[nflds] + "]"); //alert("fld_viewonly[" + nflds + "] = [" + fld_viewonly[nflds] + "]"); //alert("fld_disabled[" + nflds + "] = [" + fld_disabled[nflds] + "]"); //alert("fld_maintexclude[" + nflds + "] = [" + fld_maintexclude[nflds] + "]"); dbgwindow("fld_datafld[" + nflds + "] = " + fld_datafld[nflds]); dbgwindow("fld_hdr[" + nflds + "] = " + fld_hdr[nflds]); dbgwindow("fld_len[" + nflds + "] = " + fld_len[nflds]); dbgwindow("fld_type[" + nflds + "] = " + fld_type[nflds]); dbgwindow("fld_extendedconfig_e[" + nflds + "] = " + fld_extendedconfig_e[nflds]); dbgwindow("fld_extendedconfig_f[" + nflds + "] = " + fld_extendedconfig_f[nflds]); dbgwindow("fld_extendedconfig_g[" + nflds + "] = " + fld_extendedconfig_g[nflds]); dbgwindow("fld_casesensitive[" + nflds + "] = [" + fld_casesensitive[nflds] + "]"); dbgwindow("fld_hotkey[" + nflds + "] = " + fld_hotkey[nflds]); dbgwindow("fld_desc[" + nflds + "] = [" + fld_desc[nflds] + "]"); dbgwindow("fld_cell[" + nflds + "] = [" + fld_cell[nflds] + "]"); dbgwindow("fld_label[" + nflds + "] = [" + fld_label[nflds] + "]"); dbgwindow("fld_skip[" + nflds + "] = [" + fld_skip[nflds] + "]"); dbgwindow("fld_span[" + nflds + "] = [" + fld_span[nflds] + "]"); dbgwindow("fld_group[" + nflds + "] = [" + fld_group[nflds] + "]"); dbgwindow("fld_display[" + nflds + "] = [" + fld_display[nflds] + "]"); dbgwindow("fld_hidden[" + nflds + "] = [" + fld_hidden[nflds] + "]"); dbgwindow("fld_order[" + nflds + "] = [" + fld_order[nflds] + "]"); dbgwindow("fld_replink[" + nflds + "] = [" + fld_replink[nflds] + "]"); dbgwindow("fld_replinkparam_d[" + nflds + "] = [" + fld_replinkparam_d[nflds] + "]"); dbgwindow("fld_viewonly[" + nflds + "] = [" + fld_viewonly[nflds] + "]"); dbgwindow("fld_disabled[" + nflds + "] = [" + fld_disabled[nflds] + "]"); dbgwindow("fld_maintexclude[" + nflds + "] = [" + fld_maintexclude[nflds] + "]"); //alert("fld_validate[" + nflds + "] = [" + fld_validate[nflds] + "]"); //if ( fld_validate[nflds] >= 0 ) { // alert("fld_validate[" + nflds + "] = " + fld_validate[nflds]); // alert("fld_validate_comparison_constraint[" + nflds + "] = [" + fld_validate_comparison_constraint[nflds] + "]"); // alert("fld_validate_CC[" + nflds + "] = [" + fld_validate_CC[nflds] + "]"); //} //alert("fld_validate_allownew[" + nflds + "] = [" + fld_validate_allownew[nflds] + "]"); //if ( fld_validate[nflds] == 1 ) { // alert("fld_validate_customid[" + nflds + "] = [" + fld_validate_customid[nflds] + "]"); // alert("fld_validate_fldidref[" + nflds + "] = [" + fld_validate_fldidref[nflds] + "]"); // alert("fld_validate_p[" + nflds + "] = [" + fld_validate_p[nflds] + "]"); // alert("fld_validate_ref1[" + nflds + "] = [" + fld_validate_ref1[nflds] + "]"); // alert("fld_validate_ref2[" + nflds + "] = [" + fld_validate_ref2[nflds] + "]"); // alert("fld_validate_ref3[" + nflds + "] = [" + fld_validate_ref3[nflds] + "]"); //} //alert("fld_hfld[" + nflds + "] = [" + fld_hfld[nflds] + "]"); // // alert("(fld_type[" + nflds + "] & 8) = " + (fld_type[nflds] & 8)); //if ( fld_type[nflds] & 8 ) { // show search field // alert("Will show fld = " + nflds) //} //else { // don't show NON search field // alert("Won't show fld = " + nflds) //} } // call custom enqdat config l_custom_enqdatconfig() //alert("ENQDAT_RECORDNOCOL = " + ENQDAT_RECORDNOCOL); //alert("RECORDNOCOL = " + RECORDNOCOL); //alert("ENQDAT_CUSTOMIDCOL = " + ENQDAT_CUSTOMIDCOL); ////alert("nflds = " + nflds); //alert("nhflds = " + nhflds); //alert("maxhfldgroup = " + maxhfldgroup); // check TEXINFO field order config if ( ntexflds != maxtexorder ) { alert("ERROR: TEXINFO field order config. ntexflds = " + ntexflds + " maxtexorder = " + maxtexorder) } for ( var j=1; j < ntexflds; ++j ) { //alert("TEXINFO tex_order[" + j + "] = " + tex_order[j] + " ntexflds = " + ntexflds + " maxtexorder = " + maxtexorder); if ( tex_order[j] == undefined ) { alert("ERROR: TEXINFO field order config. undefined tex fld = " + j + " texflds = " + ntexflds + " maxtexorder = " + maxtexorder) } var i = tex_order[j] //alert("TEX config fld_datafld[" + i + "] = " + fld_datafld[i] + " fld_label[" + i + "] = " + fld_label[i] + " fld_skip[" + i + "] = " + fld_skip[i] + " fld_span[" + i + "] = " + fld_span[i]) } // scan Fields var ntab = 0; for ( var i=1; i < nflds; ++i ) { // check Validate Fields switch ( fld_validate[i] ) { case -1: // not a VALIDATE field break; case 0: // NO validate - except for maybe constraint break; //case 4: // date //case 21: // SELFpicklist //case 20: // CODEDpicklist //case 3: // SQLpicklist //case 2: // boolean picklist //case 1: // custom Picklist // if ( !((fld_type[i] & 8) && (fld_type[i] & 2)) ) { // NOT BOTH search field and TEXINFO // alert("ERROR: " + fld_datafld[i] + " can't have a VALIDATE picklist or date field that is NOT in BOTH the search template and a TEXINFO") // } // break; default: // all other VALIDATE Fields if ( !(fld_type[i] & 8) ) { // NOT a search field alert("ERROR: " + fld_datafld[i] + " can't have a VALIDATE field that is NOT in the search template") } break; } } // set sort order to first then second field enqdat.SortColumn = fld_datafld[1] + ";" + fld_datafld[2]; enqdat.SortAscending = true; // only run this once, NOT on every enqdat.Reset() //enqdat.ondatasetcomplete = ""; got_enqdatconfig = 1 //alert("here 1"); // draw screen enquiry_div.innerHTML = render_enquiry(); // ZZZZZ // only show visible hflds show_hfldgroup(curhfldgroup) } //---------------------------------------------- function outline_myDetails() { var outp = "" outp += "
0 && (fldcnt_TEXINFO % TEX_perline) == 0 ) { //alert(" TEX skip - go to next row") ++tex_row tex_col = 0 html_TEXINFO += "
0 && (fldcnt_TEXINFO % TEX_perline) == 0 ) { //alert(" not enough - go to next row") ++tex_row tex_col = 0 html_TEXINFO += "
1 ) html_TEXINFO += " colspan=" + ((texcolspan * 2) - labelcols) html_TEXINFO += ">" html_TEXINFO += ""; html_TEXINFO += ""; mystatus.innerHTML = str; //document.title = theTITLE + " - " + str; window.status = theTITLE + " - " + str; } function dumpobj(obj1) { for (prop in obj1) { if ( ! window.confirm("The property '" + prop + "' is " + obj1[prop]) ) break; } } //---------------------------------------- var in_clearall = false function clearall(dosearch,setfld) { if ( in_clearall ) return in_clearall = true //alert("clearall(" + dosearch + "," + setfld + ")"); //if ( in_maint ) // return if ( dosearch ) stopspeaking(); // ZZZZZ curhfldgroup = 1 show_hfldgroup(curhfldgroup) clear_srch_vars(); if ( document.all.but_firstPage ) document.all.but_firstPage.disabled = true; if ( document.all.but_previousPage ) document.all.but_previousPage.disabled = true; if ( document.all.but_lastPage ) document.all.but_lastPage.disabled = true; if ( document.all.but_nextPage ) document.all.but_nextPage.disabled = true; if ( msglines != 0 && document.all.but_showmsg ) document.all.but_showmsg.disabled = true; if ( EMAILCOL >= 0 && document.all.but_openemailapp ) document.all.but_openemailapp.disabled = true; if ( l_outputbutton && document.all.but_output ) document.all.but_output.disabled = true; if ( l_exportbutton && document.all.but_export ) document.all.but_export.disabled = true; if ( l_domaint ) { if ( document.all.but_ModifyEntry ) document.all.but_ModifyEntry.disabled = true; if ( document.all.but_AddEntry ) document.all.but_AddEntry.disabled = false; if ( document.all.but_DeleteEntry ) document.all.but_DeleteEntry.disabled = true; if ( can_reassign && document.all.but_ReassignEntry ) document.all.but_ReassignEntry.disabled = true; if ( document.all.but_Cancel ) document.all.but_Cancel.disabled = true; if ( document.all.but_Undo ) document.all.but_Undo.disabled = true; if ( document.all.but_Save ) document.all.but_Save.disabled = true; } //rjs rb // fill any pick lists // fld_VALIDATE_build_options(-1,0) if ( setfld ) { //setsrchfld(startfld,0); curfld = startfld; curinput = drows.rows[1].cells(curfld).firstChild.firstChild; curinput.blur(); curinput.focus(); } if ( dosearch ) { // work around for Search... forever problem // occurs if clearall() is done twice without a search between curinput.value = "~"; keySrchCol(); curinput.value = "~Invalid"; sayready = 1; keySrchCol(); clear_srch_vars(); //WSP waitspeaking(); } in_clearall = false } function clear_srch_vars() { //alert("clear_srch_vars()") // clear input Fields and column filter store for ( i = 1; i <= nflds; ++i ) { if ( fld_type[i] & 8 ) { // search field drows.rows[1].cells(i).firstChild.firstChild.value = ""; colfilt[i] = "" if ( typeof(l_defaultsrchval[i]) != "undefined" && l_defaultsrchval[i] != "" ) { if ( fld_desc[i] == l_recordno_desc ) { // recordno search keysrch_thisRecordNo = l_defaultsrchval[i] } else { var srchfld = eval("srchfld" + i) srchfld.value = l_defaultsrchval[i] colfilt[i] = srchfld.value } } } } recfilt = ""; // clear record search filter } var in_clearfield = false function clearfield(dosearch) { if ( in_clearfield ) return in_clearfield = true //alert("clearfield(" + dosearch + ")" + " curinput.id=[" + curinput.id + "]"); if ( !in_maint ) { // in search mode don't clear TEX info or Message Fields if ( (fld_type[curfld] & 2) && (enqdat.Recordset.RecordCount == 1) ) { // in TEXINFO field in_clearfield = false return } if ( curinput.id == "myMsg" ) { // in message field in_clearfield = false return } } if ( dosearch ) stopspeaking(); // work around for Search... forever problem // occurs if clearfield() is done twice without a search between if ( dosearch ) { curinput.value = "~"; colfilt[curfld] = "" keySrchCol(); } curinput.value = ""; colfilt[curfld] = "" if ( in_maint ) { check_field_changed(curinput,0,0) fld_val_since_last[curfld] = curinput.value set_changes_made() } curinput.blur(); curinput.focus(); if ( dosearch && !in_maint ) keySrchCol(); in_clearfield = false } function srchfocus(fld) { //alert("srchfocus(" + fld + ") fld_type[" + fld + "]=" + fld_type[fld] + " saydesconfocus=" + saydesconfocus + " saytxtonfocus=" + saytxtonfocus + " curfld=" + curfld + " curinput.id=" + curinput.id + " curinput.value=[" + curinput.value + "]"); // if moved check previous (curinput) before focus on new field // Note: at this point curfld/curinput is still set to the previous fld if ( curfld != -1 && curfld != fld ) { var prevfield = curinput if (prevfield != null && !check_field_changed(prevfield,1,1)){ event.keyCode = ""; event.returnValue = false; return } // hide any picklist popup picklist_hide(curfld); } curfld = fld; curinput = drows.rows[1].cells(curfld).firstChild.firstChild; lastfield = curinput // can't do this (applies to all search Fields) // // CaseSensitive // if ( !in_maint ) { // if ( fld_casesensitive[fld] ) { // enqdat.CaseSensitive = "True" // } // else { // enqdat.CaseSensitive = "False" // } // } //curinput.insertAdjacentText("beforeEnd", "x"); if ( select_on_focus ) curinput.select(); else select_on_focus = true // put select on focus back curpos = -1; if ( fld_type[fld] & 1 ) speak_spell = 1; else speak_spell = 0; var saywhat = 0; if ( saydesconfocus ) saywhat += 2; if ( saytxtonfocus ) saywhat += 1; if ( saywhat ) sayfld(0,speak_spell,activerow,curfld,saywhat); saydesconfocus = 1; saytxtonfocus = 1; } function srchblur(fld) { // hide picklist popup code was moved from here to // the onfocus event handlers because // of IE7 onblur event handling } function TEXINFOfocus(fld) { //alert("TEXINFOfocus(" + fld + ")" + " curfld=" + curfld); // if moved check previous (curinput) before focus on new field // Note: at this point curfld/curinput is still set to the previous fld if ( curfld != -1 && curfld != fld ) { var prevfield = curinput if (prevfield != null && !check_field_changed(prevfield,1,1)){ event.keyCode = ""; event.returnValue = false; return } // hide any picklist popup picklist_hide(curfld); } curfld = fld; // ZZZZZ curinput = eval("TEXfld" + fld); lastfield = curinput // can't do this (applies to all search Fields) // // CaseSensitive // if ( !in_maint ) { // if ( fld_casesensitive[fld] ) { // enqdat.CaseSensitive = "True" // } // else { // enqdat.CaseSensitive = "False" // } // } //curinput.insertAdjacentText("beforeEnd", "x"); curhfldgroup = fld_group[fld] show_hfldgroup(curhfldgroup) if ( select_on_focus ) curinput.select(); else select_on_focus = true // put select on focus back curpos = -1; if ( fld_type[fld] & 1 ) speak_spell = 1; else speak_spell = 0; var saywhat = 0; if ( saydesconfocus ) saywhat += 2; if ( saytxtonfocus ) saywhat += 1; if ( saywhat ) sayfld(0,speak_spell,activerow,curfld,saywhat); saydesconfocus = 1; saytxtonfocus = 1; } function MSGfocus() { //alert("MSGfocus()" + " curfld=" + curfld); // check previous (curinput) before focus on new field // Note: at this point curfld/curinput is still set to the previous fld if ( curfld != -1 ) { var prevfield = curinput if ( !check_field_changed(prevfield,1,1) ) { event.keyCode = ""; event.returnValue = false; return } // hide any picklist popup picklist_hide(curfld); } curfld = -1 curinput = myMsg lastfield = curinput mysay(l_t21message_desc) } function keydownProc() { //alert( "keydownProc() keyCode = " + event.keyCode + " shift = " + event.shiftKey + " ctrl = " + event.ctrlKey + " alt = " + event.altKey + " curfld=" + curfld + " curinput.id=" + curinput.id + " fld_desc[" + curfld + "]=" + fld_desc[curfld] ); if ( event.ctrlKey ) stopspeaking(); // Alt-A thru Alt-Z if ( event.altKey && event.keyCode >= 65 && event.keyCode <= 90 ) { if ( dospeech && !saydesconhotkey ) saydesconfocus = 0; // dont say field desc for hot key } //rjs curinput.focus(); var mykey = event.keyCode + (event.shiftKey ? KEY_SHIFT : 0) + (event.ctrlKey ? KEY_CTRL : 0) + (event.altKey ? KEY_ALT : 0) //show_status( "keydownProc() keyCode = " + event.keyCode + " shift = " + event.shiftKey + " ctrl = " + event.ctrlKey + " alt = " + event.altKey + " mykey = " + mykey ); //mydonekey = 1; // ZZZZZ // Alt-A thru Alt Z - search starting after current field for matching hfld hot key if ( event.altKey && event.keyCode >= 65 && event.keyCode <= 90 ) { var starti = curfld + 1 if ( starti > nflds ) starti = 1 var firsti = 1 for ( var i = starti; firsti || i != starti; ++i ) { firsti = 0 if ( i > nflds ) i = 1 //alert(" starti = " + starti + " i = " + i + " event.keyCode = " + event.keyCode + " mykey = " + mykey + " mykey - KEY_ALT = " + (mykey - KEY_ALT) + " fld_hotkey[" + i + "] = " + fld_hotkey[i] + " String.fromCharCode(" + (mykey - KEY_ALT) + ") = " + String.fromCharCode(event.keyCode)) // hot key match if ( fld_hotkey[i] == String.fromCharCode(event.keyCode) ) { // skip if not a search field if ( !(fld_type[i] & 8) ) continue // don't display if scroll hfld group 0 - hidden if ( fld_group[i] == 0 ) continue //alert("Hot Key Match on search field i = " + i) // set correct hfld group if ( (fld_type[i] & 4) && curhfldgroup != fld_group[i] ) { curhfldgroup = fld_group[i] show_hfldgroup(curhfldgroup) } // move to field var newfield = drows.rows[1].cells(i).firstChild.firstChild; if ( i == curfld ) newfield.blur(); newfield.focus(); mydonekey = 1; break } } } // handle feature keys that only work while NOT in_maint if ( !in_maint ) { switch ( mykey ) { case keycodemap[CLEARALL]: // clear all key // hide any picklist popup if ( picklist_hide(curfld) ) break; // else CLEARALL if ( !in_maint ) { clearall(1,1); mydonekey = 1; } break; case keycodemap[PAGEUP]: // Page UP key previousPage(); mydonekey = 1; break; case keycodemap[PAGEDOWN]: // Page DOWN key nextPage(); mydonekey = 1; break; case keycodemap[FIRSTPAGE]: // First Page key firstPage(); mydonekey = 1; break; case keycodemap[LASTPAGE]: // Last Page key lastPage(); mydonekey = 1; break; case keycodemap[XLEDITDATA]: // edit data xleditdata(); mydonekey = 1; break; case keycodemap[ISOLATEREC]: // isolate active record isolaterec(activerow); mydonekey = 1; break; case keycodemap[UNISOLATE]: // go back to previous search input unisolate(); // before isolate mydonekey = 1; break; // handle key pad record isolation case keycodemap[ISOLATE_0]: isolaterec(0); mydonekey = 1; break; case keycodemap[ISOLATE_1]: isolaterec(1); mydonekey = 1; break; case keycodemap[ISOLATE_2]: isolaterec(2); mydonekey = 1; break; case keycodemap[ISOLATE_3]: isolaterec(3); mydonekey = 1; break; case keycodemap[ISOLATE_4]: isolaterec(4); mydonekey = 1; break; case keycodemap[ISOLATE_5]: isolaterec(5); mydonekey = 1; break; case keycodemap[ISOLATE_6]: isolaterec(6); mydonekey = 1; break; case keycodemap[ISOLATE_7]: isolaterec(7); mydonekey = 1; break; case keycodemap[ISOLATE_8]: isolaterec(8); mydonekey = 1; break; case keycodemap[ISOLATE_9]: isolaterec(9); mydonekey = 1; break; case keycodemap[ISOLATE_10]: isolaterec(10); mydonekey = 1; break; case keycodemap[ISOLATE_11]: isolaterec(11); mydonekey = 1; break; case keycodemap[ISOLATE_12]: isolaterec(12); mydonekey = 1; break; case (KEY_CTRL + KEY_SHIFT + 77): // ctrl-shift-m case keycodemap[MAINT_MODIFY]: doModifyEntry(); mydonekey = 1; break; case (KEY_CTRL + KEY_SHIFT + 65): // ctrl-shift-a case keycodemap[MAINT_ADD]: doAddEntry(); mydonekey = 1; break; case (KEY_CTRL + KEY_SHIFT + 68): // ctrl-shift-d case keycodemap[MAINT_DELETE]: doDeleteEntry(); mydonekey = 1; break; case (KEY_CTRL + KEY_SHIFT + 82): // ctrl-shift-r case keycodemap[MAINT_REASSIGN]: if ( can_reassign ) { doReassignEntry(); } mydonekey = 1; // HERE TO STOP REFRESH break; case (KEY_CTRL + KEY_SHIFT + 79): // ctrl-shift-o case keycodemap[OUTPUT]: if ( l_outputbutton ) { output_generation(); mydonekey = 1; } break; case (KEY_CTRL + KEY_SHIFT + 69): // ctrl-shift-e case keycodemap[EXPORT]: if ( l_exportbutton ) { export_data(); mydonekey = 1; } break; } } // handle feature keys that only work while in_maint if ( in_maint ) { switch ( mykey ) { case keycodemap[CLEARALL]: // clear all key // hide any picklist popup if ( picklist_hide(curfld) ) break; // NO CLEARALL while in maint break case (KEY_CTRL + KEY_SHIFT + 67): // ctrl-alt-c case keycodemap[MAINT_CANCEL]: cancel_changes(); mydonekey = 1; break; case (KEY_CTRL + KEY_SHIFT + 85): // ctrl-alt-u case keycodemap[MAINT_UNDO]: undo_changes(); mydonekey = 1; break; case (KEY_CTRL + KEY_SHIFT + 83): // ctrl-alt-s case keycodemap[MAINT_SAVE]: save_changes(); mydonekey = 1; break; } } // handle feature keys that work whether in_maint or not switch ( mykey ) { case keycodemap[CLEARFIELD]: // clear field key if ( picklist_ispopped(curfld) ) { var picklistobj = eval("fld_picklist_popup_" + curfld) var pickidx = picklistobj.selectedIndex // if picklist option not niot the first item // then select option if ( pickidx > 0 ) { // select item picklistobj.fireEvent("onchange") mydonekey = 1; break; } } // else CLEARFIELD if ( !in_maint ) { clearfield(1); mydonekey = 1; } else { // Enter key should not clear textare Messages (it should work as normal) if ( curinput.id != "myMsg" ) { clearfield(0); mydonekey = 1; } } break; case keycodemap[SHOW_PICKLIST]: // show/hide picklist // show any picklist popup if ( picklist_ispopped(curfld) ) picklist_hide(curfld); else picklist_popup(curfld); mydonekey = 1; break; case keycodemap[UPACTIVEROW]: // UP ARROW if ( picklist_ispopped(curfld) ) { // picklist move up an option var picklistobj = eval("fld_picklist_popup_" + curfld) var pickidx = picklistobj.selectedIndex if ( pickidx > 0 ) { picklistobj.options(pickidx).selected = false picklistobj.options(--pickidx).selected = true } mydonekey = 1; break; } // else UP active row if ( !in_maint ) // UP Active row setactiverow(1,-1); mydonekey = 1; break; case keycodemap[DOWNACTIVEROW]: // DOWN Active row if ( picklist_ispopped(curfld) ) { // picklist move down an option var picklistobj = eval("fld_picklist_popup_" + curfld) var pickidx = picklistobj.selectedIndex if ( pickidx < (picklistobj.options.length - 1) ) { picklistobj.options(pickidx).selected = false picklistobj.options(++pickidx).selected = true } mydonekey = 1; break; } // else DOWN active row if ( !in_maint ) // DOWN Active row setactiverow(1,1); mydonekey = 1; break; case keycodemap[PREVIOUSFIELD]: // move to previos field saydesconfocus = 0; case KEY_SHIFT + TAB_KEYCODE: // Shit-TAB to previous field (say desc) setsrchfld(curfld,-1); mydonekey = 1; break; case keycodemap[NEXTFIELD]: // move to next field saydesconfocus = 0; case TAB_KEYCODE: // TAB to next field (say desc) setsrchfld(curfld,+1); mydonekey = 1; break; case keycodemap[SHOWMSG]: // Show Message showmsg(activerow,1); mydonekey = 1; break; case keycodemap[OPENEMAILAPP]: // Open Email App openemailapp(); mydonekey = 1; break; case keycodemap[OPENDOCURL]: // Open Document URL opendocurl(); mydonekey = 1; break; case keycodemap[GOFIELD1]: // move to field 1 and say combo if ( l_gofield1 >= 0 ) { curinput.blur(); stopspeaking(); saydesconfocus = 0; saytxtonfocus = 0; drows.rows[1].cells(l_gofield1).firstChild.firstChild.focus(); saycombo(0,1); } mydonekey = 1; break; case keycodemap[GOFIELD2]: // move to & say field 2 if ( l_gofield2 >= 0 ) { curinput.blur(); stopspeaking(); saydesconfocus = 0; saytxtonfocus = 1; drows.rows[1].cells(l_gofield2).firstChild.firstChild.focus(); } mydonekey = 1; break; case keycodemap[GOFIELD3]: // move to & say field 3 if ( l_gofield3 >= 0 ) { curinput.blur(); stopspeaking(); saydesconfocus = 0; saytxtonfocus = 1; drows.rows[1].cells(l_gofield3).firstChild.firstChild.focus(); } mydonekey = 1; break; case keycodemap[SPEAKCURRENT]: // speak current field stopspeaking(); sayfld(0,0,activerow,curfld,1); mydonekey = 1; break; case keycodemap[SPELLCURRENT]: // spell current field stopspeaking(); sayfld(0,1,activerow,curfld,1); mydonekey = 1; break; case keycodemap[FASTERSPEECH]: // speak faster fasterspeaking(); mydonekey = 1; break; case keycodemap[SLOWERSPEECH]: // speak slower slowerspeaking(); mydonekey = 1; break; case keycodemap[PITCHUP]: // pitch up pitchup(); mydonekey = 1; break; case keycodemap[PITCHDOWN]: // pitch down pitchdown(); mydonekey = 1; break; case keycodemap[NEXTSPEAKER]: // next speaker nextspeaker(); mydonekey = 1; break; case keycodemap[PREVIOUSSPEAKER]: // previous speaker previousspeaker(); mydonekey = 1; break; case keycodemap[ABOUTSPEECH]: // info about speech about_speech(1); mydonekey = 1; break; case keycodemap[SPEECHDICTIONARY]: // speech dictionary lexicon TTSObj.LexiconDlg(TTSObj.hWnd,"LexiconDlg"); mydonekey = 1; break; case keycodemap[SHOWHELP]: // show help info showhelp(); mydonekey = 1; break; case keycodemap[CPLSPEECH]: // control panel speech App cplspeechapp(); mydonekey = 1; break; case keycodemap[SPEECHONOFF]: // Toggle speech on/off speech_onoff() mydonekey = 1; break; case keycodemap[SAYMSGWHENISOLATEONOFF]: // Toggle say msg when isolate saymsgwhenisolate_onoff(1) mydonekey = 1; break; case keycodemap[SAYDESCONHOTKEYONOFF]: // Toggle say desc on hot key saydesconhotkey_onoff(1) mydonekey = 1; break; case keycodemap[HFLDSLEFT]: // scroll hflds left hflds_left(); mydonekey = 1; break; case keycodemap[HFLDSRIGHT]: // scroll hflds right hflds_right(); mydonekey = 1; break; case keycodemap[SAYRECORDCOUNT]: // say record count mysay(enqdat.Recordset.RecordCount + ".") mydonekey = 1; break; case keycodemap[SAYMSGLINE1]: // say message line 1 saymsgline(1) mydonekey = 1; break; case keycodemap[SAYMSGLINE2]: // say message line 2 saymsgline(2) mydonekey = 1; break; case keycodemap[SAYMSGLINE3]: // say message line 3 saymsgline(3) mydonekey = 1; break; case keycodemap[SAYMSGLINE4]: // say message line 4 saymsgline(4) mydonekey = 1; break; case keycodemap[SAYMSGLINE5]: // say message line 5 saymsgline(5) mydonekey = 1; break; case keycodemap[SAYMSGLINE6]: // say message line 6 saymsgline(6) mydonekey = 1; break; case keycodemap[SAYMSGLINE7]: // say message line 7 saymsgline(7) mydonekey = 1; break; case keycodemap[SAYMSGLINE8]: // say message line 8 saymsgline(8) mydonekey = 1; break; case keycodemap[SAYMSGLINE9]: // say message line 9 saymsgline(9) mydonekey = 1; break; case keycodemap[SHOW_HFLD_GROUP_0]: show_hfldgroup(0) mydonekey = 1; break; case keycodemap[TOGGLE_STATUS_LOG]: toggle_status_log_div(); mydonekey = 1; break; case keycodemap[CUSTOM_HOTKEY]: try { custom_hotkey(); } catch (exccode) {} mydonekey = 1; break; } if ( mydonekey == 1 ) { // causes1 script error on IE 8 ? //event.keyCode = ""; event.returnValue = false; } // xyzzy if ( in_maint ) { //alert("keydown lastfield.id = " + lastfield.id + " curinput.id = " + curinput.id) lastfield = curinput fld_val_since_last[curfld] = curinput.value } // test for alt-F4 (exit), F5 (refresh) key_exit = false if ( (event.altKey && event.keyCode == 115) || event.keyCode == 116 ) { //alert("DEBUG: key used to exit") key_exit = true try { custom_key_exit() } catch(exccode) { } } return true; } function keyupProc() { //alert( "keyupProc() keyCode = " + event.keyCode ); //show_status( "keyupProc() keyCode = " + event.keyCode + " shift = " + event.shiftKey + " ctrl = " + event.ctrlKey + " alt = " + event.altKey ); // YYYYYY if ( event.keyCode == TAB_KEYCODE ) { mydonekey = 0; return; } // don't search if key already processed if ( mydonekey ) { mydonekey = 0; return; } // ZZZZZZ // prevent searching on these events //if ( event.shiftKey || event.ctrlKey || event.altKey ) { if ( event.ctrlKey || event.altKey ) { return; } switch ( event.keyCode ) { case LEFTARROW_KEYCODE: curpos = curpos == -1 ? 0 : curpos > 0 ? curpos - 1 : curpos; //var str1 = curpos > 0 ? curinput.value.substr(curpos-1,1) : ""; //show_status("curinput.value = [" + curinput.value + "]" + " curpos = " + curpos + " char at curpos = [" + str1 + "]") mysay(curpos > 0 ? curinput.value.substr(curpos-1,1) : ""); return; // don't fall thru to search case RIGHTARROW_KEYCODE: var savcurpos = curpos; curpos = curpos == -1 ? curinput.value.length : curpos < curinput.value.length ? curpos + 1 : curpos; if ( curpos != savcurpos ) mysay(curpos > 0 ? curinput.value.substr(curpos-1,1) : ""); return; // don't fall thru to search case INSERT_KEYCODE: return; // don't fall thru to search case HOME_KEYCODE: curpos = 0; return; // don't fall thru to search case END_KEYCODE: curpos = curinput.value.length; mysay(curpos > 0 ? curinput.value.substr(curpos-1,1) : ""); return; // don't fall thru to search case DELETE_KEYCODE: curpos = curpos == -1 ? 0 : curpos < curinput.value.length ? curpos + 1 : curpos; mysay(curpos > 0 ? curinput.value.substr(curpos-1,1) : ""); break; case BS_KEYCODE: curpos = curpos == -1 ? 0 : curpos > 0 ? curpos - 1 : curpos; mysay(curpos > 0 ? curinput.value.substr(curpos-1,1) : ""); break; } // key is not printable - so dont search // don't search if key is TAB // don't search if ctrl/chift/alt keys // but do search if edit keys or clearall or clearfield if ( (event.keyCode < 32 || event.keyCode > "~") && event.keyCode != 8 && event.keyCode != 10 && event.keyCode != keycodemap[CLEARFIELD] && event.keyCode != keycodemap[CLEARALL] && event.keyCode != 127 ) { return; } // hack to fix F5 refresh script error ???? try { curpos = curinput.value.length; } catch ( exccode ) { curpos = 0 } if ( in_maint ) { //alert("keyup curinput.id=" + curinput.id) // run field changed code // without validationi / clear rel constrainst // to copy to srch/TEX fld check_field_changed(curinput,0,0) //PPPPPPP // if fld has a picklist popup // then pop the picklist and search // for the first match to the input field if ( has_picklist_popup(curfld) ) { if ( curinput.value != "" ) { picklist_popup(curfld,curinput.value) } } } //keySrchCol(); // reprime alarm down count to 400 ms my_alarm_key_downcount = 4 return; } function keypressProc() { var forceupper = (fld_casesensitive[curfld] ? 0 : 1); if ( fld_desc[curfld] == "Email" ) // Email forceupper = 0; //alert( "keypressProc() keyCode = " + event.keyCode + " forceupper = " + forceupper ); if ( mydonekey ) { event.keyCode = ""; event.returnValue = false; return; } // Force uppercase if (forceupper && event.keyCode >= 97 && event.keyCode <= 122 ) event.keyCode -= 32; //show_status("event.keyCode = " + event.keyCode); // don't allow double quote //if ( event.keyCode == DOUBLEQUOTE_KEYCODE ) { // event.returnValue = false; // mydonekey = 1; // return; //} return; } function fixforsearch(s1) { var retstr = "" var j = 0 // fix search for (var i=1; i <= s1.length; ++i ) { j = "`~!@#$%^&*()_-=+[{]}\\|;:'\",<.>/?".indexOf(s1.substr(i,1)) if ( j > 0 ) retstr += "\\" retstr += s1.substr(j,1) } return retstr } function keySrchCol() { //alert( "keySrchCol()"); //show_status( "keySrchCol() keyCode = " + event.keyCode + " shift = " + event.shiftKey + " ctrl = " + event.ctrlKey + " alt = " + event.altKey ); //colfilt[curfld] = curinput.value; //alert("colfilt[" + curfld + "] =" + colfilt[curfld]); recfilt = ""; var colsstr = "" if ( keysrch_thisRecordNo >= 0 ) { // search for recordno colsstr = keysrch_thisRecordNo recfilt += colsstr == "" ? "" : " & (" + fld_desc[ENQDAT_RECORDNOCOL] + " = \"" + colsstr + "\")"; } // build search filter for ( var i = 1; i <= nflds; ++i ) { if ( fld_type[i] & 8 ) { // search field colfilt[i] = drows.rows[1].cells(i).firstChild.firstChild.value; colsstr = colfilt[i] // fix search colsstr = colsstr.replace( /#/g, "\\#") colsstr = colsstr.replace( /&/g, "\\&") //colsstr = fixforsearch(colsstr) if ( colsstr != "" ) { // force exact = search in DirectoryID if ( fld_validate[i] == 6 ) { if ( colsstr.match("^[0-9]+$") ) { colsstr = "=" + colsstr; } } var op = " = " recfilt += " & (" switch ( colsstr.substr(0,1) ) { case "=": // exact/blank search recfilt += fld_datafld[i] + " = "; recfilt += "\""; recfilt += colsstr.substr(1); recfilt += "\""; break; case "!": // ! or != ... not equal/blank recfilt += fld_datafld[i] + " <> "; recfilt += "\""; if ( colsstr.substr(1,1) == "=" ) recfilt += colsstr.substr(2); else recfilt += colsstr.substr(1); recfilt += "\""; break; default: // fld value search recfilt += fld_datafld[i] + " = " recfilt += "\"" if ( l_searchwithin ) recfilt += "*" recfilt += (colsstr + "*") recfilt += "\"" } recfilt += ")" } } } keysrch_thisRecordNo = -1 if ( recfilt != "" ) recfilt = recfilt.substr(3); // strip off first " & " if ( extrarecfilt != "" ) { // must start with &,| //alert("extrarecfilt=[" + extrarecfilt + "]"); recfilt = "(" + recfilt + ") " + extrarecfilt; extrarecfilt = ""; } //window.status = "colfilt[" + curfld + "] =" + colfilt[curfld] //window.status = " recfilt = " + recfilt; //alert("recfilt = " + recfilt); // don't search if same as last if ( recfilt == lastrecfilt ) return lastrecfilt = recfilt if ( curfld == 1 ) enqdat.SortColumn = fld_datafld[1] + ";" + fld_datafld[2]; else enqdat.SortColumn = fld_datafld[curfld]; //enqdat.SortAscending = true; //enqdat.FilterValue = colfilt[curfld] //enqdat.FilterCriterion = '='; //enqdat.FilterColumn = fld_datafld[curfld]; //enqdat.SortAscending = true; enqdat.Filter = recfilt //alert("Filter = " + enqdat.Filter) // start again at top activerow = 0; reccountspoken = 0; myRecordNo.innerHTML = ""; hide_myDetails(); show_status("Searching..."); //Reset the DSO, this will in turn refresh any bound elements enqdat.Reset(); } function reload_enqdat() { //alert("reload_enqdat()") loading_progress(1) enqdat_loading = 1 enqdat.DataURL = enqdat.DataURL // no rows if (drows.rows.length <= DOFF) { clearall(1,0) // force search } else { // keep current serach criteria enqdat.Reset() } } function clear_enqdat_loading() { if ( enqdat_loading ) { loading_progress(0) enqdat_loading = 0 } } function colSort(fld) { if ( in_maint ) return //alert( "colSort() fld = " + fld + " Before... SortColumn = " + enqdat.SortColumn + " SortAscending = " + enqdat.SortAscending ); // invert sort order if current sort field var mtchsrt = ""; if ( fld == 1 ) mtchsrt = fld_datafld[1] + ";" + fld_datafld[2]; else mtchsrt = fld_datafld[fld]; if ( mtchsrt == enqdat.SortColumn ) { enqdat.SortAscending = !enqdat.SortAscending; } else { // Use current sort order for new column sort enqdat.SortColumn = mtchsrt; } //alert( "colSort() After SortColumn = " + enqdat.SortColumn + " SortAscending = " + enqdat.SortAscending ); activerow = 0; // start at top enqdat.Reset(); } function firstPage() { activerow = 0; drows.firstPage(); select_on_focus = false // don't select when focus curinput.focus() // going back to curinput } function previousPage() { drows.previousPage(); select_on_focus = false // don't select when focus curinput.focus() // going back to curinput } function nextPage() { drows.nextPage(); select_on_focus = false // don't select when focus curinput.focus() // going back to curinput } function lastPage() { activerow = drows.rows.length - DOFF - 1; drows.lastPage(); select_on_focus = false // don't select when focus curinput.focus() // going back to curinput } //------------------------------------------------------------ function show_myDetails() { outline_myDetails(); // show TEXINFO info if ( have_TEXINFO ) show_TEXINFO(); PICandMSG.style.display = "none" if ( PICTURECOL >= 0 || defpictureurl.length > 0 ) { pictureurl = (PICTURECOL >= 0) ? fldtrim(drows.rows[DOFF+activerow].cells[PICTURECOL].innerText) : ""; if ( pictureurl.length > 0 ) { myPicture.innerHTML = "" myPicTABLE.style.display = "" PICandMSG.style.display = "" } else { if ( defpictureurl.length > 0 ) { myPicture.innerHTML = "" myPicTABLE.style.display = "" PICandMSG.style.display = "" } else { myPicture.innerHTML = "" myPicTABLE.style.display = "none" } } } if ( msglines != 0 ) { if ( acthasmsg && !in_add ) { //myMsg.innerHTML = mgmsg; //myMsg.innerHTML = l_t21message_desc + ":

"; myMsg.value += msg_fld["Msg1"] ? (gmsg1 + "\n") : ""; myMsg.value += msg_fld["Msg2"] ? (gmsg2 + "\n") : ""; myMsg.value += msg_fld["Msg3"] ? (gmsg3 + "\n") : ""; myMsg.value += msg_fld["Msg4"] ? (gmsg4 + "\n") : ""; myMsg.value += msg_fld["Msg5"] ? (gmsg5 + "\n") : ""; myMsg.value += msg_fld["Msg6"] ? (gmsg6 + "\n") : ""; myMsg.value += msg_fld["Msg7"] ? (gmsg7 + "\n") : ""; myMsg.value += msg_fld["Msg8"] ? (gmsg8 + "\n") : ""; myMsg.value += msg_fld["Msg9"] ? (gmsg9 + "\n") : ""; myMsg.style.display = "" myMsgTABLE.style.display = "" PICandMSG.style.display = "" if ( dospeech && saymsgwhenisolate ) mysay(expmsg(mgmsg)); } else { //myMsg.innerHTML = "No " + l_t21message_desc + "."; myMsg.value = ""; if ( l_domaint ) { myMsg.style.display = "" PICandMSG.style.display = "" } else { if ( pictureurl.length <= 0 && defpictureurl.length <= 0 ) { myPicture.innerHTML = "" myPicTABLE.style.display = "none" PICandMSG.style.display = "none" } myMsg.style.display = "none" } if ( dospeech && saymsgwhenisolate ) mysay("No " + l_t21message_desc); } } // auto open doc if (autodocurl && thisRecordNo != lastRecordNo && (RECORDNOCOL >= 0)) { opendocurl(); } lastRecorcNo = thisRecordNo } function hide_myDetails() { //if ( have_TEXINFO ) // myTEXINFO.innerHTML = ""; //if ( msglines != 0 ) // myMsg.innerHTML = ""; //"
"; //if ( PICTURECOL >= 0 ) // myPicture.innerHTML = ""; myDetails.innerHTML = ""; } //------------------------------------------------------------ function drows_info_changed() { //alert("drows_info_changed()"); var str1 = "" if ( firsttime ) return; if (drows.readyState == "complete") { // move to active page if ( !in_maint && go_activepage > 0 ) { while ( go_activepage > 0 ) { --go_activepage nextPage() } return } // flag not isolated if (enqdat.Recordset.RecordCount != 1) { unisoactiverow = -1; unisocurfld = -1; unisoactiverecordNumber = -1; unisoactivepage = -1; } if (drows.rows.length > DOFF) { //window.status = //"drows.rows.length=" + drows.rows.length + " " + //"drows.rows[DOFF].recordNumber = " + drows.rows[DOFF].recordNumber + " " + //"drows.rows[" + (drows.rows.length - 1) + "].recordNumber = " + // drows.rows[drows.rows.length - 1].recordNumber + " " + //"(" + enqdat.Recordset.RecordCount + ")" //show_status("Search [" + enqdat.Filter + "] Complete (" + enqdat.Recordset.RecordCount + " Records Matched)"); if ( !in_maint ) show_status("Search Complete (" + enqdat.Recordset.RecordCount + " Records Matched)"); if ( l_domaint ) { document.all.but_ModifyEntry.disabled = (enqdat.Recordset.RecordCount == 1) ? false : true; document.all.but_DeleteEntry.disabled = (enqdat.Recordset.RecordCount == 1) ? false : true; if ( can_reassign ) document.all.but_ReassignEntry.disabled = (enqdat.Recordset.RecordCount == 1) ? false : true; } // locate active recordNumber within page if ( !in_maint && go_activerecordNumber > 0 ) { // search for activerecorNUmber for ( var i=DOFF; i < drows.rows.length; ++i) { var recno = drows.rows[i].recordNumber //alert("locate activerecordNumber=" + go_activerecordNumber + " i=" + i + " recno=" + recno) if ( go_activerecordNumber == recno ) { activerow = (i - DOFF) //alert("activerow set to " + activerow) break } } go_activerecordNumber = 0 } if ( !in_maint ) { setactiverow(1,0); // determine if there is a previous page // (ie. recordNumber of first row on screen is > 1) if (drows.rows[DOFF+0].recordNumber > 1) { document.all.but_firstPage.disabled = false; document.all.but_previousPage.disabled = false; } else { document.all.but_firstPage.disabled = true; document.all.but_previousPage.disabled = true; } //determine if there is a next page // (ie. recordNumber of last row on screen < recordCount) if (drows.rows[drows.rows.length - 1].recordNumber < enqdat.Recordset.RecordCount) { document.all.but_lastPage.disabled = false; document.all.but_nextPage.disabled = false; } else { document.all.but_lastPage.disabled = true; document.all.but_nextPage.disabled = true; } if ( msglines != 0 ) { acthasmsg = showmsg(activerow,0); if ( acthasmsg ) document.all.but_showmsg.disabled = false; else document.all.but_showmsg.disabled = true; } else { gmsg1 = "" gmsg2 = "" gmsg3 = "" gmsg4 = "" gmsg5 = "" gmsg6 = "" gmsg7 = "" gmsg8 = "" gmsg9 = "" mgmsg = "" gmsg = "" } if ( EMAILCOL >= 0 ) { if ( drows.rows[DOFF+activerow].cells[EMAILCOL].innerText != "" ) document.all.but_openemailapp.disabled = false; else document.all.but_openemailapp.disabled = true; } if ( l_outputbutton ) document.all.but_output.disabled =false; if ( l_exportbutton ) document.all.but_export.disabled =false; thisRecordNo = (RECORDNOCOL >= 0) ? drows.rows[DOFF+activerow].cells[RECORDNOCOL].innerText : -1; // if only 1 record matches if (enqdat.Recordset.RecordCount == 1) { show_myDetails() if ( l_initial_reassign ) { doReassignEntry() } } else { hide_myDetails() } if ( l_initial_reassign ) { l_initial_reassign = false } } } else { // now rows if ( 1 /*!in_maint*/ ) { thisRecordNo = (RECORDNOCOL >= 0) ? 0 : -1; gmsg1 = "" gmsg2 = "" gmsg3 = "" gmsg4 = "" gmsg5 = "" gmsg6 = "" gmsg7 = "" gmsg8 = "" gmsg9 = "" mgmsg = "" gmsg = "" document.all.but_firstPage.disabled = true; document.all.but_lastPage.disabled = true; document.all.but_nextPage.disabled = true; document.all.but_previousPage.disabled = true; if ( msglines != 0 ) document.all.but_showmsg.disabled = true; if ( EMAILCOL >= 0 ) document.all.but_openemailapp.disabled = true; if ( l_outputbutton ) document.all.but_output.disabled = true; if ( l_exportbutton ) document.all.but_export.disabled = true; myRecordNo.innerHTML = ""; ////if ( l_domaint && !sayready ) if ( in_add ) { // display details form // leaving search criteria in place show_myDetails(); thisRecordNo = 0 set_maint(-1) } else { hide_myDetails(); } stopspeaking(); if ( !in_maint ) { if ( sayready ) { mysay("Ready."); show_status("Ready."); sayready = 0; } else { mysay("No Matches."); //show_status("[" + enqdat.Filter + "] No Matches."); show_status("No Matches."); } } if ( l_initial_reassign ) { // if no mtaches clear auto reassign l_initial_reassign = false } if ( ! in_add ) { // clear rowselect() run_after_speaking_done('l_rowselect(' + -1 + ',' + -1 + ',' + -1 + ')') } } } clear_enqdat_loading() } } //------------------------------- function xleditdata() { var str1 = "" if ( xlsfile.length <= 0 || csvfile.length <= 0 ) { str1 = "Excel Edit Feature is Disabled"; mysay(str1); show_status(str1); return; } // no rows if (drows.rows.length <= DOFF) { mysay("No Rows."); return; } try { str1 = "Testing For Excel"; //mysay(str1); show_status(str1); ExcelApp = GetObject("","Excel.Application"); } catch ( exccode ) { str1 = "GetObject Excel App. Exception=" + exccode; //mysay(str1); //alert(str1); str1 = "Starting Excel" mysay(str1); show_status(str1); try { ExcelApp = new ActiveXObject("Excel.Application"); } catch ( exccode ) { str1 = "Error Can't start Excel App. Exception=" + exccode; mysay(str1); show_status(str1); //alert(str1); return; } } // test if workbook is open try { str1 = "Testing For Workbook"; //mysay(str1); show_status(str1); ExcelApp.Run("Set_Filenames", xlsfilepath, csvfilepath); } catch ( exccode ) { str1 = "Opening Workbook" mysay(str1); show_status(str1); // assume workbook is NOT open try { // open workbook ExcelApp.Workbooks.Open(xlsfilepath); } catch ( exccode ) { str1 = "Can't Open Excel Workbook [" + xlsfilepath + "]. Exception=" + exccode; mysay(str1); show_status(str1); //alert(str1); ExcelApp.Application.Quit(); return; } } try { str1 = "Checking Workbook OK."; //mysay(str1); show_status(str1); ExcelApp.Run("Set_Filenames", xlsfilepath, csvfilepath); } catch ( exccode ) { str1 = "Error Set_Filename in Excel. Exception=" + exccode; mysay(str1); show_status(str1); //alert(str1); ExcelApp.Application.Quit(); return; } ExcelApp.Application.Visible = true; ////ExcelApp.Run("Save_and_Export"); ////ExcelApp.Columns("B:B").Select; ////ExcelApp.Selection.Find("WUNDER", "", ""); //var srchval = drows.rows[DOFF+activerow].cells[1].innerText; //ExcelApp.Run("Goto_Rec", srchval); var RecordNo = (RECORDNOCOL >= 0) ? drows.rows[DOFF+activerow].cells[RECORDNOCOL].innerText : -1; try { ExcelApp.Run("Goto_Rec", "B" + RecordNo); } catch ( exccode ) { str1 = "Error Got_Rec in Excel. Exception=" + exccode; mysay(str1); show_status(str1); //alert(str1); ExcelApp.Application.Quit(); return } //var tmpstr = "Waiting for Excel" //show_status(tmpstr); //while ( 1 ) { // if ( ! confirm(tmpstr) ) // break; // if ( ExcelApp.Run("is_done", 1) ) { // //alert("Do a Refresh"); // //document.execCommand("Refresh"); // alert("Force data reload"); // enqdat.DataURL = enqdat.DataURL; // enqdat.Reset(); // break; // } //} if ( kickoff_isdone ) { kickoff_isdone = 0; test_excel_saved(); } } function test_excel_saved() { //alert("test_excel_saved()"); var isexceldone = 0; // test is_done flag in excel try { isexceldone = ExcelApp.Run("is_done", 1); } catch ( exccode ) { //alert("Error Test is_done in Excel. Exception=" + exccode); //mysay("error is done"); isexceldone = 0; } //mysay("is done " + isexceldone); if ( isexceldone ) { //alert("go rest is_done"); // reset is done flag in excel try { isexceldone = ExcelApp.Run("is_done", 0); } catch ( exccode ) { //alert("Error reset is_done in Excel. Exception=" + exccode); maysay("is_done reset Error."); isexceldone = 0; } //alert("Force Data Reload is_done now = " + ExcelApp.Run("is_done", 1) ); mysay("is done set - Reloading Data."); enqdat.DataURL = enqdat.DataURL; enqdat.Reset(); } // test again later setTimeout('test_excel_saved();', 5000, "JavaScript"); } //------------------------------- function about_speech(dodisplay) { stopspeaking(); var str = ""; str = str + TTSObj.ModeName(ttsidx) + "."; str = str + "\n" + "Speaker index is " + ttsidx + "." str = str + " " + "Max index is " + max_ttsidx + "."; str = str + "\n" + "Manfacturer:" + TTSObj.MfgName(ttsidx) + "."; str = str + "\n" + "ProductName: " + TTSObj.ProductName(ttsidx) + "."; str = str + "\n" + " ModeName: " + TTSObj.ModeName(ttsidx) + "."; str = str + "\n" + " Speaker: " + TTSObj.Speaker(ttsidx) + "."; str = str + "\n" + " Speed: " + TTSObj.Speed + "."; str = str + "\n" + " Age: " + TTSObj.Age(ttsidx) + "."; str = str + "\n" + " Style: " + TTSObj.Style(ttsidx) + "."; mysay(str); if ( dodisplay ) { mysay("Hit the Enter Key to continue."); str = str + "\n" + " TTSMode: " + TTSObj.TTSMode + "."; alert("Speech: \n\n" + str); } //mysay("Hit ENTER for next Speaker or ESCAPE to cancel."); //if ( window.confirm("Go to next Speaker") ) { // nextspeaker(); //} curinput.focus(); } function about_engine() { TTSObj.AboutDlg(TTSObj.hWnd,"AboutDlg"); curinput.focus(); } function speech_properties() { TTSObj.GeneralDlg(TTSObj.hWnd,"GeneralDlg"); curinput.focus(); } function sayfld(waitprev,speak_spell,row,fld,saywhat) { var fldstr = ""; //alert("sayfld() waitprev = " + waitprev + " speak_spell = " + speak_spell + " row = " + row + " fld = " + fld + " saywhat = " + saywhat + " drows.rows.length=" + drows.rows.length); if ( !waitprev ) // dont wait for previous stuff to finish stopspeaking(); if ( (saywhat & 2) && fld_desc[fld] != "" ) // say field name mysay(fld_desc[fld].toLowerCase()); // have data and say contents flag set then say field contents if ( (drows.rows.length > (DOFF + row)) && (saywhat & 1) ) { fldstr = getfldtxt(speak_spell,row,fld); } //alert("fldstr=[" + fldstr + "]"); mysay(fldstr); } function saycombo(sayfld1desc,stopfirst) { var combostr = ""; if (drows.rows.length <= (DOFF + activerow)) { return } if ( TTSON ) { combostr = " "; // say record count if ( dosayrecordcountbeforecombo && drows.rows.length > DOFF && enqdat.Recordset.RecordCount != 1 && !reccountspoken ) { combostr += enqdat.Recordset.RecordCount combostr += ". " //mysay(enqdat.Recordset.RecordCount); //waitspeaking(); reccountspoken = 1; } // say search field content if not a combo field if ( curfld > 3 ) { //combostr += fld_desc[curfld].toLowerCase() + ". "; var tmpstr = getfldtxt(0,activerow,curfld); if ( tmpstr != "" ) combostr += tmpstr + ". "; } if ( sayfld1desc ) { //sayfld(0,0,activerow,1, 2); combostr += fld_desc[1].toLowerCase() + ". "; } //sayfld(0,0,activerow,1,1); //sayfld(1,0,activerow,2,1); //sayfld(1,1,activerow,3,1); var fld1str = getfldtxt(0,activerow,1); var fld2str = getfldtxt(0,activerow,2); var fld3str = getfldtxt(0,activerow,3); combostr += fld1str + " " + fld2str + " " + fld3str; combostr += "." // tack on extra saycombo Fields for ( var i=1; i <= nflds; ++i ) { if ( fld_type[i] & 16 ) { // extra saycombo field combostr += " " + getfldtxt(0,activerow,i) } } combostr += "." if ( stopfirst ) stopspeaking(); mysay(combostr); //alert("combostr=[" + combostr + "]"); // say message ofter combo Fields if ( dosaymessageaftercombo ) { if ( acthasmsg ) { if ( dosaymessageaftercombo == 1 ) { mysay(expmsg(mgmsg)) } else { mysay("Has " + l_t21message_desc + "!") } } //else // mysay("No " + l_t21message_desc) //} } } } function mysay(str) { if ( str == "" ) return; TTSON && TTSObj.Speak(str); } function getfldtxt(speak_spell,row,fld) { if ( drows.rows.length <= DOFF ) return "No rows."; var fldtxt = drows.rows[DOFF+row].cells[fld].innerText.toLowerCase(); if ( speak_spell || (fld_type[fld] & 1) ) // always spell field fldtxt = spreadout(fldtxt); if ( fldtxt == "" ) { if ( dosayblankfield ) { fldtxt = "Blank"; //fldtxt = "no " + fld_desc[fld].toLowerCase(); } else { fldtxt = ""; } } return fldtxt; } function spreadout(str) { var i; var c; var spstr = ""; for ( i = 0; i < str.length; ++i ) { c = str.substr(i,1); if ( c == "'" ) c = " apostrifee"; if ( c == "." ) c = " dot"; if ( i > 0 ) spstr += " "; spstr += c; } return spstr; } function spellstr(str) { TTSON && TTSObj.Speak(spreadout(str)); } function stopspeaking() { TTSON && TTSObj.StopSpeaking(); } function waitspeaking() { //while ( TTSON && TTSObj.IsSpeaking ) { // //Sleep(100); // //WScript.Sleep(100); // //wso = new ActiveXObject(".WScript"); // // //show_status("Wait Speaking..."); // //alert("Wait Speaking..."); // // //mydoevents(); // //} //while ( TTSON && TTSObj.IsSpeaking ) { // alert("Wait Speaking..."); //} //setTimeout('time_out_func();', 100, "JavaScript"); //var getwaitwin = window.open("aaa.htm",'','toolbar=no,menubar=no,location=no,height=30,width=80'); //while ( !getwaitwin.closed ) // ; //alert("Wait Speaking..."); show_status("Wait Speaking..."); while ( TTSON && TTSObj.IsSpeaking ) ; } function run_after_speaking_done(cmd) { if ( TTSON && TTSObj.IsSpeaking ) { setTimeout('run_after_speaking_done(\'' + cmd + '\');', 100, "JavaScript"); return } try { eval(cmd) } catch (exccode) { alert("ERROR: trying to eval cmd=[" + cmd + "]") } } function fasterspeaking() { var str = ""; stopspeaking(); if ( !TTSON ) return; var tmpspeed = TTSObj.Speed; TTSObj.Speed = TTSObj.Speed + SPEECHSPEED_INC; if ( TTSObj.Speed == tmpspeed ) { str = "Faster - Speech Speed at maximum of " + TTSObj.Speed; mysay(str); show_status(str); } else { str = "Faster - Speech Speed set to " + TTSObj.Speed; mysay(str); show_status(str); } } function slowerspeaking() { var str = ""; stopspeaking(); if ( !TTSON ) return; var tmpspeed = TTSObj.Speed; TTSObj.Speed = TTSObj.Speed - SPEECHSPEED_INC; if ( TTSObj.Speed == tmpspeed ) { str = "Slower - Speech Speed at minimum of " + TTSObj.Speed; mysay(str); show_status(str); } else { str = "Slower - Speech Speed set to " + TTSObj.Speed; mysay(str); show_status(str); } } function pitchup() { stopspeaking(); //mysay("Pitch UP - NOT implimented."); return; if ( !TTSON ) return; //stopspeaking(); //mysay("Increasing Pitch."); //TTSON && TTSObj.Speak("\\Pit=90\\"); //alert("Pitch = " + TTSObj.Pitch); TTSObj.Pitch = TTSObj.Pitch + SPEECHPITCH_INC; if ( TTSObj.Pitch > SPEECHPITCH_MAX ) TTSObj.Pitch = SPEECHPITCH_MAX; if ( TTSObj.Pitch == SPEECHPITCH_MAX ) { show_status("Higher - Speech Pitch at maximum of " + TTSObj.Pitch); } else { show_status("Higher - Speech Pitch set to " + TTSObj.Pitch); } } function pitchdown() { stopspeaking(); //mysay("Pitch DOWN - NOT implimented."); return; if ( !TTSON ) return; //stopspeaking(); //mysay("Decreasing Pitch."); TTSObj.Pitch = TTSObj.Pitch - SPEECHPITCH_INC; if ( TTSObj.Pitch < SPEECHPITCH_MIN ) TTSObj.Pitch = SPEECHPITCH_MIN; if ( TTSObj.Pitch == SPEECHPITCH_MIN ) { show_status("Lower - Speech Pitch at minimum of " + TTSObj.Pitch); } else { show_status("Lower - Speech Pitch set to " + TTSObj.Pitch); } } function nextspeaker() { if ( !TTSON ) return; stopspeaking(); //WSP mysay("Next Speaker."); //WSP waitspeaking(); ttsidx = ttsidx + 1; if ( ttsidx > max_ttsidx ) ttsidx = 1; selectspeaker(ttsidx); about_speech(0); } function previousspeaker() { if ( !TTSON ) return; stopspeaking(); //WSP mysay("Previous Speaker."); //WSP waitspeaking(); ttsidx = ttsidx - 1; if ( ttsidx < 1 ) ttsidx = max_ttsidx; selectspeaker(ttsidx); about_speech(0); } function selectspeaker(ttsidx) { show_status("Selecting Speaker index " + ttsidx + "."); TTSObj.Select(ttsidx); if ( TTSObj.LastError ) { //mysay("ERROR! setting speaker index " + ttsidx + " Error Code is " + TTSObj.LastError + "."); //waitspeaking(); show_status("ERROR! setting speaker index " + ttsidx + " Error Code is " + TTSObj.LastError + "."); } setCookie("ttsidx", ttsidx, now); //save away setting } function cplspeechapp() { if ( ! dospeech ) return; var str1 = "Activate Control Panel Speech Application"; mysay(str1); show_status(str1); // //var cplspeechObj = new ActiveXObject("Speech Properties"); // window.open(cplspeechappurl,'','toolbar=no,menubar=no,location=no,height=300,width=650'); } function saydesconhotkey_onoff() { if ( !dospeech ) return; var str = ""; stopspeaking(); saydesconhotkey = saydesconhotkey ? 0 : 1; setCookie("saydesconhotkey", saydesconhotkey, now); //save setting if ( saydesconhotkey ) str = "Say field description on hot key - Now set to On."; else str = "Say field description on hot key - Now set to Off."; mysay(str); show_status(str); //WSP waitspeaking(); } function saymsgwhenisolate_onoff() { if ( (!dospeech) || (msglines == 0) ) return; var str = ""; stopspeaking(); saymsgwhenisolate = saymsgwhenisolate ? 0 : 1; setCookie("saymsgwhenisolate", saymsgwhenisolate, now); //save setting if ( saymsgwhenisolate ) str = "Say " + l_t21message_desc + " when isolate - Now set to On."; else str = "Say " + l_t21message_desc + " when isolate - Now set to Off."; show_status(str); mysay(str); //WSP waitspeaking(); // if only 1 record matches if (enqdat.Recordset.RecordCount == 1) { // if active row has a message and say on then say msg if ( acthasmsg && saymsgwhenisolate ) { mysay(expmsg(mgmsg)); } } } function speech_onoff() { if ( ! dospeech ) return; var str = ""; stopspeaking(); if ( TTSON ) { //WSP mysay("Speech Off."); //WSP waitspeaking(); str += "Hit Enter to turn Speech Off."; mysay(str); alert(str); } TTSON = TTSON ? 0 : 1; if ( ! TTSON ) // if turning off then save cookie before TTSObj setCookie("TTSON", TTSON, now); //save away setting TTSObj.Enabled = TTSON init_tts(); if ( TTSON ) { setCookie("TTSON", TTSON, now); //save away setting //WSP mysay("Speech On."); //WSP waitspeaking(); str += "Speech on. Hit Enter"; mysay(str); alert(str); saycombo(0,0); } //WSP waitspeaking(); //curinput.focus(); clearall(1,1); } function init_tts() { if ( dospeech == 1 || dospeech == 3 ) { but_speech_onoff.value = TTSON ? "Speech is On" : "Speech is Off"; document.all.but_speech_properties.disabled = TTSON ? false : true; document.all.but_about_speech.disabled = TTSON ? false : true; document.all.but_about_engine.disabled = TTSON ? false : true; document.all.but_next_speaker.disabled = TTSON ? false : true; document.all.but_previous_speaker.disabled = TTSON ? false : true; if ( cplspeechappurl != "" ) document.all.but_speech_controlpanel.disabled = TTSON ? false : true; document.all.but_Lex.disabled = TTSON ? false : true; document.all.but_speech_onoff.disabled = false; } if ( ! TTSON ) { return } TTSObj.Initialized = 1; // disable Exceptions on TTS TTSObj.SuppressExceptions = 1; ttsidx = TTSObj.CurrentMode; //alert("CurrentMode = " + ttsidx); // set speaker //ttsidx = 18; //ttsidx = 1; ttsidx = getCookie("ttsidx") if (!ttsidx) ttsidx = 1 else ttsidx = parseInt(ttsidx) //alert("setting Select ttsidx = " + ttsidx); selectspeaker(ttsidx); //alert("Device = " + TTSObj.Device); max_ttsidx = TTSObj.CountEngines; //max_ttsidx = 19; //alert("max_ttsidx = " + max_ttsidx); //ttsidx = TTSObj.Find("MfgName=TruVoice"); //ttsidx = TTSObj.Find("Speaker=Mary in Hall"); //alert("ttsidx = " + ttsidx); } //---------------------------------------------- function setactiverow(rel, offset) { //alert("setactiverow(" + rel + "," + offset + ")"); var dosaycombo = 1; var nrows = drows.rows.length - DOFF; if ( nrows <= 0 ) { myRecordNo.innerHTML = ""; hide_myDetails(); return; } var i; var j; for ( i=DOFF; i < drows.rows.length; ++i) { var rtag = i - DOFF + ""; switch ( i-DOFF ) { case 10: rtag = "-"; break; case 11: rtag = "+"; break; case 12: rtag = "."; break; } // make # col click to isolate drows.rows[i].cells[0].innerHTML = "
"; outp += ""; outp += "= 0 || defpictureurl.length > 0 ) { outp += " "; outp += ""; outp += "
"; outp += " \n" : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += (l_maintbuttons_pos != 0) ? "
\n" : "" outp += (l_maintbuttons_pos != 0) ? " " : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += "\n" : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += "\n" : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += "\n" : "" if ( SDATECOL >= 0 && EDATECOL >= 0 ) { can_reassign = 1; outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += "\n" : "" } outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += "\n" : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += "\n" : "" outp += (l_maintbuttons_pos != 0) ? "\n" : "" outp += "\n" : "" //outp += (l_maintbuttons_pos != 0) ? "\n" : "" //outp += "" //outp += (l_maintbuttons_pos != 0) ? "
\n" : "" outp += "" } return outp } //---------------------------------------------- function speech_buttons() { var outp = "" if ( dospeech == 1 || dospeech == 3 ) { outp += "
"; outp += "\n"; if ( l_gap_before_TEX > 0 ) { outp += ""; outp += ""; outp += "
"; outp += "\n"; } outp += ""; // enqinfo outp += "
"; outp += "
"; outp += "\n"; dbgwindow("outp=[" + outp + "]"); return outp; } // --------------------------------- // internal click to isolate record function internal_isolate_fixreplinkA(a, fldidx, flddesc) { //alert("internal_isolate_fixreplinkA(a," + fldidx + "," + flddesc +") a.href = " + a.href); if ( a.href.indexOf("rep_info") >= 0 ) return a.title; var i = a.recordNumber; i = (i-1) % NDROWS; a.href = 'Javascript: internal_isolate_rep_info(' + fldidx + ',"' + flddesc + '",' + i + ');'; return "Isolate record."; } function internal_isolate_rep_info(fldidx,flddesc,rowidx) { //var f0 = drows.rows[DOFF+rowidx].cells[0].innerText //alert("flddesc=" + flddesc + " clicked rowidx=" + rowidx); isolaterec(rowidx); return; } // --------------------------------- function toggle_status_log_div() { if ( status_display_div.style.display == "none" ) { status_display_div.style.display = "" status_toggle.value = "HideLog" } else { status_display_div.style.display = "none" status_toggle.value = "ShowLog" } } function loading_progress(on_off, msg) { if ( !on_off ) { // turn off switch ( l_enableprogressbar ) { case 1: case 2: show_PB("centre", "" + (msg == null ? "Done" : msg) + "", 200, 0) case 3: BusyOff(); break; } return } // turn on switch ( l_enableprogressbar ) { case 1: show_PB("centre", "" + (msg == null ? "Loading" : msg) + "", 0,0) BusyOn() break; case 2: var piximg = "I" show_PB("left", piximg, 0, -200) BusyOn() break; case 3: BusyOn() break; } } function dyn_Wpx(px) { return (Math.ceil(document.body.clientWidth * px / 800) + 1) } function dyn_Hpx(px) { return (Math.ceil(document.body.clientHeight * px / 600) + 1) } // ------------------------------------------------------------------------- // MAIN dbgwindow("MAIN..."); w("") // init progress display switch ( l_enableprogressbar ) { case 1: init_progressbar("centre", 22, 300,"Loading", 0,0) BusyOn() break; case 2: //var piximg = "" //var piximg = piximg + piximg //var piximg = piximg + piximg //var piximg = piximg + piximg //var piximg = "〹" var piximg = "I" init_progressbar("left", 22, 300, piximg, 0, -200) BusyOn() break; case 3: BusyOn() break; } w("") w("") // banner1 picture before myttile if ( t21webdirbanner1 != "" ) { w("") } if ( mytitle_nexttobanner1 ) { w("") } // banner2 picture after myttile if ( t21webdirbanner2 != "" ) { w("") } w("") w("
") w("") w("") for ( var i = 1; i <= nexttobanner1_padding; ++i ) { w(" ") } w("") w("") w("") for ( var i = 1; i <= nexttobanner1_padding; ++i ) { w(" ") } w("") w("") w("
") if ( hr_afterbanner1 ) w("
") if ( t21topheader ) { if ( t21Heading != "" || (!t21mailtobutton && t21mailto != "") ) { w("") w("") w("") if ( t21Heading != "" ) { w("") } if ( !t21mailtobutton && t21mailto != "" ) { w("") } w("") w("") w("
") w("" + t21Heading + "") w("") w("" + t21mailtomsg + "") if ( t21mailtoxtramsg != "" ) { w(t21mailtoxtramsg); } w("
") } } if ( defbgsoundurl != "" ) w("") if ( dospeech ) { // SAPI 4.0a Runtime binaries // - auto download and install //w("") //w("") // MSTTS 4.0 Text To Speech Engine - English // - auto download and install //w("") //w("") // Lernout Hauspie TruVoice American. English. TTS Engine // - auto download and install //w("") //w("") // Lernout Hauspie TTS3000 Engine - British English // - auto download and install //w("") //w("") w("MS SAPI 4.0 Voice Text Control") w("") w("") //w("MS SAPI 5 MSSam") //w("") //w("") //w("MS DOWNLOADABLE SPEECH API (????)") //w("") //w("") } //w("MS IE DHTML Databinding Tabular Data Control") ////w("") ////w("") //w("") //w("") //w(" ") //w(" ") //w(" ") //w(" ") //w(" ") //w(" ") //w(" ") ////w(" ") //w("") enqdat = new mytdc(document.body,"enqdat"); dbgwindow("test_mytdc_T21Enquiry.js: init enqdat.id=[" + enqdat.id + "]"); dbgwindow("typeof enqdat Recordset= " + typeof(enqdat.Recordset)); enqdat.DataURL = t21webdirdataurl; enqdat.UseHeader = true; enqdat.TextQualifier = ","; //enqdat.Filter = l_recordno_desc + "=-1"; enqdat.Filter = l_recordno_desc + "=10579300"; //CAROL MOONIE dbgwindow("test_mytdc_T21Enquiry.js: enqdat.DataURL=[" + enqdat.DataURL + "]"); dbgwindow("test_mytdc_T21Enquiry.js: enqdat.UseHeader=[" + enqdat.UseHeader + "]"); dbgwindow("test_mytdc_T21Enquiry.js: enqdat.Filter=[" + enqdat.Filter + "]"); //enqdat.ondatasetcomplete = function (p1) { alert("hi from anon p1=[" + p1 + "]"); } enqdat.ondatasetcomplete = do_ondatasetcomplete; //dumpobj(enqdat); dbgwindow("test_mytdc_T21Enquiry.js: typeof(enqdat.Reset)=" + typeof(enqdat.Reset)); enqdat.Reset(); if ( l_outputbutton ) { w("") w(" ") w(" ") w(" ") w(" ") w(" ") w("") w("") } if ( l_exportbutton ) { w("") w(" ") w(" ") w(" ") w(" ") w(" ") w("") w("") } w('
'); //----------------------------- w( " Data Loading..." ); //----------------------------- w('
'); if ( l_local_status_display ) { w("") } w("")