Index: trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlEvent.java
===================================================================
--- trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlEvent.java	(revision 937)
+++ trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlEvent.java	(revision 942)
@@ -60,5 +60,10 @@
      * if the event is a scroll event, the resulting position of the scrolled element
      */
-    private Integer scrollPosition;
+    private Integer[] scrollPosition;
+
+    /**
+     * if the event is an on change event, the value to which the changed element is changed
+     */
+    private String selectedValue;
 
     /**
@@ -76,4 +81,6 @@
      * @param scrollPosition if the event is a scroll event, the resulting position of the
      *                       scrolled element
+     * @param selectedValue  if the event is an on change event, the value to which the changed
+     *                       element is changed
      */
     HtmlEvent(HtmlClientInfos clientInfos,
@@ -83,5 +90,6 @@
               Integer[]       coordinates,
               Integer         key,
-              Integer         scrollPosition)
+              Integer[]       scrollPosition,
+              String          selectedValue)
     {
         this.clientInfos = clientInfos;
@@ -92,4 +100,5 @@
         this.key = key;
         this.scrollPosition = scrollPosition;
+        this.selectedValue = selectedValue;
     }
 
@@ -139,7 +148,14 @@
      * @return the scrollPosition
      */
-    Integer getScrollPosition() {
+    Integer[] getScrollPosition() {
         return scrollPosition;
     }
 
+    /**
+     * @return the selectedValue
+     */
+    String getSelectedValue() {
+        return selectedValue;
+    }
+
 }
Index: trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlMonitorOutputWriter.java
===================================================================
--- trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlMonitorOutputWriter.java	(revision 937)
+++ trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlMonitorOutputWriter.java	(revision 942)
@@ -242,5 +242,19 @@
         if (event.getScrollPosition() != null) {
             outputWriter.print(' ');
-            dumpString(event.getScrollPosition().toString());
+            
+            StringBuffer value = new StringBuffer();
+            for (int i = 0; i < event.getScrollPosition().length; i++) {
+                if (i > 0) {
+                    value.append(',');
+                }
+                value.append(event.getScrollPosition()[i]);
+            }
+            
+            dumpString(value.toString());
+        }
+
+        if (event.getSelectedValue() != null) {
+            outputWriter.print(' ');
+            dumpString(event.getSelectedValue());
         }
             
Index: trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlMonitorServlet.java
===================================================================
--- trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlMonitorServlet.java	(revision 937)
+++ trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlMonitorServlet.java	(revision 942)
@@ -255,6 +255,8 @@
                         assertValue(((JSONObject) eventObj), "coordinates", Integer[].class);
                     Integer key = assertValue(((JSONObject) eventObj), "key", Integer.class);
-                    Integer scrollPosition =
-                        assertValue(((JSONObject) eventObj), "scrollPosition", Integer.class);
+                    Integer[] scrollPosition =
+                        assertValue(((JSONObject) eventObj), "scrollPosition", Integer[].class);
+                    String selectedValue =
+                            assertValue(((JSONObject) eventObj), "selectedValue", String.class);
                     
                     if (time == null) {
@@ -271,8 +273,8 @@
                     }
                     else if (checkEventParameterCombinations
-                                (eventType, coordinates, key, scrollPosition))
+                                (eventType, coordinates, key, scrollPosition, selectedValue))
                     {
                         events.add(new HtmlEvent(clientInfos, time, path, eventType, coordinates,
-                                                 key, scrollPosition));
+                                                 key, scrollPosition, selectedValue));
                     }
                     else {
@@ -295,7 +297,7 @@
     /**
      * <p>
-     * validates if for the given event type the parameter combination of coordinates, key, and
-     * scroll position is valid. As an example, an onclick event should usually not have an
-     * associated scroll position.
+     * validates if for the given event type the parameter combination of coordinates, key,
+     * scroll position, and selected value is valid. As an example, an onclick event should
+     * usually not have an associated scroll position.
      * </p>
      *
@@ -304,4 +306,5 @@
      * @param key            the key of the event
      * @param scrollPosition the scroll position of the event
+     * @param selectedValue  the value selected through a specific event
      * 
      * @return true, if the combination of the parameters is valid, false else
@@ -310,10 +313,13 @@
                                                     Integer[] coordinates,
                                                     Integer   key,
-                                                    Integer   scrollPosition)
+                                                    Integer[] scrollPosition,
+                                                    String    selectedValue)
     {
         boolean result = false;
         
         if ("onscroll".equals(eventType)) {
-            if ((coordinates == null) && (key == null) && (scrollPosition != null)) {
+            if ((coordinates == null) && (key == null) &&
+                (scrollPosition != null) && (selectedValue == null))
+            {
                 result = true;
             }
@@ -323,5 +329,17 @@
         }
         else if ("onclick".equals(eventType) || "ondblclick".equals(eventType)) {
-            if ((coordinates != null) && (key == null) && (scrollPosition == null)) {
+            if ((coordinates != null) && (key == null) &&
+                (scrollPosition == null) && (selectedValue == null))
+            {
+                result = true;
+            }
+            else {
+                Console.printerrln(eventType + " event has invalid parameters");
+            }
+        }
+        else if ("onchange".equals(eventType)) {
+            if ((coordinates == null) && (key == null) &&
+                (scrollPosition == null) && (selectedValue != null))
+            {
                 result = true;
             }
@@ -333,5 +351,7 @@
                  "onkeyup".equals(eventType))
         {
-            if ((coordinates == null) && (key != null) && (scrollPosition == null)) {
+            if ((coordinates == null) && (key != null) &&
+                (scrollPosition == null) && (selectedValue == null))
+            {
                 result = true;
             }
@@ -341,7 +361,11 @@
         }
         else if ("onfocus".equals(eventType) || "onmouseout".equals(eventType) ||
-                 "onmousemove".equals(eventType) || "onunload".equals(eventType))
+                 "onmousemove".equals(eventType) || "onunload".equals(eventType) ||
+                 "onbeforeunload".equals(eventType) || "onpagehide".equals(eventType) ||
+                 "onpageshow".equals(eventType))
         {
-            if ((coordinates == null) && (key == null) && (scrollPosition == null)) {
+            if ((coordinates == null) && (key == null) &&
+                (scrollPosition == null) && (selectedValue == null))
+            {
                 result = true;
             }
