
#ifndef ItemsH
#define ItemsH

#include "stdarg.h"


 // \e[A è \e[B   \e\033
 #define UP 80
 #define DOWN 72
 #define ESCAPE 27


 int iClearScreen()
 {
 //  printf("\e[2J");
 int i;
  for (i=0; i<25; i++)
   printf("\n");
  return 0;
 }


 // ---------------- Item Box ---------------
 // Return -1, if ESCAPE
 // Return number of selected variant
int iItemBox(int max, char *name, char *s1, ...)
 {
   va_list parg;
   int selected = 0, i;
   char **s, key=-1;
//----------------------------
   s = calloc(max, sizeof(char *));

   va_start(parg,s1);
    s[0] = s1;
      for (i=1; i < max; i++)
       s[i] = va_arg(parg, char *);
   va_end(parg);
//----------------------------

  do
   {
     iClearScreen();

     if (key==0) key=getch();
      switch (key) {
       case UP : if(selected<max-1) selected++; break;
       case DOWN : if(selected>0) selected--; break;
      }
      printf(name);
     for (i=0; i < max; i++)
      if (selected == i) printf("-> %s <-\n",s[i]);
       else
        printf("   %s   \n",s[i]);

  }  while ( ((key=getch()) != 13) && (key != ESCAPE) );

//----------------------------
    free(s);
//----------------------------

   return  (key!=ESCAPE)? selected : -1;
 };




 // ---------------- Item Box Massive ---------------
 // Return -1, if ESCAPE
 // Return number of selected variant
int iItemBoxMas(int max, char **s)
 {
   int selected = 0, i;
   char key=-1;

  do
   {
     iClearScreen();

     if (key==0) key=getch();
      switch (key) {
       case UP : if(selected<max-1) selected++; break;
       case DOWN : if(selected>0) selected--; break;
      }

     for (i=0; i < max; i++)
      if (selected == i) printf("-> %s <-\n",s[i]);
       else
        printf("   %s   \n",s[i]);

  }  while ( ((key=getch()) != 13) && (key != ESCAPE) );

   return  (key!=ESCAPE)? selected : -1;
 };

#endif
