/* ------------------------------------------------------------ */
/* Global Variables */
/* ------------------------------------------------------------ */
var current_page_number = 1;
var progress_position = 0;
var progress_max = 12;

var progress_queue = new Array();
progress_queue[0] = 1;

var debug = "";
var check_box_list = new Array();
var disabled_list  = new Array();

var assignment_stack_keys   = new Array();
var assignment_stack_values = new Array();

assignment_stack_keys.push('__PAGE__');
assignment_stack_values.push('1');

var backFlag = false;

/* ------------------------------------------------------------ */


function highlight( self )   { 
  self.className = 'highlight'; 
}

function noHighlight( self ) { 
  self.className = 'answer';    
}

/* Initialize an AJAX Object */
function initializeAJAX() {
  var request;

  try { 
    request = new XMLHttpRequest(); 
  } catch (trymicrosoft) {
    try { 
      request = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (othermicrosoft) {
      try { 
        request = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (failed) {
        request = false;
      }
    }
  }

  if (!request) { 
     alert("ERROR: Unable to initialize XMLHttpRequest!"); 
  } else { 
     return request;
  }
}

function progressAdvance( next_val ) {
  /* No matter where we're at in the progress, when we advance, 
  we want to dump everything ahead of our current position. */

  for ( i in progress_queue ) {
    var step = progress_queue.shift();
    if ( i <= progress_position ) {
       progress_queue.push( step );
    }
  } 

  progress_queue.push( next_val );
  progress_position++;
  progressRedraw();
}

function progressMaxAdjust( new_max ) { 
  progress_max = new_max; 
}

function progressReposition( new_position ) {
  progress_position = new_position;
  progressRedraw();
}

function progressRedraw() {
  var w = progress_position / progress_max * 100;
  w = Math.round(w);
  progressDirectSet( w );
}

function progressDirectSet( progress_value ) {
  if (progress_value != "") {
     document.getElementById( 'progress' ).innerHTML = 
       "Progress: " + progress_value + "% complete.";
  } else {
     document.getElementById( 'progress' ).innerHTML = 
       "&nbsp;";
  }
}

function gotoPage( page ) {
  var cur_page;
  var init_page = "";

  if ( page == 'back' ) { 
     init_page = "back";
     document.getElementById('back_button').disabled = true; 
  }

  if ( formIsValid() || page == 'back' ) { 

     if ( page == 'back' ) {
        toggleValidation( 'off' );
        // Pop off the current page to expose the last page.
        cur_page = progress_queue.pop(); 
        // Pop off the next value and regard it as the current.
        page = progress_queue.pop(); 
        while(page == cur_page) {
          page = progress_queue.pop(); 
        }
        backFlag = true;
        document.getElementById('back_button').disabled = false;
    } else {
       assignment_stack_keys.push('__PAGE__');
       assignment_stack_values.push( page );
    }

    document.getElementById( current_page_number ).className = "hidden";
    current_page_number = page;
    progress_queue.push( page );
    document.getElementById( current_page_number ).className = "visible";
 
    /* These are the "onLoads" for each page. */
    var focus = document.getElementById( current_page_number+'__focus' ).value;
    var vfields = 
      document.getElementById( current_page_number+'__validation' ).value;
    var field_loads = 
      document.getElementById( current_page_number+'__load' ).value;

    populateErrorQueue( vfields );

    if ( field_loads != '' ) { 
       populateInputFields( field_loads, init_page )       
    }

    if ( focus != '' ) { 
       document.getElementById( focus ).focus() 
    }

    var prog_adv = 
      document.getElementById( current_page_number+'__progress_advance' ).value;
    progressDirectSet( prog_adv );

    if ( current_page_number != '2' && current_page_number != '6' 
       && current_page_number != '4' && current_page_number != '7'
       && current_page_number != '8' && current_page_number != '12') {
       document.getElementById('back_button').className = 'visible'; 
    } else { 
       document.getElementById('back_button').className = 'hidden'; 
    }
  }
}

function populateInputFields( fields_string, page ) {
  var load_queue = new Array();

  if ( fields_string == undefined ) 
     return;

  load_queue = fields_string.split('|');

  for ( i=0; i < load_queue.length; i++ ) {
    var sender = load_queue[i].split('->')[0]; 
    var reciever = load_queue[i].split('->')[1]; 

    var reciever_element = document.getElementById( reciever );
    var sender_value = sender;

    if ( document.getElementById( sender ) ) {
       sender_value = document.getElementById( sender ).value;
    }

    //alert("i: " + i + " send: " + sender + " recv: " + reciever 
    //  + " val: " + sender_value);

    if ( reciever_element.nodeName == 'INPUT' 
       || reciever_element.nodeName == 'TEXTAREA' ) {
       reciever_element.value = sender_value;
       assignment_stack_keys.push(reciever);
       assignment_stack_values.push(sender_value);
       if ( page == undefined || page != "back" ) {
          if ( sender_value != undefined && sender_value != "" ) {
            if ( reciever_element.fireEvent ) { // IE 5.5
               reciever_element.fireEvent("onChange");
            } else { // Mozilla, Safari...
               var evt = document.createEvent("HTMLEvents");
               evt.initEvent("change",true,true);
               reciever_element.dispatchEvent( evt );
            }
          }
       }
    } else if( reciever_element.nodeName == 'TD' ) {
       reciever_element.innerHTML = sender_value;
    }
  }
}

function assignValue( input_id, input_value, optional_goto_page, 
  input_value_element_type, character_remove, append_value ) {

  if ( input_value_element_type == 'input' ) {
     input_value = document.getElementById( input_value ).value; 
  } else if ( input_value_element_type == 'td' ) {
     input_value = document.getElementById( input_value ).innerHTML;
  }

  if ( character_remove != undefined && character_remove != '' ) {
     input_value.replace(character_remove,'');
     var arr = new Array();
     arr = input_value.split(character_remove);
     input_value = arr.join('');
  }

  if ( input_value != undefined ) {
     if ( backFlag ) { 
        /* The user has used the back button an indetermined number
        of times.  But now that they've attempted to assign a value, they've
        shown intent to continue from this point.
        We need to populate the data back up to this page. */
        var len = assignment_stack_keys.length;
        var beforeCurrentPage = true;
        clearForm( 'shell', true );
        while( len  ) {
          var key = assignment_stack_keys.shift(); 
          var value = assignment_stack_values.shift();
          if ( beforeCurrentPage ) { 
             if ( key == '__PAGE__' ) {
                if ( value == current_page_number ) {
                   beforeCurrentPage = false;
                }
                assignment_stack_keys.push(key);
                assignment_stack_values.push(value);
             } else {
                document.getElementById(key).value = value;
                assignment_stack_keys.push(key);
                assignment_stack_values.push(value);
             }
          }
          len--;
        }
        backFlag = false;
        toggleValidation('on');
     }

     if ( append_value != undefined && append_value == true ) { 
        document.getElementById( input_id ).value += input_value+"|"; 
     } else { 
        document.getElementById( input_id ).value  = input_value; 
     }
 
     assignment_stack_keys.push(input_id);
     assignment_stack_values.push(input_value);
  }

  if ( optional_goto_page != undefined && optional_goto_page != '' ) { 
     gotoPage( optional_goto_page );
  }
}

function fieldAdvance( self, event, nextField, backField ) {
  if ( self.value.length == self.maxLength ) { 
     if ( nextField != undefined && nextField != '' ) {
        document.getElementById( nextField ).select();
     }
  } else if ( self.value.length == 0 
     && ( event.keyCode == '8' || event.keyCode == '37' ) ) {
     if ( backField != undefined && backField != '' ) {
        document.getElementById( backField ).select();
     }
  }
}

function submitForm( self, goto_page ) {
  if ( formIsValid() ) {
    if ( self.nodeName == 'INPUT' ) 
       elementDisable( self.id );
    var request = initializeAJAX();
    var parent = document.getElementById( 'shell' );
    var form_values = new Array();
    var form_ids    = new Array();
    var url = '/cgi-bin/form_submit.cgi';
    var query_string = '';

    getInputElements( parent, form_ids, form_values );

    for ( i in form_ids ) { 
      query_string += '&'+form_ids[i]+'='+escape(form_values[i]);
    }

    /* URL Encodes the query string */
/*  Turned off because it screws up the form submission... /shrug  */
/*  query_string = escape( query_string ); */

    request.open("POST", url, true);

    request.onreadystatechange = function() {
      if (request.readyState == 4) {
         if (request.status == 200) {
            if ( !request.responseText.match( "ERROR" ) ) {
               gotoPage( goto_page ); 
            } else {
               alert(request.responseText);
            }
         }
      }
    }

    request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    request.send(query_string);
  }
}


function conditionalAssign( url, inputQ, trueQ, trueQv, falseQ, falseQv ) {
  /* 
     call the url, sending inputQ values.
     if the return value is 'true', assign trueQv values to the trueQ elements 
     if the return value is 'false', assign falseQv values to the falseQ elements 

       *** All Q's are pipe delimited ***  

  */

  var request = initializeAJAX();
  var input_elements = new Array();

  input_elements = inputQ.split( '|' );

  for ( i = 1; i <= input_elements.length; i++ ) {
    url += '&p' + i + '=' + document.getElementById(input_elements[i-1]).value;
  }

  request.open("GET", url, true);

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
       if (request.status == 200) {
          if (request.responseText.match("ERROR")) {
             alert( request.responseText );
          } else {
             var es = new Array();
             var vs = new Array();

             if ( request.responseText == 'true' ) {
                es = trueQ.split('|'); 
                vs = trueQv.split('|'); 
             } else {
                es = falseQ.split('|'); 
                vs = falseQv.split('|'); 
             }

             while( es.length > 0 ) {
               var e = es.shift();
               var v = vs.shift();
               if ( e != '' ) 
                  document.getElementById( e ).value = v;
             }
          }
       }
    }
  }

  request.send(null);
}

