gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog configure.ac backend/Makefile.a...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog configure.ac backend/Makefile.a...
Date: Sat, 22 Jul 2006 23:47:57 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/07/22 23:47:56

Modified files:
        .              : ChangeLog configure.ac 
        backend        : Makefile.am 
        gui            : Makefile.am 
        server         : Makefile.am 
        utilities      : Makefile.am 
Added files:
        server/asobj   : ASSound.cpp ASSound.h Boolean.cpp Boolean.h 
                         Camera.cpp Camera.h Color.cpp Color.h 
                         ContextMenu.cpp ContextMenu.h CustomActions.cpp 
                         CustomActions.h Date.cpp Date.h Error.cpp 
                         Error.h Global.cpp Key.cpp Key.h LoadVars.cpp 
                         LoadVars.h LocalConnection.cpp 
                         LocalConnection.h Makefile.am Math.cpp Math.h 
                         Microphone.cpp Microphone.h Mouse.cpp Mouse.h 
                         MovieClipLoader.cpp MovieClipLoader.h 
                         NetConnection.cpp NetConnection.h NetStream.cpp 
                         NetStream.h Selection.cpp Selection.h 
                         SharedObject.cpp SharedObject.h Stage.cpp 
                         Stage.h System.cpp System.h TextSnapshot.cpp 
                         TextSnapshot.h Video.cpp Video.h 
Removed files:
        server         : ASSound.cpp ASSound.h Boolean.cpp Boolean.h 
                         Camera.cpp Camera.h Color.cpp Color.h 
                         ContextMenu.cpp ContextMenu.h CustomActions.cpp 
                         CustomActions.h Date.cpp Date.h Error.cpp 
                         Error.h Global.cpp Key.cpp Key.h LoadVars.cpp 
                         LoadVars.h LocalConnection.cpp 
                         LocalConnection.h Math.cpp Math.h 
                         Microphone.cpp Microphone.h Mouse.cpp Mouse.h 
                         MovieClipLoader.cpp MovieClipLoader.h 
                         NetConnection.cpp NetConnection.h NetStream.cpp 
                         NetStream.h Selection.cpp Selection.h 
                         SharedObject.cpp SharedObject.h Stage.cpp 
                         Stage.h System.cpp System.h TextSnapshot.cpp 
                         TextSnapshot.h Video.cpp Video.h 

Log message:
        Moved ActionScript built-in objects (client api) under own directory 
(asobj).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.500&r2=1.501
http://cvs.savannah.gnu.org/viewcvs/gnash/configure.ac?cvsroot=gnash&r1=1.86&r2=1.87
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/Makefile.am?cvsroot=gnash&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/Makefile.am?cvsroot=gnash&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Makefile.am?cvsroot=gnash&r1=1.51&r2=1.52
http://cvs.savannah.gnu.org/viewcvs/gnash/server/ASSound.cpp?cvsroot=gnash&r1=1.8&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/ASSound.h?cvsroot=gnash&r1=1.2&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Boolean.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Boolean.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Camera.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Camera.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Color.cpp?cvsroot=gnash&r1=1.7&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Color.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/ContextMenu.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/ContextMenu.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/CustomActions.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/CustomActions.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Date.cpp?cvsroot=gnash&r1=1.14&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Date.h?cvsroot=gnash&r1=1.8&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Error.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Error.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Global.cpp?cvsroot=gnash&r1=1.19&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Key.cpp?cvsroot=gnash&r1=1.8&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Key.h?cvsroot=gnash&r1=1.8&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/LoadVars.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/LoadVars.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/LocalConnection.cpp?cvsroot=gnash&r1=1.8&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/LocalConnection.h?cvsroot=gnash&r1=1.5&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Math.cpp?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Math.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Microphone.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Microphone.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Mouse.cpp?cvsroot=gnash&r1=1.7&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Mouse.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/MovieClipLoader.cpp?cvsroot=gnash&r1=1.29&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/MovieClipLoader.h?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/NetConnection.cpp?cvsroot=gnash&r1=1.9&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/NetConnection.h?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/NetStream.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/NetStream.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Selection.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Selection.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/SharedObject.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/SharedObject.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Stage.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Stage.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/System.cpp?cvsroot=gnash&r1=1.13&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/System.h?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/TextSnapshot.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/TextSnapshot.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Video.cpp?cvsroot=gnash&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Video.h?cvsroot=gnash&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/ASSound.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/ASSound.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Boolean.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Boolean.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Camera.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Camera.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Color.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Color.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/ContextMenu.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/ContextMenu.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/CustomActions.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/CustomActions.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Date.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Date.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Error.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Error.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Global.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Key.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Key.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/LoadVars.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/LoadVars.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/LocalConnection.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/LocalConnection.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Makefile.am?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Math.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Math.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Microphone.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Microphone.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Mouse.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Mouse.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/MovieClipLoader.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/MovieClipLoader.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetConnection.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetConnection.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStream.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStream.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Selection.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Selection.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/SharedObject.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/SharedObject.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Stage.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Stage.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/System.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/System.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/TextSnapshot.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/TextSnapshot.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Video.cpp?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Video.h?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/utilities/Makefile.am?cvsroot=gnash&r1=1.18&r2=1.19

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.500
retrieving revision 1.501
diff -u -b -r1.500 -r1.501
--- ChangeLog   22 Jul 2006 22:45:40 -0000      1.500
+++ ChangeLog   22 Jul 2006 23:47:55 -0000      1.501
@@ -1,5 +1,46 @@
 2006-07-23 Sandro Santilli <address@hidden>
 
+       * configure.ac, backend/Makefile.am, gui/Makefile.am,
+       server/ASSound.cpp, server/ASSound.h, server/Boolean.cpp,
+       server/Boolean.h, server/Camera.cpp, server/Camera.h,
+       server/Color.cpp, server/Color.h, server/ContextMenu.cpp,
+       server/ContextMenu.h, server/CustomActions.cpp,
+       server/CustomActions.h, server/Date.cpp, server/Date.h,
+       server/Error.cpp, server/Error.h, server/Global.cpp, server/Key.cpp,
+       server/Key.h, server/LoadVars.cpp, server/LoadVars.h,
+       server/LocalConnection.cpp, server/LocalConnection.h,
+       server/Makefile.am, server/Math.cpp, server/Math.h,
+       server/Microphone.cpp, server/Microphone.h, server/Mouse.cpp,
+       server/Mouse.h, server/MovieClipLoader.cpp, server/MovieClipLoader.h,
+       server/NetConnection.cpp, server/NetConnection.h, server/NetStream.cpp,
+       server/NetStream.h, server/Selection.cpp, server/Selection.h,
+       server/SharedObject.cpp, server/SharedObject.h, server/Stage.cpp,
+       server/Stage.h, server/System.cpp, server/System.h,
+       server/TextSnapshot.cpp, server/TextSnapshot.h, server/Video.cpp,
+       server/Video.h, server/asobj/ASSound.cpp, server/asobj/ASSound.h,
+       server/asobj/Boolean.cpp, server/asobj/Boolean.h,
+       server/asobj/Camera.cpp, server/asobj/Camera.h,
+       server/asobj/Color.cpp, server/asobj/Color.h,
+       server/asobj/ContextMenu.cpp, server/asobj/ContextMenu.h,
+       server/asobj/CustomActions.cpp, server/asobj/CustomActions.h,
+       server/asobj/Date.cpp, server/asobj/Date.h, server/asobj/Error.cpp,
+       server/asobj/Error.h, server/asobj/Global.cpp, server/asobj/Key.cpp,
+       server/asobj/Key.h, server/asobj/LoadVars.cpp, server/asobj/LoadVars.h,
+       server/asobj/LocalConnection.cpp, server/asobj/LocalConnection.h,
+       server/asobj/Makefile.am, server/asobj/Math.cpp, server/asobj/Math.h,
+       server/asobj/Microphone.cpp, server/asobj/Microphone.h,
+       server/asobj/Mouse.cpp, server/asobj/Mouse.h,
+       server/asobj/MovieClipLoader.cpp, server/asobj/MovieClipLoader.h,
+       server/asobj/NetConnection.cpp, server/asobj/NetConnection.h,
+       server/asobj/NetStream.cpp, server/asobj/NetStream.h,
+       server/asobj/Selection.cpp, server/asobj/Selection.h,
+       server/asobj/SharedObject.cpp, server/asobj/SharedObject.h,
+       server/asobj/Stage.cpp, server/asobj/Stage.h,
+       server/asobj/System.cpp, server/asobj/System.h,
+       server/asobj/TextSnapshot.cpp, server/asobj/TextSnapshot.h,
+       server/asobj/Video.cpp, server/asobj/Video.h, utilities/Makefile.am:
+       Moved ActionScript built-in objects (client api) under own directory
+       (asobj).
        * configure.ac: fixed tip (suggest --enable-gui, not --with-gui)
 
 2006-07-17 Bastiaan Jacques <address@hidden>

Index: configure.ac
===================================================================
RCS file: /sources/gnash/gnash/configure.ac,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -b -r1.86 -r1.87
--- configure.ac        22 Jul 2006 22:45:40 -0000      1.86
+++ configure.ac        22 Jul 2006 23:47:55 -0000      1.87
@@ -430,6 +430,7 @@
 libbase/Makefile
 libgeometry/Makefile
 server/Makefile
+server/asobj/Makefile
 libamf/Makefile
 backend/Makefile
 utilities/Makefile

Index: backend/Makefile.am
===================================================================
RCS file: /sources/gnash/gnash/backend/Makefile.am,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- backend/Makefile.am 11 Jul 2006 00:22:58 -0000      1.24
+++ backend/Makefile.am 22 Jul 2006 23:47:55 -0000      1.25
@@ -93,7 +93,7 @@
 # gnash_LDADD =  $(AM_LDFLAGS) \
 #      libgnashbackend.la \
 #      ../server/libgnashserver.la \
-#      ../server/libgnashasobjs.la \
+#      ../server/asobj/libgnashasobjs.la \
 #      ../libgeometry/libgnashgeo.la \
 #       ../libbase/libgnashbase.la
 

Index: gui/Makefile.am
===================================================================
RCS file: /sources/gnash/gnash/gui/Makefile.am,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- gui/Makefile.am     17 May 2006 08:51:17 -0000      1.6
+++ gui/Makefile.am     22 Jul 2006 23:47:55 -0000      1.7
@@ -160,7 +160,7 @@
         libgnashgui.la \
        ../backend/libgnashbackend.la \
        ../server/libgnashserver.la \
-       ../server/libgnashasobjs.la \
+       ../server/asobj/libgnashasobjs.la \
        ../libgeometry/libgnashgeo.la \
        ../libbase/libgnashbase.la
 
@@ -173,7 +173,7 @@
        $(LIB_KDEUI) \
        ../backend/libgnashbackend.la \
        ../server/libgnashserver.la \
-       ../server/libgnashasobjs.la \
+       ../server/asobj/libgnashasobjs.la \
        ../libgeometry/libgnashgeo.la \
        ../libbase/libgnashbase.la
 klash_DEPENDANCIES = klash.moc libgnashgui.la

Index: server/Makefile.am
===================================================================
RCS file: /sources/gnash/gnash/server/Makefile.am,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -b -r1.51 -r1.52
--- server/Makefile.am  7 Jul 2006 13:49:40 -0000       1.51
+++ server/Makefile.am  22 Jul 2006 23:47:55 -0000      1.52
@@ -40,13 +40,16 @@
 
 AM_CPPFLAGS = 
 
-# noinst_LTLIBRARIES = libserver.la libasobjs.la
-lib_LTLIBRARIES = libgnashasobjs.la libgnashserver.la
+SUBDIRS = asobj
+
+# noinst_LTLIBRARIES = libserver.la 
+lib_LTLIBRARIES = libgnashserver.la
 # noinst_SCRIPTS = gen-files.sh
 
 # Only enable if we're configured with --enable-mp3
-INCLUDES = -I.. -I$(srcdir)/swf \
-        -I$(top_srcdir)        \
+INCLUDES = \
+       -I$(top_srcdir)/server/swf \
+       -I$(top_srcdir)/server/asobj \
         -I$(top_srcdir)/libbase \
         -I$(top_srcdir)        \
        $(PTHREAD_CFLAGS) \
@@ -71,55 +74,8 @@
 MP3_HANDLER = sound_handler_mp3.cpp
 endif
 
-libgnashasobjs_la_SOURCES = \
-       as_object.cpp   \
-       Boolean.cpp     \
-       Camera.cpp      \
-       Color.cpp       \
-       ContextMenu.cpp \
-       CustomActions.cpp\
-       Date.cpp        \
-       Error.cpp       \
-       Global.cpp      \
-       Key.cpp         \
-       LoadVars.cpp    \
-       LocalConnection.cpp\
-       Microphone.cpp  \
-       Math.cpp        \
-       Mouse.cpp       \
-       NetConnection.cpp\
-       NetStream.cpp   \
-       Selection.cpp   \
-       SharedObject.cpp\
-       ASSound.cpp     \
-       Stage.cpp       \
-       System.cpp      \
-       TextSnapshot.cpp\
-       Video.cpp
-
-as_incls = \
-       Boolean.h       \
-       Camera.h        \
-       Color.h         \
-       ContextMenu.h   \
-       CustomActions.h \
-       Date.h          \
-       Error.h         \
-       LoadVars.h      \
-       LocalConnection.h\
-       Microphone.h    \
-       Math.h          \
-       Mouse.h         \
-       NetConnection.h \
-       NetStream.h     \
-       Selection.h     \
-       SharedObject.h  \
-       Stage.h         \
-       System.h        \
-       TextSnapshot.h  \
-       Video.h
-
 libgnashserver_la_SOURCES = \
+       as_object.cpp   \
        as_value.cpp     \
        as_environment.cpp       \
        as_function.cpp         \
@@ -131,7 +87,6 @@
         xml.cpp \
         xmlattrs.cpp \
         xmlnode.cpp \
-        MovieClipLoader.cpp\
        movie_root.cpp \
        movie_def_impl.cpp \
         xmlsocket.cpp \
@@ -167,7 +122,7 @@
        swf/tag_loaders.cpp     \
         types.cpp $(MP3_HANDLER)
 
-noinst_HEADERS = $(as_incls) \
+noinst_HEADERS = \
        action.h \
        action_buffer.h \
        ActionExec.h \
@@ -195,10 +150,8 @@
        gnash.h \
        gstring.h \
        impl.h \
-       Key.h \
        morph2.h \
        morph.h \
-       MovieClipLoader.h \
        MovieClip.h \
        movie.h \
        movie_definition.h \
@@ -214,7 +167,6 @@
        shape_character_def.h \
        shm.h \
        sound.h \
-       ASSound.h \
        Sprite.h \
        sprite_definition.h \
        sprite_instance.h \
@@ -239,7 +191,6 @@
        fn_call.h
 
 libgnashserver_la_LIBADD = \
-       libgnashasobjs.la \
        $(ZLIB_LIBS) \
        $(LIBXML_LIBS) \
        $(MP3_LIBS)

Index: utilities/Makefile.am
===================================================================
RCS file: /sources/gnash/gnash/utilities/Makefile.am,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- utilities/Makefile.am       12 May 2006 22:17:29 -0000      1.18
+++ utilities/Makefile.am       22 Jul 2006 23:47:56 -0000      1.19
@@ -29,7 +29,7 @@
 AM_LDFLAGS = \
        ../backend/libgnashbackend.la \
        ../server/libgnashserver.la \
-       ../server/libgnashasobjs.la \
+       ../server/asobj/libgnashasobjs.la \
        ../libgeometry/libgnashgeo.la \
        ../libbase/libgnashbase.la \
        $(LIBXML_LIBS) \

Index: server/asobj/ASSound.cpp
===================================================================
RCS file: server/asobj/ASSound.cpp
diff -N server/asobj/ASSound.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/ASSound.cpp    22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,301 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "ASSound.h"
+#include "movie_definition.h"
+#include "sprite_instance.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Sound::Sound() {
+}
+
+Sound::~Sound() {
+}
+
+
+void
+Sound::attachSound()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::getBytesLoaded()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::getBytesTotal()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::getPan()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::getTransform()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::getVolume()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::loadSound()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::setPan()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::setTransform()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::setVolume()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::start()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Sound::stop()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+sound_new(const fn_call& fn)
+{
+    sound_as_object *sound_obj = new sound_as_object;
+
+    sound_obj->set_member("attachsound", &sound_attachsound);
+    sound_obj->set_member("getbytesloaded", &sound_getbytesloaded);
+    sound_obj->set_member("getbytestotal", &sound_getbytestotal);
+    sound_obj->set_member("getpan", &sound_getpan);
+    sound_obj->set_member("gettransform", &sound_gettransform);
+    sound_obj->set_member("getvolume", &sound_getvolume);
+    sound_obj->set_member("loadsound", &sound_loadsound);
+    sound_obj->set_member("setpan", &sound_setpan);
+    sound_obj->set_member("settransform", &sound_settransform);
+    sound_obj->set_member("setvolume", &sound_setvolume);
+    sound_obj->set_member("start", &sound_start);
+    sound_obj->set_member("stop", &sound_stop);
+
+    fn.result->set_as_object(sound_obj);
+}
+
+void
+sound_start(const fn_call& fn)
+{
+    log_action("-- start sound \n");
+    sound_handler* s = get_sound_handler();
+               if (s != NULL)
+               {
+                       int loop = 0;
+                       int secondOffset = 0;
+                       if (fn.nargs > 0)
+                       {
+                               int secondOffset = (int) fn.arg(0).to_number();
+
+                               // sanity check
+                               secondOffset = secondOffset <= 0 ? 0 : 
secondOffset;
+
+                               if (fn.nargs > 1)
+                               {
+                                       loop = (int) fn.arg(1).to_number() - 1;
+
+                                       // -1 means infinite playing of sound
+                                       // sanity check
+                                       loop = loop < 0 ? -1 : loop;
+                               }
+                       }
+
+                       sound_as_object*        so = (sound_as_object*) 
(as_object*) fn.this_ptr;
+                       assert(so);
+                       s->play_sound(so->sound_id, loop, secondOffset);
+               }
+
+}
+
+void
+sound_stop(const fn_call& fn)
+{
+    log_action("-- stop sound \n");
+    sound_handler* s = get_sound_handler();
+    if (s != NULL)
+       {
+           sound_as_object*    so = (sound_as_object*) (as_object*) 
fn.this_ptr;
+           assert(so);
+           s->stop_sound(so->sound_id);
+       }
+}
+
+void
+sound_attachsound(const fn_call& fn)
+{
+    log_action("-- attach sound \n");
+    if (fn.nargs < 1)
+       {
+           log_error("attach sound needs one argument\n");
+           return;
+       }
+
+    sound_as_object*   so = (sound_as_object*) (as_object*) fn.this_ptr;
+    assert(so);
+
+    so->sound = fn.arg(0).to_tu_string();
+
+    // check the import.
+    movie_definition* def = 
fn.env->get_target()->get_root_movie()->get_movie_definition();
+    assert(def);
+    smart_ptr<resource> res = def->get_exported_resource(so->sound);
+    if (res == NULL)
+       {
+           log_error("import error: resource '%s' is not exported\n", 
so->sound.c_str());
+           return;
+       }
+
+    int si = 0;
+    sound_sample_impl* ss = (sound_sample_impl*) res->cast_to_sound_sample();
+
+    if (ss != NULL)
+       {
+           si = ss->m_sound_handler_id;
+       }
+    else
+       {
+           log_error("sound sample is NULL\n");
+           return;
+       }
+
+    // sanity check
+    assert(si >= 0 && si < 1000);
+    so->sound_id = si;
+}
+
+void
+sound_getbytesloaded(const fn_call& /*fn*/)
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+sound_getbytestotal(const fn_call& /*fn*/)
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+sound_getpan(const fn_call& /*fn*/)
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+sound_gettransform(const fn_call& /*fn*/)
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+sound_getvolume(const fn_call& fn)
+{
+       sound_handler* s = get_sound_handler();
+       if (s != NULL)
+       {
+               sound_as_object*        so = (sound_as_object*) (as_object*) 
fn.this_ptr;
+               assert(so);
+               int volume = s->get_volume(so->sound_id);
+    fn.result->set_int(volume);
+       }
+       return;
+}
+
+void
+sound_loadsound(const fn_call& /*fn*/)
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+sound_setpan(const fn_call& /*fn*/)
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+sound_settransform(const fn_call& /*fn*/)
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+sound_setvolume(const fn_call& fn)
+{
+       if (fn.nargs < 1)
+       {
+               log_error("set volume of sound needs one argument\n");
+               return;
+       }
+               
+       int volume = (int) fn.arg(0).to_number();
+
+       // sanity check
+       if (volume >= 0 && volume <=100)
+       {
+               sound_handler* s = get_sound_handler();
+               if (s != NULL)
+               {
+                       sound_as_object*        so = (sound_as_object*) 
(as_object*) fn.this_ptr;
+                       assert(so);
+                       s->set_volume(so->sound_id, volume);
+               }
+       }
+}
+
+} // end of gnash namespace
+

