<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at $dateFormat.format( $currentDate ) -->
#macro ( link $href $name $target $img $position $alt $border $width $height )
  #set ( $linkTitle = ' title="' + $name + '"' )
  #if( $target )
    #set ( $linkTarget = ' target="' + $target + '"' )
  #else
    #set ( $linkTarget = "" )
  #end
  #if ( ( $href.toLowerCase().startsWith("http") || $href.toLowerCase().startsWith("https") ) )
    #set ( $linkClass = ' class="externalLink"' )
  #else
    #set ( $linkClass = "" )
  #end
  #if ( $img )
    #if ( $position == "left" )
      <a href="$href"$linkClass$linkTarget$linkTitle>#image($img $alt $border $width $height)$name</a>
    #else
      <a href="$href"$linkClass$linkTarget$linkTitle>$name #image($img $alt $border $width $height)</a>
    #end
  #else
    <a href="$href"$linkClass$linkTarget$linkTitle>$name</a>
  #end
#end
##
#macro ( image $img $alt $border $width $height )
  #if( $img )
    #if ( ! ( $img.toLowerCase().startsWith("http") || $img.toLowerCase().startsWith("https") ) )
      #set ( $imgSrc = $PathTool.calculateLink( $img, $relativePath ) )
      #set ( $imgSrc = $imgSrc.replaceAll( '\\', '/' ) )
      #set ( $imgSrc = ' src="' + $imgSrc + '"' )
    #else
      #set ( $imgSrc = ' src="' + $img + '"' )
    #end
    #if( $alt )
      #set ( $imgAlt = ' alt="' + $alt + '"' )
    #else
      #set ( $imgAlt = ' alt=""' )
    #end
    #if( $border )
      #set ( $imgBorder = ' border="' + $border + '"' )
    #else
      #set ( $imgBorder = "" )
    #end
    #if( $width )
      #set ( $imgWidth = ' width="' + $width + '"' )
    #else
      #set ( $imgWidth = "" )
    #end
    #if( $height )
      #set ( $imgHeight = ' height="' + $height + '"' )
    #else
      #set ( $imgHeight = "" )
    #end
    <img class="imageLink"$imgSrc$imgAlt$imgBorder$imgWidth$imgHeight/>
  #end
#end
#macro ( banner $banner $id )
  #if ( $banner )
    #if( $banner.href )
      <a href="$banner.href" id="$id"#if( $banner.alt ) title="$banner.alt"#end>
    #else
        <div id="$id">
    #end
##
    #if( $banner.src )
        #set ( $src = $banner.src )
        #if ( ! ( $src.toLowerCase().startsWith("http") || $src.toLowerCase().startsWith("https") ) )
            #set ( $src = $PathTool.calculateLink( $src, $relativePath ) )
            #set ( $src = $src.replaceAll( '\\', '/' ) )
        #end
        #if ( $banner.alt )
            #set ( $alt = $banner.alt )
        #else
            #set ( $alt = $banner.name )
        #end
        <img src="$src" alt="$alt" />
    #else
        $banner.name
    #end
##
    #if( $banner.href )
        </a>
    #else
        </div>
    #end
  #end
#end
##
#macro ( links $links )
  #set ( $counter = 0 )
  #foreach( $item in $links )
    #set ( $counter = $counter + 1 )
    #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
    #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
    #link( $currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
    #if ( $links.size() > $counter )
      |
    #end
  #end
#end
##
#macro ( breadcrumbs $breadcrumbs )
  #set ( $counter = 0 )
  #foreach( $item in $breadcrumbs )
    #set ( $counter = $counter + 1 )
    #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
    #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
##
    #if ( $currentItemHref == $alignedFileName || $currentItemHref == "" )
      $item.name
    #else
      #link( $currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
    #end
    #if ( $breadcrumbs.size() > $counter )
      &gt;
    #end
  #end
