
// Definice pro screeny

 var trend_Type = 0;
 var post_Pos = 0;
 var setup_Screen = 0;
 var setup_Type = 0;
 var setup_Cursor = 0;
 var setup_Pass = 0;
 var setup_PassMul = 0;
 var setup_PassNum = 0;
 var setup_Lim1, setup_Lim2, setup_T1, setup_T2;
 var setup_Func = 0;
 var setup_Par = 0;
 var setup_Range = 0;
 var setup_HiPass = 0;
 var setup_Detect = 5;
 var setup_Overrun = 123;
 var setup_L1bc = 0;
 var setup_L2bc = 0;
 var setup_L1temp = 121;
 var setup_L2temp = 121;
 var setup_ResetTrends = false;
 var setup_ResetBC = false;
 var setup_Save = false;
 var setup_Sens = 1;
 var setup_Trim = 0.94;
 var setup_units = 1;
 var setup_CAN = 2;
 var setup_ID = 1;
 var setup_TempComp = 0;
 var setup_PassChange = 0;

 var chAvef = 0;
 var chBvef = 0;

 var RangesM = ["  10","  20","  40","  50"," 100"," 200"];
 var RangesI = [" 0.5"," 1.0"," 2.0"," 2.5"," 5.0","10.0"];

 var HiPasses = ["  3"," 10"];
 var Sens = [" OFF"," 100"];

 var CAN = [" 100"," 125"," 250"," 500","1000"];


// *****************************************************************************
// *  Univerzalni obrazovky                                                    *
// *****************************************************************************

 function screen_SelectChannel()
 {
   lcd_Write(0,0," SELECT CHANNEL ");
   lcd_Write(0,1,"   <A>    <B>   ");
   screen_Change = false;
 }

 function main_ChSelectControl()
 {
   if (screen_Change)
   {
      screen_SelectChannel();
      screen_Channel = 0;
      lcd_BlinkOn(4,1,"A");
   }
   switch (keypress)
   {
     case 1:
     case 2:
     {
       screen_Channel++;
       if (screen_Channel == 2) screen_Channel = 0;
       switch (screen_Channel)
       {
         case 0:
         {
           lcd_BlinkX = 4; lcd_BlinkCh = "A"; lcd_Write(11,1,"B");
           lcd_BlinkUpdate(); break;
         }
         case 1:
         {
           lcd_BlinkX = 11; lcd_BlinkCh = "B"; lcd_Write(4,1,"A");
           lcd_BlinkUpdate(); break;
         }
       }
       break;
     }
     case 3:
     {
       lcd_BlinkOff(); screen_L1 = screen_Temp1; screen_Change = true; break;
     }
     case 4:
     {
       lcd_BlinkOff(); screen_L1 = screen_Temp2; screen_Change = true; break;
     }
   }
 }

 function screen_Password()
 {
   lcd_Write(0,0," ENTER PASSWORD ");
   lcd_Write(0,1,"      "+ascii.charAt(27)+ascii.charAt(27)+ascii.charAt(27)+
                 ascii.charAt(27)+"      ");
   lcd_Write(6+setup_PassMul,1,String(setup_PassNum));
   screen_Change = false;
 }

 function main_PasswordControl()
 {
   if (screen_Change)
   {
      screen_Password();
      screen_Pass = 0;
      screen_PassMul = 0;
      screen_PassNum = 0;
   }
   switch (keypress)
   {
     case 1:
     {
       setup_PassNum++;
       if (setup_PassNum == 10) setup_PassNum = 0;
       screen_Password();
       break;
     }
     case 2:
     {
       setup_PassNum--;
       if (setup_PassNum == -1) setup_PassNum = 9;
       screen_Password();
       break;
     }
     case 3:
     {
       screen_L1 = screen_Temp1; screen_Change = true; break;
     }
     case 4:
     {
       if (setup_PassMul != 3)
       {
         setup_Pass = (setup_Pass + setup_PassNum) * 10;
         setup_PassNum = 0;
         setup_PassMul++;
         screen_Password();
       }
       else
       {
         setup_Pass = setup_Pass + setup_PassNum;
         screen_L1 = screen_Temp2; screen_Change = true; break;
       }
     }
   }
 }

 function screen_WaitPlease()
 {
   lcd_Write(0,0,"Wait please...  ");
   lcd_Write(0,1,"                ");
   screen_Change = false;
 }

 function main_WaitControl()
 {
   if (screen_Change)
   {
     screen_WaitPlease();
     screen_Wait = 0;
     screen_WaitBar = 0;
   }
   screen_Wait++;
   if (screen_Wait == 3)
   {
      lcd_Write(screen_WaitBar,1,"_");
      if (screen_WaitBar == 15)
      {
        screen_L1 = screen_Temp3;
        screen_Change = true;
      }
      screen_Wait = 0;
      screen_WaitBar++;
   }
 }

 function screen_SaveSettings()
 {
   lcd_Write(0,0," SAVE SETTINGS? ");
   if (setup_Save) lcd_Write(0,1,"      <Yes>      ");
   else lcd_Write(0,1,"      <No>      ");
   screen_Change = false;
 }

 function main_SaveSettControl()
 {
   if (screen_Change)
   {
      screen_SaveSettings();
      setup_Save = false;
      lcd_BlinkOn(7,1,"N");
   }
   switch (keypress)
   {
     case 1:
     case 2:
     {
       setup_Save = ~setup_Save;
       if (!setup_Save)
       {
         lcd_BlinkX = 7; lcd_BlinkCh = "N"; lcd_Write(7,1,"Y");
         lcd_BlinkUpdate(); 
       }
       else
       {
         lcd_BlinkX = 7; lcd_BlinkCh = "Y"; lcd_Write(7,1,"N");
         lcd_BlinkUpdate();
       }
       screen_SaveSettings();
       break;
     }
     case 4:
     {
       lcd_BlinkOff(); screen_L1 = screen_Temp2; screen_Change = true;
       screen_TempM = 0;
       if (setup_Save)
       {
          screen_L1 = 1;
          init();
       }
       else
       {
          screen_TempM = 1;
       }
       break;
     }
   }
 }

