Bug 489096 - HTML5 support 
diff --git a/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/checkitem.xml b/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/checkitem.xml
index 632af3a..910b6b6 100644
--- a/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/checkitem.xml
+++ b/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/checkitem.xml
@@ -1636,44 +1636,6 @@
             <desc>Make sure that instruction (or sample) of edit box is placed before the edit box.</desc>
         </description>
     </checkitem>
-    <checkitem type="error" id="C_79.0">
-        <guideline>
-            <gItem id="12.4" name="WCAG"/>
-            <gItem id="n" name="Section508"/>
-            <gItem techniques="H44" id="1.1.1" name="JIS"/>
-            <gItem techniques="H44" id="1.3.1" name="JIS"/>
-            <gItem techniques="H44" id="3.3.2" name="JIS"/>
-            <gItem techniques="H44" id="4.1.2" name="JIS"/>
-            <gItem id="7" name="IBMGuideline"/>
-            <gItem techniques="H44" id="1.1.1" name="WCAG 2.0"/>
-            <gItem techniques="H44" id="1.3.1" name="WCAG 2.0"/>
-            <gItem techniques="H44" id="3.3.2" name="WCAG 2.0"/>
-            <gItem techniques="H44" id="4.1.2" name="WCAG 2.0"/>
-        </guideline>
-        <metrics>
-            <mItem score="5" name="Perceivable"/>
-            <mItem score="5" name="Understandable"/>
-            <mItem score="5" name="Robust"/>
-        </metrics>
-        <description>
-            <desc>There is no label element for the form control.</desc>
-        </description>
-    </checkitem>
-    <checkitem type="warning" id="C_79.1">
-        <guideline>
-            <gItem id="10.2" name="WCAG"/>
-            <gItem id="n" name="Section508"/>
-            <gItem techniques="G162" id="3.3.2" name="JIS"/>
-            <gItem id="7" name="IBMGuideline"/>
-            <gItem techniques="G162" id="3.3.2" name="WCAG 2.0"/>
-        </guideline>
-        <metrics>
-            <mItem score="2" name="Understandable"/>
-        </metrics>
-        <description>
-            <desc>Make sure that LABEL of FORM control is properly placed.</desc>
-        </description>
-    </checkitem>
     <checkitem type="user" id="C_8.0">
         <guideline>
             <gItem id="2.1" name="WCAG"/>
@@ -2038,6 +2000,44 @@
             <desc>Check that each legend element includes a description of that group.</desc>
         </description>
     </checkitem>
+    <checkitem type="error" id="C_79.0">
+        <guideline>
+            <gItem id="12.4" name="WCAG"/>
+            <gItem id="n" name="Section508"/>
+            <gItem techniques="H44" id="1.1.1" name="JIS"/>
+            <gItem techniques="H44" id="1.3.1" name="JIS"/>
+            <gItem techniques="H44" id="3.3.2" name="JIS"/>
+            <gItem techniques="H44" id="4.1.2" name="JIS"/>
+            <gItem id="7" name="IBMGuideline"/>
+            <gItem techniques="H44" id="1.1.1" name="WCAG 2.0"/>
+            <gItem techniques="H44" id="1.3.1" name="WCAG 2.0"/>
+            <gItem techniques="H44" id="3.3.2" name="WCAG 2.0"/>
+            <gItem techniques="H44" id="4.1.2" name="WCAG 2.0"/>
+        </guideline>
+        <metrics>
+            <mItem score="5" name="Perceivable"/>
+            <mItem score="5" name="Understandable"/>
+            <mItem score="5" name="Robust"/>
+        </metrics>
+        <description>
+            <desc>There is no label element for the form control.</desc>
+        </description>
+    </checkitem>
+    <checkitem type="warning" id="C_79.1">
+        <guideline>
+            <gItem id="10.2" name="WCAG"/>
+            <gItem id="n" name="Section508"/>
+            <gItem techniques="G162" id="3.3.2" name="JIS"/>
+            <gItem id="7" name="IBMGuideline"/>
+            <gItem techniques="G162" id="3.3.2" name="WCAG 2.0"/>
+        </guideline>
+        <metrics>
+            <mItem score="2" name="Understandable"/>
+        </metrics>
+        <description>
+            <desc>Make sure that LABEL of FORM control is properly placed.</desc>
+        </description>
+    </checkitem>
     <checkitem type="error" id="C_79.2">
         <guideline>
             <gItem techniques="H44,F68" id="1.3.1" name="JIS"/>
