#include <includes.h>
#include "app_serv.h"
#include "menu.h"
#include "menudesc.h"
#include "data.h"
#include "datadesc.h"
#include "control.h"
#include "journal.h"
#include "time.h"
#include "mode.h"
#include "keyboard.h"
#include "ftp_app.h"
#include "version.h"

char FlagForPrintReport=0;

/***********************************
  СТАРТОВОЕ МЕНЮ-ЗАСТАВКА
***********************************/
#if defined(BOARD_SOLARIUM_WEB)
    const CPU_INT08U str_StartMenu_0[] = "    СОЛЯРИй ";
    const CPU_INT08U str_StartMenu_1[] = "  ВЕРСИЯ "DEVICE_FW_VERSION;
#else
    const CPU_INT08U str_StartMenu_0[] = "-------------------";
    const CPU_INT08U str_StartMenu_1[] = "  Идет проверка";
    const CPU_INT08U str_StartMenu_2[] = "  оборудования!";
    const CPU_INT08U str_StartMenu_3[] = "-------------------";
#endif

const TMenuLine line_StartMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_StartMenu_0,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_StartMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_StartMenu_1,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#if !defined(BOARD_SOLARIUM_WEB)
const TMenuLine line_StartMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_StartMenu_2,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_StartMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_StartMenu_3,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};
#endif

const TMenuLineArray arr_StartMenuArray[] = {&line_StartMenu_0, &line_StartMenu_1, 
#if !defined(BOARD_SOLARIUM_WEB)
    &line_StartMenu_2, &line_StartMenu_3, 
#endif
    NULL};

const TMenuPanel StartMenuPanel[] = {arr_StartMenuArray, NULL, 
#if defined(BOARD_SOLARIUM_WEB)
2, 
#else
4,
#endif
MENU_PANEL_STATIC};

/***********************************
  МЕНЮ ИНКАССАЦИЯ
***********************************/
const CPU_INT08U str_IncasMenu_0[] = "     ВНИМАНИЕ     ";
const CPU_INT08U str_IncasMenu_1[] = "    ИНКАССАЦИЯ    ";
const CPU_INT08U str_IncasMenu_2[] = "-------------------";

const TMenuLine line_IncasMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_IncasMenu_0,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_IncasMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_IncasMenu_1,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_IncasMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_IncasMenu_2,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_IncasMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_UserMenu_3,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


const TMenuLineArray arr_IncasMenuArray[] = {&line_IncasMenu_0, &line_IncasMenu_1, &line_IncasMenu_2, &line_IncasMenu_3, NULL};
const TMenuPanel IncasMenuPanel[] = {arr_IncasMenuArray, NULL, 4, MENU_PANEL_STATIC};

/***********************************
 МЕНЮ "В ЖУРНАЛЕ ЗАПИСЕЙ НЕТ"
***********************************/
#if defined(BOARD_SOLARIUM_WEB)
const CPU_INT08U str_JournalEmptyMenu_0[] = "   В ЖУРНАЛЕ";
const CPU_INT08U str_JournalEmptyMenu_1[] = "  ЗАПИСЕй НЕТ";
#else
const CPU_INT08U str_JournalEmptyMenu_0[] = "";
const CPU_INT08U str_JournalEmptyMenu_1[] = "    В журнале";
const CPU_INT08U str_JournalEmptyMenu_2[] = "   записей нет";
const CPU_INT08U str_JournalEmptyMenu_3[] = "";
#endif

const TMenuLine line_JournalEmptyMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_JournalEmptyMenu_0,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_JournalEmptyMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_JournalEmptyMenu_1,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#if !defined(BOARD_SOLARIUM_WEB)
const TMenuLine line_JournalEmptyMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_JournalEmptyMenu_2,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_JournalEmptyMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_JournalEmptyMenu_3,         // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};
#endif

const TMenuLineArray arr_JournalEmptyMenuArray[] = {&line_JournalEmptyMenu_0, &line_JournalEmptyMenu_1,
                                                    #if !defined(BOARD_SOLARIUM_WEB)
                                                    &line_JournalEmptyMenu_2, &line_JournalEmptyMenu_3, 
                                                    #endif
                                                    NULL};
const TMenuPanel JournalEmptyMenuPanel[] = {arr_JournalEmptyMenuArray, NULL, 
                                                    #if !defined(BOARD_SOLARIUM_WEB)
                                                    4,
                                                    #else
                                                    2,
                                                    #endif
                                                    MENU_PANEL_STATIC};

/***********************************
  СЕРВИСНОЕ МЕНЮ
***********************************/

#if defined(BOARD_SOLARIUM_WEB)
const CPU_INT08U str_ServiceMenu_0[] = "СЕРВИС     "DEVICE_FW_VERSION;
const CPU_INT08U str_ServiceMenu_1[] = "НАСТРОйКА";
const CPU_INT08U str_ServiceMenu_2[] = "СТАТИСТИКА";
const CPU_INT08U str_ServiceMenu_3[] = "ЖУРНАЛ";
#else
const CPU_INT08U str_ServiceMenu_0[] = "СЕРВИС вер.ПО "DEVICE_FW_VERSION;
const CPU_INT08U str_ServiceMenu_1[] = "Настройки";
const CPU_INT08U str_ServiceMenu_2[] = "Статистика";
const CPU_INT08U str_ServiceMenu_3[] = "Журналы";
const CPU_INT08U str_ServiceMenu_4[] = "Команды ФР";
#endif
    
const TMenuLine line_ServiceMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ServiceMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ServiceMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_ServiceMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)&SettingsMenuPanel                            // панель для перехода
};

const TMenuLine line_ServiceMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_ServiceMenu_2,        // указатель на текстовую строку или дескриптор
  (void*)&StatisticsMenuPanel                            // панель для перехода
};

const TMenuLine line_ServiceMenu_3 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_ServiceMenu_3,        // указатель на текстовую строку или дескриптор
  (void*)&SelectJournalMenuPanel                           // панель для перехода
};

#if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_SOLARIUM_VLAD)
const TMenuLine line_ServiceMenu_4 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_ServiceMenu_4,        // указатель на текстовую строку или дескриптор
  (void*)&ReportMenuPanel                           // панель для перехода
};
#endif

const TMenuLineArray arr_ServiceMenuArray[] = {&line_ServiceMenu_0, &line_ServiceMenu_1, &line_ServiceMenu_2, &line_ServiceMenu_3,
                                               #if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_SOLARIUM_VLAD)
                                               &line_ServiceMenu_4, 
                                               #endif
                                               NULL};
const TMenuPanel ServiceMenuPanel[] = {arr_ServiceMenuArray, NULL,
                                       #if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_SOLARIUM_VLAD)
                                         5, 
                                       #else
                                         4,
                                       #endif
                                       MENU_PANEL_STANDARD};


/***********************************
  МЕНЮ СТАТИСТИКА
***********************************/
#if defined(BOARD_CENTRAL_CARWASH)
const CPU_INT08U str_StatisticsMenu_0[] = "    СТАТИСТИКА";
#else
const CPU_INT08U str_StatisticsMenu_0[] = " СТАТИСТИКА";
#endif
const CPU_INT08U str_StatisticsMenu_1[] = "По постам";
#if defined(BOARD_CENTRAL_CARWASH)
const CPU_INT08U str_StatisticsMenu_2[] = "Общая";
const CPU_INT08U str_StatisticsMenu_3[] = "Счетчики купюр";
const CPU_INT08U str_StatisticsMenu_4[] = "Очистка статистики";
#else
const CPU_INT08U str_StatisticsMenu_2[] = "ПРОСМОТР";
const CPU_INT08U str_StatisticsMenu_4[] = "ОЧИСТКА";
#endif

const TMenuLine line_StatisticsMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_StatisticsMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_StatisticsMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_StatisticsMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)ChanStatMenuPanel                            // панель для перехода
};

const TMenuLine line_StatisticsMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_StatisticsMenu_2,        // указатель на текстовую строку или дескриптор
  (void*)CommStatMenuPanel                           // панель для перехода
};

#if defined(BOARD_CENTRAL_CARWASH)
const TMenuLine line_StatisticsMenu_3 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_StatisticsMenu_3,        // указатель на текстовую строку или дескриптор
  (void*)BillCountersPanel                           // панель для перехода
};
#endif

const TMenuLine line_StatisticsMenu_4 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_StatisticsMenu_4,        // указатель на текстовую строку или дескриптор
  (void*)ClearStatMenu                           // панель для перехода
};

const TMenuLineArray arr_StatisticsMenuArray[] = {&line_StatisticsMenu_0, 
                                                    #if defined(BOARD_CENTRAL_CARWASH)
                                                    &line_StatisticsMenu_1, 
                                                    #endif
                                                    &line_StatisticsMenu_2, 
                                                    #if defined(BOARD_CENTRAL_CARWASH)
                                                    &line_StatisticsMenu_3, 
                                                    #endif
                                                    &line_StatisticsMenu_4, NULL};
const TMenuPanel StatisticsMenuPanel[] = {arr_StatisticsMenuArray, NULL, 
                                            #if defined(BOARD_CENTRAL_CARWASH)
                                            5,
                                            #else
                                            3,
                                            #endif
                                            MENU_PANEL_STANDARD};


/***********************************
  МЕНЮ ОЧИСТКА СТАТИСТИКИ
***********************************/
#if !defined(BOARD_SOLARIUM_WEB)
const char str_ClearStatMenu_0[] = "   ДЛЯ ОЧИСТКИ";
const char str_ClearStatMenu_1[] = "СТАТИСТИКИ ВВЕДИТЕ";
#else
const char str_ClearStatMenu_0[] = "ВВЕДИТЕ ПАРОЛЬ";
#endif

void OnEnterPanelClearStat(void)
{
  TempPass = 0;
  KbrdPost(KEY_START);
}

const TMenuLine line_ClearStatMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ClearStatMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#if !defined(BOARD_SOLARIUM_WEB)
const TMenuLine line_ClearStatMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ClearStatMenu_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};
#endif

const TMenuLine line_ClearStatMenu_2 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassTempDesc2,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_ClearStatMenuArray[] = {&line_ClearStatMenu_0, 
                                                    #if !defined(BOARD_SOLARIUM_WEB)
                                                    &line_ClearStatMenu_1, 
                                                    #endif
                                                    &line_ClearStatMenu_2, NULL};
const TMenuPanel ClearStatMenu[] = {arr_ClearStatMenuArray, OnEnterPanelClearStat, 
                                    #if !defined(BOARD_SOLARIUM_WEB)
                                    3, 
                                    #else
                                    2,
                                    #endif
                                    MENU_PANEL_STANDARD};


/***********************************
МЕНЮ ОЧИСТКА ЖУРНАЛОВ
***********************************/
#if !defined(BOARD_SOLARIUM_WEB)
const char str_ClearJournalMenu_0[] = "   ДЛЯ ОЧИСТКИ";
const char str_ClearJournalMenu_1[] = " ЖУРНАЛОВ ВВЕДИТЕ";
#else
const char str_ClearJournalMenu_0[] = "ВВЕДИТЕ ПАРОЛЬ";
#endif

void OnEnterPanelClearJournal(void)
{
  TempPass = 0;
  KbrdPost(KEY_START);
}

const TMenuLine line_ClearJournalMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ClearJournalMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#if !defined(BOARD_SOLARIUM_WEB)
const TMenuLine line_ClearJournalMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ClearJournalMenu_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};
#endif

const TMenuLine line_ClearJournalMenu_2 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassTempDesc2,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_ClearJournalMenuArray[] = {&line_ClearJournalMenu_0,
#if !defined(BOARD_SOLARIUM_WEB)
&line_ClearJournalMenu_1, 
#endif
&line_ClearJournalMenu_2, NULL};
const TMenuPanel ClearJournalMenuPanel[] = {arr_ClearJournalMenuArray, OnEnterPanelClearStat, 
#if !defined(BOARD_SOLARIUM_WEB)
3, 
#else
2,
#endif
MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ КАНАЛЬНАЯ СТАТИСТИКА
***********************************/
const TMenuLine line_ChannelCountersMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&ChannelStIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterChannelRunDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterChannelMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelCountersMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterChannelCardDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelCountersMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterChannelAbonementDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_ChannelCountersArray[] = {&line_ChannelCountersMenu_0, &line_ChannelCountersMenu_1, &line_ChannelCountersMenu_2,  &line_ChannelCountersMenu_3, &line_ChannelCountersMenu_4, NULL};
const TMenuPanel ChannelCountersPanel[] = {arr_ChannelCountersArray, NULL, 5, MENU_PANEL_STATIC};


/***********************************
  МЕНЮ СЧЕТЧИКИ КУПЮР
***********************************/
const TMenuLine line_BillCountersMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&BillnomIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_BillCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&BillnomDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_BillCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&BillnomCountersDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_BillCountersMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&BillCounterDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

extern CPU_INT32U  BillnomViewIndex;

void OnEnterBillCountersMenu()
{
    BillnomViewIndex = 0;
}

const TMenuLineArray arr_BillCountersArray[] = {&line_BillCountersMenu_0, &line_BillCountersMenu_1, &line_BillCountersMenu_2, &line_BillCountersMenu_3, NULL};
const TMenuPanel BillCountersPanel[] = {arr_BillCountersArray, OnEnterBillCountersMenu, 4, MENU_PANEL_STATIC};


/***********************************
  МЕНЮ ОБЩАЯ СТАТИСТИКА

***********************************/
const CPU_INT08U str_CommonCountersMenu_0[] = "КОРОТКИЕ СЧЕТЧИКИ";

const TMenuLine line_CommonCountersMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)&str_CommonCountersMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_POST_CARWASH) || defined(BOARD_SOLARIUM_VLAD)

