#ifndef PkgDest_2L_INCLUDED
#define PkgDest_2L_INCLUDED

#include <bncs_script_helper.h>

#ifdef WIN32
	#ifdef DOEXPORT_SCRIPT
		#define EXPORT_SCRIPT __declspec(dllexport) 
	#else
		#define EXPORT_SCRIPT 
	#endif
#else 
	#define EXPORT_SCRIPT
#endif
 
class PkgDest_2L : public bncs_script_helper
{
public:
	PkgDest_2L(bncs_client_callback * parent, const char* path);
	virtual ~PkgDest_2L();

	void buttonCallback(buttonNotify *b);
	int revertiveCallback(revertiveNotify *r);
	void databaseCallback(revertiveNotify *r);
	bncs_string parentCallback(parentNotify *p);
	void timerCallback(int);
	
private:
	bncs_string m_instance;				// Holds the name of the instance that provides router id and destination id.
	bncs_string mymatrixobject;			// Holds the name of object in object_settings.xml that defines the individual.
										// level driver ids and the driver id with the crosspoint lists.
	bncs_string myuselevels;			// Holds the comma deliminated string that defines the two levels to monitor.
	bncs_string myBtnDeselectState;		// Name of statesheet that defines the look of the button when de-selected.
	bncs_string myBtnSelectState;		// Name of statesheet that defines the look of the button when selected.
	bncs_string mytallystate_1;			// Name of the statesheet that defines look of the mimic data on first level monitored.
	bncs_string mytallystate_2;			// Name of the statesheet that defines look of the mimic data on second level monitored.
//	bncs_string mytallystate_3;
	bncs_string myunusedleveltext;		// The text to display when a level is not in use for a destination.

	int myMatrixID;						// The BNCS driver ID that has the name lists etc.
	int myDestID;						// The matrix router destination ID that is monitored and selected by this component instance.
	int myNamesDatabase;				// Database number to use for button name lookup (default is database 1).
	int pkg_names;						// BNCS driver ID that has the package names.
	int pkg_content;					// BNCS driver ID that has comma delimited lists of crosspoints.
	int mylevel1;
	int mylevel2;
	int L1_driverID;					// BNCS driver ID to monitor for current source, level one.
	int L2_driverID;					// BNCS driver ID to monitor for current source, level two.
//	int L3_driverID;
	int L1_destination;					// The matrix router destination ID that is monitored for level 1.
	int L2_destination;					// The matrix router destination ID that is monitored for level 2.
//	int L3_destination;

	bool iAmSelected;
	
	// Local methods
	void extractElements(void);
};


#endif // SingleMtxDest_INCLUDED