\ProvidesClass{friggeri-cv-a4}[2015/10/22 CV class]
\NeedsTeXFormat{LaTeX2e}

\DeclareOption{nocolors}{\def\@cv@nocolors{}}
\DeclareOption{print}{\def\@cv@print{}}
\DeclareOption*{%
	\PassOptionsToClass{\CurrentOption}{article}%
}
\ProcessOptions\relax
\LoadClass{article}

% set A4 paper format
\setlength\paperheight {297mm}
\setlength\paperwidth  {210mm}

\ProcessOptions

%%%%%%%%%%
% Colors %
%%%%%%%%%%

\RequirePackage{xcolor}

\definecolor{white}{RGB}{255,255,255}

\definecolor{darkgray}{HTML}{333333}
\definecolor{gray}{HTML}{4D4D4D}
\definecolor{lightgray}{HTML}{999999}

\definecolor{green}{HTML}{C2E15F}
\definecolor{orange}{HTML}{FDA333}
\definecolor{purple}{HTML}{D3A4F9}
\definecolor{red}{HTML}{FB4485}
\definecolor{blue}{HTML}{6CE0F1}

\ifdefined\@cv@print
	\colorlet{green}{gray}
	\colorlet{orange}{gray}
	\colorlet{purple}{gray}
	\colorlet{brown}{gray}
	\colorlet{red}{gray}
	\colorlet{blue}{gray}
	\colorlet{fillheader}{white}
	\colorlet{header}{gray}
\else
	\colorlet{fillheader}{gray}
	\colorlet{header}{white}
\fi
\colorlet{textcolor}{gray}
\colorlet{headercolor}{gray}

\ifdefined\@cv@nocolors
	\colorlet{green}{gray}
	\colorlet{rdfgreen}{gray}
	\colorlet{orange}{gray}
	\colorlet{rdforange}{gray}
	\colorlet{purple}{gray}
	\colorlet{rdfpurple}{gray}
	\colorlet{brown}{gray}
	\colorlet{red}{gray}
	\colorlet{blue}{gray}
\fi

%%%%%%%%%
% Fonts %
%%%%%%%%%

\RequirePackage[quiet]{fontspec}
\RequirePackage{unicode-math}
\defaultfontfeatures{Mapping=tex-text}

\newfontfamily\bodyfont
[
	Path=fonts/,
	BoldFont=texgyreheros-bold.otf,
	ItalicFont=texgyreheros-italic.otf,
	BoldItalicFont=texgyreheros-bolditalic.otf
]{texgyreheros-regular.otf}

\newfontfamily\thinfont[Path=fonts/]{Lato-Light.ttf}
\newfontfamily\headingfont[Path=fonts/]{texgyreheros-bold.otf}

\setmainfont
[
	Path=fonts/,
	Mapping=tex-text, Color=textcolor,
	BoldFont=texgyreheros-bold.otf,
	ItalicFont=texgyreheros-italic.otf,
	BoldItalicFont=texgyreheros-bolditalic.otf
]{texgyreheros-regular.otf}

\setmathfont[Path=fonts/]{texgyreheros-regular.otf}

%%%%%%%%%%
% Header %
%%%%%%%%%%

\RequirePackage{tikz}

\newcommand{\rolefont}{%
	\fontsize{14pt}{24pt}\selectfont%
	\thinfont%
	\color{white}%
}

\newcommand{\header}[3]{%
	\begin{tikzpicture}[remember picture,overlay]
		\node [rectangle, fill=fillheader, anchor=north, minimum width=\paperwidth, minimum height=4cm] (box) at (current page.north){};
		\node [anchor=center] (name) at (box) {%
			\fontsize{40pt}{72pt}\color{header}%
			{\thinfont #1}{\bodyfont  #2}
		};
		\node [anchor=north] at (name.south) {%
			\fontsize{14pt}{24pt}\color{header}%
			\thinfont #3%
		};
	\end{tikzpicture}
	\vspace{2.5cm}
	\vspace{-2\parskip}
}


%%%%%%%%%%%%%
% Structure %
%%%%%%%%%%%%%
\RequirePackage{parskip}

\newcounter{colorCounter}
\def\@sectioncolor#1#2#3{%
	{%
			\color{%
				\ifcase\value{colorCounter}%
					blue\or%
					red\or%
					orange\or%
					green\or%
					purple\or%
					brown\else%
					headercolor\fi%
			} #1#2#3%
		}%
	\stepcounter{colorCounter}%
}

\renewcommand{\section}[1]{
	\par\vspace{\parskip}
	{%
		\LARGE\headingfont\color{headercolor}%
		\@sectioncolor #1%
	}
	\par\vspace{\parskip}
}

