[%# The contents of this file are subject to the Mozilla Public
  # License Version 1.1 (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.mozilla.org/MPL/
  #
  # Software distributed under the License is distributed on an "AS
  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  # implied. See the License for the specific language governing
  # rights and limitations under the License.
  #
  # The Original Code is the Bugzilla Bug Tracking System.
  #
  # The Initial Developer of the Original Code is Netscape Communications
  # Corporation. Portions created by Netscape are
  # Copyright (C) 1998 Netscape Communications Corporation. All
  # Rights Reserved.
  #
  # Contributor(s): Gervase Markham <gerv@gerv.net>
  #                 Vaskin Kissoyan <vkissoyan@yahoo.com>
  #                 Vitaly Harisov <vitaly@rathedg.com>
  #                 Svetlana Harisova <light@rathedg.com>
  #%]

[%# INTERFACE:
  # (All the below interface elements are optional.)
  # title: string. Page title.
  # header: string. Main page header.
  # subheader: string. Page subheader.
  # header_addl_info: string. Additional header information.
  # bodyclasses: array of extra CSS classes for the <body>
  # onload: string. JavaScript code to run when the page finishes loading.
  # javascript: string. Javascript to go in the header.
  # javascript_urls: list. List of URLs to Javascript.
  # style: string. CSS style.
  # style_urls: list. List of URLs to CSS style sheets.
  # message: string. A message to display to the user. May contain HTML.
  # atomlink: Atom link URL, May contain HTML
  #%]

[% IF message %]
  [% PROCESS global/messages.html.tmpl %]
[% END %]

[% DEFAULT
  subheader = ""
  header_addl_info = ""
  onload = ""
  style_urls = []
%]

[%# We should be able to set the default value of the header variable
  # to the value of the title variable using the DEFAULT directive,
  # but that doesn't work if a caller sets header to the empty string
  # to avoid header inheriting the value of title, since DEFAULT
  # mistakenly treats empty strings as undefined and gives header the
  # value of title anyway.  To get around that problem we explicitly
  # set header's default value here only if it is undefined. %]
[% IF !header.defined %][% header = title %][% END %]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                      "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    [% Hook.process("start") %]
    <title>[% title %]</title>

[%# Migration note: contents of the old Param 'headerhtml' would go here %]

    [% PROCESS "global/site-navigation.html.tmpl" %]

    [% PROCESS 'global/setting-descs.none.tmpl' %]

    [%# Set up the skin CSS cascade:
      #  1. Standard Bugzilla stylesheet set (persistent)
      #  2. Standard Bugzilla stylesheet set (selectable)
      #  3. All third-party "skin" stylesheet sets (selectable)
      #  4. Page-specific styles
      #  5. Custom Bugzilla stylesheet set (persistent)
      # "Selectable" skin file sets may be either preferred or alternate.
      # Exactly one is preferred, determined by the "skin" user preference.
      #%]
    [% IF user.settings.skin.value != 'standard' %]
      [% user_skin = user.settings.skin.value %]
    [% END %]
    [% style_urls.unshift('skins/standard/global.css') %]

    [%# CSS cascade, part 1: Standard Bugzilla stylesheet set (persistent).
      # Always present.
      #%]
    [% FOREACH style_url = style_urls %]
      <link href="[% style_url FILTER html %]"
            rel="stylesheet"
            type="text/css">
    [% END %]
    <!--[if lte IE 7]>
      [%# Internet Explorer treats [if IE] HTML comments as uncommented.
        # Use it to import CSS fixes so that Bugzilla looks decent on IE 7
        # and below.
        #%]
      <link href="skins/standard/IE-fixes.css"
            rel="stylesheet"
            type="text/css">
    <![endif]-->

    [%# CSS cascade, part 2: Standard Bugzilla stylesheet set (selectable)
      # Present if skin selection is enabled.
      #%]
    [% IF user.settings.skin.is_enabled %]
      [% FOREACH style_url = style_urls %]
        <link href="[% style_url FILTER html %]"
              rel="[% 'alternate ' IF user_skin %]stylesheet"
              title="[% setting_descs.standard FILTER html %]"
              type="text/css">
      [% END %]
      <!--[if lte IE 7]>
      [%# Internet Explorer treats [if IE] HTML comments as uncommented.
        # Use it to import CSS fixes so that Bugzilla looks decent on IE 7
        # and below.
        #%]
        <link href="skins/standard/IE-fixes.css"
              rel="[% 'alternate ' IF user_skin %]stylesheet"
              title="[% setting_descs.standard FILTER html %]"
              type="text/css">
      <![endif]-->
    [% END %]

    [%# CSS cascade, part 3: Third-party stylesheet set (selectable).
      # All third-party skins are present if skin selection is enabled.
      # The admin-selected skin is always present.
      #%]
    [% FOREACH contrib_skin = user.settings.skin.legal_values %]
      [% NEXT IF contrib_skin == 'standard' %]
      [% NEXT UNLESS contrib_skin == user_skin
                  OR user.settings.skin.is_enabled %]
      [% contrib_skin = contrib_skin FILTER url_quote %]
      [% IF contrib_skin.match('\.css$') %]
        [%# 1st skin variant: single-file stylesheet %]
        <link href="[% "skins/contrib/$contrib_skin" %]"
              rel="[% 'alternate ' UNLESS contrib_skin == user_skin %]stylesheet"
              title="[% contrib_skin FILTER html %]"
              type="text/css">
      [% ELSE %]
        [%# 2nd skin variant: stylesheet set %]
        [% FOREACH style_url = style_urls %]
          [% IF style_url.match('^skins/standard/') %]
            <link href="[% style_url.replace('^skins/standard/',
                                             "skins/contrib/$contrib_skin/") %]"
                  rel="[% 'alternate ' UNLESS contrib_skin == user_skin %]stylesheet"
                  title="[% contrib_skin FILTER html %]"
                  type="text/css">
          [% END %]
        [% END %]
        <!--[if lte IE 7]>
          [%# Internet Explorer treats [if IE] HTML comments as uncommented.
            # Use it to import CSS fixes so that Bugzilla looks decent on IE 7
            # and below.
            #%]
          <link href="skins/contrib/[% contrib_skin FILTER html %]/IE-fixes.css"
                rel="[% 'alternate ' UNLESS contrib_skin == user_skin %]stylesheet"
                title="[% contrib_skin FILTER html %]"
                type="text/css">
        <![endif]-->
      [% END %]
    [% END %]

    [%# CSS cascade, part 4: page-specific styles.
      #%]
    [% IF style %]
      <style type="text/css">
        [% style %]
      </style>
    [% END %]

    [%# CSS cascade, part 5: Custom Bugzilla stylesheet set (persistent).
      # Always present. Site administrators may override all other style
      # definitions, including skins, using custom stylesheets.
      #%]
    [% FOREACH style_url = style_urls %]
      [% IF style_url.match('^skins/standard/') %]
        <link href="[% style_url.replace('^skins/standard/', "skins/custom/")
                       FILTER html %]" rel="stylesheet" type="text/css">
      [% END %]
    [% END %]
    <!--[if lte IE 7]>
      [%# Internet Explorer treats [if IE] HTML comments as uncommented.
        # Use it to import CSS fixes so that Bugzilla looks decent on IE 7
        # and below.
        #%]
      <link href="skins/custom/IE-fixes.css"
            rel="stylesheet"
            type="text/css">
    <![endif]-->

    <script src="js/yui/yahoo-dom-event.js" type="text/javascript"></script>
    <script src="js/yui/cookie.js" type="text/javascript"></script>
    <script src="js/global.js" type="text/javascript"></script>
    <script type="text/javascript">
    <!--
        YAHOO.namespace('bugzilla');
        if (YAHOO.env.ua.gecko) {
            YAHOO.util.Event._simpleRemove(window, "unload", 
                                           YAHOO.util.Event._unload);
        }
        [%# The language selector needs javascript to set its cookie,
          # so it is hidden in HTML/CSS by the "bz_default_hidden" class.
          # If the browser can run javascript, it will then "unhide"
          # the language selector using the following code.
          #%]
        function unhide_language_selector() { 
            YAHOO.util.Dom.removeClass(
                'lang_links_container', 'bz_default_hidden'
            ); 
        } 
        YAHOO.util.Event.onDOMReady(unhide_language_selector);

        [%# Make some Bugzilla information available to all scripts. 
          # We don't import every parameter and constant because we
          # don't want to add a lot of uncached JS to every page. 
          #%]
        var BUGZILLA = {
            param: {
                cookiepath: '[% Param('cookiepath') FILTER js %]'
            },

            string: {
                attach_desc_required:
                    'You must enter a Description for this attachment.'
            }
        };
        [% IF javascript %]
          [% javascript %]
        [% END %]
    // -->
    </script>

    [% IF javascript_urls %]
      [% FOREACH javascript_url = javascript_urls %]
        <script src="[% javascript_url FILTER html %]" type="text/javascript"></script>
      [% END %]
    [% END %]

    [%# this puts the live bookmark up on firefox for the Atom feed %]
    [% IF atomlink %]
       <link rel="alternate" 
             type="application/atom+xml" title="Atom feed" 
             href="[% atomlink FILTER html %]">
    [% END %]

    [%# Required for the 'Autodiscovery' feature in Firefox 2 and IE 7. %]
    <link rel="search" type="application/opensearchdescription+xml"
                       title="[% terms.Bugzilla %]" href="./search_plugin.cgi">
    <link rel="shortcut icon" href="images/favicon.ico" >
    [% Hook.process("additional_header") %]
  </head>

[%# Migration note: contents of the old Param 'bodyhtml' go in the body tag,
  # but set the onload attribute in the DEFAULT directive above.
  #%]

  <body onload="[% onload %]"
        class="[% urlbase.replace('^https?://','').replace('/$','').replace('[-~@:/.]+','-') %]
               [% FOREACH class = bodyclasses %]
                 [% ' ' %][% class FILTER css_class_quote %]
               [% END %]">

[%# Migration note: the following file corresponds to the old Param
  # 'bannerhtml'
  #%]

<div id="header">

[% INCLUDE global/banner.html.tmpl %]

<table border="0" cellspacing="0" cellpadding="0" id="titles">
<tr>
    <td id="title">
      <p>[% terms.Bugzilla %]
      [% " &ndash; $header" IF header %]</p>
    </td>

  [% IF subheader %]
    <td id="subtitle">
      <p class="subheader">[% subheader %]</p>
    </td>
  [% END %]

  [% IF header_addl_info %]
    <td id="information">
      <p class="header_addl_info">[% header_addl_info %]</p>
    </td>
  [% END %]
</tr>
</table>

<table id="lang_links_container" cellpadding="0" cellspacing="0"
       class="bz_default_hidden"><tr><td>
[% IF Bugzilla.languages.size > 1 %]
  <ul class="links">
  [% FOREACH lang = Bugzilla.languages.sort %]
    <li>[% IF NOT loop.first %]<span class="separator"> | </span>[% END %]
    [% IF lang == current_language %]
      <span class="lang_current">[% lang FILTER html FILTER upper %]</span>
    [% ELSE %]
      <a href="#" onclick="set_language('[% lang FILTER none %]');">
       [%- lang FILTER html FILTER upper %]</a>
    [% END %]
    </li>
  [% END %]
  </ul>
[% END %]
</td></tr></table>

[% PROCESS "global/common-links.html.tmpl" qs_suffix = "_top" %]
</div> [%# header %]

<div id="bugzilla-body">

[% IF Param('announcehtml') %]
[% Param('announcehtml') FILTER none %]
[% END %]

[% IF message %]
<div id="message">[% message %]</div>
[% END %]