#end
##
#macro ( displayTree $display $item )
  #if ( $item && $item.items && $item.items.size() > 0 )
    #foreach( $subitem in $item.items )
      #set ( $subitemHref = $PathTool.calculateLink( $subitem.href, $relativePath ) )
      #set ( $subitemHref = $subitemHref.replaceAll( '\\', '/' ) )
      #if ( $alignedFileName == $subitemHref )
        #set ( $display = true )
      #end
##
      #displayTree( $display $subitem )
    #end
  #end
#end
##
#macro ( menuItem $item )
  #set ( $collapse = "none" )
  #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
  #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
##
  #if ( $item && $item.items && $item.items.size() > 0 )
    #if ( $item.collapse == false )
      #set ( $collapse = "expanded" )
    #else
      ## By default collapsed
      #set ( $collapse = "collapsed" )
    #end
##
    #set ( $display = false )
    #displayTree( $display $item )
##
    #if ( $alignedFileName == $currentItemHref || $display )
      #set ( $collapse = "expanded" )
    #end
  #end
  <li class="$collapse">
  #if ( $item.img )
    #if ( $item.position == "left" )
      #if ( $alignedFileName == $currentItemHref )
        <strong>#image($item.img $item.alt $item.border $item.width $item.height) $item.name</strong>
      #else
        #link($currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height)
      #end
    #else
      #if ( $alignedFileName == $currentItemHref )
        <strong>$item.name #image($item.img $item.alt $item.border $item.width $item.height)</strong>
      #else
        #link($currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height)
      #end
    #end
  #else
    #if ( $alignedFileName == $currentItemHref )
      <strong>$item.name</strong>
    #else
      #link( $currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
    #end
  #end
  #if ( $item && $item.items && $item.items.size() > 0 )
    #if ( $collapse == "expanded" )
      <ul>
        #foreach( $subitem in $item.items )
          #menuItem( $subitem )
        #end
      </ul>
    #end
  #end
  </li>
#end
##
#macro ( mainMenu $menus )
  #foreach( $menu in $menus )
    #if ( $menu.name )
      #if ( $menu.img )
        #if( $menu.position )
          #set ( $position = $menu.position )
        #else
          #set ( $position = "left" )
        #end
##
        #if ( ! ( $menu.img.toLowerCase().startsWith("http") || $menu.img.toLowerCase().startsWith("https") ) )
          #set ( $src = $PathTool.calculateLink( $menu.img, $relativePath ) )
          #set ( $src = $src.replaceAll( '\\', '/' ) )
          #set ( $src = ' src="' + $src + '"' )
        #else
          #set ( $src = ' src="' + $menu.img + '"' )
        #end
##
        #if( $menu.alt )
          #set ( $alt = ' alt="' + $menu.alt + '"' )
        #else
          #set ( $alt = ' alt="' + $menu.name + '"' )
        #end
##
        #if( $menu.border )
          #set ( $border = ' border="' + $menu.border + '"' )
        #else
          #set ( $border = ' border="0"' )
        #end
##
        #if( $menu.width )
          #set ( $width = ' width="' + $menu.width + '"' )
        #else
          #set ( $width = "" )
        #end
        #if( $menu.height )
          #set ( $height = ' height="' + $menu.height + '"' )
        #else
          #set ( $height = "" )
        #end
##
        #set ( $img = '<img class="imageLink"' + $src + $alt + $border + $width + $height + "/>" )
##
        #if ( $position == "left" )
        <h5>$img $menu.name</h5>
        #else
        <h5>$menu.name $img</h5>
        #end
      #else
       <h5>$menu.name</h5>
      #end
    #end
    #if ( $menu.items && $menu.items.size() > 0 )
    <ul>
      #foreach( $item in $menu.items )
        #menuItem( $item )
      #end
    </ul>
    #end
  #end
#end
##
#macro ( copyright )
  #if ( $project )
    #if ( ${project.organization} && ${project.organization.name} )
      #set ( $period = "" )
    #else
      #set ( $period = "." )
   #end
##
   #set ( $currentYear = ${currentDate.year} + 1900 )
##
    #if ( ${project.inceptionYear} && ( ${project.inceptionYear} != ${currentYear.toString()} ) )
      ${project.inceptionYear}-${currentYear}${period}
    #else
      ${currentYear}${period}
    #end
