void ManageUserLightSource(int LightNumber){
   // -----------------------------------------------------------------------------------------------
   // Initialize Local Variables
   unsigned short FadeIncrement_ms;
   int CurrentUserBrightness_Percent;
   unsigned long Fade0_ms;
   LightState_T CurrentUserState;
   int ButtonState;
   
   //Setup Variables based on input light number
   if (LightNumber == 1)
  {
    CurrentUserState = CurrentUserState_L1;
    FadeIncrement_ms = FadeIncrement_L1_ms;
    CurrentUserBrightness_Percent = CurrentUserBrightness_L1_Percent;
    Fade0_ms = Fade0_L1_ms;
    ButtonState = SW1State;
  }
  else
  {
    CurrentUserState = CurrentUserState_L2;
    FadeIncrement_ms = FadeIncrement_L2_ms;
    CurrentUserBrightness_Percent = CurrentUserBrightness_L2_Percent;
    Fade0_ms = Fade0_L2_ms;
    ButtonState = SW2State;
  }
  // Manage User Light State
  switch (CurrentUserState){
    case USEROFF:
      if (ButtonState == 1) {
        CurrentUserState = USERFADEUP;
        FadeIncrement_ms = UserFadeUp_s*1000/(MaxUserBrightness_Percent - 0);
        Fade0_ms = millis();
      }
      CurrentUserBrightness_Percent = 0;
      break;
    case (USERFADEUP):
      // Set the Current Brightness
      CurrentUserBrightness_Percent = 0 + (millis() - Fade0_ms)/FadeIncrement_ms ;
      // We've hit max brightness, move to on state
      if (ButtonState == 1) {
        // Go do user fade down
        CurrentUserState = USERFADEDOWN;
        FadeIncrement_ms = (UserFadeUp_s*1000)/(CurrentUserBrightness_Percent - 0);
        Fade0_ms = millis();
      }
      else if (CurrentUserBrightness_Percent >= MaxUserBrightness_Percent){
        CurrentUserBrightness_Percent = MaxUserBrightness_Percent;
        Fade0_ms = millis();
        CurrentUserState = USERON;
      }   
     break;
    case (USERON):    
      if (ButtonState == 2) {
        // Reset the coutndown timer for auto shutoff
        Fade0_ms = millis();
      }
      else if (ButtonState == 1) {
        // Go do user fade down
        CurrentUserState = USERFADEDOWN;
        FadeIncrement_ms = (UserFadeUp_s*1000)/(MaxUserBrightness_Percent - 0);
        Fade0_ms = millis();
      }
      else if ((Fade0_ms/1000 + UserOnTime_s) < millis()/1000) {
          CurrentUserState = USERFADEDOWN;
          FadeIncrement_ms = (AutoFadeDown_s*1000)/(MaxUserBrightness_Percent - 0);
          Fade0_ms = millis();
      }
      CurrentUserBrightness_Percent = MaxUserBrightness_Percent;
       break;
    case(USERFADEDOWN):
      // Set the Current Brightness
      CurrentUserBrightness_Percent = MaxUserBrightness_Percent - (millis() - Fade0_ms)/FadeIncrement_ms;
      
      // We've hit max brightness, move to off state
      if (CurrentUserBrightness_Percent <= 0){
        CurrentUserBrightness_Percent = 0;
        CurrentUserState = USEROFF;
      }
      else if (ButtonState == 1) {
        CurrentUserState = USERFADEUP;
        FadeIncrement_ms = UserFadeUp_s*1000/(MaxUserBrightness_Percent - 0);
        Fade0_ms = millis();
      }
      else if (ButtonState == 2)
      {
        FadeIncrement_ms = (UserFadeUp_s*1000)/(MaxUserBrightness_Percent - 0);
      }
       break;
   default:
     CurrentUserState = USEROFF;
     break;
  }
  
   //Setup Variables based on input light number
   if (LightNumber == 1)
  {
    CurrentUserState_L1 = CurrentUserState;
    FadeIncrement_L1_ms = FadeIncrement_ms;
    CurrentUserBrightness_L1_Percent = CurrentUserBrightness_Percent;
    Fade0_L1_ms = Fade0_ms;
  }
  else
  {
     CurrentUserState_L2 = CurrentUserState;
     FadeIncrement_L2_ms = FadeIncrement_ms;
     CurrentUserBrightness_L2_Percent = CurrentUserBrightness_Percent;
     Fade0_L2_ms = Fade0_ms;
  }
}