Index: server/asobj/ASSound.h
===================================================================
RCS file: server/asobj/ASSound.h
diff -N server/asobj/ASSound.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/ASSound.h      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,85 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef __ASSOUND_H__
+#define __ASSOUND_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+#include "as_object.h" // for inheritance 
+
+namespace gnash {
+
+// Forward declarations
+struct fn_call;
+  
+class Sound {
+public:
+    Sound();
+    ~Sound();
+   void attachSound();
+   void getBytesLoaded();
+   void getBytesTotal();
+   void getPan();
+   void getTransform();
+   void getVolume();
+   void loadSound();
+   void setPan();
+   void setTransform();
+   void setVolume();
+   void start();
+   void stop();
+private:
+    bool _duration;
+    bool _id3;
+    bool _onID3;
+    bool _onLoad;
+    bool _onomplete;
+    bool _position;
+};
+
+struct sound_as_object : public as_object
+{
+    //Sound obj;
+    tu_string sound;
+    int sound_id;
+};
+
+void sound_new(const fn_call& fn);
+void sound_attachsound(const fn_call& fn);
+void sound_getbytesloaded(const fn_call& fn);
+void sound_getbytestotal(const fn_call& fn);
+void sound_getpan(const fn_call& fn);
+void sound_gettransform(const fn_call& fn);
+void sound_getvolume(const fn_call& fn);
+void sound_loadsound(const fn_call& fn);
+void sound_setpan(const fn_call& fn);
+void sound_settransform(const fn_call& fn);
+void sound_setvolume(const fn_call& fn);
+void sound_start(const fn_call& fn);
+void sound_stop(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __ASSOUND_H__
+#endif
+

Index: server/asobj/Boolean.cpp
===================================================================
RCS file: server/asobj/Boolean.cpp
diff -N server/asobj/Boolean.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Boolean.cpp    22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,85 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Boolean.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Boolean::Boolean() {
+}
+
+Boolean::~Boolean() {
+}
+
+
+void
+Boolean::toString()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Boolean::valueOf()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+boolean_new(const fn_call& fn)
+{
+    boolean_as_object *boolean_obj = new boolean_as_object;
+
+    boolean_obj->set_member("tostring", &boolean_tostring);
+    boolean_obj->set_member("valueof", &boolean_valueof);
+
+    fn.result->set_as_object(boolean_obj);
+}
+void boolean_tostring(const fn_call& /* fn */) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void boolean_valueof(const fn_call& /* fn */) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/Boolean.h
===================================================================
RCS file: server/asobj/Boolean.h
diff -N server/asobj/Boolean.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Boolean.h      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,73 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __BOOLEAN_H__
+#define __BOOLEAN_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Boolean {
+public:
+    Boolean();
+    ~Boolean();
+   void toString();
+   void valueOf();
+private:
+};
+
+struct boolean_as_object : public as_object
+{
+    Boolean obj;
+};
+
+void boolean_new(const fn_call& fn);
+void boolean_tostring(const fn_call& fn);
+void boolean_valueof(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __BOOLEAN_H__
+#endif
+

Index: server/asobj/Camera.cpp
===================================================================
RCS file: server/asobj/Camera.cpp
diff -N server/asobj/Camera.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Camera.cpp     22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,105 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Camera.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Camera::Camera() {
+}
+
+Camera::~Camera() {
+}
+
+
+void
+Camera::get()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Camera::setMode()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Camera::setMotionLevel()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Camera::setQuality()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+camera_new(const fn_call& fn)
+{
+    camera_as_object *camera_obj = new camera_as_object;
+
+    camera_obj->set_member("get", &camera_get);
+    camera_obj->set_member("setmode", &camera_setmode);
+    camera_obj->set_member("setmotionlevel", &camera_setmotionlevel);
+    camera_obj->set_member("setquality", &camera_setquality);
+
+    fn.result->set_as_object(camera_obj);
+}
+void camera_get(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void camera_setmode(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void camera_setmotionlevel(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void camera_setquality(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/Camera.h
===================================================================
RCS file: server/asobj/Camera.h
diff -N server/asobj/Camera.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Camera.h       22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,92 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __CAMERA_H__
+#define __CAMERA_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Camera {
+public:
+    Camera();
+    ~Camera();
+   void get();
+   void setMode();
+   void setMotionLevel();
+   void setQuality();
+private:
+    bool _activityLevel;
+    bool _bandwidth;
+    bool _currentFps;
+    bool _fps;
+    bool _height;
+    bool _index;
+    bool _motionLevel;
+    bool _motionTimeOut;
+    bool _muted;
+    bool _name;
+    bool _names;
+    bool _onActivity;
+    bool _onStatus;
+    bool _quality;
+    bool _width;
+};
+
+struct camera_as_object : public as_object
+{
+    Camera obj;
+};
+
+void camera_new(const fn_call& fn);
+void camera_get(const fn_call& fn);
+void camera_setmode(const fn_call& fn);
+void camera_setmotionlevel(const fn_call& fn);
+void camera_setquality(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __CAMERA_H__
+#endif
+

Index: server/asobj/Color.cpp
===================================================================
RCS file: server/asobj/Color.cpp
diff -N server/asobj/Color.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Color.cpp      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,105 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Color.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Color::Color() {
+}
+
+Color::~Color() {
+}
+
+
+void
+Color::getRGB()
+{
+    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
+}
+
+void
+Color::getTransform()
+{
+    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
+}
+
+void
+Color::setRGB()
+{
+    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
+}
+
+void
+Color::setTransform()
+{
+    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
+}
+void
+color_new(const fn_call& fn)
+{
+    color_as_object *color_obj = new color_as_object;
+
+    color_obj->set_member("getrgb", &color_getrgb);
+    color_obj->set_member("gettransform", &color_gettransform);
+    color_obj->set_member("setrgb", &color_setrgb);
+    color_obj->set_member("settransform", &color_settransform);
+
+    fn.result->set_as_object(color_obj);
+}
+void color_getrgb(const fn_call& /*fn*/) {
+    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
+}
+void color_gettransform(const fn_call& /*fn*/) {
+    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
+}
+void color_setrgb(const fn_call& /*fn*/) {
+    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
+}
+void color_settransform(const fn_call& /*fn*/) {
+    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/Color.h
===================================================================
RCS file: server/asobj/Color.h
diff -N server/asobj/Color.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Color.h        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,77 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __COLOR_H__
+#define __COLOR_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Color {
+public:
+    Color();
+    ~Color();
+   void getRGB();
+   void getTransform();
+   void setRGB();
+   void setTransform();
+private:
+};
+
+struct color_as_object : public as_object
+{
+    Color obj;
+};
+
+void color_new(const fn_call& fn);
+void color_getrgb(const fn_call& fn);
+void color_gettransform(const fn_call& fn);
+void color_setrgb(const fn_call& fn);
+void color_settransform(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __COLOR_H__
+#endif
+

Index: server/asobj/ContextMenu.cpp
===================================================================
RCS file: server/asobj/ContextMenu.cpp
diff -N server/asobj/ContextMenu.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/ContextMenu.cpp        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,84 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "ContextMenu.h"
+#include "fn_call.h"
+namespace gnash {
+
+ContextMenu::ContextMenu() {
+}
+
+ContextMenu::~ContextMenu() {
+}
+
+
+void
+ContextMenu::copy()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+ContextMenu::hideBuiltInItems()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+contextmenu_new(const fn_call& fn)
+{
+    contextmenu_as_object *contextmenu_obj = new contextmenu_as_object;
+
+    contextmenu_obj->set_member("copy", &contextmenu_copy);
+    contextmenu_obj->set_member("hidebuiltinitems", 
&contextmenu_hidebuiltinitems);
+
+    fn.result->set_as_object(contextmenu_obj);
+}
+void contextmenu_copy(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void contextmenu_hidebuiltinitems(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/ContextMenu.h
===================================================================
RCS file: server/asobj/ContextMenu.h
diff -N server/asobj/ContextMenu.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/ContextMenu.h  22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,76 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __CONTEXTMENU_H__
+#define __CONTEXTMENU_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class ContextMenu {
+public:
+    ContextMenu();
+    ~ContextMenu();
+   void copy();
+   void hideBuiltInItems();
+private:
+    bool _builtInItems;
+    bool _customItems;
+    bool _onSelect;
+};
+
+struct contextmenu_as_object : public as_object
+{
+    ContextMenu obj;
+};
+
+void contextmenu_new(const fn_call& fn);
+void contextmenu_copy(const fn_call& fn);
+void contextmenu_hidebuiltinitems(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __CONTEXTMENU_H__
+#endif
+

Index: server/asobj/CustomActions.cpp
===================================================================
RCS file: server/asobj/CustomActions.cpp
diff -N server/asobj/CustomActions.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/CustomActions.cpp      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,105 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "CustomActions.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+CustomActions::CustomActions() {
+}
+
+CustomActions::~CustomActions() {
+}
+
+
+void
+CustomActions::get()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+CustomActions::install()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+CustomActions::list()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+CustomActions::uninstall()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+customactions_new(const fn_call& fn)
+{
+    customactions_as_object *customactions_obj = new customactions_as_object;
+
+    customactions_obj->set_member("get", &customactions_get);
+    customactions_obj->set_member("install", &customactions_install);
+    customactions_obj->set_member("list", &customactions_list);
+    customactions_obj->set_member("uninstall", &customactions_uninstall);
+
+    fn.result->set_as_object(customactions_obj);
+}
+void customactions_get(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void customactions_install(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void customactions_list(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void customactions_uninstall(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/CustomActions.h
===================================================================
RCS file: server/asobj/CustomActions.h
diff -N server/asobj/CustomActions.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/CustomActions.h        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,77 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __CUSTOMACTIONS_H__
+#define __CUSTOMACTIONS_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class CustomActions {
+public:
+    CustomActions();
+    ~CustomActions();
+   void get();
+   void install();
+   void list();
+   void uninstall();
+private:
+};
+
+struct customactions_as_object : public as_object
+{
+    CustomActions obj;
+};
+
+void customactions_new(const fn_call& fn);
+void customactions_get(const fn_call& fn);
+void customactions_install(const fn_call& fn);
+void customactions_list(const fn_call& fn);
+void customactions_uninstall(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __CUSTOMACTIONS_H__
+#endif
+

Index: server/asobj/Date.cpp
===================================================================
RCS file: server/asobj/Date.cpp
diff -N server/asobj/Date.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Date.cpp       22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,731 @@
+// 
+//     Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Date.h"
+#include "fn_call.h"
+
+#include <time.h>
+
+#if defined(_WIN32) || defined(WIN32)
+# define snprintf _snprintf
+#else
+# include <sys/time.h>
+#endif
+
+#include <sys/timeb.h>
+
+namespace gnash {
+
+Date::Date() {
+}
+
+Date::~Date() {
+}
+
+double
+Date::getTime()
+{
+       tm result = convertTM();
+       time_t count = mktime(&result);
+       return double(count) * 1000.0;
+}
+
+void
+Date::getTimezoneOffset()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getUTCDate()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getUTCDay()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getUTCFullYear()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getUTCHours()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getUTCMilliseconds()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getUTCMinutes()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getUTCMonth()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getUTCSeconds()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::getYear()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setDate()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setFullYear()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setHours()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setMilliseconds()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setMinutes()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setMonth()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setSeconds()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setTime()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setUTCDate()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setUTCFullYear()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setUTCHours()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setUTCMilliseconds()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setUTCMinutes()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setUTCMonth()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setUTCSeconds()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::setYear()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::toString()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Date::UTC()
+{
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+tm
+Date::convertUTC()
+{
+       tm utctime;
+
+       utctime.tm_sec = second;
+       utctime.tm_min = minute;
+       utctime.tm_hour = hour;
+       utctime.tm_mday = date;
+       utctime.tm_mon = month;
+       utctime.tm_year = year;
+       utctime.tm_wday = dayWeek;
+       utctime.tm_yday = dayYear;
+       utctime.tm_isdst = isDST;
+
+       time_t normalized;
+
+       normalized = mktime(&utctime);
+
+       tm *result = gmtime(&normalized);
+
+       return *result;
+}
+
+tm
+Date::convertTM()
+{
+       tm thistime;
+
+       thistime.tm_sec = second;
+       thistime.tm_min = minute;
+       thistime.tm_hour = hour;
+       thistime.tm_mday = date;
+       thistime.tm_mon = month;
+       thistime.tm_year = year;
+       thistime.tm_wday = dayWeek;
+       thistime.tm_yday = dayYear;
+       thistime.tm_isdst = isDST;
+
+       time_t normalized;
+
+       normalized = mktime(&thistime);
+
+       tm *result = localtime(&normalized);
+
+       return *result;
+}
+
+void
+Date::setFromTM(const tm newtime)
+{
+       second = newtime.tm_sec;
+       minute = newtime.tm_min;
+       hour = newtime.tm_hour;
+       date = newtime.tm_mday;
+       month = newtime.tm_mon;
+       year = newtime.tm_year;
+       dayWeek = newtime.tm_wday;
+       dayYear = newtime.tm_yday;
+       isDST = newtime.tm_isdst;
+}
+
+
+void
+Date::Normalize()
+{
+       second += (millisecond / 1000);
+       millisecond = millisecond % 1000;
+
+       tm thistime = convertTM();
+       time_t newtime = mktime(&thistime);
+       setFromTM(*(localtime(&newtime)));
+}
+
+void
+date_new(const fn_call& fn)
+{
+       date_as_object *date_obj = new date_as_object;
+
+       date_obj->set_member("getdate", &date_getdate);
+       date_obj->set_member("getday", &date_getday);
+       date_obj->set_member("getfullyear", &date_getfullyear);
+       date_obj->set_member("gethours", &date_gethours);
+       date_obj->set_member("getmilliseconds", &date_getmilliseconds);
+       date_obj->set_member("getminutes", &date_getminutes);
+       date_obj->set_member("getmonth", &date_getmonth);
+       date_obj->set_member("getseconds", &date_getseconds);
+       date_obj->set_member("gettime", &date_gettime);
+       date_obj->set_member("gettimezoneoffset", &date_gettimezoneoffset);
+       date_obj->set_member("getutcdate", &date_getutcdate);
+       date_obj->set_member("getutcday", &date_getutcday);
+       date_obj->set_member("getutcfullyear", &date_getutcfullyear);
+       date_obj->set_member("getutchours", &date_getutchours);
+       date_obj->set_member("getutcmilliseconds", &date_getutcmilliseconds);
+       date_obj->set_member("getutcminutes", &date_getutcminutes);
+       date_obj->set_member("getutcmonth", &date_getutcmonth);
+       date_obj->set_member("getutcseconds", &date_getutcseconds);
+       date_obj->set_member("getyear", &date_getyear);
+       date_obj->set_member("setdate", &date_setdate);
+       date_obj->set_member("setfullyear", &date_setfullyear);
+       date_obj->set_member("sethours", &date_sethours);
+       date_obj->set_member("setmilliseconds", &date_setmilliseconds);
+       date_obj->set_member("setminutes", &date_setminutes);
+       date_obj->set_member("setmonth", &date_setmonth);
+       date_obj->set_member("setseconds", &date_setseconds);
+       date_obj->set_member("settime", &date_settime);
+       date_obj->set_member("setutcdate", &date_setutcdate);
+       date_obj->set_member("setutcfullyear", &date_setutcfullyear);
+       date_obj->set_member("setutchours", &date_setutchours);
+       date_obj->set_member("setutcmilliseconds", &date_setutcmilliseconds);
+       date_obj->set_member("setutcminutes", &date_setutcminutes);
+       date_obj->set_member("setutcmonth", &date_setutcmonth);
+       date_obj->set_member("setutcseconds", &date_setutcseconds);
+       date_obj->set_member("setyear", &date_setyear);
+       date_obj->set_member("tostring", &date_tostring);
+       date_obj->set_member("utc", &date_utc);
+
+       struct tm *ti;
+       if (fn.nargs == 0) {
+#ifndef HAVE_GETTIMEOFDAY
+               struct timeb tb;
+               
+               ftime (&tb);
+               ti = localtime(&tb.time); 
+               log_error("date_new constructor doesn't set timezone or 
milliseconds on your system - using defaults\n");
+               date_obj->obj.millisecond = 0;
+               date_obj->obj.minutesEast = 0;
+#else          
+               struct timeval tEnd;
+               struct timezone tZone;
+               gettimeofday(&tEnd,&tZone);
+               date_obj->obj.millisecond = tEnd.tv_usec;
+               date_obj->obj.minutesEast = -tZone.tz_minuteswest;
+               time_t t = time(&t);
+               ti = localtime(&t);
+#endif
+               date_obj->obj.second = ti->tm_sec;
+               date_obj->obj.minute = ti->tm_min;
+               date_obj->obj.hour = ti->tm_hour;
+               date_obj->obj.date = ti->tm_mday;
+               date_obj->obj.month = ti->tm_mon;
+               date_obj->obj.year = ti->tm_year;
+               date_obj->obj.dayWeek = ti->tm_wday;
+               date_obj->obj.dayYear = ti->tm_yday;
+               date_obj->obj.isDST = ti->tm_isdst;
+       }
+       else
+               log_error("date_new constructor with %d arguments 
unimplemented!\n",fn.nargs);
+
+       fn.result->set_as_object(date_obj);
+}
+void date_getdate(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.date);
+}
+void date_getday(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.dayWeek);
+}
+void date_getfullyear(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.year + 1900);
+}
+void date_gethours(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.hour);
+}
+void date_getmilliseconds(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.millisecond);
+}
+void date_getminutes(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.minute);
+}
+void date_getmonth(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.month);
+}
+void date_getseconds(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.second);
+}
+void date_gettime(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_double(date->obj.getTime());
+}
+void date_gettimezoneoffset(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.minutesEast);
+}
+void date_getutcdate(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       tm result = date->obj.convertUTC();
+
+       fn.result->set_int(int(result.tm_mday));
+}
+void date_getutcday(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       tm result = date->obj.convertUTC();
+
+       fn.result->set_int(int(result.tm_wday));
+}
+void date_getutcfullyear(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       tm result = date->obj.convertUTC();
+
+       fn.result->set_int(int(result.tm_year)+1900);
+}
+void date_getutchours(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       tm result = date->obj.convertUTC();
+
+       fn.result->set_int(int(result.tm_hour));
+}
+void date_getutcmilliseconds(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       // Milliseconds (value between 0 and 999) won't be affected by timezone
+       fn.result->set_int(int(date->obj.millisecond));
+}
+void date_getutcminutes(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       tm result = date->obj.convertUTC();
+
+       fn.result->set_int(int(result.tm_min));
+}
+void date_getutcmonth(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       tm result = date->obj.convertUTC();
+
+       fn.result->set_int(int(result.tm_mon));
+}
+void date_getutcseconds(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       // Seconds (value between 0 and 59) won't be affected by timezone
+       fn.result->set_int(int(date->obj.second));
+}
+void date_getyear(const fn_call& fn) {
+       assert(fn.nargs == 0);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       fn.result->set_int(date->obj.year);
+}
+
+// TODO: for all these "set" functions, what do we do if sent illegal values?
+// Clamp them to a proper range? Ignore and keep previous value? Throw an 
error?
+// For now I'm "normalizing" them e.g. Jan-33 25:60:60 -> Feb-3 2:01:00
+
+// TODO: Also, confirm this is the appropriate behavior for the setUTC()
+// functions. Right now, we convert the time to UTC, set the variable,
+// then convert back to local time. We should confirm the official behavior!
+void date_setdate(const fn_call& fn) {
+       assert(fn.nargs == 1);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       date->obj.date = (long int)(fn.arg(0).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setfullyear(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 3);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       date->obj.year = (long int)(fn.arg(0).to_number() - 1900);
+       if (fn.nargs >= 2)
+               date->obj.month = (long int)(fn.arg(1).to_number());
+       if (fn.nargs >= 3)
+               date->obj.date = (long int)(fn.arg(2).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_sethours(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 4);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       date->obj.hour = (long int)(fn.arg(0).to_number());
+       if (fn.nargs >= 2)
+               date->obj.minute = (long int)(fn.arg(1).to_number());
+       if (fn.nargs >= 3)
+               date->obj.second = (long int)(fn.arg(2).to_number());
+       if (fn.nargs >= 4)
+               date->obj.millisecond = (long int)(fn.arg(3).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setmilliseconds(const fn_call& fn) {
+       assert(fn.nargs == 1);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       date->obj.millisecond = (long int)(fn.arg(0).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setminutes(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 3);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       // Seconds (value between 0 and 59) won't be affected by timezone
+       date->obj.minute = (long int)(fn.arg(0).to_number());
+       if (fn.nargs >= 2) date->obj.second = (long int)(fn.arg(1).to_number());
+       if (fn.nargs >= 3) date->obj.millisecond = (long 
int)(fn.arg(2).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setmonth(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 2);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       date->obj.month = (long int)(fn.arg(0).to_number());
+       if (fn.nargs >= 2)
+               date->obj.date = (long int)(fn.arg(1).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setseconds(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 2);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       // Seconds (value between 0 and 59) won't be affected by timezone
+       date->obj.second = (long int)(fn.arg(0).to_number());
+       if (fn.nargs >= 2) date->obj.millisecond = (long 
int)(fn.arg(1).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_settime(const fn_call& /*fn*/) {
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void date_setutcdate(const fn_call& fn) {
+       assert(fn.nargs == 1);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+
+       tm utctime = date->obj.convertUTC();
+       // Set mday to our new UTC date (yday and wday don't need to be set)
+       utctime.tm_mday = int(fn.arg(0).to_number());
+
+       // Convert back from UTC to local time
+       utctime.tm_min += date->obj.minutesEast;
+
+       // Normalize the time, then set as this object's new time
+       time_t newtime = mktime(&utctime);
+       date->obj.setFromTM(*(localtime(&newtime)));
+       
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setutcfullyear(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 3);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+
+       tm utctime = date->obj.convertUTC();
+       // Set year to our new UTC date
+       utctime.tm_year = int(fn.arg(0).to_number()-1900);
+       if (fn.nargs >= 2)
+               utctime.tm_mon = (long int)(fn.arg(1).to_number());
+       if (fn.nargs >= 3)
+               utctime.tm_mday = (long int)(fn.arg(2).to_number());
+
+       // Convert back from UTC to local time
+       utctime.tm_min += date->obj.minutesEast;
+
+       // Normalize the time, then set as this object's new time
+       time_t newtime = mktime(&utctime);
+       date->obj.setFromTM(*(localtime(&newtime)));
+       
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setutchours(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 4);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+
+       if (fn.nargs >= 4)
+       {
+               date->obj.millisecond = (long int)(fn.arg(3).to_number());
+               date->obj.Normalize();
+       }
+
+       tm utctime = date->obj.convertUTC();
+       // Set year to our new UTC date
+       utctime.tm_hour = int(fn.arg(0).to_number());
+       if (fn.nargs >= 2)
+               utctime.tm_min = (long int)(fn.arg(1).to_number());
+       if (fn.nargs >= 3)
+               utctime.tm_sec = (long int)(fn.arg(2).to_number());
+
+       // Convert back from UTC to local time
+       utctime.tm_min += date->obj.minutesEast;
+
+       // Normalize the time, then set as this object's new time
+       time_t newtime = mktime(&utctime);
+       date->obj.setFromTM(*(localtime(&newtime)));
+       
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setutcmilliseconds(const fn_call& fn) {
+       assert(fn.nargs == 1);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       date->obj.millisecond = (long int)(fn.arg(0).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setutcminutes(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 3);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       // Seconds (value between 0 and 59) won't be affected by timezone
+       date->obj.minute = (long int)(fn.arg(0).to_number());
+       if (fn.nargs >= 2) date->obj.second = (long int)(fn.arg(1).to_number());
+       if (fn.nargs >= 3) date->obj.millisecond = (long 
int)(fn.arg(2).to_number());
+
+       // Setting milliseconds to less than 0 or more than 999 affects seconds
+       date->obj.second += date->obj.millisecond / 1000;
+       date->obj.millisecond = date->obj.millisecond % 1000;
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setutcmonth(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 2);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+
+       tm utctime = date->obj.convertUTC();
+       // Set year to our new UTC date
+       utctime.tm_mon = int(fn.arg(0).to_number());
+       if (fn.nargs >= 2)
+               utctime.tm_mday = (long int)(fn.arg(1).to_number());
+
+       // Convert back from UTC to local time
+       utctime.tm_min += date->obj.minutesEast;
+
+       // Normalize the time, then set as this object's new time
+       time_t newtime = mktime(&utctime);
+       date->obj.setFromTM(*(localtime(&newtime)));
+       
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setutcseconds(const fn_call& fn) {
+       assert(fn.nargs >= 1 && fn.nargs <= 2);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       // Seconds (value between 0 and 59) won't be affected by timezone
+       date->obj.second = (long int)(fn.arg(0).to_number());
+       if (fn.nargs >= 2) date->obj.millisecond = (long 
int)(fn.arg(1).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_setyear(const fn_call& fn) {
+       assert(fn.nargs == 1);
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+       date->obj.year = (long int)(fn.arg(0).to_number());
+
+       date->obj.Normalize();
+       fn.result->set_double(date->obj.getTime());
+}
+void date_tostring(const fn_call& fn) {
+       // TODO: I have no idea what the real flash player does, but at least 
this
+       // gives something functional for now. Tried to mimic the "date" command
+       char buffer[32];
+       char* monthname[12] =
+               
{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
+       char* dayweekname[7] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
+
+       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
+
+       snprintf((char *)&buffer,128,"%s %s %2ld %.2ld:%.2ld:%.2ld %ld",
+               dayweekname[date->obj.dayWeek],monthname[date->obj.month],
+               date->obj.date,date->obj.hour,date->obj.minute,date->obj.second,
+               1900+date->obj.year);
+
+       fn.result->set_string((char *)&buffer);
+}
+void date_utc(const fn_call& /*fn*/) {
+       log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnash namespace
+

Index: server/asobj/Date.h
===================================================================
RCS file: server/asobj/Date.h
diff -N server/asobj/Date.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Date.h 22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,152 @@
+// 
+//     Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+//
+
+#ifndef __DATE_H__
+#define __DATE_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Date {
+public:
+        Date();
+        ~Date();
+       // Use double to avoid overflow
+       double getTime();
+       void getTimezoneOffset();
+       void getUTCDate();
+       void getUTCDay();
+       void getUTCFullYear();
+       void getUTCHours();
+       void getUTCMilliseconds();
+       void getUTCMinutes();
+       void getUTCMonth();
+       void getUTCSeconds();
+       void getYear();
+       void setDate();
+       void setFullYear();
+       void setHours();
+       void setMilliseconds();
+       void setMinutes();
+       void setMonth();
+       void setSeconds();
+       void setTime();
+       void setUTCDate();
+       void setUTCFullYear();
+       void setUTCHours();
+       void setUTCMilliseconds();
+       void setUTCMinutes();
+       void setUTCMonth();
+       void setUTCSeconds();
+       void setYear();
+       void toString();
+       void UTC();
+
+       // These store the local time
+       bool isDST;
+       long year,month,date,hour,minute,second,millisecond;
+       int minutesEast;
+       int dayWeek,dayYear;
+
+       // This returns a tm struct representing this date in UTC time
+       tm convertUTC();
+       // This returns a tm struct representing this date in local time
+       tm convertTM();
+       // This sets the values in the date object to those in the tm struct
+       // And ignores any values not stored in the tm struct
+       void setFromTM(const tm newtime);
+       // This function normalizes the time - for example, if we set the date 
to
+       // Jan-32, 1:61:60, after normalize the time will be Feb-1, 2:02:00
+       void Normalize();
+private:
+};
+
+struct date_as_object : public as_object
+{
+        Date obj;
+};
+
+void date_new(const fn_call& fn);
+void date_getdate(const fn_call& fn);
+void date_getday(const fn_call& fn);
+void date_getfullyear(const fn_call& fn);
+void date_gethours(const fn_call& fn);
+void date_getmilliseconds(const fn_call& fn);
+void date_getminutes(const fn_call& fn);
+void date_getmonth(const fn_call& fn);
+void date_getseconds(const fn_call& fn);
+void date_gettime(const fn_call& fn);
+void date_gettimezoneoffset(const fn_call& fn);
+void date_getutcdate(const fn_call& fn);
+void date_getutcday(const fn_call& fn);
+void date_getutcfullyear(const fn_call& fn);
+void date_getutchours(const fn_call& fn);
+void date_getutcmilliseconds(const fn_call& fn);
+void date_getutcminutes(const fn_call& fn);
+void date_getutcmonth(const fn_call& fn);
+void date_getutcseconds(const fn_call& fn);
+void date_getyear(const fn_call& fn);
+void date_setdate(const fn_call& fn);
+void date_setfullyear(const fn_call& fn);
+void date_sethours(const fn_call& fn);
+void date_setmilliseconds(const fn_call& fn);
+void date_setminutes(const fn_call& fn);
+void date_setmonth(const fn_call& fn);
+void date_setseconds(const fn_call& fn);
+void date_settime(const fn_call& fn);
+void date_setutcdate(const fn_call& fn);
+void date_setutcfullyear(const fn_call& fn);
+void date_setutchours(const fn_call& fn);
+void date_setutcmilliseconds(const fn_call& fn);
+void date_setutcminutes(const fn_call& fn);
+void date_setutcmonth(const fn_call& fn);
+void date_setutcseconds(const fn_call& fn);
+void date_setyear(const fn_call& fn);
+void date_tostring(const fn_call& fn);
+void date_utc(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __DATE_H__
+#endif
+

Index: server/asobj/Error.cpp
===================================================================
RCS file: server/asobj/Error.cpp
diff -N server/asobj/Error.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Error.cpp      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,75 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Error.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Error::Error() {
+}
+
+Error::~Error() {
+}
+
+
+void
+Error::toString()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+error_new(const fn_call& fn)
+{
+    error_as_object *error_obj = new error_as_object;
+
+    error_obj->set_member("tostring", &error_tostring);
+
+    fn.result->set_as_object(error_obj);
+}
+void error_tostring(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnash namespace
+

Index: server/asobj/Error.h
===================================================================
RCS file: server/asobj/Error.h
diff -N server/asobj/Error.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Error.h        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,73 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __ERROR_H__
+#define __ERROR_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Error {
+public:
+    Error();
+    ~Error();
+   void toString();
+private:
+    bool _message;
+    bool _name;
+};
+
+struct error_as_object : public as_object
+{
+    Error obj;
+};
+
+void error_new(const fn_call& fn);
+void error_tostring(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __ERROR_H__
+#endif
+

Index: server/asobj/Global.cpp
===================================================================
RCS file: server/asobj/Global.cpp
diff -N server/asobj/Global.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Global.cpp     22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,568 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Implementation of the Global ActionScript Object
+
+#include "as_object.h"
+#include "array.h"
+#include "Boolean.h"
+#include "Camera.h"
+#include "Color.h"
+#include "ContextMenu.h"
+#include "CustomActions.h"
+#include "Date.h"
+#include "Error.h"
+#include "as_function.h" // for action_init
+#include "Global.h"
+#include "gstring.h"
+#include "Key.h"
+#include "LoadVars.h"
+#include "LocalConnection.h"
+#include "Microphone.h"
+#include "Math.h"
+#include "Mouse.h"
+#include "MovieClipLoader.h"
+#include "MovieClip.h" 
+#include "movie_definition.h"
+#include "NetConnection.h"
+#include "NetStream.h"
+#include "Selection.h"
+#include "SharedObject.h"
+#include "smart_ptr.h"
+#include "ASSound.h"
+#include "Stage.h"
+#include "System.h"
+#include "textformat.h"
+#include "TextSnapshot.h"
+#include "Video.h"
+
+#include <fn_call.h>
+#include <sprite_instance.h>
+
+#ifdef HAVE_LIBXML
+#include "xml.h"
+#include "xmlsocket.h"
+#endif
+
+#include <iostream>
+using namespace std;
+
+namespace gnash {
+
+void
+as_global_trace(const fn_call& fn)
+{
+    assert(fn.nargs >= 1);
+
+// @@ NOTHING should get special treatment,
+//    as_value::to_string() will take care of everything
+#if 0
+    // Special case for objects: try the toString() method.
+    if (fn.arg(0).get_type() == as_value::OBJECT)
+       {
+           as_object* obj = fn.arg(0).to_object();
+           assert(obj);
+
+           as_value method;
+           if (obj->get_member("toString", &method)
+               && method.is_function())
+               {
+                   as_value result = call_method0(method, fn.env, obj);
+                   log_msg("%s\n", result.to_string());
+
+                   return;
+               }
+       }
+#endif
+
+    // Log our argument.
+    //
+    // @@ what if we get extra args?
+    //
+    // @@ Array gets special treatment.
+    // @@ NOTHING should get special treatment,
+    //    as_value::to_string() will take care of everything
+    const char* arg0 = fn.arg(0).to_string();
+    log_msg("%s\n", arg0);
+}
+
+
+static void
+as_global_object_ctor(const fn_call& fn)
+    // Constructor for ActionScript class Object.
+{
+    as_object *new_obj;
+
+    if ( fn.nargs == 0 )
+       {
+           new_obj = new as_object();
+       }
+    else if ( fn.nargs == 1 ) // copy constructor
+       {
+           as_object *src_obj = fn.arg(0).to_object();
+           new_obj = new as_object(src_obj);
+       }
+    else
+       {
+           dbglogfile << "Too many args to Object constructor" << endl;
+           new_obj = new as_object();
+       }
+
+    fn.result->set_as_object(new_obj);
+}
+
+static void
+as_global_isnan(const fn_call& fn)
+{
+    assert(fn.nargs == 1);
+
+    fn.result->set_bool(fn.arg(0).is_nan());
+}
+
+static void
+as_global_isfinite(const fn_call& fn)
+{
+    assert(fn.nargs == 1);
+
+    fn.result->set_bool(fn.arg(0).is_finite());
+}
+
+static void
+as_global_unescape(const fn_call& fn)
+{
+    assert(fn.nargs == 1);
+
+    std::string input = fn.arg(0).to_string();
+    std::string insertst;
+    int hexcode;
+
+    for (unsigned int i=0;i<input.length();)
+       {
+           if ((input.length() > i + 2) && input[i] == '%' &&
+               isxdigit(input[i+1]) && isxdigit(input[i+2]))
+               {
+                   input[i+1] = toupper(input[i+1]);
+                   input[i+2] = toupper(input[i+2]);
+                   if (isdigit(input[i+1]))
+                       hexcode = (input[i+1] - '0') * 16;
+                   else
+                       hexcode = (input[i+1] - 'A' + 10) * 16;
+
+                   if (isdigit(input[i+2]))
+                       hexcode += (input[i+2] - '0');
+                   else
+                       hexcode += (input[i+2] - 'A' + 10);
+
+                   input.erase(i,3);
+                               
+                   switch (hexcode)
+                       {
+                         case 0x20: // space
+                             insertst = ' ';
+                             break;
+                         case 0x22: // "
+                             insertst = '\"';
+                             break;
+                         case 0x23: // #
+                             insertst = '#';
+                             break;
+                         case 0x24: // $
+                             insertst = '$';
+                             break;
+                         case 0x25: // %
+                             insertst = '%';
+                             break;
+                         case 0x26: // &
+                             insertst = '&';
+                             break;
+                         case 0x2B: // +
+                             insertst = '+';
+                             break;
+                         case 0x2C: // ,
+                             insertst = ',';
+                             break;
+                         case 0x2F: // /
+                             insertst = '/';
+                             break;
+                         case 0x3A: // :
+                             insertst = ':';
+                             break;
+                         case 0x3B: // ;
+                             insertst = ';';
+                             break;
+                         case 0x3C: // <
+                             insertst = '<';
+                             break;
+                         case 0x3D: // =
+                             insertst = '=';
+                             break;
+                         case 0x3E: // >
+                             insertst = '>';
+                             break;
+                         case 0x3F: // ?
+                             insertst = '?';
+                             break;
+                         case 0x40: // @
+                             insertst = '@';
+                             break;
+                         case 0x5B: // [
+                             insertst = '[';
+                             break;
+                         case 0x5C: // \ (backslash)
+                             insertst = '\\';
+                             break;
+                         case 0x5D: // ]
+                             insertst = ']';
+                             break;
+                         case 0x5E: // ^
+                             insertst = '^';
+                             break;
+                         case 0x60: // `
+                             insertst = '`';
+                             break;
+                         case 0x7B: // {
+                             insertst = '{';
+                             break;
+                         case 0x7C: // |
+                             insertst = '|';
+                             break;
+                         case 0x7D: // }
+                             insertst = '}';
+                             break;
+                         case 0x7E: // ~
+                             insertst = '~';
+                             break;
+                         default:
+                             log_action("ERROR: unescape() function reached "
+                                                         "unknown hexcode %d, 
aborting unescape()\n",hexcode);
+                             fn.result->set_string(fn.arg(0).to_string());
+                             return;
+                       }
+                   input.insert(i,insertst);
+               }
+           else
+               i++;
+       }
+    fn.result->set_string(input.c_str());
+}
+
+static void
+as_global_parsefloat(const fn_call& fn)
+{
+    assert(fn.nargs == 1);
+
+    float result;
+
+    // sscanf will handle the whitespace / unneeded characters etc. 
automatically
+    if (1 == sscanf(fn.arg(0).to_string(), "%f", &result))
+       fn.result->set_double(double(result));
+    else
+       // if sscanf didn't find anything, return NaN
+       fn.result->set_nan();
+}
+
+static void
+as_global_parseint(const fn_call& fn)
+{
+    assert(fn.nargs == 2 || fn.nargs == 1);
+
+    // Make sure our argument is the correct type
+    if (fn.nargs > 1)
+       fn.arg(1).convert_to_number();
+
+    // Set up some variables
+    const std::string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    char *input = new char[strlen(fn.arg(0).to_string())+1];
+    strcpy(input,fn.arg(0).to_string());
+    double base;
+    int result = 0, i;
+    bool bNegative;
+
+    // Skip leading whitespace
+    while ((input[0] == ' ') || (input[0] == 0x9))
+       input++;
+
+    if (input[0] == '-')
+       {
+           bNegative = true;
+           input++;
+       }
+    else
+       bNegative = false;
+
+    // Convert the string to uppercase
+    for (i=0;i<int(strlen(input));i++)
+       input[i] = toupper(input[i]);
+
+    // if we were sent a second argument, that's our base
+    if (fn.nargs > 1)
+       {
+           base = fn.arg(1).to_number();
+       }
+    // if the string starts with "0x" then a hex digit
+    else if (strlen(input) > 2 && input[0] == '0' && input[1] == 'X'
+            && (isdigit(input[2]) || (input[2] >= 'A' && input[2] <= 'F')))
+       {
+           base = 16.0;        // the base is 16
+           input = input + 2; // skip the leading "0x"
+       }
+    // if the string starts with "0" then an octal digit
+    else if (strlen(input) > 1 && input[0] == '0' &&
+            (input[1] >= '0' && input[1] <= '7'))
+       {
+           base = 8.0;
+           input++; // skip the leading '0'
+       }
+    else
+       // default base is 10
+       base = 10.0;
+
+    assert (base >= 2 && base <= 36);
+
+    int numdigits = 0;
+
+    // Start at the beginning, see how many valid digits we have
+    // in the base we're dealing with
+    while (numdigits < int(strlen(input)) 
+          && int(digits.find(input[numdigits])) < base
+          && digits.find(input[numdigits]) != std::string::npos)
+       numdigits++;
+
+    // If we didn't get any digits, we should return NaN
+    if (numdigits == 0)
+       {
+           fn.result->set_nan();
+           return;
+       }
+
+    for (i=0;i<numdigits;i++)
+       {
+               result += digits.find(input[i]) * (int)pow(base, numdigits - i 
- 1);
+       }
+
+    if (bNegative)
+       result = -result;
+
+    // Now return the parsed string
+    fn.result->set_int(result);
+}
+
+// ASSetPropFlags function
+static void
+as_global_assetpropflags(const fn_call& fn)
+{
+       int version = fn.env->get_version();
+
+       log_msg("ASSetPropFlags called with %d args", fn.nargs);
+
+       // Check the arguments
+       assert(fn.nargs == 3 || fn.nargs == 4);
+       assert((version == 5) ? (fn.nargs == 3) : true);
+               
+       // ASSetPropFlags(obj, props, n, allowFalse=false)
+
+       // object
+       as_object* obj = fn.arg(0).to_object();
+       if ( ! obj )
+       {
+               log_warning("Invalid call to ASSetPropFlags: "
+                       "object argument is not an object: %s",
+                       fn.arg(0).to_string());
+               return;
+       }
+
+       // list of child names
+
+       as_object* props = fn.arg(1).to_object();
+       if (props == NULL)
+       {
+               // second argument can either be an array or
+               // a comma-delimited string.
+               // see: http://www.flashguru.co.uk/assetpropflags/
+               log_error("ASSetPropFlags unimplemented for non-array prop"
+                       " argument (%s)", fn.arg(1).to_string());
+
+               return; // be nice, dont' abort
+
+               // tulrich: this fires in test_ASSetPropFlags -- is it correct?
+               assert(fn.arg(1).get_type() == as_value::NULLTYPE);
+       }
+
+    // a number which represents three bitwise flags which
+    // are used to determine whether the list of child names should be hidden,
+    // un-hidden, protected from over-write, un-protected from over-write,
+    // protected from deletion and un-protected from deletion
+    int set_true = int(fn.arg(2).to_number()) & 
as_prop_flags::as_prop_flags_mask;
+
+    // Is another integer bitmask that works like set_true,
+    // except it sets the attributes to false. The
+    // set_false bitmask is applied before set_true is applied
+
+    // ASSetPropFlags was exposed in Flash 5, however the fourth argument 
'set_false'
+    // was not required as it always defaulted to the value '~0'. 
+    int set_false = (fn.nargs == 3 ? 
+                    (version == 5 ? ~0 : 0) : int(fn.arg(3).to_number()))
+       & as_prop_flags::as_prop_flags_mask;
+
+    // Evan: it seems that if set_true == 0 and set_false == 0, this function
+    // acts as if the parameters where (object, null, 0x1, 0) ...
+    if (set_false == 0 && set_true == 0)
+       {
+           props = NULL;
+           set_false = 0;
+           set_true = 0x1;
+       }
+
+    if (props == NULL)
+       {
+           // Take all the members of the object
+
+           as_object* object = obj;
+
+           stringi_hash<as_member>::const_iterator it = 
object->m_members.begin();
+           while (it != object->m_members.end())
+               {
+                   as_member member = it->second;
+
+                   as_prop_flags f = member.get_member_flags();
+                   //const int oldflags = 
+                   f.get_flags();
+                   //const int newflags =
+                   f.set_flags(set_true, set_false);
+                   member.set_member_flags(f);
+
+                   object->m_members[it->first] = member;
+
+                   ++it;
+               }
+
+           if (object->m_prototype != NULL)
+               {
+                   const as_object* prototype = object->m_prototype;
+
+                   it = prototype->m_members.begin();
+                   while (it != prototype->m_members.end())
+                       {
+                           as_member member = it->second;
+
+                           as_prop_flags f = member.get_member_flags();
+                           //const int oldflags =
+                           f.get_flags();
+                           //const int newflags = 
+                           f.set_flags(set_true, set_false);
+                           member.set_member_flags(f);
+
+                           object->m_members[it->first] = member;
+
+                           ++it;
+                       }
+               }
+       }
+       else
+       {
+           as_object* object = obj;
+           as_object* object_props = props;
+
+           stringi_hash<as_member>::iterator it = 
object_props->m_members.begin();
+           while(it != object_props->m_members.end())
+               {
+                   const tu_stringi key = 
(it->second).get_member_value().to_string();
+                   stringi_hash<as_member>::iterator it2 = 
object->m_members.find(key);
+
+                   if (it2 != object->m_members.end())
+                       {
+                           as_member member = it2->second;
+
+                           as_prop_flags f = member.get_member_flags();
+                           //const int oldflags =
+                           f.get_flags();
+                           //const int newflags =
+                           f.set_flags(set_true, set_false);
+                           member.set_member_flags(f);
+
+                           
object->m_members[it->second.get_member_value().to_string()] = member;
+                       }
+
+                   ++it;
+               }
+       }
+}
+
+Global::Global()
+       :
+       as_object()
+{
+       set_member("trace", as_value(as_global_trace));
+       set_member("Object", as_value(as_global_object_ctor));
+       set_member("Sound", as_value(sound_new));
+
+       set_member("TextFormat", as_value(textformat_new));
+#ifdef HAVE_LIBXML
+       set_member("XML", as_value(xml_new));
+       set_member("XMLNode", as_value(xmlnode_new));
+       //set_member("XML", as_value(xmlsocket_xml_new));
+       set_member("XMLSocket", as_value(xmlsocket_new));
+#endif // HAVE_LIBXML
+       set_member("MovieClipLoader", as_value(moviecliploader_new));
+       //set_member("String", as_value(string_ctor));
+       // This next set are all the unimplemented classes whose
+       // code was machine generated.
+       set_member("Boolean", as_value(boolean_new));
+       set_member("Camera", as_value(camera_new));
+       set_member("Color", as_value(color_new));
+       set_member("ContextMenu", as_value(contextmenu_new));
+       set_member("CustomActions", as_value(customactions_new));
+       set_member("Date", as_value(date_new));
+       set_member("Error", as_value(error_new));
+       set_member("LoadVars", as_value(loadvars_new));
+       set_member("LocalConnection", as_value(localconnection_new));
+       set_member("Microphone", as_value(microphone_new));
+       set_member("Mouse", as_value(mouse_new));
+       set_member("NetConnection", as_value(netconnection_new));
+       set_member("NetStream", as_value(netstream_new));
+       set_member("Selection", as_value(selection_new));
+       set_member("SharedObject", as_value(sharedobject_new));
+       set_member("Stage", as_value(stage_new));
+       set_member("System", as_value(system_new));
+       set_member("TextSnapshot", as_value(textsnapshot_new));
+       set_member("Video", as_value(video_new));
+       // ASSetPropFlags
+       set_member("ASSetPropFlags", as_global_assetpropflags);
+       // unescape
+       set_member("unescape", as_global_unescape);
+       // parseFloat
+       set_member("parseFloat", as_global_parsefloat);
+       // parseInt
+       set_member("parseInt", as_global_parseint);
+       // isNan
+       set_member("isNan", as_global_isnan);
+       // isFinite
+       set_member("isFinite", as_global_isfinite);
+
+       string_class_init(*this); 
+       array_class_init(*this);
+       function_init(this);
+       movieclip_init(this);
+       math_init(this);
+       key_init(this);
+       system_init(this);
+}
+
+
+
+} // namespace gnash

Index: server/asobj/Key.cpp
===================================================================
RCS file: server/asobj/Key.cpp
diff -N server/asobj/Key.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Key.cpp        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,459 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Key.h"
+#include "action.h" // for action_init
+#include "fn_call.h"
+#include "movie_root.h"
+
+namespace gnash {
+
+Key::Key() {
+}
+
+Key::~Key() {
+}
+
+
+void
+Key::addListener()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Key::getAscii()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Key::getCode()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Key::isDown()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Key::isToggled()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Key::removeListener()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+key_new(const fn_call& fn)
+{
+    key_as_object *key_obj = new key_as_object;
+
+    key_obj->set_member("addlistener", &key_addlistener);
+    key_obj->set_member("getascii", &key_getascii);
+    key_obj->set_member("getcode", &key_getcode);
+    key_obj->set_member("isdown", &key_isdown);
+    key_obj->set_member("istoggled", &key_istoggled);
+    key_obj->set_member("removelistener", &key_removelistener);
+
+    fn.result->set_as_object(key_obj);
+}
+void key_addlistener(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void key_getascii(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void key_getcode(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void key_isdown(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void key_istoggled(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void key_removelistener(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+/************************************************************************
+ *
+ * This has been moved from action.cpp, when things are clean
+ * everything should have been moved up
+ *
+ ************************************************************************/
+
+key_as_object::key_as_object()
+       :
+       m_last_key_pressed(0)
+{
+    memset(m_keymap, 0, sizeof(m_keymap));
+}
+
+bool
+key_as_object::is_key_down(int code)
+{
+           if (code < 0 || code >= key::KEYCOUNT) return false;
+
+           int byte_index = code >> 3;
+           int bit_index = code - (byte_index << 3);
+           int mask = 1 << bit_index;
+
+           assert(byte_index >= 0 && byte_index < 
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
+
+           if (m_keymap[byte_index] & mask)
+               {
+                   return true;
+               }
+           else
+               {
+                   return false;
+               }
+}
+
+void
+key_as_object::set_key_down(int code)
+{
+           if (code < 0 || code >= key::KEYCOUNT) return;
+
+           m_last_key_pressed = code;
+
+           int byte_index = code >> 3;
+           int bit_index = code - (byte_index << 3);
+           int mask = 1 << bit_index;
+
+           assert(byte_index >= 0 && byte_index < 
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
+
+           m_keymap[byte_index] |= mask;
+
+           notify_listeners(event_id(event_id::KEY_DOWN).get_function_name());
+}
+
+
+void
+key_as_object::set_key_up(int code)
+{
+           if (code < 0 || code >= key::KEYCOUNT) return;
+
+           int byte_index = code >> 3;
+           int bit_index = code - (byte_index << 3);
+           int mask = 1 << bit_index;
+
+           assert(byte_index >= 0 && byte_index < 
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
+
+           m_keymap[byte_index] &= ~mask;
+
+           notify_listeners(event_id(event_id::KEY_UP).get_function_name());
+}
+
+void
+key_as_object::notify_listeners(const tu_stringi& funcname)
+{
+    // Notify listeners.
+    for (std::vector<weak_ptr<as_object> >::iterator iter = 
m_listeners.begin();
+         iter != m_listeners.end(); ++iter) {
+      if (*iter == NULL)
+        continue;
+
+      smart_ptr<as_object>  listener = *iter; // Hold an owning reference.
+      as_value method;
+
+      if (listener->get_member(funcname, &method))
+        call_method(method, NULL /* or root? */, listener.get_ptr(), 0, 0);
+    }
+}
+
+#if 0
+// XXXbjacques
+//   Well, I think cleanup_listeners() is a bad idea for several reasons:
+//   1) Since m_listeners is a vector of weak pointers, it is no way guaranteed
+//      that m_listeners won't be "dirty" immediately after cleanup_listeners()
+//      is called. Any users of m_listeners will have to NULL check pointers
+//      (and add a ref) retrieved from m_listeners anyway.
+//   2) std::vector.erase() is a potentially expensive operation.
+//   3) std::vector.erase() does no reallocation. We gain no memory by doing
+//      this.
+//   4) Thread safety may be an issue (due to the change of m_listeners.size(),
+//      as a result of std::vector.erase()). We really, really should be using
+//      iterators instead of size()/indicing to iterate these vectors, though.
+
+void
+key_as_object::cleanup_listeners()
+{
+           for (int i = m_listeners.size() - 1; i >= 0; i--)
+               {
+                   if (m_listeners[i] == NULL)
+                       {
+                           m_listeners.erase(m_listeners.begin() + i);
+                       }
+               }
+}
+
+#endif
+
+void
+key_as_object::add_listener(as_object* listener)
+{
+#if 0
+//XXXbjacques: see comment above
+           cleanup_listeners();
+#endif
+
+    // Should we bother doing this every time someone calls add_listener(),
+    // or should we perhaps skip this check and use unique later?
+    std::vector<weak_ptr<as_object> >::const_iterator end = m_listeners.end();
+    for (std::vector<weak_ptr<as_object> >::iterator iter = 
m_listeners.begin();
+         iter != end; ++iter) {
+      if (*iter == NULL) {
+        // Already in the list.
+        return;
+      }
+    }
+
+    m_listeners.push_back(listener);
+}
+
+void
+key_as_object::remove_listener(as_object* listener)
+{
+#if 0
+XXXbjacques: see above comment
+           cleanup_listeners();
+#endif
+
+  for (std::vector<weak_ptr<as_object> >::iterator iter = m_listeners.begin(); 
iter != m_listeners.end(); )
+       {
+    if (*iter == listener)
+               {
+      iter = m_listeners.erase(iter);
+                       continue;
+    }
+               iter++;
+       }
+}
+
+int
+key_as_object::get_last_key_pressed() const
+{
+       return m_last_key_pressed;
+}
+
+
+void
+key_add_listener(const fn_call& fn)
+{
+    if (fn.nargs < 1)
+       {
+           log_error("key_add_listener needs one argument (the listener 
object)\n");
+           return;
+       }
+
+    as_object* listener = fn.arg(0).to_object();
+    if (listener == NULL)
+       {
+           log_error("key_add_listener passed a NULL object; ignored\n");
+           return;
+       }
+
+    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
+    assert(ko);
+
+    ko->add_listener(listener);
+}
+
+void   key_get_ascii(const fn_call& fn)
+    // Return the ascii value of the last key pressed.
+{
+    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
+    assert(ko);
+
+    fn.result->set_undefined();
+
+    int        code = ko->get_last_key_pressed();
+    if (code > 0)
+       {
+           // @@ Crude for now; just jamming the key code in a string, as a 
character.
+           // Need to apply shift/capslock/numlock, etc...
+           char        buf[2];
+           buf[0] = (char) code;
+           buf[1] = 0;
+
+           fn.result->set_string(buf);
+       }
+}
+
+void   key_get_code(const fn_call& fn)
+    // Returns the keycode of the last key pressed.
+{
+    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
+    assert(ko);
+
+    fn.result->set_int(ko->get_last_key_pressed());
+}
+
+void   key_is_down(const fn_call& fn)
+    // Return true if the specified (first arg keycode) key is pressed.
+{
+    if (fn.nargs < 1)
+       {
+           log_error("key_is_down needs one argument (the key code)\n");
+           return;
+       }
+
+    int        code = (int) fn.arg(0).to_number();
+
+    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
+    assert(ko);
+
+    fn.result->set_bool(ko->is_key_down(code));
+}
+
+void   key_is_toggled(const fn_call& fn)
+    // Given the keycode of NUM_LOCK or CAPSLOCK, returns true if
+    // the associated state is on.
+{
+    // @@ TODO
+    fn.result->set_bool(false);
+}
+
+void   key_remove_listener(const fn_call& fn)
+    // Remove a previously-added listener.
+{
+    if (fn.nargs < 1)
+       {
+           log_error("key_remove_listener needs one argument (the listener 
object)\n");
+           return;
+       }
+
+    as_object* listener = fn.arg(0).to_object();
+    if (listener == NULL)
+       {
+           log_error("key_remove_listener passed a NULL object; ignored\n");
+           return;
+       }
+
+    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
+    assert(ko);
+
+    ko->remove_listener(listener);
+}
+
+void   notify_key_event(key::code k, bool down)
+    // External interface for the host to report key events.
+{
+//         GNASH_REPORT_FUNCTION;
+           
+    action_init();     // @@ put this in some global init somewhere else...
+
+       // Notify keypress listeners.
+       if (down) 
+       {
+               movie_root* mroot = (movie_root*) get_current_root();
+               mroot->notify_keypress_listeners(k);
+       }
+
+    static tu_string   key_obj_name("Key");
+
+    as_value   kval;
+    s_global->get_member(key_obj_name, &kval);
+    if (kval.get_type() == as_value::OBJECT)
+       {
+           key_as_object*      ko = static_cast<key_as_object*>( 
kval.to_object() );
+           assert(ko);
+
+           if (down) ko->set_key_down(k);
+           else ko->set_key_up(k);
+       }
+    else
+       {
+           log_error("gnash::notify_key_event(): no Key built-in\n");
+       }
+}
+
+// This has to be moved to Key.{cpp,h}
+void key_init(as_object* s_global)
+{
+//         GNASH_REPORT_FUNCTION;
+    // Create built-in key object.
+    as_object* key_obj = new key_as_object;
+
+    // constants
+#define KEY_CONST(k) key_obj->set_member(#k, key::k)
+    KEY_CONST(BACKSPACE);
+    KEY_CONST(CAPSLOCK);
+    KEY_CONST(CONTROL);
+    KEY_CONST(DELETEKEY);
+    KEY_CONST(DOWN);
+    KEY_CONST(END);
+    KEY_CONST(ENTER);
+    KEY_CONST(ESCAPE);
+    KEY_CONST(HOME);
+    KEY_CONST(INSERT);
+    KEY_CONST(LEFT);
+    KEY_CONST(PGDN);
+    KEY_CONST(PGUP);
+    KEY_CONST(RIGHT);
+    KEY_CONST(SHIFT);
+    KEY_CONST(SPACE);
+    KEY_CONST(TAB);
+    KEY_CONST(UP);
+
+    // methods
+    key_obj->set_member("addListener", &key_add_listener);
+    key_obj->set_member("getAscii", &key_get_ascii);
+    key_obj->set_member("getCode", &key_get_code);
+    key_obj->set_member("isDown", &key_is_down);
+    key_obj->set_member("isToggled", &key_is_toggled);
+    key_obj->set_member("removeListener", &key_remove_listener);
+
+    s_global->set_member("Key", key_obj);
+}
+
+} // end of gnash namespace
+

Index: server/asobj/Key.h
===================================================================
RCS file: server/asobj/Key.h
diff -N server/asobj/Key.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Key.h  22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,141 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+// Linking Gnash statically or dynamically with other modules is making
+// a combined work based on Gnash. Thus, the terms and conditions of
+// the GNU General Public License cover the whole combination.
+// 
+// In addition, as a special exception, the copyright holders of Gnash give
+// you permission to combine Gnash with free software programs or
+// libraries that are released under the GNU LGPL and/or with Mozilla, 
+// so long as the linking with Mozilla, or any variant of Mozilla, is
+// through its standard plug-in interface. You may copy and distribute
+// such a system following the terms of the GNU GPL for Gnash and the
+// licenses of the other code concerned, provided that you include the
+// source code of that other code when and as the GNU GPL requires
+// distribution of source code. 
+// 
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is
+// their choice whether to do so.  The GNU General Public License gives
+// permission to release a modified version without this exception; this
+// exception also makes it possible to release a modified version which
+// carries forward this exception.
+
+#ifndef __KEY_H__
+#define __KEY_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+#include "as_object.h" // for inheritance
+
+#ifdef WIN32
+#      undef _CONTROL
+#      undef _SPACE
+#      undef _UP
+#endif
+
+namespace gnash {
+  
+class Key {
+public:
+    Key();
+    ~Key();
+   void addListener();
+   void getAscii();
+   void getCode();
+   void isDown();
+   void isToggled();
+   void removeListener();
+private:
+    bool _BACKSPACE;
+    bool _CAPSLOCK;
+    bool _CONTROL;
+    bool _DELETEKEY;
+    bool _DOWN;
+    bool _END;
+    bool _ENTER;
+    bool _ESCAPE;
+    bool _HOME;
+    bool _INSERT;
+    bool _LEFT;
+    bool _onKeyDown;
+    bool _onKeyUp;
+    bool _PGDN;
+    bool _PGUP;
+    bool _RIGHT;
+    bool _SHIFT;
+    bool _SPACE;
+    bool _TAB;
+    bool _UP;
+};
+
+//struct key_as_object : public as_object
+//{
+    //Key obj;
+//};
+
+void key_addlistener(const fn_call& fn);
+void key_getascii(const fn_call& fn);
+void key_getcode(const fn_call& fn);
+void key_isdown(const fn_call& fn);
+void key_istoggled(const fn_call& fn);
+void key_removelistener(const fn_call& fn);
+
+/************************************************************************
+ *
+ * This has been moved from action.cpp, when things are clean
+ * everything should have been moved up
+ *
+ ************************************************************************/
+
+class key_as_object : public as_object
+{
+
+private:
+       uint8_t m_keymap[key::KEYCOUNT / 8 + 1];        // bit-array
+       std::vector<weak_ptr<as_object> >       m_listeners;
+       int     m_last_key_pressed;
+
+       void notify_listeners(const tu_stringi& funcname);
+public:
+       key_as_object();
+
+       bool is_key_down(int code);
+
+       void set_key_down(int code);
+
+       void set_key_up(int code);
+
+       void add_listener(as_object* listener);
+
+       void remove_listener(as_object* listener);
+
+       int get_last_key_pressed() const;
+};
+
+void key_init(as_object* global);
+
+} // end of gnash namespace
+
+// __KEY_H__
+#endif
+

Index: server/asobj/LoadVars.cpp
===================================================================
RCS file: server/asobj/LoadVars.cpp
diff -N server/asobj/LoadVars.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/LoadVars.cpp   22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,145 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "LoadVars.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+LoadVars::LoadVars() {
+}
+
+LoadVars::~LoadVars() {
+}
+
+
+void
+LoadVars::addRequestHeader()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+LoadVars::decode()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+LoadVars::getBytesLoaded()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+LoadVars::getBytesTotal()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+LoadVars::load()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+LoadVars::send()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+LoadVars::sendAndLoad()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+LoadVars::toString()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+loadvars_new(const fn_call& fn)
+{
+    loadvars_as_object *loadvars_obj = new loadvars_as_object;
+
+    loadvars_obj->set_member("addrequestheader", &loadvars_addrequestheader);
+    loadvars_obj->set_member("decode", &loadvars_decode);
+    loadvars_obj->set_member("getbytesloaded", &loadvars_getbytesloaded);
+    loadvars_obj->set_member("getbytestotal", &loadvars_getbytestotal);
+    loadvars_obj->set_member("load", &loadvars_load);
+    loadvars_obj->set_member("send", &loadvars_send);
+    loadvars_obj->set_member("sendandload", &loadvars_sendandload);
+    loadvars_obj->set_member("tostring", &loadvars_tostring);
+
+    fn.result->set_as_object(loadvars_obj);
+}
+void loadvars_addrequestheader(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void loadvars_decode(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void loadvars_getbytesloaded(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void loadvars_getbytestotal(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void loadvars_load(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void loadvars_send(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void loadvars_sendandload(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void loadvars_tostring(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/LoadVars.h
===================================================================
RCS file: server/asobj/LoadVars.h
diff -N server/asobj/LoadVars.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/LoadVars.h     22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,89 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __LOADVARS_H__
+#define __LOADVARS_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class LoadVars {
+public:
+    LoadVars();
+    ~LoadVars();
+   void addRequestHeader();
+   void decode();
+   void getBytesLoaded();
+   void getBytesTotal();
+   void load();
+   void send();
+   void sendAndLoad();
+   void toString();
+private:
+    bool _contentType;
+    bool _loaded;
+    bool _onData;
+    bool _onLoad;
+};
+
+struct loadvars_as_object : public as_object
+{
+    LoadVars obj;
+};
+
+void loadvars_new(const fn_call& fn);
+void loadvars_addrequestheader(const fn_call& fn);
+void loadvars_decode(const fn_call& fn);
+void loadvars_getbytesloaded(const fn_call& fn);
+void loadvars_getbytestotal(const fn_call& fn);
+void loadvars_load(const fn_call& fn);
+void loadvars_send(const fn_call& fn);
+void loadvars_sendandload(const fn_call& fn);
+void loadvars_tostring(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __LOADVARS_H__
+#endif
+

Index: server/asobj/LocalConnection.cpp
===================================================================
RCS file: server/asobj/LocalConnection.cpp
diff -N server/asobj/LocalConnection.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/LocalConnection.cpp    22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,233 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <errno.h>
+
+#include "log.h"
+#include "LocalConnection.h"
+#include "network.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+// \class LocalConnection
+/// \brief Open a connection between two SWF movies so they can send
+/// each other Flash Objects to be executed.
+///
+LocalConnection::LocalConnection() {
+}
+
+LocalConnection::~LocalConnection() {
+}
+
+/// \brief Closes (disconnects) the LocalConnection object.
+void
+LocalConnection::close()
+{
+#ifdef NETWORK_CONN
+    closeNet();
+#else
+    closeMem();
+#endif
+}
+
+/// \brief Prepares the LocalConnection object to receive commands from a
+/// LocalConnection.send() command.
+/// 
+/// The name is a symbolic name like "lc_name", that is used by the
+/// send() command to signify which local connection to send the
+/// object to.
+bool
+LocalConnection::connect(const char *name)
+{
+#ifdef NETWORK_CONN
+    short lastport;
+    const char *lcname;
+
+    std::map<const char *, short>::const_iterator it;
+    for (it = _allocated.begin(); it != _allocated.end(); it++) {
+        lcname = it->first;
+        lastport  = it->second;
+        if (strcmp(name, lcname) == 0) {
+            log_msg("ERROR: %s already allocated!\n", name);
+            return false;
+        }
+    }
+
+    // Allocate the tcp/ip port adfter the last allocated one.
+    if (lastport != 0) {
+        _allocated[name] = lastport+1;
+    }
+
+    // Create the socket
+    if (createServer(lastport+1)) {
+        log_msg("New server started for \"%s\" connections.\n", name);
+    } else {
+        log_msg("ERROR: Couldn't create a new server for \"%s\"!\n");
+        return false;
+    }
+
+    if (newConnection(false)) {
+        log_msg("New connection started for \"%s\" connections.\n", name);
+//        writeNet(heloCreate(_version));
+        return true;
+    } else {
+        if (errno == EAGAIN) {
+            log_msg("No clients tried to connect within the allocated time 
limit\n");
+            return false;
+        }
+        else {
+            log_msg("ERROR: Couldn't create a new connection!\n");
+        }
+            
+        return false;
+    }
+#else
+    if (attach(name, true) == false) {
+        return false;
+    }
+#endif
+    _name = name;
+
+    return true;
+}
+
+/// \brief Returns a string representing the superdomain of the
+/// location of the current SWF file.
+///
+/// The domain is either the "localhost", or the hostname from the
+/// network connection. This behaviour changed for SWF v7. Prior to v7
+/// only the domain was returned, ie dropping off node names like
+/// "www". As of v7, the behaviour is to return the full host
+/// name. Gnash defaults to the v7 behaviour.
+/// \note If this becomes a problem, we'll have to implemented the
+/// older behaviour based on the version of the flash movie being
+/// played.
+std::string
+LocalConnection::domain(void)
+{
+    if (_name.size() == 0) {
+        return "localhost";
+    } else {
+        return _name;
+    }
+}
+
+/// \brief Invokes a method on a specified LocalConnection object.
+void
+LocalConnection::send()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+/// \brief Instantiate a new LocalConnection object within a flash movie
+void
+localconnection_new(const fn_call& fn)
+{
+    localconnection_as_object *localconnection_obj = new 
localconnection_as_object;
+
+    localconnection_obj->set_member("close", &localconnection_close);
+    localconnection_obj->set_member("connect", &localconnection_connect);
+    localconnection_obj->set_member("domain", &localconnection_domain);
+    localconnection_obj->set_member("send", &localconnection_send);
+#ifdef ENABLE_TESTING
+#ifdef NETWORK_CONN
+    localconnection_obj->set_member("connected",  &network_connected);
+    localconnection_obj->set_member("getfilefd",  &network_getfilefd);
+    localconnection_obj->set_member("getlistenfd",  &network_getlistenfd);
+#else
+    localconnection_obj->set_member("getname",  &shm_getname);
+    localconnection_obj->set_member("getsize",  &shm_getsize);
+    localconnection_obj->set_member("getallocated",  &shm_getallocated);
+    localconnection_obj->set_member("exists",  &shm_exists);
+#endif
+#endif
+
+    fn.result->set_as_object(localconnection_obj);
+}
+
+/// \brief The callback for LocalConnection::close()
+void localconnection_close(const fn_call& fn)
+{
+//    log_msg("%s: %d args\n", __PRETTY_FUNCTION__, fn.nargs);
+    
+    localconnection_as_object *ptr = (localconnection_as_object*)fn.this_ptr;
+    assert(ptr);
+    
+    ptr->obj.close();
+}
+
+/// \brief The callback for LocalConnection::connect()
+void localconnection_connect(const fn_call& fn)
+{
+//    log_msg("%s: %d args\n", __PRETTY_FUNCTION__, fn.nargs);
+    bool ret;
+    localconnection_as_object *ptr = (localconnection_as_object*)fn.this_ptr;
+    
+    assert(ptr);
+    if (fn.nargs != 0) {
+        ret = 
ptr->obj.connect(fn.env->bottom(fn.first_arg_bottom_index).to_string());
+    } else {
+        log_msg("ERROR: No connection name specified to 
LocalConnection.connect()!\n");
+        ret = ptr->obj.connect("localhost"); // FIXME: This should probably
+                                       // fail instead
+    }
+    fn.result->set_bool(ret);
+}
+
+/// \brief The callback for LocalConnection::domain()
+void localconnection_domain(const fn_call& fn)
+{
+//    log_msg("%s:\n", __PRETTY_FUNCTION__);
+    localconnection_as_object *ptr = (localconnection_as_object*)fn.this_ptr;
+    assert(ptr);
+    fn.result->set_tu_string(ptr->obj.domain().c_str());
+}
+
+// \brief The callback for LocalConnection::send()
+void localconnection_send(const fn_call& /*fn*/)
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/LocalConnection.h
===================================================================
RCS file: server/asobj/LocalConnection.h
diff -N server/asobj/LocalConnection.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/LocalConnection.h      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,95 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __LOCALCONNECTION_H__
+#define __LOCALCONNECTION_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string>
+#include <map>
+
+#include "impl.h"
+#include "log.h"
+#ifdef NETWORK_CONN
+#include "network.h"
+#else
+#include "shm.h"
+#endif
+
+namespace gnash {
+  
+#ifdef NETWORK_CONN
+class LocalConnection : public Network {
+#else
+class LocalConnection : public Shm {
+#endif
+public:
+    LocalConnection();
+    ~LocalConnection();
+    void close(void);
+    bool connect(const char *name);
+    std::string domain(void);
+    void send();
+// FIXME: these should be callbacks
+//     bool        _allowDomain;
+//     bool        _allowInsecureDomain;
+//     bool        _onStatus;
+private:
+    std::string _name;
+    std::map<const char *, short> _allocated;
+};
+
+struct localconnection_as_object : public as_object
+{
+    LocalConnection obj;
+};
+
+void localconnection_new(const fn_call& fn);
+void localconnection_close(const fn_call& fn);
+void localconnection_connect(const fn_call& fn);
+void localconnection_domain(const fn_call& fn);
+void localconnection_send(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __LOCALCONNECTION_H__
+#endif
+

Index: server/asobj/Makefile.am
===================================================================
RCS file: server/asobj/Makefile.am
diff -N server/asobj/Makefile.am
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Makefile.am    22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,126 @@
+## Process this file with automake to generate Makefile.in
+# 
+#   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+# Linking Gnash statically or dynamically with other modules is making a
+# combined work based on Gnash. Thus, the terms and conditions of the GNU
+# General Public License cover the whole combination.
+#
+# As a special exception, the copyright holders of Gnash give you
+# permission to combine Gnash with free software programs or libraries
+# that are released under the GNU LGPL and with code included in any
+# release of Talkback distributed by the Mozilla Foundation. You may
+# copy and distribute such a system following the terms of the GNU GPL
+# for all but the LGPL-covered parts and Talkback, and following the
+# LGPL for the LGPL-covered parts.
+#
+# Note that people who make modified versions of Gnash are not obligated
+# to grant this special exception for their modified versions; it is their
+# choice whether to do so. The GNU General Public License gives permission
+# to release a modified version without this exception; this exception
+# also makes it possible to release a modified version which carries
+# forward this exception.
+# 
+#
+
+AUTOMAKE_OPTIONS = 
+
+AM_CPPFLAGS = 
+
+noinst_LTLIBRARIES = libgnashasobjs.la 
+
+# Only enable if we're configured with --enable-mp3
+INCLUDES = \
+       -I$(top_srcdir)/server \
+       -I$(top_srcdir)/server/swf \
+        -I$(top_srcdir)/libbase \
+        -I$(top_srcdir)        \
+       $(PTHREAD_CFLAGS) \
+        $(ENGINE_INCLUDE) \
+        $(ZLIB_CFLAGS) \
+        $(OGG_CFLAGS) \
+        $(JPEG_CFLAGS) \
+        $(SDL_CFLAGS) \
+        $(SDL_MIXER_CFLAGS) \
+        $(OPENGL_CFLAGS) \
+       $(GTK2_CFLAGS) \
+       $(PANGO_CFLAGS) \
+       $(GLIB_CFLAGS) \
+       $(CAIRO_CFLAGS) \
+       $(ATK_CFLAGS) \
+       $(DMALLOC_CFLAGS) \
+        $(LIBXML_CFLAGS)
+
+libgnashasobjs_la_SOURCES = \
+       Boolean.cpp     \
+       Camera.cpp      \
+       Color.cpp       \
+       ContextMenu.cpp \
+       CustomActions.cpp\
+       Date.cpp        \
+       Error.cpp       \
+       Global.cpp      \
+       Key.cpp         \
+       LoadVars.cpp    \
+       LocalConnection.cpp\
+       Microphone.cpp  \
+       Math.cpp        \
+       Mouse.cpp       \
+        MovieClipLoader.cpp\
+       NetConnection.cpp\
+       NetStream.cpp   \
+       Selection.cpp   \
+       SharedObject.cpp\
+       ASSound.cpp     \
+       Stage.cpp       \
+       System.cpp      \
+       TextSnapshot.cpp\
+       Video.cpp
+
+noinst_HEADERS = \
+       ASSound.h       \
+       Boolean.h       \
+       Camera.h        \
+       Color.h         \
+       ContextMenu.h   \
+       CustomActions.h \
+       Date.h          \
+       Error.h         \
+       Key.h \
+       LoadVars.h      \
+       LocalConnection.h\
+       Microphone.h    \
+       Math.h          \
+       Mouse.h         \
+       MovieClipLoader.h \
+       NetConnection.h \
+       NetStream.h     \
+       Selection.h     \
+       SharedObject.h  \
+       Stage.h         \
+       System.h        \
+       TextSnapshot.h  \
+       Video.h
+
+
+# Rebuild with GCC 4.x Mudflap support
+mudflap:
+       @echo "Rebuilding with GCC Mudflap support"
+       $(MAKE) CXXFLAGS="$(CXXFLAGS) -fmudflap" LDFLAGS="$(LDFLAGS) -lmudflap"
+
+clean-hook:
+       -rm -f core.*
+

Index: server/asobj/Math.cpp
===================================================================
RCS file: server/asobj/Math.cpp
diff -N server/asobj/Math.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Math.cpp       22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,280 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Math.h"
+#include "tu_random.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Math::Math() {
+}
+
+Math::~Math() {
+}
+
+
+void
+Math::abs()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::acos()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::asin()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::atan()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::atan2()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::ceil()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::cos()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::exp()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::floor()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::log()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::max()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::min()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::pow()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::random()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::round()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::sin()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::sqrt()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Math::tan()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void math_init(as_object* s_global)
+{
+    // Create built-in math object.
+    as_object* math_obj = new math_as_object;
+
+    s_global->set_member("math", math_obj);
+}
+               
+//
+// math object
+//
+
+
+#if 0
+// One-argument simple functions.
+#define MATH_WRAP_FUNC1(funcname)                                              
        \
+       void    math_##funcname(as_value* result, as_object* this_ptr,          
\
+                               as_environment* env, int nargs, int 
first_arg_bottom_index)     \
+       {                                                                       
                \
+               double  arg = env->bottom(first_arg_bottom_index).to_number();  
                \
+               result->set_double(funcname(arg));                              
                \
+       }
+#else
+// One-argument simple functions.
+#define MATH_WRAP_FUNC1(funcname)                                              
        \
+       void    math_##funcname(const fn_call& fn)                              
                \
+       {                                                                       
                \
+               double  arg = fn.arg(0).to_number();                            
                \
+               fn.result->set_double(funcname(arg));                           
                \
+       }
+#endif
+
+MATH_WRAP_FUNC1(fabs);
+MATH_WRAP_FUNC1(acos);
+MATH_WRAP_FUNC1(asin);
+MATH_WRAP_FUNC1(atan);
+MATH_WRAP_FUNC1(ceil);
+MATH_WRAP_FUNC1(cos);
+MATH_WRAP_FUNC1(exp);
+MATH_WRAP_FUNC1(floor);
+MATH_WRAP_FUNC1(log);
+MATH_WRAP_FUNC1(sin);
+MATH_WRAP_FUNC1(sqrt);
+MATH_WRAP_FUNC1(tan);
+
+#if 0
+// Two-argument functions.
+#define MATH_WRAP_FUNC2_EXP(funcname, expr)                                    
                                        \
+       void    math_##funcname(as_value* result, as_object* this_ptr, 
as_environment* env, int nargs, int first_arg_bottom_index)      \
+       {                                                                       
                                                \
+               double  arg0 = env->bottom(first_arg_bottom_index).to_number(); 
                                                \
+               double  arg1 = env->bottom(first_arg_bottom_index - 
1).to_number();                                             \
+               result->set_double(expr);                                       
                                                \
+       }
+#else
+// Two-argument functions.
+#define MATH_WRAP_FUNC2_EXP(funcname, expr)                                    
                                        \
+       void    math_##funcname(const fn_call& fn)                              
                                                \
+       {                                                                       
                                                \
+               double  arg0 = fn.arg(0).to_number();                           
                                                \
+               double  arg1 = fn.arg(1).to_number();                           
                                                \
+               fn.result->set_double(expr);                                    
                                                \
+       }
+#endif
+MATH_WRAP_FUNC2_EXP(atan2, (atan2(arg0, arg1)));
+MATH_WRAP_FUNC2_EXP(max, (arg0 > arg1 ? arg0 : arg1));
+MATH_WRAP_FUNC2_EXP(min, (arg0 < arg1 ? arg0 : arg1));
+MATH_WRAP_FUNC2_EXP(pow, (pow(arg0, arg1)));
+
+// A couple of oddballs.
+void   math_random(const fn_call& fn)
+{
+    // Random number between 0 and 1.
+    fn.result->set_double(tu_random::next_random() / 
double(uint32_t(0x0FFFFFFFF)));
+}
+void   math_round(const fn_call& fn)
+{
+    // round argument to nearest int.
+    double     arg0 = fn.arg(0).to_number();
+    fn.result->set_double(floor(arg0 + 0.5));
+}
+       
+
+
+math_as_object::math_as_object()
+       :
+       as_object()
+{
+
+       // constant
+       set_member("e", 2.7182818284590452354);
+       set_member("ln2", 0.69314718055994530942);
+       set_member("log2e", 1.4426950408889634074);
+       set_member("ln10", 2.30258509299404568402);
+       set_member("log10e", 0.43429448190325182765);
+       set_member("pi", 3.14159265358979323846);
+       set_member("sqrt1_2", 0.7071067811865475244);
+       set_member("sqrt2", 1.4142135623730950488);
+
+       // math methods
+       set_member("abs", &math_abs);
+       set_member("acos", &math_acos);
+       set_member("asin", &math_asin);
+       set_member("atan", &math_atan);
+       set_member("ceil", &math_ceil);
+       set_member("cos", &math_cos);
+       set_member("exp", &math_exp);
+       set_member("floor", &math_floor);
+       set_member("log", &math_log);
+       set_member("random", &math_random);
+       set_member("round", &math_round);
+       set_member("sin", &math_sin);
+       set_member("sqrt", &math_sqrt);
+       set_member("tan", &math_tan);
+
+       set_member("atan2", &math_atan2);
+       set_member("max", &math_max);
+       set_member("min", &math_min);
+       set_member("pow", &math_pow);
+}
+
+void
+math_new(const fn_call& fn)
+{
+    math_as_object *math_obj = new math_as_object;
+    fn.result->set_as_object(math_obj);
+}
+
+void math_abs(const fn_call& fn) {
+       return math_fabs(fn);
+    //log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+
+} // end of gnash namespace
+

Index: server/asobj/Math.h
===================================================================
RCS file: server/asobj/Math.h
diff -N server/asobj/Math.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Math.h 22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,103 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef __MATH_H__
+#define __MATH_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef WIN32
+# undef min
+# undef max
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Math {
+public:
+    Math();
+    ~Math();
+   void abs();
+   void acos();
+   void asin();
+   void atan();
+   void atan2();
+   void ceil();
+   void cos();
+   void exp();
+   void floor();
+   void log();
+   void max();
+   void min();
+   void pow();
+   void random();
+   void round();
+   void sin();
+   void sqrt();
+   void tan();
+private:
+    bool _E;
+    bool _LN2;
+    bool _LN10;
+    bool _LOG2E;
+    bool _LOG10E;
+    bool _PI;
+    bool _SQRT1_2;
+    bool _SQRT2;
+};
+
+class math_as_object : public as_object
+{
+private:
+       //Math obj;
+
+public:
+       math_as_object();
+};
+
+void math_abs(const fn_call& fn);
+void math_acos(const fn_call& fn);
+void math_asin(const fn_call& fn);
+void math_atan(const fn_call& fn);
+void math_atan2(const fn_call& fn);
+void math_ceil(const fn_call& fn);
+void math_cos(const fn_call& fn);
+void math_exp(const fn_call& fn);
+void math_floor(const fn_call& fn);
+void math_log(const fn_call& fn);
+void math_max(const fn_call& fn);
+void math_min(const fn_call& fn);
+void math_pow(const fn_call& fn);
+void math_random(const fn_call& fn);
+void math_round(const fn_call& fn);
+void math_sin(const fn_call& fn);
+void math_sqrt(const fn_call& fn);
+void math_tan(const fn_call& fn);
+
+void math_init(as_object* s_global);
+
+} // end of gnash namespace
+
+// __MATH_H__
+#endif
+

Index: server/asobj/Microphone.cpp
===================================================================
RCS file: server/asobj/Microphone.cpp
diff -N server/asobj/Microphone.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Microphone.cpp 22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,115 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Microphone.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Microphone::Microphone() {
+}
+
+Microphone::~Microphone() {
+}
+
+
+void
+Microphone::get()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Microphone::setGain()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Microphone::setRate()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Microphone::setSilenceLevel()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Microphone::setUseEchoSuppression()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+microphone_new(const fn_call& fn)
+{
+    microphone_as_object *microphone_obj = new microphone_as_object;
+
+    microphone_obj->set_member("get", &microphone_get);
+    microphone_obj->set_member("setgain", &microphone_setgain);
+    microphone_obj->set_member("setrate", &microphone_setrate);
+    microphone_obj->set_member("setsilencelevel", &microphone_setsilencelevel);
+    microphone_obj->set_member("setuseechosuppression", 
&microphone_setuseechosuppression);
+
+    fn.result->set_as_object(microphone_obj);
+}
+void microphone_get(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void microphone_setgain(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void microphone_setrate(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void microphone_setsilencelevel(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void microphone_setuseechosuppression(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/Microphone.h
===================================================================
RCS file: server/asobj/Microphone.h
diff -N server/asobj/Microphone.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Microphone.h   22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,91 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __MICROPHONE_H__
+#define __MICROPHONE_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Microphone {
+public:
+    Microphone();
+    ~Microphone();
+   void get();
+   void setGain();
+   void setRate();
+   void setSilenceLevel();
+   void setUseEchoSuppression();
+private:
+    bool _activityLevel;
+    bool _gain;
+    bool _index;
+    bool _muted;
+    bool _name;
+    bool _names;
+    bool _onActivity;
+    bool _onStatus;
+    bool _rate;
+    bool _silenceLevel;
+    bool _silenceTimeOut;
+    bool _useEchoSuppression;
+};
+
+struct microphone_as_object : public as_object
+{
+    Microphone obj;
+};
+
+void microphone_new(const fn_call& fn);
+void microphone_get(const fn_call& fn);
+void microphone_setgain(const fn_call& fn);
+void microphone_setrate(const fn_call& fn);
+void microphone_setsilencelevel(const fn_call& fn);
+void microphone_setuseechosuppression(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __MICROPHONE_H__
+#endif
+

Index: server/asobj/Mouse.cpp
===================================================================
RCS file: server/asobj/Mouse.cpp
diff -N server/asobj/Mouse.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Mouse.cpp      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,105 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Mouse.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Mouse::Mouse() {
+}
+
+Mouse::~Mouse() {
+}
+
+
+void
+Mouse::addListener()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Mouse::hide()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Mouse::removeListener()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Mouse::show()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+mouse_new(const fn_call& fn)
+{
+    mouse_as_object *mouse_obj = new mouse_as_object;
+
+    mouse_obj->set_member("addlistener", &mouse_addlistener);
+    mouse_obj->set_member("hide", &mouse_hide);
+    mouse_obj->set_member("removelistener", &mouse_removelistener);
+    mouse_obj->set_member("show", &mouse_show);
+
+    fn.result->set_as_object(mouse_obj);
+}
+void mouse_addlistener(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void mouse_hide(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void mouse_removelistener(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void mouse_show(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/Mouse.h
===================================================================
RCS file: server/asobj/Mouse.h
diff -N server/asobj/Mouse.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Mouse.h        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,81 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __MOUSE_H__
+#define __MOUSE_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Mouse {
+public:
+    Mouse();
+    ~Mouse();
+   void addListener();
+   void hide();
+   void removeListener();
+   void show();
+private:
+    bool _onown;
+    bool _onove;
+    bool _onp;
+    bool _onheel;
+};
+
+struct mouse_as_object : public as_object
+{
+    Mouse obj;
+};
+
+void mouse_new(const fn_call& fn);
+void mouse_addlistener(const fn_call& fn);
+void mouse_hide(const fn_call& fn);
+void mouse_removelistener(const fn_call& fn);
+void mouse_show(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __MOUSE_H__
+#endif
+

Index: server/asobj/MovieClipLoader.cpp
===================================================================
RCS file: server/asobj/MovieClipLoader.cpp
diff -N server/asobj/MovieClipLoader.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/MovieClipLoader.cpp    22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,560 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+// Implementation of ActionScript MovieClipLoader class.
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "tu_config.h"
+#include "as_function.h"
+#include "MovieClipLoader.h"
+#include "movie_definition.h"
+#include "log.h"
+#include "tu_file.h"
+#include "image.h"
+//#include "render.h"
+//#include "impl.h"
+#include "URL.h"
+#include "GnashException.h"
+#include "sprite_instance.h"
+#include "character.h"
+#include "fn_call.h"
+
+
+#ifdef HAVE_LIBXML
+// TODO: http and sockets and such ought to be factored out into an
+// abstract driver, like we do for file access.
+#include <libxml/nanohttp.h>
+#ifdef HAVE_WINSOCK
+# include <windows.h>
+# include <sys/stat.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <fcntl.h>
+#endif
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <typeinfo> 
+#include <string>
+
+namespace gnash {
+
+  
+  MovieClipLoader::MovieClipLoader()
+      // :     character(0, 0)
+{
+  log_msg("%s: \n", __FUNCTION__);
+  _mcl.bytes_loaded = 0;
+  _mcl.bytes_total = 0;  
+}
+
+MovieClipLoader::~MovieClipLoader()
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+void
+MovieClipLoader::load(const tu_string& /*filespec*/)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+// progress of the downloaded file(s).
+struct mcl *
+MovieClipLoader::getProgress(as_object* /*ao*/)
+{
+  //log_msg("%s: \n", __FUNCTION__);
+
+  return &_mcl;
+}
+
+
+bool
+MovieClipLoader::loadClip(const tu_string&, void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+
+  return false;
+}
+
+void
+MovieClipLoader::unloadClip(void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+
+void
+MovieClipLoader::addListener(void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+
+void
+MovieClipLoader::removeListener(void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+  
+// Callbacks
+void
+MovieClipLoader::onLoadStart(void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+void
+MovieClipLoader::onLoadProgress(void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+void
+MovieClipLoader::onLoadInit(void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+void
+MovieClipLoader::onLoadComplete(void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+void
+MovieClipLoader::onLoadError(void *)
+{
+  log_msg("%s: \n", __FUNCTION__);
+}
+
+void
+MovieClipLoader::on_button_event(event_id event)
+{
+  log_msg("%s: \n", __FUNCTION__);
+  
+  // Set our mouse state (so we know how to render).
+  switch (event.m_id)
+    {
+    case event_id::ROLL_OUT:
+    case event_id::RELEASE_OUTSIDE:
+      _mouse_state = MOUSE_UP;
+      break;
+      
+    case event_id::RELEASE:
+    case event_id::ROLL_OVER:
+    case event_id::DRAG_OUT:
+      _mouse_state = MOUSE_OVER;
+      break;
+      
+    case event_id::PRESS:
+    case event_id::DRAG_OVER:
+      _mouse_state = MOUSE_DOWN;
+      break;
+      
+    default:
+      assert(0);       // missed a case?
+      break;
+    };
+  
+  // @@ eh, should just be a lookup table.
+#if 0
+  // Add appropriate actions to the movie's execute list...
+  for (int i = 0; i < m_def->m_button_actions.size(); i++) {
+    if (m_def->m_button_actions[i].m_conditions & c) {
+      // Matching action.
+      for (int j = 0; j < m_def->m_button_actions[i].m_actions.size(); j++) {
+        
get_parent()->add_action_buffer(m_def->m_button_actions[i].m_actions[j]);
+      }
+    }
+  }
+#endif
+  // Call conventional attached method.
+  // @@ TODO
+}
+
+void moviecliploader_loadclip(const fn_call& fn)
+{
+       as_value        val, method;
+
+       log_msg("%s: nargs = %d\n", __FUNCTION__, fn.nargs);
+
+       moviecliploader_as_object* ptr = \
+               dynamic_cast<moviecliploader_as_object*>(fn.this_ptr);
+
+       assert(ptr);
+  
+       as_value& url_arg = fn.arg(0);
+       if ( url_arg.get_type() != as_value::STRING )
+       {
+               log_error("Malformed SWF, MovieClipLoader.loadClip() first 
argument is not a string (%s)", url_arg.to_string());
+               fn.result->set_bool(false);
+               return;
+       }
+
+       tu_string tu_url = fn.arg(0).to_string(); 
+       character* target = fn.env->find_target(fn.arg(1));
+       if ( ! target )
+       {
+               log_error("Could not find target %s", fn.arg(1).to_string());
+               fn.result->set_bool(false);
+               return;
+       }
+
+       log_msg("load clip: %s, target is: %p\n",
+               tu_url.c_str(), (void*)target);
+
+       // Get a pointer to target's sprite parent (for URL resolution)
+       character* parent = target->get_parent();
+       assert(parent);
+
+       //
+       // Extract root movie URL 
+       // @@ could be cached somewhere...
+       //
+       as_value parent_url;
+       if ( ! parent->get_member("_url", &parent_url) )
+       {
+               log_msg("FIXME: no _url member in target parent!");
+       }
+
+       log_msg(" target's parent url: %s\n", parent_url.to_string());
+
+       //
+       // Resolve relative urls
+       // @@ todo
+
+       // We have a problem with exceptions here...
+       // unless we heap-allocate the URL or define
+       // a default ctor + assignment op we can't
+       // wrap in a try/catch block w/out hiding
+       // the variable inside the block.
+       //
+       URL url(tu_url.c_str(), URL(parent_url.to_string()));
+       
+       log_msg(" resolved url: %s\n", url.str().c_str());
+                        
+       // Call the callback since we've started loading the file
+       if (fn.this_ptr->get_member("onLoadStart", &method))
+       {
+       //log_msg("FIXME: Found onLoadStart!\n");
+               as_c_function_ptr       func = method.to_c_function();
+               fn.env->set_variable("success", true);
+               if (func)
+               {
+                       // It's a C function.  Call it.
+                       //log_msg("Calling C function for onLoadStart\n");
+                       (*func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
+               }
+               else if (as_function* as_func = method.to_as_function())
+               {
+               // It's an ActionScript function.  Call it.
+                       //log_msg("Calling ActionScript function for 
onLoadStart\n");
+                       (*as_func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
+               }
+               else
+               {
+                       log_error("error in call_method(): method is not a 
function\n");
+               }    
+       }
+
+       // Call the callback since we've started loading the file
+       if (fn.this_ptr->get_member("onLoadStart", &method))
+       {
+       //log_msg("FIXME: Found onLoadStart!\n");
+               as_c_function_ptr       func = method.to_c_function();
+               fn.env->set_variable("success", true);
+               if (func)
+               {
+                       // It's a C function.  Call it.
+                       //log_msg("Calling C function for onLoadStart\n");
+                       (*func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
+               }
+               else if (as_function* as_func = method.to_as_function())
+               {
+               // It's an ActionScript function.  Call it.
+                       //log_msg("Calling ActionScript function for 
onLoadStart\n");
+                       (*as_func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
+               }
+               else
+               {
+                       log_error("error in call_method(): method is not a 
function\n");
+               }    
+       }
+
+       std::string path = url.path();
+       std::string suffix = path.substr(path.size() - 4);
+       log_msg("File suffix to load is: %s\n", suffix.c_str());
+
+       movie_definition* md = create_library_movie(url);
+       if (md == NULL) {
+               log_error("can't create movie_definition for %s\n",
+                       url.str().c_str());
+               fn.result->set_bool(false);
+               return;
+       }
+
+       log_msg("movie definition created\n");
+
+       gnash::movie_interface* extern_movie;
+       extern_movie = md->create_instance();
+       if (extern_movie == NULL) {
+               log_error("can't create extern movie_interface "
+                       "for %s\n", url.str().c_str());
+               fn.result->set_bool(false);
+               return;
+       }
+
+       log_msg("movie instance created\n");
+
+       save_extern_movie(extern_movie);
+
+       character* tar = target;
+       const char* name = tar->get_name().c_str();
+       uint16_t depth = tar->get_depth();
+       bool use_cxform = false;
+       cxform color_transform =  tar->get_cxform();
+       bool use_matrix = false;
+       matrix mat = tar->get_matrix();
+       float ratio = tar->get_ratio();
+       uint16_t clip_depth = tar->get_clip_depth();
+
+       character* new_movie = extern_movie->get_root_movie();
+
+       new_movie->set_parent(parent);
+
+       parent->replace_display_object(
+                          new_movie,
+                          name,
+                          depth,
+                          use_cxform,
+                          color_transform,
+                          use_matrix,
+                          mat,
+                          ratio,
+                          clip_depth);
+  
+       struct mcl *mcl_data = ptr->mov_obj.getProgress(target);
+
+       // the callback since we're done loading the file
+       // FIXME: these both probably shouldn't be set to the same value
+       //mcl_data->bytes_loaded = stats.st_size;
+       //mcl_data->bytes_total = stats.st_size;
+       mcl_data->bytes_loaded = 666; // fake values for now
+       mcl_data->bytes_total = 666;
+
+       fn.env->set_member("target_mc", target);
+       moviecliploader_onload_complete(fn);
+       //env->pop();
+  
+       fn.result->set_bool(true);
+
+}
+
+void
+moviecliploader_unloadclip(const fn_call& fn)
+{
+  const tu_string filespec = fn.arg(0).to_string();
+  log_msg("%s: FIXME: Load Movie Clip: %s\n", __FUNCTION__, filespec.c_str());
+  
+}
+
+void
+moviecliploader_new(const fn_call& fn)
+{
+
+  log_msg("%s: args=%d\n", __FUNCTION__, fn.nargs);
+  
+  //const tu_string filespec = fn.arg(0).to_string();
+  
+  as_object*   mov_obj = new moviecliploader_as_object;
+  //log_msg("\tCreated New MovieClipLoader object at %p\n", mov_obj);
+
+  mov_obj->set_member("loadClip",
+                      &moviecliploader_loadclip);
+  mov_obj->set_member("unloadClip",
+                      &moviecliploader_unloadclip);
+  mov_obj->set_member("getProgress",
+                      &moviecliploader_getprogress);
+
+#if 0
+  // Load the default event handlers. These should really never
+  // be called directly, as to be useful they are redefined
+  // within the SWF script. These get called if there is a problem
+  // Setup the event handlers
+  mov_obj->set_event_handler(event_id::LOAD_INIT,
+                             (as_c_function_ptr)&event_test);
+  mov_obj->set_event_handler(event_id::LOAD_START,
+                             (as_c_function_ptr)&event_test);
+  mov_obj->set_event_handler(event_id::LOAD_PROGRESS,
+                             (as_c_function_ptr)&event_test);
+  mov_obj->set_event_handler(event_id::LOAD_ERROR,
+                             (as_c_function_ptr)&event_test);
+#endif
+  
+  fn.result->set_as_object(mov_obj);
+}
+
+void
+moviecliploader_onload_init(const fn_call& /*fn*/)
+{
+  log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
+}
+
+// Invoked when a call to MovieClipLoader.loadClip() has successfully
+// begun to download a file.
+void
+moviecliploader_onload_start(const fn_call& /*fn*/)
+{
+  log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
+}
+
+// Invoked every time the loading content is written to disk during
+// the loading process.
+void
+moviecliploader_getprogress(const fn_call& fn)
+{
+  //log_msg("%s: nargs = %d\n", __FUNCTION__, nargs);
+  
+  moviecliploader_as_object*   ptr = (moviecliploader_as_object*) (as_object*) 
fn.this_ptr;
+  assert(ptr);
+  
+  as_object *target = (as_object*) fn.arg(0).to_object();
+  
+  struct mcl *mcl_data = ptr->mov_obj.getProgress(target);
+
+  mcl_as_object *mcl_obj = (mcl_as_object *)new mcl_as_object;
+
+  mcl_obj->set_member("bytesLoaded", mcl_data->bytes_loaded);
+  mcl_obj->set_member("bytesTotal",  mcl_data->bytes_total);
+  
+  fn.result->set_as_object(mcl_obj);
+}
+
+// Invoked when a file loaded with MovieClipLoader.loadClip() has
+// completely downloaded.
+void
+moviecliploader_onload_complete(const fn_call& fn)
+{
+  as_value     val, method;
+  //log_msg("%s: FIXME: nargs = %d\n", __FUNCTION__, nargs);
+  //moviecliploader_as_object* ptr = (moviecliploader_as_object*) (as_object*) 
this_ptr;
+  
+  tu_string url = fn.arg(0).to_string();  
+  //as_object *target = (as_object *)env->bottom(first_arg-1).to_object();
+  //log_msg("load clip: %s, target is: %p\n", url.c_str(), target);
+
+  //log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
+  if (fn.this_ptr->get_member("onLoadComplete", &method)) {
+    //log_msg("FIXME: Found onLoadComplete!\n");
+    as_c_function_ptr  func = method.to_c_function();
+    fn.env->set_variable("success", true);
+    if (func)
+      {
+        // It's a C function.  Call it.
+        //log_msg("Calling C function for onLoadComplete\n");
+        (*func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
+      }
+    else if (as_function* as_func = method.to_as_function())
+      {
+        // It's an ActionScript function.  Call it.
+        //log_msg("Calling ActionScript function for onLoadComplete\n");
+        (*as_func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
+      }
+    else
+      {
+        log_error("error in call_method(): method is not a function\n");
+      }    
+  } else {
+    log_error("Couldn't find onLoadComplete!\n");
+  }
+}
+
+// Invoked when a file loaded with MovieClipLoader.loadClip() has failed to 
load.
+void
+moviecliploader_onload_error(const fn_call& fn)
+{
+  //log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
+  as_value     val, method;
+  log_msg("%s: FIXME: nargs = %d\n", __FUNCTION__, fn.nargs);
+  //moviecliploader_as_object* ptr = (moviecliploader_as_object*) (as_object*) 
this_ptr;
+  
+  tu_string url = fn.arg(0).to_string();  
+  as_object *target = (as_object*) fn.arg(1).to_object();
+  log_msg("load clip: %s, target is: %p\n", url.c_str(), (void *)target);
+
+  //log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
+  if (fn.this_ptr->get_member("onLoadError", &method)) {
+    //log_msg("FIXME: Found onLoadError!\n");
+    as_c_function_ptr  func = method.to_c_function();
+    fn.env->set_variable("success", true);
+    if (func)
+      {
+        // It's a C function.  Call it.
+        log_msg("Calling C function for onLoadError\n");
+        (*func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
+      }
+    else if (as_function* as_func = method.to_as_function())
+      {
+        // It's an ActionScript function.  Call it.
+        log_msg("Calling ActionScript function for onLoadError\n");
+        (*as_func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
+      }
+    else
+      {
+        log_error("error in call_method(): method is not a function\n");
+      }    
+  } else {
+    log_error("Couldn't find onLoadError!\n");
+  }
+}
+
+// This is the default event handler. To wind up here is an error.
+void
+moviecliploader_default(const fn_call& /*fn*/)
+{
+  log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
+}
+
+} // end of gnash namespace

Index: server/asobj/MovieClipLoader.h
===================================================================
RCS file: server/asobj/MovieClipLoader.h
diff -N server/asobj/MovieClipLoader.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/MovieClipLoader.h      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,118 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+// Implementation of ActionScript MovieClipLoader class.
+
+#ifndef GNASH_MOVIECLIPLOADER_H
+#define GNASH_MOVIECLIPLOADER_H
+
+#include "button.h"
+#include "log.h"
+#include "action.h"
+#include "impl.h"
+
+namespace gnash {
+
+       struct mcl {
+               int bytes_loaded;
+               int bytes_total;
+       };
+
+         class MovieClipLoader
+         {
+         public:
+
+               MovieClipLoader();
+
+               ~MovieClipLoader();
+
+               void load(const tu_string& filespec);
+         
+               struct mcl *getProgress(as_object *ao);
+
+               /// MovieClip
+               bool loadClip(const tu_string& url, void *);
+
+               void unloadClip(void *);
+               void addListener(void *);
+               void removeListener(void *);
+
+               void    on_button_event(event_id event);
+               // Callbacks
+               void onLoadStart(void *);
+               void onLoadProgress(void *);
+               void onLoadInit(void *);
+               void onLoadComplete(void *);
+               void onLoadError(void *);
+               private:
+               bool          _started;
+               bool          _completed;
+               tu_string     _filespec;
+               int           _progress;
+               bool          _error;
+               struct mcl    _mcl;
+               mouse_state   _mouse_state;
+       };
+
+       /// MovieClipLoader ActionScript object
+       struct moviecliploader_as_object : public as_object
+       {
+               MovieClipLoader mov_obj;
+       };
+
+       /// Progress object to use as return of MovieClipLoader.getProgress()
+       struct mcl_as_object : public as_object
+       {
+         struct mcl data;
+       };
+
+       void moviecliploader_loadclip(const fn_call& fn);
+       void moviecliploader_unloadclip(const fn_call& fn);
+       void moviecliploader_getprogress(const fn_call& fn);
+       void moviecliploader_new(const fn_call& fn);
+       void moviecliploader_onload_init(const fn_call& fn);
+       void moviecliploader_onload_start(const fn_call& fn);
+       void moviecliploader_onload_progress(const fn_call& fn);
+       void moviecliploader_onload_complete(const fn_call& fn);
+       void moviecliploader_onload_error(const fn_call& fn);
+       void moviecliploader_default(const fn_call& fn);
+
+} // end of gnash namespace
+
+// GNASH_MOVIECLIPLOADER_H
+#endif

Index: server/asobj/NetConnection.cpp
===================================================================
RCS file: server/asobj/NetConnection.cpp
diff -N server/asobj/NetConnection.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/NetConnection.cpp      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,172 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string>
+#include "log.h"
+#include "NetConnection.h"
+#include "fn_call.h"
+
+using namespace std;
+
+namespace gnash {
+
+/// \class NetConnection
+/// \brief Opens a local connection through which you can play
+/// back video (FLV) files from an HTTP address or from the local file
+/// system.
+
+/// First introduced for swf v7
+
+/// protocol:[//host][:port]/appname/[instanceName]
+
+/// For protocol, specify either rtmp or rtmpt. If rtmp is specified,
+/// Flash Player will create a persistent Communication Server. If
+/// rtmpt is specified, Flash Player will create an HTTP "tunneling"
+/// connection to the server. For more information on RTMP and RTMPT,
+/// see the description section below.
+//
+/// You can omit the host parameter if the Flash movie is served from
+/// the same host where Flash Communication Server is installed.
+/// If the instanceName parameter is omitted, Flash Player connects to
+/// the application's default instance (_definst_).
+/// By default, RTMP connections use port 1935, and RTMPT connections
+/// use port 80.
+NetConnection::NetConnection() {
+}
+
+NetConnection::~NetConnection() {
+}
+
+/// \brief Open a connection to stream FLV files.
+/// \param the URL
+/// \return nothing
+/// \note Older Flash movies can only take a NULL value as
+/// the parameter, which therefor only connects to the localhost using
+/// RTMP. Newer Flash movies have a parameter to connect which is a
+/// URL string like rtmp://foobar.com/videos/bar.flv
+void
+NetConnection::connect(const char *arg)
+{
+    log_msg("%s: \n", __PRETTY_FUNCTION__);
+    
+    string::size_type first_colon;
+    string::size_type second_colon;
+    string::size_type single_slash;
+    string::size_type double_slash;
+
+    if (arg != 0) {
+        if (strcmp(arg, "null") == 0) {
+            log_warning("No URL specified!\n");
+            return;
+        }
+        _url = arg;
+        // protocol:[//host][:port]/appname/[instanceName]
+        first_colon = _url.find(':', 0);
+        second_colon = _url.find(':', first_colon + 1);
+        double_slash = _url.find("//", 0) + 2;
+        single_slash = _url.find("/", double_slash);
+        _protocol = _url.substr(0, first_colon);
+        if (second_colon != string::npos) {
+            _host = _url.substr(double_slash, second_colon - double_slash);
+            _portstr = _url.substr(second_colon + 1, single_slash - 
second_colon - 1);
+        } else {
+            _host = _url.substr(double_slash, single_slash - double_slash);
+        }
+        _path = _url.substr(single_slash, _url.size());
+
+        if (_portstr.size() == 0) {
+            log_msg("Loading FLV file from: %s://%s%s\n",
+                    _protocol.c_str(), _host.c_str(), _path.c_str());
+        } else {
+            log_msg("Loading FLV file from: %s://%s:%s%s\n",
+                    _protocol.c_str(), _host.c_str(), _portstr.c_str(), 
_path.c_str());
+        }
+    } else {
+        log_msg("Connecting to localhost\n");
+    }
+    
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+/// \brief callback to instantiate a new NetConnection object.
+/// \param fn the parameters from the Flash movie
+/// \return nothing from the function call.
+/// \note The return value is returned through the fn.result member.
+void
+netconnection_new(const fn_call& fn)
+{
+        log_msg("%s:unimplemented %d\n", __FUNCTION__, __LINE__);
+    log_msg("%s: %d args\n", __PRETTY_FUNCTION__, fn.nargs);
+        
+    netconnection_as_object *netconnection_obj = new netconnection_as_object;
+
+    netconnection_obj->set_member("connect", &netconnection_connect);
+#ifdef ENABLE_TESTING
+    netconnection_obj->set_member("geturl",  &network_geturl);
+    netconnection_obj->set_member("getprotocol",  &network_getprotocol);
+    netconnection_obj->set_member("gethost", &network_gethost);
+    netconnection_obj->set_member("getport", &network_getport);
+    netconnection_obj->set_member("getpath", &network_getpath);
+#endif
+    fn.result->set_as_object(netconnection_obj);
+}
+
+void netconnection_connect(const fn_call& fn)
+{
+    log_msg("%s: %d args\n", __PRETTY_FUNCTION__, fn.nargs);
+    
+    string filespec;
+    netconnection_as_object *ptr = (netconnection_as_object*)fn.this_ptr;
+    
+    assert(ptr);
+    if (fn.nargs != 0) {
+        filespec = fn.env->bottom(fn.first_arg_bottom_index).to_string();
+        ptr->obj.connect(filespec.c_str());
+    } else {
+        ptr->obj.connect(0);
+    }
+    
+    log_msg("%s: partially implemented\n", __FUNCTION__);
+}
+
+} // end of gnash namespace
+

Index: server/asobj/NetConnection.h
===================================================================
RCS file: server/asobj/NetConnection.h
diff -N server/asobj/NetConnection.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/NetConnection.h        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,72 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __NETCONNECTION_H__
+#define __NETCONNECTION_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string>
+
+#include "impl.h"
+#include "log.h"
+#include "network.h"
+
+namespace gnash {
+
+class NetConnection : public Network {
+public:
+    NetConnection();
+    ~NetConnection();
+    void connect(const char *arg);
+};
+
+struct netconnection_as_object : public as_object
+{
+    NetConnection obj;
+};
+
+void netconnection_new(const fn_call& fn);
+void netconnection_connect(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __NETCONNECTION_H__
+#endif

Index: server/asobj/NetStream.cpp
===================================================================
RCS file: server/asobj/NetStream.cpp
diff -N server/asobj/NetStream.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/NetStream.cpp  22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,115 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "NetStream.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+NetStream::NetStream() {
+}
+
+NetStream::~NetStream() {
+}
+
+
+void
+NetStream::close()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+NetStream::pause()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+NetStream::play()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+NetStream::seek()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+NetStream::setBufferTime()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+netstream_new(const fn_call& fn)
+{
+    netstream_as_object *netstream_obj = new netstream_as_object;
+
+    netstream_obj->set_member("close", &netstream_close);
+    netstream_obj->set_member("pause", &netstream_pause);
+    netstream_obj->set_member("play", &netstream_play);
+    netstream_obj->set_member("seek", &netstream_seek);
+    netstream_obj->set_member("setbuffertime", &netstream_setbuffertime);
+
+    fn.result->set_as_object(netstream_obj);
+}
+void netstream_close(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void netstream_pause(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void netstream_play(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void netstream_seek(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void netstream_setbuffertime(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/NetStream.h
===================================================================
RCS file: server/asobj/NetStream.h
diff -N server/asobj/NetStream.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/NetStream.h    22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,86 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __NETSTREAM_H__
+#define __NETSTREAM_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class NetStream {
+public:
+    NetStream();
+    ~NetStream();
+   void close();
+   void pause();
+   void play();
+   void seek();
+   void setBufferTime();
+private:
+    bool _bufferLength;
+    bool _bufferTime;
+    bool _bytesLoaded;
+    bool _bytesTotal;
+    bool _currentFps;
+    bool _onStatus;
+    bool _time;
+};
+
+struct netstream_as_object : public as_object
+{
+    NetStream obj;
+};
+
+void netstream_new(const fn_call& fn);
+void netstream_close(const fn_call& fn);
+void netstream_pause(const fn_call& fn);
+void netstream_play(const fn_call& fn);
+void netstream_seek(const fn_call& fn);
+void netstream_setbuffertime(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __NETSTREAM_H__
+#endif
+

Index: server/asobj/Selection.cpp
===================================================================
RCS file: server/asobj/Selection.cpp
diff -N server/asobj/Selection.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Selection.cpp  22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,136 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Selection.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Selection::Selection() {
+}
+
+Selection::~Selection() {
+}
+
+
+void
+Selection::addListener()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Selection::getBeginIndex()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Selection::getCaretIndex()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Selection::getEndIndex()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Selection::getFocus()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Selection::removeListener()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Selection::setFocus()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+selection_new(const fn_call& fn)
+{
+    selection_as_object *selection_obj = new selection_as_object;
+
+    selection_obj->set_member("addlistener", &selection_addlistener);
+    selection_obj->set_member("getbeginindex", &selection_getbeginindex);
+    selection_obj->set_member("getcaretindex", &selection_getcaretindex);
+    selection_obj->set_member("getendindex", &selection_getendindex);
+    selection_obj->set_member("getfocus", &selection_getfocus);
+    selection_obj->set_member("removelistener", &selection_removelistener);
+    selection_obj->set_member("setfocus", &selection_setfocus);
+
+    fn.result->set_as_object(selection_obj);
+}
+void selection_addlistener(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void selection_getbeginindex(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void selection_getcaretindex(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void selection_getendindex(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void selection_getfocus(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void selection_removelistener(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void selection_setfocus(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/Selection.h
===================================================================
RCS file: server/asobj/Selection.h
diff -N server/asobj/Selection.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Selection.h    22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,84 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __SELECTION_H__
+#define __SELECTION_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Selection {
+public:
+    Selection();
+    ~Selection();
+   void addListener();
+   void getBeginIndex();
+   void getCaretIndex();
+   void getEndIndex();
+   void getFocus();
+   void removeListener();
+   void setFocus();
+private:
+    bool _onSetFocus;
+};
+
+struct selection_as_object : public as_object
+{
+    Selection obj;
+};
+
+void selection_new(const fn_call& fn);
+void selection_addlistener(const fn_call& fn);
+void selection_getbeginindex(const fn_call& fn);
+void selection_getcaretindex(const fn_call& fn);
+void selection_getendindex(const fn_call& fn);
+void selection_getfocus(const fn_call& fn);
+void selection_removelistener(const fn_call& fn);
+void selection_setfocus(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __SELECTION_H__
+#endif
+

Index: server/asobj/SharedObject.cpp
===================================================================
RCS file: server/asobj/SharedObject.cpp
diff -N server/asobj/SharedObject.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/SharedObject.cpp       22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,105 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "SharedObject.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+SharedObject::SharedObject() {
+}
+
+SharedObject::~SharedObject() {
+}
+
+
+void
+SharedObject::clear()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+SharedObject::flush()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+SharedObject::getLocal()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+SharedObject::getSize()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+sharedobject_new(const fn_call& fn)
+{
+    sharedobject_as_object *sharedobject_obj = new sharedobject_as_object;
+
+    sharedobject_obj->set_member("clear", &sharedobject_clear);
+    sharedobject_obj->set_member("flush", &sharedobject_flush);
+    sharedobject_obj->set_member("getlocal", &sharedobject_getlocal);
+    sharedobject_obj->set_member("getsize", &sharedobject_getsize);
+
+    fn.result->set_as_object(sharedobject_obj);
+}
+void sharedobject_clear(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void sharedobject_flush(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void sharedobject_getlocal(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void sharedobject_getsize(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/SharedObject.h
===================================================================
RCS file: server/asobj/SharedObject.h
diff -N server/asobj/SharedObject.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/SharedObject.h 22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,79 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __SHAREDOBJECT_H__
+#define __SHAREDOBJECT_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class SharedObject {
+public:
+    SharedObject();
+    ~SharedObject();
+   void clear();
+   void flush();
+   void getLocal();
+   void getSize();
+private:
+    bool _data;
+    bool _onStatus;
+};
+
+struct sharedobject_as_object : public as_object
+{
+    SharedObject obj;
+};
+
+void sharedobject_new(const fn_call& fn);
+void sharedobject_clear(const fn_call& fn);
+void sharedobject_flush(const fn_call& fn);
+void sharedobject_getlocal(const fn_call& fn);
+void sharedobject_getsize(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __SHAREDOBJECT_H__
+#endif
+

Index: server/asobj/Stage.cpp
===================================================================
RCS file: server/asobj/Stage.cpp
diff -N server/asobj/Stage.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Stage.cpp      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,85 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Stage.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Stage::Stage() {
+}
+
+Stage::~Stage() {
+}
+
+
+void
+Stage::addListener()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Stage::removeListener()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+stage_new(const fn_call& fn)
+{
+    stage_as_object *stage_obj = new stage_as_object;
+
+    stage_obj->set_member("addlistener", &stage_addlistener);
+    stage_obj->set_member("removelistener", &stage_removelistener);
+
+    fn.result->set_as_object(stage_obj);
+}
+void stage_addlistener(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void stage_removelistener(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/Stage.h
===================================================================
RCS file: server/asobj/Stage.h
diff -N server/asobj/Stage.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Stage.h        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,79 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __STAGE_H__
+#define __STAGE_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Stage {
+public:
+    Stage();
+    ~Stage();
+   void addListener();
+   void removeListener();
+private:
+    bool _align;
+    bool _height;
+    bool _onResize;
+    bool _scaleMode;
+    bool _showMenu;
+    bool _width;
+};
+
+struct stage_as_object : public as_object
+{
+    Stage obj;
+};
+
+void stage_new(const fn_call& fn);
+void stage_addlistener(const fn_call& fn);
+void stage_removelistener(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __STAGE_H__
+#endif
+

Index: server/asobj/System.cpp
===================================================================
RCS file: server/asobj/System.cpp
diff -N server/asobj/System.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/System.cpp     22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,202 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "System.h"
+#include "fn_call.h"
+#include "builtin_function.h"
+
+namespace gnash {
+
+System::System() {
+}
+
+System::~System() {
+}
+
+
+void
+System::security_allowDomain()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+System::security_allowInsecureDomain()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+System::security_loadPolicyFile()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+System::setClipboard()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+System::showSettings()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+static as_object*
+getSystemSecurityInterface()
+{
+       static as_object* proto = NULL;
+       if ( proto == NULL )
+       {
+               proto = new as_object();
+               proto->set_member("allowdomain", &system_security_allowdomain);
+               proto->set_member("allowinsecuredomain", 
&system_security_allowinsecuredomain);
+               proto->set_member("loadpolicyfile", 
&system_security_loadpolicyfile);
+       }
+       return proto;
+}
+
+static as_object*
+getSystemCapabilitiesInterface()
+{
+       static as_object* proto = NULL;
+       if ( proto == NULL )
+       {
+               proto = new as_object();
+               proto->set_member("version", "Gnash-" VERSION);
+       }
+       return proto;
+}
+
+static void
+attachSystemInterface(as_object* proto)
+{
+       // Initialize Function prototype
+       proto->set_member("security", getSystemSecurityInterface());
+       proto->set_member("capabilities", getSystemCapabilitiesInterface());
+       proto->set_member("setclipboard", &system_setclipboard);
+       proto->set_member("showsettings", &system_showsettings);
+}
+
+static as_object*
+getSystemInterface()
+{
+       static as_object* proto = NULL;
+       if ( proto == NULL )
+       {
+               proto = new as_object();
+               attachSystemInterface(proto);
+               proto->set_member("constructor", &system_new); 
+               proto->set_member_flags("constructor", 1);
+       }
+       return proto;
+}
+
+system_as_object::system_as_object()
+       :
+       as_object(getSystemInterface()) // pass System inheritence
+{
+}
+
+void
+system_new(const fn_call& fn)
+{
+    system_as_object *system_obj = new system_as_object();
+
+    fn.result->set_as_object(system_obj);
+}
+
+void system_security_allowdomain(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void system_security_allowinsecuredomain(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void system_security_loadpolicyfile(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void system_setclipboard(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void system_showsettings(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+static void
+do_nothing(const fn_call& fn)
+{
+       log_msg("User tried to invoke new System()");
+       if ( fn.result )
+       {
+               fn.result->set_undefined();
+       }
+}
+
+void
+system_init(as_object* glob)
+{
+       // This is going to be the global System "class"/"function"
+       static as_function* sys=NULL;
+
+       if ( sys == NULL )
+       {
+               sys = new builtin_function(do_nothing, getSystemInterface());
+
+               // We replicate interface to the System class itself
+               attachSystemInterface(sys);
+       }
+
+       // Register _global.System
+       glob->set_member("System", sys);
+
+}
+
+
+} // end of gnaash namespace
+

Index: server/asobj/System.h
===================================================================
RCS file: server/asobj/System.h
diff -N server/asobj/System.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/System.h       22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,115 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __SYSTEM_H__
+#define __SYSTEM_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+//#include "Function.h"
+
+namespace gnash {
+  
+class System {
+public:
+    System();
+    ~System();
+   void security_allowDomain();
+   void security_allowInsecureDomain();
+   void security_loadPolicyFile();
+   void setClipboard();
+   void showSettings();
+private:
+    bool _capabilities;
+    bool _object;
+    bool _capabilities_avHardwareDisable;
+    bool _capabilities_hasAccessibility;
+    bool _capabilities_hasAudio;
+    bool _capabilities_hasAudioEncoder;
+    bool _capabilities_hasEmbeddedVideo;
+    bool _capabilities_hasMP3;
+    bool _capabilities_hasPrinting;
+    bool _capabilities_hasScreenBroadcast;
+    bool _capabilities_hasScreenPlayback;
+    bool _capabilities_hasStreamingAudio;
+    bool _capabilities_hasStreamingVideo;
+    bool _capabilities_hasVideoEncoder;
+    bool _capabilities_isDebugger;
+    bool _capabilities_language;
+    bool _capabilities_localFileReadDisable;
+    bool _capabilities_manufacturer;
+    bool _capabilities_os;
+    bool _capabilities_pixelAspectRatio;
+    bool _capabilities_playerType;
+    bool _capabilities_screenColor;
+    bool _capabilities_screenDPI;
+    bool _capabilities_screenResolutionX;
+    bool _capabilities_screenResolutionY;
+    bool _capabilities_serverString;
+    bool _capabilities_version;
+    bool _security;
+    bool _exactSettings;
+    bool _onStatus;
+    bool _useCodepage;
+};
+
+class system_as_object : public as_object
+{
+    //System obj;
+public:
+       system_as_object();
+};
+
+void system_new(const fn_call& fn);
+void system_security_allowdomain(const fn_call& fn);
+void system_security_allowinsecuredomain(const fn_call& fn);
+void system_security_loadpolicyfile(const fn_call& fn);
+void system_setclipboard(const fn_call& fn);
+void system_showsettings(const fn_call& fn);
+
+void system_init(as_object* global);
+
+} // end of gnash namespace
+
+// __SYSTEM_H__
+#endif
+

Index: server/asobj/TextSnapshot.cpp
===================================================================
RCS file: server/asobj/TextSnapshot.cpp
diff -N server/asobj/TextSnapshot.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/TextSnapshot.cpp       22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,145 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "TextSnapshot.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+TextSnapshot::TextSnapshot() {
+}
+
+TextSnapshot::~TextSnapshot() {
+}
+
+
+void
+TextSnapshot::findText()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+TextSnapshot::getCount()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+TextSnapshot::getSelected()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+TextSnapshot::getSelectedText()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+TextSnapshot::getText()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+TextSnapshot::hitTestTextNearPos()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+TextSnapshot::setSelectColor()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+TextSnapshot::setSelected()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+textsnapshot_new(const fn_call& fn)
+{
+    textsnapshot_as_object *textsnapshot_obj = new textsnapshot_as_object;
+
+    textsnapshot_obj->set_member("findtext", &textsnapshot_findtext);
+    textsnapshot_obj->set_member("getcount", &textsnapshot_getcount);
+    textsnapshot_obj->set_member("getselected", &textsnapshot_getselected);
+    textsnapshot_obj->set_member("getselectedtext", 
&textsnapshot_getselectedtext);
+    textsnapshot_obj->set_member("gettext", &textsnapshot_gettext);
+    textsnapshot_obj->set_member("hittesttextnearpos", 
&textsnapshot_hittesttextnearpos);
+    textsnapshot_obj->set_member("setselectcolor", 
&textsnapshot_setselectcolor);
+    textsnapshot_obj->set_member("setselected", &textsnapshot_setselected);
+
+    fn.result->set_as_object(textsnapshot_obj);
+}
+void textsnapshot_findtext(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void textsnapshot_getcount(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void textsnapshot_getselected(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void textsnapshot_getselectedtext(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void textsnapshot_gettext(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void textsnapshot_hittesttextnearpos(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void textsnapshot_setselectcolor(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void textsnapshot_setselected(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/TextSnapshot.h
===================================================================
RCS file: server/asobj/TextSnapshot.h
diff -N server/asobj/TextSnapshot.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/TextSnapshot.h 22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,85 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __TEXTSNAPSHOT_H__
+#define __TEXTSNAPSHOT_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class TextSnapshot {
+public:
+    TextSnapshot();
+    ~TextSnapshot();
+   void findText();
+   void getCount();
+   void getSelected();
+   void getSelectedText();
+   void getText();
+   void hitTestTextNearPos();
+   void setSelectColor();
+   void setSelected();
+private:
+};
+
+struct textsnapshot_as_object : public as_object
+{
+    TextSnapshot obj;
+};
+
+void textsnapshot_new(const fn_call& fn);
+void textsnapshot_findtext(const fn_call& fn);
+void textsnapshot_getcount(const fn_call& fn);
+void textsnapshot_getselected(const fn_call& fn);
+void textsnapshot_getselectedtext(const fn_call& fn);
+void textsnapshot_gettext(const fn_call& fn);
+void textsnapshot_hittesttextnearpos(const fn_call& fn);
+void textsnapshot_setselectcolor(const fn_call& fn);
+void textsnapshot_setselected(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __TEXTSNAPSHOT_H__
+#endif
+

Index: server/asobj/Video.cpp
===================================================================
RCS file: server/asobj/Video.cpp
diff -N server/asobj/Video.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Video.cpp      22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,85 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "log.h"
+#include "Video.h"
+#include "fn_call.h"
+
+namespace gnash {
+
+Video::Video() {
+}
+
+Video::~Video() {
+}
+
+
+void
+Video::attach()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+void
+Video::clear()
+{
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void
+video_new(const fn_call& fn)
+{
+    video_as_object *video_obj = new video_as_object;
+
+    video_obj->set_member("attach", &video_attach);
+    video_obj->set_member("clear", &video_clear);
+
+    fn.result->set_as_object(video_obj);
+}
+void video_attach(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+void video_clear(const fn_call& /*fn*/) {
+    log_msg("%s:unimplemented \n", __FUNCTION__);
+}
+
+} // end of gnaash namespace
+

Index: server/asobj/Video.h
===================================================================
RCS file: server/asobj/Video.h
diff -N server/asobj/Video.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/asobj/Video.h        22 Jul 2006 23:47:56 -0000      1.1
@@ -0,0 +1,77 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Linking Gnash statically or dynamically with other modules is making a
+// combined work based on Gnash. Thus, the terms and conditions of the GNU
+// General Public License cover the whole combination.
+//
+// As a special exception, the copyright holders of Gnash give you
+// permission to combine Gnash with free software programs or libraries
+// that are released under the GNU LGPL and with code included in any
+// release of Talkback distributed by the Mozilla Foundation. You may
+// copy and distribute such a system following the terms of the GNU GPL
+// for all but the LGPL-covered parts and Talkback, and following the
+// LGPL for the LGPL-covered parts.
+//
+// Note that people who make modified versions of Gnash are not obligated
+// to grant this special exception for their modified versions; it is their
+// choice whether to do so. The GNU General Public License gives permission
+// to release a modified version without this exception; this exception
+// also makes it possible to release a modified version which carries
+// forward this exception.
+// 
+//
+//
+
+#ifndef __VIDEO_H__
+#define __VIDEO_H__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "impl.h"
+#include "log.h"
+
+namespace gnash {
+  
+class Video {
+public:
+    Video();
+    ~Video();
+   void attach();
+   void clear();
+private:
+    bool _deblocking;
+    bool _height;
+    bool _smoothing;
+    bool _width;
+};
+
+struct video_as_object : public as_object
+{
+    Video obj;
+};
+
+void video_new(const fn_call& fn);
+void video_attach(const fn_call& fn);
+void video_clear(const fn_call& fn);
+
+} // end of gnash namespace
+
+// __VIDEO_H__
+#endif
+

Index: server/ASSound.cpp
===================================================================
RCS file: server/ASSound.cpp
diff -N server/ASSound.cpp
--- server/ASSound.cpp  28 Jun 2006 23:27:44 -0000      1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,301 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "ASSound.h"
-#include "movie_definition.h"
-#include "sprite_instance.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Sound::Sound() {
-}
-
-Sound::~Sound() {
-}
-
-
-void
-Sound::attachSound()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::getBytesLoaded()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::getBytesTotal()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::getPan()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::getTransform()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::getVolume()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::loadSound()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::setPan()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::setTransform()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::setVolume()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::start()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Sound::stop()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-sound_new(const fn_call& fn)
-{
-    sound_as_object *sound_obj = new sound_as_object;
-
-    sound_obj->set_member("attachsound", &sound_attachsound);
-    sound_obj->set_member("getbytesloaded", &sound_getbytesloaded);
-    sound_obj->set_member("getbytestotal", &sound_getbytestotal);
-    sound_obj->set_member("getpan", &sound_getpan);
-    sound_obj->set_member("gettransform", &sound_gettransform);
-    sound_obj->set_member("getvolume", &sound_getvolume);
-    sound_obj->set_member("loadsound", &sound_loadsound);
-    sound_obj->set_member("setpan", &sound_setpan);
-    sound_obj->set_member("settransform", &sound_settransform);
-    sound_obj->set_member("setvolume", &sound_setvolume);
-    sound_obj->set_member("start", &sound_start);
-    sound_obj->set_member("stop", &sound_stop);
-
-    fn.result->set_as_object(sound_obj);
-}
-
-void
-sound_start(const fn_call& fn)
-{
-    log_action("-- start sound \n");
-    sound_handler* s = get_sound_handler();
-               if (s != NULL)
-               {
-                       int loop = 0;
-                       int secondOffset = 0;
-                       if (fn.nargs > 0)
-                       {
-                               int secondOffset = (int) fn.arg(0).to_number();
-
-                               // sanity check
-                               secondOffset = secondOffset <= 0 ? 0 : 
secondOffset;
-
-                               if (fn.nargs > 1)
-                               {
-                                       loop = (int) fn.arg(1).to_number() - 1;
-
-                                       // -1 means infinite playing of sound
-                                       // sanity check
-                                       loop = loop < 0 ? -1 : loop;
-                               }
-                       }
-
-                       sound_as_object*        so = (sound_as_object*) 
(as_object*) fn.this_ptr;
-                       assert(so);
-                       s->play_sound(so->sound_id, loop, secondOffset);
-               }
-
-}
-
-void
-sound_stop(const fn_call& fn)
-{
-    log_action("-- stop sound \n");
-    sound_handler* s = get_sound_handler();
-    if (s != NULL)
-       {
-           sound_as_object*    so = (sound_as_object*) (as_object*) 
fn.this_ptr;
-           assert(so);
-           s->stop_sound(so->sound_id);
-       }
-}
-
-void
-sound_attachsound(const fn_call& fn)
-{
-    log_action("-- attach sound \n");
-    if (fn.nargs < 1)
-       {
-           log_error("attach sound needs one argument\n");
-           return;
-       }
-
-    sound_as_object*   so = (sound_as_object*) (as_object*) fn.this_ptr;
-    assert(so);
-
-    so->sound = fn.arg(0).to_tu_string();
-
-    // check the import.
-    movie_definition* def = 
fn.env->get_target()->get_root_movie()->get_movie_definition();
-    assert(def);
-    smart_ptr<resource> res = def->get_exported_resource(so->sound);
-    if (res == NULL)
-       {
-           log_error("import error: resource '%s' is not exported\n", 
so->sound.c_str());
-           return;
-       }
-
-    int si = 0;
-    sound_sample_impl* ss = (sound_sample_impl*) res->cast_to_sound_sample();
-
-    if (ss != NULL)
-       {
-           si = ss->m_sound_handler_id;
-       }
-    else
-       {
-           log_error("sound sample is NULL\n");
-           return;
-       }
-
-    // sanity check
-    assert(si >= 0 && si < 1000);
-    so->sound_id = si;
-}
-
-void
-sound_getbytesloaded(const fn_call& /*fn*/)
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-sound_getbytestotal(const fn_call& /*fn*/)
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-sound_getpan(const fn_call& /*fn*/)
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-sound_gettransform(const fn_call& /*fn*/)
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-sound_getvolume(const fn_call& fn)
-{
-       sound_handler* s = get_sound_handler();
-       if (s != NULL)
-       {
-               sound_as_object*        so = (sound_as_object*) (as_object*) 
fn.this_ptr;
-               assert(so);
-               int volume = s->get_volume(so->sound_id);
-    fn.result->set_int(volume);
-       }
-       return;
-}
-
-void
-sound_loadsound(const fn_call& /*fn*/)
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-sound_setpan(const fn_call& /*fn*/)
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-sound_settransform(const fn_call& /*fn*/)
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-sound_setvolume(const fn_call& fn)
-{
-       if (fn.nargs < 1)
-       {
-               log_error("set volume of sound needs one argument\n");
-               return;
-       }
-               
-       int volume = (int) fn.arg(0).to_number();
-
-       // sanity check
-       if (volume >= 0 && volume <=100)
-       {
-               sound_handler* s = get_sound_handler();
-               if (s != NULL)
-               {
-                       sound_as_object*        so = (sound_as_object*) 
(as_object*) fn.this_ptr;
-                       assert(so);
-                       s->set_volume(so->sound_id, volume);
-               }
-       }
-}
-
-} // end of gnash namespace
-

Index: server/ASSound.h
===================================================================
RCS file: server/ASSound.h
diff -N server/ASSound.h
--- server/ASSound.h    8 May 2006 11:43:58 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,85 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#ifndef __ASSOUND_H__
-#define __ASSOUND_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-#include "as_object.h" // for inheritance 
-
-namespace gnash {
-
-// Forward declarations
-struct fn_call;
-  
-class Sound {
-public:
-    Sound();
-    ~Sound();
-   void attachSound();
-   void getBytesLoaded();
-   void getBytesTotal();
-   void getPan();
-   void getTransform();
-   void getVolume();
-   void loadSound();
-   void setPan();
-   void setTransform();
-   void setVolume();
-   void start();
-   void stop();
-private:
-    bool _duration;
-    bool _id3;
-    bool _onID3;
-    bool _onLoad;
-    bool _onomplete;
-    bool _position;
-};
-
-struct sound_as_object : public as_object
-{
-    //Sound obj;
-    tu_string sound;
-    int sound_id;
-};
-
-void sound_new(const fn_call& fn);
-void sound_attachsound(const fn_call& fn);
-void sound_getbytesloaded(const fn_call& fn);
-void sound_getbytestotal(const fn_call& fn);
-void sound_getpan(const fn_call& fn);
-void sound_gettransform(const fn_call& fn);
-void sound_getvolume(const fn_call& fn);
-void sound_loadsound(const fn_call& fn);
-void sound_setpan(const fn_call& fn);
-void sound_settransform(const fn_call& fn);
-void sound_setvolume(const fn_call& fn);
-void sound_start(const fn_call& fn);
-void sound_stop(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __ASSOUND_H__
-#endif
-

Index: server/Boolean.cpp
===================================================================
RCS file: server/Boolean.cpp
diff -N server/Boolean.cpp
--- server/Boolean.cpp  24 Jun 2006 15:43:41 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,85 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Boolean.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Boolean::Boolean() {
-}
-
-Boolean::~Boolean() {
-}
-
-
-void
-Boolean::toString()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Boolean::valueOf()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-boolean_new(const fn_call& fn)
-{
-    boolean_as_object *boolean_obj = new boolean_as_object;
-
-    boolean_obj->set_member("tostring", &boolean_tostring);
-    boolean_obj->set_member("valueof", &boolean_valueof);
-
-    fn.result->set_as_object(boolean_obj);
-}
-void boolean_tostring(const fn_call& /* fn */) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void boolean_valueof(const fn_call& /* fn */) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/Boolean.h
===================================================================
RCS file: server/Boolean.h
diff -N server/Boolean.h
--- server/Boolean.h    24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,73 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __BOOLEAN_H__
-#define __BOOLEAN_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Boolean {
-public:
-    Boolean();
-    ~Boolean();
-   void toString();
-   void valueOf();
-private:
-};
-
-struct boolean_as_object : public as_object
-{
-    Boolean obj;
-};
-
-void boolean_new(const fn_call& fn);
-void boolean_tostring(const fn_call& fn);
-void boolean_valueof(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __BOOLEAN_H__
-#endif
-

Index: server/Camera.cpp
===================================================================
RCS file: server/Camera.cpp
diff -N server/Camera.cpp
--- server/Camera.cpp   24 Jun 2006 15:43:41 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,105 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Camera.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Camera::Camera() {
-}
-
-Camera::~Camera() {
-}
-
-
-void
-Camera::get()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Camera::setMode()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Camera::setMotionLevel()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Camera::setQuality()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-camera_new(const fn_call& fn)
-{
-    camera_as_object *camera_obj = new camera_as_object;
-
-    camera_obj->set_member("get", &camera_get);
-    camera_obj->set_member("setmode", &camera_setmode);
-    camera_obj->set_member("setmotionlevel", &camera_setmotionlevel);
-    camera_obj->set_member("setquality", &camera_setquality);
-
-    fn.result->set_as_object(camera_obj);
-}
-void camera_get(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void camera_setmode(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void camera_setmotionlevel(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void camera_setquality(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/Camera.h
===================================================================
RCS file: server/Camera.h
diff -N server/Camera.h
--- server/Camera.h     24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,92 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __CAMERA_H__
-#define __CAMERA_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Camera {
-public:
-    Camera();
-    ~Camera();
-   void get();
-   void setMode();
-   void setMotionLevel();
-   void setQuality();
-private:
-    bool _activityLevel;
-    bool _bandwidth;
-    bool _currentFps;
-    bool _fps;
-    bool _height;
-    bool _index;
-    bool _motionLevel;
-    bool _motionTimeOut;
-    bool _muted;
-    bool _name;
-    bool _names;
-    bool _onActivity;
-    bool _onStatus;
-    bool _quality;
-    bool _width;
-};
-
-struct camera_as_object : public as_object
-{
-    Camera obj;
-};
-
-void camera_new(const fn_call& fn);
-void camera_get(const fn_call& fn);
-void camera_setmode(const fn_call& fn);
-void camera_setmotionlevel(const fn_call& fn);
-void camera_setquality(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __CAMERA_H__
-#endif
-

Index: server/Color.cpp
===================================================================
RCS file: server/Color.cpp
diff -N server/Color.cpp
--- server/Color.cpp    24 Jun 2006 15:43:41 -0000      1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,105 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Color.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Color::Color() {
-}
-
-Color::~Color() {
-}
-
-
-void
-Color::getRGB()
-{
-    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
-}
-
-void
-Color::getTransform()
-{
-    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
-}
-
-void
-Color::setRGB()
-{
-    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
-}
-
-void
-Color::setTransform()
-{
-    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
-}
-void
-color_new(const fn_call& fn)
-{
-    color_as_object *color_obj = new color_as_object;
-
-    color_obj->set_member("getrgb", &color_getrgb);
-    color_obj->set_member("gettransform", &color_gettransform);
-    color_obj->set_member("setrgb", &color_setrgb);
-    color_obj->set_member("settransform", &color_settransform);
-
-    fn.result->set_as_object(color_obj);
-}
-void color_getrgb(const fn_call& /*fn*/) {
-    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
-}
-void color_gettransform(const fn_call& /*fn*/) {
-    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
-}
-void color_setrgb(const fn_call& /*fn*/) {
-    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
-}
-void color_settransform(const fn_call& /*fn*/) {
-    log_warning("%s: unimplemented \n", __PRETTY_FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/Color.h
===================================================================
RCS file: server/Color.h
diff -N server/Color.h
--- server/Color.h      24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,77 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __COLOR_H__
-#define __COLOR_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Color {
-public:
-    Color();
-    ~Color();
-   void getRGB();
-   void getTransform();
-   void setRGB();
-   void setTransform();
-private:
-};
-
-struct color_as_object : public as_object
-{
-    Color obj;
-};
-
-void color_new(const fn_call& fn);
-void color_getrgb(const fn_call& fn);
-void color_gettransform(const fn_call& fn);
-void color_setrgb(const fn_call& fn);
-void color_settransform(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __COLOR_H__
-#endif
-

Index: server/ContextMenu.cpp
===================================================================
RCS file: server/ContextMenu.cpp
diff -N server/ContextMenu.cpp
--- server/ContextMenu.cpp      24 Jun 2006 15:43:41 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,84 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "ContextMenu.h"
-#include "fn_call.h"
-namespace gnash {
-
-ContextMenu::ContextMenu() {
-}
-
-ContextMenu::~ContextMenu() {
-}
-
-
-void
-ContextMenu::copy()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-ContextMenu::hideBuiltInItems()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-contextmenu_new(const fn_call& fn)
-{
-    contextmenu_as_object *contextmenu_obj = new contextmenu_as_object;
-
-    contextmenu_obj->set_member("copy", &contextmenu_copy);
-    contextmenu_obj->set_member("hidebuiltinitems", 
&contextmenu_hidebuiltinitems);
-
-    fn.result->set_as_object(contextmenu_obj);
-}
-void contextmenu_copy(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void contextmenu_hidebuiltinitems(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/ContextMenu.h
===================================================================
RCS file: server/ContextMenu.h
diff -N server/ContextMenu.h
--- server/ContextMenu.h        24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,76 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __CONTEXTMENU_H__
-#define __CONTEXTMENU_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class ContextMenu {
-public:
-    ContextMenu();
-    ~ContextMenu();
-   void copy();
-   void hideBuiltInItems();
-private:
-    bool _builtInItems;
-    bool _customItems;
-    bool _onSelect;
-};
-
-struct contextmenu_as_object : public as_object
-{
-    ContextMenu obj;
-};
-
-void contextmenu_new(const fn_call& fn);
-void contextmenu_copy(const fn_call& fn);
-void contextmenu_hidebuiltinitems(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __CONTEXTMENU_H__
-#endif
-

Index: server/CustomActions.cpp
===================================================================
RCS file: server/CustomActions.cpp
diff -N server/CustomActions.cpp
--- server/CustomActions.cpp    24 Jun 2006 15:43:41 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,105 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "CustomActions.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-CustomActions::CustomActions() {
-}
-
-CustomActions::~CustomActions() {
-}
-
-
-void
-CustomActions::get()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-CustomActions::install()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-CustomActions::list()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-CustomActions::uninstall()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-customactions_new(const fn_call& fn)
-{
-    customactions_as_object *customactions_obj = new customactions_as_object;
-
-    customactions_obj->set_member("get", &customactions_get);
-    customactions_obj->set_member("install", &customactions_install);
-    customactions_obj->set_member("list", &customactions_list);
-    customactions_obj->set_member("uninstall", &customactions_uninstall);
-
-    fn.result->set_as_object(customactions_obj);
-}
-void customactions_get(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void customactions_install(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void customactions_list(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void customactions_uninstall(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/CustomActions.h
===================================================================
RCS file: server/CustomActions.h
diff -N server/CustomActions.h
--- server/CustomActions.h      24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,77 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __CUSTOMACTIONS_H__
-#define __CUSTOMACTIONS_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class CustomActions {
-public:
-    CustomActions();
-    ~CustomActions();
-   void get();
-   void install();
-   void list();
-   void uninstall();
-private:
-};
-
-struct customactions_as_object : public as_object
-{
-    CustomActions obj;
-};
-
-void customactions_new(const fn_call& fn);
-void customactions_get(const fn_call& fn);
-void customactions_install(const fn_call& fn);
-void customactions_list(const fn_call& fn);
-void customactions_uninstall(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __CUSTOMACTIONS_H__
-#endif
-

Index: server/Date.cpp
===================================================================
RCS file: server/Date.cpp
diff -N server/Date.cpp
--- server/Date.cpp     24 Jun 2006 15:43:41 -0000      1.14
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,731 +0,0 @@
-// 
-//     Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Date.h"
-#include "fn_call.h"
-
-#include <time.h>
-
-#if defined(_WIN32) || defined(WIN32)
-# define snprintf _snprintf
-#else
-# include <sys/time.h>
-#endif
-
-#include <sys/timeb.h>
-
-namespace gnash {
-
-Date::Date() {
-}
-
-Date::~Date() {
-}
-
-double
-Date::getTime()
-{
-       tm result = convertTM();
-       time_t count = mktime(&result);
-       return double(count) * 1000.0;
-}
-
-void
-Date::getTimezoneOffset()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getUTCDate()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getUTCDay()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getUTCFullYear()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getUTCHours()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getUTCMilliseconds()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getUTCMinutes()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getUTCMonth()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getUTCSeconds()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::getYear()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setDate()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setFullYear()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setHours()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setMilliseconds()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setMinutes()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setMonth()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setSeconds()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setTime()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setUTCDate()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setUTCFullYear()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setUTCHours()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setUTCMilliseconds()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setUTCMinutes()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setUTCMonth()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setUTCSeconds()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::setYear()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::toString()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Date::UTC()
-{
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-tm
-Date::convertUTC()
-{
-       tm utctime;
-
-       utctime.tm_sec = second;
-       utctime.tm_min = minute;
-       utctime.tm_hour = hour;
-       utctime.tm_mday = date;
-       utctime.tm_mon = month;
-       utctime.tm_year = year;
-       utctime.tm_wday = dayWeek;
-       utctime.tm_yday = dayYear;
-       utctime.tm_isdst = isDST;
-
-       time_t normalized;
-
-       normalized = mktime(&utctime);
-
-       tm *result = gmtime(&normalized);
-
-       return *result;
-}
-
-tm
-Date::convertTM()
-{
-       tm thistime;
-
-       thistime.tm_sec = second;
-       thistime.tm_min = minute;
-       thistime.tm_hour = hour;
-       thistime.tm_mday = date;
-       thistime.tm_mon = month;
-       thistime.tm_year = year;
-       thistime.tm_wday = dayWeek;
-       thistime.tm_yday = dayYear;
-       thistime.tm_isdst = isDST;
-
-       time_t normalized;
-
-       normalized = mktime(&thistime);
-
-       tm *result = localtime(&normalized);
-
-       return *result;
-}
-
-void
-Date::setFromTM(const tm newtime)
-{
-       second = newtime.tm_sec;
-       minute = newtime.tm_min;
-       hour = newtime.tm_hour;
-       date = newtime.tm_mday;
-       month = newtime.tm_mon;
-       year = newtime.tm_year;
-       dayWeek = newtime.tm_wday;
-       dayYear = newtime.tm_yday;
-       isDST = newtime.tm_isdst;
-}
-
-
-void
-Date::Normalize()
-{
-       second += (millisecond / 1000);
-       millisecond = millisecond % 1000;
-
-       tm thistime = convertTM();
-       time_t newtime = mktime(&thistime);
-       setFromTM(*(localtime(&newtime)));
-}
-
-void
-date_new(const fn_call& fn)
-{
-       date_as_object *date_obj = new date_as_object;
-
-       date_obj->set_member("getdate", &date_getdate);
-       date_obj->set_member("getday", &date_getday);
-       date_obj->set_member("getfullyear", &date_getfullyear);
-       date_obj->set_member("gethours", &date_gethours);
-       date_obj->set_member("getmilliseconds", &date_getmilliseconds);
-       date_obj->set_member("getminutes", &date_getminutes);
-       date_obj->set_member("getmonth", &date_getmonth);
-       date_obj->set_member("getseconds", &date_getseconds);
-       date_obj->set_member("gettime", &date_gettime);
-       date_obj->set_member("gettimezoneoffset", &date_gettimezoneoffset);
-       date_obj->set_member("getutcdate", &date_getutcdate);
-       date_obj->set_member("getutcday", &date_getutcday);
-       date_obj->set_member("getutcfullyear", &date_getutcfullyear);
-       date_obj->set_member("getutchours", &date_getutchours);
-       date_obj->set_member("getutcmilliseconds", &date_getutcmilliseconds);
-       date_obj->set_member("getutcminutes", &date_getutcminutes);
-       date_obj->set_member("getutcmonth", &date_getutcmonth);
-       date_obj->set_member("getutcseconds", &date_getutcseconds);
-       date_obj->set_member("getyear", &date_getyear);
-       date_obj->set_member("setdate", &date_setdate);
-       date_obj->set_member("setfullyear", &date_setfullyear);
-       date_obj->set_member("sethours", &date_sethours);
-       date_obj->set_member("setmilliseconds", &date_setmilliseconds);
-       date_obj->set_member("setminutes", &date_setminutes);
-       date_obj->set_member("setmonth", &date_setmonth);
-       date_obj->set_member("setseconds", &date_setseconds);
-       date_obj->set_member("settime", &date_settime);
-       date_obj->set_member("setutcdate", &date_setutcdate);
-       date_obj->set_member("setutcfullyear", &date_setutcfullyear);
-       date_obj->set_member("setutchours", &date_setutchours);
-       date_obj->set_member("setutcmilliseconds", &date_setutcmilliseconds);
-       date_obj->set_member("setutcminutes", &date_setutcminutes);
-       date_obj->set_member("setutcmonth", &date_setutcmonth);
-       date_obj->set_member("setutcseconds", &date_setutcseconds);
-       date_obj->set_member("setyear", &date_setyear);
-       date_obj->set_member("tostring", &date_tostring);
-       date_obj->set_member("utc", &date_utc);
-
-       struct tm *ti;
-       if (fn.nargs == 0) {
-#ifndef HAVE_GETTIMEOFDAY
-               struct timeb tb;
-               
-               ftime (&tb);
-               ti = localtime(&tb.time); 
-               log_error("date_new constructor doesn't set timezone or 
milliseconds on your system - using defaults\n");
-               date_obj->obj.millisecond = 0;
-               date_obj->obj.minutesEast = 0;
-#else          
-               struct timeval tEnd;
-               struct timezone tZone;
-               gettimeofday(&tEnd,&tZone);
-               date_obj->obj.millisecond = tEnd.tv_usec;
-               date_obj->obj.minutesEast = -tZone.tz_minuteswest;
-               time_t t = time(&t);
-               ti = localtime(&t);
-#endif
-               date_obj->obj.second = ti->tm_sec;
-               date_obj->obj.minute = ti->tm_min;
-               date_obj->obj.hour = ti->tm_hour;
-               date_obj->obj.date = ti->tm_mday;
-               date_obj->obj.month = ti->tm_mon;
-               date_obj->obj.year = ti->tm_year;
-               date_obj->obj.dayWeek = ti->tm_wday;
-               date_obj->obj.dayYear = ti->tm_yday;
-               date_obj->obj.isDST = ti->tm_isdst;
-       }
-       else
-               log_error("date_new constructor with %d arguments 
unimplemented!\n",fn.nargs);
-
-       fn.result->set_as_object(date_obj);
-}
-void date_getdate(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.date);
-}
-void date_getday(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.dayWeek);
-}
-void date_getfullyear(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.year + 1900);
-}
-void date_gethours(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.hour);
-}
-void date_getmilliseconds(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.millisecond);
-}
-void date_getminutes(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.minute);
-}
-void date_getmonth(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.month);
-}
-void date_getseconds(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.second);
-}
-void date_gettime(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_double(date->obj.getTime());
-}
-void date_gettimezoneoffset(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.minutesEast);
-}
-void date_getutcdate(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       tm result = date->obj.convertUTC();
-
-       fn.result->set_int(int(result.tm_mday));
-}
-void date_getutcday(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       tm result = date->obj.convertUTC();
-
-       fn.result->set_int(int(result.tm_wday));
-}
-void date_getutcfullyear(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       tm result = date->obj.convertUTC();
-
-       fn.result->set_int(int(result.tm_year)+1900);
-}
-void date_getutchours(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       tm result = date->obj.convertUTC();
-
-       fn.result->set_int(int(result.tm_hour));
-}
-void date_getutcmilliseconds(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       // Milliseconds (value between 0 and 999) won't be affected by timezone
-       fn.result->set_int(int(date->obj.millisecond));
-}
-void date_getutcminutes(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       tm result = date->obj.convertUTC();
-
-       fn.result->set_int(int(result.tm_min));
-}
-void date_getutcmonth(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       tm result = date->obj.convertUTC();
-
-       fn.result->set_int(int(result.tm_mon));
-}
-void date_getutcseconds(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       // Seconds (value between 0 and 59) won't be affected by timezone
-       fn.result->set_int(int(date->obj.second));
-}
-void date_getyear(const fn_call& fn) {
-       assert(fn.nargs == 0);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       fn.result->set_int(date->obj.year);
-}
-
-// TODO: for all these "set" functions, what do we do if sent illegal values?
-// Clamp them to a proper range? Ignore and keep previous value? Throw an 
error?
-// For now I'm "normalizing" them e.g. Jan-33 25:60:60 -> Feb-3 2:01:00
-
-// TODO: Also, confirm this is the appropriate behavior for the setUTC()
-// functions. Right now, we convert the time to UTC, set the variable,
-// then convert back to local time. We should confirm the official behavior!
-void date_setdate(const fn_call& fn) {
-       assert(fn.nargs == 1);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       date->obj.date = (long int)(fn.arg(0).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setfullyear(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 3);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       date->obj.year = (long int)(fn.arg(0).to_number() - 1900);
-       if (fn.nargs >= 2)
-               date->obj.month = (long int)(fn.arg(1).to_number());
-       if (fn.nargs >= 3)
-               date->obj.date = (long int)(fn.arg(2).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_sethours(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 4);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       date->obj.hour = (long int)(fn.arg(0).to_number());
-       if (fn.nargs >= 2)
-               date->obj.minute = (long int)(fn.arg(1).to_number());
-       if (fn.nargs >= 3)
-               date->obj.second = (long int)(fn.arg(2).to_number());
-       if (fn.nargs >= 4)
-               date->obj.millisecond = (long int)(fn.arg(3).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setmilliseconds(const fn_call& fn) {
-       assert(fn.nargs == 1);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       date->obj.millisecond = (long int)(fn.arg(0).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setminutes(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 3);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       // Seconds (value between 0 and 59) won't be affected by timezone
-       date->obj.minute = (long int)(fn.arg(0).to_number());
-       if (fn.nargs >= 2) date->obj.second = (long int)(fn.arg(1).to_number());
-       if (fn.nargs >= 3) date->obj.millisecond = (long 
int)(fn.arg(2).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setmonth(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 2);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       date->obj.month = (long int)(fn.arg(0).to_number());
-       if (fn.nargs >= 2)
-               date->obj.date = (long int)(fn.arg(1).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setseconds(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 2);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       // Seconds (value between 0 and 59) won't be affected by timezone
-       date->obj.second = (long int)(fn.arg(0).to_number());
-       if (fn.nargs >= 2) date->obj.millisecond = (long 
int)(fn.arg(1).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_settime(const fn_call& /*fn*/) {
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void date_setutcdate(const fn_call& fn) {
-       assert(fn.nargs == 1);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-
-       tm utctime = date->obj.convertUTC();
-       // Set mday to our new UTC date (yday and wday don't need to be set)
-       utctime.tm_mday = int(fn.arg(0).to_number());
-
-       // Convert back from UTC to local time
-       utctime.tm_min += date->obj.minutesEast;
-
-       // Normalize the time, then set as this object's new time
-       time_t newtime = mktime(&utctime);
-       date->obj.setFromTM(*(localtime(&newtime)));
-       
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setutcfullyear(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 3);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-
-       tm utctime = date->obj.convertUTC();
-       // Set year to our new UTC date
-       utctime.tm_year = int(fn.arg(0).to_number()-1900);
-       if (fn.nargs >= 2)
-               utctime.tm_mon = (long int)(fn.arg(1).to_number());
-       if (fn.nargs >= 3)
-               utctime.tm_mday = (long int)(fn.arg(2).to_number());
-
-       // Convert back from UTC to local time
-       utctime.tm_min += date->obj.minutesEast;
-
-       // Normalize the time, then set as this object's new time
-       time_t newtime = mktime(&utctime);
-       date->obj.setFromTM(*(localtime(&newtime)));
-       
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setutchours(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 4);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-
-       if (fn.nargs >= 4)
-       {
-               date->obj.millisecond = (long int)(fn.arg(3).to_number());
-               date->obj.Normalize();
-       }
-
-       tm utctime = date->obj.convertUTC();
-       // Set year to our new UTC date
-       utctime.tm_hour = int(fn.arg(0).to_number());
-       if (fn.nargs >= 2)
-               utctime.tm_min = (long int)(fn.arg(1).to_number());
-       if (fn.nargs >= 3)
-               utctime.tm_sec = (long int)(fn.arg(2).to_number());
-
-       // Convert back from UTC to local time
-       utctime.tm_min += date->obj.minutesEast;
-
-       // Normalize the time, then set as this object's new time
-       time_t newtime = mktime(&utctime);
-       date->obj.setFromTM(*(localtime(&newtime)));
-       
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setutcmilliseconds(const fn_call& fn) {
-       assert(fn.nargs == 1);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       date->obj.millisecond = (long int)(fn.arg(0).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setutcminutes(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 3);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       // Seconds (value between 0 and 59) won't be affected by timezone
-       date->obj.minute = (long int)(fn.arg(0).to_number());
-       if (fn.nargs >= 2) date->obj.second = (long int)(fn.arg(1).to_number());
-       if (fn.nargs >= 3) date->obj.millisecond = (long 
int)(fn.arg(2).to_number());
-
-       // Setting milliseconds to less than 0 or more than 999 affects seconds
-       date->obj.second += date->obj.millisecond / 1000;
-       date->obj.millisecond = date->obj.millisecond % 1000;
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setutcmonth(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 2);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-
-       tm utctime = date->obj.convertUTC();
-       // Set year to our new UTC date
-       utctime.tm_mon = int(fn.arg(0).to_number());
-       if (fn.nargs >= 2)
-               utctime.tm_mday = (long int)(fn.arg(1).to_number());
-
-       // Convert back from UTC to local time
-       utctime.tm_min += date->obj.minutesEast;
-
-       // Normalize the time, then set as this object's new time
-       time_t newtime = mktime(&utctime);
-       date->obj.setFromTM(*(localtime(&newtime)));
-       
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setutcseconds(const fn_call& fn) {
-       assert(fn.nargs >= 1 && fn.nargs <= 2);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       // Seconds (value between 0 and 59) won't be affected by timezone
-       date->obj.second = (long int)(fn.arg(0).to_number());
-       if (fn.nargs >= 2) date->obj.millisecond = (long 
int)(fn.arg(1).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_setyear(const fn_call& fn) {
-       assert(fn.nargs == 1);
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-       date->obj.year = (long int)(fn.arg(0).to_number());
-
-       date->obj.Normalize();
-       fn.result->set_double(date->obj.getTime());
-}
-void date_tostring(const fn_call& fn) {
-       // TODO: I have no idea what the real flash player does, but at least 
this
-       // gives something functional for now. Tried to mimic the "date" command
-       char buffer[32];
-       char* monthname[12] =
-               
{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
-       char* dayweekname[7] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
-
-       date_as_object* date = (date_as_object*) (as_object*) fn.this_ptr;
-
-       snprintf((char *)&buffer,128,"%s %s %2ld %.2ld:%.2ld:%.2ld %ld",
-               dayweekname[date->obj.dayWeek],monthname[date->obj.month],
-               date->obj.date,date->obj.hour,date->obj.minute,date->obj.second,
-               1900+date->obj.year);
-
-       fn.result->set_string((char *)&buffer);
-}
-void date_utc(const fn_call& /*fn*/) {
-       log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnash namespace
-

Index: server/Date.h
===================================================================
RCS file: server/Date.h
diff -N server/Date.h
--- server/Date.h       24 Apr 2006 23:05:56 -0000      1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,152 +0,0 @@
-// 
-//     Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-//
-
-#ifndef __DATE_H__
-#define __DATE_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Date {
-public:
-        Date();
-        ~Date();
-       // Use double to avoid overflow
-       double getTime();
-       void getTimezoneOffset();
-       void getUTCDate();
-       void getUTCDay();
-       void getUTCFullYear();
-       void getUTCHours();
-       void getUTCMilliseconds();
-       void getUTCMinutes();
-       void getUTCMonth();
-       void getUTCSeconds();
-       void getYear();
-       void setDate();
-       void setFullYear();
-       void setHours();
-       void setMilliseconds();
-       void setMinutes();
-       void setMonth();
-       void setSeconds();
-       void setTime();
-       void setUTCDate();
-       void setUTCFullYear();
-       void setUTCHours();
-       void setUTCMilliseconds();
-       void setUTCMinutes();
-       void setUTCMonth();
-       void setUTCSeconds();
-       void setYear();
-       void toString();
-       void UTC();
-
-       // These store the local time
-       bool isDST;
-       long year,month,date,hour,minute,second,millisecond;
-       int minutesEast;
-       int dayWeek,dayYear;
-
-       // This returns a tm struct representing this date in UTC time
-       tm convertUTC();
-       // This returns a tm struct representing this date in local time
-       tm convertTM();
-       // This sets the values in the date object to those in the tm struct
-       // And ignores any values not stored in the tm struct
-       void setFromTM(const tm newtime);
-       // This function normalizes the time - for example, if we set the date 
to
-       // Jan-32, 1:61:60, after normalize the time will be Feb-1, 2:02:00
-       void Normalize();
-private:
-};
-
-struct date_as_object : public as_object
-{
-        Date obj;
-};
-
-void date_new(const fn_call& fn);
-void date_getdate(const fn_call& fn);
-void date_getday(const fn_call& fn);
-void date_getfullyear(const fn_call& fn);
-void date_gethours(const fn_call& fn);
-void date_getmilliseconds(const fn_call& fn);
-void date_getminutes(const fn_call& fn);
-void date_getmonth(const fn_call& fn);
-void date_getseconds(const fn_call& fn);
-void date_gettime(const fn_call& fn);
-void date_gettimezoneoffset(const fn_call& fn);
-void date_getutcdate(const fn_call& fn);
-void date_getutcday(const fn_call& fn);
-void date_getutcfullyear(const fn_call& fn);
-void date_getutchours(const fn_call& fn);
-void date_getutcmilliseconds(const fn_call& fn);
-void date_getutcminutes(const fn_call& fn);
-void date_getutcmonth(const fn_call& fn);
-void date_getutcseconds(const fn_call& fn);
-void date_getyear(const fn_call& fn);
-void date_setdate(const fn_call& fn);
-void date_setfullyear(const fn_call& fn);
-void date_sethours(const fn_call& fn);
-void date_setmilliseconds(const fn_call& fn);
-void date_setminutes(const fn_call& fn);
-void date_setmonth(const fn_call& fn);
-void date_setseconds(const fn_call& fn);
-void date_settime(const fn_call& fn);
-void date_setutcdate(const fn_call& fn);
-void date_setutcfullyear(const fn_call& fn);
-void date_setutchours(const fn_call& fn);
-void date_setutcmilliseconds(const fn_call& fn);
-void date_setutcminutes(const fn_call& fn);
-void date_setutcmonth(const fn_call& fn);
-void date_setutcseconds(const fn_call& fn);
-void date_setyear(const fn_call& fn);
-void date_tostring(const fn_call& fn);
-void date_utc(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __DATE_H__
-#endif
-

Index: server/Error.cpp
===================================================================
RCS file: server/Error.cpp
diff -N server/Error.cpp
--- server/Error.cpp    24 Jun 2006 15:43:41 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,75 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Error.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Error::Error() {
-}
-
-Error::~Error() {
-}
-
-
-void
-Error::toString()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-error_new(const fn_call& fn)
-{
-    error_as_object *error_obj = new error_as_object;
-
-    error_obj->set_member("tostring", &error_tostring);
-
-    fn.result->set_as_object(error_obj);
-}
-void error_tostring(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnash namespace
-

Index: server/Error.h
===================================================================
RCS file: server/Error.h
diff -N server/Error.h
--- server/Error.h      24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,73 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __ERROR_H__
-#define __ERROR_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Error {
-public:
-    Error();
-    ~Error();
-   void toString();
-private:
-    bool _message;
-    bool _name;
-};
-
-struct error_as_object : public as_object
-{
-    Error obj;
-};
-
-void error_new(const fn_call& fn);
-void error_tostring(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __ERROR_H__
-#endif
-

Index: server/Global.cpp
===================================================================
RCS file: server/Global.cpp
diff -N server/Global.cpp
--- server/Global.cpp   7 Jul 2006 13:49:40 -0000       1.19
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,568 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-// Implementation of the Global ActionScript Object
-
-#include "as_object.h"
-#include "array.h"
-#include "Boolean.h"
-#include "Camera.h"
-#include "Color.h"
-#include "ContextMenu.h"
-#include "CustomActions.h"
-#include "Date.h"
-#include "Error.h"
-#include "as_function.h" // for action_init
-#include "Global.h"
-#include "gstring.h"
-#include "Key.h"
-#include "LoadVars.h"
-#include "LocalConnection.h"
-#include "Microphone.h"
-#include "Math.h"
-#include "Mouse.h"
-#include "MovieClipLoader.h"
-#include "MovieClip.h" 
-#include "movie_definition.h"
-#include "NetConnection.h"
-#include "NetStream.h"
-#include "Selection.h"
-#include "SharedObject.h"
-#include "smart_ptr.h"
-#include "ASSound.h"
-#include "Stage.h"
-#include "System.h"
-#include "textformat.h"
-#include "TextSnapshot.h"
-#include "Video.h"
-
-#include <fn_call.h>
-#include <sprite_instance.h>
-
-#ifdef HAVE_LIBXML
-#include "xml.h"
-#include "xmlsocket.h"
-#endif
-
-#include <iostream>
-using namespace std;
-
-namespace gnash {
-
-void
-as_global_trace(const fn_call& fn)
-{
-    assert(fn.nargs >= 1);
-
-// @@ NOTHING should get special treatment,
-//    as_value::to_string() will take care of everything
-#if 0
-    // Special case for objects: try the toString() method.
-    if (fn.arg(0).get_type() == as_value::OBJECT)
-       {
-           as_object* obj = fn.arg(0).to_object();
-           assert(obj);
-
-           as_value method;
-           if (obj->get_member("toString", &method)
-               && method.is_function())
-               {
-                   as_value result = call_method0(method, fn.env, obj);
-                   log_msg("%s\n", result.to_string());
-
-                   return;
-               }
-       }
-#endif
-
-    // Log our argument.
-    //
-    // @@ what if we get extra args?
-    //
-    // @@ Array gets special treatment.
-    // @@ NOTHING should get special treatment,
-    //    as_value::to_string() will take care of everything
-    const char* arg0 = fn.arg(0).to_string();
-    log_msg("%s\n", arg0);
-}
-
-
-static void
-as_global_object_ctor(const fn_call& fn)
-    // Constructor for ActionScript class Object.
-{
-    as_object *new_obj;
-
-    if ( fn.nargs == 0 )
-       {
-           new_obj = new as_object();
-       }
-    else if ( fn.nargs == 1 ) // copy constructor
-       {
-           as_object *src_obj = fn.arg(0).to_object();
-           new_obj = new as_object(src_obj);
-       }
-    else
-       {
-           dbglogfile << "Too many args to Object constructor" << endl;
-           new_obj = new as_object();
-       }
-
-    fn.result->set_as_object(new_obj);
-}
-
-static void
-as_global_isnan(const fn_call& fn)
-{
-    assert(fn.nargs == 1);
-
-    fn.result->set_bool(fn.arg(0).is_nan());
-}
-
-static void
-as_global_isfinite(const fn_call& fn)
-{
-    assert(fn.nargs == 1);
-
-    fn.result->set_bool(fn.arg(0).is_finite());
-}
-
-static void
-as_global_unescape(const fn_call& fn)
-{
-    assert(fn.nargs == 1);
-
-    std::string input = fn.arg(0).to_string();
-    std::string insertst;
-    int hexcode;
-
-    for (unsigned int i=0;i<input.length();)
-       {
-           if ((input.length() > i + 2) && input[i] == '%' &&
-               isxdigit(input[i+1]) && isxdigit(input[i+2]))
-               {
-                   input[i+1] = toupper(input[i+1]);
-                   input[i+2] = toupper(input[i+2]);
-                   if (isdigit(input[i+1]))
-                       hexcode = (input[i+1] - '0') * 16;
-                   else
-                       hexcode = (input[i+1] - 'A' + 10) * 16;
-
-                   if (isdigit(input[i+2]))
-                       hexcode += (input[i+2] - '0');
-                   else
-                       hexcode += (input[i+2] - 'A' + 10);
-
-                   input.erase(i,3);
-                               
-                   switch (hexcode)
-                       {
-                         case 0x20: // space
-                             insertst = ' ';
-                             break;
-                         case 0x22: // "
-                             insertst = '\"';
-                             break;
-                         case 0x23: // #
-                             insertst = '#';
-                             break;
-                         case 0x24: // $
-                             insertst = '$';
-                             break;
-                         case 0x25: // %
-                             insertst = '%';
-                             break;
-                         case 0x26: // &
-                             insertst = '&';
-                             break;
-                         case 0x2B: // +
-                             insertst = '+';
-                             break;
-                         case 0x2C: // ,
-                             insertst = ',';
-                             break;
-                         case 0x2F: // /
-                             insertst = '/';
-                             break;
-                         case 0x3A: // :
-                             insertst = ':';
-                             break;
-                         case 0x3B: // ;
-                             insertst = ';';
-                             break;
-                         case 0x3C: // <
-                             insertst = '<';
-                             break;
-                         case 0x3D: // =
-                             insertst = '=';
-                             break;
-                         case 0x3E: // >
-                             insertst = '>';
-                             break;
-                         case 0x3F: // ?
-                             insertst = '?';
-                             break;
-                         case 0x40: // @
-                             insertst = '@';
-                             break;
-                         case 0x5B: // [
-                             insertst = '[';
-                             break;
-                         case 0x5C: // \ (backslash)
-                             insertst = '\\';
-                             break;
-                         case 0x5D: // ]
-                             insertst = ']';
-                             break;
-                         case 0x5E: // ^
-                             insertst = '^';
-                             break;
-                         case 0x60: // `
-                             insertst = '`';
-                             break;
-                         case 0x7B: // {
-                             insertst = '{';
-                             break;
-                         case 0x7C: // |
-                             insertst = '|';
-                             break;
-                         case 0x7D: // }
-                             insertst = '}';
-                             break;
-                         case 0x7E: // ~
-                             insertst = '~';
-                             break;
-                         default:
-                             log_action("ERROR: unescape() function reached "
-                                                         "unknown hexcode %d, 
aborting unescape()\n",hexcode);
-                             fn.result->set_string(fn.arg(0).to_string());
-                             return;
-                       }
-                   input.insert(i,insertst);
-               }
-           else
-               i++;
-       }
-    fn.result->set_string(input.c_str());
-}
-
-static void
-as_global_parsefloat(const fn_call& fn)
-{
-    assert(fn.nargs == 1);
-
-    float result;
-
-    // sscanf will handle the whitespace / unneeded characters etc. 
automatically
-    if (1 == sscanf(fn.arg(0).to_string(), "%f", &result))
-       fn.result->set_double(double(result));
-    else
-       // if sscanf didn't find anything, return NaN
-       fn.result->set_nan();
-}
-
-static void
-as_global_parseint(const fn_call& fn)
-{
-    assert(fn.nargs == 2 || fn.nargs == 1);
-
-    // Make sure our argument is the correct type
-    if (fn.nargs > 1)
-       fn.arg(1).convert_to_number();
-
-    // Set up some variables
-    const std::string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-    char *input = new char[strlen(fn.arg(0).to_string())+1];
-    strcpy(input,fn.arg(0).to_string());
-    double base;
-    int result = 0, i;
-    bool bNegative;
-
-    // Skip leading whitespace
-    while ((input[0] == ' ') || (input[0] == 0x9))
-       input++;
-
-    if (input[0] == '-')
-       {
-           bNegative = true;
-           input++;
-       }
-    else
-       bNegative = false;
-
-    // Convert the string to uppercase
-    for (i=0;i<int(strlen(input));i++)
-       input[i] = toupper(input[i]);
-
-    // if we were sent a second argument, that's our base
-    if (fn.nargs > 1)
-       {
-           base = fn.arg(1).to_number();
-       }
-    // if the string starts with "0x" then a hex digit
-    else if (strlen(input) > 2 && input[0] == '0' && input[1] == 'X'
-            && (isdigit(input[2]) || (input[2] >= 'A' && input[2] <= 'F')))
-       {
-           base = 16.0;        // the base is 16
-           input = input + 2; // skip the leading "0x"
-       }
-    // if the string starts with "0" then an octal digit
-    else if (strlen(input) > 1 && input[0] == '0' &&
-            (input[1] >= '0' && input[1] <= '7'))
-       {
-           base = 8.0;
-           input++; // skip the leading '0'
-       }
-    else
-       // default base is 10
-       base = 10.0;
-
-    assert (base >= 2 && base <= 36);
-
-    int numdigits = 0;
-
-    // Start at the beginning, see how many valid digits we have
-    // in the base we're dealing with
-    while (numdigits < int(strlen(input)) 
-          && int(digits.find(input[numdigits])) < base
-          && digits.find(input[numdigits]) != std::string::npos)
-       numdigits++;
-
-    // If we didn't get any digits, we should return NaN
-    if (numdigits == 0)
-       {
-           fn.result->set_nan();
-           return;
-       }
-
-    for (i=0;i<numdigits;i++)
-       {
-               result += digits.find(input[i]) * (int)pow(base, numdigits - i 
- 1);
-       }
-
-    if (bNegative)
-       result = -result;
-
-    // Now return the parsed string
-    fn.result->set_int(result);
-}
-
-// ASSetPropFlags function
-static void
-as_global_assetpropflags(const fn_call& fn)
-{
-       int version = fn.env->get_version();
-
-       log_msg("ASSetPropFlags called with %d args", fn.nargs);
-
-       // Check the arguments
-       assert(fn.nargs == 3 || fn.nargs == 4);
-       assert((version == 5) ? (fn.nargs == 3) : true);
-               
-       // ASSetPropFlags(obj, props, n, allowFalse=false)
-
-       // object
-       as_object* obj = fn.arg(0).to_object();
-       if ( ! obj )
-       {
-               log_warning("Invalid call to ASSetPropFlags: "
-                       "object argument is not an object: %s",
-                       fn.arg(0).to_string());
-               return;
-       }
-
-       // list of child names
-
-       as_object* props = fn.arg(1).to_object();
-       if (props == NULL)
-       {
-               // second argument can either be an array or
-               // a comma-delimited string.
-               // see: http://www.flashguru.co.uk/assetpropflags/
-               log_error("ASSetPropFlags unimplemented for non-array prop"
-                       " argument (%s)", fn.arg(1).to_string());
-
-               return; // be nice, dont' abort
-
-               // tulrich: this fires in test_ASSetPropFlags -- is it correct?
-               assert(fn.arg(1).get_type() == as_value::NULLTYPE);
-       }
-
-    // a number which represents three bitwise flags which
-    // are used to determine whether the list of child names should be hidden,
-    // un-hidden, protected from over-write, un-protected from over-write,
-    // protected from deletion and un-protected from deletion
-    int set_true = int(fn.arg(2).to_number()) & 
as_prop_flags::as_prop_flags_mask;
-
-    // Is another integer bitmask that works like set_true,
-    // except it sets the attributes to false. The
-    // set_false bitmask is applied before set_true is applied
-
-    // ASSetPropFlags was exposed in Flash 5, however the fourth argument 
'set_false'
-    // was not required as it always defaulted to the value '~0'. 
-    int set_false = (fn.nargs == 3 ? 
-                    (version == 5 ? ~0 : 0) : int(fn.arg(3).to_number()))
-       & as_prop_flags::as_prop_flags_mask;
-
-    // Evan: it seems that if set_true == 0 and set_false == 0, this function
-    // acts as if the parameters where (object, null, 0x1, 0) ...
-    if (set_false == 0 && set_true == 0)
-       {
-           props = NULL;
-           set_false = 0;
-           set_true = 0x1;
-       }
-
-    if (props == NULL)
-       {
-           // Take all the members of the object
-
-           as_object* object = obj;
-
-           stringi_hash<as_member>::const_iterator it = 
object->m_members.begin();
-           while (it != object->m_members.end())
-               {
-                   as_member member = it->second;
-
-                   as_prop_flags f = member.get_member_flags();
-                   //const int oldflags = 
-                   f.get_flags();
-                   //const int newflags =
-                   f.set_flags(set_true, set_false);
-                   member.set_member_flags(f);
-
-                   object->m_members[it->first] = member;
-
-                   ++it;
-               }
-
-           if (object->m_prototype != NULL)
-               {
-                   const as_object* prototype = object->m_prototype;
-
-                   it = prototype->m_members.begin();
-                   while (it != prototype->m_members.end())
-                       {
-                           as_member member = it->second;
-
-                           as_prop_flags f = member.get_member_flags();
-                           //const int oldflags =
-                           f.get_flags();
-                           //const int newflags = 
-                           f.set_flags(set_true, set_false);
-                           member.set_member_flags(f);
-
-                           object->m_members[it->first] = member;
-
-                           ++it;
-                       }
-               }
-       }
-       else
-       {
-           as_object* object = obj;
-           as_object* object_props = props;
-
-           stringi_hash<as_member>::iterator it = 
object_props->m_members.begin();
-           while(it != object_props->m_members.end())
-               {
-                   const tu_stringi key = 
(it->second).get_member_value().to_string();
-                   stringi_hash<as_member>::iterator it2 = 
object->m_members.find(key);
-
-                   if (it2 != object->m_members.end())
-                       {
-                           as_member member = it2->second;
-
-                           as_prop_flags f = member.get_member_flags();
-                           //const int oldflags =
-                           f.get_flags();
-                           //const int newflags =
-                           f.set_flags(set_true, set_false);
-                           member.set_member_flags(f);
-
-                           
object->m_members[it->second.get_member_value().to_string()] = member;
-                       }
-
-                   ++it;
-               }
-       }
-}
-
-Global::Global()
-       :
-       as_object()
-{
-       set_member("trace", as_value(as_global_trace));
-       set_member("Object", as_value(as_global_object_ctor));
-       set_member("Sound", as_value(sound_new));
-
-       set_member("TextFormat", as_value(textformat_new));
-#ifdef HAVE_LIBXML
-       set_member("XML", as_value(xml_new));
-       set_member("XMLNode", as_value(xmlnode_new));
-       //set_member("XML", as_value(xmlsocket_xml_new));
-       set_member("XMLSocket", as_value(xmlsocket_new));
-#endif // HAVE_LIBXML
-       set_member("MovieClipLoader", as_value(moviecliploader_new));
-       //set_member("String", as_value(string_ctor));
-       // This next set are all the unimplemented classes whose
-       // code was machine generated.
-       set_member("Boolean", as_value(boolean_new));
-       set_member("Camera", as_value(camera_new));
-       set_member("Color", as_value(color_new));
-       set_member("ContextMenu", as_value(contextmenu_new));
-       set_member("CustomActions", as_value(customactions_new));
-       set_member("Date", as_value(date_new));
-       set_member("Error", as_value(error_new));
-       set_member("LoadVars", as_value(loadvars_new));
-       set_member("LocalConnection", as_value(localconnection_new));
-       set_member("Microphone", as_value(microphone_new));
-       set_member("Mouse", as_value(mouse_new));
-       set_member("NetConnection", as_value(netconnection_new));
-       set_member("NetStream", as_value(netstream_new));
-       set_member("Selection", as_value(selection_new));
-       set_member("SharedObject", as_value(sharedobject_new));
-       set_member("Stage", as_value(stage_new));
-       set_member("System", as_value(system_new));
-       set_member("TextSnapshot", as_value(textsnapshot_new));
-       set_member("Video", as_value(video_new));
-       // ASSetPropFlags
-       set_member("ASSetPropFlags", as_global_assetpropflags);
-       // unescape
-       set_member("unescape", as_global_unescape);
-       // parseFloat
-       set_member("parseFloat", as_global_parsefloat);
-       // parseInt
-       set_member("parseInt", as_global_parseint);
-       // isNan
-       set_member("isNan", as_global_isnan);
-       // isFinite
-       set_member("isFinite", as_global_isfinite);
-
-       string_class_init(*this); 
-       array_class_init(*this);
-       function_init(this);
-       movieclip_init(this);
-       math_init(this);
-       key_init(this);
-       system_init(this);
-}
-
-
-
-} // namespace gnash

Index: server/Key.cpp
===================================================================
RCS file: server/Key.cpp
diff -N server/Key.cpp
--- server/Key.cpp      10 Jul 2006 13:47:12 -0000      1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,459 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Key.h"
-#include "action.h" // for action_init
-#include "fn_call.h"
-#include "movie_root.h"
-
-namespace gnash {
-
-Key::Key() {
-}
-
-Key::~Key() {
-}
-
-
-void
-Key::addListener()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Key::getAscii()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Key::getCode()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Key::isDown()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Key::isToggled()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Key::removeListener()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-key_new(const fn_call& fn)
-{
-    key_as_object *key_obj = new key_as_object;
-
-    key_obj->set_member("addlistener", &key_addlistener);
-    key_obj->set_member("getascii", &key_getascii);
-    key_obj->set_member("getcode", &key_getcode);
-    key_obj->set_member("isdown", &key_isdown);
-    key_obj->set_member("istoggled", &key_istoggled);
-    key_obj->set_member("removelistener", &key_removelistener);
-
-    fn.result->set_as_object(key_obj);
-}
-void key_addlistener(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void key_getascii(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void key_getcode(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void key_isdown(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void key_istoggled(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void key_removelistener(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-/************************************************************************
- *
- * This has been moved from action.cpp, when things are clean
- * everything should have been moved up
- *
- ************************************************************************/
-
-key_as_object::key_as_object()
-       :
-       m_last_key_pressed(0)
-{
-    memset(m_keymap, 0, sizeof(m_keymap));
-}
-
-bool
-key_as_object::is_key_down(int code)
-{
-           if (code < 0 || code >= key::KEYCOUNT) return false;
-
-           int byte_index = code >> 3;
-           int bit_index = code - (byte_index << 3);
-           int mask = 1 << bit_index;
-
-           assert(byte_index >= 0 && byte_index < 
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
-
-           if (m_keymap[byte_index] & mask)
-               {
-                   return true;
-               }
-           else
-               {
-                   return false;
-               }
-}
-
-void
-key_as_object::set_key_down(int code)
-{
-           if (code < 0 || code >= key::KEYCOUNT) return;
-
-           m_last_key_pressed = code;
-
-           int byte_index = code >> 3;
-           int bit_index = code - (byte_index << 3);
-           int mask = 1 << bit_index;
-
-           assert(byte_index >= 0 && byte_index < 
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
-
-           m_keymap[byte_index] |= mask;
-
-           notify_listeners(event_id(event_id::KEY_DOWN).get_function_name());
-}
-
-
-void
-key_as_object::set_key_up(int code)
-{
-           if (code < 0 || code >= key::KEYCOUNT) return;
-
-           int byte_index = code >> 3;
-           int bit_index = code - (byte_index << 3);
-           int mask = 1 << bit_index;
-
-           assert(byte_index >= 0 && byte_index < 
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
-
-           m_keymap[byte_index] &= ~mask;
-
-           notify_listeners(event_id(event_id::KEY_UP).get_function_name());
-}
-
-void
-key_as_object::notify_listeners(const tu_stringi& funcname)
-{
-    // Notify listeners.
-    for (std::vector<weak_ptr<as_object> >::iterator iter = 
m_listeners.begin();
-         iter != m_listeners.end(); ++iter) {
-      if (*iter == NULL)
-        continue;
-
-      smart_ptr<as_object>  listener = *iter; // Hold an owning reference.
-      as_value method;
-
-      if (listener->get_member(funcname, &method))
-        call_method(method, NULL /* or root? */, listener.get_ptr(), 0, 0);
-    }
-}
-
-#if 0
-// XXXbjacques
-//   Well, I think cleanup_listeners() is a bad idea for several reasons:
-//   1) Since m_listeners is a vector of weak pointers, it is no way guaranteed
-//      that m_listeners won't be "dirty" immediately after cleanup_listeners()
-//      is called. Any users of m_listeners will have to NULL check pointers
-//      (and add a ref) retrieved from m_listeners anyway.
-//   2) std::vector.erase() is a potentially expensive operation.
-//   3) std::vector.erase() does no reallocation. We gain no memory by doing
-//      this.
-//   4) Thread safety may be an issue (due to the change of m_listeners.size(),
-//      as a result of std::vector.erase()). We really, really should be using
-//      iterators instead of size()/indicing to iterate these vectors, though.
-
-void
-key_as_object::cleanup_listeners()
-{
-           for (int i = m_listeners.size() - 1; i >= 0; i--)
-               {
-                   if (m_listeners[i] == NULL)
-                       {
-                           m_listeners.erase(m_listeners.begin() + i);
-                       }
-               }
-}
-
-#endif
-
-void
-key_as_object::add_listener(as_object* listener)
-{
-#if 0
-//XXXbjacques: see comment above
-           cleanup_listeners();
-#endif
-
-    // Should we bother doing this every time someone calls add_listener(),
-    // or should we perhaps skip this check and use unique later?
-    std::vector<weak_ptr<as_object> >::const_iterator end = m_listeners.end();
-    for (std::vector<weak_ptr<as_object> >::iterator iter = 
m_listeners.begin();
-         iter != end; ++iter) {
-      if (*iter == NULL) {
-        // Already in the list.
-        return;
-      }
-    }
-
-    m_listeners.push_back(listener);
-}
-
-void
-key_as_object::remove_listener(as_object* listener)
-{
-#if 0
-XXXbjacques: see above comment
-           cleanup_listeners();
-#endif
-
-  for (std::vector<weak_ptr<as_object> >::iterator iter = m_listeners.begin(); 
iter != m_listeners.end(); )
-       {
-    if (*iter == listener)
-               {
-      iter = m_listeners.erase(iter);
-                       continue;
-    }
-               iter++;
-       }
-}
-
-int
-key_as_object::get_last_key_pressed() const
-{
-       return m_last_key_pressed;
-}
-
-
-void
-key_add_listener(const fn_call& fn)
-{
-    if (fn.nargs < 1)
-       {
-           log_error("key_add_listener needs one argument (the listener 
object)\n");
-           return;
-       }
-
-    as_object* listener = fn.arg(0).to_object();
-    if (listener == NULL)
-       {
-           log_error("key_add_listener passed a NULL object; ignored\n");
-           return;
-       }
-
-    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
-    assert(ko);
-
-    ko->add_listener(listener);
-}
-
-void   key_get_ascii(const fn_call& fn)
-    // Return the ascii value of the last key pressed.
-{
-    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
-    assert(ko);
-
-    fn.result->set_undefined();
-
-    int        code = ko->get_last_key_pressed();
-    if (code > 0)
-       {
-           // @@ Crude for now; just jamming the key code in a string, as a 
character.
-           // Need to apply shift/capslock/numlock, etc...
-           char        buf[2];
-           buf[0] = (char) code;
-           buf[1] = 0;
-
-           fn.result->set_string(buf);
-       }
-}
-
-void   key_get_code(const fn_call& fn)
-    // Returns the keycode of the last key pressed.
-{
-    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
-    assert(ko);
-
-    fn.result->set_int(ko->get_last_key_pressed());
-}
-
-void   key_is_down(const fn_call& fn)
-    // Return true if the specified (first arg keycode) key is pressed.
-{
-    if (fn.nargs < 1)
-       {
-           log_error("key_is_down needs one argument (the key code)\n");
-           return;
-       }
-
-    int        code = (int) fn.arg(0).to_number();
-
-    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
-    assert(ko);
-
-    fn.result->set_bool(ko->is_key_down(code));
-}
-
-void   key_is_toggled(const fn_call& fn)
-    // Given the keycode of NUM_LOCK or CAPSLOCK, returns true if
-    // the associated state is on.
-{
-    // @@ TODO
-    fn.result->set_bool(false);
-}
-
-void   key_remove_listener(const fn_call& fn)
-    // Remove a previously-added listener.
-{
-    if (fn.nargs < 1)
-       {
-           log_error("key_remove_listener needs one argument (the listener 
object)\n");
-           return;
-       }
-
-    as_object* listener = fn.arg(0).to_object();
-    if (listener == NULL)
-       {
-           log_error("key_remove_listener passed a NULL object; ignored\n");
-           return;
-       }
-
-    key_as_object*     ko = static_cast<key_as_object*>( fn.this_ptr );
-    assert(ko);
-
-    ko->remove_listener(listener);
-}
-
-void   notify_key_event(key::code k, bool down)
-    // External interface for the host to report key events.
-{
-//         GNASH_REPORT_FUNCTION;
-           
-    action_init();     // @@ put this in some global init somewhere else...
-
-       // Notify keypress listeners.
-       if (down) 
-       {
-               movie_root* mroot = (movie_root*) get_current_root();
-               mroot->notify_keypress_listeners(k);
-       }
-
-    static tu_string   key_obj_name("Key");
-
-    as_value   kval;
-    s_global->get_member(key_obj_name, &kval);
-    if (kval.get_type() == as_value::OBJECT)
-       {
-           key_as_object*      ko = static_cast<key_as_object*>( 
kval.to_object() );
-           assert(ko);
-
-           if (down) ko->set_key_down(k);
-           else ko->set_key_up(k);
-       }
-    else
-       {
-           log_error("gnash::notify_key_event(): no Key built-in\n");
-       }
-}
-
-// This has to be moved to Key.{cpp,h}
-void key_init(as_object* s_global)
-{
-//         GNASH_REPORT_FUNCTION;
-    // Create built-in key object.
-    as_object* key_obj = new key_as_object;
-
-    // constants
-#define KEY_CONST(k) key_obj->set_member(#k, key::k)
-    KEY_CONST(BACKSPACE);
-    KEY_CONST(CAPSLOCK);
-    KEY_CONST(CONTROL);
-    KEY_CONST(DELETEKEY);
-    KEY_CONST(DOWN);
-    KEY_CONST(END);
-    KEY_CONST(ENTER);
-    KEY_CONST(ESCAPE);
-    KEY_CONST(HOME);
-    KEY_CONST(INSERT);
-    KEY_CONST(LEFT);
-    KEY_CONST(PGDN);
-    KEY_CONST(PGUP);
-    KEY_CONST(RIGHT);
-    KEY_CONST(SHIFT);
-    KEY_CONST(SPACE);
-    KEY_CONST(TAB);
-    KEY_CONST(UP);
-
-    // methods
-    key_obj->set_member("addListener", &key_add_listener);
-    key_obj->set_member("getAscii", &key_get_ascii);
-    key_obj->set_member("getCode", &key_get_code);
-    key_obj->set_member("isDown", &key_is_down);
-    key_obj->set_member("isToggled", &key_is_toggled);
-    key_obj->set_member("removeListener", &key_remove_listener);
-
-    s_global->set_member("Key", key_obj);
-}
-
-} // end of gnash namespace
-

Index: server/Key.h
===================================================================
RCS file: server/Key.h
diff -N server/Key.h
--- server/Key.h        10 Jul 2006 13:47:12 -0000      1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,141 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-// 
-// Linking Gnash statically or dynamically with other modules is making
-// a combined work based on Gnash. Thus, the terms and conditions of
-// the GNU General Public License cover the whole combination.
-// 
-// In addition, as a special exception, the copyright holders of Gnash give
-// you permission to combine Gnash with free software programs or
-// libraries that are released under the GNU LGPL and/or with Mozilla, 
-// so long as the linking with Mozilla, or any variant of Mozilla, is
-// through its standard plug-in interface. You may copy and distribute
-// such a system following the terms of the GNU GPL for Gnash and the
-// licenses of the other code concerned, provided that you include the
-// source code of that other code when and as the GNU GPL requires
-// distribution of source code. 
-// 
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is
-// their choice whether to do so.  The GNU General Public License gives
-// permission to release a modified version without this exception; this
-// exception also makes it possible to release a modified version which
-// carries forward this exception.
-
-#ifndef __KEY_H__
-#define __KEY_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-#include "as_object.h" // for inheritance
-
-#ifdef WIN32
-#      undef _CONTROL
-#      undef _SPACE
-#      undef _UP
-#endif
-
-namespace gnash {
-  
-class Key {
-public:
-    Key();
-    ~Key();
-   void addListener();
-   void getAscii();
-   void getCode();
-   void isDown();
-   void isToggled();
-   void removeListener();
-private:
-    bool _BACKSPACE;
-    bool _CAPSLOCK;
-    bool _CONTROL;
-    bool _DELETEKEY;
-    bool _DOWN;
-    bool _END;
-    bool _ENTER;
-    bool _ESCAPE;
-    bool _HOME;
-    bool _INSERT;
-    bool _LEFT;
-    bool _onKeyDown;
-    bool _onKeyUp;
-    bool _PGDN;
-    bool _PGUP;
-    bool _RIGHT;
-    bool _SHIFT;
-    bool _SPACE;
-    bool _TAB;
-    bool _UP;
-};
-
-//struct key_as_object : public as_object
-//{
-    //Key obj;
-//};
-
-void key_addlistener(const fn_call& fn);
-void key_getascii(const fn_call& fn);
-void key_getcode(const fn_call& fn);
-void key_isdown(const fn_call& fn);
-void key_istoggled(const fn_call& fn);
-void key_removelistener(const fn_call& fn);
-
-/************************************************************************
- *
- * This has been moved from action.cpp, when things are clean
- * everything should have been moved up
- *
- ************************************************************************/
-
-class key_as_object : public as_object
-{
-
-private:
-       uint8_t m_keymap[key::KEYCOUNT / 8 + 1];        // bit-array
-       std::vector<weak_ptr<as_object> >       m_listeners;
-       int     m_last_key_pressed;
-
-       void notify_listeners(const tu_stringi& funcname);
-public:
-       key_as_object();
-
-       bool is_key_down(int code);
-
-       void set_key_down(int code);
-
-       void set_key_up(int code);
-
-       void add_listener(as_object* listener);
-
-       void remove_listener(as_object* listener);
-
-       int get_last_key_pressed() const;
-};
-
-void key_init(as_object* global);
-
-} // end of gnash namespace
-
-// __KEY_H__
-#endif
-

Index: server/LoadVars.cpp
===================================================================
RCS file: server/LoadVars.cpp
diff -N server/LoadVars.cpp
--- server/LoadVars.cpp 24 Jun 2006 16:04:06 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,145 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "LoadVars.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-LoadVars::LoadVars() {
-}
-
-LoadVars::~LoadVars() {
-}
-
-
-void
-LoadVars::addRequestHeader()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-LoadVars::decode()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-LoadVars::getBytesLoaded()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-LoadVars::getBytesTotal()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-LoadVars::load()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-LoadVars::send()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-LoadVars::sendAndLoad()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-LoadVars::toString()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-loadvars_new(const fn_call& fn)
-{
-    loadvars_as_object *loadvars_obj = new loadvars_as_object;
-
-    loadvars_obj->set_member("addrequestheader", &loadvars_addrequestheader);
-    loadvars_obj->set_member("decode", &loadvars_decode);
-    loadvars_obj->set_member("getbytesloaded", &loadvars_getbytesloaded);
-    loadvars_obj->set_member("getbytestotal", &loadvars_getbytestotal);
-    loadvars_obj->set_member("load", &loadvars_load);
-    loadvars_obj->set_member("send", &loadvars_send);
-    loadvars_obj->set_member("sendandload", &loadvars_sendandload);
-    loadvars_obj->set_member("tostring", &loadvars_tostring);
-
-    fn.result->set_as_object(loadvars_obj);
-}
-void loadvars_addrequestheader(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void loadvars_decode(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void loadvars_getbytesloaded(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void loadvars_getbytestotal(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void loadvars_load(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void loadvars_send(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void loadvars_sendandload(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void loadvars_tostring(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/LoadVars.h
===================================================================
RCS file: server/LoadVars.h
diff -N server/LoadVars.h
--- server/LoadVars.h   24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,89 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __LOADVARS_H__
-#define __LOADVARS_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class LoadVars {
-public:
-    LoadVars();
-    ~LoadVars();
-   void addRequestHeader();
-   void decode();
-   void getBytesLoaded();
-   void getBytesTotal();
-   void load();
-   void send();
-   void sendAndLoad();
-   void toString();
-private:
-    bool _contentType;
-    bool _loaded;
-    bool _onData;
-    bool _onLoad;
-};
-
-struct loadvars_as_object : public as_object
-{
-    LoadVars obj;
-};
-
-void loadvars_new(const fn_call& fn);
-void loadvars_addrequestheader(const fn_call& fn);
-void loadvars_decode(const fn_call& fn);
-void loadvars_getbytesloaded(const fn_call& fn);
-void loadvars_getbytestotal(const fn_call& fn);
-void loadvars_load(const fn_call& fn);
-void loadvars_send(const fn_call& fn);
-void loadvars_sendandload(const fn_call& fn);
-void loadvars_tostring(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __LOADVARS_H__
-#endif
-

Index: server/LocalConnection.cpp
===================================================================
RCS file: server/LocalConnection.cpp
diff -N server/LocalConnection.cpp
--- server/LocalConnection.cpp  24 Jun 2006 16:04:06 -0000      1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,233 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <errno.h>
-
-#include "log.h"
-#include "LocalConnection.h"
-#include "network.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-// \class LocalConnection
-/// \brief Open a connection between two SWF movies so they can send
-/// each other Flash Objects to be executed.
-///
-LocalConnection::LocalConnection() {
-}
-
-LocalConnection::~LocalConnection() {
-}
-
-/// \brief Closes (disconnects) the LocalConnection object.
-void
-LocalConnection::close()
-{
-#ifdef NETWORK_CONN
-    closeNet();
-#else
-    closeMem();
-#endif
-}
-
-/// \brief Prepares the LocalConnection object to receive commands from a
-/// LocalConnection.send() command.
-/// 
-/// The name is a symbolic name like "lc_name", that is used by the
-/// send() command to signify which local connection to send the
-/// object to.
-bool
-LocalConnection::connect(const char *name)
-{
-#ifdef NETWORK_CONN
-    short lastport;
-    const char *lcname;
-
-    std::map<const char *, short>::const_iterator it;
-    for (it = _allocated.begin(); it != _allocated.end(); it++) {
-        lcname = it->first;
-        lastport  = it->second;
-        if (strcmp(name, lcname) == 0) {
-            log_msg("ERROR: %s already allocated!\n", name);
-            return false;
-        }
-    }
-
-    // Allocate the tcp/ip port adfter the last allocated one.
-    if (lastport != 0) {
-        _allocated[name] = lastport+1;
-    }
-
-    // Create the socket
-    if (createServer(lastport+1)) {
-        log_msg("New server started for \"%s\" connections.\n", name);
-    } else {
-        log_msg("ERROR: Couldn't create a new server for \"%s\"!\n");
-        return false;
-    }
-
-    if (newConnection(false)) {
-        log_msg("New connection started for \"%s\" connections.\n", name);
-//        writeNet(heloCreate(_version));
-        return true;
-    } else {
-        if (errno == EAGAIN) {
-            log_msg("No clients tried to connect within the allocated time 
limit\n");
-            return false;
-        }
-        else {
-            log_msg("ERROR: Couldn't create a new connection!\n");
-        }
-            
-        return false;
-    }
-#else
-    if (attach(name, true) == false) {
-        return false;
-    }
-#endif
-    _name = name;
-
-    return true;
-}
-
-/// \brief Returns a string representing the superdomain of the
-/// location of the current SWF file.
-///
-/// The domain is either the "localhost", or the hostname from the
-/// network connection. This behaviour changed for SWF v7. Prior to v7
-/// only the domain was returned, ie dropping off node names like
-/// "www". As of v7, the behaviour is to return the full host
-/// name. Gnash defaults to the v7 behaviour.
-/// \note If this becomes a problem, we'll have to implemented the
-/// older behaviour based on the version of the flash movie being
-/// played.
-std::string
-LocalConnection::domain(void)
-{
-    if (_name.size() == 0) {
-        return "localhost";
-    } else {
-        return _name;
-    }
-}
-
-/// \brief Invokes a method on a specified LocalConnection object.
-void
-LocalConnection::send()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-/// \brief Instantiate a new LocalConnection object within a flash movie
-void
-localconnection_new(const fn_call& fn)
-{
-    localconnection_as_object *localconnection_obj = new 
localconnection_as_object;
-
-    localconnection_obj->set_member("close", &localconnection_close);
-    localconnection_obj->set_member("connect", &localconnection_connect);
-    localconnection_obj->set_member("domain", &localconnection_domain);
-    localconnection_obj->set_member("send", &localconnection_send);
-#ifdef ENABLE_TESTING
-#ifdef NETWORK_CONN
-    localconnection_obj->set_member("connected",  &network_connected);
-    localconnection_obj->set_member("getfilefd",  &network_getfilefd);
-    localconnection_obj->set_member("getlistenfd",  &network_getlistenfd);
-#else
-    localconnection_obj->set_member("getname",  &shm_getname);
-    localconnection_obj->set_member("getsize",  &shm_getsize);
-    localconnection_obj->set_member("getallocated",  &shm_getallocated);
-    localconnection_obj->set_member("exists",  &shm_exists);
-#endif
-#endif
-
-    fn.result->set_as_object(localconnection_obj);
-}
-
-/// \brief The callback for LocalConnection::close()
-void localconnection_close(const fn_call& fn)
-{
-//    log_msg("%s: %d args\n", __PRETTY_FUNCTION__, fn.nargs);
-    
-    localconnection_as_object *ptr = (localconnection_as_object*)fn.this_ptr;
-    assert(ptr);
-    
-    ptr->obj.close();
-}
-
-/// \brief The callback for LocalConnection::connect()
-void localconnection_connect(const fn_call& fn)
-{
-//    log_msg("%s: %d args\n", __PRETTY_FUNCTION__, fn.nargs);
-    bool ret;
-    localconnection_as_object *ptr = (localconnection_as_object*)fn.this_ptr;
-    
-    assert(ptr);
-    if (fn.nargs != 0) {
-        ret = 
ptr->obj.connect(fn.env->bottom(fn.first_arg_bottom_index).to_string());
-    } else {
-        log_msg("ERROR: No connection name specified to 
LocalConnection.connect()!\n");
-        ret = ptr->obj.connect("localhost"); // FIXME: This should probably
-                                       // fail instead
-    }
-    fn.result->set_bool(ret);
-}
-
-/// \brief The callback for LocalConnection::domain()
-void localconnection_domain(const fn_call& fn)
-{
-//    log_msg("%s:\n", __PRETTY_FUNCTION__);
-    localconnection_as_object *ptr = (localconnection_as_object*)fn.this_ptr;
-    assert(ptr);
-    fn.result->set_tu_string(ptr->obj.domain().c_str());
-}
-
-// \brief The callback for LocalConnection::send()
-void localconnection_send(const fn_call& /*fn*/)
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/LocalConnection.h
===================================================================
RCS file: server/LocalConnection.h
diff -N server/LocalConnection.h
--- server/LocalConnection.h    24 Apr 2006 23:05:56 -0000      1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,95 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __LOCALCONNECTION_H__
-#define __LOCALCONNECTION_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string>
-#include <map>
-
-#include "impl.h"
-#include "log.h"
-#ifdef NETWORK_CONN
-#include "network.h"
-#else
-#include "shm.h"
-#endif
-
-namespace gnash {
-  
-#ifdef NETWORK_CONN
-class LocalConnection : public Network {
-#else
-class LocalConnection : public Shm {
-#endif
-public:
-    LocalConnection();
-    ~LocalConnection();
-    void close(void);
-    bool connect(const char *name);
-    std::string domain(void);
-    void send();
-// FIXME: these should be callbacks
-//     bool        _allowDomain;
-//     bool        _allowInsecureDomain;
-//     bool        _onStatus;
-private:
-    std::string _name;
-    std::map<const char *, short> _allocated;
-};
-
-struct localconnection_as_object : public as_object
-{
-    LocalConnection obj;
-};
-
-void localconnection_new(const fn_call& fn);
-void localconnection_close(const fn_call& fn);
-void localconnection_connect(const fn_call& fn);
-void localconnection_domain(const fn_call& fn);
-void localconnection_send(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __LOCALCONNECTION_H__
-#endif
-

Index: server/Math.cpp
===================================================================
RCS file: server/Math.cpp
diff -N server/Math.cpp
--- server/Math.cpp     20 May 2006 23:49:33 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,280 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Math.h"
-#include "tu_random.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Math::Math() {
-}
-
-Math::~Math() {
-}
-
-
-void
-Math::abs()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::acos()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::asin()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::atan()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::atan2()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::ceil()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::cos()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::exp()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::floor()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::log()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::max()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::min()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::pow()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::random()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::round()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::sin()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::sqrt()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Math::tan()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void math_init(as_object* s_global)
-{
-    // Create built-in math object.
-    as_object* math_obj = new math_as_object;
-
-    s_global->set_member("math", math_obj);
-}
-               
-//
-// math object
-//
-
-
-#if 0
-// One-argument simple functions.
-#define MATH_WRAP_FUNC1(funcname)                                              
        \
-       void    math_##funcname(as_value* result, as_object* this_ptr,          
\
-                               as_environment* env, int nargs, int 
first_arg_bottom_index)     \
-       {                                                                       
                \
-               double  arg = env->bottom(first_arg_bottom_index).to_number();  
                \
-               result->set_double(funcname(arg));                              
                \
-       }
-#else
-// One-argument simple functions.
-#define MATH_WRAP_FUNC1(funcname)                                              
        \
-       void    math_##funcname(const fn_call& fn)                              
                \
-       {                                                                       
                \
-               double  arg = fn.arg(0).to_number();                            
                \
-               fn.result->set_double(funcname(arg));                           
                \
-       }
-#endif
-
-MATH_WRAP_FUNC1(fabs);
-MATH_WRAP_FUNC1(acos);
-MATH_WRAP_FUNC1(asin);
-MATH_WRAP_FUNC1(atan);
-MATH_WRAP_FUNC1(ceil);
-MATH_WRAP_FUNC1(cos);
-MATH_WRAP_FUNC1(exp);
-MATH_WRAP_FUNC1(floor);
-MATH_WRAP_FUNC1(log);
-MATH_WRAP_FUNC1(sin);
-MATH_WRAP_FUNC1(sqrt);
-MATH_WRAP_FUNC1(tan);
-
-#if 0
-// Two-argument functions.
-#define MATH_WRAP_FUNC2_EXP(funcname, expr)                                    
                                        \
-       void    math_##funcname(as_value* result, as_object* this_ptr, 
as_environment* env, int nargs, int first_arg_bottom_index)      \
-       {                                                                       
                                                \
-               double  arg0 = env->bottom(first_arg_bottom_index).to_number(); 
                                                \
-               double  arg1 = env->bottom(first_arg_bottom_index - 
1).to_number();                                             \
-               result->set_double(expr);                                       
                                                \
-       }
-#else
-// Two-argument functions.
-#define MATH_WRAP_FUNC2_EXP(funcname, expr)                                    
                                        \
-       void    math_##funcname(const fn_call& fn)                              
                                                \
-       {                                                                       
                                                \
-               double  arg0 = fn.arg(0).to_number();                           
                                                \
-               double  arg1 = fn.arg(1).to_number();                           
                                                \
-               fn.result->set_double(expr);                                    
                                                \
-       }
-#endif
-MATH_WRAP_FUNC2_EXP(atan2, (atan2(arg0, arg1)));
-MATH_WRAP_FUNC2_EXP(max, (arg0 > arg1 ? arg0 : arg1));
-MATH_WRAP_FUNC2_EXP(min, (arg0 < arg1 ? arg0 : arg1));
-MATH_WRAP_FUNC2_EXP(pow, (pow(arg0, arg1)));
-
-// A couple of oddballs.
-void   math_random(const fn_call& fn)
-{
-    // Random number between 0 and 1.
-    fn.result->set_double(tu_random::next_random() / 
double(uint32_t(0x0FFFFFFFF)));
-}
-void   math_round(const fn_call& fn)
-{
-    // round argument to nearest int.
-    double     arg0 = fn.arg(0).to_number();
-    fn.result->set_double(floor(arg0 + 0.5));
-}
-       
-
-
-math_as_object::math_as_object()
-       :
-       as_object()
-{
-
-       // constant
-       set_member("e", 2.7182818284590452354);
-       set_member("ln2", 0.69314718055994530942);
-       set_member("log2e", 1.4426950408889634074);
-       set_member("ln10", 2.30258509299404568402);
-       set_member("log10e", 0.43429448190325182765);
-       set_member("pi", 3.14159265358979323846);
-       set_member("sqrt1_2", 0.7071067811865475244);
-       set_member("sqrt2", 1.4142135623730950488);
-
-       // math methods
-       set_member("abs", &math_abs);
-       set_member("acos", &math_acos);
-       set_member("asin", &math_asin);
-       set_member("atan", &math_atan);
-       set_member("ceil", &math_ceil);
-       set_member("cos", &math_cos);
-       set_member("exp", &math_exp);
-       set_member("floor", &math_floor);
-       set_member("log", &math_log);
-       set_member("random", &math_random);
-       set_member("round", &math_round);
-       set_member("sin", &math_sin);
-       set_member("sqrt", &math_sqrt);
-       set_member("tan", &math_tan);
-
-       set_member("atan2", &math_atan2);
-       set_member("max", &math_max);
-       set_member("min", &math_min);
-       set_member("pow", &math_pow);
-}
-
-void
-math_new(const fn_call& fn)
-{
-    math_as_object *math_obj = new math_as_object;
-    fn.result->set_as_object(math_obj);
-}
-
-void math_abs(const fn_call& fn) {
-       return math_fabs(fn);
-    //log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-
-} // end of gnash namespace
-

Index: server/Math.h
===================================================================
RCS file: server/Math.h
diff -N server/Math.h
--- server/Math.h       8 Jun 2006 04:16:19 -0000       1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,103 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#ifndef __MATH_H__
-#define __MATH_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef WIN32
-# undef min
-# undef max
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Math {
-public:
-    Math();
-    ~Math();
-   void abs();
-   void acos();
-   void asin();
-   void atan();
-   void atan2();
-   void ceil();
-   void cos();
-   void exp();
-   void floor();
-   void log();
-   void max();
-   void min();
-   void pow();
-   void random();
-   void round();
-   void sin();
-   void sqrt();
-   void tan();
-private:
-    bool _E;
-    bool _LN2;
-    bool _LN10;
-    bool _LOG2E;
-    bool _LOG10E;
-    bool _PI;
-    bool _SQRT1_2;
-    bool _SQRT2;
-};
-
-class math_as_object : public as_object
-{
-private:
-       //Math obj;
-
-public:
-       math_as_object();
-};
-
-void math_abs(const fn_call& fn);
-void math_acos(const fn_call& fn);
-void math_asin(const fn_call& fn);
-void math_atan(const fn_call& fn);
-void math_atan2(const fn_call& fn);
-void math_ceil(const fn_call& fn);
-void math_cos(const fn_call& fn);
-void math_exp(const fn_call& fn);
-void math_floor(const fn_call& fn);
-void math_log(const fn_call& fn);
-void math_max(const fn_call& fn);
-void math_min(const fn_call& fn);
-void math_pow(const fn_call& fn);
-void math_random(const fn_call& fn);
-void math_round(const fn_call& fn);
-void math_sin(const fn_call& fn);
-void math_sqrt(const fn_call& fn);
-void math_tan(const fn_call& fn);
-
-void math_init(as_object* s_global);
-
-} // end of gnash namespace
-
-// __MATH_H__
-#endif
-

Index: server/Microphone.cpp
===================================================================
RCS file: server/Microphone.cpp
diff -N server/Microphone.cpp
--- server/Microphone.cpp       24 Jun 2006 16:04:06 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,115 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Microphone.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Microphone::Microphone() {
-}
-
-Microphone::~Microphone() {
-}
-
-
-void
-Microphone::get()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Microphone::setGain()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Microphone::setRate()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Microphone::setSilenceLevel()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Microphone::setUseEchoSuppression()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-microphone_new(const fn_call& fn)
-{
-    microphone_as_object *microphone_obj = new microphone_as_object;
-
-    microphone_obj->set_member("get", &microphone_get);
-    microphone_obj->set_member("setgain", &microphone_setgain);
-    microphone_obj->set_member("setrate", &microphone_setrate);
-    microphone_obj->set_member("setsilencelevel", &microphone_setsilencelevel);
-    microphone_obj->set_member("setuseechosuppression", 
&microphone_setuseechosuppression);
-
-    fn.result->set_as_object(microphone_obj);
-}
-void microphone_get(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void microphone_setgain(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void microphone_setrate(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void microphone_setsilencelevel(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void microphone_setuseechosuppression(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/Microphone.h
===================================================================
RCS file: server/Microphone.h
diff -N server/Microphone.h
--- server/Microphone.h 24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,91 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __MICROPHONE_H__
-#define __MICROPHONE_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Microphone {
-public:
-    Microphone();
-    ~Microphone();
-   void get();
-   void setGain();
-   void setRate();
-   void setSilenceLevel();
-   void setUseEchoSuppression();
-private:
-    bool _activityLevel;
-    bool _gain;
-    bool _index;
-    bool _muted;
-    bool _name;
-    bool _names;
-    bool _onActivity;
-    bool _onStatus;
-    bool _rate;
-    bool _silenceLevel;
-    bool _silenceTimeOut;
-    bool _useEchoSuppression;
-};
-
-struct microphone_as_object : public as_object
-{
-    Microphone obj;
-};
-
-void microphone_new(const fn_call& fn);
-void microphone_get(const fn_call& fn);
-void microphone_setgain(const fn_call& fn);
-void microphone_setrate(const fn_call& fn);
-void microphone_setsilencelevel(const fn_call& fn);
-void microphone_setuseechosuppression(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __MICROPHONE_H__
-#endif
-

Index: server/Mouse.cpp
===================================================================
RCS file: server/Mouse.cpp
diff -N server/Mouse.cpp
--- server/Mouse.cpp    24 Jun 2006 16:38:03 -0000      1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,105 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Mouse.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Mouse::Mouse() {
-}
-
-Mouse::~Mouse() {
-}
-
-
-void
-Mouse::addListener()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Mouse::hide()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Mouse::removeListener()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Mouse::show()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-mouse_new(const fn_call& fn)
-{
-    mouse_as_object *mouse_obj = new mouse_as_object;
-
-    mouse_obj->set_member("addlistener", &mouse_addlistener);
-    mouse_obj->set_member("hide", &mouse_hide);
-    mouse_obj->set_member("removelistener", &mouse_removelistener);
-    mouse_obj->set_member("show", &mouse_show);
-
-    fn.result->set_as_object(mouse_obj);
-}
-void mouse_addlistener(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void mouse_hide(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void mouse_removelistener(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void mouse_show(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/Mouse.h
===================================================================
RCS file: server/Mouse.h
diff -N server/Mouse.h
--- server/Mouse.h      24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,81 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __MOUSE_H__
-#define __MOUSE_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Mouse {
-public:
-    Mouse();
-    ~Mouse();
-   void addListener();
-   void hide();
-   void removeListener();
-   void show();
-private:
-    bool _onown;
-    bool _onove;
-    bool _onp;
-    bool _onheel;
-};
-
-struct mouse_as_object : public as_object
-{
-    Mouse obj;
-};
-
-void mouse_new(const fn_call& fn);
-void mouse_addlistener(const fn_call& fn);
-void mouse_hide(const fn_call& fn);
-void mouse_removelistener(const fn_call& fn);
-void mouse_show(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __MOUSE_H__
-#endif
-

Index: server/MovieClipLoader.cpp
===================================================================
RCS file: server/MovieClipLoader.cpp
diff -N server/MovieClipLoader.cpp
--- server/MovieClipLoader.cpp  7 Jul 2006 13:49:40 -0000       1.29
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,560 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-// Implementation of ActionScript MovieClipLoader class.
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tu_config.h"
-#include "as_function.h"
-#include "MovieClipLoader.h"
-#include "movie_definition.h"
-#include "log.h"
-#include "tu_file.h"
-#include "image.h"
-//#include "render.h"
-//#include "impl.h"
-#include "URL.h"
-#include "GnashException.h"
-#include "sprite_instance.h"
-#include "character.h"
-#include "fn_call.h"
-
-
-#ifdef HAVE_LIBXML
-// TODO: http and sockets and such ought to be factored out into an
-// abstract driver, like we do for file access.
-#include <libxml/nanohttp.h>
-#ifdef HAVE_WINSOCK
-# include <windows.h>
-# include <sys/stat.h>
-# include <io.h>
-#else
-# include <unistd.h>
-# include <fcntl.h>
-#endif
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <typeinfo> 
-#include <string>
-
-namespace gnash {
-
-  
-  MovieClipLoader::MovieClipLoader()
-      // :     character(0, 0)
-{
-  log_msg("%s: \n", __FUNCTION__);
-  _mcl.bytes_loaded = 0;
-  _mcl.bytes_total = 0;  
-}
-
-MovieClipLoader::~MovieClipLoader()
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-void
-MovieClipLoader::load(const tu_string& /*filespec*/)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-// progress of the downloaded file(s).
-struct mcl *
-MovieClipLoader::getProgress(as_object* /*ao*/)
-{
-  //log_msg("%s: \n", __FUNCTION__);
-
-  return &_mcl;
-}
-
-
-bool
-MovieClipLoader::loadClip(const tu_string&, void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-
-  return false;
-}
-
-void
-MovieClipLoader::unloadClip(void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-
-void
-MovieClipLoader::addListener(void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-
-void
-MovieClipLoader::removeListener(void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-  
-// Callbacks
-void
-MovieClipLoader::onLoadStart(void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-void
-MovieClipLoader::onLoadProgress(void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-void
-MovieClipLoader::onLoadInit(void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-void
-MovieClipLoader::onLoadComplete(void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-void
-MovieClipLoader::onLoadError(void *)
-{
-  log_msg("%s: \n", __FUNCTION__);
-}
-
-void
-MovieClipLoader::on_button_event(event_id event)
-{
-  log_msg("%s: \n", __FUNCTION__);
-  
-  // Set our mouse state (so we know how to render).
-  switch (event.m_id)
-    {
-    case event_id::ROLL_OUT:
-    case event_id::RELEASE_OUTSIDE:
-      _mouse_state = MOUSE_UP;
-      break;
-      
-    case event_id::RELEASE:
-    case event_id::ROLL_OVER:
-    case event_id::DRAG_OUT:
-      _mouse_state = MOUSE_OVER;
-      break;
-      
-    case event_id::PRESS:
-    case event_id::DRAG_OVER:
-      _mouse_state = MOUSE_DOWN;
-      break;
-      
-    default:
-      assert(0);       // missed a case?
-      break;
-    };
-  
-  // @@ eh, should just be a lookup table.
-#if 0
-  // Add appropriate actions to the movie's execute list...
-  for (int i = 0; i < m_def->m_button_actions.size(); i++) {
-    if (m_def->m_button_actions[i].m_conditions & c) {
-      // Matching action.
-      for (int j = 0; j < m_def->m_button_actions[i].m_actions.size(); j++) {
-        
get_parent()->add_action_buffer(m_def->m_button_actions[i].m_actions[j]);
-      }
-    }
-  }
-#endif
-  // Call conventional attached method.
-  // @@ TODO
-}
-
-void moviecliploader_loadclip(const fn_call& fn)
-{
-       as_value        val, method;
-
-       log_msg("%s: nargs = %d\n", __FUNCTION__, fn.nargs);
-
-       moviecliploader_as_object* ptr = \
-               dynamic_cast<moviecliploader_as_object*>(fn.this_ptr);
-
-       assert(ptr);
-  
-       as_value& url_arg = fn.arg(0);
-       if ( url_arg.get_type() != as_value::STRING )
-       {
-               log_error("Malformed SWF, MovieClipLoader.loadClip() first 
argument is not a string (%s)", url_arg.to_string());
-               fn.result->set_bool(false);
-               return;
-       }
-
-       tu_string tu_url = fn.arg(0).to_string(); 
-       character* target = fn.env->find_target(fn.arg(1));
-       if ( ! target )
-       {
-               log_error("Could not find target %s", fn.arg(1).to_string());
-               fn.result->set_bool(false);
-               return;
-       }
-
-       log_msg("load clip: %s, target is: %p\n",
-               tu_url.c_str(), (void*)target);
-
-       // Get a pointer to target's sprite parent (for URL resolution)
-       character* parent = target->get_parent();
-       assert(parent);
-
-       //
-       // Extract root movie URL 
-       // @@ could be cached somewhere...
-       //
-       as_value parent_url;
-       if ( ! parent->get_member("_url", &parent_url) )
-       {
-               log_msg("FIXME: no _url member in target parent!");
-       }
-
-       log_msg(" target's parent url: %s\n", parent_url.to_string());
-
-       //
-       // Resolve relative urls
-       // @@ todo
-
-       // We have a problem with exceptions here...
-       // unless we heap-allocate the URL or define
-       // a default ctor + assignment op we can't
-       // wrap in a try/catch block w/out hiding
-       // the variable inside the block.
-       //
-       URL url(tu_url.c_str(), URL(parent_url.to_string()));
-       
-       log_msg(" resolved url: %s\n", url.str().c_str());
-                        
-       // Call the callback since we've started loading the file
-       if (fn.this_ptr->get_member("onLoadStart", &method))
-       {
-       //log_msg("FIXME: Found onLoadStart!\n");
-               as_c_function_ptr       func = method.to_c_function();
-               fn.env->set_variable("success", true);
-               if (func)
-               {
-                       // It's a C function.  Call it.
-                       //log_msg("Calling C function for onLoadStart\n");
-                       (*func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
-               }
-               else if (as_function* as_func = method.to_as_function())
-               {
-               // It's an ActionScript function.  Call it.
-                       //log_msg("Calling ActionScript function for 
onLoadStart\n");
-                       (*as_func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
-               }
-               else
-               {
-                       log_error("error in call_method(): method is not a 
function\n");
-               }    
-       }
-
-       // Call the callback since we've started loading the file
-       if (fn.this_ptr->get_member("onLoadStart", &method))
-       {
-       //log_msg("FIXME: Found onLoadStart!\n");
-               as_c_function_ptr       func = method.to_c_function();
-               fn.env->set_variable("success", true);
-               if (func)
-               {
-                       // It's a C function.  Call it.
-                       //log_msg("Calling C function for onLoadStart\n");
-                       (*func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
-               }
-               else if (as_function* as_func = method.to_as_function())
-               {
-               // It's an ActionScript function.  Call it.
-                       //log_msg("Calling ActionScript function for 
onLoadStart\n");
-                       (*as_func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
-               }
-               else
-               {
-                       log_error("error in call_method(): method is not a 
function\n");
-               }    
-       }
-
-       std::string path = url.path();
-       std::string suffix = path.substr(path.size() - 4);
-       log_msg("File suffix to load is: %s\n", suffix.c_str());
-
-       movie_definition* md = create_library_movie(url);
-       if (md == NULL) {
-               log_error("can't create movie_definition for %s\n",
-                       url.str().c_str());
-               fn.result->set_bool(false);
-               return;
-       }
-
-       log_msg("movie definition created\n");
-
-       gnash::movie_interface* extern_movie;
-       extern_movie = md->create_instance();
-       if (extern_movie == NULL) {
-               log_error("can't create extern movie_interface "
-                       "for %s\n", url.str().c_str());
-               fn.result->set_bool(false);
-               return;
-       }
-
-       log_msg("movie instance created\n");
-
-       save_extern_movie(extern_movie);
-
-       character* tar = target;
-       const char* name = tar->get_name().c_str();
-       uint16_t depth = tar->get_depth();
-       bool use_cxform = false;
-       cxform color_transform =  tar->get_cxform();
-       bool use_matrix = false;
-       matrix mat = tar->get_matrix();
-       float ratio = tar->get_ratio();
-       uint16_t clip_depth = tar->get_clip_depth();
-
-       character* new_movie = extern_movie->get_root_movie();
-
-       new_movie->set_parent(parent);
-
-       parent->replace_display_object(
-                          new_movie,
-                          name,
-                          depth,
-                          use_cxform,
-                          color_transform,
-                          use_matrix,
-                          mat,
-                          ratio,
-                          clip_depth);
-  
-       struct mcl *mcl_data = ptr->mov_obj.getProgress(target);
-
-       // the callback since we're done loading the file
-       // FIXME: these both probably shouldn't be set to the same value
-       //mcl_data->bytes_loaded = stats.st_size;
-       //mcl_data->bytes_total = stats.st_size;
-       mcl_data->bytes_loaded = 666; // fake values for now
-       mcl_data->bytes_total = 666;
-
-       fn.env->set_member("target_mc", target);
-       moviecliploader_onload_complete(fn);
-       //env->pop();
-  
-       fn.result->set_bool(true);
-
-}
-
-void
-moviecliploader_unloadclip(const fn_call& fn)
-{
-  const tu_string filespec = fn.arg(0).to_string();
-  log_msg("%s: FIXME: Load Movie Clip: %s\n", __FUNCTION__, filespec.c_str());
-  
-}
-
-void
-moviecliploader_new(const fn_call& fn)
-{
-
-  log_msg("%s: args=%d\n", __FUNCTION__, fn.nargs);
-  
-  //const tu_string filespec = fn.arg(0).to_string();
-  
-  as_object*   mov_obj = new moviecliploader_as_object;
-  //log_msg("\tCreated New MovieClipLoader object at %p\n", mov_obj);
-
-  mov_obj->set_member("loadClip",
-                      &moviecliploader_loadclip);
-  mov_obj->set_member("unloadClip",
-                      &moviecliploader_unloadclip);
-  mov_obj->set_member("getProgress",
-                      &moviecliploader_getprogress);
-
-#if 0
-  // Load the default event handlers. These should really never
-  // be called directly, as to be useful they are redefined
-  // within the SWF script. These get called if there is a problem
-  // Setup the event handlers
-  mov_obj->set_event_handler(event_id::LOAD_INIT,
-                             (as_c_function_ptr)&event_test);
-  mov_obj->set_event_handler(event_id::LOAD_START,
-                             (as_c_function_ptr)&event_test);
-  mov_obj->set_event_handler(event_id::LOAD_PROGRESS,
-                             (as_c_function_ptr)&event_test);
-  mov_obj->set_event_handler(event_id::LOAD_ERROR,
-                             (as_c_function_ptr)&event_test);
-#endif
-  
-  fn.result->set_as_object(mov_obj);
-}
-
-void
-moviecliploader_onload_init(const fn_call& /*fn*/)
-{
-  log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
-}
-
-// Invoked when a call to MovieClipLoader.loadClip() has successfully
-// begun to download a file.
-void
-moviecliploader_onload_start(const fn_call& /*fn*/)
-{
-  log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
-}
-
-// Invoked every time the loading content is written to disk during
-// the loading process.
-void
-moviecliploader_getprogress(const fn_call& fn)
-{
-  //log_msg("%s: nargs = %d\n", __FUNCTION__, nargs);
-  
-  moviecliploader_as_object*   ptr = (moviecliploader_as_object*) (as_object*) 
fn.this_ptr;
-  assert(ptr);
-  
-  as_object *target = (as_object*) fn.arg(0).to_object();
-  
-  struct mcl *mcl_data = ptr->mov_obj.getProgress(target);
-
-  mcl_as_object *mcl_obj = (mcl_as_object *)new mcl_as_object;
-
-  mcl_obj->set_member("bytesLoaded", mcl_data->bytes_loaded);
-  mcl_obj->set_member("bytesTotal",  mcl_data->bytes_total);
-  
-  fn.result->set_as_object(mcl_obj);
-}
-
-// Invoked when a file loaded with MovieClipLoader.loadClip() has
-// completely downloaded.
-void
-moviecliploader_onload_complete(const fn_call& fn)
-{
-  as_value     val, method;
-  //log_msg("%s: FIXME: nargs = %d\n", __FUNCTION__, nargs);
-  //moviecliploader_as_object* ptr = (moviecliploader_as_object*) (as_object*) 
this_ptr;
-  
-  tu_string url = fn.arg(0).to_string();  
-  //as_object *target = (as_object *)env->bottom(first_arg-1).to_object();
-  //log_msg("load clip: %s, target is: %p\n", url.c_str(), target);
-
-  //log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
-  if (fn.this_ptr->get_member("onLoadComplete", &method)) {
-    //log_msg("FIXME: Found onLoadComplete!\n");
-    as_c_function_ptr  func = method.to_c_function();
-    fn.env->set_variable("success", true);
-    if (func)
-      {
-        // It's a C function.  Call it.
-        //log_msg("Calling C function for onLoadComplete\n");
-        (*func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
-      }
-    else if (as_function* as_func = method.to_as_function())
-      {
-        // It's an ActionScript function.  Call it.
-        //log_msg("Calling ActionScript function for onLoadComplete\n");
-        (*as_func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
-      }
-    else
-      {
-        log_error("error in call_method(): method is not a function\n");
-      }    
-  } else {
-    log_error("Couldn't find onLoadComplete!\n");
-  }
-}
-
-// Invoked when a file loaded with MovieClipLoader.loadClip() has failed to 
load.
-void
-moviecliploader_onload_error(const fn_call& fn)
-{
-  //log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
-  as_value     val, method;
-  log_msg("%s: FIXME: nargs = %d\n", __FUNCTION__, fn.nargs);
-  //moviecliploader_as_object* ptr = (moviecliploader_as_object*) (as_object*) 
this_ptr;
-  
-  tu_string url = fn.arg(0).to_string();  
-  as_object *target = (as_object*) fn.arg(1).to_object();
-  log_msg("load clip: %s, target is: %p\n", url.c_str(), (void *)target);
-
-  //log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
-  if (fn.this_ptr->get_member("onLoadError", &method)) {
-    //log_msg("FIXME: Found onLoadError!\n");
-    as_c_function_ptr  func = method.to_c_function();
-    fn.env->set_variable("success", true);
-    if (func)
-      {
-        // It's a C function.  Call it.
-        log_msg("Calling C function for onLoadError\n");
-        (*func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
-      }
-    else if (as_function* as_func = method.to_as_function())
-      {
-        // It's an ActionScript function.  Call it.
-        log_msg("Calling ActionScript function for onLoadError\n");
-        (*as_func)(fn_call(&val, fn.this_ptr, fn.env, 0, 0));
-      }
-    else
-      {
-        log_error("error in call_method(): method is not a function\n");
-      }    
-  } else {
-    log_error("Couldn't find onLoadError!\n");
-  }
-}
-
-// This is the default event handler. To wind up here is an error.
-void
-moviecliploader_default(const fn_call& /*fn*/)
-{
-  log_msg("%s: FIXME: Default event handler, you shouldn't be here!\n", 
__FUNCTION__);
-}
-
-} // end of gnash namespace

Index: server/MovieClipLoader.h
===================================================================
RCS file: server/MovieClipLoader.h
diff -N server/MovieClipLoader.h
--- server/MovieClipLoader.h    24 Apr 2006 23:05:56 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,118 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-// Implementation of ActionScript MovieClipLoader class.
-
-#ifndef GNASH_MOVIECLIPLOADER_H
-#define GNASH_MOVIECLIPLOADER_H
-
-#include "button.h"
-#include "log.h"
-#include "action.h"
-#include "impl.h"
-
-namespace gnash {
-
-       struct mcl {
-               int bytes_loaded;
-               int bytes_total;
-       };
-
-         class MovieClipLoader
-         {
-         public:
-
-               MovieClipLoader();
-
-               ~MovieClipLoader();
-
-               void load(const tu_string& filespec);
-         
-               struct mcl *getProgress(as_object *ao);
-
-               /// MovieClip
-               bool loadClip(const tu_string& url, void *);
-
-               void unloadClip(void *);
-               void addListener(void *);
-               void removeListener(void *);
-
-               void    on_button_event(event_id event);
-               // Callbacks
-               void onLoadStart(void *);
-               void onLoadProgress(void *);
-               void onLoadInit(void *);
-               void onLoadComplete(void *);
-               void onLoadError(void *);
-               private:
-               bool          _started;
-               bool          _completed;
-               tu_string     _filespec;
-               int           _progress;
-               bool          _error;
-               struct mcl    _mcl;
-               mouse_state   _mouse_state;
-       };
-
-       /// MovieClipLoader ActionScript object
-       struct moviecliploader_as_object : public as_object
-       {
-               MovieClipLoader mov_obj;
-       };
-
-       /// Progress object to use as return of MovieClipLoader.getProgress()
-       struct mcl_as_object : public as_object
-       {
-         struct mcl data;
-       };
-
-       void moviecliploader_loadclip(const fn_call& fn);
-       void moviecliploader_unloadclip(const fn_call& fn);
-       void moviecliploader_getprogress(const fn_call& fn);
-       void moviecliploader_new(const fn_call& fn);
-       void moviecliploader_onload_init(const fn_call& fn);
-       void moviecliploader_onload_start(const fn_call& fn);
-       void moviecliploader_onload_progress(const fn_call& fn);
-       void moviecliploader_onload_complete(const fn_call& fn);
-       void moviecliploader_onload_error(const fn_call& fn);
-       void moviecliploader_default(const fn_call& fn);
-
-} // end of gnash namespace
-
-// GNASH_MOVIECLIPLOADER_H
-#endif

Index: server/NetConnection.cpp
===================================================================
RCS file: server/NetConnection.cpp
diff -N server/NetConnection.cpp
--- server/NetConnection.cpp    20 May 2006 23:49:33 -0000      1.9
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,172 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string>
-#include "log.h"
-#include "NetConnection.h"
-#include "fn_call.h"
-
-using namespace std;
-
-namespace gnash {
-
-/// \class NetConnection
-/// \brief Opens a local connection through which you can play
-/// back video (FLV) files from an HTTP address or from the local file
-/// system.
-
-/// First introduced for swf v7
-
-/// protocol:[//host][:port]/appname/[instanceName]
-
-/// For protocol, specify either rtmp or rtmpt. If rtmp is specified,
-/// Flash Player will create a persistent Communication Server. If
-/// rtmpt is specified, Flash Player will create an HTTP "tunneling"
-/// connection to the server. For more information on RTMP and RTMPT,
-/// see the description section below.
-//
-/// You can omit the host parameter if the Flash movie is served from
-/// the same host where Flash Communication Server is installed.
-/// If the instanceName parameter is omitted, Flash Player connects to
-/// the application's default instance (_definst_).
-/// By default, RTMP connections use port 1935, and RTMPT connections
-/// use port 80.
-NetConnection::NetConnection() {
-}
-
-NetConnection::~NetConnection() {
-}
-
-/// \brief Open a connection to stream FLV files.
-/// \param the URL
-/// \return nothing
-/// \note Older Flash movies can only take a NULL value as
-/// the parameter, which therefor only connects to the localhost using
-/// RTMP. Newer Flash movies have a parameter to connect which is a
-/// URL string like rtmp://foobar.com/videos/bar.flv
-void
-NetConnection::connect(const char *arg)
-{
-    log_msg("%s: \n", __PRETTY_FUNCTION__);
-    
-    string::size_type first_colon;
-    string::size_type second_colon;
-    string::size_type single_slash;
-    string::size_type double_slash;
-
-    if (arg != 0) {
-        if (strcmp(arg, "null") == 0) {
-            log_warning("No URL specified!\n");
-            return;
-        }
-        _url = arg;
-        // protocol:[//host][:port]/appname/[instanceName]
-        first_colon = _url.find(':', 0);
-        second_colon = _url.find(':', first_colon + 1);
-        double_slash = _url.find("//", 0) + 2;
-        single_slash = _url.find("/", double_slash);
-        _protocol = _url.substr(0, first_colon);
-        if (second_colon != string::npos) {
-            _host = _url.substr(double_slash, second_colon - double_slash);
-            _portstr = _url.substr(second_colon + 1, single_slash - 
second_colon - 1);
-        } else {
-            _host = _url.substr(double_slash, single_slash - double_slash);
-        }
-        _path = _url.substr(single_slash, _url.size());
-
-        if (_portstr.size() == 0) {
-            log_msg("Loading FLV file from: %s://%s%s\n",
-                    _protocol.c_str(), _host.c_str(), _path.c_str());
-        } else {
-            log_msg("Loading FLV file from: %s://%s:%s%s\n",
-                    _protocol.c_str(), _host.c_str(), _portstr.c_str(), 
_path.c_str());
-        }
-    } else {
-        log_msg("Connecting to localhost\n");
-    }
-    
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-/// \brief callback to instantiate a new NetConnection object.
-/// \param fn the parameters from the Flash movie
-/// \return nothing from the function call.
-/// \note The return value is returned through the fn.result member.
-void
-netconnection_new(const fn_call& fn)
-{
-        log_msg("%s:unimplemented %d\n", __FUNCTION__, __LINE__);
-    log_msg("%s: %d args\n", __PRETTY_FUNCTION__, fn.nargs);
-        
-    netconnection_as_object *netconnection_obj = new netconnection_as_object;
-
-    netconnection_obj->set_member("connect", &netconnection_connect);
-#ifdef ENABLE_TESTING
-    netconnection_obj->set_member("geturl",  &network_geturl);
-    netconnection_obj->set_member("getprotocol",  &network_getprotocol);
-    netconnection_obj->set_member("gethost", &network_gethost);
-    netconnection_obj->set_member("getport", &network_getport);
-    netconnection_obj->set_member("getpath", &network_getpath);
-#endif
-    fn.result->set_as_object(netconnection_obj);
-}
-
-void netconnection_connect(const fn_call& fn)
-{
-    log_msg("%s: %d args\n", __PRETTY_FUNCTION__, fn.nargs);
-    
-    string filespec;
-    netconnection_as_object *ptr = (netconnection_as_object*)fn.this_ptr;
-    
-    assert(ptr);
-    if (fn.nargs != 0) {
-        filespec = fn.env->bottom(fn.first_arg_bottom_index).to_string();
-        ptr->obj.connect(filespec.c_str());
-    } else {
-        ptr->obj.connect(0);
-    }
-    
-    log_msg("%s: partially implemented\n", __FUNCTION__);
-}
-
-} // end of gnash namespace
-

Index: server/NetConnection.h
===================================================================
RCS file: server/NetConnection.h
diff -N server/NetConnection.h
--- server/NetConnection.h      24 Apr 2006 23:05:56 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,72 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __NETCONNECTION_H__
-#define __NETCONNECTION_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string>
-
-#include "impl.h"
-#include "log.h"
-#include "network.h"
-
-namespace gnash {
-
-class NetConnection : public Network {
-public:
-    NetConnection();
-    ~NetConnection();
-    void connect(const char *arg);
-};
-
-struct netconnection_as_object : public as_object
-{
-    NetConnection obj;
-};
-
-void netconnection_new(const fn_call& fn);
-void netconnection_connect(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __NETCONNECTION_H__
-#endif

Index: server/NetStream.cpp
===================================================================
RCS file: server/NetStream.cpp
diff -N server/NetStream.cpp
--- server/NetStream.cpp        24 Jun 2006 16:04:06 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,115 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "NetStream.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-NetStream::NetStream() {
-}
-
-NetStream::~NetStream() {
-}
-
-
-void
-NetStream::close()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-NetStream::pause()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-NetStream::play()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-NetStream::seek()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-NetStream::setBufferTime()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-netstream_new(const fn_call& fn)
-{
-    netstream_as_object *netstream_obj = new netstream_as_object;
-
-    netstream_obj->set_member("close", &netstream_close);
-    netstream_obj->set_member("pause", &netstream_pause);
-    netstream_obj->set_member("play", &netstream_play);
-    netstream_obj->set_member("seek", &netstream_seek);
-    netstream_obj->set_member("setbuffertime", &netstream_setbuffertime);
-
-    fn.result->set_as_object(netstream_obj);
-}
-void netstream_close(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void netstream_pause(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void netstream_play(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void netstream_seek(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void netstream_setbuffertime(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/NetStream.h
===================================================================
RCS file: server/NetStream.h
diff -N server/NetStream.h
--- server/NetStream.h  24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,86 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __NETSTREAM_H__
-#define __NETSTREAM_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class NetStream {
-public:
-    NetStream();
-    ~NetStream();
-   void close();
-   void pause();
-   void play();
-   void seek();
-   void setBufferTime();
-private:
-    bool _bufferLength;
-    bool _bufferTime;
-    bool _bytesLoaded;
-    bool _bytesTotal;
-    bool _currentFps;
-    bool _onStatus;
-    bool _time;
-};
-
-struct netstream_as_object : public as_object
-{
-    NetStream obj;
-};
-
-void netstream_new(const fn_call& fn);
-void netstream_close(const fn_call& fn);
-void netstream_pause(const fn_call& fn);
-void netstream_play(const fn_call& fn);
-void netstream_seek(const fn_call& fn);
-void netstream_setbuffertime(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __NETSTREAM_H__
-#endif
-

Index: server/Selection.cpp
===================================================================
RCS file: server/Selection.cpp
diff -N server/Selection.cpp
--- server/Selection.cpp        24 Jun 2006 16:04:06 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,136 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Selection.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Selection::Selection() {
-}
-
-Selection::~Selection() {
-}
-
-
-void
-Selection::addListener()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Selection::getBeginIndex()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Selection::getCaretIndex()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Selection::getEndIndex()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Selection::getFocus()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Selection::removeListener()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Selection::setFocus()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-selection_new(const fn_call& fn)
-{
-    selection_as_object *selection_obj = new selection_as_object;
-
-    selection_obj->set_member("addlistener", &selection_addlistener);
-    selection_obj->set_member("getbeginindex", &selection_getbeginindex);
-    selection_obj->set_member("getcaretindex", &selection_getcaretindex);
-    selection_obj->set_member("getendindex", &selection_getendindex);
-    selection_obj->set_member("getfocus", &selection_getfocus);
-    selection_obj->set_member("removelistener", &selection_removelistener);
-    selection_obj->set_member("setfocus", &selection_setfocus);
-
-    fn.result->set_as_object(selection_obj);
-}
-void selection_addlistener(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void selection_getbeginindex(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void selection_getcaretindex(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void selection_getendindex(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void selection_getfocus(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void selection_removelistener(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void selection_setfocus(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/Selection.h
===================================================================
RCS file: server/Selection.h
diff -N server/Selection.h
--- server/Selection.h  24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,84 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __SELECTION_H__
-#define __SELECTION_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Selection {
-public:
-    Selection();
-    ~Selection();
-   void addListener();
-   void getBeginIndex();
-   void getCaretIndex();
-   void getEndIndex();
-   void getFocus();
-   void removeListener();
-   void setFocus();
-private:
-    bool _onSetFocus;
-};
-
-struct selection_as_object : public as_object
-{
-    Selection obj;
-};
-
-void selection_new(const fn_call& fn);
-void selection_addlistener(const fn_call& fn);
-void selection_getbeginindex(const fn_call& fn);
-void selection_getcaretindex(const fn_call& fn);
-void selection_getendindex(const fn_call& fn);
-void selection_getfocus(const fn_call& fn);
-void selection_removelistener(const fn_call& fn);
-void selection_setfocus(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __SELECTION_H__
-#endif
-

Index: server/SharedObject.cpp
===================================================================
RCS file: server/SharedObject.cpp
diff -N server/SharedObject.cpp
--- server/SharedObject.cpp     24 Jun 2006 16:04:06 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,105 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "SharedObject.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-SharedObject::SharedObject() {
-}
-
-SharedObject::~SharedObject() {
-}
-
-
-void
-SharedObject::clear()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-SharedObject::flush()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-SharedObject::getLocal()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-SharedObject::getSize()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-sharedobject_new(const fn_call& fn)
-{
-    sharedobject_as_object *sharedobject_obj = new sharedobject_as_object;
-
-    sharedobject_obj->set_member("clear", &sharedobject_clear);
-    sharedobject_obj->set_member("flush", &sharedobject_flush);
-    sharedobject_obj->set_member("getlocal", &sharedobject_getlocal);
-    sharedobject_obj->set_member("getsize", &sharedobject_getsize);
-
-    fn.result->set_as_object(sharedobject_obj);
-}
-void sharedobject_clear(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void sharedobject_flush(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void sharedobject_getlocal(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void sharedobject_getsize(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/SharedObject.h
===================================================================
RCS file: server/SharedObject.h
diff -N server/SharedObject.h
--- server/SharedObject.h       24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,79 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __SHAREDOBJECT_H__
-#define __SHAREDOBJECT_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class SharedObject {
-public:
-    SharedObject();
-    ~SharedObject();
-   void clear();
-   void flush();
-   void getLocal();
-   void getSize();
-private:
-    bool _data;
-    bool _onStatus;
-};
-
-struct sharedobject_as_object : public as_object
-{
-    SharedObject obj;
-};
-
-void sharedobject_new(const fn_call& fn);
-void sharedobject_clear(const fn_call& fn);
-void sharedobject_flush(const fn_call& fn);
-void sharedobject_getlocal(const fn_call& fn);
-void sharedobject_getsize(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __SHAREDOBJECT_H__
-#endif
-

Index: server/Stage.cpp
===================================================================
RCS file: server/Stage.cpp
diff -N server/Stage.cpp
--- server/Stage.cpp    24 Jun 2006 16:04:06 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,85 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Stage.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Stage::Stage() {
-}
-
-Stage::~Stage() {
-}
-
-
-void
-Stage::addListener()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Stage::removeListener()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-stage_new(const fn_call& fn)
-{
-    stage_as_object *stage_obj = new stage_as_object;
-
-    stage_obj->set_member("addlistener", &stage_addlistener);
-    stage_obj->set_member("removelistener", &stage_removelistener);
-
-    fn.result->set_as_object(stage_obj);
-}
-void stage_addlistener(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void stage_removelistener(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/Stage.h
===================================================================
RCS file: server/Stage.h
diff -N server/Stage.h
--- server/Stage.h      24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,79 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __STAGE_H__
-#define __STAGE_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Stage {
-public:
-    Stage();
-    ~Stage();
-   void addListener();
-   void removeListener();
-private:
-    bool _align;
-    bool _height;
-    bool _onResize;
-    bool _scaleMode;
-    bool _showMenu;
-    bool _width;
-};
-
-struct stage_as_object : public as_object
-{
-    Stage obj;
-};
-
-void stage_new(const fn_call& fn);
-void stage_addlistener(const fn_call& fn);
-void stage_removelistener(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __STAGE_H__
-#endif
-

Index: server/System.cpp
===================================================================
RCS file: server/System.cpp
diff -N server/System.cpp
--- server/System.cpp   8 Jul 2006 00:15:09 -0000       1.13
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,202 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "System.h"
-#include "fn_call.h"
-#include "builtin_function.h"
-
-namespace gnash {
-
-System::System() {
-}
-
-System::~System() {
-}
-
-
-void
-System::security_allowDomain()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-System::security_allowInsecureDomain()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-System::security_loadPolicyFile()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-System::setClipboard()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-System::showSettings()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-static as_object*
-getSystemSecurityInterface()
-{
-       static as_object* proto = NULL;
-       if ( proto == NULL )
-       {
-               proto = new as_object();
-               proto->set_member("allowdomain", &system_security_allowdomain);
-               proto->set_member("allowinsecuredomain", 
&system_security_allowinsecuredomain);
-               proto->set_member("loadpolicyfile", 
&system_security_loadpolicyfile);
-       }
-       return proto;
-}
-
-static as_object*
-getSystemCapabilitiesInterface()
-{
-       static as_object* proto = NULL;
-       if ( proto == NULL )
-       {
-               proto = new as_object();
-               proto->set_member("version", "Gnash-" VERSION);
-       }
-       return proto;
-}
-
-static void
-attachSystemInterface(as_object* proto)
-{
-       // Initialize Function prototype
-       proto->set_member("security", getSystemSecurityInterface());
-       proto->set_member("capabilities", getSystemCapabilitiesInterface());
-       proto->set_member("setclipboard", &system_setclipboard);
-       proto->set_member("showsettings", &system_showsettings);
-}
-
-static as_object*
-getSystemInterface()
-{
-       static as_object* proto = NULL;
-       if ( proto == NULL )
-       {
-               proto = new as_object();
-               attachSystemInterface(proto);
-               proto->set_member("constructor", &system_new); 
-               proto->set_member_flags("constructor", 1);
-       }
-       return proto;
-}
-
-system_as_object::system_as_object()
-       :
-       as_object(getSystemInterface()) // pass System inheritence
-{
-}
-
-void
-system_new(const fn_call& fn)
-{
-    system_as_object *system_obj = new system_as_object();
-
-    fn.result->set_as_object(system_obj);
-}
-
-void system_security_allowdomain(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void system_security_allowinsecuredomain(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void system_security_loadpolicyfile(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void system_setclipboard(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void system_showsettings(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-static void
-do_nothing(const fn_call& fn)
-{
-       log_msg("User tried to invoke new System()");
-       if ( fn.result )
-       {
-               fn.result->set_undefined();
-       }
-}
-
-void
-system_init(as_object* glob)
-{
-       // This is going to be the global System "class"/"function"
-       static as_function* sys=NULL;
-
-       if ( sys == NULL )
-       {
-               sys = new builtin_function(do_nothing, getSystemInterface());
-
-               // We replicate interface to the System class itself
-               attachSystemInterface(sys);
-       }
-
-       // Register _global.System
-       glob->set_member("System", sys);
-
-}
-
-
-} // end of gnaash namespace
-

Index: server/System.h
===================================================================
RCS file: server/System.h
diff -N server/System.h
--- server/System.h     7 Jul 2006 13:49:40 -0000       1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,115 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __SYSTEM_H__
-#define __SYSTEM_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-//#include "Function.h"
-
-namespace gnash {
-  
-class System {
-public:
-    System();
-    ~System();
-   void security_allowDomain();
-   void security_allowInsecureDomain();
-   void security_loadPolicyFile();
-   void setClipboard();
-   void showSettings();
-private:
-    bool _capabilities;
-    bool _object;
-    bool _capabilities_avHardwareDisable;
-    bool _capabilities_hasAccessibility;
-    bool _capabilities_hasAudio;
-    bool _capabilities_hasAudioEncoder;
-    bool _capabilities_hasEmbeddedVideo;
-    bool _capabilities_hasMP3;
-    bool _capabilities_hasPrinting;
-    bool _capabilities_hasScreenBroadcast;
-    bool _capabilities_hasScreenPlayback;
-    bool _capabilities_hasStreamingAudio;
-    bool _capabilities_hasStreamingVideo;
-    bool _capabilities_hasVideoEncoder;
-    bool _capabilities_isDebugger;
-    bool _capabilities_language;
-    bool _capabilities_localFileReadDisable;
-    bool _capabilities_manufacturer;
-    bool _capabilities_os;
-    bool _capabilities_pixelAspectRatio;
-    bool _capabilities_playerType;
-    bool _capabilities_screenColor;
-    bool _capabilities_screenDPI;
-    bool _capabilities_screenResolutionX;
-    bool _capabilities_screenResolutionY;
-    bool _capabilities_serverString;
-    bool _capabilities_version;
-    bool _security;
-    bool _exactSettings;
-    bool _onStatus;
-    bool _useCodepage;
-};
-
-class system_as_object : public as_object
-{
-    //System obj;
-public:
-       system_as_object();
-};
-
-void system_new(const fn_call& fn);
-void system_security_allowdomain(const fn_call& fn);
-void system_security_allowinsecuredomain(const fn_call& fn);
-void system_security_loadpolicyfile(const fn_call& fn);
-void system_setclipboard(const fn_call& fn);
-void system_showsettings(const fn_call& fn);
-
-void system_init(as_object* global);
-
-} // end of gnash namespace
-
-// __SYSTEM_H__
-#endif
-

Index: server/TextSnapshot.cpp
===================================================================
RCS file: server/TextSnapshot.cpp
diff -N server/TextSnapshot.cpp
--- server/TextSnapshot.cpp     24 Jun 2006 16:04:06 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,145 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "TextSnapshot.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-TextSnapshot::TextSnapshot() {
-}
-
-TextSnapshot::~TextSnapshot() {
-}
-
-
-void
-TextSnapshot::findText()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-TextSnapshot::getCount()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-TextSnapshot::getSelected()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-TextSnapshot::getSelectedText()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-TextSnapshot::getText()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-TextSnapshot::hitTestTextNearPos()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-TextSnapshot::setSelectColor()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-TextSnapshot::setSelected()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-textsnapshot_new(const fn_call& fn)
-{
-    textsnapshot_as_object *textsnapshot_obj = new textsnapshot_as_object;
-
-    textsnapshot_obj->set_member("findtext", &textsnapshot_findtext);
-    textsnapshot_obj->set_member("getcount", &textsnapshot_getcount);
-    textsnapshot_obj->set_member("getselected", &textsnapshot_getselected);
-    textsnapshot_obj->set_member("getselectedtext", 
&textsnapshot_getselectedtext);
-    textsnapshot_obj->set_member("gettext", &textsnapshot_gettext);
-    textsnapshot_obj->set_member("hittesttextnearpos", 
&textsnapshot_hittesttextnearpos);
-    textsnapshot_obj->set_member("setselectcolor", 
&textsnapshot_setselectcolor);
-    textsnapshot_obj->set_member("setselected", &textsnapshot_setselected);
-
-    fn.result->set_as_object(textsnapshot_obj);
-}
-void textsnapshot_findtext(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void textsnapshot_getcount(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void textsnapshot_getselected(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void textsnapshot_getselectedtext(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void textsnapshot_gettext(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void textsnapshot_hittesttextnearpos(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void textsnapshot_setselectcolor(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void textsnapshot_setselected(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/TextSnapshot.h
===================================================================
RCS file: server/TextSnapshot.h
diff -N server/TextSnapshot.h
--- server/TextSnapshot.h       24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,85 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __TEXTSNAPSHOT_H__
-#define __TEXTSNAPSHOT_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class TextSnapshot {
-public:
-    TextSnapshot();
-    ~TextSnapshot();
-   void findText();
-   void getCount();
-   void getSelected();
-   void getSelectedText();
-   void getText();
-   void hitTestTextNearPos();
-   void setSelectColor();
-   void setSelected();
-private:
-};
-
-struct textsnapshot_as_object : public as_object
-{
-    TextSnapshot obj;
-};
-
-void textsnapshot_new(const fn_call& fn);
-void textsnapshot_findtext(const fn_call& fn);
-void textsnapshot_getcount(const fn_call& fn);
-void textsnapshot_getselected(const fn_call& fn);
-void textsnapshot_getselectedtext(const fn_call& fn);
-void textsnapshot_gettext(const fn_call& fn);
-void textsnapshot_hittesttextnearpos(const fn_call& fn);
-void textsnapshot_setselectcolor(const fn_call& fn);
-void textsnapshot_setselected(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __TEXTSNAPSHOT_H__
-#endif
-

Index: server/Video.cpp
===================================================================
RCS file: server/Video.cpp
diff -N server/Video.cpp
--- server/Video.cpp    24 Jun 2006 16:04:06 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,85 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "log.h"
-#include "Video.h"
-#include "fn_call.h"
-
-namespace gnash {
-
-Video::Video() {
-}
-
-Video::~Video() {
-}
-
-
-void
-Video::attach()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-void
-Video::clear()
-{
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void
-video_new(const fn_call& fn)
-{
-    video_as_object *video_obj = new video_as_object;
-
-    video_obj->set_member("attach", &video_attach);
-    video_obj->set_member("clear", &video_clear);
-
-    fn.result->set_as_object(video_obj);
-}
-void video_attach(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-void video_clear(const fn_call& /*fn*/) {
-    log_msg("%s:unimplemented \n", __FUNCTION__);
-}
-
-} // end of gnaash namespace
-

Index: server/Video.h
===================================================================
RCS file: server/Video.h
diff -N server/Video.h
--- server/Video.h      24 Apr 2006 23:05:56 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,77 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// Linking Gnash statically or dynamically with other modules is making a
-// combined work based on Gnash. Thus, the terms and conditions of the GNU
-// General Public License cover the whole combination.
-//
-// As a special exception, the copyright holders of Gnash give you
-// permission to combine Gnash with free software programs or libraries
-// that are released under the GNU LGPL and with code included in any
-// release of Talkback distributed by the Mozilla Foundation. You may
-// copy and distribute such a system following the terms of the GNU GPL
-// for all but the LGPL-covered parts and Talkback, and following the
-// LGPL for the LGPL-covered parts.
-//
-// Note that people who make modified versions of Gnash are not obligated
-// to grant this special exception for their modified versions; it is their
-// choice whether to do so. The GNU General Public License gives permission
-// to release a modified version without this exception; this exception
-// also makes it possible to release a modified version which carries
-// forward this exception.
-// 
-//
-//
-
-#ifndef __VIDEO_H__
-#define __VIDEO_H__
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "impl.h"
-#include "log.h"
-
-namespace gnash {
-  
-class Video {
-public:
-    Video();
-    ~Video();
-   void attach();
-   void clear();
-private:
-    bool _deblocking;
-    bool _height;
-    bool _smoothing;
-    bool _width;
-};
-
-struct video_as_object : public as_object
-{
-    Video obj;
-};
-
-void video_new(const fn_call& fn);
-void video_attach(const fn_call& fn);
-void video_clear(const fn_call& fn);
-
-} // end of gnash namespace
-
-// __VIDEO_H__
-#endif
-




reply via email to

[Prev in Thread] Current Thread [Next in Thread]