function conditionalAssign2( cond_str ) {
  var arrays = new Array();
  var required1 = new Array();
  var required2 = new Array();
  var values = new Array();
  var out_value = "";

  arrays = cond_str.split( '?' );
  required1 = arrays[0].split( '|' );
  required2 = arrays[1].split( '|' );
  field = arrays[2];
  values = arrays[3].split( '|' );
  reqval1 = values[1];
  reqval2 = values[2];
  outval = values[3];

  for (i = 0; i < required1.length; i++) {
    if (document.getElementById(required1[i]).value == "") {
       reqval1 = values[0];
       break;
    }
  }

  for (i = 0; i < required2.length; i++) {
    if (document.getElementById(required2[i]).value == "") {
       reqval2 = values[0];
       break;
    }
  }

  if (reqval1 == values[0] && reqval2 == values[0]) {
     outval = values[0];
  } else if (reqval1 != values[0] && reqval2 != values[0]) {
     outval = values[3];
  } else if (reqval1 != values[0]) {
     outval = values[1];
  } else {
     outval = values[2];
  }

  //alert("outval: " + outval);
  assignValue(field, outval);
}

function branchingLookup ( url, branchQueue, inputQueue, truthAssignment, 
  falseAssignment, spVal ) {

  /* 
    This function will make an ajax call to the url specified, sending the 
    optional id* parameters, and will expect one of three responses: 
   
    1%<value>  2  3

    1 will go to the b1 page number, 2 to b2 page number, and 3 to the b3 page number.

    1 is typically considered "true" or "successful", 2 would be "false".

    <value> is the values of the shadow database that get passed back on successful match.

    ids are id elements passed in as input parameters.
     
  */

  switch( spVal ) {
    case '2':
      if ( !validatePage2() ) {
         return; 
      }
      break;
    case '7':
      if ( !validatePage7() ) {
         return; 
      }
      break;
  }

  if ( !formIsValid() ) { 
     return; 
  }

  var request = initializeAJAX();

  var input_elements = new Array();
  input_elements = inputQueue.split( '|' );

  var branch = new Array();
  branch = branchQueue.split( '|' );
 
  for ( i = 1; i <= input_elements.length; i++ ) {
    url += '&p' + i + '=' + document.getElementById(input_elements[i-1]).value;
  }

  request.open("GET", url, true);

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
       if (request.status == 200) {
          if (request.responseText.match("ERROR")) {
             alert( request.responseText );
          } else {
             var branch_number = request.responseText.split('%')[0];
             var sdb_values = request.responseText.split('%')[1];

             if ( sdb_values != '' ) { 
                populateFormData( sdb_values ); 
             }

             switch( branch_number ) { 
               case '1': 
                 populateInputFields( truthAssignment );
                 gotoPage( branch[0] );
                 break;
               case '2': 
                 if (url.indexOf("multi1") != -1) {
                    exhaustedMatchcount();
                 }
                 populateInputFields( falseAssignment );
                 gotoPage( branch[1] );
                 break;
               case '3': 
                 if (url.indexOf("multi1") != -1) {
                    exhaustedMatchcount();
                 }
                 populateInputFields( falseAssignment );
                 gotoPage( branch[2] );
                 break;
               default:
                 alert( "ERROR: Unknown value returned." );
                 break;
             }
          }
       }
    }
  }

  request.send(null);
}