const TMenuLine line_CommonCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CommonCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterCardDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CommonCountersMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterAbonementDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#elif defined(BOARD_SOLARIUM_WEB)

const TMenuLine line_CommonCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterRunDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CommonCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#endif


const TMenuLineArray arr_CommonCountersArray[] = {&line_CommonCountersMenu_0, &line_CommonCountersMenu_1, &line_CommonCountersMenu_2, &line_CommonCountersMenu_3, NULL};
const TMenuPanel CommonCountersPanel[] = {arr_CommonCountersArray, NULL, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ОБЩАЯ СТАТИСТИКА ДЛИННЫЕ СЧЕТЧИКИ
***********************************/
const CPU_INT08U str_CommonCountersLongMenu_0[] = "ДЛИННЫЕ СЧЕТЧИКИ";

const TMenuLine line_CommonCountersLongMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)&str_CommonCountersLongMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_POST_CARWASH) || defined(BOARD_SOLARIUM_VLAD)

const TMenuLine line_CommonCountersLongMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterLongMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CommonCountersLongMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterLongCardDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CommonCountersLongMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterLongAbonementDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#elif defined(BOARD_SOLARIUM_WEB)

const TMenuLine line_CommonCountersLongMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterLongRunDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CommonCountersLongMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterLongTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#endif


const TMenuLineArray arr_CommonCountersLongArray[] = {&line_CommonCountersLongMenu_0, &line_CommonCountersLongMenu_1, &line_CommonCountersLongMenu_2, &line_CommonCountersLongMenu_3, NULL};
const TMenuPanel CommonCountersLongPanel[] = {arr_CommonCountersLongArray, NULL, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ НАСТРОЙКИ
***********************************/
const CPU_INT08U str_SettingsMenu_0[] = "    НАСТРОйКА";
#if defined(BOARD_SOLARIUM_WEB)
const CPU_INT08U str_SettingsMenu_3[] = "СЕТЬ";
const CPU_INT08U str_SettingsMenu_4[] = "ПАРОЛЬ";
const CPU_INT08U str_SettingsMenu_5[] = "ВРЕМЯ";
const CPU_INT08U str_SettingsMenu_6[] = "СБРОС";
const CPU_INT08U str_SettingsMenu_7[] = "УПРАВЛЕНИЕ";
#else
#if defined(BOARD_SOLARIUM_VLAD)
const CPU_INT08U str_SettingsMenu_1[] = "Солярии";
const CPU_INT08U str_SettingsMenu_7[] = "Скидки";
const CPU_INT08U str_SettingsMenu_10[] = "Абонементы";
const CPU_INT08U str_SettingsMenu_8[] = "Типы кожи";
#else
const CPU_INT08U str_SettingsMenu_1[] = "Посты";
#endif
const CPU_INT08U str_SettingsMenu_2[] = "Оборудование";
const CPU_INT08U str_SettingsMenu_3[] = "Сеть";
const CPU_INT08U str_SettingsMenu_4[] = "Установка пароля";
const CPU_INT08U str_SettingsMenu_5[] = "Установка времени";
const CPU_INT08U str_SettingsMenu_6[] = "Сброс настроек";
#ifdef CONFIG_FTP_CLIENT_ENABLE
const CPU_INT08U str_SettingsMenu_9[] = "FTP";
#endif
#endif

const TMenuLine line_SettingsMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_SettingsMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_POST_CARWASH) || defined(BOARD_SOLARIUM_VLAD)
const TMenuLine line_SettingsMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_1,       // указатель на текстовую строку или дескриптор
#if defined(BOARD_SOLARIUM_VLAD)
  (void*)&SolariumMenuPanel                            // панель для перехода
#else
  (void*)&ChannelMenuPanel                            // панель для перехода
#endif
};

const TMenuLine line_SettingsMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_2,        // указатель на текстовую строку или дескриптор
  (void*)&DeviceMenuPanel                           // панель для перехода
};
#endif

#if defined(BOARD_SOLARIUM_WEB)
const TMenuLine line_SettingsMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_7,        // указатель на текстовую строку или дескриптор
  (void*)&SolariumSettingsPanel                           // панель для перехода
};
#endif

#if defined(BOARD_SOLARIUM_VLAD)
const TMenuLine line_SettingsMenu_9 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_7,        // указатель на текстовую строку или дескриптор
  (void*)&DiscountMainMenuPanel                           // панель для перехода
};

const TMenuLine line_SettingsMenu_10 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_8,        // указатель на текстовую строку или дескриптор
  (void*)&SkinTypeSettingsMenuPanel                           // панель для перехода
};

const TMenuLine line_SettingsMenu_12 = {
  MENU_LINE_GOTO_MENU,                // тип пункта меню
  0,                                  // доп. флаги  
  (void*)str_SettingsMenu_10,         // указатель на текстовую строку или дескриптор
  (void*)&AbonementMenuPanel          // панель для перехода
};
#endif

const TMenuLine line_SettingsMenu_8 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_3,        // указатель на текстовую строку или дескриптор
  (void*)&NetworkMenuPanel                           // панель для перехода
};

const TMenuLine line_SettingsMenu_3 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_4,        // указатель на текстовую строку или дескриптор
  (void*)&SetPassMenuPanel                            // панель для перехода
};

const TMenuLine line_SettingsMenu_5 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_5,        // указатель на текстовую строку или дескриптор
  (void*)&TimeSetupMenuPanel                           // панель для перехода
};

#if defined(BOARD_SOLARIUM_WEB)
const TMenuLine line_SettingsMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ZummerEnableDesc,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};
#endif

const TMenuLine line_SettingsMenu_7 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SettingsMenu_6,        // указатель на текстовую строку или дескриптор
  (void*)&ResetSettingsMenuPanel                           // панель для перехода
};

#ifdef CONFIG_FTP_CLIENT_ENABLE
const TMenuLine line_SettingsMenu_11 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&str_SettingsMenu_9,       // указатель на текстовую строку или дескриптор
  (void*)&FtpSettingsMenuPanel                            // панель для перехода
};
#endif

const TMenuLineArray arr_SettingsMenuArray[] = {&line_SettingsMenu_0,
                                                  #if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_SOLARIUM_VLAD)
                                                  &line_SettingsMenu_1, 
                                                  #endif
                                                  #if defined(BOARD_SOLARIUM_VLAD)
                                                  &line_SettingsMenu_10,
                                                  &line_SettingsMenu_12,
                                                  &line_SettingsMenu_9,
                                                  #endif
                                                  #if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_SOLARIUM_VLAD)
                                                  &line_SettingsMenu_2, 
                                                  #endif
                                                  #if defined(BOARD_SOLARIUM_WEB)
                                                  &line_SettingsMenu_1,
                                                  #endif
                                                  
                                                  &line_SettingsMenu_8, 
                                                  
                                                  #ifdef CONFIG_FTP_CLIENT_ENABLE
                                                  &line_SettingsMenu_11,
                                                  #endif
                                                  
                                                  &line_SettingsMenu_5, &line_SettingsMenu_3,
                                                  #if defined(BOARD_SOLARIUM_WEB)
                                                  &line_SettingsMenu_6,
                                                  #endif
                                                  #if defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_SOLARIUM_VLAD)
                                                  &line_SettingsMenu_7,
                                                  #endif
                                                  NULL};
const TMenuPanel SettingsMenuPanel[] = {arr_SettingsMenuArray, NULL, 
                                        #if defined(BOARD_CENTRAL_CARWASH)
                                        7
                                        #elif defined(BOARD_SOLARIUM_VLAD)
                                        10
                                        #else
                                        6
                                        #endif
                                        #ifdef CONFIG_FTP_CLIENT_ENABLE
                                        + 1
                                        #endif
                                        ,
                                        MENU_PANEL_STANDARD};



/***********************************
  МЕНЮ НАСТРОЙКА КАНАЛОВ
***********************************/
const TMenuLine line_ChannelMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&ChannelIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&EnableChannelDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostIpStatusDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostIpAddrDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SelectProtectDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostImpCostDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostLenCostDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_7 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostPauseLenCostDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_8 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostMinutePriceDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_9 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostPauseDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_10 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostTimerDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelMenu_11 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PostSignalDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


const TMenuLineArray arr_ChannelMenuArray[] = {&line_ChannelMenu_0,
                                               &line_ChannelMenu_1,
                                               &line_ChannelMenu_2,
                                               &line_ChannelMenu_4,
                                               &line_ChannelMenu_5,
                                               &line_ChannelMenu_3,
                                               &line_ChannelMenu_6,
                                               &line_ChannelMenu_7,
                                               &line_ChannelMenu_8,
                                               &line_ChannelMenu_9,
                                               &line_ChannelMenu_10,
                                               &line_ChannelMenu_11,
                                               NULL};
char flag_enter_periods=0;

void OnEnterChannelSettingsMenu(void)
{
  if (!flag_enter_periods)
    {
      ChannelIndex = 0;
    }
  else
    {
      flag_enter_periods = 0;
    }
  #if defined(BOARD_CENTRAL_CARWASH)
  PostUserEvent(EVENT_REREAD_SIGNAL_LEVEL); 
  #endif
}

const TMenuPanel ChannelMenuPanel[] = {arr_ChannelMenuArray, OnEnterChannelSettingsMenu, 12, MENU_PANEL_STANDARD};


/***********************************
  МЕНЮ НАСТРОЙКА СЕТИ
***********************************/
const CPU_INT08U str_NetworkMenu_0[] = " НАСТРОйКА СЕТИ";

const TMenuLine line_NetworkMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_NetworkMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_NetworkMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                // доп. флаги  
  (void*)&IpAddrDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_NetworkMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                // доп. флаги  
  (void*)&NetMaskDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_NetworkMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                // доп. флаги  
  (void*)&GatewayDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_NetworkMenuArray[] = {&line_NetworkMenu_0, &line_NetworkMenu_1, &line_NetworkMenu_2, &line_NetworkMenu_3, NULL};
const TMenuPanel NetworkMenuPanel[] = {arr_NetworkMenuArray, NULL, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ НАСТРОЙКА ЦЕНЫ НА БУДНЯХ
***********************************/
void OnEnterPanelPrice(void)
{
  PeriodIndex = ChannelIndex*PRICE_PERIODS_NUM;
  flag_enter_periods = 1;
}

const TMenuLine line_PriceMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&PeriodWeekdaysIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_PriceMenu_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&T_Start_WeekdaysDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_PriceMenu_2 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&T_End_WeekdaysDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_PriceMenu_3 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PriceWeekdaysDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_PriceMenu_4 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PriceTimeWeekdaysDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_PriceMenuArray[] = {&line_PriceMenu_0, &line_PriceMenu_1, &line_PriceMenu_2, &line_PriceMenu_3, &line_PriceMenu_4, NULL};
const TMenuPanel PriceWeekdaysMenuPanel[] = {arr_PriceMenuArray, OnEnterPanelPrice, 5, MENU_PANEL_STANDARD};


/***********************************
  МЕНЮ ВВОД ТЕКУЩЕГО ПАРОЛЯ
***********************************/
const char str_SetPassMenu_0[] = "ВВЕДИТЕ ТЕКУЩИй";
const char str_SetPassMenu_1[] = "Ввод мастер-пароля";

void OnEnterPanelSetPass(void)
{
  TempPass = 0;
#if defined(BOARD_SOLARIUM_WEB)
  KbrdPost(KEY_START);
#endif
}

const TMenuLine line_SetPassMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_SetPassMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SetPassMenu_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassTempDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SetPassMenu_2 = {
  MENU_LINE_GOTO_MENU,          // тип пункта меню
  0,                            // доп. флаги  
  (void*)&str_SetPassMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)MasterPassMenuPanel                          // панель для перехода
};

const TMenuLine line_SetPassMenu_3 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&EnableGlobalPassDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


