\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{kluwer}[CraftLaw for the CraftFuze Legal Project, Kluwer Layout]

\LoadClass[a5paper,4pt,twoside]{article}
\RequirePackage[left=1cm, right=1cm, top=2cm]{geometry}
\RequirePackage[utf8]{inputenc}
\RequirePackage[english]{babel}
\RequirePackage{blindtext}
\RequirePackage{titling}
\RequirePackage{fancyhdr}
\RequirePackage{tikz}
\RequirePackage[shortlabels]{enumitem}
\RequirePackage{needspace}
\RequirePackage[document]{ragged2e}
\RequirePackage{scrextend}

% AlphAlph
\usepackage{enumitem,alphalph}
\makeatletter
\newcommand{\AlphAlphFmt}[1]{\@alphfmt{#1}}  % Define the \alphalph wrapper for enumitem 
\newcommand{\@alphfmt}[1]{\alphalph{\value{#1}}}  % Internal representation 
\AddEnumerateCounter{\alphalphFmt}{\@alphfmt}{aaa} % Register this new format

% Indent
\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}
\setlist[enumerate,1]{leftmargin=1.5em,topsep=-1ex,itemsep=-1ex,partopsep=1ex,parsep=1ex,style=sameline}
\setlist[enumerate,2]{leftmargin=1.5em,topsep=-1ex,itemsep=-1ex,partopsep=1ex,parsep=1ex,style=sameline}
\setenumerate[0]{label=- \arabic*.}

% Header and footer
\pagestyle{fancy}
\fancyhf{}

% New title layout
\newcommand{\settitle}[1]{\def\@lawtitle{#1}}
\newcommand{\setdate}[1]{\def\@date{#1}}

% Introduction
\newcommand{\introduction}[1]{%
	\bigskip%
	\vbox{%
		\noindent{#1}%
	}%
}

% About proposal content
\newcounter{TopArticle}
\newcommand{\toparticle}[2]{%
	\stepcounter{TopArticle}%
	\needspace{5\baselineskip}%
	\bigskip%
	\hbox{%
		\textbf{Art. \Roman{TopArticle} #1}\newline%
	}%
	\begin{addmargin}[1em]{2em}
		\par{#2}
	\end{addmargin}
}

\newcommand{\signature}[3]{}

\newcommand{\oldsignature}[1]{}

% About legal content
\newcounter{TitleCounter}
\newcounter{TitleSubCounter}[TitleCounter]
\newcounter{ChapterCounter}[TitleCounter]
\newcounter{ChapterSubCounter}[ChapterCounter]
\newcounter{SectionCounter}[ChapterCounter]
\newcounter{SectionSubCounter}[SectionCounter]
\newcounter{ParagraphCounter}[SectionCounter]
\newcounter{SubParagraphCounter}[ParagraphCounter]
\newcounter{ArticleCounter}[TitleSubCounter]
\newcounter{ArticleSubCounter}[ArticleCounter]
\renewcommand{\title}[1]{%
	\needspace{20\baselineskip}%
	\bigskip%
	\titlecounter%
	\vbox{%
		\noindent{TITLE \Roman{TitleCounter}\newline\textbf{#1}}
	}%
}
\newcommand{\subtitle}[1]{%
	\needspace{20\baselineskip}%
	\bigskip%
	\subtitlecounter%
	\vbox{%
		\noindent{TITLE \Roman{TitleCounter} \AlphAlph{\value{TitleSubCounter}}\newline\textbf{#1}}
	}%
}
\newcommand{\chapter}[1]{
	\needspace{20\baselineskip}%
	\bigskip%
	\stepcounter{ChapterCounter}%
	\vbox{%
		\noindent{CHAPTER \Roman{ChapterCounter}\newline\textbf{#1}}
	}%
}
\newcommand{\subchapter}[1]{
	\needspace{20\baselineskip}%
	\bigskip%
	\stepcounter{ChapterSubCounter}%
	\vbox{%
		\noindent{CHAPTER \Roman{ChapterCounter} \AlphAlph{\value{ChapterSubCounter}}\newline\textbf{#1}}
	}%
}
\renewcommand{\section}[1]{%
	\needspace{10\baselineskip}%
	\bigskip%
	\stepcounter{SectionCounter}%
	\vbox{%
		\noindent{SECTION \Roman{SectionCounter}\newline\textbf{#1}}
	}%
}
\renewcommand{\subsection}[1]{%
	\needspace{10\baselineskip}%
	\bigskip%
	\stepcounter{SectionSubCounter}%
	\vbox{%
		\noindent{SECTION \Roman{SectionCounter} \AlphAlph{\value{SectionSubCounter}}\newline\textbf{#1}}
	}%
}
\renewcommand{\paragraph}[1]{%
	\needspace{10\baselineskip}%
	\bigskip%
	\stepcounter{ParagraphCounter}%
	\vbox{%
		\noindent{§ \arabic{ParagraphCounter}.\arabic{SubParagraphCounter}\newline \textbf{#1}}
	}%
}
\renewcommand{\subparagraph}[1]{%
	\needspace{10\baselineskip}%
	\bigskip%
	\stepcounter{SubParagraphCounter}%
	\vbox{%
		\noindent{§ \arabic{ParagraphCounter}.\arabic{SubParagraphCounter}\newline \textbf{#1}}
	}%
}
\newcommand{\article}[2]{%
	\needspace{5\baselineskip}%
	\bigskip%
	\articlecounter%
	\hbox{%
		\ifnum\value{TitleCounter}>0%
			\ifnum\value{TitleSubCounter}>0%
				\textbf{Art. \arabic{TitleCounter}\AlphAlph{\value{TitleSubCounter}}:\arabic{ArticleCounter} #1}\newline%
			\else%
				\textbf{Art. \arabic{TitleCounter}:\arabic{ArticleCounter} #1}\newline%
			\fi%
		\else%
			\textbf{Art. \arabic{ArticleCounter} #1}\newline%
		\fi%
	}%
	\justify%
	\par{#2}%
}
\newcommand{\subarticle}[2]{%
	\needspace{5\baselineskip}%
	\bigskip%
	\subarticlecounter%
	\hbox{%
		\ifnum\value{TitleCounter}>0%
			\ifnum\value{TitleSubCounter}>0%
				\textbf{Art. \arabic{TitleCounter}\AlphAlph{\value{TitleSubCounter}}:\arabic{ArticleCounter}\alphalph{\value{ArticleSubCounter}} #1}\newline%
			\else%
				\textbf{Art. \arabic{TitleCounter}:\arabic{ArticleCounter}\alphalph{\value{ArticleSubCounter}} #1}\newline%
			\fi%
		\else%
			\textbf{Art. \arabic{ArticleCounter}\alphalph{\value{ArticleSubCounter}} #1}\newline%
		\fi%
	}%
	\justify%
	\par{#2}%
}

% Header tracker
\newmarks\articlemark
\newmarks\subarticlemark
\newmarks\titlemark
\newmarks\subtitlemark

\newcommand{\articlecounter}{%
	\stepcounter{ArticleCounter}%
	\marks\articlemark{\arabic{ArticleCounter}}%
	\marks\subarticlemark{}%
	\marks\titlemark{\arabic{TitleCounter}}%
	\marks\subtitlemark{\Alph{TitleSubCounter}}%
}

\newcommand{\subarticlecounter}{%
	\stepcounter{ArticleSubCounter}%
	\marks\subarticlemark{\alph{ArticleSubCounter}}%
	\marks\articlemark{\arabic{ArticleCounter}}
	\marks\titlemark{\arabic{TitleCounter}}%
	\marks\subtitlemark{\Alph{TitleSubCounter}}%
}%

\newcommand{\titlecounter}{%
	\stepcounter{TitleCounter}%
	\marks\titlemark{\arabic{TitleCounter}}%
	\marks\subtitlemark{\Alph{TitleSubCounter}}%
}

\newcommand{\subtitlecounter}{%
	\stepcounter{TitleSubCounter}%
	\marks\subtitlemark{\Alph{TitleSubCounter}}%
}%

\newcommand{\articlehead}{
	\begingroup
		\edef\firstarticle{\firstmarks\articlemark}
		\edef\firstsubarticle{\firstmarks\subarticlemark}
		\edef\firsttitle{\firstmarks\titlemark}
		\edef\firstsubtitle{\firstmarks\subtitlemark}
		Art. \firsttitle\firstsubtitle:\firstarticle\firstsubarticle
	\endgroup
}

% And generate the header using these markers
\newcommand{\generateHeader}{
	% Header
	\fancyhead[LE,RO]{\@lawtitle}
	\fancyhead[RE,LO]{\articlehead}
	\fancyfoot[RE,LO]{\thepage}
		
		% Title
		\noindent%
		\textbf{\large\fontfamily{phv}\fontseries{b}%
			\selectfont \@lawtitle}%
		\medskip%
	}