function populateFormData( sdb_values ) {

  var sdb_column = new Array();

  if ( sdb_values == 'sdb_wipe' ) { 
     for ( i = 0; i < 20; i++ ) {
       sdb_column[i] = '';
     }
  } else {
     sdb_column = sdb_values.split('|');
  }

  var ee_id                   = sdb_column[0];
  var co_code                 = sdb_column[1];
  var co_code_desc            = sdb_column[2];
  var area_code               = sdb_column[3];
  var area_code_desc          = sdb_column[4];
  var subarea_code            = sdb_column[5];
  var subarea_code_desc       = sdb_column[6];
  var position_ref_indi       = sdb_column[7];
  var org_unit_reference_indi = sdb_column[8];
  var supervisor              = sdb_column[9];
  var ee_name                 = sdb_column[10];
  var line_one_addr           = sdb_column[11];
  var line_two_addr           = sdb_column[12];
  var city                    = sdb_column[13];
  var state                   = sdb_column[14];
  var postal_code             = sdb_column[15];
  var phone_num               = sdb_column[16];
  var digit_name              = sdb_column[17];
  var phone_b                 = sdb_column[18];
  var phone_c                 = sdb_column[19];

  document.getElementById( 'byte202' ).value = ee_id;
  assignment_stack_keys.push('byte202');
  assignment_stack_values.push(ee_id);
  //DLM document.getElementById( 'PSS_12' ).value  = ee_id;
  document.getElementById( 'byte90' ).value  = co_code;
  assignment_stack_keys.push('byte90');
  assignment_stack_values.push(co_code);
  document.getElementById( 'byte94' ).value  = co_code_desc;
  assignment_stack_keys.push('byte94');
  assignment_stack_values.push(co_code_desc);
  document.getElementById( 'byte114' ).value = area_code;
  assignment_stack_keys.push('byte114');
  assignment_stack_values.push(area_code);
  document.getElementById( 'byte118' ).value = area_code_desc;
  assignment_stack_keys.push('byte118');
  assignment_stack_values.push(area_code_desc);
  document.getElementById( 'byte138' ).value = subarea_code;
  assignment_stack_keys.push('byte138');
  assignment_stack_values.push(subarea_code);
  document.getElementById( 'byte142' ).value = phone_b;
  assignment_stack_keys.push('byte142');
  assignment_stack_values.push(phone_b);
  document.getElementById( 'byte142_1' ).value = phone_b.substr(0,3);
  assignment_stack_keys.push('byte142_1');
  assignment_stack_values.push(phone_b.substr(0,3));
  document.getElementById( 'byte142_2' ).value = phone_b.substr(3,3);
  assignment_stack_keys.push('byte142_2');
  assignment_stack_values.push(phone_b.substr(3,3));
  document.getElementById( 'byte142_3' ).value = phone_b.substr(6,4);
  assignment_stack_keys.push('byte142_3');
  assignment_stack_values.push(phone_b.substr(6,4));
  document.getElementById( 'byte152' ).value = phone_c;
  assignment_stack_keys.push('byte152');
  assignment_stack_values.push(phone_c);
  document.getElementById( 'byte152_1' ).value = phone_c.substr(0,3);
  assignment_stack_keys.push('byte152_1');
  assignment_stack_values.push(phone_c.substr(0,3));
  document.getElementById( 'byte152_2' ).value = phone_c.substr(3,3);
  assignment_stack_keys.push('byte152_2');
  assignment_stack_values.push(phone_c.substr(3,3));
  document.getElementById( 'byte152_3' ).value = phone_c.substr(6,4);
  assignment_stack_keys.push('byte152_3');
  assignment_stack_values.push(phone_c.substr(6,4));
  document.getElementById( 'byte162' ).value = org_unit_reference_indi;
  assignment_stack_keys.push('byte162');
  assignment_stack_values.push(org_unit_reference_indi);
  document.getElementById( 'byte182' ).value = supervisor;
  assignment_stack_keys.push('byte182');
  assignment_stack_values.push(supervisor);
  //DLM document.getElementById( 'PSS_06' ).value  = splitValue( ee_name, 1 );
  //DLM document.getElementById( 'PSS_07' ).value  = splitValue( ee_name, 0 );
  document.getElementById( 'byte214' ).value = ee_name;
  assignment_stack_keys.push('byte214');
  assignment_stack_values.push(ee_name);
  document.getElementById( 'byte214_1' ).value = splitValue( ee_name, 0 );
  assignment_stack_keys.push('byte214_1');
  assignment_stack_values.push(splitValue(ee_name,0));
  document.getElementById( 'byte214_2' ).value = splitValue( ee_name, 1 );
  assignment_stack_keys.push('byte214_2');
  assignment_stack_values.push(splitValue(ee_name,1));
  document.getElementById( 'byte244' ).value = line_one_addr;
  assignment_stack_keys.push('byte244');
  assignment_stack_values.push(line_one_addr);
  document.getElementById( 'byte269' ).value = city;
  assignment_stack_keys.push('byte269');
  assignment_stack_values.push(city);
  document.getElementById( 'byte284' ).value = state;
  assignment_stack_keys.push('byte284');
  assignment_stack_values.push(state);
  document.getElementById( 'byte286' ).value = postal_code;
  assignment_stack_keys.push('byte286');
  assignment_stack_values.push(postal_code);
  document.getElementById( 'byte295' ).value = phone_num;
  assignment_stack_keys.push('byte295');
  assignment_stack_values.push(phone_num);
  document.getElementById( 'byte295_1' ).value = phone_num.substr(0,3);
  assignment_stack_keys.push('byte295_1');
  assignment_stack_values.push(phone_num.substr(0,3));
  document.getElementById( 'byte295_2' ).value = phone_num.substr(3,3);
  assignment_stack_keys.push('byte295_2');
  assignment_stack_values.push(phone_num.substr(3,3));
  document.getElementById( 'byte295_3' ).value = phone_num.substr(6,4);
  assignment_stack_keys.push('byte295_3');
  assignment_stack_values.push(phone_num.substr(6,4));

  //DLM document.getElementById( 'byte79_1' ).value = phone_num.substr(0,3);
  //DLM document.getElementById( 'byte79_2' ).value = phone_num.substr(3,3);
  //DLM document.getElementById( 'byte79_3' ).value = phone_num.substr(6.4);
  //DLM document.getElementById( 'PSS_08_1' ).value = phone_num.substr(0,3);
  //DLM document.getElementById( 'PSS_08_2' ).value = phone_num.substr(3,3);
  //DLM document.getElementById( 'PSS_08_3' ).value = phone_num.substr(6.4);

}