const TMenuLineArray arr_SetPassMenuArray[] = {&line_SetPassMenu_0, &line_SetPassMenu_1, &line_SetPassMenu_2,
                                                #if defined(BOARD_SOLARIUM_VLAD)
                                                &line_SetPassMenu_3,
                                                #endif
                                                NULL};
const TMenuPanel SetPassMenuPanel[] = {arr_SetPassMenuArray, OnEnterPanelSetPass, 
                                        #if defined(BOARD_SOLARIUM_VLAD)
                                        4,
                                        #else
                                        3,
                                        #endif
                                        MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ВВОД МАСТЕР-ПАРОЛЯ
***********************************/
const char str_MasterPassMenu_0[] = "ВВЕДИТЕ МАСТЕР-";

void OnEnterPanelMasterPass(void)
{
  TempPass = 0;
}

const TMenuLine line_MasterPassMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_MasterPassMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_MasterPassMenu_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&MasterPassTempDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_MasterPassMenuArray[] = {&line_MasterPassMenu_0, &line_MasterPassMenu_1, NULL};
const TMenuPanel MasterPassMenuPanel[] = {arr_MasterPassMenuArray, OnEnterPanelSetPass, 3, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ВВОД ТЕКУЩЕГО ПАРОЛЯ
***********************************/
#if defined(BOARD_CENTRAL_CARWASH)
const char str_ResetSetingsMenu_0[] = "    ДЛЯ СБРОСА";
const char str_ResetSetingsMenu_1[] = " НАСТРОЕК ВВЕДИТЕ";
#else
const char str_ResetSetingsMenu_0[] = "СБРОС НАСТРОЕК";
#endif

void OnEnterPanelResetSetings(void)
{
  TempPass = 0;
  KbrdPost(KEY_START);
}

const TMenuLine line_ResetSetingsMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ResetSetingsMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};
#if defined(BOARD_CENTRAL_CARWASH)
const TMenuLine line_ResetSetingsMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ResetSetingsMenu_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};
#endif
const TMenuLine line_ResetSetingsMenu_2 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassTempDesc1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_ResetSettingsMenuArray[] = {&line_ResetSetingsMenu_0, 
                                                    #if defined(BOARD_CENTRAL_CARWASH)
                                                    &line_ResetSetingsMenu_1, 
                                                    #endif
                                                    &line_ResetSetingsMenu_2, NULL};
const TMenuPanel ResetSettingsMenuPanel[] = {arr_ResetSettingsMenuArray, OnEnterPanelResetSetings, 
                                            #if defined(BOARD_CENTRAL_CARWASH)
                                            3,
                                            #else
                                            2,
                                            #endif
                                            MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ВВОД НОВОГО ПАРОЛЯ
***********************************/
const char str_SetNewPassMenu_0[] = "  ВВЕДИТЕ НОВЫй";

void OnEnterPanelSetNewPass(void)
{
  KbrdPost(KEY_START);
}

const TMenuLine line_SetNewPassMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_SetNewPassMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SetNewPassMenu_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_SetNewPassMenuArray[] = {&line_SetNewPassMenu_0, &line_SetNewPassMenu_1, NULL};
const TMenuPanel SetNewPassMenuPanel[] = {arr_SetNewPassMenuArray, OnEnterPanelSetNewPass, 2, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ НАСТРОЙКА ЦЕНЫ НА ВЫХОДНЫХ
***********************************/
const TMenuLine line_PriceMenuWend_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&PeriodWeekendIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_PriceMenuWend_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&T_Start_WeekendDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_PriceMenuWend_2 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&T_End_WeekendDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_PriceMenuWend_3 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PriceWeekendDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_PriceMenuWend_4 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PriceTimeWeekendDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_PriceMenuArrayWend[] = {&line_PriceMenuWend_0, &line_PriceMenuWend_1, &line_PriceMenuWend_2, &line_PriceMenuWend_3, &line_PriceMenuWend_4, NULL};
const TMenuPanel PriceWeekendMenuPanel[] = {arr_PriceMenuArrayWend, OnEnterPanelPrice, 5, MENU_PANEL_STANDARD};


/***********************************
  МЕНЮ НАСТРОЙКА ОБОРУДОВАНИЯ
***********************************/

const CPU_INT08U str_DeviceMenu_0[] = "   ОБОРУДОВАНИЕ";
const CPU_INT08U str_DeviceMenu_1[] = "ФР";
const CPU_INT08U str_DeviceMenu_2[] = "Монетоприемник";
const CPU_INT08U str_DeviceMenu_3[] = "Модем";
const CPU_INT08U str_DeviceMenu_5[] = "Банк.терминал";
#if defined(CONFIG_MUSIC_ENABLE)
const CPU_INT08U str_DeviceMenu_6[] = "Звук";
#endif
#if defined(BOARD_SOLARIUM_VLAD)
const CPU_INT08U str_DeviceMenu_7[] = "Табло";
const CPU_INT08U str_DeviceMenu_9[] = "Абонемент";
#endif
#if defined(CONFIG_RELAY_ENABLE)
const CPU_INT08U str_DeviceMenu_8[] = "Реле";
#endif

const TMenuLine line_DeviceMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_DeviceMenu_0,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DeviceMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_DeviceMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)&FrMenuPanel                            // панель для перехода
};

const TMenuLine line_DeviceMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&EnableValidatorDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DeviceMenu_3 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_DeviceMenu_2,       // указатель на текстовую строку или дескриптор
  (void*)&CoinSetupPanel                            // панель для перехода
};

const TMenuLine line_DeviceMenu_4 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_DeviceMenu_3,       // указатель на текстовую строку или дескриптор
  (void*)&ModemSetupPanel                            // панель для перехода
};

const TMenuLine line_DeviceMenu_5 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_DeviceMenu_5,       // указатель на текстовую строку или дескриптор
  (void*)&TermMenuPanel                            // панель для перехода
};

#if defined(CONFIG_MUSIC_ENABLE)
const TMenuLine line_DeviceMenu_6 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_DeviceMenu_6,       // указатель на текстовую строку или дескриптор
  (void*)&SoundSettingsPanel                            // панель для перехода
};
#endif

#if defined(BOARD_SOLARIUM_VLAD)
const TMenuLine line_DeviceMenu_7 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_DeviceMenu_7,       // указатель на текстовую строку или дескриптор
  (void*)&ScoreSettingsPanel                            // панель для перехода
};

const TMenuLine line_DeviceMenu_9 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_DeviceMenu_9,       // указатель на текстовую строку или дескриптор
  (void*)&AbonementSetupPanel                            // панель для перехода
};
#endif

#if defined(CONFIG_RELAY_ENABLE)
const TMenuLine line_DeviceMenu_8 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_DeviceMenu_8,       // указатель на текстовую строку или дескриптор
  (void*)&RelaySettingsPanel                            // панель для перехода
};
#endif

const TMenuLineArray arr_DeviceMenuArray[] = {&line_DeviceMenu_0, /*&line_DeviceMenu_1, &line_DeviceMenu_2, &line_DeviceMenu_3,*/
                                              #if defined(CONFIG_MODEM_ENABLE)
                                              &line_DeviceMenu_4,
                                              #endif
                                              &line_DeviceMenu_5,
                                              #if defined(CONFIG_MUSIC_ENABLE)
                                              &line_DeviceMenu_6,
                                              #endif
                                              #if defined(BOARD_SOLARIUM_VLAD)
                                              &line_DeviceMenu_7,
                                              &line_DeviceMenu_9,
                                              #endif
                                              #if defined(CONFIG_RELAY_ENABLE)
                                              &line_DeviceMenu_8,
                                              #endif
                                              NULL};
const TMenuPanel DeviceMenuPanel[] = {arr_DeviceMenuArray, NULL,
                                      2
                                      #if defined(CONFIG_MUSIC_ENABLE)
                                      + 1
                                      #endif
                                      #if defined(CONFIG_MODEM_ENABLE)
                                      + 1
                                      #endif
                                      #if defined(BOARD_SOLARIUM_VLAD)
                                      + 2
                                      #endif
                                      #if defined(CONFIG_RELAY_ENABLE)
                                      + 1
                                      #endif
                                      ,
                                      MENU_PANEL_STANDARD};


/***********************************
  МЕНЮ НАСТРОЙКА ФР
***********************************/
const CPU_INT08U str_FrMenu_0[] = "   НАСТРОйКИ ФР";

const TMenuLine line_FrMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_FrMenu_0,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FrMenu_1 = {
  MENU_LINE_SHOW_DESC, 
  0,                   
  (void*)&EnableFiscalDesc,
  NULL                     
};

const TMenuLine line_FrMenu_2 = {
  MENU_LINE_SHOW_DESC,               // ??? ?????? ????
  0,                              // ???. ?????  
  (void*)&BillFormatDesc,       // ????????? ?? ????????? ?????? ??? ??????????
  NULL                            // ?????? ??? ????????
};

const TMenuLine line_FrMenu_3 = {
  MENU_LINE_SHOW_DESC,
  0,
  (void*)&CommandV2Desc,
  NULL
};

const TMenuLine line_FrMenu_4 = {
  MENU_LINE_SHOW_DESC,
  0,
  (void*)&TaxSystemDesc,
  NULL
};

const TMenuLine line_FrMenu_5 = {
  MENU_LINE_SHOW_DESC,
  0,
  (void*)&TaxFormatDesc,
  NULL
};

const TMenuLine line_FrMenu_6 = {
  MENU_LINE_SHOW_DESC,
  0,
  (void*)&SubjSellDesc,
  NULL
};

const TMenuLine line_FrMenu_7 = {
  MENU_LINE_SHOW_DESC,               // ??? ?????? ????
  0,                              // ???. ?????  
  (void*)&ServiceNameDesc,       // ????????? ?? ????????? ?????? ??? ??????????
  NULL                            // ?????? ??? ????????
};

const TMenuLine line_FrMenu_8 = {
  MENU_LINE_SHOW_DESC, 
  0,                   
  (void*)&DisableFiscalErrorsDesc,
  NULL                     
};

const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, &line_FrMenu_2, &line_FrMenu_3, &line_FrMenu_4, &line_FrMenu_5,  &line_FrMenu_6, &line_FrMenu_7,  &line_FrMenu_8, NULL};
const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 9, MENU_PANEL_STANDARD};

#if defined(CONFIG_TERMINAL_ENABLE)
/***********************************
  МЕНЮ НАСТРОЙКА БАНКОВСКОГО ТЕРМИНАЛА
***********************************/
const CPU_INT08U str_TermMenu_0[] = "НАСТР.БАНК.ТЕРМ-ЛА";
const CPU_INT08U str_TermMenu_4[] = "Настройка суммы";

const TMenuLine line_TermMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_TermMenu_0,            // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_TermMenu_1 = {
  MENU_LINE_SHOW_DESC, 
  0,                   
  (void*)&EnableTerminalDesc,
  NULL                     
};

const TMenuLine line_TermMenu_2 = {
  MENU_LINE_SHOW_DESC, 
  0,                   
  (void*)&TerminalProtocolDesc,
  NULL                     
};

const TMenuLine line_TermMenu_3 = {
  MENU_LINE_SHOW_DESC, 
  0,                   
  (void*)&TerminalIpAddrDesc,
  NULL                     
};

const TMenuLine line_TermMenu_4 = {
  MENU_LINE_SHOW_DESC, 
  0,                   
  (void*)&TerminalPortDesc,
  NULL                     
};

const TMenuLine line_TermMenu_5 = {
  MENU_LINE_SHOW_DESC, 
  0,                   
  (void*)&MakeSverkaDesc,
  NULL                     
};

const TMenuLine line_TermMenu_6 = {
  MENU_LINE_SHOW_DESC, 
  0,                   
  (void*)&MakeSyncDesc,
  NULL                     
};

#if defined(BOARD_CENTRAL_CARWASH)
const TMenuLine line_TermMenu_7 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_TermMenu_4,       // указатель на текстовую строку или дескриптор
  (void*)&KeyMoneySelectPanel                            // панель для перехода
};
#endif

const TMenuLineArray arr_TermMenuArray[] = {&line_TermMenu_0, &line_TermMenu_1, &line_TermMenu_2, &line_TermMenu_3, &line_TermMenu_4, &line_TermMenu_5, &line_TermMenu_6,
                                            #if defined(BOARD_CENTRAL_CARWASH)
                                            &line_TermMenu_7, 
                                            #endif
                                            NULL};
const TMenuPanel TermMenuPanel[] = {arr_TermMenuArray, NULL,
                                    #if defined(BOARD_CENTRAL_CARWASH)
                                    8, 
                                    #else
                                    7,
                                    #endif
                                    MENU_PANEL_STANDARD};
#endif

/***********************************
  МЕНЮ СУММ НА КНОПКИ ДЛЯ БАНКОВСКОГО ТЕРМИНАЛА
***********************************/
const TMenuLine line_KeyMoneyMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&KeyMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_KeyMoneyMenu_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&SelectedMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_KeyMoneyMenu_2 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&KeyActionDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


