#ifndef wn_dest_INCLUDED
	#define wn_dest_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 wn_dest : public bncs_script_helper
{
public:
	wn_dest( bncs_client_callback * parent, const char* path );
	virtual ~wn_dest();

	void buttonCallback( buttonNotify *b );
	int revertiveCallback( revertiveNotify * r );
	void databaseCallback( revertiveNotify * r );
	bncs_string parentCallback( parentNotify *p );
	void timerCallback( int );
	
private:
	// "global" variables
	bncs_string m_destination_id;		// The destination id value for this scripted control component
	bncs_string m_package_name_id;		// The BNCS driver ID for the package names
	bncs_string m_package_xpts_id;		// The BNCS driver ID for the package crosspoints
	bncs_string m_video_matrix_id;		// The BNCS driver ID for the video level
	bncs_string m_audio_matrix_id;		// The BNCS driver ID for the audio level
	bncs_string m_index;				// This is a value sent by the host. A value of -1 clears any selection on the button of this component
	bncs_string m_buttonstyle;			// The style sheet for the button appearance.
	bncs_string m_buttonhigh;			// The statesheet for the button when "active"
	bncs_string m_buttonlow;			// The statesheet for the button when "deselected".
	bncs_string m_videotallystate;		// The statesheet for the video tally display.
	bncs_string m_audiotallystate;		// The statesheet for the audio tally display.

	bool action_on_release;				// Holds the action on press/action on release state. "true" if action on release.
	bool video_revertive_reg;
	bool audio_revertive_reg;

	bool button_active;					// Shows if this button is "active"

	int m_video_id;						// The id of the video level destination (0 = not used)
	int m_audio_id;						// The id of the audio level destination (0 = not used)
	int names_rtr;						// The BNCS driver id for the package names
	int xpts_rtr;						// The BNCS driver id for the package crosspoints
	int video_rtr;						// The BNCS driver id for the video router
	int audio_rtr;						// The BNCS driver id for the audio router

	// Local methods.
	void extract_av_data(void);			// A function to extract the audio and video crosspoint data based on package data.
};


#endif // wn_dest_INCLUDED