<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~    http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<ui:composition
      xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:f="http://java.sun.com/jsf/core" 
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:hx="http://myfaces.apache.org/html5/html"
      xmlns:fx="http://myfaces.apache.org/html5/core"
      xmlns:sh="http://java.sun.com/jsf/composite/components/sh">

    <h:outputStylesheet target="head" library="style" name="browserSupport.css" id="browserSupportStyle" />
    <h:outputStylesheet>
        a.html5LogoAnchor{
            text-decoration: none !important;
            border: 0 !important;
            border-radius: 0 !important;
            -moz-border-radius: 0 !important;
            background: none !important;
            background: none !important;
            box-shadow: none !important;
            -webkit-box-shadow: none !important;
            -moz-box-shadow: none !important;
        }
    </h:outputStylesheet>

    <div id="generalInfo" class="middle" style="text-align:center;">

        <br/>
        <br/>
        <br/>

        <a href="http://www.w3.org/html/logo/" class="html5LogoAnchor">
            <img src="http://www.w3.org/html/logo/badge/html5-badge-h-solo.png" width="63" height="64" alt="HTML5 Powered" title="HTML5 Powered" />
        </a>

        <br/>
        <br/>
        <br/>

        <h:outputText value="Browser support icons" style="font-weight:bold;"/>
        
        <h:panelGrid columns="2" style="text-align:left; margin-left:30%;">
            <h:graphicImage library="image/browser" name="webkit.ico" alt="webkit.ico" styleClass="supportedBrowserIcon" />
            <h:outputText value="Feature is supported on the browser" />

            <h:graphicImage library="image/browser" name="webkit.ico" alt="webkit.ico" styleClass="emphasizedBrowserIcon supportedBrowserIcon" />
            <h:outputText value="Feature is supported on the browser, and there are some notes to read on hover" />

            <h:graphicImage library="image/browser" name="webkit.ico" alt="webkit.ico" styleClass="emphasizedBrowserIcon " />
            <h:outputText value="There are some notes to read on hover" />

            <h:graphicImage library="image/browser" name="webkit.ico" alt="webkit.ico" styleClass="unSupportedBrowserIcon" />
            <h:outputText value="Feature is not supported on the browser" />
        </h:panelGrid>
    </div>
</ui:composition>