                   Serial.println("Button 1 Pressed - Mode Changed to SHOW_SYSTEM_INFO");
                   break;
               case SHOW_SYSTEM_INFO:
-                  lcd.clear();
                   lcd.setCursor(0, 0);
-                  lcd.print("Awaiting Serial Text"); 
                   state = SHOW_CUSTOM_TEXT;
                   Serial.println("Button 1 Pressed - Mode Changed to SHOW_CUSTOM_TEXT");
                   break;

  lcd.print(freeRam()); 
  lcd.print(F("B]")); 
}


// Show System Information Software Version
// and available RAM
void showSystemInfo()
{  
  lcd.setCursor(0, 0);
  lcd.print("Arduino DS1307 Clock"); 
  lcd.setCursor(0, 1);
  lcd.print(" With Rocker Switch ");
  lcd.setCursor(0, 2);
  lcd.print("3 Buttons & 20X4 LCD"); 
  lcd.setCursor(0, 3); 
  lcd.print(F("  [V")); 
  lcd.print(build); 
  lcd.print(F(".")); 
  lcd.print(revision);
  lcd.print(F(" RAM: "));  
  lcd.print(freeRam()); 
  lcd.print(F("B]")); 
}

// Show Text received
// over serial connection
void showSerialText()
{
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the top row
      lcd.setCursor(0,0); 
      lcd.print("                    ");
      lcd.setCursor(0,0); 

      String txtMsg;
      // add any incoming characters to the String:
      while (Serial.available() > 0) {
        char inChar = Serial.read();
        txtMsg += inChar;

        if(txtMsg.length() < 21)
        {
          lcd.write(inChar);
        }
      } 
    }
}

// Displays the current date in the top row 
// e.g. SAT 04 JAN 2014
void showDate()
{
   now = RTC.now();
   lcd.setCursor(0, 0); 
   String dateString = "* " + String(dayName[now.dayOfTheWeek()]) + " " + String(monthName[now.month()-1]) + " " + String(now.day()) + ", " + String(now.year()) + " *";
   lcd.print(dateString);
}

// displays time in large 3 row letters
// starting on the second row
// 10:59 AM
void showTime()
{   
    now = RTC.now();
    lcd.setCursor(0, 0);
    
    // Set Times for 12 Hour Clock
    // Set AMPM Indicator Values
    hr_24 = now.hour();
    ampm = "AM";
    if (hr_24 == 0) { // 12 AM
      hr_12 = 12;
    }
    else if(hr_24 == 12) { // 12 PM
      hr_12 = hr_24;
      ampm = "PM";
    }
    else if (hr_24 > 12) { // 13-23 PM
       hr_12 = (hr_24 - 12);
       ampm = "PM";
    }
    else { // 1-11 AM
      hr_12 = hr_24;
    }
    if(militaryTime){
      lcd.setCursor(18, 2);
      lcd.print("24");
      lcd.setCursor(18, 3);
      lcd.print("HR");
    }
    if(!showSeconds && !militaryTime){
      lcd.setCursor(18, 2);
      lcd.print(ampm);
    }

   // Display the time using bigNumber
   row = 1;
   col = 3;

   if(!militaryTime) {
     if (hr_12 < 10) {  
        // bigNumber(0,row,col);
        //col = col + 3;
        bigNumber(hr_12,row,col);
        col = col + 3;
     }
     else {
       bigNumber(getDigit(hr_12,2) ,row,col);
       col = col + 3;
       bigNumber(getDigit(hr_12,1) ,row,col);
       col = col + 3;
     }
   }
   else {
     if (hr_24 < 10) {
        col = col + 2;  
        bigNumber(hr_24,row,col);
        col = col + 3;
     }
     else {
       bigNumber(getDigit(hr_24,2) ,row,col);
       col = col + 3;
       bigNumber(getDigit(hr_24,1) ,row,col);
       col = col + 3;
     }
   }

   
   bigNumber(11,row,col);
   col = col + 2;
   if (now.minute() < 10) {  
      bigNumber(0,row,col);
      col = col + 3;
      bigNumber(now.minute(),row,col);
      col = col + 2;
   }
   else {
     bigNumber(getDigit(now.minute(),2) ,row,col);
     col = col + 3;
     bigNumber(getDigit(now.minute(),1) ,row,col);
     
   }
   if(showSeconds){
     col = col + 2;
     bigNumber(11,row,col);
     col = col + 2;
     if (now.second() < 10) {  
        bigNumber(0,row,col);
        col = col + 3;
        bigNumber(now.second(),row,col);
     }
     else {
       bigNumber(getDigit(now.second(),2) ,row,col);
       col = col + 3;
       bigNumber(getDigit(now.second(),1) ,row,col);
     }
   }
}

// Position a custom big font digit
// position number 'num' starting top left at row 'r', column 'c'
void bigNumber(byte num, byte r, byte c) {

       case 11: lcd.setCursor(c,r+1); lcd.write(byte(7)); lcd.setCursor(c,r+2); lcd.write(byte(7)); break; 
    } 
}
// Count the number of digits in a number
// used to draw the individual big numbers
byte countDigits(int num){