const TMenuLineArray arr_KeyMoneyMenuArray[] = {&line_KeyMoneyMenu_0, &line_KeyMoneyMenu_1, &line_KeyMoneyMenu_2, NULL};
const TMenuPanel KeyMoneySelectPanel[] = {arr_KeyMoneyMenuArray, NULL, 3, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ НАСТРОЙКА МОНЕТОПРИЕМНИКА
***********************************/
const CPU_INT08U str_CoinMenu_0[] = "НАСТРОйКИ МОНЕТОПР.";

const TMenuLine line_CoinMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_CoinMenu_0,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CoinMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&EnableCoinDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CoinMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CoinPerPulseDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CoinMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CoinPulseLenDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CoinMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CoinPauseLenDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CoinMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CoinPulseDeltaDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


const TMenuLineArray arr_CoinMenuArray[] = {&line_CoinMenu_0, &line_CoinMenu_1, &line_CoinMenu_2, &line_CoinMenu_3, &line_CoinMenu_4, &line_CoinMenu_5, NULL};
const TMenuPanel CoinSetupPanel[] = {arr_CoinMenuArray, NULL, 6, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ НАСТРОЙКА АБОНЕМЕНТА
***********************************/
const CPU_INT08U str_AbonementMenuSet_0[] = "НАСТРОйКИ АБОНЕМЕН.";

const TMenuLine line_AbonementMenuSet_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_AbonementMenuSet_0,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AbonementMenuSet_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&EnableAbonementDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AbonementMenuSet_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CountUseAbonementDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AbonementMenuSet_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ClearStatAbonementCmdDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_AbonementMenuArray[] = {&line_AbonementMenuSet_0, &line_AbonementMenuSet_1,  &line_AbonementMenuSet_2, &line_AbonementMenuSet_3, NULL};
const TMenuPanel AbonementSetupPanel[] = {arr_AbonementMenuArray, NULL, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ НАСТРОЙКА МОДЕМА
***********************************/
const CPU_INT08U str_ModemMenu_0[] = " НАСТРОйКИ МОДЕМА";

const TMenuLine line_ModemMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ModemMenu_0,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ModemMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&EnableModemDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ModemMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ModemStatusDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ModemMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&StatSendHourMinDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ModemMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&EnableEmailJournalSendDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ModemMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DeviceIDDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ModemMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SendTestEmailDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


const TMenuLineArray arr_ModemMenuArray[] = {&line_ModemMenu_0, &line_ModemMenu_1, &line_ModemMenu_2, &line_ModemMenu_3, &line_ModemMenu_4, &line_ModemMenu_5, &line_ModemMenu_6, NULL};
const TMenuPanel ModemSetupPanel[] = {arr_ModemMenuArray, NULL, 7, MENU_PANEL_STANDARD};

/***********************************
  ЗАСТАВКА ДЛЯ КЛИЕНТА
***********************************/

char str_UserMenu_0[22] = "";
char str_UserMenu_1[22] = "";
char str_UserMenu_2[22] = "";
char str_UserMenu_3[22] = "";

int PrintUserMenuStr(char* str, CPU_INT08U n)
{
  char *strptr;
  char *instr;
  // выровняем по центру для красоты
    
  switch (n)
  {
    case 0:
      strptr = str_UserMenu_0;
      break;
    case 1:
      strptr = str_UserMenu_1;
      break;
#if !defined(BOARD_SOLARIUM_WEB)
    case 2:
      strptr = str_UserMenu_2;
      break;
    case 3:
      strptr = str_UserMenu_3;
      break;
#endif
    default:
      return 0;
  }

  // найдем начало строки, отличное от пробела
  instr = str;
  while (*instr==0x20) instr++;
  
  memset(strptr, 0x20, 20);
  strptr[20] = 0;
  
  int len = strlen(instr);
#ifdef CONFIG_LCD_1602A
  if ((len >= 16) || ((8-len/2-1) < 0)) {strcpy(strptr, instr); return strlen(strptr);}
  strcpy(&strptr[8-len/2-1], instr);
  return strlen(strptr);
#else
  if ((len >= 20) || ((10-len/2-1) < 0)) {strcpy(strptr, instr); return strlen(strptr);}
  strcpy(&strptr[10-len/2-1], instr);
  return strlen(strptr);
#endif
}

int PrintUserMenuStrUnalign(char* str, CPU_INT08U n)
{
  char *strptr;
    
  switch (n)
  {
    case 0:
      strptr = str_UserMenu_0;
      break;
    case 1:
      strptr = str_UserMenu_1;
      break;
#if !defined(BOARD_SOLARIUM_WEB)
    case 2:
      strptr = str_UserMenu_2;
      break;
    case 3:
      strptr = str_UserMenu_3;
      break;
#endif
    default:
      return 0;
  }

#ifdef CONFIG_LCD_1602A
  strncpy(strptr, str, 16);
#else
  strncpy(strptr, str, 20);
#endif
  return strlen(strptr);
}

const TMenuLine line_FirstMenu_0 = {
  MENU_LINE_STRING,                 // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_UserMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FirstMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_UserMenu_1,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

#if !defined(BOARD_SOLARIUM_WEB)
const TMenuLine line_FirstMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_UserMenu_2,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FirstMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_UserMenu_3,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};
#endif

const TMenuLineArray FirstMenuArray[] = {&line_FirstMenu_0, &line_FirstMenu_1,
                                        #if !defined(BOARD_SOLARIUM_WEB)
                                        &line_FirstMenu_2, &line_FirstMenu_3, 
                                        #endif
                                        NULL};
const TMenuPanel FirstMenuPanel[] = {FirstMenuArray, InitUserMenu, 
                                    #if !defined(BOARD_SOLARIUM_WEB)
                                    4,
                                    #else
                                    2,
                                    #endif
                                    MENU_PANEL_STATIC};

/***********************************
  ПАНЕЛЬ "НЕВЕРНЫЙ ПАРОЛЬ"
***********************************/
#if defined(BOARD_SOLARIUM_WEB)
const CPU_INT08U str_ErrPass_0[] = "    ОШИБКА";
#else
const CPU_INT08U str_ErrPass_0[] = "     Ошибка ";
#endif
const CPU_INT08U str_ErrPass_1[] = " Неверный пароль";
const CPU_INT08U str_ErrPass_2[] = "";

const TMenuLine line_ErrPassMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_ErrPass_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_ErrPassMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_ErrPass_1,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};
const TMenuLine line_ErrPassMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_ErrPass_2,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

#if defined(BOARD_SOLARIUM_WEB)
const TMenuLineArray ErrPassMenuArray[] = {&line_ErrPassMenu_0, &line_ErrPassMenu_2, NULL};
const TMenuPanel ErrorPassPanel[] = {ErrPassMenuArray, NULL, 2, MENU_PANEL_STATIC};
#else
const TMenuLineArray ErrPassMenuArray[] = {&line_ErrPassMenu_2, &line_ErrPassMenu_0, &line_ErrPassMenu_1, &line_ErrPassMenu_2, NULL};
const TMenuPanel ErrorPassPanel[] = {ErrPassMenuArray, NULL, 3, MENU_PANEL_STATIC};
#endif

/***********************************
  ПАНЕЛЬ "НАСТРОЙКИ СБРОШЕНЫ"
***********************************/
#if defined(BOARD_SOLARIUM_WEB)
const CPU_INT08U str_SettingsIsResetPass_0[] = "  НАСТРОйКИ";
const CPU_INT08U str_SettingsIsResetPass_1[] = "  СБРОШЕНЫ";
#else
const CPU_INT08U str_SettingsIsResetPass_0[] = "   Установлены  ";
const CPU_INT08U str_SettingsIsResetPass_1[] = "    заводские ";
const CPU_INT08U str_SettingsIsResetPass_2[] = "     значения";
const CPU_INT08U str_SettingsIsResetPass_3[] = "    параметров";
#endif

const TMenuLine line__SettingsIsResetMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_SettingsIsResetPass_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line__SettingsIsResetMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_SettingsIsResetPass_1,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

#if !defined(BOARD_SOLARIUM_WEB)
const TMenuLine line__SettingsIsResetMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_SettingsIsResetPass_2,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line__SettingsIsResetMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_SettingsIsResetPass_3,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};
#endif

const TMenuLineArray SettingsIsResetMenuArray[] = {&line__SettingsIsResetMenu_0, &line__SettingsIsResetMenu_1, 
                                                    #if !defined(BOARD_SOLARIUM_WEB)
                                                    &line__SettingsIsResetMenu_2, &line__SettingsIsResetMenu_3, 
                                                    #endif
                                                    NULL};
const TMenuPanel SettingsIsReset[] = {SettingsIsResetMenuArray, NULL, 
                                        #if !defined(BOARD_SOLARIUM_WEB)
                                        4,
                                        #else
                                        2,
                                        #endif
                                        MENU_PANEL_STATIC};


/***********************************
  ПАНЕЛЬ "СТАТИСТИКА ОЧИЩЕНА"
***********************************/
#if defined(BOARD_CENTRAL_CARWASH)
const CPU_INT08U str_StatIsResetPass_0[] = "    Статистика";
const CPU_INT08U str_StatIsResetPass_1[] = "     очищена";
#else
const CPU_INT08U str_StatIsResetPass_0[] = "  СТАТИСТИКА";
const CPU_INT08U str_StatIsResetPass_1[] = "   ОЧИЩЕНА";
#endif
const CPU_INT08U str_StatIsResetPass_2[] = "";

const TMenuLine line__StatIsResetMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_StatIsResetPass_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line__StatIsResetMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_StatIsResetPass_1,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};
const TMenuLine line__StatIsResetMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_StatIsResetPass_2,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

#if defined(BOARD_CENTRAL_CARWASH)
const TMenuLineArray StatIsResetMenuArray[] = {&line__StatIsResetMenu_2, &line__StatIsResetMenu_0, &line__StatIsResetMenu_1, &line__StatIsResetMenu_2, NULL};
const TMenuPanel StatIsReset[] = {StatIsResetMenuArray, NULL, 4, MENU_PANEL_STATIC};
#else
const TMenuLineArray StatIsResetMenuArray[] = {&line__StatIsResetMenu_0, &line__StatIsResetMenu_1, NULL};
const TMenuPanel StatIsReset[] = {StatIsResetMenuArray, NULL, 2, MENU_PANEL_STATIC};
#endif

/***********************************
ПАНЕЛЬ "ЖУРНАЛЫ ОЧИЩЕНЫ"
***********************************/
#if defined(BOARD_CENTRAL_CARWASH)
const CPU_INT08U str_JournalIsResetPass_0[] = "     Журналы ";
const CPU_INT08U str_JournalIsResetPass_1[] = "     очищены";
#else
const CPU_INT08U str_JournalIsResetPass_0[] = "   ЖУРНАЛЫ";
const CPU_INT08U str_JournalIsResetPass_1[] = "   ОЧИЩЕНЫ";
#endif
const CPU_INT08U str_JournalIsResetPass_2[] = "";

const TMenuLine line__JournalIsResetMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_JournalIsResetPass_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line__JournalIsResetMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_JournalIsResetPass_1,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};
const TMenuLine line__JournalIsResetMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_JournalIsResetPass_2,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

#if defined(BOARD_CENTRAL_CARWASH)
const TMenuLineArray JournalIsResetMenuArray[] = {&line__JournalIsResetMenu_2, &line__JournalIsResetMenu_0, &line__JournalIsResetMenu_1, &line__JournalIsResetMenu_2, NULL};
const TMenuPanel JournalIsReset[] = {JournalIsResetMenuArray, NULL, 4, MENU_PANEL_STATIC};
#else
const TMenuLineArray JournalIsResetMenuArray[] = {&line__JournalIsResetMenu_0, &line__JournalIsResetMenu_1, NULL};
const TMenuPanel JournalIsReset[] = {JournalIsResetMenuArray, NULL, 2, MENU_PANEL_STATIC};
#endif

/***********************************
  ПАНЕЛЬ ВНЕСЕНИЯ ДЕНЕГ
***********************************/

const CPU_INT08U str_GetMoney_0[] = " Внесите деньги";

const TMenuLine line_GetMoneyMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_GetMoney_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_GetMoneyMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)&AcceptedMoneyDesc,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_GetMoneyMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_GetMoney_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_GetMoneyMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_GetMoney_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};


const TMenuLineArray GetMoneyMenuArray[] = {&line_GetMoneyMenu_0, &line_GetMoneyMenu_1, &line_GetMoneyMenu_2, &line_GetMoneyMenu_3, NULL};
const TMenuPanel GetMoneyMenuPanel[] = {GetMoneyMenuArray, NULL, 4, MENU_PANEL_STATIC};