##
    #if ( ${project.organization} )
      #if ( ${project.organization.name} && ${project.organization.url} )
          <a href="$project.organization.url">${project.organization.name}</a>.
      #elseif ( ${project.organization.name} )
        ${project.organization.name}.
      #end
    #end
  #end
#end
##
#macro ( publishDate $position $publishDate $version )
  #if ( $publishDate && $publishDate.format )
    #set ( $format = $publishDate.format )
  #else
    #set ( $format = "yyyy-MM-dd" )
  #end
##
  $dateFormat.applyPattern( $format )
##
  #set ( $dateToday = $dateFormat.format( $currentDate ) )
##
  #if ( $publishDate && $publishDate.position )
    #set ( $datePosition = $publishDate.position )
  #else
    #set ( $datePosition = "left" )
  #end
##
  #if ( $version )
    #if ( $version.position )
      #set ( $versionPosition = $version.position )
    #else
      #set ( $versionPosition = "left" )
    #end
  #else
    #set ( $version = "" )
    #set ( $versionPosition = "left" )
  #end
##
  #set ( $breadcrumbs = $decoration.body.breadcrumbs )
  #set ( $links = $decoration.body.links )

  #if ( $datePosition.equalsIgnoreCase( "right" ) && $links && $links.size() > 0 )
    #set ( $prefix = "&nbsp;|" )
  #else
    #set ( $prefix = "" )
  #end
##
  #if ( $datePosition.equalsIgnoreCase( $position ) )
    #if ( ( $datePosition.equalsIgnoreCase( "right" ) ) || ( $datePosition.equalsIgnoreCase( "bottom" ) ) )
      $prefix <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
      #if ( $versionPosition.equalsIgnoreCase( $position ) )
        &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
      #end
    #elseif ( ( $datePosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $datePosition.equalsIgnoreCase( "navigation-top" ) ) )
      <div id="lastPublished">
        <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
        #if ( $versionPosition.equalsIgnoreCase( $position ) )
          &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
        #end
      </div>
    #elseif ( $datePosition.equalsIgnoreCase("left") )
      <div class="xleft">
        <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
        #if ( $versionPosition.equalsIgnoreCase( $position ) )
          &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
        #end
        #if ( $breadcrumbs && $breadcrumbs.size() > 0 )
          | #breadcrumbs( $breadcrumbs )
        #end
      </div>
    #end
  #elseif ( $versionPosition.equalsIgnoreCase( $position ) )
    #if ( ( $versionPosition.equalsIgnoreCase( "right" ) ) || ( $versionPosition.equalsIgnoreCase( "bottom" ) ) )
      $prefix <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
    #elseif ( ( $versionPosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $versionPosition.equalsIgnoreCase( "navigation-top" ) ) )
      <div id="lastPublished">
        <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
      </div>
    #elseif ( $versionPosition.equalsIgnoreCase("left") )
      <div class="xleft">
        <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
        #if ( $breadcrumbs && $breadcrumbs.size() > 0 )
          | #breadcrumbs( $breadcrumbs )
        #end
      </div>
    #end
  #elseif ( $position.equalsIgnoreCase( "left" ) )
    #if ( $breadcrumbs && $breadcrumbs.size() > 0 )
      <div class="xleft">
        #breadcrumbs( $breadcrumbs )
      </div>
    #end
  #end
#end
##
#macro ( poweredByLogo $poweredBy )
  #if( $poweredBy )
    #foreach ($item in $poweredBy)
      #if( $item.href )
        #set ( $href = $PathTool.calculateLink( $item.href, $relativePath ) )
        #set ( $href = $href.replaceAll( '\\', '/' ) )
      #else
        #set ( $href="http://maven.apache.org/" )
      #end
##
      #if( $item.name )
        #set ( $name = $item.name )
      #else
        #set ( $name = $i18n.getString( "site-renderer", $locale, "template.builtby" )  )
        #set ( $name = "${name} Maven"  )
      #end
