
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

typedef void* Handle;
typedef _SizeInfo SizeInfo;
typedef _ModifierKeys ModifierKeys;
typedef _MouseInfo MouseInfo;
typedef _KeyInfo KeyInfo;
typedef _CallbackBin CallbackBin;


struct _SizeInfo
{
	PRUint32 width,
	PRUint32 height
}

struct _ModifierKeys
{
	PRBool	 altKey,
	PRBool	 ctrlKey,
	PRBool	 metaKey,
	PRBool	 shiftKey
}

struct _MouseInfo
{
	PRUint16 button,
	PRInt32  clientX,
	PRInt32  clientY,
	PRInt32	 screenX,
	PRInt32	 screenY
}

struct _KeyInfo
{
	PRUint32 charCode,
	PRUint32 keyCode
}

struct _CallbackBin
{
	SizeInfo (*GetControlSize) 	(void),
	void (*EventJSStatus)		(void),
  	void (*EventLinkStatus)		(void),  
 	void (*EventDestoryBrowser)	(void),
 	void (*EventSizeTo)		(PRInt32 aCX, PRInt32 aCY),
	void (*EventFocusNext)		(void),
  	void (*EventFocusPrev)		(void),
  	void (*EventTitleChanged)	(void),
  	void (*EventShowTooltipWindow)	(PRInt32 aXCoords, PRInt32 aYCoords,
			   	 		const char *aTipText),
 	void (*EventHideTooltipWindow)	(void),
  	void (*EventStateNetStart)	(void),
  	void (*EventStateNetStop)	(void),
  	void (*EventStateSpecial)	(PRUint32 aStateFlags, PRint32 aStatus),
  	void (*EventStateChange)	(const char *aUriString, PRUint32 aStateFlags, PRint32 aStatus),
  	void (*EventProgress)		(PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress),
  	void (*EventProgressAll)	(const char *aUriString, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress),
  	void (*EventLocationChanged)	(void),
  	void (*EventStatusChange)	(PRInt32 aStatus, const char *aMessage),
  	void (*EventSecurityChange)	(PRUint32 aState),
  
  
  //return true to abort/consume
  	PRBool (*EventDomKeyDown)	(ModiferKey aModKey, KeyInfo aKeyInfo),
  	PRBool (*EventDomKeyUp)		(ModiferKey aModKey, KeyInfo aKeyInfo),
  	PRBool (*EventDomKeyPress)	(ModiferKey aModKey, KeyInfo aKeyInfo),
  	PRBool (*EventMouseDown)	(ModiferKey aModKey, MouseInfo aMouseInfo),
  	PRBool (*EventMouseUp)		(ModiferKey aModKey, MouseInfo aMouseInfo),
  	PRBool (*EventMouseClick)	(ModiferKey aModKey, MouseInfo aMouseInfo),
  	PRBool (*EventMouseDoubleClick)	(ModiferKey aModKey, MouseInfo aMouseInfo),
  	PRBool (*EventMouseOver)	(ModiferKey aModKey, MouseInfo aMouseInfo),
  	PRBool (*EventMouseOut)		(ModiferKey aModKey, MouseInfo aMouseInfo),
  	PRBool (*EventActivate)		(PRInt32 detail),
  	PRBool (*EventFocusIn)		(PRInt32 detail),
  	PRBool (*EventFocusOut)		(PRInt32 detail),
  	PRBool (*EventBeforeURIOpen)	(const char *aURL)
}

int mozembed_init();
int mozembed_create();

#ifdef __cplusplus
}
#endif /* __cplusplus */	