\renewcommand{\subsection}[1]{
	\par\vspace{.5\parskip}%
	{\Large\headingfont\color{headercolor} #1}
	\par\vspace{.25\parskip}%
}

\renewcommand{\subsubsection}[2]{
	\par\vspace{.5\parskip}%
	{\Large\headingfont\color{headercolor} #2}
	\par\vspace{.25\parskip}%
}

\pagestyle{empty}


%%%%%%%%%%%%%%%%%%%%
% List environment %
%%%%%%%%%%%%%%%%%%%%

\setlength{\tabcolsep}{0pt}
\newenvironment{entrylist}{%
	\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll}
		}{%
	\end{tabular*}
}
\renewcommand{\bfseries}{\headingfont\color{headercolor}}
\newcommand{\entry}[4]{%
	\parbox[t]{2cm}{#1}&\parbox[t]{11.3cm}{%
		\textbf{#2}%
		\hfill%
		{\footnotesize\addfontfeature{Color=lightgray} #3}\\%
		#4\vspace{\parsep}%
	}\\}


%%%%%%%%%%%%%%
% Side block %
%%%%%%%%%%%%%%

\RequirePackage[absolute,overlay]{textpos}
\setlength{\TPHorizModule}{1cm}
\setlength{\TPVertModule}{1cm}
\newenvironment{aside}{%
	\let\oldsection\section
	\renewcommand{\section}[1]{
		\par\vspace{\baselineskip}{\Large\headingfont\color{headercolor} ##1}
	}
	\begin{textblock}{5.0}(0.5, 4.33)
		\begin{flushright}
			\obeycr
			}{%
			\restorecr
		\end{flushright}
	\end{textblock}
	\let\section\oldsection
}

%%%%%%%%%%%%%%%%
% Bibliography %
%%%%%%%%%%%%%%%%

\RequirePackage[backend=biber, style=verbose, maxnames=99, sorting=ydnt]{biblatex}

\DeclareFieldFormat[article]{title}{#1\par}
\DeclareFieldFormat[book]{title}{#1\par}
\DeclareFieldFormat[inproceedings]{title}{#1\par}
\DeclareFieldFormat[misc]{title}{#1\par}
\DeclareFieldFormat[report]{title}{#1\par}

\DeclareBibliographyDriver{article}{%
	\printfield{title}%
	\newblock%
	\printnames{author}%
	\par%
	\newblock%
	{%
		\footnotesize\addfontfeature{Color=lightgray}\itshape%
		\usebibmacro{journal+issuetitle}%
		\setunit{\space}%
		\printfield{pages}%
		\newunit%
		\printlist{publisher}%
		\setunit*{\addcomma\space}%
		\printfield{year}%
		\newunit%
	}
	\par\vspace{0.3\baselineskip}
}

\DeclareBibliographyDriver{book}{%
	\printfield{title}%
	\newblock%
	\printnames{author}%
	\par%
	\newblock%
	{%
		\footnotesize\addfontfeature{Color=lightgray}\itshape%
		\printlist{publisher}%
		\setunit*{\addcomma\space}%
		\printfield{note}%
		\setunit*{\addcomma\space}%
		\printfield{year}%
		\setunit{\addcomma\space}%
		\printlist{location}%
		\newunit%
	}
	\par\vspace{0.3\baselineskip}
}


\DeclareBibliographyDriver{inproceedings}{%
	\printfield{title}%
	\newblock%
	\printnames{author}%
	\par%
	\newblock%
	{%
		\footnotesize\addfontfeature{Color=lightgray}%
		\printfield{booktitle}%
		\setunit{\addcomma\space}%
		\printfield{year}%
		\setunit{\addcomma\space}%
		\printlist{location}%
		\newunit%
	}
	\par\vspace{0.3\baselineskip}
}

\DeclareBibliographyDriver{misc}{%
	\printfield{title}%
	\newblock%
	\printnames{author}%
	\par%
	\newblock%
	{%
		\footnotesize\addfontfeature{Color=lightgray}\itshape%
		\printfield{booktitle}%
		\setunit*{\addcomma\space}%
		\printfield{note}%
		\setunit*{\addcomma\space}%
		\printfield{year}%
		\setunit{\addcomma\space}%
		\printlist{location}%
		\newunit%
	}
	\par\vspace{0.3\baselineskip}
}

\DeclareBibliographyDriver{report}{%
	\printfield{title}%
	\newblock%
	\printnames{author}%
	\par%
	\newblock%
	{%
		\footnotesize\addfontfeature{Color=lightgray}\itshape%
		\printfield{type}%
		\setunit{\space}%
		\printfield{number}%
		\setunit{\addcomma\space}%
		\printfield{year}%
		\newunit%
	}
	\par\vspace{0.3\baselineskip}
}

\DeclareNameFormat{author}{%
	\small\addfontfeature{Color=lightgray}%
	\nameparts{#1}\ifblank{\namepartgiven}{}{\namepartgiven\space}\namepartfamily%
	\ifthenelse{\value{listcount}<\value{liststop}}
	{\addcomma\space}
	{}%
}

\defbibheading{bibheading}[\bibname]{%
	\subsubsection*{#1}
	\markboth{#1}{#1}
}

\newcommand{\printbibsection}[2]{
	\begin{refsection}
		\newrefcontext[sorting=chronological]%
		\nocite{*}
		\printbibliography[type={#1}, title={#2}, heading=bibheading]
	\end{refsection}
}

\DeclareSortingTemplate{chronological}{
	\sort[direction=descending]{\field{year}}
	\sort[direction=descending]{\field{month}}
}



%%%%%%%%%%%%%%%%
% Other tweaks %
%%%%%%%%%%%%%%%%

\RequirePackage[left=6.1cm,top=2cm,right=2.5cm,bottom=2.5cm,nohead,nofoot]{geometry}
\RequirePackage{hyperref}
\hypersetup{
	colorlinks=false,
	linkcolor=red,
	citecolor=red,
	filecolor=red,
	urlcolor = red}

% A fix for \href{}{} colors not working with fontspec
\makeatletter
\def\HyColor@@@@UseColor#1\@nil{\addfontfeatures{Color=#1}}
\makeatother