// *****************************************************************************
// *  Zakladni obrazovky                                                       *
// *****************************************************************************

 function screen_Init()
 {
   lcd_Write(0,0,"   B"+ascii.charAt(28)+"K Vibro    ");
   lcd_Write(0,1,"VC-1500 ver.1.00");
   screen_Change = false;
 }

 function screen_Main1()
 {
   if (setup_units == 1) lcd_Write(0,0,"A     mm/s   %L2");
   else lcd_Write(0,0,"A     in/s   %L2");
   s = GetUnitValue(chAvef);
   lcd_Write(6-s.length,0,s);
   var x;
   x = (chAvef / 3)*100;
   if (x > 100) x = 100;
   s = String(x.toFixed(0));
   lcd_Write(13-s.length,0,s);
   if (setup_units == 1) lcd_Write(0,1,"B     mm/s   %L2");
   else lcd_Write(0,1,"B     in/s   %L2");
   s = GetUnitValue(chBvef);
   lcd_Write(6-s.length,1,s);
   x = (chBvef / 3.5)*100;
   if (x > 100) x = 100;
   s = String(x.toFixed(0));
   lcd_Write(13-s.length,1,s);
   screen_Change = false;
 }

 function screen_Main2A()
 {
   if (setup_units == 1) lcd_Write(0,0,"A     mm/s      ");
   else lcd_Write(0,0,"A     in/s      ");
   s = GetUnitValue(chAvef);
   lcd_Write(6-s.length,0,s);
   var x,i;
   x = (chAvef / 3) * 15;
   s="";
   for (i=0; i<x; i++) s=s+ascii.charAt(42);
   for (i=x; i<16; i++) s=s+" ";
   lcd_Write(0,1,s);
   lcd_Write(7,1,ascii.charAt(38));
   lcd_Write(14,1,ascii.charAt(39));
   screen_Change = false;
 }

 function screen_Main2B()
 {
   if (setup_units == 1) lcd_Write(0,0,"B     mm/s      ");
   else lcd_Write(0,0,"B     in/s      ");
   s = GetUnitValue(chBvef);
   lcd_Write(6-s.length,0,s);
   var x,i;
   x = (chBvef / 3) * 15;
   s="";
   for (i=0; i<x; i++) s=s+ascii.charAt(42);
   for (i=x; i<16; i++) s=s+" ";
   lcd_Write(0,1,s);
   lcd_Write(7,1,ascii.charAt(38));
   lcd_Write(14,1,ascii.charAt(39));
   screen_Change = false;
 }

 function screen_Main3()
 {
   if (setup_units == 1)
   {
     lcd_Write(0,0,"TEMP["+ascii.charAt(223)+"C] I:  31 ");
     lcd_Write(0,1," A:  26  B:  28 ");
   }
   else
   {
     lcd_Write(0,0,"TEMP["+ascii.charAt(223)+"F] I:  88 ");
     lcd_Write(0,1," A:  79  B:  82 ");
   }
   screen_Change = false;
 }
 
 function screen_Main4()
 {
   switch(currSpeed_delay)
   {
      case 0:
      {
         lcd_Write(0,0,"Limits L1, L2   ");
         lcd_Write(0,1,"not exceeded    ");
         break;
      }
      case 1:
      {
         lcd_Write(0,0,"L1v in channel A");
         lcd_Write(0,1,"exceeded        ");
         break;
      }
      case 2:
      {
         lcd_Write(0,0,"L2v in channel A");
         lcd_Write(0,1,"exceeded        ");
         break;
      }
   }
   screen_Change = false;
 }

 function main_MainControl()
 {
   switch (keypress)
   {
     case 1:
     {
       screen_L1++;
       if (screen_L1 == 6) screen_L1 = 1;
       screen_Change = true;
       break;
     }
     case 2:
     {
       screen_L1--;
       if (screen_L1 == 0) screen_L1 = 5;
       screen_Change = true;
       break;
     }
     case 4:
     {
       screen_TempM = screen_L1;
       screen_L1 = 4;
       screen_Change = true;
       return;
     }
   }
   switch (screen_L1)
   {
      case 1:
      {
        if (screen_Change) screen_Main1();
        break;
      }
// Zakladni obrazovka s rychlostmi
      case 2:
      {
        if (screen_Change) screen_Main2A();
        break;
      }
// Obrazovka s bargrafem
      case 3:
      {
        if (screen_Change) screen_Main2B();
        break;
      }
// Obrazovka s teplotami
      case 4:
      {
        if (screen_Change) screen_Main3();
        break;
      }
// Obrazovka s prekrocenim limit
      case 5:
      {
        if (screen_Change) screen_Main4();
        break;
      }
   }
 }

// *****************************************************************************
// *  Zakladni menu                                                            *
// *****************************************************************************

 function screen_Menu1() {
   //
   lcd_Write(0,0," Bearing       "+ascii.charAt(16));
   lcd_Write(0,1," Condition     "+ascii.charAt(17));
   screen_Change = false;
 }

 function screen_Menu2()
 { 
   lcd_Write(0,0," Channel       "+ascii.charAt(16));
   lcd_Write(0,1," Setup         "+ascii.charAt(17));
   screen_Change = false;
 }

 function screen_Menu3()
 { 
   lcd_Write(0,0," Postmortem    "+ascii.charAt(16));
   lcd_Write(0,1," data          "+ascii.charAt(17));
   screen_Change = false;
 }

 function screen_Menu4()
 {
   lcd_Write(0,0," Frequency     "+ascii.charAt(16));
   lcd_Write(0,1," Analysis      "+ascii.charAt(17));
   screen_Change = false;
 }

 function screen_Menu5()
 {
   lcd_Write(0,0," Temperature   "+ascii.charAt(16));
   lcd_Write(0,1," Trend         "+ascii.charAt(17));
   screen_Change = false;
 }

 function screen_Menu6()
 { 
   lcd_Write(0,0," Bearing Cond. "+ascii.charAt(16));
   lcd_Write(0,1," Trend         "+ascii.charAt(17));
   screen_Change = false;
 }

 function screen_Menu7()
 { 
   lcd_Write(0,0," Vibration     "+ascii.charAt(16));
   lcd_Write(0,1," Trend         "+ascii.charAt(17));
   screen_Change = false;

}

function screen_Menu8() 
{
    lcd_Write(0, 0, " Device        " + ascii.charAt(16));
    lcd_Write(0, 1, " Setup         " + ascii.charAt(17));
    screen_Change = false;
}

 function main_MenuControl()
 {
   switch (keypress)
   {
     case 1:
     {
       screen_L1--;
       if (screen_L1 == 3) screen_L1 = 21;
       if (screen_L1 == 19) screen_L1 = 9;
       screen_Change = true;
       break;
     }
     case 2:
     {
       screen_L1++;
       if (screen_L1 == 10) screen_L1 = 20;
       if (screen_L1 == 22) screen_L1 = 4;
       screen_Change = true;
       break;
     }

     case 3:
     {
       screen_L1 = screen_TempM;
       screen_TempM = 0;
       screen_Change = true;
       return;
     }
   }
   switch (screen_L1)
   {
// Menu - Bearing value
      case 4:
      {
        if (screen_Change) screen_Menu1();
        if (keypress == 4)
        {
           screen_L1 = 100; screen_Temp1 = 4; screen_Temp2 = 200;
           //screen_Temp3 = 15; screen_Change = true; break;
           screen_Temp3 = 10; screen_Change = true; break;
        }
        break;
    }
// Menu - Device setup
    case 5:
    {
        if (screen_Change) screen_Menu8();
        if (keypress == 4) {
            //screen_L1 = 100; screen_Temp1 = 5; screen_Temp2 = 200;
            //screen_Temp3 = 10; screen_Change = true; break;
            screen_L1 = 15; screen_Temp1 = 5; screen_Temp2 = 15;
            screen_Temp3 = 15; screen_Change = true;
            setup_Par = 0;
            setup_Func = 0;
            setup_units_temp = setup_units;
            lcd_BlinkOn(0, 0, "C");
        }
        break;
    }
// Menu - Channel setup
      case 6:
      {
        if (screen_Change) screen_Menu2();
        if (keypress == 4)
        {
          //screen_L1 = 100; screen_Temp1 = 6; screen_Temp2 = 12;
            //screen_Temp3 = 12; screen_Change = true; break;
            screen_L1 = 100; screen_Temp1 = 6; screen_Temp2 = 17;
            screen_Temp3 = 17; screen_Change = true; break;
        }
        break;
      }
// Menu - Postmortem
      case 7:
      {
        if (screen_Change) screen_Menu3();
        if (keypress == 4)
        {
          //screen_L1 = 100; screen_Temp1 = 7; screen_Temp2 = 12;
            //screen_Temp3 = 12; screen_Change = true; break;
            screen_L1 = 100; screen_Temp1 = 7; screen_Temp2 = 13;
            screen_Temp3 = 13; screen_Change = true; break;
        }
        break;
      }
// Menu - Frequency analysis
      case 8:
      { 
        if (screen_Change) screen_Menu4();
        if (keypress == 4) {
          screen_L1 = 100; screen_Temp1 = 8; screen_Temp2 = 200;
          screen_Temp3 = 11; screen_Change = true; break;
        }
        break;
      }
// Menu - Temperature trend
      case 9:
      {
        if (screen_Change) screen_Menu5();
        if (keypress == 4)
        {
          //screen_L1 = 100; screen_Temp1 = 9; screen_Temp2 = 13;
            //screen_Temp3 = 13; screen_Change = true; break;
            screen_L1 = 100; screen_Temp1 = 9; screen_Temp2 = 16;
            screen_Temp3 = 16; screen_Change = true; break;
        }
        break;
      }
// Menu - Bearing value trend
      case 20:
      {
        if (screen_Change) screen_Menu6();
        if (keypress == 4)
        {
          screen_L1 = 100; screen_Temp1 = 20; screen_Temp2 = 14;
          screen_Temp3 = 14; screen_Change = true; break;
        }
        break;
      }
// Menu - Vibration trend
      case 21:
      {
        if (screen_Change) screen_Menu7();
        if (keypress == 4)
        {
//          screen_L1 = 15; screen_Temp1 = 21; screen_Temp2 = 15;
//          screen_Temp3 = 15; screen_Change = true;
//          setup_Par = 0;
//          setup_Func = 0;
//          setup_units_temp = setup_units;
            //          lcd_BlinkOn(0,0,"C");
            screen_L1 = 100; screen_Temp1 = 21; screen_Temp2 = 12;
            screen_Temp3 = 12; screen_Change = true; break;
          break;
        }
        break;
    }
   }
 }