/***********************************
  МЕНЮ ВЫБОР ЖУРНАЛА ДЛЯ ПРОСМОТРА
***********************************/
#if !defined(BOARD_SOLARIUM_WEB)
const CPU_INT08U str_SelectJournalMenu_0[] = "ПРОСМОТР ЖУРНАЛОВ";
const CPU_INT08U str_SelectJournalMenu_1[] = "Журнал событий";
const CPU_INT08U str_SelectJournalMenu_2[] = "Очистка журналов";
#else
const CPU_INT08U str_SelectJournalMenu_0[] = "   ЖУРНАЛ";
const CPU_INT08U str_SelectJournalMenu_1[] = "ПРОСМОТР";
const CPU_INT08U str_SelectJournalMenu_2[] = "ОЧИСТКА";
#endif

const TMenuLine line_SelectJournalMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_SelectJournalMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SelectJournalMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SelectJournalMenu_1,        // указатель на текстовую строку или дескриптор
  (void*)&EventJournalMenuPanel                            // панель для перехода
};

const TMenuLine line_SelectJournalMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SelectJournalMenu_2,        // указатель на текстовую строку или дескриптор
  (void*)&ClearJournalMenuPanel                            // панель для перехода
};

const TMenuLineArray arr_SelectJournalMenuArray[] = {&line_SelectJournalMenu_0, &line_SelectJournalMenu_1, &line_SelectJournalMenu_2, NULL};
const TMenuPanel SelectJournalMenuPanel[] = {arr_SelectJournalMenuArray, NULL, 3, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ПЕЧАТЬ ОТЧЕТОВ
***********************************/
const CPU_INT08U str_ReportMenu_0[] = "    КОМАНДЫ ФР";
const CPU_INT08U str_ReportMenu_1[] = "X-отчет";
const CPU_INT08U str_ReportMenu_2[] = "Z-отчет";
const CPU_INT08U str_ReportMenu_3[] = "Аннулирование чека";

const TMenuLine line_ReportMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ReportMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ReportMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_ReportMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)&xReportMenuPanel                            // панель для перехода
};

const TMenuLine line_ReportMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_ReportMenu_2,        // указатель на текстовую строку или дескриптор
  (void*)&zReportMenuPanel                            // панель для перехода
};

const TMenuLine line_ReportMenu_3 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_ReportMenu_3,        // указатель на текстовую строку или дескриптор
  (void*)&CanselCheckMenuPanel                            // панель для перехода
};


void OnEnterReportsPanel(void)
{
  CPU_INT32U enable;
  GetData(&EnableFiscalDesc, &enable, 0, DATA_FLAG_SYSTEM_INDEX);  
  if (!enable) 
    {
      GoToPreviousMenu();
      GoToMenu(FrIsOffMenuPanel);
    }
  FlagForPrintReport = 0;
}

const TMenuLineArray arr_ReportMenuArray[] = {&line_ReportMenu_0, &line_ReportMenu_1, &line_ReportMenu_2, &line_ReportMenu_3, NULL};
const TMenuPanel ReportMenuPanel[] = {arr_ReportMenuArray, OnEnterReportsPanel, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ПЕЧАТЬ X-ОТЧЕТА
***********************************/
const CPU_INT08U str_xReportMenu_0[] = "     X-ОТЧЕТ";
const CPU_INT08U str_xReportMenu_1[] = "Напечатать суточный";
const CPU_INT08U str_xReportMenu_2[] = " отчет без гашения?";
const CPU_INT08U str_xReportMenu_3[] = "ДА-ОК    НЕТ-ОТМЕНА";

const TMenuLine line_xReportMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_xReportMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_xReportMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_xReportMenu_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_xReportMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_xReportMenu_2,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_xReportMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_xReportMenu_3,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterZXReportPanel(void)
{
  OSTimeDly(20);
  FlagForPrintReport = 1;
}

const TMenuLineArray arr_xReportMenuArray[] = {&line_xReportMenu_0, &line_xReportMenu_1, &line_xReportMenu_2, &line_xReportMenu_3, NULL};
const TMenuPanel xReportMenuPanel[] = {arr_xReportMenuArray, OnEnterZXReportPanel, 4, MENU_PANEL_STATIC};


/***********************************
  МЕНЮ ПЕЧАТЬ Z-ОТЧЕТА
***********************************/
const CPU_INT08U str_zReportMenu_0[] = "     Z-ОТЧЕТ";
const CPU_INT08U str_zReportMenu_1[] = "Напечатать суточный";
const CPU_INT08U str_zReportMenu_2[] = " отчет с гашением?";

const TMenuLine line_zReportMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_zReportMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_zReportMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_zReportMenu_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_zReportMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_zReportMenu_2,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_zReportMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_xReportMenu_3,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_zReportMenuArray[] = {&line_zReportMenu_0, &line_zReportMenu_1, &line_zReportMenu_2, &line_zReportMenu_3, NULL};
const TMenuPanel zReportMenuPanel[] = {arr_zReportMenuArray, OnEnterZXReportPanel, 4, MENU_PANEL_STATIC};


/***********************************
  МЕНЮ АННУЛИРОВАНИЕ ЧЕКА
***********************************/
const CPU_INT08U str_CanselCheckMenu_0[] = " ";
const CPU_INT08U str_CanselCheckMenu_1[] = "  Аннулировть чек?";
const CPU_INT08U str_CanselCheckMenu_2[] = " ";

const TMenuLine line_CanselCheckMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_CanselCheckMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CanselCheckMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CanselCheckMenu_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CanselCheckMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CanselCheckMenu_2,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_CanselCheckMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_xReportMenu_3,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_CanselCheckMenuArray[] = {&line_CanselCheckMenu_0, &line_CanselCheckMenu_1, &line_CanselCheckMenu_2, &line_CanselCheckMenu_3, NULL};
const TMenuPanel CanselCheckMenuPanel[] = {arr_CanselCheckMenuArray, OnEnterZXReportPanel, 4, MENU_PANEL_STATIC};

/***********************************
  МЕНЮ ПЕЧАТЬ Z-ОТЧЕТОВ ИЗ БУФЕРА
***********************************/
const CPU_INT08U str_bufReportMenu_0[] = " Z-ОТЧЕТЫ ИЗ БУФЕРА";
const CPU_INT08U str_bufReportMenu_1[] = "Напечатать суточные";
const CPU_INT08U str_bufReportMenu_2[] = " отчеты из буфера?";

const TMenuLine line_bufReportMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_bufReportMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_bufReportMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_bufReportMenu_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_bufReportMenu_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_bufReportMenu_2,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_bufReportMenu_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_xReportMenu_3,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_bufReportMenuArray[] = {&line_bufReportMenu_0, &line_bufReportMenu_1, &line_bufReportMenu_2, &line_xReportMenu_3, NULL};
const TMenuPanel bufReportMenuPanel[] = {arr_bufReportMenuArray, OnEnterZXReportPanel, 4, MENU_PANEL_STATIC};

/***********************************
  МЕНЮ ФР ОТКЛЮЧЕН
***********************************/
const CPU_INT08U str_FrIsOff_0[] = "";
const CPU_INT08U str_FrIsOff_1[] = "   ФР отключен";
const CPU_INT08U str_FrIsOff_2[] = "печать невозможна";

const TMenuLine line_FrIsOff_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_FrIsOff_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FrIsOff_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_FrIsOff_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FrIsOff_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_FrIsOff_2,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_FrIsOffMenuArray[] = {&line_FrIsOff_0, &line_FrIsOff_1, &line_FrIsOff_2, NULL};
const TMenuPanel FrIsOffMenuPanel[] = {arr_FrIsOffMenuArray, NULL, 3, MENU_PANEL_STATIC};

/***********************************
  МЕНЮ ПРОСМОТР ЖУРНАЛА СОБЫТИЙ
***********************************/
char str_EventNumber[40];
char str_EventData[40];

const TMenuLine line_EventJournalMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&EventJournalIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_EventJournalMenu_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&JournalEventTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_EventJournalMenu_2 = {
  MENU_LINE_STRING,                    // тип пункта меню
  0,                                   // доп. флаги  
  (void*)str_EventNumber,      // указатель на текстовую строку или дескриптор
  NULL                                 // панель для перехода
};

const TMenuLine line_EventJournalMenu_3 = {
  MENU_LINE_STRING,                    // тип пункта меню
  0,                                   // доп. флаги  
  (void*)str_EventData,      // указатель на текстовую строку или дескриптор
  NULL                                 // панель для перехода
};


void PrintEventJournalRecord(TEventRecord *record, char *str_event, char *str_data)
{
  if (record->event)
    { // есть событие
      GetEventStr(str_event, record->event);
      if (record->event == JOURNAL_CANSEL_BILL)
      {
        if (!record->data) strcpy(str_data, "OK");
        else strcpy(str_data, "Ошибка");
      }
      else if (record->event == JOURNAL_EVENT_FTP_SEND)
      {
          CPU_INT32U flags = record->data >> 1;
          if ((flags & FTP_FLAG_SEND_COUNTERS | FTP_FLAG_SEND_LOGS) == (FTP_FLAG_SEND_COUNTERS | FTP_FLAG_SEND_LOGS)) strcpy(str_data, "стат.+журн.");
          else if (flags & FTP_FLAG_SEND_COUNTERS) strcpy(str_data, "стат.");
          else if (flags & FTP_FLAG_SEND_LOGS) strcpy(str_data, "журнал");
          if ((record->data & 0x01) == 0) strcpy(&str_data[strlen(str_data)], " успешно");
          else strcpy(&str_data[strlen(str_data)], " ошибка");
      }
      else if (record->event == JOURNAL_EVENT_SOLARIUM_CLEANING_START)
      {
          sprintf(str_data, "солярия %d", record->channel + 1);
      }
      else if ((record->event == JOURNAL_EVENT_SOLARIUM_SERVICE_START) || (record->event == JOURNAL_EVENT_SOLARIUM_TESTMODE_START))
      {
          sprintf(&str_event[strlen(str_event)], "сол.%d", record->channel+1);
          strcpy(str_data, "длит. ");
          PrintSecToMinSec(&str_data[strlen(str_data)], record->data);
      }
      else if (record->event == JOURNAL_EVENT_SOLARIUM_CLEANING_END)
      {
          sprintf(&str_event[strlen(str_event)], "сол.%d", record->channel+1);
          strcpy(str_data, "длит. ");
          PrintSecToMinSec(&str_data[strlen(str_data)], record->data);
      }
      else if ((record->event == JOURNAL_EVENT_SOLARIUM_SERVICE_END) || (record->event == JOURNAL_EVENT_SOLARIUM_TESTMODE_END))
      {
          sprintf(&str_event[strlen(str_event)], "сол.%d", record->channel+1);
          strcpy(str_data, " ");
      }
      else if (record->event == JOURNAL_EVENT_POST_UNAVIABLE)
        {
          sprintf(&str_event[strlen(str_event)], " %d", record->channel + 1);
          strcpy(str_data, " ");
        }
      else if ((record->event == JOURNAL_EVENT_MONEY_NOTE) || (record->event == JOURNAL_EVENT_MONEY_COIN) || (record->event == JOURNAL_EVENT_CARD_ACCEPTED))
        {
          #if defined(BOARD_SOLARIUM_VLAD)
            sprintf(str_data, "%dруб.%02dкоп.", record->data / 100, record->data % 100);
          #else
			      sprintf(str_data, "%d руб.", record->data);
          #endif
        }
      else if (record->event == JOURNAL_EVENT_CARD_ABONEMENT_ACCEPTED)
        {
            sprintf(str_data, "%dруб.%02dкоп.", record->money_bank / 100, record->money_bank % 100);
        }        
      else if (record->event == JOURNAL_EVENT_ABONEMENT_ACCEPTED)
        {
            sprintf(&str_event[strlen(str_event)], " %dр %d", record->money, record->bonus);

            char str[32];
            PrintDateString(str, record->time_before);

            sprintf(str_data, "%x %dр %dБ %s", record->number_abonement, record->money_sum, record->bonus_sum, str);

            // добавим в str_event пробелов до длины str_data чтобы они одновременно прокручивались
            CPU_INT08U len_event = strlen(str_event);
            CPU_INT08U len_data = strlen(str_data);

            if(len_data > len_event)
            {
                CPU_INT08U i = 0;

                for(i = 0; i < len_data - len_event; i++)
                {
                    str_event[len_event + i] = 0x20;
                }

                str_event[len_event + i] = 0x00;
            }
        }
      else if (record->event == JOURNAL_EVENT_ABONEMENT_PAY_ACCEPTED)
        {
            sprintf(&str_event[strlen(str_event)], " %dр %d", record->money, record->type_abonement + 1);

            char str[32];
            PrintDateString(str, record->time_before);

            sprintf(str_data, "%x %dр %dБ %s", record->number_abonement, record->money_sum, record->bonus_sum, str);
        }
      else if (record->event == JOURNAL_EVENT_ABONEMENT_REJECTED)
        {
            sprintf(str_data, "%x %dруб %dБ", record->number_abonement, record->money_sum, record->bonus_sum);
        }
      else if (record->event == JOURNAL_EVENT_CARD_ABONEMENT_REAPEATE)
        {
            sprintf(str_data, "%x %dруб %dБ", record->number_abonement, record->money_sum, record->bonus_sum);
        }
      else if (record->event == JOURNAL_EVENT_ABONEMENT_PAY_REJECTED)
        {
          sprintf(&str_event[strlen(str_event)], "Пост %d", record->channel+1);
          strcpy(str_data, "Отказ");
        }
      else if (record->event == JOURNAL_EVENT_ABONEMENT_BALANCE)
        {
            char str[32];
            PrintDateString(str, record->time_before);

            sprintf(str_data, "%x %dр %dБ %s", record->number_abonement, record->money_sum, record->bonus_sum, str);
        }
      else if (record->event == JOURNAL_EVENT_ABONEMENT_WRONG)
        {
            sprintf(str_data, "%x. Код ошибки %ld", record->number_abonement, record->password);
        }
      else if (record->event == JOURNAL_EVENT_CARD_REJECTED)
        {
          sprintf(&str_event[strlen(str_event)], "Пост %d", record->channel+1);
          strcpy(str_data, "Отказ");
        }
      else if (record->event == JOURNAL_EVENT_START_SESSION)
        {
          #if defined(BOARD_CENTRAL_CARWASH)
              sprintf(&str_event[strlen(str_event)], "Пост %d", record->channel+1);
              sprintf(str_data, "Блок.на ");
              PrintSecToMinSec(&str_data[strlen(str_data)], record->data);
          #elif defined(BOARD_SOLARIUM_WEB)
              sprintf(str_data, "ДЛИТ.");
              PrintSecToMinSec(&str_data[strlen(str_data)], record->data);
          #elif defined(BOARD_SOLARIUM_VLAD)
              sprintf(str_data, "солярий %d ", record->channel + 1);
              PrintSecToMinSec(&str_data[strlen(str_data)], record->data);
          #else
              str_data[0] = 0;
          #endif
        }
      else if (record->event == JOURNAL_EVENT_END_SESSION)
        {
          #if defined(BOARD_CENTRAL_CARWASH)
              sprintf(&str_event[strlen(str_event)], "Пост %d", record->channel+1);
              sprintf(str_data, "");
          #elif defined(BOARD_SOLARIUM_WEB)
              sprintf(str_data, "ДЛИТ.");
              PrintSecToMinSec(&str_data[strlen(str_data)], record->data);
          #elif defined(BOARD_SOLARIUM_VLAD)
              sprintf(str_data, "солярий %d ", record->channel + 1);
          #else
              str_data[0] = 0;
          #endif
        }
      else if (record->event == JOURNAL_EVENT_DEVICE_ON)
        {
          sprintf(str_event, "ВКЛЮЧЕНИЕ");
          sprintf(str_data, "УСТРОйСТВА");
        }
      else if (record->event == JOURNAL_EVENT_PRINT_BILL)
        {
          #if defined(BOARD_SOLARIUM_VLAD)
          sprintf(str_data, "Сол.#%d", record->channel+1);
          #else
          sprintf(str_data, "Пост %d", record->channel+1);
          #endif
        }
      else if (record->event == JOURNAL_EVENT_PRINT_Z)
        {
          sprintf(str_data, "");
        }
      else if (record->event == JOURNAL_EVENT_PRINT_X)
        {
          sprintf(str_data, "");
        }
      else if (record->event == JOURNAL_EVENT_PRINT_BUF)
        {
          sprintf(str_data, "");
        }
      else if (record->event == JOURNAL_EVENT_CHANGE_MODE)
        {
          if (record->data == MODE_WORK) sprintf(str_data, "работа");
          else sprintf(str_data, "настройка");
        }
      else if (record->event == JOURNAL_EVENT_INCASSATION)
        {
            sprintf(str_data, "%u руб.", record->data);
        }
      else if (record->event == JOURNAL_EVENT_PASS_FAIL)
        {
            sprintf(str_data, "%u", record->data);
        }
      else if ((record->event == JOURNAL_EVENT_EMAIL_OK) || (record->event == JOURNAL_EVENT_EMAIL_FAIL))
        {
            sprintf(str_data, "");
        }
      else
      {
          GetDataItem(&JournalErrorNumberDesc0, (CPU_INT08U*)str_event, record->event);
          GetDataItem(&JournalErrorNumberDesc1, (CPU_INT08U*)str_data, record->event);
      }
    }
  else
    { // пустая запись
      sprintf(str_event, "пусто");
      sprintf(str_data, "пусто");
    }
}

void OnEnterEventJournal(void)
{
  TEventRecord record;
  EventJournalIndex = 0;
  CPU_INT32U last = 0;
  
  for (CPU_INT32U i=0; i<EVENT_RECORDS_COUNT; i++)
    {
      GetEventRecord(&record, i);
      if (record.time >= last)
        {
          last = record.time;
          EventJournalIndex = i;
        }
    }
  if (!last) {SetMenu(JournalEmptyMenuPanel); return;}
    
  GetEventRecord(&record, EventJournalIndex);
  PrintEventJournalRecord(&record, str_EventNumber, str_EventData);
}

const TMenuLineArray arr_EventJournalMenuArray[] = {&line_EventJournalMenu_0, &line_EventJournalMenu_1, &line_EventJournalMenu_2, &line_EventJournalMenu_3 ,NULL};
const TMenuPanel EventJournalMenuPanel[] = {arr_EventJournalMenuArray, OnEnterEventJournal, 4, 
#if defined(BOARD_CENTRAL_CARWASH)
MENU_PANEL_STATIC
#else
MENU_PANEL_STANDARD
#endif
};


/***********************************
  МЕНЮ НАСТРОЙКА ВРЕМЕНИ
***********************************/
#if defined(BOARD_SOLARIUM_WEB)
const CPU_INT08U str_TimeSetupMenu_0[] = "  ВРЕМЯ";
#else
const CPU_INT08U str_TimeSetupMenu_0[] = "УСТАНОВКА ВРЕМЕНИ";
#endif

const TMenuLine line_TimeSetupMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_TimeSetupMenu_0,        // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_TimeSetupMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SystemTimeEditDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_TimeSetupMenuArray[] = {&line_TimeSetupMenu_0, &line_TimeSetupMenu_1, NULL};
const TMenuPanel TimeSetupMenuPanel[] = {arr_TimeSetupMenuArray, NULL, 2, MENU_PANEL_STANDARD};

#if !defined(BOARD_SOLARIUM_VLAD)
/***********************************
  МЕНЮ Общая статистика
***********************************/
#if defined(BOARD_SOLARIUM_WEB)
const CPU_INT08U str_CommonStatMenu_0[] = "ОБЩАЯ СТАТИСТИКА";
const CPU_INT08U str_CommonStatMenu_1[] = "КОРОТКИЕ СЧЕТЧ.";
const CPU_INT08U str_CommonStatMenu_2[] = "ДЛИННЫЕ СЧЕТЧ.";
#else
const CPU_INT08U str_CommonStatMenu_0[] = "  ОБЩАЯ СТАТИСТИКА";
const CPU_INT08U str_CommonStatMenu_1[] = "Короткие счетчики";
const CPU_INT08U str_CommonStatMenu_2[] = "Длинные счетчики";
#endif

const TMenuLine line_StatMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_CommonStatMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_StatMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)CommonCountersPanel                            // панель для перехода
};

