+% if ($use_sub_dst_thing && $src_pkey eq 'crednum') {
+<CENTER>
+ <TABLE>
+ <TR>
+ <TD>
+ <BUTTON TYPE="button" NAME="tax_button" ID="tax_button" onClick="do_calculate_tax(this);" DISABLED>Calculate Tax</BUTTON>
+ </TD>
+ <TD>
+ <BUTTON TYPE="button" NAME="clear_button" ID="clear_button" onClick="clear_amounts(this);" DISABLED>Clear Amounts</BUTTON>
+ </TD>
+ </TR>
+ </TABLE>
+</CENTER>
+<& /elements/xmlhttp.html,
+ 'url' => $p.'misc/xmlhttp-calculate_taxes.html',
+ 'subs' => [ 'calculate_taxes' ],
+&>
+<SCRIPT TYPE="text/javascript">
+
+function show_taxes(arg) {
+ var argsHash = eval('(' + arg + ')');
+
+ var button = document.getElementById('tax_button');
+ button.disabled = false;
+ button.innerHTML = 'Calculate Tax';
+ button = document.getElementById('clear_button');
+ button.disabled = false;
+
+ var error = argsHash['error'];
+
+ var paragraph = document.getElementById('ErrorMessage');
+ if (error) {
+ paragraph.innerHTML = 'Error: ' + error;
+ paragraph.style.color = '#ff0000';
+ } else {
+ paragraph.innerHTML = '';
+ }
+ var taxlines = argsHash['taxlines'];
+
+ var table = document.getElementById('ApplicationTable');
+
+ var aFoundRow = 0;
+ for (i = 0; taxlines[i]; i++) {
+ var itemdesc = taxlines[i][0];
+ var locnum = taxlines[i][2];
+ if (taxlines[i][3]) {
+ locnum = taxlines[i][3];
+ }
+
+ var found = 0;
+ for (var row = 2; table.rows[row]; row++) {
+ var inputs = table.rows[row].getElementsByTagName('input');
+ if (! inputs.length) {
+ while ( table.rows[row] ) {
+ table.deleteRow(row);
+ }
+ break;
+ }
+ if ( inputs.item(4).value == itemdesc && inputs.item(2).value == locnum )
+ {
+ inputs.item(0).value = taxlines[i][1];
+ aFoundRow = found = row;
+ break;
+ }
+ }
+ if (! found) {
+ var row = table.insertRow(table.rows.length);
+ var warning_cell = document.createElement('TD');
+ warning_cell.style.color = '#ff0000';
+ warning_cell.colSpan = 2;
+ warning_cell.innerHTML = 'Calculated Tax - ' + itemdesc + ' - ' +
+ taxlines[i][1] + ' will not be applied';
+ row.appendChild(warning_cell);
+ }
+ }
+
+ if (aFoundRow) {
+ sub_changed(table.rows[aFoundRow].getElementsByTagName('input').item(0));
+ }
+
+}
+
+function do_calculate_tax (what) {
+ what.innerHTML = 'Calculating....';
+ what.disabled = true;
+ var button = document.getElementById('clear_button');
+ button.disabled = true;
+ var taxed_items = new Array();
+ var table = document.getElementById('ApplicationTable');
+ for (var row = 2; table.rows[row]; row++)
+ {
+ var inputs = table.rows[row].getElementsByTagName('input');
+ if ( !inputs.length ) {
+ break;
+ }
+ var taxed_item = new Array(
+ inputs.item(1).value, // billpkgnum
+ inputs.item(3).value, // s_or_r
+ inputs.item(0).value || 0 // amount
+ );
+ taxed_items.push(taxed_item);
+ }
+
+ var args = new Array(
+ 'crednum', '<% $src_pkeyvalue %>',
+ 'items', taxed_items
+ );
+ calculate_taxes ( args, show_taxes );
+}
+
+function do_change_amount (what) {
+ var amount_cell = document.getElementById('original_amount');
+ var inputs = amount_cell.getElementsByTagName('input');
+ if (inputs.length) {
+ src_amount_changed();
+ amount_cell.innerHTML = '<B><% $money_char %></B>' + inputs.item(0).value;
+ } else {
+ amount_cell.innerHTML = '<% $money_char %>';
+ var amount_input = document.createElement('INPUT');
+ amount_input.setAttribute('name', 'entered_amount');
+ amount_input.setAttribute('id', 'entered_amount');
+ amount_input.style.textAlign = 'right';
+ amount_input.setAttribute('size', 8);
+ amount_input.setAttribute('maxlength', 8);
+ amount_input.setAttribute('value', what.form.src_amount.value);
+ amount_input.setAttribute('onChange', "src_amount_changed(this);");
+ amount_cell.appendChild(amount_input);
+ }
+}
+
+function src_amount_changed () {
+ //alert('src_amount_changed called');
+ var entered_amount = document.getElementById('entered_amount');
+ if ( entered_amount ) {
+ entered_amount.form.src_amount.value = entered_amount.value;
+ var unapplied_cell = document.getElementById('unapplied_amount');
+ unapplied_cell.innerHTML = '<B><% $money_char %>' + entered_amount.value + '</B>';
+ set_amount_color(entered_amount);
+ }
+ return true;
+}
+
+</SCRIPT>
+
+%}
+