Odyssey
lnappEdit.prg
1 <?php
2  /* - Purpose of this script is evolving..
3  2/9/2012 - I am starting this form. At first it will be merely devloping the maintenance
4  of the lnappschemadetail table.
5  Next will be to Maintain the lnappschemamaster, disclosure fragements need to be somewhere,
6  and the portal script maintenance.
7 
8 
9 
10  ** NOTES:
11  SAVING -- Probably will have to start with a DELETE ALL for the loan, but I can then reinsert
12  the detailid if I know it, and any new records would get the default value from the sequence.
13 
14  */
15 
16  // ** DECLARE SCRIPT CONSTANTS
17 
18 
19  // ** INCLUDE THE COMMON CU SCRIPTS
20 
21  // ** INCLUDE SCRIPT FOR HOMECU SECURITY
22  // require("ck_hticket.i"); ** REMOVED DURING DEVELOPMENT
23 
24 $monLibrary= dirname(__FILE__) . "/../library";
25 require_once("$monLibrary/cu_top.i");
26 
27  $dms_ok=array('user_name'=>'string', 'loanid'=>'string');
28 
29  dms_import($dms_ok);
30 
31  // ** Declare http path to the lnapp includes
32  $http_script_path = "https://{$home_host}.homecu.net/lnapp_include/";
33 
34  $LN_CUR_ID = intval($loanid);
35 
36 
37  // ** SETUP THE CONSTANTS ON THE FORM
38  $select_fieldtype_keys = Array ("P", "H", "L", "GT", "YNR", "YNR01", "YNS", "YNS01", "AR", "AS", "CB");
39 
40 
41  // ** Load the Loan App Answer Lookup Options
42  // * The value will be returned in an <option> string
43  $selectAnswerOptions = "";
44  $sql = "SELECT *
45  FROM lnappanslookupheader
46  ORDER BY anstitle; ";
47  $ansRs = db_query($sql, $link);
48  $recCount = 0;
49 
50  while ($ansRow = db_fetch_assoc($ansRs, $recCount)) {
51  $selectAnswerOptions .= "<option value='{$ansRow['ansid']}'>" . dms_disphtml($ansRow['anstitle']) . "</option>";
52  $recCount++;
53  }
54 
55 
56  // * GET THE RECORDS FROM THE lnappschemadetail for this loan
57  $sql = "SELECT lnappschemadetail.*
58  FROM lnappschemadetail
59  JOIN lnappschemamaster on
60  lnappschemamaster.loanid = lnappschemadetail.loanid
61  WHERE lnappschemadetail.loanid = " . intval($LN_CUR_ID) . "
62  AND lnappschemamaster.cu = '" . prep_save($user_name, 12) . "'
63  ORDER BY lnappschemadetail.loanid, lnappschemadetail.pageid, lnappschemadetail.groupid, lnappschemadetail.lineid
64 
65  ";
66 
67  // ** This should NOW be in the correct Loan ORDER which may NOT coincide wth the detailid order
68  $detail_rs = db_query($sql, $link);
69 
70  $detail_cur_page = 0;
71  $detail_cur_group = 0;
72  $detail_cur_line = 0;
73  $detail_ctr = 0;
74 
75  $detail_contents = '';
76  $fieldtype_select_new = "<option value='' >NOT SET</option><option value='P'>Page Header</option><option value='H'>Section Header</option><option value='L'>Label</option><option value='GT'>General Entry</option><option value='YNR'>Radio - Yes / No</option><option value='YNR01'>Radio - Yes / No {0,1}</option><option value='YNS'>Select - Yes / No</option><option value='YNS01'>Select - Yes / No {0,1}</option><option value='AR'>Radio - List</option><option value='AS'>Select - List</option><option value='CB'>Checkbox</option>";
77  while ($detail_row = db_fetch_assoc($detail_rs, $detail_ctr)) {
78  // ** Check for NEW Page
79  if($detail_cur_page != $detail_row['pageid']) {
80  // ** Finish a previous page?
81  // -- Be sure to close a prevous Group
82  if ($detail_cur_page != 0) {
83  // ** Look for closing group first
84  if ($detail_cur_group != 0) {
85  $detail_contents .= "
86  </div>
87  <button class='lnapp-icon-add lnapp-newitem'>Add Item</button>
88  </div>
89  ";
90  }
91  // ** Now Close Page
92  $detail_contents .= "
93  </div>
94  <button class='lnapp-icon-add lnapp-newgroup'>Add Group</button>
95  </div>
96  ";
97  }
98  // * Start a page
99 
100  // ** RESET GROUP
101  $detail_cur_group = 0; // ** GROUP WILL BE ADDED BELOW
102  $detail_cur_page = $detail_row['pageid'];
103  // ** START PAGE
104  $detail_contents .= "
105  <div id='pageid{$detail_cur_page}' class='ui-widget-header ui-corner-all lnapp-page'>
106  <span ><h3><button class='lnapp-icon-delete'>Remove Page</button> Page</h3></span>
107  <div class='lnapp-group-container'>
108  ";
109  }
110 
111  // ** CHECK FOR NEW GROUP
112  if ($detail_cur_group != $detail_row['groupid']) {
113  // ** Check to see if we closed out the previous group
114  if ($detail_cur_group != 0) {
115  $detail_contents .= "
116  </div>
117  <button class='lnapp-icon-add lnapp-newitem'>Add Item</button>
118  </div>
119  ";
120  }
121  // ** Now start the new group
122  $detail_contents .= "
123  <div id='groupid{$detail_cur_group}' class='ui-widget-header ui-corner-all lnapp-group'>
124  <span class=''><h4><button class='lnapp-icon-delete'>Remove Group</button> Group</h4></span>
125  <div class='lnapp-item-container'>
126  ";
127  $detail_cur_group = $detail_row['groupid'];
128  }
129 
130  // **
131  $select_ary = array_fill_keys($select_fieldtype_keys, "");
132 
133  $select_ary[$detail_row['fieldtype']] = " SELECTED ";
134 
135  $fieldtype_select = "<option value='' >NOT SET</option><option value='P' {$select_ary['P']}>Page Header</option><option value='H' {$select_ary['H']}>Section Header</option><option value='L' {$select_ary['L']}>Label</option><option value='GT' {$select_ary['GT']}>General Entry</option><option value='YNR' {$select_ary['YNR']}>Radio - Yes / No</option><option value='YNR01' {$select_ary['YNR01']}>Radio - Yes / No {0,1}</option><option value='YNS' {$select_ary['YNS']}>Select - Yes / No</option><option value='YNS01' {$select_ary['YNS01']}>Select - Yes / No {0,1}</option><option value='AR' {$select_ary['AR']}>Radio - List</option><option value='AS' {$select_ary['AS']}>Select - List</option><option value='CB' {$select_ary['CB']}>Checkbox</option>";
136 
137  // ** ADDING THE LINE ITEM
138  $formatFieldValue = disp_i18n($detail_row['fieldvalue'], ENT_QUOTES);
139  $detail_contents .= "
140  <div id='itemid{$detail_row['detailid']}' class='lnapp-item'>
141  <button class='lnapp-icon-delete'>Remove Item</button>
142 
143 
144  <input class='lnapp-item-page' type='hidden' name='lnapp-item-page-{$detail_row['detailid']}' id='lnapp-item-page-{$detail_row['detailid']}' value='{$detail_row['pageid']}'>
145  <input class='lnapp-item-group' type='hidden' name='lnapp-item-group-{$detail_row['detailid']}' id='lnapp-item-group-{$detail_row['detailid']}' value='{$detail_row['groupid']}'>
146  <input class='lnapp-item-line' type='hidden' name='lnapp-item-line-{$detail_row['detailid']}' id='lnapp-item-line-{$detail_row['detailid']}' value='{$detail_row['lineid']}'>
147  <input class='lnapp-item-detail' type='hidden' name='lnapp-item-detail-{$detail_row['detailid']}' id='lnapp-item-detail-{$detail_row['detailid']}' value='{$detail_row['detailid']}'>
148  <input class='lnapp-item-fieldattr' type='hidden' name='lnapp-item-fieldattr-{$detail_row['detailid']}' id='lnapp-item-fieldattr-{$detail_row['detailid']}' value='{$detail_row['fieldattr']}'>
149 
150 
151  <select class='lnapp-item-fieldtype' name='lnapp-item-fieldtype-{$detail_row['detailid']}' id='lnapp-item-fieldtype-{$detail_row['detailid']}'>{$fieldtype_select}</select>
152  <input type='hidden' class='lnapp-item-value' name='lnapp-item[]' value='{$detail_row['detailid']}'>
153  <input type='text' name='lnapp-item-fieldvalue-{$detail_row['detailid']}' id='lnapp-item-fieldvalue-{$detail_row['detailid']}' class='lnapp-item-fieldvalue' value='{$formatFieldValue}'>
154 
155  </div>
156  ";
157 
158  $detail_ctr++;
159  }
160  if ($detail_cur_page != 0) {
161  // ** Look for closing group first
162  if ($detail_cur_group != 0) {
163  $detail_contents .= "
164  </div>
165  <button class='lnapp-icon-add lnapp-newitem'>Add Item</button>
166  </div>
167  ";
168  }
169  // ** Now Close Page
170  $detail_contents .= "
171  </div>
172  <button class='lnapp-icon-add lnapp-newgroup'>Add Group</button>
173  </div>
174  ";
175  }
176 ?><!DOCTYPE html>
177 <html>
178  <head>
179  <title>HomeCU Loan Application Maintenance</title>
180 
181  <link rel="stylesheet" type="text/css" href="/shared/static/css/lnapp_include/lnapp.css">
182  <link rel="stylesheet" type="text/css" href="/shared/static/css/lnapp_include/lnapp_style.css">
183  <link rel="stylesheet" type="text/css" href="/shared/static/css/lnapp_include/jquery-ui-1.9.2.custom.css">
184 
185  <script type="text/javascript" src="/shared/static/js/lnapp_include/jquery-1.8.2.min.js"></script>
186  <script type="text/javascript" src="/shared/static/js/lnapp_include/jquery-ui-1.9.2.custom.js"></script>
187  <script type="text/javascript" src="/shared/static/js/lnapp_include/jquery.populate.js"></script>
188  <style>
189  #dvLoading
190  {
191  background: url(/shared/static/css/lnapp_include/images/ajax-loader.gif) no-repeat center center;
192  height: 46px;
193  width: 46px;
194  position: fixed;
195  z-index: 1000;
196  left: 50%;
197  top: 50%;
198  margin: -25px 0 0 -25px;
199  color:red;
200  }
201 
202  .ui-widget-overlay {
203  background: black;
204  filter: alpha(opacity = 50);
205  left: 0;
206  opacity: 0.5;
207  position: absolute;
208  top: 0;
209  }
210  .local-eg {
211  font-size: .7em;
212  margin-right: 5px;
213  color: #2E8B57 !important;
214  }
215  </style>
216 
217  <script language='javascript'>
218  var GLOBAL_ROWID = 0;
219  var GLOBAL_SUSPEND = 0;
220  var GLOBAL_DIRTY = 0;
221 
222  $(window).load(function(){
223  $('#dvLoading').fadeOut(2000);
224  $('#page').css('visibility', 'visible');
225  });
226 
227  /*
228  * SETUP the BUTTONS ON THE FORM
229  * Assign icons to the buttons on the form
230  */
231  $(function() {
232  $( "#preview" ).button({
233  text: false,
234  icons: {
235  primary: "ui-icon-print"
236  }
237  });
238  $( "#save" ).button({
239  text: false,
240  icons: {
241  primary: "ui-icon-pencil"
242  }
243  });
244  $( "#showprop" ).button({
245  text: false,
246  icons: {
247  primary: "ui-icon-note"
248  }
249  });
250  $('#close').button({
251  icons: {
252  primary: 'ui-icon-close'
253  }
254  });
255  $('.lnapp-icon-delete').button({
256  icons: {
257  primary: 'ui-icon-circle-close'
258  },
259  text: false
260  });
261  $('.form_attr_update').button({
262  icons: {
263  primary: 'ui-icon-refresh'
264  }
265  });
266  $.fn.serializeJSON=function() {
267  var json = {};
268  jQuery.map($(this).serializeArray(), function(n, i){
269 
270  // ** Check to see if this is an array type, indicated by [] in name
271  // ** ONLY SAVE IF VALUE is something other than ''
272  if (n['value'] != '') {
273  if (n['name'].match(/\[.*\]/gi)) {
274  // ** we have AN arrayed value
275  // ** assume field looks like fieldname[keyname]
276  // split out fieldname / keyname from value
277  var rg_match = /^(.*)\[(.*)\]/;
278  var fieldlist = n['name'].match(rg_match);
279  // console.log(fieldlist);
280  var pushname = fieldlist[2];
281  var pushvalue = n['value'];
282 
283  if (fieldlist[1] in json) {
284  // ** fieldlist[1] exists in the json array -- So it is defined -- simply add the new property
285  json[fieldlist[1]][pushname] = pushvalue;
286  } else {
287  // ** fieldlist[1] does NOT exist, so I can not reference property yet, so I will create the
288  // * array with the property value, then assign to fieldlist[1]
289  var valueToPush = {};
290  valueToPush[pushname] = pushvalue;
291 
292  json[fieldlist[1]] = valueToPush;
293  }
294 
295  } else {
296  // * regular field
297  json[n['name']] = n['value'];
298  }
299  }
300 
301  });
302 // console.log(json);
303  return json;
304  };
305 
306  });
307  $(document).ready(function(){
308  /*
309  * JQUERY FUNCTION CALL DECLARATIONS
310  */
311  $('#preview').click(function() {
312  // Open a new window.. POST Data , load the preview?
313 
314  $.post('lnappPreview.prg', $('#lnapp-form').serialize(), function (result) {
315  WinId = window.open('', 'NewWindow', 'width=1040,height=920');
316  WinId.document.open();
317  WinId.document.write(result);
318 
319  //WinId.document.close();
320  });
321 
322  });
323  $('#close').click(function() {
324  window.close();
325  });
326  $('#save').click(function(){
327  var $dialog = $('<div></div>')
328  .html('<div style="text-align:center">Please be patient while we prepare the data and post.<br/><br/><img src="/monitor/css/jquery/css/themes/images/ajax-loader.gif"/></div>')
329  .dialog({
330  autoOpen: false,
331  title: 'Preparing Data',
332  resizable: false,
333  closeText: 'hide',
334  closeOnEscape: false,
335 
336  modal: true
337  });
338 
339  $dialog.dialog('open');
340  SetItemValues();
341 
342  $.post("lnapp.data?cu=<?php echo $user_name; ?>&action=app&loanid=<?php echo $LN_CUR_ID; ?>",
343  $('#lnapp-form').serialize(),
344  function(data) {
345  if (data.Result == "OK") {
346  $($dialog).html('Update complete.<br/><br/><input type="button" value="Close" onClick="window.close()"/>');
347  }else {
348  $($dialog).text(data.Message);
349  }
350  },'json'
351  );
352 
353  });
354 
355  /*
356  * NEW PAGE BUTTON CLICKED
357  * This will clone a group and append it to MAIN Page contents
358  */
359  $('.lnapp-newpage').live('click', function() {
360  $('#lnapp-page-template').clone().appendTo('#lnapp');
361 
362  $('#lnapp').sortable('refreshPositions');
363 
364  return false; // Prevent form PostBack
365  });
366  /*
367  * NEW GROUP BUTTON CLICKED
368  * This will create a new Group and append it to the current page contents
369  */
370  $('.lnapp-newgroup').live('click',function() {
371  var newGroup = $('#lnapp-group-template').clone();
372 
373  newGroup.attr('id', '');
374  var newGroupParent = $(this).parent().children('.lnapp-group-container');
375 
376  //newGroup.appendTo(newGroupParent);
377  newGroup.appendTo(newGroupParent);
378  //$('#lnapp-group-template').clone().insertBefore($(this));
379 
380  newGroupParent.sortable({
381  connectWith: '.lnapp-group-container'
382  });
383  return false; // Prevent form PostBack
384  });
385  /*
386  * NEW ITEM BUTTON CLICKED
387  * This will clone a new item template and append it to the current group contents
388  * It will also assign the NAMES / IDs attributes for the values needed for posting
389  */
390  $('.lnapp-newitem').live('click', function() {
391  var newItem = $('#lnapp-item-template').clone();
392 
393  newItem.attr('id', '');
394  var newItemParent = $(this).parent().children('.lnapp-item-container');
395 
396  // ** Set the names for the new values
397  var newItemId = $('#lnapp-item-new').val() -1;
398  $('#lnapp-item-new').val(newItemId);
399 
400  newItem.children('.lnapp-item-value').val(newItemId);
401  newItem.children('.lnapp-item-page').attr('name', 'lnapp-item-page-' + newItemId);
402  newItem.children('.lnapp-item-page').attr('id', 'lnapp-item-page-' + newItemId);
403  newItem.children('.lnapp-item-group').attr('name', 'lnapp-item-group-' + newItemId);
404  newItem.children('.lnapp-item-group').attr('id', 'lnapp-item-group-' + newItemId);
405  newItem.children('.lnapp-item-line').attr('name', 'lnapp-item-line-' + newItemId);
406  newItem.children('.lnapp-item-line').attr('id', 'lnapp-item-line-' + newItemId);
407  newItem.children('.lnapp-item-detail').attr('name', 'lnapp-item-detail-' + newItemId);
408  newItem.children('.lnapp-item-detail').attr('id', 'lnapp-item-detail-' + newItemId);
409  newItem.children('.lnapp-item-fieldattr').attr('name', 'lnapp-item-fieldattr-' + newItemId);
410  newItem.children('.lnapp-item-fieldattr').attr('id', 'lnapp-item-fieldattr-' + newItemId);
411  newItem.children('.lnapp-item-fieldtype').attr('name', 'lnapp-item-fieldtype-' + newItemId);
412  newItem.children('.lnapp-item-fieldtype').attr('id', 'lnapp-item-fieldtype-' + newItemId);
413  newItem.children('.lnapp-item-fieldvalue').attr('name', 'lnapp-item-fieldvalue-' + newItemId);
414  newItem.children('.lnapp-item-fieldvalue').attr('id', 'lnapp-item-fieldvalue-' + newItemId);
415 
416  newItem.appendTo(newItemParent);
417 
418  newItemParent.sortable({
419  connectWith: '.lnapp-item-container'
420  });
421  return false; // Prevent form PostBack
422  });
423  /*
424  * Item Row Clicked -- When a row is clicked I want the attribute fields
425  * populated, highlight the row
426  */
427  $('.lnapp-item').live('click', function() {
428  $('.lnapp-item').removeClass('lnapp-item-select');
429  $('.lnapp-item').removeClass('lnapp-item-modified');
430  $(this).addClass('lnapp-item-select');
431 
432  SetRowProperty($(this).find('.lnapp-item-value').val());
433 
434  });
435  /*
436  * DELETE PAGE clicked
437  * delete the page and all of its children
438  */
439  $('.lnapp-page span h3 .lnapp-icon-delete').live('click', function() {
440  var parentDiv = $(this).parentsUntil('div.lnapp-page').parent();
441  myConfirm('Do you want to delete this record ?',
442  function () {
443  parentDiv.remove();
444  },
445  function () {
446  // ** NOTHING FOR NOW
447  },
448  'Confirm Delete');
449  return false; // Prevent from PostBack
450  });
451  /*
452  * DELETE GROUP clicked
453  * Delete group and all its children
454  */
455  $('.lnapp-group span h4 .lnapp-icon-delete').live('click', function () {
456  var parentDiv = $(this).parentsUntil('div.lnapp-group').parent();
457  myConfirm('Do you want to delete this record ?',
458  function () {
459  parentDiv.remove();
460  },
461  function () {
462  // ** NOTHING FOR NOW
463  },
464  'Confirm Delete');
465  return false; // Prevent from PostBack
466  });
467  /*
468  * DELETE ITEM clicked
469  * Delete Item and related values
470  */
471  $('.lnapp-item .lnapp-icon-delete').live('click', function() {
472  var parentDiv = $(this).parent();
473 
474  myConfirm('Do you want to delete this record ?',
475  function () {
476  parentDiv.remove();
477  },
478  function () {
479  // ** NOTHING FOR NOW
480  },
481  'Confirm Delete');
482  return false; // Prevent from PostBack
483  });
484 
485  $('#form_attr :input').change(function() {
486 
487  if (GLOBAL_SUSPEND == 0 && GLOBAL_DIRTY == 0) {
488  if (GLOBAL_ROWID != 0) {
489  // ** LOCATE THE CURRENT ROW
490  var $FieldAttr = $('#lnapp-item-fieldattr-' + GLOBAL_ROWID);
491 
492  $FieldAttr.parent().addClass('lnapp-item-modified');
493 
494  GLOBAL_DIRTY = 1;
495  }
496  }
497  });
498 
499 
500  $('#lnapp').sortable();
501  $('.lnapp-group-container').sortable({
502  connectWith: '.lnapp-group-container'
503  });
504  $('.lnapp-item-container').sortable({
505  connectWith: '.lnapp-item-container'
506  });
507 
508  $('.form_attr_update').click(function() {
509  if (GLOBAL_SUSPEND == 0) {
510  var new_attr;
511 
512  if (ValidateItemAttr()) {
513  // ** USE the current rowid
514  if (GLOBAL_ROWID != 0) {
515  new_attr = $('#form_attr').serializeJSON();
516 
517  var $FieldAttr = $('#lnapp-item-fieldattr-' + GLOBAL_ROWID);
518  try {
519  $FieldAttr.val(JSON.stringify(new_attr));
520 
521  $('.lnapp-item').removeClass('lnapp-item-modified');
522  GLOBAL_DIRTY = 0;
523  } catch(parseException) {
524 
525  }
526  }
527  } else {
528  // ** Validation Failed
529 
530  }
531  }
532  return false;
533  });
534 
535 
536  /*
537  * user has selected an option from validation match -- this is the data type selection
538  */
539  $('#validation_match').change(function() {
540  var matchValue = $('#validation_match').val();
541  var toggleOption = false;
542 /*
543  switch (matchValue) {
544  case 'usd':
545  case 'number':
546  toggleOption = true;
547  break;
548  default:
549  }
550 */
551  toggleOption = UseValidationRange(matchValue);
552  if (!toggleOption) {
553  ClearValidationRange();
554  }
555  ValidationRangeToggle(toggleOption);
556 
557  });
558  ValidationRangeToggle(false);
559  });
560  function UseValidationRange(pType) {
561 
562  var usesRange = false;
563 
564  switch (pType) {
565  case 'usd':
566  case 'number':
567  usesRange = true;
568  break;
569  default:
570  }
571  return usesRange;
572  }
573  function ValidationRangeToggle(bolToggle) {
574  // Either turn on or off the numeric range toggle
575 
576  $("#local-numeric-range").children().prop('disabled',!bolToggle);
577 
578  }
579  function ClearValidationRange() {
580  $("#numeric_range_chk").attr("checked", false);
581  $("#numeric_range_min").val('');
582  $("#numeric_range_max").val('');
583  }
584  function ValidateItemAttr() {
585  // * add validation for the item attributes
586  var errMsg = [];
587 
588  // * this form assumes the user has a brain and can do most things. but
589  // * but check necessary items here
590  if ($('#numeric_range_chk').attr('checked')) {
591  // * Validation Range
592  if ($("#numeric_range_min").val().length == 0 && $("#numeric_range_max").val().length == 0 ) {
593  errMsg.push("Validation range requires min or max to be entered.");
594  } else {
595  // * Min / Max are numeric
596  if (($("#numeric_range_min").val().length && !$.isNumeric($('#numeric_range_min').val())) || ($("#numeric_range_max").val().length && !$.isNumeric($('#numeric_range_max').val()))) {
597  errMsg.push("Validation range contains a non number.");
598  }
599  // Max > Min
600  // * ONLY validate if the max value is entered
601  if ((parseFloat($("#numeric_range_max").val()) < parseFloat($("#numeric_range_min").val())) && $("#numeric_range_max").val().length) {
602  errMsg.push("Validation range max must be greater than min.");
603  }
604  // Max / Min value can not be greater than 9,999,999.99 9999999.99
605  if (parseFloat($("#numeric_range_max").val()) > 9999999.99 || parseFloat($("#numeric_range_min").val()) > 9999999.99) {
606  errMsg.push("Validation range min/max must not be greater than 9,999,999.99.");
607  }
608 
609  }
610  }
611 
612  if (errMsg.length) {
613  // ** this implies there are items in the array -- create a message to show the user
614  var displayMsg = '';
615  for (var idx = 0; idx < errMsg.length; idx++) {
616  displayMsg += errMsg[idx] + "\n";
617  }
618 
619  displayMsg = "Please fix the following issues and try again.\n\n" + displayMsg;
620  window.alert(displayMsg);
621  return false;
622  }
623  return true;
624  }
625  function myConfirm(dialogText, okFunc, cancelFunc, dialogTitle) {
626  $('<div style="padding: 10px; max-width: 500px; word-wrap: break-word;">' + dialogText + '</div>').dialog({
627  draggable: false,
628  modal: true,
629  resizable: false,
630  width: 'auto',
631  title: dialogTitle || 'Confirm',
632  minHeight: 75,
633  buttons: {
634  OK: function () {
635  if (typeof (okFunc) == 'function') { setTimeout(okFunc, 50); }
636  $(this).dialog('destroy');
637  },
638  Cancel: function () {
639  if (typeof (cancelFunc) == 'function') { setTimeout(cancelFunc, 50); }
640  $(this).dialog('destroy');
641  }
642  }
643  });
644  }
645  function SetItemValues () {
646  // * LOOP THROUGH EACH PAGE
647  var curPageNbr = 0;
648  var curGroupNbr = 0;
649  var curLineNbr = 0;
650  $('.lnapp-page').each(function(index) {
651  var $curPage = $(this);
652  curPageNbr++;
653  curGroupNbr = 0;
654 
655  // * LOOP THROUGH EACH GROUP IN THAT PAGE
656  $curPage.find('.lnapp-group').each(function(index) {
657  curGroupNbr++;
658  curLineNbr = 0; // Reset Lines
659  var $curGroup = $(this);
660 
661  // * LOOP THROUGH EACH ITEM
662  $curGroup.find ('.lnapp-item-value').each(function(index) {
663  // ** At the actual line..
664  // ** RESET THINGS SUCH AS
665  // ** Set the item value
666  curLineNbr++;
667  var $curItem = $(this);
668  var curItemID = $curItem.val();
669 
670  $('#lnapp-item-page-' + curItemID).val(curPageNbr);
671  $('#lnapp-item-group-' + curItemID).val(curGroupNbr);
672  $('#lnapp-item-line-' + curItemID).val(curLineNbr);
673  // ** SET the GROUP for this item
674  // ** SET the LINE for this item
675  });
676  });
677  });
678  }
679  function SetRowProperty(rowid) {
680  // rowid should be the ID value of the row
681 
682  if (GLOBAL_ROWID != rowid) {
683  GLOBAL_SUSPEND = 1;
684  var $FieldAttr = $('#lnapp-item-fieldattr-' + rowid);
685  try {
686  var field_attr = JSON.parse($FieldAttr.val());
687  } catch(parseException) {
688  field_attr = JSON.parse("{}");
689  }
690  $('#form_attr').populate(field_attr,{resetForm:true,debug:false});
691  ValidationRangeToggle(UseValidationRange($('#validation_match').val()));
692 
693  GLOBAL_ROWID = rowid;
694  GLOBAL_SUSPEND = 0;
695  GLOBAL_DIRTY = 0;
696  }
697  }
698 
699  $(document).ready(function(){
700 /* var $dialog = $('<div></div>')
701  .html('<div style="text-align:center">Please be patient while we prepare the data and post.<br/><br/><img src="/style_sheets/jquery/css/themes/images/ajax-loader.gif"/></div>')
702  .dialog({
703  autoOpen: false,
704  title: 'Preparing Data',
705  resizable: false,
706  closeText: 'hide',
707  closeOnEscape: false,
708 
709  modal: true
710  });
711  */
712 /*
713  $('#btnTest').click(function() {
714  $dialog.dialog('open');
715  SetItemValues();
716  $dialog.dialog('close');
717  return false;
718  })
719 */
720  });
721 
722  </script>
723  </head>
724 
725  <body>
726  <div id='dvLoading'></div>
727 <!-- <button id='btnTest' name='btnTest'>TEST</button>-->
728  <div id="page" style="visibility:hidden">
729  <div id="allcontent">
730  <div id='toolbar' class='ui-widget-header ui-corner-all'>
731  <button id='save'>Save</button>
732  <button id='preview'>Preview</button>
733  <button id='close'>Close</button>
734  </div>
735  <div id="content">
736  <form name='lnapp-form' id="lnapp-form" method="post" action="lnapp.data?cu=<?php echo $user_name; ?>&action=app&loanid=<?php echo $LN_CUR_ID; ?>">
737  <div id='lnapp'>
738  <input type='hidden' id='lnapp-item-new' name='lnapp-item-new' value='0'>
739  <?php echo $detail_contents; ?>
740  </div>
741 
742  </form>
743  <button class='lnapp-icon-add lnapp-newpage'>Add Page</button>
744  </div>
745  <div id='contentproperty'>
746 
747  <script>
748  $(function() {
749  $("#tabs").tabs();
750  });
751  </script>
752  <div id='item_attr'>
753  <form name='form_attr' id='form_attr'>
754 
755 
756  <div id="tabs">
757  <ul>
758  <li><a href="#tabs-1">Core</a></li>
759  <li><a href="#tabs-2">Attributes</a></li>
760  <li><a href="#tabs-3">Validation</a></li>
761  <li><a href="#tabs-4">Extra</a></li>
762  </ul>
763  <div id="tabs-1">
764  <fieldset>
765  Core Record Index <input type='text' id='fieldcorearrayindex' name='fieldcorearrayindex' value='' size="2"><br>
766  Core Field Name <input type='text' id='fieldcorename' name='fieldcorename' value=''><br>
767  Always Send to Core<input type='checkbox' id='fieldcorealwayssend' name='fieldcorealwayssend' value='1'><br>
768  Skip Combining if Blank<input type='checkbox' id='fieldcombineskipblankfield' name='fieldcombineskipblankfield' value='1'><br>
769  <!--Select List <select id='fieldansid' name='fieldansid'><option value=''>NOT SET</option><option value='1'>US States</option><option value='3'>Marital Status</option><option value='4'>Salary Frequency</option><option value='5'>Generation Code</option><option value='2'>Auto Make (NEW)</option><option value='6'>Auto Make (USED)</option><option value='7'>Payment Frequency</option><option value='8'>Stark CU Branches</option><option value='11'>Own / Rent</option></select-->
770  Select List <select id='fieldansid' name='fieldansid'><option value=''>NOT SET</option><?php echo $selectAnswerOptions; ?></select>
771  Response Core Table Field<input type='text' id='responsetablefield' name='responsetablefield' value=''><br>
772 <!--
773 No room for comments at this time
774  <span >Combine Local Fields allows you to combine 2+ to create one string to send to the core</span></br>
775  <span >
776  <ul>
777  <li>
778  Check the 'Local Field Only' checkbox for any field in this list.
779  </li>
780  <li>
781  Add the Core Field Name to the 'Combine Local' value enclosed in ':', ie :fieldname:
782  </li>
783  <li>
784  The field defined with 'Combine Local' should be set to hidden
785  </li>
786  </ul>
787  -->
788  Combine Local Fields<input type='text' id='fieldcombinelocal' name='fieldcombinelocal' maxlength='100' size='40' value=''>
789  Delimiter<input type='text' id='fieldcombinelocaldelim' name='fieldcombinelocaldelim' maxlength='2' size='2' value=''><br/>
790  Auto Fill Value From Core <select id="autofillfromcore" name="autofillfromcore">
791  <option value="">NOT SET</option>
792  <option value="AccountNumber">Account Number</option>
793  <option value="FirstName">First Name</option>
794  <option value="MiddleName">Middle Name</option>
795  <option value="LastName">Last Name</option>
796  <option value="Email">E-mail</option>
797  <option value="HomePhone">Home Phone</option>
798  <option value="WorkPhone">Work Phone</option>
799  <option value="CellPhone">Cell Phone</option>
800  <option value="Fax">Fax</option>
801  <option value="SSN">SSN</option>
802  <option value="Address1">Address Line 1</option>
803  <option value="Address2">Address Line 2</option>
804  <option value="City">City</option>
805  <option value="State">State</option>
806  <option value="Zip">Zip</option>
807  <option value="CC">CC</option>
808  <option value="DOB">Birthdate</option>
809  </select>
810  </fieldset>
811  <button class='form_attr_update'>Update</button>
812  </div>
813  <div id="tabs-2">
814  <fieldset>
815  <input type='checkbox' name='hidden' value='1'> Field Hidden <br>
816  <input type='checkbox' name='readonly' value='1'> Read Only<br>
817  Max Length <input type='text' name='maxlength' value='' size="4">##&nbsp;&nbsp;&nbsp;&nbsp;
818  Field Size <input type='text' name='size' value='' size="4">##
819  Default Value <input type='text' name='defaultval' value='' size="40"><br>
820  </fieldset>
821  <fieldset>
822  <input type='checkbox' name='print_summary' value='1'> Print Summary<br>
823  Print Mask <input type='text' name='print_mask' value=''><br>
824  </fieldset>
825  <button class='form_attr_update'>Update</button>
826  </div>
827  <div id="tabs-3">
828  <fieldset>
829  Validation Required<select name='validation_require'><option value=''>NOT SET</option><option value='1'>On Submit ONLY</option><option value='2'>On Save AND Submit</option></select>&nbsp;&nbsp;&nbsp;
830  Validation Type <select id='validation_match' name='validation_match'><option value=''>NOT SET</option><option value='date'>Date</option><option value='ssn'>SSN</option><option value='phone'>Phone</option><option value='url'>URL</option><option value='usd'>Dollar</option><option value='integer'>Integer</option><option value='number'>Number</option><option value='zip'>Zip Code</option></select><br>
831  <!-- FUTURE DEVELOPMENT
832  Custom Validation Regex <input type='text' name='validation_custom' value=''> FUTURE DEVELOPMENT<br>
833  Custom Validation Message <input type='text' name='validation_desc' value=''> FUTURE DEVELOPMENT<br>
834  Validation Range <input type='text' name='validation_range' value=''> FUTURE DEVELOPMENT<br>
835  -->
836  <div id="local-numeric-range" disabled=disabled>
837  Require Range? <input type="checkbox" id='numeric_range_chk' name="validation_require_numeric_range_chk" value="1">
838  min: <input type='text' id='numeric_range_min' name='validation_require_numeric_range[min]' value='' size='6'><span class="local-eg">##.##</span>
839  max: <input type='text' id='numeric_range_max' name='validation_require_numeric_range[max]' value='' size='6'><span class="local-eg">##.##</span><br>
840  </div>
841  </fieldset>
842  <fieldset>
843  Custom Validation Field Name <input type='text' name='validation_conditionname' value=''><br>
844  Require Conditional Field: <input type='text' name='validation_require_conditional[field]' value=''> Value: <input type='text' name='validation_require_conditional[value]' value=''><br>
845  </fieldset>
846  <button class='form_attr_update'>Update</button>
847  </div>
848  <div id="tabs-4">
849  <fieldset>
850  Help URL Link href: <input type='text' name='helpurl[href]' value='' size='40'> Display: <input type='text' name='helpurl[display]' value=''><br>
851  .eg Text <input type='text' name='egtext' value=''>&nbsp;&nbsp;&nbsp;
852  Append Class <input type='text' name='append_class' value=''><br>
853  <input type='checkbox' name='appendnextfield' value='1'> Append Next Row? In development<br>
854  <input type='checkbox' name='localfieldonly' value='1'> Local Field Only?<br>
855  <input type='checkbox' name='submitstatement' value='1'> Use as Submit Certify Statement?<br>
856  <!-- USED ??Regex (USED?)<input type='text' name='regex' value=''><br>-->
857  </fieldset>
858  <button class='form_attr_update'>Update</button>
859  </div>
860  </div>
861  </form>
862  </div>
863  </div>
864  </div>
865  <div id="template-items" style="visibility:hidden">
866  <div id='lnapp-page-template' class='ui-widget-header ui-corner-all lnapp-page'>
867  <span ><h3><button class='lnapp-icon-delete'>Remove Page</button> Page</h3></span>
868  <div class='lnapp-group-container'>
869  </div>
870  <button class='lnapp-icon-add lnapp-newgroup'>Add Group</button>
871  </div>
872  <div id='lnapp-group-template' class='ui-widget-header ui-corner-all lnapp-group'>
873  <span class=''><h4><button class='lnapp-icon-delete'>Remove Group</button> Group</h4></span>
874  <div class='lnapp-item-container'>
875  </div>
876  <button class='lnapp-icon-add lnapp-newitem'>Add Item</button>
877  </div>
878  <div id='lnapp-item-template' class='lnapp-item'>
879  <button class="lnapp-icon-delete">Remove Item</button>
880 
881  <input class="lnapp-item-page" type='hidden' name='' value=''>
882  <input class="lnapp-item-group" type='hidden' name='' value=''>
883  <input class="lnapp-item-line" type='hidden' name='' value=''>
884  <input class="lnapp-item-detail" type='hidden' name='' value=''>
885  <input class="lnapp-item-fieldattr" type='hidden' name='' value=''>
886  <input type="hidden" class="lnapp-item-value" name="lnapp-item[]" value="">
887 
888 
889  <select class="lnapp-item-fieldtype" name=''><?php echo $fieldtype_select_new; ?></select>
890  <input type='text' name='' class='lnapp-item-fieldvalue' value=''>
891  </div>
892  </div>
893  </div>
894  </body>
895 </html>