% !TEX root = ../Main.tex


% Input Validation: Summe
\newcommand{\validateCurrency}{\detokenize{
		var amount = String(event.value ?? "0").replaceAll(".", "").replaceAll(",", ".");
		if (amount && (isNaN(amount) || parseFloat(amount) < 0)) {
				app.alert("Ungueltiger Betrag: " + event.value + ". Bitte geben Sie eine gueltige Zahl ein.");
				event.rc = false;
			} else {
				event.value = parseFloat(amount).toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
			}
	}}

\begin{Form}[action=http://localhost:5000/,method=post]
	\paPage{QSM – Allgemeiner Teil}{
	% Abschnitt 1: Institution (sofern vorhanden)
	\FormSection{Institution (sofern vorhanden)}{%
		% Radio buttons : horizontal oben
		\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
			\textbf{Art der Institution}  & \multicolumn{2}{p{0.73\textwidth}}{
				\CustomChoiceMenuDefault{pa-institution-type}{}{width=\linewidth,default=-,value=-}{-,Fachschaft=stud-fs,STUPA-Referat=stud-rf,Studentische Hochschulgruppe=stud-hg,Fakultät=faculty,Hochschuleinrichtung=hs-institution}
			}                                                                   \\
			\textbf{Name der Institution} & \multicolumn{2}{p{0.73\textwidth}}{
				\CustomTextFieldDefault{pa-institution}{}{Institution}{width=\linewidth}
			}                                                                   \\
		\end{tabular}
	}

	% Validate: E-Mail-Adresse
	\newcommand{\validateEmail}{\detokenize{
	var email = event.value;
	if (email && !/^[a-zA-Z0-9._\%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2}$/.test(email)) { /*$*/
			app.alert("Ungueltige E-Mail-Adresse: " + email + ". Bitte geben Sie eine gueltige E-Mail-Adresse ein.");
			event.rc = false;
		}
	}}

	% Abschnitt 2: Ansprechperson
	\FormSection{Ansprechperson}{%
		\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
			\textbf{Vorname, Name}  & \CustomTextFieldDefault{pa-first-name}{}{Vorname}{width=\linewidth} & \CustomTextFieldDefault{pa-last-name}{}{Nachname}{width=\linewidth} \\
			\textbf{Fakultät}       & \multicolumn{2}{p{0.73\textwidth}}{
				\CustomChoiceMenuDefault{pa-course}{}{width=\linewidth,default=-}{-,INF,ESB,LS,TEC,TEX,NXT}
			}                                                                                                                                                                   \\
			\textbf{Rolle}          & \multicolumn{2}{p{0.73\textwidth}}{
				\CustomChoiceMenuDefault{pa-role}{}{width=\linewidth,default=-}{-,Student,Professor,Mitarbeiter,ASTA,Referatsleitung,Fachschaftsvorstand}
			}                                                                                                                                                                   \\
			\textbf{E-Mail-Adresse} & \multicolumn{2}{p{0.73\textwidth}}{
				\CustomTextFieldDefault{pa-email}{}{E-Mail-Addresse}{width=\linewidth,validate=\validateEmail}
			}                                                                                                                                                                   \\
		\end{tabular}
	}

	% Abschnitt 3: Allgmeine Informationen zum Projekt
	\FormSection{Allgemeine Informationen zum Projekt}{%
		% Validate: Teilnehmerzahl >= 0 und integer
		\newcommand{\validateParticipants}{\detokenize{
				if (isNaN(event.value) || parseInt(event.value) != parseFloat(event.value) || parseInt(event.value) < 0) {
						app.alert("Ungueltige Teilnehmerzahl: " + event.value + ". Bitte geben Sie eine positive ganze Zahl ein.");
						event.rc = false;
					}
			}}

		\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
			\textbf{Projektname}                                                                                    & \multicolumn{2}{p{0.73\textwidth}}{
				\CustomTextFieldDefault{pa-project-name}{}{Projektname}{width=\linewidth}
			}                                                                                                                                             \\
			% Sofern zutreffend: Bekannte Anzahl der Teilnehmer
			\multicolumn{2}{p{0.667\textwidth}}{\hspace{-6pt}\textbf{Anzahl der stud. Teilnehmer (sofern bekannt)}} & {
					\CustomTextFieldDefault{pa-participants}{}{Anzahl der Teilnehmer}{width=\linewidth,align=2,default=0,validate=\validateParticipants}
			}                                                                                                                                             \\
			\textbf{Teilnehmende Fakultäten}                                                                        & \multicolumn{2}{p{0.73\textwidth}}{
				%\CustomChoiceMenuDefault{pa-participing-faculties}{}{width=\linewidth,default=-}{-,Hochschulöffentlich=ALL,INF,ESB,LS,TEC,TEX,NXT}
				\raisebox{-1pt}{\CheckBox[
						radio,
						name=pa-participating-faculties-inf,
						width=1em,
						height=1em
					]{}} INF\quad
				\raisebox{-1pt}{\CheckBox[
						radio,
						name=pa-participating-faculties-esb,
						width=1em,
						height=1em
					]{}} ESB\quad
				\raisebox{-1pt}{\CheckBox[
						radio,
						name=pa-participating-faculties-ls,
						width=1em,
						height=1em
					]{}} LS\quad
				\raisebox{-1pt}{\CheckBox[
						radio,
						name=pa-participating-faculties-tec,
						width=1em,
						height=1em
					]{}} TEC\quad
				\raisebox{-1pt}{\CheckBox[
						radio,
						name=pa-participating-faculties-tex,
						width=1em,
						height=1em
					]{}} TEX\quad
				\raisebox{-1pt}{\CheckBox[
						radio,
						name=pa-participating-faculties-nxt,
						width=1em,
						height=1em
					]{}} NXT\quad
				\raisebox{-1pt}{\CheckBox[
						radio,
						name=pa-participating-faculties-open,
						width=1em,
						height=1em
					]{}} Öffentlich
			}                                                                                                                                             \\
		\end{tabular}

		% Input Validation: Date
		\newcommand{\validateStartDate}{\detokenize{
				if (event.value != "JJJJ-MM") {
						var date = new Date(event.value);
						if (date == "Invalid Date") {
								app.alert("Ungueltiges Datum: " + event.value + ". Bitte geben Sie ein gueltiges Datum im Format JJJJ-MM ein.");
								event.rc = false;
							} else {
								event.value = date.toISOString().slice(0, 7);
							}
						if (this.getField("pa-end-date").value != "JJJJ-MM") {
								var endDate = new Date(this.getField("pa-end-date").value);
								if (date > endDate) {
										app.alert("Das Startdatum muss vor dem Enddatum liegen.");
										event.rc = false;
									}
							}
					}
			}}

		% Input Validation: End Date
		\newcommand{\validateEndDate}{\detokenize{
				if (event.value != "JJJJ-MM") {
						var date = new Date(event.value);
						if (date == "Invalid Date") {
								app.alert("Ungueltiges Datum: " + event.value + ". Bitte geben Sie ein gueltiges Datum im Format JJJJ-MM ein.");
								event.rc = false;
							} else {
								event.value = date.toISOString().slice(0, 7);
							}
						if (this.getField("pa-start-date").value != "JJJJ-MM") {
								var startDate = new Date(this.getField("pa-start-date").value);
								if (startDate > date) {
										app.alert("Das Enddatum muss nach dem Startdatum liegen.");
										event.rc = false;
									}
							}
					}
			}}

		\begin{tabular}{@{}p{0.3\textwidth}p{0.35\textwidth}p{0.35\textwidth}@{}}
			\textbf{Antragssumme (insg.)}       &  & \hspace{\fill} \CustomTextFieldDefault{pa-requested-amount-euro-sum}{}{Antragssumme (\euro)}{width=6em,align=2,default={0,00},validate=\validateCurrency}~\euro                                                                                                                                                        \\
			\textbf{Projektzeitraum (von, bis)} &  & \hspace{\fill} \CustomTextFieldDefault{pa-start-date}{}{von}{width=0.4\linewidth,default=JJJJ-MM,align=1,validate=\validateStartDate} – \CustomTextFieldDefault{pa-end-date}{}{bis}{width=0.4\linewidth,default=JJJJ-MM,align=1,validate=\validateEndDate}{\BeginAccSupp{ActualText=}\color{white}~\euro\EndAccSupp{}} \\
		\end{tabular}
	}

	\FormSection{Art der Maßnahme}{
		\vspace{0.5em}
		\begin{minipage}{1.05\textwidth}
			\setstretch{1.0}\color{black}\dinfont\small
			Sofern die Maßnahme eine bekannte Art der Finanzierung nach VWV darstellt, kann diese zur besseren Einordnung angegeben werden.
			\vspace{1em}
		\end{minipage}

		% Drop-down menu
		\CustomChoiceMenuDefault{pa-qsm-financing}{}{width=1.05\textwidth,default=-}{
			{Finanzierung zusätzlicher Lehr- und Seminarangebote=vwv-3-2-1-1},
			{Fachspezifische Studienprojekte=vwv-3-2-1-2},
			{Hochschuldidaktische Fort- und Weiterbildungsmaßnahmen=vwv-3-2-1-3},
			{Verbesserung/Ausbau von Serviceeinrichtungen sowie Infrastruktur=vwv-3-2-2-1},
			{Lehr- und Lernmaterialien=vwv-3-2-2-2},
			{Durchführung von Exkursionen=vwv-3-2-2-3},
			{Finanzierung von infrastrukturellen Begleit- und Anpassungsmaßnahmen=vwv-3-2-2-4},
			{Verbesserung der Beratungsangebote für Studierende=vwv-3-2-3-1},
			{Studium Generale und fachübergreifende Lehrangebote=vwv-3-2-3-2},
			{Sonstige Maßnahmen im Interesse der Studierendenschaft=vwv-3-2-3-3}
		}\vspace{-1em}
	}

	% \Submit{Absenden}
	}

	\paPage{QSM – Projektbeschreibung}{
		\FormSection{Projektbeschreibung}{%
			\vspace{0.5em}
			\begin{minipage}{1.05\textwidth}
				\setstretch{1.0}\color{black}\dinfont\small
				Bitte beschreiben Sie hier das Projekt, die Ziele und die geplanten Maßnahmen.
				\vspace{1em}
			\end{minipage}

			% Textfeld für die Projektbeschreibung
			\TextField[
				name=pa-project-description,
				multiline,
				width=1.055\textwidth,
				height=26\baselineskip,
				bordercolor=black,
				backgroundcolor=white,
				charsize=12pt,
				align=0,
				readonly=\isReadOnlyVariant
			]{}\vspace{-1.5em}
		}
	}

	% Seite für Kostenaufstellung
	\iffalse
		Tabelle mit:
		- Index (hardcoded)
		- Bezeichnung
		- Kosten (Euro)

		Hinweis, dass pro Position ein Beiblatt Vergleichsangebote eingereicht werden muss.
	\fi
	\paPage{QSM – Kostenaufstellung}{
		\FormSection{Kostenaufstellung}{%
			\vspace{0.5em}
			\begin{minipage}{1.05\textwidth}
				\setstretch{1.0}\color{black}\dinfont\small
				Hier bitte alle Kosten im Rahmen des Projektes eintragen. Pro Position ist ein Beiblatt "Vergleichsangebote" anzuhängen.
				\vspace{1em}
			\end{minipage}

			% JS-Code to update cell on blur of any number field
			\newcommand{\updateSum}{\detokenize{
					var total = 0;
					for (var i = 1; i <= 24; i++) {
							var amountField = this.getField("pa-cost-" + i + "-amount-euro");
							if (amountField) {
									var amount = String(amountField.value ?? "0").replaceAll(".", "").replaceAll(",", ".");
									var value = parseFloat(amount) || 0;
									total += value;
									amountField.value = value.toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
								}
						}
					this.getField("pa-requested-amount-euro-sum").value = total.toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
				}}

			\newcommand{\validateAndUpdateSum}{
				\validateCurrency
				\updateSum
			}

			% Tabelle für die Kostenaufstellung
			\begin{tabular}{@{}p{0.02\textwidth}p{0.82\textwidth}p{0.16\textwidth}@{}}
				% Index
				\textbf{\#}       & \multicolumn{1}{c}{\textbf{Bezeichnung}}                                  & \multicolumn{1}{c}{\textbf{Kosten (\euro)}}                                                                                                  \\
				% Insg. 24 Positionen
				1                 & \CustomTextFieldDefault{pa-cost-1-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-1-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				2                 & \CustomTextFieldDefault{pa-cost-2-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-2-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				3                 & \CustomTextFieldDefault{pa-cost-3-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-3-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				4                 & \CustomTextFieldDefault{pa-cost-4-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-4-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				5                 & \CustomTextFieldDefault{pa-cost-5-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-5-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				6                 & \CustomTextFieldDefault{pa-cost-6-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-6-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				7                 & \CustomTextFieldDefault{pa-cost-7-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-7-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				8                 & \CustomTextFieldDefault{pa-cost-8-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-8-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				9                 & \CustomTextFieldDefault{pa-cost-9-name}{}{Bezeichnung}{width=\linewidth}  & \CustomTextFieldDefault{pa-cost-9-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum}  \\
				10                & \CustomTextFieldDefault{pa-cost-10-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-10-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				11                & \CustomTextFieldDefault{pa-cost-11-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-11-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				12                & \CustomTextFieldDefault{pa-cost-12-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-12-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				13                & \CustomTextFieldDefault{pa-cost-13-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-13-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				14                & \CustomTextFieldDefault{pa-cost-14-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-14-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				15                & \CustomTextFieldDefault{pa-cost-15-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-15-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				16                & \CustomTextFieldDefault{pa-cost-16-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-16-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				17                & \CustomTextFieldDefault{pa-cost-17-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-17-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				18                & \CustomTextFieldDefault{pa-cost-18-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-18-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				19                & \CustomTextFieldDefault{pa-cost-19-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-19-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				20                & \CustomTextFieldDefault{pa-cost-20-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-20-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				21                & \CustomTextFieldDefault{pa-cost-21-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-21-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				22                & \CustomTextFieldDefault{pa-cost-22-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-22-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				23                & \CustomTextFieldDefault{pa-cost-23-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-23-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				24                & \CustomTextFieldDefault{pa-cost-24-name}{}{Bezeichnung}{width=\linewidth} & \CustomTextFieldDefault{pa-cost-24-amount-euro}{}{Kosten}{width=6em,align=2,default={0,00},onblur=\updateSum,validate=\validateAndUpdateSum} \\
				\textbf{$\Sigma$} &                                                                           & \CustomTextFieldDefault{pa-requested-amount-euro-sum}{}{Summe}{width=6em,align=2,default={0,00},validate=\validateCurrency}                  \\
			\end{tabular}
		}
	}

	\paPage{QSM – Checklisten}{
		\FormSection{Checkliste: QS-Mittel}{
			\vspace{0.5em}
			\begin{minipage}{1.05\textwidth}
				\setstretch{1.0}\color{black}\dinfont
				Durch QS-Mittel finanzierte Projekte müssen der \href{https://www.landesrecht-bw.de/bsbw/document/VVBW-VVBW000034426}{Verwaltungsvorschrift des Landes} über die Verwendung selbiger entsprechen.
				Dieses Beiblatt dient der Sicherstellung, dass die Anforderungen erfüllt werden.
				\vspace{1em}
			\end{minipage}

			%% Tabelle; Checkboxen auf rechter Seite, Text links
			\begin{tabular}{@{}p{\textwidth}p{0.05\textwidth}@{}}
				% Der Antrag beinhaltet keine zeitlich unbefristeten Stellenfinanzierungen
				\textbf{Die Maßnahme beinhaltet keine zeitlich unbefristeten Stellenfinanzierungen} & \raisebox{-1pt}{\CheckBox[
						name=pa-qsm-stellenfinanzierungen,
						width=1em,
						height=1em
				]{}}                                                                                                             \\
				% Die Maßnahme kommt den Studierenden zugute (vgl. VWV)
				\textbf{Die Maßnahme kommt den Studierenden zugute (vgl. VWV)}                      & \raisebox{-1pt}{\CheckBox[
						name=pa-qsm-studierende,
						width=1em,
						height=1em
				]{}}                                                                                                             \\
				% Es findet keine individuelle Förderung von Studierenden statt
				\textbf{Es findet keine individuelle Förderung von Studierenden statt}              & \raisebox{-1pt}{\CheckBox[
						name=pa-qsm-individuell,
						width=1em,
						height=1em
				]{}}                                                                                                             \\
			\end{tabular}
		}

		\FormSection{Checkliste: Exkursionen}{
			%% Tabelle; Checkboxen auf rechter Seite, Text links
			\begin{tabular}{@{}p{\textwidth}p{0.05\textwidth}@{}}
				% Der Antrag beinhaltet keine zeitlich unbefristeten Stellenfinanzierungen
				\textbf{Die Exkursion wurde von der Fakultät genehmigt}             & \raisebox{-1pt}{\CheckBox[
						name=pa-qsm-exkursion-genehmigt,
						width=1em,
						height=1em
				]{}}                                                                                             \\
				% Die Maßnahme kommt den Studierenden zugute (vgl. VWV)
				\textbf{Die Exkursion wird maßgeblich von der Fakultät bezuschusst} & \raisebox{-1pt}{\CheckBox[
						name=pa-qsm-exkursion-bezuschusst,
						width=1em,
						height=1em
					]{}}
			\end{tabular}
		}

		% Bekannte Arten der Finanzierung nach VWV; Sofern die Maßnahme eine bekannte Art der Finanzierung nach VWV darstellt, kann diese zur besseren Einordnung angegeben werden.
		% Diese sind:
		% (Stufe 1)
		% - Finanzierung zusätzlicher, auch fachübergreifender Lehr- und Seminarangebote
		% - Fachspezifische Studienprojekte
		% - Hochschuldidaktische Fort- und Weiterbildungsmaßnahmen
		% (Stufe 2)
		% - Verbesserung sowie Ausbau der Angebote von Serviceeinrichtungen der Hochschule sowie der lehr- und lernbezogenen Infrastruktur
		% - Lehr- und Lernmaterialien
		% - Durchführung von Exkursionen im Pflicht- und Wahlpflichtbereich sowie Exkursionen zur Vertiefung des Lehrinhalts
		% - Finanzierung von infrastrukturellen Begleit- und Anpassungsmaßnahmen
		% (Stufe 3)
		% - Verbesserung der Beratungsangebote für Studierende
		% - Studium Generale, fachübergreifende Lehrangebote
		% - Sonstige Maßnahmen, die mittelbar der Verbesserung der Qualität von Studium und Lehre dienen und die Vielfalt der Studierendenschaft und Studienangebote widerspiegeln, hochschulübergreifende Projekte
		%
		% Falls keine zutrifft, muss eine Begründung, warum die Maßnahme trotzdem förderungswürdig ist, angegeben werden.

		% \Submit{Absenden}
	}
\end{Form}
