//---------------------------------------------------------------------------
#ifndef CtrlElementoH
#define CtrlElementoH
//---------------------------------------------------------------------------
//###########################################################################
//###########################################################################
//###########################################################################
//---------------------------------------------------------------------------
enum BlinkCodes { NONE=-1, IP_OFF=0, IP_QUERY=1 };
enum SurfaceAre  { sfNone=-1, sfRoja=1, sfAzul=2 };

class TElemento : public TImage
{
private:
    TTimer *Revisor;                    // Salta cuando se acaba el tiempo
    DYNAMIC void __fastcall MouseDown(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
    DYNAMIC void __fastcall MouseUp  (TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
    DYNAMIC void __fastcall MouseMove(TShiftState Shift, int X, int Y);

    void __fastcall OnBlink(TObject *Sender);
    void __fastcall OnRevisor(TObject *Sender);
    bool ultImagen, PideMasTiempo;

    int idc; int idtc; Currency Precio;
protected:
    AnsiString myIP;
    AnsiString myName;

    TDateTime TiempoPedido, TiempoComienzo;

    bool ElementoAnclado;    // ¿Elemento cogido con el ratón?
    int faElmX, faElmY;      // Factores de ajuste al mover...

#define ERROR     -1
#define FREE       0
#define WORKING    1

//    enum StatusCodes { ERROR=-1, FREE=0, WORKING=1 } StatusCode;

public:
    AnsiString NCliente;
    TTimer *Blink;                      // Encargado de hacer parpadear la imagen (p.e: errores)
    BlinkCodes  BlinkCode;
    SurfaceAre  SurfaceIs;

    int StatusCode;
    int NumElemento;

    __fastcall TElemento(TComponent* Owner);
    __fastcall ~TElemento();

    AnsiString __fastcall GiveMyIP(void){return myIP;};
    AnsiString __fastcall GiveMyName(void){return myName;};
    void __fastcall WriteMyName(void);
    void __fastcall ShowElementInfo(void);
    void __fastcall EnviarListasAppl(void);
    void __fastcall SetElemento( int Elemento, AnsiString IP, AnsiString Name );
    void __fastcall HistoricoTermON( TDateTime CtrlTiempo );
    void __fastcall RefreshElement(void);
    void __fastcall SetActiveTime( TDateTime Tiempo, int L_idc, int L_idtc, Currency L_Precio );
    void __fastcall ClientTimeIs( double Tiempo, double TiempoInicio );
    void __fastcall CerrarWindows(void);
    void __fastcall ForcedTimeOut(void);
    TDateTime __fastcall TiempoRestante(void);
    TDateTime __fastcall TiempoInicio(void);
    TDateTime __fastcall iTiempoPedido(void){return TiempoPedido;};
    TDateTime RTiempoRestante;
    Currency ImporteAcumulado;

};
//---------------------------------------------------------------------------


#endif