// *****************************************************************************
// *  Mnv g                                                                    *
// *****************************************************************************

 function screen_Mnvg()
 {
   if (screen_Channel == 0)
   {
     lcd_Write(0,0,"A:      Avg: 8.2");
     lcd_Write(0,1,"BC:1.61 Ref: 5.1");
   }
   else
   {
     lcd_Write(0,0,"B:      Avg: 7.6");
     lcd_Write(0,1,"BC:1.31 Ref: 5.8");
   }
   screen_Change = false;
 }

 function screen_MnvgSpectrum()
 {
   if (screen_Channel == 0)
   {
     lcd_Write(0,0,"a: 3.0  1.1  0.2");
     lcd_Write(0,1,"F: 500 1500 3000");
   }
   else
   {
     lcd_Write(0,0,"a: 1.1  0.5  0.1");
     lcd_Write(0,1,"F: 500 1500 3000");
   }
   screen_Change = false;
 }

 function main_MnvgControl()
 {
   if (screen_Change) screen_Mnvg();
   if (keydown == 4) screen_MnvgSpectrum();
   switch (keypress)
   {
     case 4:
     {
       screen_Mnvg(); break;
     }
     case 3:
     {
       screen_L1 = 100; screen_Change = true; break;
     }
   }
 }

// *****************************************************************************
// *  Trend / prediction                                                       *
// *****************************************************************************

 function screen_Trend()
 {
   if (screen_Channel == 0)
   {
      switch (trend_Type)
      {
        case 0:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(23)+ascii.charAt(23)+ascii.charAt(23)+
                    ascii.charAt(23)+ascii.charAt(23)+ascii.charAt(24)+
                    ascii.charAt(25)+ascii.charAt(26)+ascii.charAt(26)+
                    ascii.charAt(26));
          s = String(chAvef.toFixed(1));
          s = "2.4";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"<        10x8 hr");
          if (chAvef > 0) s = String((chAvef-0.2).toFixed(1));
          else s = "2.4";
          s = "1.3";
          lcd_Write(5-s.length,1,s);
          break;
        }
        case 1:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(21)+
                    ascii.charAt(21)+ascii.charAt(22)+ascii.charAt(23)+
                    ascii.charAt(26));
          s = String(chAvef.toFixed(1));
          s = "2.4";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"< 0.5   10x24 hr");
          break;
        }
        case 2:
        {
          lcd_Write(0,0,"    >   "+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(21)+
                    ascii.charAt(21)+ascii.charAt(22)+ascii.charAt(23)+
                    ascii.charAt(26));
          s = String(chAvef.toFixed(1));
          s = "2.4";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"< 0.0  10x30 day");
          break;
        }
      }
   }
   else
   {
      switch (trend_Type)
      {
        case 0:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(23)+ascii.charAt(23)+ascii.charAt(23)+
                    ascii.charAt(23)+ascii.charAt(23)+ascii.charAt(24)+
                    ascii.charAt(25)+ascii.charAt(26)+ascii.charAt(26)+
                    ascii.charAt(26));
          s = String(chBvef.toFixed(1));
          s = "2.6";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"<        10x8 hr ");
          if (chAvef > 0) s = String((chBvef-0.2).toFixed(1));
          else s = "0.0";
          s = "1.0";
          lcd_Write(5-s.length,1,s);
          break;
        }
        case 1:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(21)+
                    ascii.charAt(21)+ascii.charAt(22)+ascii.charAt(23)+
                    ascii.charAt(26));
          s = String(chBvef.toFixed(1));
          s = "2.6";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"< 0.8   10x24 hr ");
          break;
        }
        case 2:
        {
          lcd_Write(0,0,"    >   "+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(21)+
                    ascii.charAt(21)+ascii.charAt(22)+ascii.charAt(23)+
                    ascii.charAt(26));
          s = String(chBvef.toFixed(1));
          s = "2.6";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"< 0.0  10x30 day");
          break;
        }
      }
   }
   screen_Change = false;
 }

 function screen_Prediction()
 {
   switch (trend_Type)
   {
     case 0:
     {
       lcd_Write(0,0,"To L2:   40 h   ");
       lcd_Write(0,1,"Guarantee: HIGH ");
       break;
     }
     case 1:
     {
       lcd_Write(0,0,"To L2:  100 h   ");
       lcd_Write(0,1,"Guarantee: HIGH ");
       break;
     }
     case 2:
     {
       lcd_Write(0,0,"To L2:    N/A   ");
       lcd_Write(0,1,"Guarantee: N/A  ");
       break;
     }
   }
 }

 function main_TrendControl()
 {
   if (screen_Change)
   {
     trend_Type = 0;
     screen_Trend();
   }
   if (keydown == 4) screen_Prediction();
   switch (keypress)
   {
     case 1:
     {
       trend_Type++;
       if (trend_Type == 3) trend_Type = 0;
       screen_Trend();
       break;
     }
     case 2:
     {
       trend_Type--;
       if (trend_Type == -1) trend_Type = 2;
       screen_Trend();
       break;
     }
     case 3:
     {
       screen_L1 = 100; screen_Change = true; break;
     }
     case 4:
     {
       screen_TempTrend(); break;
     }
   }
 }