function splitValue( value, accessor ) {
  //var result = value.split(',')[accessor]; 
  var result = value.split(' ')[accessor]; 

  if ( result == undefined ) { 
     return '' 
  } else { 
     return result 
  } 
}

function limitField( self, limit ) {
  if ( self.value.length > limit ) { 
     self.value = self.value.substr( 0, limit );
  }
}

function enterClick( self, event ){ 
  var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;

  if ( keyCode == 13 ) {
     var id_num = self.id.split('_')[0];
     document.getElementById( id_num + '_enter' ).click(); 
     return false;
  } else  
     return true;
}

function fieldFocus( element ) {
  document.getElementById( element ).focus();
}

function clearForm( myForm, back_pressed ) {
  var parent = document.getElementById( myForm );
  var form_values  = new Array();
  var form_ids     = new Array();
  var checkbox_ids = new Array();

  getInputElements( parent, form_ids, form_values );
  getCheckboxElements( parent, checkbox_ids );

  while ( form_ids.length > 0 ) {
    var element = form_ids.shift(); 
    document.getElementById( element ).value = '';
  }

  while ( check_box_list.length > 0 ) {
    var element = check_box_list.shift();
    elementEnable( element );
  }

  for ( i = 0; i < checkbox_ids.length; i++ ) {
    document.getElementById( checkbox_ids[i] ).checked = false;
  }

  while ( disabled_list.length > 0 ) {
    var element = disabled_list.shift();
    elementEnable( element );
  }

  while ( progress_queue.length > 1 && !back_pressed ) {
    progress_queue.pop();    
  }

  while ( assignment_stack_keys.length > 0 && !back_pressed ) {
    assignment_stack_keys.pop();    
    assignment_stack_values.pop();    
  }
}

