Index: /trunk/src/VBox/ValidationKit/testmanager/htdocs/css/common.css
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/htdocs/css/common.css	(revision 65159)
+++ /trunk/src/VBox/ValidationKit/testmanager/htdocs/css/common.css	(revision 65160)
@@ -329,12 +329,4 @@
 }
 
-.tm-sidebar-size-link {
-    float:          right;
-}
-
-.tm-side-filter-union-input {
-    float:          right;
-}
-
 /* The following is for the element of / not element of checkbox, supplying text and hiding the actual box. */
 input.tm-side-filter-union-input {
@@ -371,4 +363,14 @@
 
 /* Filters: */
+.tm-side-filter-title-buttons {
+    float:          right;
+}
+.tm-side-filter-title-buttons input {
+    font-size:      0.6em;
+}
+.tm-side-filter-union-input {
+    float:          right;
+}
+
 #side-filters p:first-child {
     margin-top:     0.5em;
Index: /trunk/src/VBox/ValidationKit/testmanager/htdocs/js/common.js
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/htdocs/js/common.js	(revision 65159)
+++ /trunk/src/VBox/ValidationKit/testmanager/htdocs/js/common.js	(revision 65160)
@@ -353,4 +353,53 @@
 
 
+
+/**
+ * Clears one input element.
+ *
+ * @param   oInput      The input to clear.
+ */
+function resetInput(oInput)
+{
+    switch (oInput.type)
+    {
+        case 'checkbox':
+        case 'radio':
+            oInput.checked = false;
+            break;
+
+        case 'text':
+            oInput.value = 0;
+            break;
+    }
+}
+
+
+/**
+ * Clears a form.
+ *
+ * @param   sIdForm     The ID of the form
+ */
+function clearForm(sIdForm)
+{
+    var oForm = document.getElementById(sIdForm);
+    if (oForm)
+    {
+        var aoInputs = oForm.getElementsByTagName('INPUT');
+        var i;
+        for (i = 0; i < aoInputs.length; i++)
+            resetInput(aoInputs[i])
+
+        /* HTML5 allows inputs outside <form>, so scan the document. */
+        aoInputs = document.getElementsByTagName('INPUT');
+        for (i = 0; i < aoInputs.length; i++)
+            if (aoInputs.hasOwnProperty("form"))
+                if (aoInputs.form == sIdForm)
+                    resetInput(aoInputs[i])
+    }
+
+    return true;
+}
+
+
 /** @name Collapsible / Expandable items
  * @{
@@ -456,5 +505,6 @@
     var i;
     for (i = 0; i < aoToggleLink.length; i++)
-        if (aoToggleLink[i].textContent.indexOf('\u00bb') >= 0 || aoToggleLink[i].textContent.indexOf('\u00ab') >= 0)
+        if (   aoToggleLink[i].textContent.indexOf('\u00bb') >= 0
+            || aoToggleLink[i].textContent.indexOf('\u00ab') >= 0)
             aoToggleLink[i].textContent = sLinkText;
 }
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuimain.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuimain.py	(revision 65159)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuimain.py	(revision 65160)
@@ -929,7 +929,7 @@
         sHtml += u'<div id="side-filters">\n' \
                  u' <p>Filters' \
-                 u' <a href="javascript:toggleSidebarSize();" class="tm-sidebar-size-link">&#x00bb;&#x00bb;</p>\n'\
-                 u' <dl>\n';
-
+                 u' <span class="tm-side-filter-title-buttons"><input type="submit" value="Apply" />\n' \
+                 u' <a href="javascript:toggleSidebarSize();" class="tm-sidebar-size-link">&#x00bb;&#x00bb;</a></span></p>\n';
+        sHtml += u' <dl>\n';
         for oCrit in oFilter.aCriteria:
             if len(oCrit.aoPossible) > 0:
@@ -993,4 +993,5 @@
         sHtml += u' <input type="submit" value="Apply"/>\n';
         sHtml += u' <input type="reset" value="Reset"/>\n';
+        sHtml += u' <button type="button" onclick="clearForm(\'side-menu-form\');">Clear</button>\n';
         sHtml += u'</div>\n';
         return sHtml;