// *****************************************************************************
// *  BV Trend                                                       *
// *****************************************************************************

 function screen_BVTrend()
 {
   if (screen_Channel == 0)
   {
      switch (trend_Type)
      {
        case 0:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(21)+ascii.charAt(21)+
                    ascii.charAt(22)+ascii.charAt(22)+ascii.charAt(23)+
                    ascii.charAt(23));
          s = String(chAvef.toFixed(1));
          s = "4.2";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"<        10x8 hr ");
          if (chAvef > 0) s = String((chAvef-0.2).toFixed(1));
          else s = "2.4";
          s = "0.5";
          lcd_Write(5-s.length,1,s);
          break;
        }
        case 1:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20));
          s = String(chAvef.toFixed(1));
          s = "0.5";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"< 0.4   10x24 hr ");
          break;
        }
        case 2:
        {
          lcd_Write(0,0,"    >   "+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20));
          s = String(chAvef.toFixed(1));
          s = "0.4";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"< 0.0  10x30 day");
          break;
        }
      }
   }
   else
   {
      switch (trend_Type)
      {
        case 0:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(21)+ascii.charAt(21)+
                    ascii.charAt(22)+ascii.charAt(22)+ascii.charAt(23)+
                    ascii.charAt(23));
          s = String(chAvef.toFixed(1));
          s = "4.2";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"<        10x8 hr ");
          if (chAvef > 0) s = String((chAvef-0.2).toFixed(1));
          else s = "2.4";
          s = "0.5";
          lcd_Write(5-s.length,1,s);
          break;
        }
        case 1:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20));
          s = String(chAvef.toFixed(1));
          s = "0.5";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"< 0.4   10x24 hr ");
          break;
        }
        case 2:
        {
          lcd_Write(0,0,"    >   "+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20));
          s = String(chAvef.toFixed(1));
          s = "0.4";
          lcd_Write(4-s.length,0,s);
          lcd_Write(0,1,"< 0.0  10x30 day");
          break;
        }
      }
   }
   screen_Change = false;
 }

 function main_BVTrendControl()
 {
   if (screen_Change)
   {
     trend_Type = 0;
     screen_BVTrend();
   }
   switch (keypress)
   {
     case 1:
     {
       trend_Type++;
       if (trend_Type == 3) trend_Type = 0;
       screen_BVTrend();
       break;
     }
     case 2:
     {
       trend_Type--;
       if (trend_Type == -1) trend_Type = 2;
       screen_BVTrend();
       break;
     }
     case 3:
     {
       screen_L1 = 100; screen_Change = true; break;
     }
     case 4:
     {
       screen_Trend(); break;
     }
   }
 }

// *****************************************************************************
// *  Temperature Trend                                                       *
// *****************************************************************************

 function screen_TempTrend()
 {
   if (screen_Channel == 0)
   {
      switch (trend_Type)
      {
        case 0:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(21)+ascii.charAt(21)+
                    ascii.charAt(22)+ascii.charAt(22)+ascii.charAt(23)+
                    ascii.charAt(23));
          s = String(chAvef.toFixed(1));
          s = "80";
          lcd_Write(3-s.length,0,s);
          lcd_Write(0,1,"<        10x8 hr ");
          if (chAvef > 0) s = String((chAvef-0.2).toFixed(1));
          else s = "2.4";
          s = "37";
          lcd_Write(4-s.length,1,s);
          break;
        }
        case 1:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20));
          s = String(chAvef.toFixed(1));
          s = "37";
          lcd_Write(3-s.length,0,s);
          lcd_Write(0,1,"< 35   10x24 hr ");
          break;
        }
        case 2:
        {
          lcd_Write(0,0,"    >   "+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20));
          s = String(chAvef.toFixed(1));
          s = "35";
          lcd_Write(3-s.length,0,s);
          lcd_Write(0,1,"< 0    10x30 day");
          break;
        }
      }
   }
   else
   {
      switch (trend_Type)
      {
        case 0:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(21)+ascii.charAt(21)+
                    ascii.charAt(22)+ascii.charAt(22)+ascii.charAt(23)+
                    ascii.charAt(23));
          s = String(chAvef.toFixed(1));
          s = "80";
          lcd_Write(3-s.length,0,s);
          lcd_Write(0,1,"<        10x8 hr ");
          if (chAvef > 0) s = String((chAvef-0.2).toFixed(1));
          else s = "2.4";
          s = "37";
          lcd_Write(4-s.length,1,s);
          break;
        }
        case 1:
        {
          lcd_Write(0,0,"    > "+ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20));
          s = String(chAvef.toFixed(1));
          s = "37";
          lcd_Write(3-s.length,0,s);
          lcd_Write(0,1,"< 35   10x24 hr ");
          break;
        }
        case 2:
        {
          lcd_Write(0,0,"    >   "+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20)+ascii.charAt(20)+ascii.charAt(20)+
                    ascii.charAt(20));
          s = String(chAvef.toFixed(1));
          s = "35";
          lcd_Write(3-s.length,0,s);
          lcd_Write(0,1,"< 0    10x30 day");
          break;
        }
      }
   }
   screen_Change = false;
 }

 function main_TempTrendControl()
 {
   if (screen_Change)
   {
     trend_Type = 0;
     screen_TempTrend();
   }
   switch (keypress)
   {
     case 1:
     {
       trend_Type++;
       if (trend_Type == 3) trend_Type = 0;
       screen_TempTrend();
       break;
     }
     case 2:
     {
       trend_Type--;
       if (trend_Type == -1) trend_Type = 2;
       screen_TempTrend();
       break;
     }
     case 3:
     {
       screen_L1 = 100; screen_Change = true; break;
     }
     case 4:
     {
       screen_TempTrend(); break;
     }
   }
 }
 
// *****************************************************************************
// *  Frequency analysis                                                       *
// *****************************************************************************

 function screen_FreqAn()
 {
   if (screen_Channel == 0)
   {
     lcd_Write(0,0,"V: 3.0  1.1  0.2");
     lcd_Write(0,1,"F:24.9 50.0 75.0");
   }
   else
   {
     lcd_Write(0,0,"V: 1.1  0.5  0.1");
     lcd_Write(0,1,"F:25.0 50.1 74.9");
   }
   screen_Change = false;
 }

 function main_FreqAnControl()
 {
   if (screen_Change) screen_FreqAn();
   switch (keypress)
   {
     case 3:
     {
       screen_L1 = 100; screen_Change = true; break;
     }
   }
 }

// *****************************************************************************
// *  Postmortem dump                                                          *
// *****************************************************************************

 function screen_Postmort()
 {
   if (screen_Channel == 0)
   {
     var s;
     s = GetUnitValue(chAvef);
     lcd_Write(0,0,"                ");
     lcd_Write(0,1,"-1s          +1s");
     lcd_Write(4-s.length,0,s);
     lcd_Write(10-s.length,0,s);
     lcd_Write(16-s.length,0,s);
     s = String(post_Pos);
     if (post_Pos > 0) s = "+"+s;
     lcd_Write(10-s.length,1,s);
   }
   else
   {
     s = GetUnitValue(chBvef);
     lcd_Write(0,0,"                ");
     lcd_Write(0,1,"-1s          +1s");
     lcd_Write(4-s.length,0,s);
     lcd_Write(10-s.length,0,s);
     lcd_Write(16-s.length,0,s);
     s = String(post_Pos);
     if (post_Pos > 0) s = "+"+s;
     lcd_Write(10-s.length,1,s);
   }
   screen_Change = false;
 }

 function main_PostmortControl()
 {
   if (screen_Change)
   {
     post_Pos = 0;
     screen_Postmort();
   }
   switch (keydown)
   {
     case 1:
     {
       post_Pos++;
       if (post_Pos == 31) post_Pos = -994;
       screen_Postmort();
       break;
     }
     case 2:
     {
       post_Pos--;
       if (post_Pos == -995) post_Pos = 30;
       screen_Postmort();
       break;
     }
   }
   switch (keypress)
   {
     case 3:
     {
       screen_L1 = 100; screen_Change = true; break;
     }
   }
 }