@@ -2130,7 +2130,7 @@
             <mItem score="5" name="Robust"/>
         </metrics>
         <description>
-            <desc>Use a title attribute or a label elementt to identify form controls.</desc>
+            <desc>Use a label element or a title attribute to identify form controls.</desc>
         </description>
     </checkitem>
     <checkitem type="user" id="C_79.7">
@@ -2153,6 +2153,49 @@
             <desc>Adjacent text field and button</desc>
         </description>
     </checkitem>
+    <checkitem type="user" id="C_79.8">
+        <guideline>
+            <gItem techniques="H44,H65" id="1.1.1" name="JIS"/>
+            <gItem techniques="H44,H65" id="1.3.1" name="JIS"/>
+            <gItem techniques="H44,H65" id="3.3.2" name="JIS"/>
+            <gItem techniques="H44,H65" id="4.1.2" name="JIS"/>
+            <gItem techniques="H44,H65" id="1.1.1" name="WCAG 2.0"/>
+            <gItem techniques="H44,H65" id="1.3.1" name="WCAG 2.0"/>
+            <gItem techniques="H44,H65" id="3.3.2" name="WCAG 2.0"/>
+            <gItem techniques="H44,H65" id="4.1.2" name="WCAG 2.0"/>
+        </guideline>
+        <metrics>
+            <mItem name="Perceivable"/>
+            <mItem name="Understandable"/>
+            <mItem name="Robust"/>
+        </metrics>
+        <description>
+            <desc>Consider to use a label element or a title attribute to identify form controls.</desc>
+        </description>
+    </checkitem>
+    <checkitem type="user" id="C_79.9">
+        <guideline>
+            <gItem id="12.4" name="WCAG"/>
+            <gItem id="n" name="Section508"/>
+            <gItem techniques="H44" id="1.1.1" name="JIS"/>
+            <gItem techniques="H44" id="1.3.1" name="JIS"/>
+            <gItem techniques="H44" id="3.3.2" name="JIS"/>
+            <gItem techniques="H44" id="4.1.2" name="JIS"/>
+            <gItem id="7" name="IBMGuideline"/>
+            <gItem techniques="H44" id="1.1.1" name="WCAG 2.0"/>
+            <gItem techniques="H44" id="1.3.1" name="WCAG 2.0"/>
+            <gItem techniques="H44" id="3.3.2" name="WCAG 2.0"/>
+            <gItem techniques="H44" id="4.1.2" name="WCAG 2.0"/>
+        </guideline>
+        <metrics>
+            <mItem name="Perceivable"/>
+            <mItem name="Understandable"/>
+            <mItem name="Robust"/>
+        </metrics>
+        <description>
+            <desc>There is no label element for the form control.</desc>
+        </description>
+    </checkitem>
     <checkitem type="warning" id="C_380.0">
         <guideline>
             <gItem techniques="H32" id="3.2.2" name="JIS"/>
diff --git a/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/description.properties b/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/description.properties
index f773b86..98970c2 100644
--- a/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/description.properties
+++ b/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/description.properties
@@ -136,14 +136,16 @@
 C_77.1 = When an HTML document is rendered without associated style sheets, it must still be readable and usable. (style tag exists)
 C_77.2 = When an HTML document is rendered without associated style sheets, it must still be readable and usable. (style attribute exists)
 C_78.2 = Provide text instructions at the beginning of a form or set of fields that describes the necessary input.
-C_79.0 = There is no label element for the form control and title attribute of the form control is empty. Provide nonempty title attribute that contains text that identifies the form control.
+C_79.0 = There is no label element for the form control and title attribute of the form control is empty. Provide label element or nonempty title attribute that contains text that identifies the form control.
 C_79.1 = Make sure that the label element in the form control is properly placed. {0}
 C_79.2 = Do not use implicit labels.
 C_79.3 = Check that labels are visible.
 C_79.4 = Check that the value of the title attribute ("{0}") identifies the purpose of the control.
 C_79.5 = Check that the label element identifies the purpose of the control and it is visible.