function elementDisable( element_id ) {
  var element = document.getElementById( element_id );
  element.disabled = true;
  disabled_list.push( element.id );
}

function elementEnable( element_id ) {
  var element = document.getElementById( element_id );
  element.disabled = false;
  var disabled_list_length = disabled_list.length;

  while ( disabled_list_length ) {
    var item = disabled_list.shift();
    if ( item != element_id ) { 
       disabled_list.push( item ); 
    }
    disabled_list_length--;
  }
}

function checkDisable( self, error_output_field, disableQueue ) {
  var d = new Array();
  d = disableQueue.split( '|' );

  for ( i = 0; i < d.length; i++ ) {
    if ( self.checked ) { 
       var x = document.getElementById( d[i] ); 
       check_box_list.push(x.id);
       removeFromErrorQueue( x.id );
       removeErrorMessage( error_output_field );
       noHighlight( x );
       x.value = '';
       elementDisable( x.id );
    } else { 
       var x = document.getElementById( d[i] ); 
       addToErrorQueue( x.id );
       elementEnable( x.id );
    }
  }
}

function getInputElements( parent_node, form_ids, form_values ) {
  if ( parent_node.hasChildNodes() ) {
     for ( i in parent_node.childNodes ) {
       if ( parent_node.childNodes[i].nodeName != undefined )
          getInputElements( parent_node.childNodes[i], form_ids, form_values );
     }
  }

  if ( parent_node.nodeName == 'INPUT' || parent_node.nodeName == 'TEXTAREA' ) {
     if ( parent_node.id.match( /^byte/ ) || parent_node.id.match( /^PSS/ ) ) { 
        form_ids.push( parent_node.id );
        form_values.push( parent_node.value );
     }
  }
}