##
      #if( $item.img )
        #set ( $img = $item.img )
      #else
        #set ( $img = "images/logos/maven-feather.png" )
      #end
##
      #if ( ! ( $img.toLowerCase().startsWith("http") || $img.toLowerCase().startsWith("https") ) )
        #set ( $img = $PathTool.calculateLink( $img, $relativePath ) )
        #set ( $img = $src.replaceAll( '\\', '/' ) )
      #end
##
      #if( $item.alt )
        #set ( $alt = ' alt="' + $item.alt + '"' )
      #else
        #set ( $alt = ' alt="' + $name + '"' )
      #end
##
      #if( $item.border )
        #set ( $border = ' border="' + $item.border + '"' )
      #else
        #set ( $border = "" )
      #end
##
      #if( $item.width )
        #set ( $width = ' width="' + $item.width + '"' )
      #else
        #set ( $width = "" )
      #end
      #if( $item.height )
        #set ( $height = ' height="' + $item.height + '"' )
      #else
        #set ( $height = "" )
      #end
##
      <a href="$href" title="$name" class="poweredBy">
        <img class="poweredBy" $alt src="$img" $border $width $height />
      </a>
    #end
    #if( $poweredBy.isEmpty() )
      <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy">
        <img class="poweredBy" alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png" />
      </a>
    #end
  #else
    <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy">
      <img class="poweredBy" alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png" />
    </a>
  #end
#end
##
<html xmlns="http://www.w3.org/1999/xhtml"#if ( $locale ) xml:lang="$locale.language" lang="$locale.language"#end>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=${outputEncoding}" />
    <title>$title</title>
    <style type="text/css" media="all">
      @import url("$relativePath/css/maven-base.css");
      @import url("$relativePath/css/maven-theme.css");
      @import url("$relativePath/css/site.css");
    </style>
    <link rel="stylesheet" href="$relativePath/css/print.css" type="text/css" media="print" />
#foreach( $author in $authors )
      <meta name="author" content="$author" />
#end
#if ( $dateCreation )
    <meta name="Date-Creation-yyyymmdd" content="$dateCreation" />
#end
#if ( $dateRevision )
    <meta name="Date-Revision-yyyymmdd" content="$dateRevision" />
#end
#if ( $locale )
    <meta http-equiv="Content-Language" content="$locale.language" />
#end
    #if ( $decoration.body.head )
      #foreach( $item in $decoration.body.head.getChildren() )
        ## Workaround for DOXIA-150 due to a non-desired behaviour in p-u
        ## @see org.codehaus.plexus.util.xml.Xpp3Dom#toString()
        ## @see org.codehaus.plexus.util.xml.Xpp3Dom#toUnescapedString()
        #set ( $documentHeader = '<?xml version="1.0" encoding="UTF-8"?>' )
        #if ( $item.name == "script" )
          $StringUtils.replace( $item.toUnescapedString(), $documentHeader, "" )
        #else
          $StringUtils.replace( $item.toString(), $documentHeader, "" )
        #end
      #end
    #end
  </head>
  <body class="composite">
    <div id="banner">
      #banner( $decoration.bannerLeft "bannerLeft" )
      #banner( $decoration.bannerRight "bannerRight" )
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
      #publishDate( "left" $decoration.publishDate $decoration.version )
      <div class="xright">#links( $decoration.body.links )#publishDate( "right" $decoration.publishDate $decoration.version )</div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
       #publishDate( "navigation-top" $decoration.publishDate $decoration.version )
       #mainMenu( $decoration.body.menus )
       #poweredByLogo( $decoration.poweredBy )
       #publishDate( "navigation-bottom" $decoration.publishDate $decoration.version )
      </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        $bodyContent
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xleft">Copyright &#169;#copyright()#publishDate( "bottom" $decoration.publishDate $decoration.version ) Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.</div>
      <div class="xleft">Apache Extras Companion for Apache log4j, Apache log4j, Apache, the Apache feather logo,
   the Apache Logging Services project logo, and the log4j logo are trademarks of The Apache Software Foundation.</div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