-C_79.6 = There is no associated title attribute nor label element to identify the form control.
+C_79.6 = There is no associated label element nor title attribute to identify the form control.
 C_79.7 = It seems to use an adjacent button to label the purpose of a text field. Check that they are rendered adjacent to one another, and consider using label elements and/or title attributes to label the text field.
+C_79.8 = There is no associated label element nor title attribute to identify the form control (new elements in HTML5).
+C_79.9 = There is no label element for the form control and title attribute of the form control is empty. Consider to provide label element or nonempty title attribute that contains text that identifies the form control.
 C_80.0 = The alternative text contains over 150 characters, consider providing a separate description using longdesc attribute.
 C_81.0 = Make sure that links have enough size and are easily distinguishable.
 C_82.0 = Make sure that users can return to previous step.
diff --git a/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/description_ja.properties b/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/description_ja.properties
index 67f4792..c912d20 100644
--- a/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/description_ja.properties
+++ b/plugins/org.eclipse.actf.examples.adesigner.eval.html/resources/description_ja.properties
@@ -135,14 +135,16 @@
 C_77.0 = HTML\u6587\u66f8\u306f\u3001\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u8aad\u3093\u3060\u308a\u5229\u7528\u3057\u305f\u308a\u51fa\u6765\u308b\u3088\u3046\u306b\u30c7\u30b6\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044 (\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306elink\u8981\u7d20\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059)
 C_77.1 = HTML\u6587\u66f8\u306f\u3001\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u8aad\u3093\u3060\u308a\u5229\u7528\u3057\u305f\u308a\u51fa\u6765\u308b\u3088\u3046\u306b\u30c7\u30b6\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044 (style\u8981\u7d20\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059)
 C_77.2 = HTML\u6587\u66f8\u306f\u3001\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u8aad\u3093\u3060\u308a\u5229\u7528\u3057\u305f\u308a\u51fa\u6765\u308b\u3088\u3046\u306b\u30c7\u30b6\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044 (style\u5c5e\u6027\u3092\u6301\u3064\u8981\u7d20\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059)
-C_79.0 = \u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305flabel\u8981\u7d20\u304c\u5b58\u5728\u305b\u305a\u3001title\u5c5e\u6027\u306e\u5024\u304c\u7a7a\u307e\u305f\u306f\u7a7a\u767d\u6587\u5b57\u3060\u3051\u3067\u3059\u3002\u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306e\u76ee\u7684\u3092\u8868\u308f\u3059title\u5c5e\u6027\u3092\u4ed8\u4e0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+C_79.0 = \u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305flabel\u8981\u7d20\u304c\u5b58\u5728\u305b\u305a\u3001title\u5c5e\u6027\u306e\u5024\u304c\u7a7a\u307e\u305f\u306f\u7a7a\u767d\u6587\u5b57\u3060\u3051\u3067\u3059\u3002\u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306e\u76ee\u7684\u3092\u8868\u308f\u3059label\u8981\u7d20\u3082\u3057\u304f\u306ftitle\u5c5e\u6027\u3092\u4ed8\u4e0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 C_79.1 = \u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306b\u5bfe\u3059\u308blabel\u8981\u7d20\u304c\u6b63\u3057\u304f\u914d\u7f6e\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3\u304a\u3088\u3073\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3067\u306f\u305d\u306e\u5f8c\u3001\u305d\u308c\u4ee5\u5916\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3067\u306f\u305d\u308c\u3089\u306e\u524d\u306b\u7f6e\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002{0}
 C_79.2 = \u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3092label\u8981\u7d20\u3067\u56f2\u3080\u3053\u3068\u306b\u3088\u308a\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u306f\u3044\u3051\u307e\u305b\u3093
 C_79.3 = \u30e9\u30d9\u30eb\u304c\u8996\u899a\u7684\u306b\u8a8d\u8b58\u3067\u304d\u308b\u72b6\u614b\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044
 C_79.4 = title\u5c5e\u6027\u306e\u5024 ("{0}") \u304c\u305d\u306e\u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306e\u76ee\u7684\u3092\u8868\u308f\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044
 C_79.5 = label\u8981\u7d20\u304c\u5bfe\u5fdc\u3059\u308b\u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306e\u76ee\u7684\u3092\u8868\u308f\u3057\u3066\u3044\u308b\u3053\u3068\u3001\u304a\u3088\u3073\u3001label\u8981\u7d20\u304c\u753b\u9762\u4e0a\u306b\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044