// *****************************************************************************
// *  Channel setup                                                            *
// *****************************************************************************

 function screen_Setup()
 {
   switch (setup_Screen)
   {
     case 0:
     {
       lcd_Write(0,0,"  SELECT SETUP  ");
       lcd_Write(0,1,"<MONITOR><SENS.>");
       break;
     }
     case 1:
     {
       switch (setup_Par)
       {
         case 0:
         case 1:
         case 2:
         case 3:
         {
           lcd_Write(0,0,"L1 v:     T1:   ");
           lcd_Write(0,1,"L2 v:     T2:   ");
           s = GetUnitValue(setup_Lim1);
           lcd_Write(9-s.length,0,s);
           s = GetUnitValue(setup_Lim2);
           lcd_Write(9-s.length,1,s);
           s = GetUnitValue(setup_T1);
           if (setup_T1 == 10) s = String(setup_T1);
           lcd_Write(16-s.length,0,s);
           s = GetUnitValue(setup_T2);
           if (setup_T2 == 10) s = String(setup_T2);
           lcd_Write(16-s.length,1,s);
           break;
         }
         case 4:
         case 5:
         {
           if (setup_units == 1) lcd_Write(0,0,"Range:      mm/s");
           else lcd_Write(0,0,"Range:      in/s");
           lcd_Write(0,1,"Hi-pass:    Hz  ");
           if (setup_units == 1) lcd_Write(7,0,RangesM[setup_Range]);
           else lcd_Write(7,0,RangesI[setup_Range]);
           lcd_Write(8,1,HiPasses[setup_HiPass]);
           break;
         }
         case 6:
         case 7:
         {
           lcd_Write(0,0,"Machine on:    %");
           lcd_Write(0,1,"Trip mul:    xL2");
           s = String(setup_Detect.toFixed(0));
           lcd_Write(15-s.length,0,s);
           s = String((setup_Overrun/10).toFixed(1));
           lcd_Write(13-s.length,1,s);
           break;
         }
         case 8:
         case 9:
         {
           lcd_Write(0,0,"L1 BC:          ");
           lcd_Write(0,1,"L2 BC:          ");
           s = String((setup_L1bc/10).toFixed(1));
           if (setup_L1bc == 0) s = "OFF";
           lcd_Write(15-s.length,0,s);
           s = String((setup_L2bc/10).toFixed(1));
           if (setup_L2bc == 0) s = "OFF";
           lcd_Write(15-s.length,1,s);
           break;
         }
         case 10:
         case 11:
         {
           lcd_Write(0,0,"L1 temp:        ");
           lcd_Write(0,1,"L2 temp:        ");
           s = String(setup_L1temp);
           if (setup_L1temp == 121) s = "OFF";
           lcd_Write(15-s.length,0,s);
           s = String(setup_L2temp);
           if (setup_L2temp == 121) s = "OFF";
           lcd_Write(15-s.length,1,s);
           break;
         }
         case 12:
         {
           lcd_Write(0,0,"Reset b.c. ref.?");
           if (!setup_ResetBC) lcd_Write(0,1,"     <No>       ");
           else lcd_Write(0,1,"     <Yes>      ");
           break;
         }
         case 13:
         {
           lcd_Write(0,0," RESET TRENDS ? ");
           if (!setup_ResetTrends) lcd_Write(0,1,"     <No>       ");
           else lcd_Write(0,1,"     <Yes>      ");
           break;
         }
       }
       break;
     }
     case 2:
     {
       lcd_Write(0,0,"Trim.:          ");
       lcd_Write(0,1,"Sens.:      mV/g");
       s = String(setup_Trim.toFixed(2));
       lcd_Write(11-s.length,0,s);
       lcd_Write(7,1,Sens[setup_Sens]);
       break;
     }
   }
   screen_Change = false;
 }

 function setup_UpdateScreen()
 {
  if (setup_Screen == 1)
  {
   if (setup_Func == 0)
   {
     switch (setup_Par)
     {
       case 0:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "L";
         break;
       }
       case 1:
       {
         lcd_BlinkX = 10; lcd_BlinkY = 0; lcd_BlinkCh = "T";
         break;
       }
       case 2:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "L";
         break;
       }
       case 3:
       {
         lcd_BlinkX = 10; lcd_BlinkY = 1; lcd_BlinkCh = "T";
         break;
       }
       case 4:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "R";
         break;
       }
       case 5:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "H";
         break;
       }
       case 6:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "M";
         break;
       }
       case 7:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "T";
         break;
       }
       case 8:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "L";
         break;
       }
       case 9:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "L";
         break;
       }
       case 10:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "L";
         break;
       }
       case 11:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "L";
         break;
       }
       case 12:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "R";
         break;
       }
       case 13:
       {
         lcd_BlinkX = 1; lcd_BlinkY = 0; lcd_BlinkCh = "R";
         break;
       }
