% Feature module: headers

\ifdefined\NextFeatureHeadersLoaded
  \endinput
\fi
\def\NextFeatureHeadersLoaded{1}

\RequirePackage{fancyhdr}

\providecommand{\NextHeaderTitleText}{}
\providecommand{\HeaderTitle}[1]{\renewcommand{\NextHeaderTitleText}{#1}}
\providecommand{\NextHeaderStyleText}{running}
\providecommand{\HeaderStyle}[1]{%
  \renewcommand{\NextHeaderStyleText}{#1}%
  \ifcsname NextFeatureHeadersApply\endcsname
    \NextFeatureHeadersApply
  \fi
}

\makeatletter
\providecommand{\NextFeatureHeaderTitleFirstLine}{%
  \@ifundefined{@title}
    {}
    {\expandafter\NextFeatureHeaderTitleFirstLineAux\@title\\\@nil}%
}
\def\NextFeatureHeaderTitleFirstLineAux#1\\#2\@nil{#1}
\providecommand{\NextFeatureHeaderTitleContent}{%
  \ifx\NextHeaderTitleText\@empty
    \NextHeaderTitleContent
  \else
    \NextHeaderTitleText
  \fi
}
\@namedef{NextFeatureHeadersStyle@title}{%
  \if@twoside
    \fancyhead[LE]{\itshape\small\NextFeatureHeaderTitleContent}%
    \fancyhead[RO]{\itshape\small\NextFeatureHeaderTitleContent}%
    \fancyfoot[LE]{\small\thepage}%
    \fancyfoot[RO]{\small\thepage}%
  \else
    \fancyhead[C]{\itshape\small\NextFeatureHeaderTitleContent}%
    \fancyfoot[C]{\small\thepage}%
  \fi
}
\@namedef{NextFeatureHeadersStyle@running}{%
  \if@twoside
    \fancyhead[LE]{\small\thepage}%
    \fancyhead[RE]{\itshape\small\NextFeatureHeaderTitleContent}%
    \fancyhead[LO]{\itshape\small\NextRunningHeaderContent}%
    \fancyhead[RO]{\small\thepage}%
  \else
    \fancyhead[L]{\itshape\small\NextFeatureHeaderTitleContent}%
    \fancyhead[R]{\small\thepage}%
  \fi
}
\@namedef{NextFeatureHeadersStyle@classic}{\@nameuse{NextFeatureHeadersStyle@running}}
\newcommand{\NextFeatureHeadersApplyStyle}{%
  \@ifundefined{NextFeatureHeadersStyle@\NextHeaderStyleText}
    {%
      \PackageError{feature-headers}
        {Unknown header style `\NextHeaderStyleText`}
        {Use `title` or `running`.}%
    }
    {\@nameuse{NextFeatureHeadersStyle@\NextHeaderStyleText}}%
}
\newcommand{\NextFeatureHeadersApply}{%
  \pagestyle{fancy}%
  \fancyhf{}%
  \@ifundefined{chapter}
    {%
      \renewcommand{\sectionmark}[1]{\NextSetRunningHeader{##1}\markboth{##1}{}}%
      \renewcommand{\subsectionmark}[1]{}%
      \renewcommand{\subsubsectionmark}[1]{}%
    }
    {%
      \renewcommand{\chaptermark}[1]{\NextSetRunningHeader{##1}\markboth{##1}{}}%
      \renewcommand{\sectionmark}[1]{}%
      \renewcommand{\subsectionmark}[1]{}%
      \renewcommand{\subsubsectionmark}[1]{}%
    }%
  \NextFeatureHeadersApplyStyle
  \renewcommand{\headrulewidth}{0.4pt}%
  \renewcommand{\footrulewidth}{0pt}%
  \setlength{\headheight}{14pt}%
  \fancypagestyle{plain}{%
    \fancyhf{}%
    \renewcommand{\headrulewidth}{0pt}%
    \renewcommand{\footrulewidth}{0pt}%
  }%
}
\makeatother

\NextFeatureHeadersApply
