<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
 * 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.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:exs="http://myfaces.apache.org/ext-scripting"
      xmlns:h="http://java.sun.com/jsf/html">
<h:head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Myfaces Example Facelets</title>
    <link type="text/css" rel="stylesheet" href="#{resource['styles:main.css']}"/>
    <ui:insert name="additionalHeadIncludes">
    </ui:insert>    
</h:head>

<h:body>
    <div id="menu">
        <h:panelGroup>
            <h:outputLink value="./blog.jsf">Groovy Blogging Example</h:outputLink>
            <h:outputLink value="./javablog.jsf">Java Blogging Example</h:outputLink>
        </h:panelGroup>
    </div>

    <div id="backGroundFloat">
    </div>
    <div class="centerDiv">
        <h:panelGroup>
            <h3>
                <h:outputFormat value="Compiler Output" escape="false"/>
            </h3>
            <exs:compilerOutput errorsLabel="Errors:" warningsLabel="Warnings:" scriptingLanguage=""/>
        </h:panelGroup>
        <h:panelGroup>
            <h3>
                <h:outputFormat value="Change History" escape="false"/>
            </h3>
            <exs:taintHistory noEntries="5"/>
        </h:panelGroup>

        <p>
            <ui:insert name="body">Hello World Example!</ui:insert>
        </p>
    </div>
</h:body>

</html>