/*       case 9:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "T";
         break;
       }
       case 10:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "S";
         break;
       }*/
     }
   }
   else
   {
     switch (setup_Par)
     {
       case 0:
       {
         lcd_BlinkX = 8; lcd_BlinkY = 0;
         s = GetUnitValue(setup_Lim1);
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 1:
       {
         lcd_BlinkX = 15; lcd_BlinkY = 0;
         s = GetUnitValue(setup_T1);
         if (setup_T1 == 10) s = String(setup_T1);
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 2:
       {
         lcd_BlinkX = 8; lcd_BlinkY = 1;
         s = GetUnitValue(setup_Lim2);
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 3:
       {
         lcd_BlinkX = 15; lcd_BlinkY = 1;
         s = GetUnitValue(setup_T2);
         if (setup_T2 == 10) s = String(setup_T2);
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 4:
       {
         lcd_BlinkX = 10; lcd_BlinkY = 0;
         if (setup_units == 1) s = RangesM[setup_Range];
         else s = RangesI[setup_Range];
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 5:
       {
         lcd_BlinkX = 10; lcd_BlinkY = 1;
         lcd_BlinkCh = "0";
         break;
       }
       case 6:
       {
         lcd_BlinkX = 14; lcd_BlinkY = 0;
         s = String(setup_Detect);
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 7:
       {
         lcd_BlinkX = 12; lcd_BlinkY = 1;
         s = String((setup_Overrun/10).toFixed(1));
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 8:
       {
         lcd_BlinkX = 14; lcd_BlinkY = 0;
         s = String((setup_L1bc/10).toFixed(1));
         lcd_BlinkCh = s.charAt(s.length - 1);
         if (setup_L1bc == 0) lcd_BlinkCh = "F";
         break;
       }
       case 9:
       {
         lcd_BlinkX = 14; lcd_BlinkY = 1;
         s = String((setup_L2bc/10).toFixed(1));
         lcd_BlinkCh = s.charAt(s.length - 1);
         if (setup_L2bc == 0) lcd_BlinkCh = "F";
         break;
       }
       case 10:
       {
         lcd_BlinkX = 14; lcd_BlinkY = 0;
         s = String(setup_L1temp);
         lcd_BlinkCh = s.charAt(s.length - 1);
         if (setup_L1temp == 121) lcd_BlinkCh = "F";
         break;
       }
       case 11:
       {
         lcd_BlinkX = 14; lcd_BlinkY = 1;
         s = String(setup_L2temp);
         lcd_BlinkCh = s.charAt(s.length - 1);
         if (setup_L2temp == 121) lcd_BlinkCh = "F";
         break;
       }

       case 12:
       {
         lcd_BlinkX = 6; lcd_BlinkY = 1;
         if (!setup_ResetBC) lcd_BlinkCh = "N";
         else lcd_BlinkCh = "Y";
         break;
       }
       case 13:
       {
         lcd_BlinkX = 6; lcd_BlinkY = 1;
         if (!setup_ResetTrends) lcd_BlinkCh = "N";
         else lcd_BlinkCh = "Y";
         break;
       }
/*       case 9:
       {
         lcd_BlinkX = 10; lcd_BlinkY = 0;
         s = String(setup_Trim.toFixed(2));
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 10:
       {
         lcd_BlinkX = 10; lcd_BlinkY = 1;
         lcd_BlinkCh = "0";
         break;
       }*/
     }
   }
  }
  else if (setup_Screen == 2)
  {
   if (setup_Func == 0)
   {
     switch (setup_Par)
     {
       case 1:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "T";
         break;
       }
       case 2:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "S";
         break;
       }
     }
   }
   else
   {
     switch (setup_Par)
     {
       case 1:
       {
         lcd_BlinkX = 10; lcd_BlinkY = 0;
         s = String(setup_Trim.toFixed(2));
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
       case 2:
       {
         lcd_BlinkX = 10; lcd_BlinkY = 1;
         s = Sens[setup_Sens];
         lcd_BlinkCh = s.charAt(s.length - 1);
         break;
       }
     }
   }
  }
  screen_Setup();
  lcd_BlinkUpdate();
 }

 function main_SetupControl()
 {
   switch (setup_Type)
   {
     case 0:
     {
       if (setup_Pass == 1500)
       {
         setup_Screen = 1;
         setup_Par = 0;
         setup_Func = 0;
         screen_Change = true;
         setup_Pass = 0;
         lcd_BlinkOn(0,0,"L");
         if (screen_Channel == 0)
         {
           setup_Lim1 = 1.9; setup_Lim2 = 3.0;
           setup_T1 = 5; setup_T2 = 1;
           setup_Detect = 5;
           setup_Overrun = 123;
           setup_L1bc = 0;
           setup_L2bc = 0;
           setup_L1temp = 121;
           setup_L2temp = 121;
           setup_ResetBC = 0;
         }
         else
         {
           setup_Lim1 = 1.8; setup_Lim2 = 4.5;
           setup_T1 = 4; setup_T2 = 1;
           setup_Detect = 5;
           setup_Overrun = 123;
           setup_L1bc = 0;
           setup_L2bc = 0;
           setup_L1temp = 121;
           setup_L2temp = 121;
           setup_ResetBC = 0;
         }
       }
       break;
     }
     case 1:
     {
       if (setup_Pass == 1500)
       {
         setup_Screen = 2;
         screen_Change = true;
         setup_Pass = 0;
         setup_Sens = 1;
         setup_Trim = 0.94;
         setup_Func = 0;
         setup_Par = 1;
         lcd_BlinkOn(0,0,"T");
       }
       break;
     }
   }
   if (screen_Change)
   {
     screen_Setup();
     switch (setup_Screen)
     {
       case 0:
       {
         lcd_BlinkOn(1,1,"M");
         setup_Type = 0;
         screen_Temp1 = 9;
         break;
       }
     }
   }
   switch (setup_Screen)
   {
// Vyber typu setupu
     case 0:
     {
       switch (keypress)
       {
         case 1:
         case 2:
         {
           if (setup_Type == 0)
           {
             setup_Type = 1; lcd_BlinkX = 10; lcd_BlinkCh = "S";
             lcd_Write(1,1,"M"); lcd_BlinkUpdate();
           }
           else
           {
             setup_Type = 0; lcd_BlinkX = 1; lcd_BlinkCh = "M";
             lcd_Write(10,1,"S"); lcd_BlinkUpdate();
           }
           break;
         }
         case 3:
         {
           lcd_BlinkOff();
           screen_L1 = 100; screen_Change = true; break;
           break;
         }
         case 4:
         {
           lcd_BlinkOff();
           setup_Pass = 0;
           setup_PassMul = 0;
           setup_PassNum = 0;
           screen_L1 = 300; screen_Temp1 = 17; screen_Temp2 = 17;
           screen_Temp3 = 17;
           setup_Screen = 0;
           screen_Change = true;
           break;
         }
       }
       break;
     }
// Custom setup
     case 1:
     {
       switch (keydown)
       {
// Sipka nahoru
         case 1:
         {
           if (setup_Func == 0)
           {
             setup_Par--;
             if (setup_Par == -1) setup_Par = 13;
             setup_UpdateScreen();
           }
           else
           {
             switch (setup_Par)
             {
               case 0:
               {
                 if (setup_Lim1 < RangesM[setup_Range]) setup_Lim1 = setup_Lim1 + RangesM[setup_Range]/100;
                 setup_UpdateScreen(); break;
               }
               case 1:
               {
                 if (setup_T1 < 10) setup_T1 = setup_T1 + 0.2;
                 setup_UpdateScreen(); break;
               }
               case 2:
               {
                 if (setup_Lim2 <= 9.9) setup_Lim2 = setup_Lim2 + 0.1;
                 setup_UpdateScreen(); break;
               }
               case 3:
               {
                 if (setup_T2 < 10) setup_T2 = setup_T2 + 0.2;
                 setup_UpdateScreen(); break;
               }
               case 4:
               {
                 if (setup_Range < 6) setup_Range++;
                 setup_UpdateScreen(); break;
               }
               case 5:
               {
                 if (setup_HiPass < 1) setup_HiPass++;
                 setup_UpdateScreen(); break;
               }
               case 6:
               {
                 if (setup_Detect < 50) setup_Detect++;
                 setup_UpdateScreen(); break;
               }
               case 7:
               {
                 if (setup_Overrun < 1000) setup_Overrun++;
                 setup_UpdateScreen(); break;
               }
               case 8:
               {
                 if (setup_L1bc < 1000) setup_L1bc++;
                 setup_UpdateScreen(); break;
               }
               case 9:
               {
                 if (setup_L2bc < 1000) setup_L2bc++;
                 setup_UpdateScreen(); break;
               }
               case 10:
               {
                 if (setup_L1temp < 121) setup_L1temp++;
                 setup_UpdateScreen(); break;
               }
               case 11:
               {
                 if (setup_L2temp < 121) setup_L2temp++;
                 setup_UpdateScreen(); break;
               }
               case 12:
               {
                 setup_ResetBC = ~setup_ResetBC;
                 setup_UpdateScreen(); break;
               }
               case 13:
               {
                 setup_ResetTrends = ~setup_ResetTrends;
                 setup_UpdateScreen(); break;
               }
             }
           }
           break;
         }
// Sipka dolu
         case 2:
         {
           if (setup_Func == 0)
           {
             setup_Par++;
             if (setup_Par == 14) setup_Par = 0;
             setup_UpdateScreen();
           }
           else
           {
             switch (setup_Par)
             {
               case 0:
               {
                 if (setup_Lim1 > 0) setup_Lim1 = setup_Lim1 - RangesM[setup_Range]/100;
                 setup_UpdateScreen(); break;
               }
               case 1:
               {
                 if (setup_T1 > 1) setup_T1 = setup_T1 - 0.2;
                 setup_UpdateScreen(); break;
               }
               case 2:
               {
                 if (setup_Lim2 > 0) setup_Lim2 = setup_Lim2 - 0.1;
                 setup_UpdateScreen(); break;
               }
               case 3:
               {
                 if (setup_T2 > 1) setup_T2 = setup_T2 - 0.2;
                 setup_UpdateScreen(); break;
               }
               case 4:
               {
                 if (setup_Range > 0 ) setup_Range--;
                 setup_UpdateScreen(); break;
               }
               case 5:
               {
                 if (setup_HiPass > 0) setup_HiPass--;
                 setup_UpdateScreen(); break;
               }
               case 6:
               {
                 if (setup_Detect > 1) setup_Detect--;
                 setup_UpdateScreen(); break;
               }
               case 7:
               {
                 if (setup_Overrun > 0) setup_Overrun--;
                 setup_UpdateScreen(); break;
               }
               case 8:
               {
                 if (setup_L1bc > 0) setup_L1bc--;
                 setup_UpdateScreen(); break;
               }
               case 9:
               {
                 if (setup_L2bc > 0) setup_L2bc--;
                 setup_UpdateScreen(); break;
               }
               case 10:
               {
                 if (setup_L1temp > 0) setup_L1temp--;
                 setup_UpdateScreen(); break;
               }
               case 11:
               {
                 if (setup_L2temp > 0) setup_L2temp--;
                 setup_UpdateScreen(); break;
               }
               case 12:
               {
                 setup_ResetBC = ~setup_ResetBC;
                 setup_UpdateScreen(); break;
               }
               case 13:
               {
                 setup_ResetTrends = ~setup_ResetTrends;
                 setup_UpdateScreen(); break;
               }
             }
           }
           break;
         }
// Esc
         case 3:
         {
           if (setup_Func == 0)
           {
//             screen_L1 = 400; screen_Temp1 = 17; screen_Temp2 = 17;
//             screen_Temp3 = 17;
             screen_L1 = 400; screen_Temp1 = 4; screen_Temp2 = 4;
             screen_Temp3 = 4;
             setup_Screen = 0;
             keydown = 0;
             lcd_BlinkOff();
             screen_Change = true;
           }
           else
           {
             switch (setup_Par)
             {
               case 0:
               {
                 if (screen_Channel) setup_Lim1 = 1.8;
                 else setup_Lim1 = 4.0; break;
               }
               case 1:
               {
                 if (screen_Channel) setup_T1 = 4;
                 else setup_T1 = 5; break;
               }
               case 2:
               {
                 if (screen_Channel) setup_Lim2 = 4.5;
                 else setup_Lim2 = 6.1; break;
               }
               case 3:
               {
                 setup_T2 = 1; break;
               }
               case 4:
               {
                 setup_Range = 0; break;
               }
               case 5:
               {
                 setup_HiPass = 0; break;
               }
               case 6:
               {
                 setup_Detect = 5; break;
               }
               case 7:
               {
                 setup_Overrun = 123; break;
               }
               case 8:
               {
                 setup_L1bc = 0; break;
               }
               case 9:
               {
                 setup_L2bc = 0; break;
               }
               case 10:
               {
                 setup_L1temp = 121; break;
               }
               case 11:
               {
                 setup_L2temp = 121; break;
               }
               case 12:
               {
                 setup_ResetTrends = 0; break;
               }
               case 13:
               {
                 setup_ResetBC = 0; break;
               }
             }
             setup_Func = 0;
             setup_UpdateScreen();
           }
           break;
         }
// Enter
         case 4:
         {
           keydown = 0;
           if (setup_Func == 0)
           {
             setup_Func = 1;
           }
           else setup_Func = 0;
           setup_UpdateScreen();
           break;
         }
       }
       break;
     }
// Special setup
     case 2:
     {
       switch (keydown)
       {
// Sipka nahoru
         case 1:
         {
           if (setup_Func == 0)
           {
             setup_Par++;
             if (setup_Par == 3) setup_Par = 1;
             setup_UpdateScreen();
           }
           else
           {
             switch (setup_Par)
             {
               case 1:
               {
                 if (setup_Trim <= 1.99) setup_Trim = setup_Trim + 0.01;
                 setup_UpdateScreen(); break;
               }
               case 2:
               {
                 if (setup_Sens < 1) setup_Sens++;
                 setup_UpdateScreen(); break;
               }
             }
           }
           break;
         }
// Sipka dolu
         case 2:
         {
           if (setup_Func == 0)
           {
             setup_Par--;
             if (setup_Par == 0) setup_Par = 2;
             setup_UpdateScreen();
           }
           else
           {
             switch (setup_Par)
             {
               case 1:
               {
                 if (setup_Trim > 0.50) setup_Trim = setup_Trim - 0.01;
                 setup_UpdateScreen(); break;
               }
               case 2:
               {
                 if (setup_Sens > 0) setup_Sens--;
                 setup_UpdateScreen(); break;
               }
             }
           }
           break;
         }
// ESC
         case 3:
         {
           if (setup_Func == 0)
           {
             screen_L1 = 400; screen_Temp1 = 4; screen_Temp2 = 4;
             screen_Temp3 = 4;
             setup_Screen = 0;
             keydown = 0;
             lcd_BlinkOff();
             screen_Change = true;
           }
           else
           {
             switch (setup_Par)
             {
               case 1:
               {
                 setup_Trim = 0.94; break;
               }
               case 2:
               {
                 setup_Sens = 1; break;
               }
             }
             setup_Func = 0;
             setup_UpdateScreen();
           }
           break;
         }
// Enter
         case 4:
         {
           keydown = 0;
           if (setup_Func == 0)
           {
             setup_Func = 1;
           }
           else setup_Func = 0;
           setup_UpdateScreen();
           break;
         }
       }
     }
   }
 }

// *****************************************************************************
// *  Device Setup                                                             *
// *****************************************************************************

 function screen_DevSetup()
 {
   switch (setup_Par)
   {
     case 0:
     case 1:
     {
       lcd_Write(0,0,"CAN spd:    kbps");
       lcd_Write(0,1,"Device ID:      ");
       lcd_Write(8,0,CAN[setup_CAN]);
       s = String(setup_ID);
       lcd_Write(14-s.length,1,s);
       break;
     }
     case 2:
     {
       lcd_Write(0,0,"     Units      ");
       if (setup_units == 1)
       {
         lcd_Write(0,1,"    <Metric>    ");
       }
       else
       {
         lcd_Write(0,1,"   <Imperial>   ");
       }
       break;
     }
     case 3:
     {
       lcd_Write(0,0,"Password change?");
       if (setup_PassChange == 1)
       {
         lcd_Write(0,1,"      <Yes>     ");
       }
       else
       {
         lcd_Write(0,1,"      <No>      ");
       }
       break;
     }
     case 4:
     {
       lcd_Write(0,0,"Temp.Comp. ASW01");
       if (setup_TempComp == 1)
       {
         lcd_Write(0,1,"      <ON>      ");
       }
       else
       {
         lcd_Write(0,1,"      <OFF>     ");
       }
       break;
     }
   }
   screen_Change = false;
 }

 function setup_DevUpdateScreen()
 {
   if (setup_Func == 0)
   {
     switch (setup_Par)
     {
       case 0:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "C";
         break;
       }
       case 1:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "D";
         break;
       }
       case 2:
       {
         lcd_BlinkX = 5; lcd_BlinkY = 0; lcd_BlinkCh = "U";
         break;
       }
       case 3:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "P";
         break;
       }
       case 4:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "T";
         break;
       }
     }
   }
   else
   {
     switch (setup_Par)
     {
       case 0:
       {
         lcd_BlinkX = 11;
         lcd_BlinkY = 0;
         lcd_BlinkCh = CAN[setup_CAN].charAt(CAN[setup_CAN].length-1);
         break;
       }
       case 1:
       {
         lcd_BlinkX = 13;
         lcd_BlinkY = 1;
         lcd_BlinkCh = String(setup_ID).charAt(String(setup_ID).length-1);
         break;
       }
       case 2:
       {
         if (setup_units == 1)
         {
           lcd_BlinkX = 5;
           lcd_BlinkCh = "M";
         }
         else
         {
           lcd_BlinkX = 4;
           lcd_BlinkCh = "I";
         }
         lcd_BlinkY = 1;
         break;
       }
       case 3:
       {
         if (setup_PassChange == 1)
         {
           lcd_BlinkX = 7;
           lcd_BlinkCh = "Y";
         }
         else
         {
           lcd_BlinkX = 7;
           lcd_BlinkCh = "N";
         }
         lcd_BlinkY = 1;
         break;
       }
       case 4:
       {
         if (setup_TempComp == 1)
         {
           lcd_BlinkX = 7;
           lcd_BlinkCh = "O";
         }
         else
         {
           lcd_BlinkX = 7;
           lcd_BlinkCh = "O";
         }
         lcd_BlinkY = 1;
         break;
       }
     }
   }
   screen_DevSetup();
   lcd_BlinkUpdate();
 }

 function main_DevSetupControl()
 {
   if (screen_Change) screen_DevSetup();
   switch (setup_Func)
   {
     case 0:
     {
       switch (keypress)
       {
         case 1:
         {
           setup_Par--;
           if (setup_Par == -1) setup_Par = 3;
           setup_DevUpdateScreen();
           break;
         }
         case 2:
         {
           setup_Par++;
           if (setup_Par == 4) setup_Par = 0;
           setup_DevUpdateScreen();
           break;
         }
// ENTER
         case 4:
         {
           setup_Func = 1;
           setup_units_temp = setup_units;
           setup_DevUpdateScreen();
           break;
         }
// ESC
         case 3:
         {
//           screen_L1 = 400; screen_Temp1 = 1001; screen_Temp2 = 1001;  // 1001 = ulozit nastaveni
//           screen_Temp3 = 1001;
           screen_L1 = 400; screen_Temp1 = 4; screen_Temp2 = 4;  // 1001 = ulozit nastaveni
           screen_Temp3 = 4;
           keydown = 0;
           lcd_BlinkOff();
           screen_Change = true;
           break;
         }
       }
       break;
     }
     case 1:
     {
       switch (keypress)
       {
         case 1:
         {
           switch (setup_Par)
           {
             case 0:
             {
               setup_CAN++;
               if (setup_CAN == 5) setup_CAN = 0;
               setup_DevUpdateScreen();
               break;
             }
             case 1:
             {
               setup_ID++;
               if (setup_ID == 64) setup_ID = 63;
               setup_DevUpdateScreen();
               break;
             }
             case 2:
             {
               setup_units++;
               if (setup_units == 3) setup_units = 1;
               setup_DevUpdateScreen();
               break;
             }
             case 3:
             {
               setup_PassChange++;
               if (setup_PassChange == 2) setup_PassChange = 0;
               setup_DevUpdateScreen();
               break;
             }
             case 4:
             {
               setup_TempComp++;
               if (setup_TempComp == 2) setup_TempComp = 0;
               setup_DevUpdateScreen();
               break;
             }
           }
           break;
         }
         case 2:
         {
           switch (setup_Par)
           {
             case 0:
             {
               setup_CAN--;
               if (setup_CAN == -1) setup_CAN = 4;
               setup_DevUpdateScreen();
               break;
             }
             case 1:
             {
               setup_ID--;
               if (setup_ID == -1) setup_ID = 0;
               setup_DevUpdateScreen();
               break;
             }
             case 2:
             {
               setup_units++;
               if (setup_units == 3) setup_units = 1;
               setup_DevUpdateScreen();
               break;
             }
             case 3:
             {
               setup_PassChange++;
               if (setup_PassChange == 2) setup_PassChange = 0;
               setup_DevUpdateScreen();
               break;
             }
             case 4:
             {
               setup_TempComp++;
               if (setup_TempComp == 2) setup_TempComp = 0;
               setup_DevUpdateScreen();
               break;
             }
           }
           break;
         }
// ESC
         case 3:
         {
           switch (setup_Par)
           {
             case 0:
             {
               setup_CAN = 2;
               setup_Func = 0;
               setup_DevUpdateScreen();
               break;
             }
             case 1:
             {
               setup_ID = 1;
               setup_Func = 0;
               setup_DevUpdateScreen();
               break;
             }
             case 2:
             {
               setup_units = setup_units_temp;
               setup_Func = 0;
               setup_DevUpdateScreen();
               break;
             }
             case 3:
             {
               setup_PassChange = 0;
               setup_Func = 0;
               setup_DevUpdateScreen();
               break;
             }
             case 4:
             {
               setup_TempComp = 0;
               setup_Func = 0;
               setup_DevUpdateScreen();
               break;
             }
           }
           break;
         }
// ENTER
         case 4:
         {
           setup_Func = 0;
           if ((setup_Par == 3) && (setup_PassChange))
           {
              lcd_BlinkOff();
              screen_L1 = 300; screen_Temp1 = 6; screen_Temp2 = 30;
              screen_Temp3 = 30; screen_Change = true; break;
              setup_PassChange = false;
           }
           setup_DevUpdateScreen();
           break;
         }
       }
       break;
     }
   }
 }