-C_79.6 = \u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306btitle\u5c5e\u6027\u304a\u3088\u3073label\u8981\u7d20\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+C_79.6 = \u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306blabel\u8981\u7d20\u304a\u3088\u3073title\u5c5e\u6027\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002
 C_79.7 = \u96a3\u63a5\u3059\u308b\u30dc\u30bf\u30f3\u3092\u7528\u3044\u3066\u30c6\u30ad\u30b9\u30c8\u30fb\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30e9\u30d9\u30eb\u4ed8\u3051\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u304c\u96a3\u63a5\u3057\u3066\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001label\u8981\u7d20\u3084title\u5c5e\u6027\u3092\u7528\u3044\u3066\u30e9\u30d9\u30eb\u4ed8\u3051\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+C_79.8 = \u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306blabel\u8981\u7d20\u304a\u3088\u3073title\u5c5e\u6027\u3092\u95a2\u9023\u4ed8\u3051\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+C_79.9 = \u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305flabel\u8981\u7d20\u304c\u5b58\u5728\u305b\u305a\u3001title\u5c5e\u6027\u306e\u5024\u304c\u7a7a\u307e\u305f\u306f\u7a7a\u767d\u6587\u5b57\u3060\u3051\u3067\u3059\u3002\u30d5\u30a9\u30fc\u30e0\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u306e\u76ee\u7684\u3092\u8868\u308f\u3059label\u8981\u7d20\u3082\u3057\u304f\u306ftitle\u5c5e\u6027\u306e\u4ed8\u4e0e\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 C_78.2 = \u5fc5\u8981\u3068\u3055\u308c\u308b\u5165\u529b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\uff08\u5168\u89d2\u30fb\u534a\u89d2\u3001\u30cf\u30a4\u30d5\u30f3\u306e\u5229\u7528\uff09\u3092\u8aac\u660e\u3059\u308b\u30c6\u30ad\u30b9\u30c8\u304c\u3001\u30d5\u30a9\u30fc\u30e0\u307e\u305f\u306f\u30c6\u30ad\u30b9\u30c8\u30fb\u30d5\u30a3\u30fc\u30eb\u30c9\u4e00\u5f0f\u306e\u524d\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044
 C_80.0 = \u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u304c150\u6587\u5b57\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002longdesc\u5c5e\u6027\u306a\u3069\u3092\u7528\u3044\u3066\u3001\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u3092\u5225\u306b\u63d0\u4f9b\u3059\u308b\u4e8b\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044
 C_81.0 = \u30ea\u30f3\u30af\u3084\u30dc\u30bf\u30f3\u304c\u3001\u64cd\u4f5c\u53ef\u80fd\u306a\u3082\u306e\u3068\u5224\u308b\u3088\u3046\u306a\u8868\u73fe\u3092\u7528\u3044\u3001\u64cd\u4f5c\u3057\u3084\u3059\u3044\u914d\u7f6e\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044
