function callAJAXengine ( type, page, text ) {
  var AJAX = ( window.ActiveXObject ) ? new ActiveXObject( 'Microsoft.XMLHTTP' ) : new XMLHttpRequest();
  if ( AJAX ) {
    AJAX.onreadystatechange =
      function ( ) {
        if ( AJAX.readyState == 4 && AJAX.status == 200 ) {
          if ( typeof type == 'function' )
            type( AJAX.responseText );
          else
            alert( AJAX.responseText );
        }
      }
    AJAX.open( text == null ? 'GET' : 'POST', page, true );
    if ( text != null )
      AJAX.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
    AJAX.send( text );
  }
}

function emailMe ( address, days, checkbox ) {
   if ( checkbox.checked ) {
    document.getElementById(address).disabled = false;
    document.getElementById(days).disabled = false; 
   }
   else {
    document.getElementById(address).disabled = true;
    document.getElementById(days).disabled = true;
   }
}

var logoutButton;

function logOut ( theButton ) {
  logoutButton = theButton;
  logoutButton.innerHTML = 'Logging Out';
  logoutButton.className = 'logging_out';
  callAJAXengine( logOutReturn, 'logout_ajax.php' );
}

function logOutReturn ( theText ) {
  logoutButton.innerHTML = 'logout';
  logoutButton.className = 'logout';
  if ( theText ) {
    raisePin();
    var todaysEntries = document.getElementById( 'todays_entries' );
    if ( todaysEntries )
      todaysEntries.innerHTML = '';
  }
  else {
    window.location = './';
    window.close();
  }
}


function checkForm( currentMonth ) {
  if( ( document.getElementById('find_month').value != currentMonth ) )
    document.date_find.submit();
}

function sendReminder ( ) {
  var emailReminderDiv = document.getElementById( 'email_reminder' );
  if ( emailReminderDiv ) {
    emailReminderDiv.innerHTML = "<img src='images/sending_reminder.gif' alt='sending reminder' />";
    callAJAXengine( sendReminderReturn, 'reminder_ajax.php' );
  }
  else
    alert( 'Cannot locate Reminder' );
}

function sendReminderReturn ( theText ) {
  var emailReminderDiv = document.getElementById( 'email_reminder' );
  if ( emailReminderDiv ) {
    if ( theText.length == 1 )
      emailReminderDiv.innerHTML = "<img src='images/sent_reminder.gif' alt='sent reminder' />";
    else {
      if ( theText.length > 1 )
        alert( theText );
      emailReminderDiv.innerHTML = "<img src='images/reminder_failed.gif' alt='reminder failed' />";
    }
  }
  else
    alert( 'Cannot locate Reminder' );
}

function verifyPin ( ) {
  var vp1 = document.getElementById( 'vp1' );
  var vp2 = document.getElementById( 'vp2' );
  var vp3 = document.getElementById( 'vp3' );
//  var vp4 = document.getElementById( 'vp4' );
  var theMessage = document.getElementById( 'pin_message' );
  var thePin =
    vp1.options[vp1.selectedIndex].value +
    vp2.options[vp2.selectedIndex].value +
    vp3.options[vp3.selectedIndex].value;
//    vp4.options[vp4.selectedIndex].value;
   
  theMessage.innerHTML = 'checking';
  callAJAXengine( verifyPinReturn, 'pin_ajax.php', 'pin=' +  escape( encodeURI( thePin ) ) );
}

function verifyPinReturn ( theText ) {
  if ( theText == 'correct' ) {
    document.getElementById( 'pin_message' ).innerHTML = 'Pin Verified';
    document.getElementById( 'pin_screen' ).style.left = '-1000px';
    document.getElementById( 'pin_bg' ).style.left = '-1000px';
    var todaysEntries = document.getElementById( 'todays_entries' );
    if ( todaysEntries )
      callAJAXengine( todaysEntriesReturn, 'get_entries_ajax.php' );
  }
  else if ( theText == 'logout' ) {
    document.getElementById( 'pin_screen' ).innerHTML = '<h1>Pin Invalid</h1><h2>Pin Attempt Limit Reached</h2><h2>Logging Out</h2><br /><h1 id="logout_timer">3</h1>';
    setTimeout( 'logoutCountdown(3)', 1000 );
  }
  else {
    numAttempts = parseInt( theText );
    document.getElementById( 'pin_message' ).innerHTML = 'Pin Invalid: ' + ( 3 - numAttempts ) + ' attempts remain';
    if ( emailReminder = document.getElementById( 'email_reminder' ) )
      emailReminder.style.left = 0;
  }
}

function logoutCountdown ( theCount ) {
  if ( !theCount )
    window.location = '?signin';
  else {
    theCount--;
    document.getElementById( 'logout_timer' ).innerHTML = theCount;
    setTimeout( 'logoutCountdown('+theCount+')', 1000 );
  }
}

function todaysEntriesReturn ( theText ) {
  var todaysEntries = document.getElementById( 'todays_entries' );
  if ( todaysEntries )
    todaysEntries.innerHTML = theText;
}

function raisePin ( ) {
  document.getElementById( 'pin_screen' ).style.left = 0;
  document.getElementById( 'pin_bg' ).style.left = 0;
  document.getElementById( 'pin_message' ).innerHTML = '';
}