// *****************************************************************************
// *  Password change                                                          *
// *****************************************************************************

 function screen_PassChange()
 {
   switch (setup_Par)
   {
     case 0:
     {
       lcd_Write(0,0,"Reset password? ");
       if (!setup_ResetBC) lcd_Write(0,1,"     <No>       ");
       else lcd_Write(0,1,"     <Yes>      ");
       break;
     }
     case 1:
     {
       lcd_Write(0,0,"Enter new pswd: ");
       lcd_Write(0,1,"      "+ascii.charAt(27)+ascii.charAt(27)+ascii.charAt(27)+ascii.charAt(27)+"   ");
     }
   }
 }

function setup_PassChUpdateScreen()
 {
   if (setup_Func == 0)
   {
     switch (setup_Par)
     {
       case 0:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 0; lcd_BlinkCh = "C";
         break;
       }
       case 1:
       {
         lcd_BlinkX = 0; lcd_BlinkY = 1; lcd_BlinkCh = "D";
         break;
       }
     }
   }
   else
   {
     switch (setup_Par)
     {
       case 0:
       {
         lcd_BlinkX = 11;
         lcd_BlinkY = 0;
         lcd_BlinkCh = CAN[setup_CAN].charAt(CAN[setup_CAN].length-1);
         break;
       }
       case 1:
       {
         lcd_BlinkX = 13;
         lcd_BlinkY = 1;
         lcd_BlinkCh = String(setup_ID).charAt(String(setup_ID).length-1);
         break;
       }
     }
   }
   screen_DevSetup();
   lcd_BlinkUpdate();
 }
 
 function main_PassChangeControl()
 {
   if (setup_Pass)
   {
      if (setup_Pass == 7327)
      {
         setup_Par = 0;
      }
      else
      {
         screen_L1 = 6;
      }
      setup_Pass = 0;
      screen_Change = true;
   }
   if (screen_Change) screen_PassChange();
   switch (setup_Func)
   {
     case 0:
     {
       switch (keypress)
       {
         case 1:
         {
           setup_Par--;
           if (setup_Par == -1) setup_Par = 1;
           screen_PassChange();
           break;
         }
         case 2:
         {
           setup_Par++;
           if (setup_Par == 2) setup_Par = 0;
           screen_PassChange();
           break;
         }
// ENTER
         case 4:
         {
           setup_Func = 1;
           setup_units_temp = setup_units;
           setup_DevUpdateScreen();
           break;
         }
// ESC
         case 3:
         {
           screen_L1 = 400; screen_Temp1 = 1001; screen_Temp2 = 1001;  // 1001 = ulozit nastaveni
           screen_Temp3 = 1001;
           keydown = 0;
           lcd_BlinkOff();
           screen_Change = true;
           break;
         }
       }
       break;
     }
     case 1:
     {
       switch (keypress)
       {
       }
     }
   }
 }