diff --git a/plugins/org.eclipse.actf.examples.adesigner.eval.html/src/org/eclipse/actf/examples/adesigner/eval/html/internal/CheckEngine.java b/plugins/org.eclipse.actf.examples.adesigner.eval.html/src/org/eclipse/actf/examples/adesigner/eval/html/internal/CheckEngine.java
index 53fd025..9e658fd 100644
--- a/plugins/org.eclipse.actf.examples.adesigner.eval.html/src/org/eclipse/actf/examples/adesigner/eval/html/internal/CheckEngine.java
+++ b/plugins/org.eclipse.actf.examples.adesigner.eval.html/src/org/eclipse/actf/examples/adesigner/eval/html/internal/CheckEngine.java
@@ -2669,59 +2669,96 @@
 	private void item_79() {
 		if (labelList == null)
 			labelList = edu.getElementsList(target, "label"); //$NON-NLS-1$
-		Vector<Node> noTitleControls = new Vector<Node>();
+		Vector<Node> noLabelTitleControls = new Vector<Node>();
+		Vector<Node> noLabelTitleControlsNew = new Vector<Node>();
 		Vector<Node> noLabelEmptyTitleControls = new Vector<Node>();
-		Vector<Node> implicitLabelControls = new Vector<Node>();
+		Vector<Node> noLabelEmptyTitleControlsNew = new Vector<Node>();
+		Vector<Node> labeledControls = new Vector<Node>();
+
 		for (Element body : body_elements) { // $NON-NLS-1$
 			for (Element el : getFormControl(body)) {
-				// checks for each input controls
-				TitleCheckResult res = item_79_title(el);
-				if (res == TitleCheckResult.NO_TITLE)
-					noTitleControls.add(el);
-				item_79_label(el, res, noLabelEmptyTitleControls, implicitLabelControls);
+
+				Element label = null;
+
+				if ((label = getLabel(el)) != null) {
+					item_79_label(el, label);
+				} else if ((label = hasImplicitLabel(el)) != null) {
+					// TODO check label place
+					Vector<Node> target = new Vector<Node>();
+					target.add(el);
+					target.add(label);
+					addCheckerProblem("C_79.5", "", target);
+				} else {
+					// check title for each input controls that has no label
+					if (isLabelable(getFormControlType(el))) {
+						TitleCheckResult res = item_79_title(el);
+						if (res == TitleCheckResult.NO_TITLE) {
+							if (isInH44(el)) {
+								noLabelTitleControls.add(el);
+							} else {
+								noLabelTitleControlsNew.add(el);
+							}
+						} else if (res == TitleCheckResult.EMPTY_TITLE) {
+							if (isInH44(label)) {
+								noLabelEmptyTitleControls.add(el);
+							} else {
+								noLabelEmptyTitleControlsNew.add(el);
+							}
+						} else if (res == TitleCheckResult.OK) {
+							addCheckerProblem("C_79.4", el.getAttribute(ATTR_TITLE), el);
+						}
+					}
+				}
 			}
 		}
 
-		if (noTitleControls.size() > 0)
-			addCheckerProblem("C_79.6", "", noTitleControls);
-		if (noLabelEmptyTitleControls.size() > 0)
+		if (noLabelTitleControls.size() > 0) {
+			addCheckerProblem("C_79.6", "", noLabelTitleControls);
+		}
+		if (noLabelTitleControlsNew.size() > 0) {
+			addCheckerProblem("C_79.8", "", noLabelTitleControlsNew);
+		}
+		if (noLabelEmptyTitleControls.size() > 0) {
 			addCheckerProblem("C_79.0", "", noLabelEmptyTitleControls);
-		if (implicitLabelControls.size() > 0)
-			addCheckerProblem("C_79.2", "", implicitLabelControls);
+		}
+		if (noLabelEmptyTitleControlsNew.size() > 0) {
+			addCheckerProblem("C_79.9", "", noLabelEmptyTitleControlsNew);
+		}
 	}
 
