//
//  Vrml 97 library
//  Copyright (C) 1998 Chris Morley
//
#ifndef _SCRIPTJS_
#define _SCRIPTJS_

#include "config.h"
#if HAVE_JAVASCRIPT
//
//  Javascript Script class
//
#include "ScriptObject.h"
#include "jsapi.h"

#include "VrmlField.h"

class VrmlNodeScript;
class VrmlScene;

class ScriptJS: public ScriptObject {

public:

  ScriptJS( VrmlNodeScript *, const char *source );
  ~ScriptJS();

  virtual void activate( double timeStamp,
			 const char *fname,
			 int argc,
			 const VrmlField *argv[]);

  VrmlScene *browser();
  VrmlNodeScript *scriptNode() { return d_node; }

  jsval vrmlFieldToJSVal( VrmlField::VrmlFieldType,
			  const VrmlField *f, bool protect );


protected:

  static JSRuntime *rt;
  static int nInstances;

  void defineAPI();
  void defineFields();

  VrmlNodeScript *d_node;

  double d_timeStamp;

  JSContext *d_cx;
  JSObject *d_globalObj;
  JSObject *d_browserObj;

};

#endif // HAVE_JAVASCRIPT
#endif // _SCRIPTJS_