const TMenuLine line_StatMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_2,        // указатель на текстовую строку или дескриптор
  (void*)CommonCountersLongPanel                           // панель для перехода
};

const TMenuLineArray arr_StatMenuArray[] = {&line_StatMenu_0, &line_StatMenu_1, &line_StatMenu_2, NULL};
const TMenuPanel CommStatMenuPanel[] = {arr_StatMenuArray, NULL, 3, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ Канальная статистика статистика
***********************************/
const CPU_INT08U str_ChanStatMenu_0[] = " СТАТ-КА ПО ПОСТАМ";

const TMenuLine line_ChanStatMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ChanStatMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChanStatMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)ChannelCountersPanel                            // панель для перехода
};

const TMenuLine line_ChanStatMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_2,        // указатель на текстовую строку или дескриптор
  (void*)ChannelCountersLongPanel                           // панель для перехода
};

const TMenuLineArray arr_ChanStatMenuArray[] = {&line_ChanStatMenu_0, &line_ChanStatMenu_1, &line_ChanStatMenu_2, NULL};
const TMenuPanel ChanStatMenuPanel[] = {arr_ChanStatMenuArray, NULL, 3, MENU_PANEL_STANDARD};

#endif

/***********************************
  МЕНЮ КАНАЛЬНАЯ СТАТИСТИКА ДЛИННЫЕ СЧЕТЧИКИ
***********************************/
const TMenuLine line_ChannelCountersLongMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&ChannelStLongIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelCountersLongMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterChannelRunLongDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelCountersLongMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterChannelMoneyLongDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelCountersLongMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterChannelCardLongDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ChannelCountersLongMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterChannelAbonementLongDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_ChannelCountersLongArray[] = {&line_ChannelCountersLongMenu_0, &line_ChannelCountersLongMenu_1, &line_ChannelCountersLongMenu_2, &line_ChannelCountersLongMenu_3, &line_ChannelCountersLongMenu_4, NULL};
const TMenuPanel ChannelCountersLongPanel[] = {arr_ChannelCountersLongArray, NULL, 5, MENU_PANEL_STANDARD};


#if defined(BOARD_SOLARIUM_WEB)

/***********************************
  МЕНЮ НАСТРОЙКИ УПРАВЛЕНИЯ СОЛЯРИЕМ
***********************************/
const CPU_INT08U str_SolariumSettingsMenu_0[] = "  УПРАВЛЕНИЕ";
const CPU_INT08U str_SolariumSettingsMenu_1[] = "СТОИМОСТЬ";

const TMenuLine line_SolariumSettingsMenu_0 = {
  MENU_LINE_STRING,  
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)&str_SolariumSettingsMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumSettingsMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolariumTypeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumSettingsMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolariumTimeoutDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumSettingsMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolariumPauseDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumSettingsMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolariumVentilationTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumSettingsMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolariumMinTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumSettingsMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolariumMaxTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumSettingsMenu_7 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolariumPricePerMinDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_SolariumSettingsArray[] = {&line_SolariumSettingsMenu_0, &line_SolariumSettingsMenu_1, &line_SolariumSettingsMenu_2, &line_SolariumSettingsMenu_3, &line_SolariumSettingsMenu_4, &line_SolariumSettingsMenu_5, &line_SolariumSettingsMenu_6, &line_SolariumSettingsMenu_7, NULL};
const TMenuPanel SolariumSettingsPanel[] = {arr_SolariumSettingsArray, NULL, 8, MENU_PANEL_STANDARD};

#endif

#if defined(CONFIG_MUSIC_ENABLE)
/***********************************
  МЕНЮ НАСТРОЙКИ ЗВУКА
***********************************/
const CPU_INT08U str_SoundSettingsMenu_0[] = "    ЗВУК ";

const TMenuLine line_SoundSettingsMenu_0 = {
  MENU_LINE_STRING,  
  MENU_FIXED_LINE,                  // доп. флаги  
  (void*)&str_SoundSettingsMenu_0,  // указатель на текстовую строку или дескриптор
  NULL                              // панель для перехода
};

const TMenuLine line_SoundSettingsMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SoundTypeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SoundSettingsMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&PlayerStatusDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SoundSettingsMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SoundIpAddrDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SoundSettingsMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SdCardStatusDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SoundSettingsMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SoundVolumeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SoundSettingsMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SoundFileIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


const TMenuLineArray arr_SoundSettingsArray[] = {&line_SoundSettingsMenu_0, &line_SoundSettingsMenu_1, &line_SoundSettingsMenu_2, &line_SoundSettingsMenu_3, &line_SoundSettingsMenu_4, &line_SoundSettingsMenu_5, &line_SoundSettingsMenu_6, NULL};
const TMenuPanel SoundSettingsPanel[] = {arr_SoundSettingsArray, NULL, 7, MENU_PANEL_STANDARD};

#endif // #if defined(CONFIG_MUSIC_ENABLE)

#if defined(BOARD_SOLARIUM_VLAD)

/***********************************
  МЕНЮ НАСТРОЙКИ СОЛЯРИЕВ
***********************************/
const CPU_INT08U str_SolariumMenu_0[] = "Режимы";

const TMenuLine line_SolariumMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&ChannelIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&EnableChannelDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarMinimumTimeMinutesDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumMenu_3 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SolariumMenu_0,        // указатель на текстовую строку или дескриптор
  (void*)SolariumModesPanel  
};