-	private void item_79_label(Element ctrl, TitleCheckResult res, Vector<Node> noLabelEmptyTitleControls,
-			Vector<Node> implicitLabelControls) {
+	private boolean isInH44(Element el) {
+		if ("input".equals(el.getNodeName())) {
+			String strType = el.getAttribute("type");
+			if (strType.equals("") // default is text? //$NON-NLS-1$
+					|| strType.equals("text") //$NON-NLS-1$
+					|| strType.equals("textarea") //$NON-NLS-1$
+					|| strType.equals("radio") //$NON-NLS-1$
+					|| strType.equals("checkbox") //$NON-NLS-1$
+					|| strType.equals("file") //$NON-NLS-1$ // For new JIS
+					|| strType.equals("password")) { //$NON-NLS-1$
+				return true;
+			}
+			return false;
+		}
+		return true;
+	}
+
+	private void item_79_label(Element ctrl, Element label) {
 		String elType = getFormControlType(ctrl);
-		Element l;
-		if ((l = hasImplicitLabel(ctrl)) != null) {
-			implicitLabelControls.add(l);
-			return;
-		}
-		if (!isLabelable(elType)) {
-			return;
-		}
+		// TODO highlight the label as well
 
-		String strid = ctrl.getAttribute("id"); //$NON-NLS-1$
-		boolean bHasLabel = this.hasLabel(ctrl);
-		boolean bHasTitle = this.hasTitle(ctrl);
+		Vector<Node> target = new Vector<Node>();
+		target.add(ctrl);
+		target.add(label);
 
-		if (!bHasLabel && !(res == TitleCheckResult.G167)) {
-			if (res == TitleCheckResult.EMPTY_TITLE) {
-				noLabelEmptyTitleControls.add(ctrl);
-			}
+		if (!hasProperLabel(ctrl)) {
+			// in case of TYPE was removed by IE
+			addCheckerProblem("C_79.1", //$NON-NLS-1$
+					" (input type: " + (elType.equals("") ? "text" : elType) + ")", //$NON-NLS-1$ //$NON-NLS-2$
+					target);
 		} else {
-			// TODO highlight the label as well
-			if (!hasProperLabel(ctrl)) {
-				// in case of TYPE was removed by IE
-				addCheckerProblem("C_79.1", //$NON-NLS-1$
-						" (input type: " + (elType.equals("") ? "text" : elType) + ")", //$NON-NLS-1$ //$NON-NLS-2$
-						ctrl);
-			} else {
-				// H44 OK
-				addCheckerProblem("C_79.5", ctrl); //$NON-NLS-1$
-
-			}
+			// H44 OK
+			addCheckerProblem("C_79.5", "", target); //$NON-NLS-1$
 		}
 	}
 
@@ -2736,16 +2773,12 @@
 			if (hasBlankTitle(ctrl)) {
 				return TitleCheckResult.EMPTY_TITLE;
 			}
-			addCheckerProblem("C_79.4", ctrl.getAttribute(ATTR_TITLE), ctrl);
 			return TitleCheckResult.OK;
 		} else {
-			if (isLabelable(getFormControlType(ctrl)) && hasLabel(ctrl))
-				return TitleCheckResult.OK;
-			else { // no title?
-				if (check_G167(ctrl))
-					return TitleCheckResult.G167;
-				else
-					return TitleCheckResult.NO_TITLE;
+			if (check_G167(ctrl)) {
+				return TitleCheckResult.G167;
+			} else {
+				return TitleCheckResult.NO_TITLE;
 			}
 		}
 	}
@@ -3119,9 +3152,9 @@
 		}
 
 		NodeList tmpNL = target.getElementsByTagName("canvas");
-		//use Techniques in the future
-		if(tmpNL.getLength()>0){
-			addCheckerProblem("C_300.5","",tmpNL);
+		// use Techniques in the future
+		if (tmpNL.getLength() > 0) {
+			addCheckerProblem("C_300.5", "", tmpNL);
 		}
 
 	}
@@ -3229,11 +3262,42 @@
 					}
 				}
 			}
-			if (!hasSubmit)
+			if (!hasSubmit && isHTML5 && form.hasAttribute("id")) {
+				String id = form.getAttribute("id");
+				inputs = target.getElementsByTagName("input");
+				for (int i = 0; i < inputs.getLength(); i++) {
+					Element e = (Element) inputs.item(i);
+					String formAttr = e.getAttribute("form");
+					if (id.equals(formAttr)) {
+						String typeS = e.getAttribute("type");
+						if ("submit".equals(typeS) || "image".equals(typeS)) {
+							hasSubmit = true;
+							break;
+						}
+					}
+				}
+				if (!hasSubmit) {
+					NodeList buttons = target.getElementsByTagName("button");
+					for (int i = 0; i < buttons.getLength(); i++) {
+						Element e = (Element) buttons.item(i);
+						String formAttr = e.getAttribute("form");
+						if (id.equals(formAttr)) {
+							String typeS = e.getAttribute("type");
+							if ("submit".equals(typeS)) {
+								hasSubmit = true;
+								break;
+							}
+						}
+					}
+				}
+			}
+			if (!hasSubmit) {
 				noSubmitForms.add(form);
+			}
 		}