function getCheckboxElements( parent_node, checkbox_ids ) {
  if ( parent_node.hasChildNodes() ) {
    for ( i in parent_node.childNodes ) {
      if ( parent_node.childNodes[i].nodeName != undefined )
         getCheckboxElements( parent_node.childNodes[i], checkbox_ids );
    }
  }

  if ( parent_node.type == 'checkbox' ) {
     checkbox_ids.push( parent_node.id );
  }
}

function dumpFormElements() {
  var parent = document.getElementById( 'shell' );
  var form_values = new Array();
  var form_ids    = new Array();

  getInputElements( parent, form_ids, form_values );

  var output = "Shell form data ("+form_ids.length+")\n=========================\n";

  for ( i = 0; i < parent.elements.length; i++ ) {
    output += parent.elements[i].id + " = " + parent.elements[i].value + "\t"; 
  }

  alert( output );
}

function dumpAssignmentStack() {
  var output = "Assignment Stack\n===================================\n";

  for ( i = 0; i < assignment_stack_keys.length; i++ ) {
    output += assignment_stack_keys[i] + " -> " + assignment_stack_values[i] + "\n";
  }

  alert( output );
}

function dumpErrorQueue() {
  var output = "Error Queue\n===================================\n";

  for ( i = 0; i < error_queue.length; i++ ) {
    output += error_queue[i]+"\n";
  }

  alert( output );
}