const TMenuLine line_SolariumMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarVentilationTimeMinutesDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarTimeoutBeforeMinutesDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarTimeoutAfterMinutesDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumMenu_7 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarControlChannelDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumMenu_8 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarCleaningTimeoutMinutesDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterSolariumMenu(void)
{
    ChannelIndex = solar_modes_index / SOLAR_MODES_COUNT;
}

const TMenuLineArray arr_SolariumArray[] = {&line_SolariumMenu_0, &line_SolariumMenu_1, &line_SolariumMenu_2, &line_SolariumMenu_3, &line_SolariumMenu_4, &line_SolariumMenu_5, &line_SolariumMenu_6, &line_SolariumMenu_7, &line_SolariumMenu_8, NULL};
const TMenuPanel SolariumMenuPanel[] = {arr_SolariumArray, OnEnterSolariumMenu, 9, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ РЕЖИМОВ СОЛЯРИЕВ
***********************************/
const TMenuLine line_SolariumModesMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&SolariumModesDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumModesMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarLampsCountDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumModesMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarPricePerMinuteDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumModesMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarCurrentPricePerMinuteForViewDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolariumModesMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SolarMaximumTimeMinutesDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterSolarModesMenu(void)
{
    solar_modes_index = ChannelIndex * SOLAR_MODES_COUNT;
}

const TMenuLineArray arr_SolariumModesArray[] = {&line_SolariumModesMenu_0, &line_SolariumModesMenu_1, &line_SolariumModesMenu_2, &line_SolariumModesMenu_3, &line_SolariumModesMenu_4, NULL};
const TMenuPanel SolariumModesPanel[] = {arr_SolariumModesArray, OnEnterSolarModesMenu, 5, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ СКИДКИ
***********************************/
const CPU_INT08U str_DiscountMainMenu_0[] = "  СКИДКИ";
const CPU_INT08U str_DiscountMainMenu_1[] = "По часам";
const CPU_INT08U str_DiscountMainMenu_2[] = "По дням недели";
const CPU_INT08U str_DiscountMainMenu_3[] = "По месяцам";
const CPU_INT08U str_DiscountMainMenu_4[] = "Разовые";

const TMenuLine line_DiscountMainMenu_0 = {
  MENU_LINE_STRING,                 // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)&str_DiscountMainMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountMainMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountValueCurrentDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountMainMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&str_DiscountMainMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)&DiscountHourMenuPanel                            // панель для перехода
};

const TMenuLine line_DiscountMainMenu_3 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&str_DiscountMainMenu_2,       // указатель на текстовую строку или дескриптор
  (void*)&DiscountDayMenuPanel                            // панель для перехода
};

const TMenuLine line_DiscountMainMenu_4 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&str_DiscountMainMenu_3,       // указатель на текстовую строку или дескриптор
  (void*)DiscountMonthMenuPanel                            // панель для перехода
};

const TMenuLine line_DiscountMainMenu_5 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&str_DiscountMainMenu_4,       // указатель на текстовую строку или дескриптор
  (void*)DiscountCustomMenuPanel                            // панель для перехода
};