-		if (noSubmitForms.size() > 0)
+		if (noSubmitForms.size() > 0) {
 			addCheckerProblem("C_380.0", null, noSubmitForms);
+		}
 	}
 
 	@SuppressWarnings("nls")
@@ -3747,47 +3811,74 @@
 		for (int i = 0; i < length; i++) {
 			Element el = (Element) nl.item(i);
 			String strType = el.getAttribute("type").toLowerCase(); //$NON-NLS-1$
-			if (strType.equals("") // default is text? //$NON-NLS-1$
+			if (isHTML5) {
+				if (!strType.equals("hidden")) {
+					fcVector.add(el);
+				}
+				// TODO update by using techniques (only hidden state is not
+				// labelable in HTML5)
+			} else if (strType.equals("") // default is text? //$NON-NLS-1$
 					|| strType.equals("text") //$NON-NLS-1$
 					|| strType.equals("textarea") //$NON-NLS-1$
 					|| strType.equals("radio") //$NON-NLS-1$
 					|| strType.equals("checkbox") //$NON-NLS-1$
 					|| strType.equals("file") //$NON-NLS-1$ // For new JIS
 					|| strType.equals("password")) { //$NON-NLS-1$
+
 				fcVector.add(el);
 			}
 
 		}
 
+		// TODO update by using techniques
+		// keygen, meter, output, progress
+
 		nl = formEl.getElementsByTagName("textarea"); //$NON-NLS-1$
 		length = nl.getLength();
-		for (int i = 0; i < length; i++) {
+		for (
+
+		int i = 0; i < length; i++)
+
+		{
 			Element el = (Element) nl.item(i);
 			fcVector.add(el);
 		}
 
 		nl = formEl.getElementsByTagName("select"); //$NON-NLS-1$
 		length = nl.getLength();
-		for (int i = 0; i < length; i++) {
+		for (
+
+		int i = 0; i < length; i++)
+
+		{
 			Element el = (Element) nl.item(i);
 			fcVector.add(el);
 		}
 
 		nl = formEl.getElementsByTagName("html:text"); //$NON-NLS-1$
 		length = nl.getLength();
-		for (int i = 0; i < length; i++) {
+		for (
+
+		int i = 0; i < length; i++)
+
+		{
 			Element el = (Element) nl.item(i);
 			fcVector.add(el);
 		}
 
 		nl = formEl.getElementsByTagName("html:radio"); //$NON-NLS-1$
 		length = nl.getLength();
-		for (int i = 0; i < length; i++) {
+		for (
+
+		int i = 0; i < length; i++)
+
+		{
 			Element el = (Element) nl.item(i);
 			fcVector.add(el);
 		}
 
 		return fcVector;
+
 	}
 
 	private int getFormControlNum(Element formEl) {
@@ -3839,7 +3930,9 @@
 	 * @return
 	 */
 	private boolean isLabelable(String type) {
-		return type.matches("|text(area)?|checkbox|radio|file|password|select");
+		return !type.matches("|submit|reset|hidden|image|button");
+		// TODO update by using techniques (only hidden state is not labelable
+		// in HTML5)
 	}
 
 	/**
@@ -3849,19 +3942,19 @@
 	 * @param labels
 	 * @return
 	 */
-	private boolean hasLabel(Element el) {
+	private Element getLabel(Element el) {
 		String strid = el.getAttribute("id"); //$NON-NLS-1$
 
 		if (strid.equals("")) //$NON-NLS-1$
-			return false; // no id
+			return null; // no id
 
 		for (Element e : labelList) {
 			String strFor = e.getAttribute("for"); //$NON-NLS-1$
 			if (strFor != null && strFor.equalsIgnoreCase(strid)) {
-				return true; // label found
+				return e; // label found
 			}
 		}
-		return false; // no label found
+		return null; // no label found
 	}
 
 	/**
@@ -3872,7 +3965,7 @@
 	 * @return label element when an implicit label is used.
 	 */
 	private Element hasImplicitLabel(Element el) {
-		// TODO to be refined so that it looks up in ascendant, not in a parent
+		// TODO check ancestor, check only one or not
 		Node n = el.getParentNode();
 		if (!(n instanceof Element))
 			return null;