function dumpProgressQueue() {
  var output = "Progress Queue\n===================================\n";

  for ( i = 0; i < progress_queue.length; i++ ) {
    output += progress_queue[i]+"\n";
  }

  alert( output );
}

function toggleHighlight( self, field, high_val, low_val ) {
  if (self.className == 'highlight') {
     self.className = 'answer';
     document.getElementById(field).value = low_val;
  } else {
     self.className = 'highlight';
     document.getElementById(field).value = high_val;
  }
}

function radioHighlight( self, other, field, high_val, low_val ) {
  if (self.className == 'highlight') {
     self.className = 'answer';
     document.getElementById(field).value = low_val;
     document.getElementById(other).className = 'highlight';
  } else {
     self.className = 'highlight';
     document.getElementById(field).value = high_val;
     document.getElementById(other).className = 'answer';
  }
}

function resetHighlight(other, field, val) {
  document.getElementById(field).value = val;
  document.getElementById(other).className = 'answer';
}

function incrementMatchcount2() {
  document.getElementById('2_match_count').value =
    parseInt(document.getElementById('2_match_count').value) + 1;
}

function incrementMatchcount7() {
  document.getElementById('7_match_count').value =
    parseInt(document.getElementById('7_match_count').value) + 1;
}

function resetMatchcount() {
  document.getElementById('2_match_count').value = 1;
  document.getElementById('7_match_count').value = 1;
}

function exhaustedMatchcount() {
  //DLM resetMatchcount();
  alert("We're sorry, you cannot check in this employee without an "
    + "employee number.");
}

function nomatchWipe() {
  if (document.getElementById('byte65').value == "N") {
     populateFormData('sdb_wipe');
  }
}

function authenticate( url, login_field, password_field, page, ec) {
  //if ( !formIsValid() ) { 
  //   return; 
  //}
  scanFields();

  if ( error_queue.length > 0 ) {
     return; 
  }
 
  var request = initializeAJAX();

  url += 'username=' + document.getElementById(login_field).value;
  url += '&password=' + document.getElementById(password_field).value;

  request.open("GET", url, true);

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
       if (request.status == 200) {
          if (request.responseText.match("ERROR")) {
             alert( request.responseText );
          } else {
             var truth_value = request.responseText;
             if ( truth_value == 'true' ) { 
                gotoPage(page);
             } else {
                document.getElementById(ec).value =
                  parseInt(document.getElementById(ec).value) + 1;
                if (parseInt(document.getElementById(ec).value) > 2) {
                   document.getElementById(ec).value = "0";
                   document.getElementById(ec + "_msg").innerHTML = 
                     "<center>"
                     + "Incorrect login, please contact a Crisis Team " 
                     + "Member at Central HR US ERT SHLOIL-HRRUS mailbox"
                     + "</center>";
                } else {
                   document.getElementById(ec + "_msg").innerHTML = 
                     "<center>Incorrect Login. Please try again</center>";
                }
             }
          }
       }
    }
  }

  document.getElementById(login_field).value = "";
  document.getElementById(password_field).value = "";
  request.send(null);
}