const TMenuLineArray arr_DiscountMainArray[] = {&line_DiscountMainMenu_0, &line_DiscountMainMenu_1, &line_DiscountMainMenu_2, &line_DiscountMainMenu_3, &line_DiscountMainMenu_4, &line_DiscountMainMenu_5, NULL};
const TMenuPanel DiscountMainMenuPanel[] = {arr_DiscountMainArray, NULL, 6, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ АБОНЕМЕНТЫ
***********************************/
const TMenuLine line_AbonementMenu_0 = {
  MENU_LINE_SHOW_DESC,                  // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,      // доп. флаги  
  (void*)&AbonementIndexDesc,           // указатель на текстовую строку или дескриптор
  NULL                                  // панель для перехода
};

const TMenuLine line_AbonementMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&AbonementMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AbonementMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&AbonementBonusDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AbonementMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&AbonementBestBeforeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterAbonementMenu(void)
{
  abonement_index = 0;
}

const TMenuLineArray arr_AbonementArray[] = {&line_AbonementMenu_0, &line_AbonementMenu_1, &line_AbonementMenu_2, &line_AbonementMenu_3, NULL};
const TMenuPanel AbonementMenuPanel[] = {arr_AbonementArray, OnEnterAbonementMenu, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ СКИДКИ ПО ЧАСАМ
***********************************/
const TMenuLine line_DiscountHourMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&DiscountIndexHourDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountHourMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountBeginHourDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountHourMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountEndHourDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountHourMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountValueHourDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterDiscountHourMenu(void)
{
    discount_index = 0;
}

const TMenuLineArray arr_DiscountHourArray[] = {&line_DiscountHourMenu_0, &line_DiscountHourMenu_1, &line_DiscountHourMenu_2, &line_DiscountHourMenu_3, NULL};
const TMenuPanel DiscountHourMenuPanel[] = {arr_DiscountHourArray, OnEnterDiscountHourMenu, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ СКИДКИ ПО ДНЯМ
***********************************/
const TMenuLine line_DiscountDayMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&DiscountIndexDayDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountDayMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountValueDayDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterDiscountDayMenu(void)
{
    discount_index = 0;
}

const TMenuLineArray arr_DiscountDayArray[] = {&line_DiscountDayMenu_0, &line_DiscountDayMenu_1, NULL};
const TMenuPanel DiscountDayMenuPanel[] = {arr_DiscountDayArray, OnEnterDiscountDayMenu, 2, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ СКИДКИ ПО МЕСЯЦАМ
***********************************/
const TMenuLine line_DiscountMonthMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&DiscountIndexMonthDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountMonthMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountValueMonthDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterDiscountMonthMenu(void)
{
    discount_index = 0;
}

const TMenuLineArray arr_DiscountMonthArray[] = {&line_DiscountMonthMenu_0, &line_DiscountMonthMenu_1, NULL};
const TMenuPanel DiscountMonthMenuPanel[] = {arr_DiscountMonthArray, OnEnterDiscountMonthMenu, 2, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ СКИДКИ РАЗОВЫЕ
***********************************/
const TMenuLine line_DiscountCustomMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&DiscountIndexCustomDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountCustomMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountValueCustomDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountCustomMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountDateBeginCustomDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_DiscountCustomMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&DiscountDateEndCustomDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterDiscountCustomMenu(void)
{
    discount_index = 0;
}

const TMenuLineArray arr_DiscountCustomArray[] = {&line_DiscountCustomMenu_0, &line_DiscountCustomMenu_1, &line_DiscountCustomMenu_2, &line_DiscountCustomMenu_3, NULL};
const TMenuPanel DiscountCustomMenuPanel[] = {arr_DiscountCustomArray, OnEnterDiscountCustomMenu, 4, MENU_PANEL_STANDARD};


/***********************************
  МЕНЮ СКИДКИ РАЗОВЫЕ
***********************************/
const TMenuLine line_ScoreSettingsMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&ScoreIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ScoreSettingsMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ScoreEnableDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ScoreSettingsMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ScoreRs485SpeedDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ScoreSettingsMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ScoreRs485AddressDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ScoreSettingsMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ScoreColumnDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ScoreSettingsMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ScoreStateDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ScoreSettingsMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&ScoreCommandDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_ScoreSettingsArray[] = {&line_ScoreSettingsMenu_0, &line_ScoreSettingsMenu_1, &line_ScoreSettingsMenu_2, &line_ScoreSettingsMenu_3, &line_ScoreSettingsMenu_4, &line_ScoreSettingsMenu_5, &line_ScoreSettingsMenu_6, NULL};
const TMenuPanel ScoreSettingsPanel[] = {arr_ScoreSettingsArray, NULL, 7, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ВВОД ПАРОЛЯ ДЛЯ ОБСЛУЖИВАНИЯ СОЛЯРИЯ
***********************************/
const char str_ReqServPassMenu_0[] = "  ПАРОЛb ЗАПУСКА";
const char str_ReqServPassMenu_1[] = "  ПАРОЛb УБОРКИ";
const char str_ReqServPassMenu_2[] = "  ПАРОЛb СЕРВИСА";
const char str_ReqServPassMenu_3[] = "  ПАРОЛb ТЕСТА";

void OnEnterPanelReqCleaningPass(void)
{
    TempPass = 0;
    strcpy(str_UserMenu_0, str_ReqServPassMenu_1);
}

void OnEnterPanelReqServicePass(void)
{
    TempPass = 0;
    strcpy(str_UserMenu_0, str_ReqServPassMenu_2);
}

void OnEnterPanelReqTestPass(void)
{
    TempPass = 0;
    strcpy(str_UserMenu_0, str_ReqServPassMenu_3);
}

void OnEnterPanelReqStartupPass(void)
{
    TempPass = 0;
    strcpy(str_UserMenu_0, str_ReqServPassMenu_0);
}

const TMenuLine line_ReqServPassMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_UserMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ReqServPassMenu_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassTempDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_ReqServPassMenuArray[] = {&line_ReqServPassMenu_0, &line_ReqServPassMenu_1, NULL};

const TMenuPanel ReqCleaningPassMenuPanel[] = {arr_ReqServPassMenuArray, OnEnterPanelReqCleaningPass, 2, MENU_PANEL_STANDARD};
const TMenuPanel ReqServicePassMenuPanel[] = {arr_ReqServPassMenuArray, OnEnterPanelReqServicePass, 2, MENU_PANEL_STANDARD};
const TMenuPanel ReqTestPassMenuPanel[] = {arr_ReqServPassMenuArray, OnEnterPanelReqTestPass, 2, MENU_PANEL_STANDARD};
const TMenuPanel ReqStartupPassMenuPanel[] = {arr_ReqServPassMenuArray, OnEnterPanelReqStartupPass, 2, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ СЧЕТЧИКОВ ПО РЕЖИМАМ
***********************************/
const TMenuLine line_SolarModesCountersMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&SolariumModeIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarModesCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterModeMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarModesCountersMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterModeCardMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarModesCountersMenu_7 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterModeCardBonusDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarModesCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterModeRunsDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarModesCountersMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterModeWorkTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarModesCountersMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterModeTestRunsDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarModesCountersMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterModeWorkTestTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterSolarModesCountersMenu(void)
{
    solar_modes_index = 0;
}

const TMenuLineArray arr_SolarModesCountersArray[] = {&line_SolarModesCountersMenu_0, &line_SolarModesCountersMenu_1, &line_SolarModesCountersMenu_6, &line_SolarModesCountersMenu_7, &line_SolarModesCountersMenu_2, &line_SolarModesCountersMenu_3, &line_SolarModesCountersMenu_4, &line_SolarModesCountersMenu_5, NULL};
const TMenuPanel SolarModesCountersPanel[] = {arr_SolarModesCountersArray, OnEnterSolarModesCountersMenu, 8, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ СЧЕТЧИКОВ ПО СОЛЯРИЯМ И РЕЖИМАМ
***********************************/
const TMenuLine line_SolarChannelsCountersMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&SolariumModesDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarChannelsCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterSolarMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarChannelsCountersMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterSolarCardMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarChannelsCountersMenu_7 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterSolarCardBonusDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarChannelsCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterSolarRunsDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarChannelsCountersMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterSolarWorkTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarChannelsCountersMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterSolarTestRunsDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarChannelsCountersMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterSolarTestWorkTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


void OnEnterSolarChannelsCountersMenu(void)
{
    solar_modes_index = 0;
}

const TMenuLineArray arr_SolarChannelsCountersArray[] = {&line_SolarChannelsCountersMenu_0, &line_SolarChannelsCountersMenu_1, &line_SolarChannelsCountersMenu_6, &line_SolarChannelsCountersMenu_7, &line_SolarChannelsCountersMenu_2, &line_SolarChannelsCountersMenu_3, &line_SolarChannelsCountersMenu_4, &line_SolarChannelsCountersMenu_5, NULL};
const TMenuPanel SolarChannelsCountersPanel[] = {arr_SolarChannelsCountersArray, OnEnterSolarChannelsCountersMenu, 8, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ счетчиков по абонементам
***********************************/
const TMenuLine line_AbonementsCountersMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&AbonementCounterIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AbonementsCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterMoneyAbonementDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AbonementsCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterRunsAbonementDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AbonementsCountersMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterBonusAbonementDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

void OnEnterAbonementCountersMenu(void)
{
//    abonement_index = 0;
}

const TMenuLineArray arr_AbonementCountersArray[] = {&line_AbonementsCountersMenu_0, &line_AbonementsCountersMenu_1, &line_AbonementsCountersMenu_2, &line_AbonementsCountersMenu_3, NULL};
const TMenuPanel AbonementCountersPanel[] = {arr_AbonementCountersArray, OnEnterAbonementCountersMenu, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ СЧЕТЧИКОВ ПО ВРЕМЕНИ НАРАБОТКИ ЛАМП
***********************************/
const CPU_INT08U str_SolarLampsCounters_0[] = "СБРОС СЧЕТЧИКОВ";

const TMenuLine line_SolarLampsCountersMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&ChannelIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterCollatenTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterUFTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterAllTestCountDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterAllTestTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterTestMeanTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterCleaningCountDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_7 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterCleaningTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_8 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterCleaningMeanTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarLampsCountersMenu_9 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_SolarLampsCounters_0,       // указатель на текстовую строку или дескриптор
  (void*)ClearLampsMenu                            // панель для перехода
};

void OnEnterSolarLampsCountersMenu(void)
{
//    ChannelIndex = 0;
}

const TMenuLineArray arr_SolarLampsCountersArray[] = {&line_SolarLampsCountersMenu_0, &line_SolarLampsCountersMenu_1, &line_SolarLampsCountersMenu_2, &line_SolarLampsCountersMenu_3, &line_SolarLampsCountersMenu_4, &line_SolarLampsCountersMenu_5, &line_SolarLampsCountersMenu_6, &line_SolarLampsCountersMenu_7, &line_SolarLampsCountersMenu_8, &line_SolarLampsCountersMenu_9, NULL};
const TMenuPanel SolarLampsCountersPanel[] = {arr_SolarLampsCountersArray, OnEnterSolarLampsCountersMenu, 10, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ОБЩИХ СЧЕТЧИКОВ
***********************************/
const CPU_INT08U str_SolarCommonCountersMenu_0[] = "  СЧЕТЧИКИ ДЕНЕГ";

const TMenuLine line_SolarCommonCountersMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_SolarCommonCountersMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarCommonCountersMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterCommonMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarCommonCountersMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterCashMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarCommonCountersMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterCardMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SolarCommonCountersMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&CounterAbonementMoneyDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_SolarCommonCountersArray[] = {&line_SolarCommonCountersMenu_0, &line_SolarCommonCountersMenu_1, &line_SolarCommonCountersMenu_2, &line_SolarCommonCountersMenu_3, &line_SolarCommonCountersMenu_4, NULL};
const TMenuPanel SolarCommonCountersPanel[] = {arr_SolarCommonCountersArray, NULL, 5, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ПРОСМОТР СТАТИСТИКИ
***********************************/
const CPU_INT08U str_CommonStatMenu_0[] = "ПРОСМОТР СТАТИСТИКИ";
const CPU_INT08U str_CommonStatMenu_1[] = "По соляриям";
const CPU_INT08U str_CommonStatMenu_2[] = "По режимам";
const CPU_INT08U str_CommonStatMenu_3[] = "Наработка";
const CPU_INT08U str_CommonStatMenu_4[] = "Деньги";
const CPU_INT08U str_CommonStatMenu_5[] = "Абомементы";

const TMenuLine line_StatMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_CommonStatMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_StatMenu_1 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_1,       // указатель на текстовую строку или дескриптор
  (void*)SolarChannelsCountersPanel                            // панель для перехода
};

const TMenuLine line_StatMenu_2 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_2,       // указатель на текстовую строку или дескриптор
  (void*)SolarModesCountersPanel                            // панель для перехода
};

const TMenuLine line_StatMenu_3 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_3,       // указатель на текстовую строку или дескриптор
  (void*)SolarLampsCountersPanel                            // панель для перехода
};

const TMenuLine line_StatMenu_4 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_4,       // указатель на текстовую строку или дескриптор
  (void*)SolarCommonCountersPanel                            // панель для перехода
};

const TMenuLine line_StatMenu_5 = {
  MENU_LINE_GOTO_MENU,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)str_CommonStatMenu_5,       // указатель на текстовую строку или дескриптор
  (void*)AbonementCountersPanel                            // панель для перехода
};

const TMenuLineArray arr_StatMenuArray[] = {&line_StatMenu_0, &line_StatMenu_1, &line_StatMenu_2, &line_StatMenu_3, &line_StatMenu_4, &line_StatMenu_5, NULL};
const TMenuPanel CommStatMenuPanel[] = {arr_StatMenuArray, NULL, 6, MENU_PANEL_STANDARD};


/***********************************
  МЕНЮ НАСТРОЙКА ТИПОВ КОЖИ
***********************************/
const TMenuLine line_SkinTypeSettingsMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&SkinTypeIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SkinTypeSettingsMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SkinCollatenMaxTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SkinTypeSettingsMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SkinUFMaxTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_SkinTypeSettingsMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&SkinMaximalMaxTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_SkinTypeSettingsArray[] = {&line_SkinTypeSettingsMenu_0, &line_SkinTypeSettingsMenu_1, &line_SkinTypeSettingsMenu_2, &line_SkinTypeSettingsMenu_3, NULL};
const TMenuPanel SkinTypeSettingsMenuPanel[] = {arr_SkinTypeSettingsArray, NULL, 4, MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ ОЧИСТКА СЧЕТЧИКОВ ЛАМП ПО СОЛЯРИЯМ
***********************************/
const char str_ClearLampsMenu_0[] = "      ОЧИСТКА";
const char str_ClearLampsMenu_1[] = "СЧЕТЧИКОВ НАРАБОТКИ";

const TMenuLine line_ClearLampsMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ClearLampsMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ClearLampsMenu_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_ClearLampsMenu_1,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_ClearLampsMenu_2 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassTempDesc2,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_ClearLampsMenuArray[] = {&line_ClearLampsMenu_0, &line_ClearLampsMenu_1, &line_ClearLampsMenu_2, NULL};
const TMenuPanel ClearLampsMenu[] = {arr_ClearLampsMenuArray, OnEnterPanelClearStat, 
                                    3, 
                                    MENU_PANEL_STANDARD};

/***********************************
  МЕНЮ НАСТРОЙКА ВСЕХ ПАРОЛЕЙ
***********************************/
const char str_AllPasswordsMenu_0[] = "   ПАРОЛИ";

const TMenuLine line_AllPasswordsMenu_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)str_AllPasswordsMenu_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AllPasswordsMenu_1 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassDescAdmin,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AllPasswordsMenu_2 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassDescCleaning,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AllPasswordsMenu_3 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassDescService,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_AllPasswordsMenu_4 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  0,                // доп. флаги  
  (void*)&PassDescTest,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_AllPasswordsArray[] = {&line_AllPasswordsMenu_0, &line_AllPasswordsMenu_1, &line_AllPasswordsMenu_2, &line_AllPasswordsMenu_3, &line_AllPasswordsMenu_4, NULL};
const TMenuPanel AllPasswordsMenuPanel[] = {arr_AllPasswordsArray, NULL, 5, MENU_PANEL_STANDARD};


#endif // #if defined(BOARD_SOLARIUM_VLAD)


#if defined(CONFIG_RELAY_ENABLE)
/***********************************
  МЕНЮ НАСТРОЙКА РЕЛЕ
***********************************/
const TMenuLine line_RelaySettingsMenu_0 = {
  MENU_LINE_SHOW_DESC,                 // тип пункта меню
  MENU_FIXED_LINE|MENU_INDEX_LINE,                // доп. флаги  
  (void*)&RelayIndexDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_RelaySettingsMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&RelayEnableDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_RelaySettingsMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&RelayIpAddrDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_RelaySettingsMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&RelayChannelDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_RelaySettingsMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&RelayOpenTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_RelaySettingsMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&RelayCommandDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLineArray arr_RelaySettingsArray[] = {&line_RelaySettingsMenu_0, &line_RelaySettingsMenu_1, &line_RelaySettingsMenu_2, &line_RelaySettingsMenu_3, &line_RelaySettingsMenu_4, &line_RelaySettingsMenu_5, NULL};
const TMenuPanel RelaySettingsPanel[] = {arr_RelaySettingsArray, NULL, 6, MENU_PANEL_STANDARD};
    
#endif // #if defined(CONFIG_RELAY_ENABLE)


#ifdef CONFIG_FTP_CLIENT_ENABLE

/***********************************
  МЕНЮ НАСТРОЙКА FTP-КЛИЕНТА 
***********************************/
const char str_FtpSettings_0[] = " НАСТРОйКА FTP";

const TMenuLine line_FtpSettingsMenu_0 = {
  MENU_LINE_STRING,                 // тип пункта меню
  MENU_FIXED_LINE,                // доп. флаги  
  (void*)&str_FtpSettings_0,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_1 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpEnableDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_2 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpServerIpAddrDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_3 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpServerLoginDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_4 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpServerPassDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_5 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpDeviceNumberDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_6 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpSendHourMinDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_7 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpSendIntervalDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_8 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpLastSendTimeDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_9 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpLastSendResultDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};

const TMenuLine line_FtpSettingsMenu_10 = {
  MENU_LINE_SHOW_DESC,               // тип пункта меню
  0,                              // доп. флаги  
  (void*)&FtpSendNowCmdDesc,       // указатель на текстовую строку или дескриптор
  NULL                            // панель для перехода
};


const TMenuLineArray arr_FtpSettingsArray[] = {&line_FtpSettingsMenu_0, &line_FtpSettingsMenu_1, &line_FtpSettingsMenu_2, &line_FtpSettingsMenu_3, &line_FtpSettingsMenu_4, &line_FtpSettingsMenu_5, &line_FtpSettingsMenu_6, &line_FtpSettingsMenu_7, &line_FtpSettingsMenu_8, &line_FtpSettingsMenu_9, &line_FtpSettingsMenu_10, NULL};
const TMenuPanel FtpSettingsMenuPanel[] = {arr_FtpSettingsArray, NULL, 11, MENU_PANEL_STANDARD};
    

#endif

/***********************************
  ПАНЕЛЬ "ОТПРАВКА FTP"
***********************************/
const CPU_INT08U str_FtpInProgress_0[] = "";
const CPU_INT08U str_FtpInProgress_1[] = "  ОТПРАВКА ДАННЫХ";
const CPU_INT08U str_FtpInProgress_2[] = "    НА СЕРВЕР...";
const CPU_INT08U str_FtpInProgress_3[] = "";

const TMenuLine line_FtpInProgress_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpInProgress_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpInProgress_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpInProgress_1,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpInProgress_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpInProgress_2,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpInProgress_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpInProgress_3,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLineArray FtpInProgressMenuArray[] = {&line_FtpInProgress_0, &line_FtpInProgress_1, &line_FtpInProgress_2, &line_FtpInProgress_3, NULL};
const TMenuPanel FtpUploadInProgressMenu[] = {FtpInProgressMenuArray, NULL, 4, MENU_PANEL_STATIC};

/***********************************
  ПАНЕЛЬ "ОТПРАВКА УСПЕШНА, ОЧИСТКА ВЫПОЛНЕНА"
***********************************/
const CPU_INT08U str_FtpOK_0[] = "";
const CPU_INT08U str_FtpOK_1[] = "  ОТПРАВКА УСПЕШНА";
const CPU_INT08U str_FtpOK_2[] = " ОЧИСТКА ВЫПОЛНЕНА";
const CPU_INT08U str_FtpOK_3[] = "";

const TMenuLine line_FtpOK_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpOK_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpOK_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpOK_1,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpOK_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpOK_2,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpOK_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpOK_3,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLineArray FtpOKMenuArray[] = {&line_FtpOK_0, &line_FtpOK_1, &line_FtpOK_2, &line_FtpOK_3, NULL};
const TMenuPanel FtpOKMenu[] = {FtpOKMenuArray, NULL, 4, MENU_PANEL_STATIC};

/***********************************
  ПАНЕЛЬ "ОШИБКА ОТПРАВКИ, ОЧИСТКА ОТМЕНЕНА"
***********************************/
const CPU_INT08U str_FtpFAIL_0[] = "";
const CPU_INT08U str_FtpFAIL_1[] = "  ОШИБКА ОТПРАВКИ";
const CPU_INT08U str_FtpFAIL_2[] = " ОЧИСТКА ОТМЕНЕНА";
const CPU_INT08U str_FtpFAIL_3[] = "";

const TMenuLine line_FtpFAIL_0 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpFAIL_0,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpFAIL_1 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpFAIL_1,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpFAIL_2 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpFAIL_2,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLine line_FtpFAIL_3 = {
  MENU_LINE_STRING,               // тип пункта меню
  0,                // доп. флаги  
  (void*)str_FtpFAIL_3,        // указатель на текстовую строку или дескриптор
  NULL                           // панель для перехода
};

const TMenuLineArray FtpFAILMenuArray[] = {&line_FtpFAIL_0, &line_FtpFAIL_1, &line_FtpFAIL_2, &line_FtpFAIL_3, NULL};
const TMenuPanel FtpFAILMenu[] = {FtpFAILMenuArray, NULL, 4, MENU_PANEL_STATIC};

