<?php
/*
 * Copyright (C) 2006 Technikum-Wien
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
 *
 * Authors:
 * Christian Paminger <christian.paminger@technikum-wien.at>,
 * Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
 * Rudolf Hangl < rudolf.hangl@technikum-wien.at >
 * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
 * Manuela Thamer <manuela.thamer@technikum-wien.at>
 */
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../config/global.config.inc.php');
require_once('../../../../include/functions.inc.php');
require_once('../../../../include/lehrveranstaltung.class.php');
require_once('../../../../include/studiengang.class.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/lehreinheit.class.php');
require_once('../../../../include/benutzerberechtigung.class.php');
require_once('../../../../include/uebung.class.php');
require_once('../../../../include/beispiel.class.php');
require_once('../../../../include/studentnote.class.php');
require_once('../../../../include/datum.class.php');
require_once('../../../../include/legesamtnote.class.php');
require_once('../../../../include/lvgesamtnote.class.php');
require_once('../../../../include/zeugnisnote.class.php');
require_once('../../../../include/pruefung.class.php');
require_once('../../../../include/person.class.php');
require_once('../../../../include/benutzer.class.php');
require_once('../../../../include/mitarbeiter.class.php');
require_once('../../../../include/mail.class.php');
require_once('../../../../include/phrasen.class.php');
require_once('../../../../include/note.class.php');
require_once('../../../../include/notenschluessel.class.php');
require_once('../../../../include/studienplan.class.php');
require_once('../../../../include/addon.class.php');
require_once('../../../../include/mobilitaet.class.php');
require_once('../../../../include/student.class.php');

$summe_stud = 0;
$summe_t2 = 0;
$summe_komm = 0;
$summe_ng = 0;
$grades = array();
$sprache = getSprache();
$p = new phrasen($sprache);

if (! $db = new basis_db())
	die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));

$user = get_uid();
if (! check_lektor($user))
	die($p->t('global/keineBerechtigungFuerDieseSeite'));
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);

if (isset($_GET['lvid']) && is_numeric($_GET['lvid'])) // Lehrveranstaltung_id
	$lvid = $_GET['lvid'];
else
	die($p->t('global/fehlerBeiDerParameteruebergabe'));

if (isset($_GET['lehreinheit_id']) && is_numeric($_GET['lehreinheit_id'])) // Lehreinheit_id
	$lehreinheit_id = $_GET['lehreinheit_id'];
else
	$lehreinheit_id = '';
// Laden der Lehrveranstaltung
$lv_obj = new lehrveranstaltung();
if (! $lv_obj->load($lvid))
	die($lv_obj->errormsg);

// Studiengang laden
$stg_obj = new studiengang($lv_obj->studiengang_kz);

$stg_obj->studiengang_kz;

$datum_obj = new datum();

if (isset($_GET['stsem']))
	$stsem = $_GET['stsem'];
else
	$stsem = '';

if ($stsem != '' && ! check_stsem($stsem))
	die($p->t('anwesenheitsliste/studiensemesterIstUngueltig'));

$datum_obj = new datum();

$noten_obj = new note();
$noten_obj->getAll();

$sprachen = new sprache();
$sprachen->getAll(true);


$noten_array = array();
$js_noten='';
foreach ($noten_obj->result as $row)
{
	$js_noten .= "	noten_array['" . $row->note . "']='" . addslashes($row->bezeichnung) . "';\n";
	$noten_array[$row->note]['bezeichnung'] = $row->bezeichnung;
	$noten_array[$row->note]['positiv'] = $row->positiv;
	$noten_array[$row->note]['aktiv'] = $row->aktiv;
	$noten_array[$row->note]['lehre'] = $row->lehre;
	$noten_array[$row->note]['lkt_ueberschreibbar'] = $row->lkt_ueberschreibbar;
	$noten_array[$row->note]['anmerkung'] = $row->anmerkung;
	foreach ($sprachen->result as $s)
		$noten_array[$row->note]['bezeichnung_mehrsprachig'][$s->sprache] = $row->bezeichnung_mehrsprachig[$s->sprache];
}

$errormsg = '';

// eingetragene lv-gesamtnoten freigeben
if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
{
	// Passwort pruefen
	if (checkldapuser($user, $_REQUEST['passwort']))
	{
		$jetzt = date("Y-m-d H:i:s");
		$neuenoten = 0;

		$studlist = "<table border='1'>
		<tr>";

		// entweder personenbezogene Daten einbinden
		if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
        {
            $studlist .= "
                <td><b>" . $p->t('global/personenkz') . "</b></td>
                <td><b>" . $p->t('global/studiengang') . "</b></td>
			    <td><b>" . $p->t('global/nachname') . "</b></td>
			    <td><b>" . $p->t('global/vorname') . "</b></td>
            ";

            if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
            {
                $studlist .= "<td><b>" . $p->t('benotungstool/punkte') . "</b></td>\n";
            }
            $studlist .= "<td><b>" . $p->t('benotungstool/note') . "</b></td>\n";

            $studlist .= "<td><b>" . $p->t('benotungstool/bearbeitetvon') . "</b></td></tr>\n";
		}
		// oder anonymisiert nur die UIDs einbinden
		else
		{
			$studlist .= "
                <td><b>" . $p->t('global/uid') . "</b></td></tr>\n
            ";
		}

		// studentenquery
		$qry_stud = "SELECT
						DISTINCT uid, vorname, nachname, matrikelnr, kurzbzlang
					FROM
						campus.vw_student_lehrveranstaltung
						JOIN campus.vw_student USING(uid)
						JOIN public.tbl_studiengang ON campus.vw_student.studiengang_kz = public.tbl_studiengang.studiengang_kz
					WHERE
						studiensemester_kurzbz = " . $db->db_add_param($stsem) . "
						AND lehrveranstaltung_id = " . $db->db_add_param($lvid, FHC_INTEGER) . "
					ORDER BY nachname, vorname ";
		if ($result_stud = $db->db_query($qry_stud))
		{
			$i = 1;
			while ($row_stud = $db->db_fetch_object($result_stud))
			{
				$lvgesamtnote = new lvgesamtnote();
				if ($lvgesamtnote->load($lvid, $row_stud->uid, $stsem))
				{
					if ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum)
					{
						$lvgesamtnote->freigabedatum = $jetzt;
						$lvgesamtnote->freigabevon_uid = $user;
						$lvgesamtnote->save();

						if (defined('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE') && CIS_GESAMTNOTE_FREIGABEMAIL_NOTE)
						{
							$studlist .= "<tr><td>" . trim($row_stud->matrikelnr) . "</td>";
							$studlist .= "<td>" . trim($row_stud->kurzbzlang) . "</td>";
							$studlist .= "<td>" . trim($row_stud->nachname) . "</td>";
							$studlist .= "<td>" . trim($row_stud->vorname) . "</td>";

                            if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
                            {
                                $studlist .= "<td>";
                                if ($lvgesamtnote->punkte != '')
                                    $studlist .= trim(number_format($lvgesamtnote->punkte, 2));
                                $studlist .= "</td>\n";
                            }
                            $studlist .= "<td>" . $noten_array[trim($lvgesamtnote->note)]['bezeichnung_mehrsprachig'][$sprache] . "</td>";

                            $studlist .= "<td>" . $lvgesamtnote->mitarbeiter_uid;
                            if ($lvgesamtnote->updatevon != '')
                                $studlist .= " (" . $lvgesamtnote->updatevon . ")";
                            $studlist .= "</td></tr>\n";
						}
						else
						{
							$studlist .= "<tr><td>" . trim($row_stud->uid) . "</td></tr>\n";
						}

						$neuenoten ++;
					}
				}
			}
		}

		$studlist .= "</table>";

		// mail an assistentin und den user selber verschicken
		if ($neuenoten > 0)
		{
			$lv = new lehrveranstaltung($lvid);
			$sg = new studiengang($lv->studiengang_kz);
			$lektor_adresse = $user . "@" . DOMAIN;
			$adressen = $sg->email . ", " . $user . "@" . DOMAIN;

			$studienplan = new studienplan();
			$studienplan->getStudienplanLehrveranstaltung($lvid, $stsem);
			$studienplan_bezeichnung = '';
			foreach ($studienplan->result as $row)
				$studienplan_bezeichnung .= $row->bezeichnung . ' ';

			$mit = new mitarbeiter();
			$mit->load($user);
			$name = $mit->anrede.' '.$mit->vorname.' '.$mit->nachname.' ('.$mit->kurzbz.')';

			$betreff = 'Notenfreigabe ' . $lv->bezeichnung . ' ' . $lv->orgform_kurzbz . ' - ' . $studienplan_bezeichnung;
			$mail = new mail($adressen, 'vilesci@' . DOMAIN, $betreff, '');
			$htmlcontent = "<html>
				<body>
					$name hat neue Noten für die Lehrveranstaltung\n\n<br>
					<b>" . $sg->kuerzel . ' ' . $lv->semester . '.Semester
					' . $lv->bezeichnung . " - " .$lv->lehrform_kurzbz. " " . $lv->orgform_kurzbz . " - " . $stsem . "</b>
					<br>eingetragen.\n<br><br>
					Die Noten können jetzt ins Zeugnis übernommen werden.\n";

            $htmlcontent .= $studlist;

			$htmlcontent.= "
					<br>Anzahl der Noten:" . $neuenoten . "
					<br><br>" . $p->t('abgabetool/mailVerschicktAn') . ": " . $adressen . "
				</body></html>";
			$mail->setHTMLContent($htmlcontent);
			$mail->setReplyTo($lektor_adresse);
			$mail->send();
		}

		http_response_code(303);
		header('Location: ' . $_SERVER['REQUEST_URI']);
		exit;
	}
	else
	{
		$errormsg = $p->t('gesamtnote/passwortFalsch');
	}
}

echo '<!DOCTYPE HTML>
<html>
<head>
	<meta charset="UTF-8">
	<title>Gesamtnote</title>
	<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
	<link href="../../../../skin/jquery.css" rel="stylesheet"  type="text/css"/>
	<link href="../../../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
	<script type="text/javascript" src="../../../../vendor/jquery/jquery1/jquery-1.12.4.min.js"></script>
	<script type="text/javascript" src="../../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
	<script type="text/javascript" src="../../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
	<script type="text/javascript" src="../../../../include/js/jquery.ui.datepicker.translation.js"></script>

	<style type="text/css">
	.td_datum
	{
		width:70px;
		text-align: left;
	}
	.td_note{
		width:50px;
		text-align:center;
	}
	.gradetable
	{
		background:#DCE4EF;
		border: 1px solid #FFF;
		font-size: 8pt;
		padding: 4px;
	}

	span.negative
	{
		color: red;
		font-weight: bold;
	}
	#nachpruefung_div
	{
		position:absolute;
		top:100px;
		left:300px;
		min-width:450px;
		min-height:200px;
		background-color:#cccccc;
		visibility:hidden;
		border-style:solid;
		border-width:1px;
		border-color:#333333;
	}
	.error
	{
		padding: 15px;
		margin-bottom: 20px;
		border: 1px solid transparent;
		border-radius: 4px;
		color: #a94442;
		background-color: #f2dede;
		border-color: #ebccd1;
	}
	.warning
	{
		padding: 15px;
		margin-bottom: 20px;
		border: 1px solid transparent;
		border-radius: 4px;
		color: #8a6d3b;
		background-color: #fcf8e3;
		border-color: #faebcc;
	}
	</style>
	<script language="JavaScript" type="text/javascript">
	var notenrequests = 0;
	var notenrequests_arr = Array();
	var noten_array = Array();
';

echo $js_noten;

?>

	const CIS_GESAMTNOTE_PUNKTE = <?php echo CIS_GESAMTNOTE_PUNKTE ? 'true' : 'false';?>;

	function getOffset(pos)
	{
		var x,y;
		if (self.pageYOffset) // all except Explorer
		{
			x = self.pageXOffset;
			y = self.pageYOffset;
		}
		else if (document.documentElement && document.documentElement.scrollTop)
			// Explorer 6 Strict
		{
			x = document.documentElement.scrollLeft;
			y = document.documentElement.scrollTop;
		}
		else if (window.scrollX)
		{
			x = window.scrollX;
			y = window.scrollY;
		}
		else if (document.body) // all other Explorers
		{
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
		}
		if (pos=='x')
			return x;
		else
			return y;
	}

	// ******************************************
	// * Note eines Studenten Speichern
	// ******************************************
	function saveLVNote(uid)
	{
		note = document.getElementById(uid).note.value;
		if (document.getElementById(uid).note)
			note_label = document.getElementById(uid).note.label;
		else
			note_label='';
		if (note=='')
		{
			alert('Bitte wählen Sie eine Note aus');
			return false;
		}
		if (document.getElementById(uid).punkte)
			punkte = document.getElementById(uid).punkte.value;
		else
			punkte='';

		note_orig = document.getElementById(uid).note_orig.value;

		//Request erzeugen und die Note speichern
		stud_uid = uid;

		var jetzt = new Date();
		var ts = jetzt.getTime();

		var url= '<?php echo "lvgesamtnoteeintragen.php?lvid=".urlencode($lvid)."&stsem=".urlencode($stsem); ?>';
		url += '&submit=1';
		url += '&student_uid='+encodeURIComponent(uid);
		url += "&note="+encodeURIComponent(note);
		url += "&punkte="+encodeURIComponent(punkte);
		url += "&"+ts;

		$.ajax({
			type:"GET",
			url: url,
			success:function(result)
			{
				document.getElementById(uid).note_orig.value=noten_array[note];
			 	uid = stud_uid;
				var note = document.getElementById(uid).note.value;
				var resp = result;
				if (resp == "neu" || resp == "update" || resp == "update_f")
				{
					notentd = document.getElementById("note_"+uid);
					while (notentd.childNodes.length>0)
					{
						notentd.removeChild(notentd.lastChild);
					}
					if (punkte!='')
						notentext = noten_array[note]+' ('+punkte+')';
					else
						notentext = noten_array[note];
					notenode = document.createTextNode(notentext);
					notentd.appendChild(notenode);
					notenstatus = document.getElementById("status_"+uid);
					changedwarning = document.getElementById("messagesdiv");
					warningdiv = document.getElementById("notenWarning");
					if (resp == "update_f")
					{
						notenstatus.innerHTML = "<img src='../../../../skin/images/changed.png'>";
						if (warningdiv != null)
							warningdiv.parentNode.removeChild(warningdiv); // Entfernt das Warning-Div
						changedwarning.innerHTML = '<div class="warning"><?php echo $p->t('benotungstool/geaenderteNotenVorhanden'); ?></div>';
					}
				}
				else
				{
					alert(resp);
					document.getElementById(uid).note.value="";
				}
			},
			error:function(result)
			{
				alert('Speichern der Note fehlgeschlagen');
			}
		});
	}

	// *************************************************
	// * Formular zum Eintragen einer Pruefung erstellen
	// *************************************************
	function pruefungAnlegen(uid,datum,note,lehreinheit_id,punkte,typ)
	{
		if(typeof(typ)=='undefined')
			typ = 'Termin2';
			var nn = document.getElementById(uid+"_nn").innerHTML;
			var vn = document.getElementById(uid+"_vn").innerHTML;
			var str = " <form name='nachpruefung_form'>	<table style='width: 95%'>";
			str += "<tr><td colspan='2' align='right'><a href='#' onclick='closeDiv();'>X</a></td></tr>";

			var anlegendiv = document.getElementById("nachpruefung_div");
			var y = getOffset('y'); y = y+50;
			anlegendiv.style.top = y+"px";
			var x =	getOffset('x'); x = x+300;
			anlegendiv.style.left = x+"px";
			str += "<tr><td colspan='2'><b><?php echo $p->t('benotungstool/pruefungAnlegenFuer');?> "+nn+" "+vn+":</b></td></tr>";
			str += "<tr><td><?php echo $p->t('global/datum');?>:</td>";
			str += "<td><input type='hidden' name='uid' value='"+uid+"'>";
			str += "<input type='hidden' name='le_id' value='"+lehreinheit_id+"'>";
			str += "<input type='hidden' name='typ' value='"+typ+"'>";
			str += "<input type='text' id='pruefungsdatum' name='datum' size='10' value='"+datum+"'> [DD.MM.YYYY]</td></tr>";

		<?php
		if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
		{
			echo 'str += "<tr><td>' . $p->t('benotungstool/punkte') . ':</td>";';
			echo 'str += "<td><input type=\'text\' id=\'pruefungspunkte\' name=\'punkte\' ';
			echo 'size=\'10\' value=\'"+punkte+"\' oninput=\'PruefungPunkteEingabe()\'></td></tr>";';
		}
		?>

		str += "<tr><td><?php echo $p->t('benotungstool/note');?>:</td>";

		str +='<?php
		echo '<td><select name="note" id="pruefungnoteselect">';
		echo '<option value="">-- keine Auswahl --</option>';
		foreach ($noten_obj->result as $row_note)
		{
			if ($row_note->lehre && $row_note->aktiv)
				echo '<option value="' . $row_note->note . '">' . $row_note->bezeichnung_mehrsprachig[$sprache] . '</option>';
		}
		echo '</select></td>';
		?>';
		str += "</tr><tr><td colspan='2' align='center'>";
		str += "<input id='pruefungsnotensave' type='button' name='speichern'";
		str +="value='<?php echo $p->t('global/speichern');?>' onclick='pruefungSpeichern();' ></td></tr>";
		str += "</table></form>";
		anlegendiv.innerHTML = str;
		anlegendiv.style.visibility = "visible";
		$('#pruefungsdatum').datepicker();
		$('#pruefungnoteselect').val(note);
	}

	// **********************************************
	// * Speichern der Pruefung
	// **********************************************
	function pruefungSpeichern()
	{
		var note = document.nachpruefung_form.note.value;
		var typ=document.nachpruefung_form.typ.value;
		if (document.nachpruefung_form.punkte)
			var punkte = document.nachpruefung_form.punkte.value;
		else
			var punkte='';
		var datum = document.nachpruefung_form.datum.value;
		var datum_test = datum.split(".");
		if (datum_test[0].length != 2 || datum_test[1].length != 2 	|| datum_test[2].length!=4
			|| isNaN(datum_test[2]) || datum_test[1]>12 || datum_test[1]<1 || datum_test[0]>31 || datum_test[0]<1)
			alert("Das Datum entspricht nicht dem Format TT.MM.JJJJ!");
		else
		{
			var anlegendiv = document.getElementById("nachpruefung_div");

			var note = document.nachpruefung_form.note.value;
			if (note == "" || isNaN(note))
			{
				document.nachpruefung_form.note.value = "9";
				note = "9";
			}
			var uid = document.nachpruefung_form.uid.value;
			var lehreinheit_id = document.nachpruefung_form.le_id.value;

			var jetzt = new Date();
			var ts = jetzt.getTime();
			var url= '<?php echo "nachpruefungeintragen.php?lvid=$lvid&stsem=$stsem"; ?>';
			url += '&submit=1';
			url += '&student_uid='+uid;
			url += '&note='+note;
			url += '&datum='+datum;
			url += '&lehreinheit_id_pr='+lehreinheit_id;
			url += '&punkte='+punkte;
			url += '&typ='+typ;
			url += '&'+ts;


			$.ajax({
				type:"GET",
				url: url,
				success:function(result)
				{
					var anlegendiv = document.getElementById("nachpruefung_div");
					var datum = document.nachpruefung_form.datum.value;
					var note = document.nachpruefung_form.note.value;
					var typ = document.nachpruefung_form.typ.value;
					if (document.nachpruefung_form.punkte)
						var punkte = document.nachpruefung_form.punkte.value;
					else
						var punkte='';
					var uid = document.nachpruefung_form.uid.value;
					var lehreinheit_id = document.nachpruefung_form.le_id.value;
					var resp = result;

					if (resp == "neu" || resp == "update" || resp == "update_f" || resp == "update_pr")
					{
						if (resp != "update_pr")
						{
							notentd = document.getElementById("note_"+uid);
							while (notentd.childNodes.length>0)
							{
								notentd.removeChild(notentd.lastChild);
							}
							if (punkte!='')
								var notentext = noten_array[note]+' ('+punkte+')';
							else
								var notentext = noten_array[note];
							notenode = document.createTextNode(notentext);
							notentd.appendChild(notenode);
						}
						notenstatus = document.getElementById("status_"+uid);
						changedwarning = document.getElementById("messagesdiv");
						warningdiv = document.getElementById("notenWarning");

						if (resp == "update_f" || resp == "update")
						{
							notenstatus.innerHTML = "<img src='../../../../skin/images/changed.png'>";
							if (warningdiv != null)
								warningdiv.parentNode.removeChild(warningdiv); // Entfernt das Warning-Div
							changedwarning.innerHTML = '<div class="warning"><?php echo $p->t('benotungstool/geaenderteNotenVorhanden'); ?></div>';
						}
						document.getElementById("lvnoteneingabe_"+uid).style.visibility = "hidden";
						anlegendiv.innerHTML = "";
						anlegendiv.style.visibility = "hidden";
						var pruefhtml = "<table><tr><td class='td_datum'>"+datum+"</td>";
							pruefhtml += "<td class='td_note'>"+noten_array[note]+"</td>";
							pruefhtml += "<td><input type='button' name='anlegen'";
							pruefhtml +=" value='<?php echo $p->t('global/aendern'); ?>' ";
							pruefhtml +=" onclick='pruefungAnlegen(\""+uid+"\",\""+datum+"\",\""+note+"\",\""+lehreinheit_id+"\",\""+punkte+"\",\""+typ+"\")'>";
							pruefhtml += "</td></tr></table>";
						document.getElementById("span_"+typ+"_"+uid).innerHTML = pruefhtml;
					}
				},
				error:function(result)
				{
					alert('Request fehlgeschlagen');
				}
			});
		}
	}

 	function closeDiv()
 	{
 		var anlegendiv = document.getElementById("nachpruefung_div");
 		anlegendiv.innerHTML = "";
 		anlegendiv.style.visibility = "hidden";
 	}

 	function OnFreigabeSubmit()
	{
		if (document.getElementById('textbox-freigabe-passwort').value.length==0)
		{
			alert('Bitte geben Sie zuerst Ihr Passwort ein!');
			return false;
		}
		return true;
	}

	/**
	 * Wird bei der Punkteeingabe aufgerufen und laedt
	 * die dazupassende Noten anhand des Notenschluessels
	 */
	function PunkteEingabe(idx)
	{
		var punkte = $('#textbox-punkte-'+idx).val();
		punkte = punkte.replace(',','.');
		// Request absetzen und Note zu den Punkten holen
		if (punkte!='')
		{
			if (typeof(notenrequests_arr[idx])=='undefined')
				notenrequests_arr[idx]=0;
			notenrequests_arr[idx]=notenrequests_arr[idx]+1;
			$('#button-note-save-'+idx).prop('disabled',true);
			$.ajax({
				type:"POST",
				url:"lvgesamtnote_worker.php",
				data: { lehrveranstaltung_id: '<?php echo $lvid; ?>',
						punkte: punkte,
						work: 'getGradeFromPoints',
						studiensemester_kurzbz: '<?php echo $stsem;?>'
					},
				success:function(result)
				{
					note=result;
					notenrequests_arr[idx]=notenrequests_arr[idx]-1;

					var notendropdown = $('#dropdown-note-'+idx);
					notendropdown.val(note);
					notendropdown.prop('disabled',true);

					if (notenrequests_arr[idx]==0)
					{
						$('#button-note-save-'+idx).prop('disabled',false);
					}
	  			},
	  			error:function(result)
	  			{
					notenrequests_arr[idx]=notenrequests_arr[idx]-1;
					alert('Notenermittlung fehlgeschlagen');
	  			}
	  		});
		}
		else
		{
			var notendropdown = $('#dropdown-note-'+idx);
			notendropdown.prop('disabled',false);
		}
	}

	/**
	 * Wird bei der Punkteeingabe aufgerufen und laedt
	 * die dazupassende Noten anhand des Notenschluessels
	 */
	function PruefungPunkteEingabe()
	{
		var punkte = $('#pruefungspunkte').val();
		punkte = punkte.replace(',','.');

		// Request absetzen und Note zu den Punkten holen
		if (punkte!='')
		{
			notenrequests = notenrequests+1;
			$('#pruefungsnotensave').prop('disabled',true);
			$.ajax({
				type:"POST",
				url:"lvgesamtnote_worker.php",
				data: { lehrveranstaltung_id: '<?php echo $lvid; ?>',
						punkte: punkte,
						work: 'getGradeFromPoints',
						studiensemester_kurzbz: '<?php echo $stsem;?>'
					},
				success:function(result)
				{
					notenrequests = notenrequests-1;
					note=result;

					var notendropdown = $('#pruefungnoteselect');
					notendropdown.val(note);
					notendropdown.prop('disabled',true);

					if (notenrequests==0)
						$('#pruefungsnotensave').prop('disabled',false);
	  			},
	  			error:function(result)
	  			{
					notenrequests = notenrequests-1;
					if (notenrequests==0)
						$('#pruefungsnotensave').prop('disabled',false);
	  				alert('Noten ermittlung fehlgeschlagen');
	  			}
	  		});
		}
		else
		{
			var notendropdown = $('#pruefungnoteselect');
			notendropdown.prop('disabled',false);
		}
	}

	// ****
	// * Oeffnet ein Fenster fuer den Import von Noten aus dem Excel
	// ****
	function GradeImport()
	{
		var str = "<form name='gradeimport_form'><center><table style='width: 95%'>";
		str += "<tr><td colspan='2' align='right'><a href='#' onclick='closeDiv();'>X</a></td></tr>";
		var anlegendiv = document.getElementById("nachpruefung_div");
		var y = getOffset('y'); y = y+50; anlegendiv.style.top = y+"px";
		str += '<tr><td><div style="width: 400px;"><?php echo $p->t('benotungstool/importAnweisung');?>:</div></td>';
		str	+= '<td></td><tr><td><textarea style="width: 400px;" id="noteimporttextarea" name="notenimport"></textarea></td></tr>';
		str += "<tr><td><input type='button' name='speichern' value='<?php echo $p->t('global/speichern');?>' onclick='saveGradeBulk();'>";
		str += "</td><td></td></tr></table></center></form>";
		anlegendiv.innerHTML = str;
		anlegendiv.style.visibility = "visible";
		$('#noteimporttextarea').focus();
	}

	// ****
	// * Oeffnet ein Fenster fuer den Import von Noten für die Nachprüfung aus dem Excel
	// ****
	function GradeImportNachp(termin)
	{
		var str = "<form name='gradeimportNachp_form'><center><table style='width: 95%'>";
		str += "<tr><td colspan='2' align='right'><a href='#' onclick='closeDiv();'>X</a></td></tr>";
		var anlegendiv = document.getElementById("nachpruefung_div");
		var y = getOffset('y'); y = y+50; anlegendiv.style.top = y+"px";
		str += '<tr><td><div style="width: 400px;"><?php echo $p->t('benotungstool/importAnweisungNachp');?>:</div></td>';
		str	+= '<td></td><tr><td><textarea style="width: 400px;" id="noteimporttextareaNachp" name="notenimportNachp"></textarea></td></tr>';

		str += "<tr><td><input type='button' name='speichern' value='<?php echo $p->t('global/speichern');?>' onclick='saveGradeBulkNachp(\""+ termin +"\");'>";
		str += "</td><td></td></tr></table></center></form>";
		anlegendiv.innerHTML = str;
		anlegendiv.style.visibility = "visible";
		$('#noteimporttextareaNachp').focus();
	}

	// Speichert die Noten ueber den Import
	function saveGradeBulk()
	{
		data = $('#noteimporttextarea').val();
		closeDiv();

		//Reihen ermitteln
		var rows = data.split("\n");
		var i=0;
		var params='';
		alertMsg = '';

		var gradedata = {};
		var validGrades = '';

		<?php
		// If CIS_GESAMTNOTE_PUNKTE is false, check for valid grades
		// Fill Array $gradesArray with valid grades
		if (CIS_GESAMTNOTE_PUNKTE == false)
		{
			$gradesArray = array();
			foreach ($noten_obj->result as $row_note)
			{
				if ($row_note->lehre && $row_note->aktiv)
					$gradesArray[] = '"' . $row_note->anmerkung . '"';
			}
			// Output JS variable with valid grades
			echo 'var validGrades = [' . implode(',', $gradesArray) . '];';
		}
		?>

		var linenumber = 0;
		for(row in rows)
		{
			linenumber++;
			if( rows[row] == '' )
			{
				//skip empty lines
				continue;
			}
			zeile = rows[row].split("	");

			if( zeile.length < 2 )
			{
			  alertMsg = alertMsg + "Zeile " + linenumber + ': '
			  + 'Zu wenig Paramter - 2 erforderlich.  '
			  + 'Die Zeile wurde uebersprungen.' + "\n\n";
			  continue;
			}

			if (CIS_GESAMTNOTE_PUNKTE == false)
			{
				// check for valid grades
				if (validGrades.indexOf(zeile[1]) === -1)
				{
					alertMsg = alertMsg + "Zeile " + linenumber + ': '
						+ "Die Note "+zeile[1]+" ist nicht zulaessig. "
						+ "Die Zeile wurde uebersprungen. \n\n";
					continue;
				}
			}

			gradedata['matrikelnr_'+i]=zeile[0];
			if (CIS_GESAMTNOTE_PUNKTE)
			{
				gradedata['punkte_'+i]= zeile[1];
			}
			else
			{
				gradedata['note_'+i]= zeile[1];
			}

			i++;
		}

		if (alertMsg != "")
			alert(alertMsg);

		if (i>0)
		{

			var jetzt = new Date();
			var ts = jetzt.getTime();
			var url= '<?php echo "lvgesamtnoteeintragen.php?lvid=".urlencode($lvid)."&stsem=".urlencode($stsem); ?>';
			url += '&submit=1&'+ts;
			$.ajax({
				type:"POST",
				url: url,
				data: gradedata,
				success:function(result)
				{
					var resp = result;
					if (resp!='')
					{
						alert(resp);
					}
					window.location.reload();
	  			},
	  			error:function(result)
	  			{
	  				alert('Request fehlgeschlagen');
	  			}
	  		});

		}
		else
		{
			alert('<?php echo $p->t('benotungstool/hilfeImport');?>');
		}
	}

	// Speichert die Noten der Nachprüfung ueber den Import
	function saveGradeBulkNachp(typ)
	{
		data = $('#noteimporttextareaNachp').val();
		closeDiv();

		//Reihen ermitteln
		var rows = data.split("\n");
		var i=0;
		var params='';
		alertMsg = '';

		var gradedata = {};
		var validGrades = '';

		<?php
		// If CIS_GESAMTNOTE_PUNKTE is false, check for valid grades
		// Fill Array $gradesArray with valid grades
		if (CIS_GESAMTNOTE_PUNKTE == false)
		{
			$gradesArray = array();
			foreach ($noten_obj->result as $row_note)
			{
				if ($row_note->lehre && $row_note->aktiv)
					$gradesArray[] = '"' . $row_note->anmerkung . '"';
			}
			// Output JS variable with valid grades
			echo 'var validGrades = [' . implode(',', $gradesArray) . '];';
		}
		?>

		var linenumber = 0;
		for(row in rows)
		{
			linenumber++;
			if( rows[row] == '' )
			{
				//skip empty lines
				continue;
			}
			zeile = rows[row].split("	");

			if( zeile.length < 3 )
			{
			  alertMsg = alertMsg + "Zeile " + linenumber + ': '
			  + 'Zu wenig Paramter - 3 erforderlich.  '
			  + 'Die Zeile wurde uebersprungen.' + "\n\n";
			  continue;
			}

			if( zeile[1] == '' && zeile[2] == '' )
			{
				// ignore lines just copied from excel
				continue;
			}

			if( zeile[2] == '' )
			{
				alertMsg = alertMsg + "Zeile " + linenumber + ': '
					+ "Die Note oder Punkte fehlen. "
					+ "Die Zeile wurde uebersprungen. \n\n";
				continue;
			}

			if (CIS_GESAMTNOTE_PUNKTE == false)
			{
				// check for valid grades
				if (validGrades.indexOf(zeile[2]) === -1)
				{
					alertMsg = alertMsg + "Zeile " + linenumber + ': '
						+ "Die Note "+zeile[2]+" ist nicht zulaessig. "
						+ "Die Zeile wurde uebersprungen. \n\n";
					continue;
				}
			}

			if( !zeile[1].match(/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/)  )
			{
				alertMsg = alertMsg + "Zeile " + linenumber + ': '
					+ "Das Datum "+zeile[1]+" fehlt oder ist nicht zulaessig. "
					+ "Die Zeile wurde uebersprungen. \n\n";
				continue;
			}

			gradedata['student_uid_'+i]=zeile[0];
			gradedata['datumNachp_'+i]=zeile[1];
			if (CIS_GESAMTNOTE_PUNKTE)
			{
				gradedata['punkte_'+i]= zeile[2];
			}
			else
			{
				gradedata['note_'+i]= zeile[2];
			}
			i++;
		}


		if (alertMsg != "")
			alert(alertMsg);

		if (i>0)
		{

			var jetzt = new Date();
			var ts = jetzt.getTime();
			var url= '<?php echo "nachpruefungeintragen.php?lvid=".urlencode($lvid)."&stsem=".urlencode($stsem); ?>';
			url += '&sammel=1';
			url += '&typ=' + typ;
			url += '&submit=1&'+ts;
			$.ajax({
				type:"POST",
				url: url,
				data: gradedata,
				success:function(result)
				{
					var resp = result;
					if (resp!='')
					{
						alert(resp);
					}
					window.location.reload();
					},
					error:function(result)
					{
						alert('Request Nachprüfung fehlgeschlagen');
					}
				});

		}
		else
		{
			alert('<?php echo $p->t('benotungstool/hilfeImport');?>');
		}
	}

//-->
</script>
</head>

<body>

<?php
// Schauen ob Kreuzerllisten vorhanden sind um ggf Noten von dort zu holen
$qry = "SELECT
			1
		FROM
			lehre.tbl_lehrveranstaltung
			JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
			JOIN campus.tbl_uebung USING(lehreinheit_id)
		WHERE
			studiensemester_kurzbz=" . $db->db_add_param($stsem) . " AND
			lehrveranstaltung_id=" . $db->db_add_param($lvid, FHC_INTEGER) . "
		UNION
		SELECT
			1
		FROM
			campus.tbl_legesamtnote
		WHERE
			lehreinheit_id in (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
								WHERE studiensemester_kurzbz=" . $db->db_add_param($stsem) . " AND
								lehrveranstaltung_id=" . $db->db_add_param($lvid, FHC_INTEGER) . ")

		";
$grade_from_kreuzerltool = false;
if ($result = $db->db_query($qry))
{
	if ($db->db_num_rows($result) > 0)
		$grade_from_kreuzerltool = true;
}
else
	die($p->t('global/fehleraufgetreten'));

// Kopfzeile

echo '
<table width="100%">
	<tr>
		<td>
			<h1>' . $p->t('benotungstool/gesamtnote') . '</h1>
			<h2>' . $lv_obj->bezeichnung_arr[$sprache] . '</h2>
		</td>
		<td align="right">';

// Studiensemester laden
$stsem_obj = new studiensemester();
if ($stsem == '')
	$stsem = $stsem_obj->getaktorNext();
$stsem_obj->getAll();

// Studiensemester DropDown
$stsem_content = $p->t('global/studiensemester');
$stsem_content .= ": <SELECT name='stsem' onChange=\"self.location=this.options[this.selectedIndex].value\">";
foreach ($stsem_obj->studiensemester as $studiensemester)
{
	$selected = ($stsem == $studiensemester->studiensemester_kurzbz ? 'selected' : '');
	$optionvalue = "lvgesamtnoteverwalten.php?lvid=$lvid&stsem=$studiensemester->studiensemester_kurzbz";

	$stsem_content .= "<OPTION value='" . $optionvalue . "' $selected>
		$studiensemester->studiensemester_kurzbz
		</OPTION>\n";
}
$stsem_content .= "</SELECT>\n";

if (! $rechte->isBerechtigt('admin', 0)
	&& ! $rechte->isBerechtigt('admin', $lv_obj->studiengang_kz)
	&& ! $rechte->isBerechtigt('lehre', $lv_obj->studiengang_kz)
	&& ! $rechte->isBerechtigt('lehre', $lv_obj->oe_kurzbz))
{
	$qry = "SELECT
				lehreinheit_id
			FROM
				lehre.tbl_lehrveranstaltung
				JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
				JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
			WHERE
				tbl_lehrveranstaltung.lehrveranstaltung_id=" . $db->db_add_param($lvid, FHC_INTEGER) . "
				AND tbl_lehreinheit.studiensemester_kurzbz=" . $db->db_add_param($stsem) . "
				AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid=" . $db->db_add_param($user) . ';';

	if ($result = $db->db_query($qry))
	{
		if ($db->db_num_rows($result) == 0)
			die($p->t('global/keineBerechtigungFuerDieseSeite'));
	}
	else
	{
		die($p->t('global/fehleraufgetreten'));
	}
}
echo $stsem_content;
echo '
		</td>
	</tr>
	<tr>
		<td>
			<a href="' . $p->t('dms_link/dokuwikiGesamtnote') . '" class="Item" target="_blank">
			' . $p->t('global/anleitung') . '
			</a>';

if (defined('CIS_ANWESENHEITSLISTE_NOTENLISTE_ANZEIGEN') && CIS_ANWESENHEITSLISTE_NOTENLISTE_ANZEIGEN)
{
	$hrefpath = "../notenliste.xls.php?stg=$stg_obj->studiengang_kz&lvid=$lvid&stsem=$stsem";
	echo "<br><a class='Item' href='" . $hrefpath . "'>" . $p->t('benotungstool/notenlisteImport') . "</a>";
}

if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
{
	$onclickpath = "notenschluessel.php?lehrveranstaltung_id=$lvid&stsem=$stsem";
	$onclickoptions = "height=200, width=350, left=50, top=50, resizable=yes, status=no,";
	$onclickoptions .= "scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes";

	echo '<br>
		<a href="#" onclick="window.open(\'' . $onclickpath . '\',\'Grades\',\'' . $onclickoptions . '\'); return false;">
		' . $p->t('gesamtnote/notenschluesselanzeigen') . '</a>';
}
echo '</td></tr></table><br>';

$htmlstring = '';

$htmlstring .= '<div id="messagesdiv">';
if ($errormsg != '')
	$htmlstring .= '<div class="error">' . $errormsg . '</div>';

$htmlstring .= '</div>';
$htmlstring .= '<table width="100%" height="10px"><tr><td>';

// alle Pruefungen für die LV holen
$studpruef_arr = array();
$pr_all = new Pruefung();
if ($pr_all->getPruefungenLV($lvid, "Termin2", $stsem))
{
	if ($pr_all->result)
	{
		foreach ($pr_all->result as $pruefung)
		{
			$studpruef_arr[$pruefung->student_uid][$pruefung->lehreinheit_id]["note"] = $pruefung->note;
			$studpruef_arr[$pruefung->student_uid][$pruefung->lehreinheit_id]["punkte"] = $pruefung->punkte;
			$studpruef_arr[$pruefung->student_uid][$pruefung->lehreinheit_id]["datum"] = $datum_obj->formatDatum($pruefung->datum, 'd.m.Y');
		}
	}
}
$summe_t2 = count($studpruef_arr);

$studpruef_arr_t3 = array();
$pr_all = new Pruefung();
if ($pr_all->getPruefungenLV($lvid, "Termin3", $stsem))
{
	if ($pr_all->result)
	{
		foreach ($pr_all->result as $pruefung)
		{
			$studpruef_arr_t3[$pruefung->student_uid][$pruefung->lehreinheit_id]["note"] = $pruefung->note;
			$studpruef_arr_t3[$pruefung->student_uid][$pruefung->lehreinheit_id]["punkte"] = $pruefung->punkte;
			$studpruef_arr_t3[$pruefung->student_uid][$pruefung->lehreinheit_id]["datum"] = $datum_obj->formatDatum($pruefung->datum, 'd.m.Y');
		}
	}
}
$summe_t3 = count($studpruef_arr_t3);

$studpruef_komm = array();
$pr_komm = new Pruefung();
if ($pr_komm->getPruefungenLV($lvid, "kommPruef", $stsem))
{
	if ($pr_komm->result)
	{
		foreach ($pr_komm->result as $kpruefung)
		{
			$studpruef_komm[$kpruefung->student_uid][$kpruefung->lehreinheit_id]["note"] = $kpruefung->note;
			$studpruef_komm[$kpruefung->student_uid][$kpruefung->lehreinheit_id]["punkte"] = $kpruefung->punkte;
			$studpruef_komm[$kpruefung->student_uid][$kpruefung->lehreinheit_id]["datum"] = $datum_obj->formatDatum($kpruefung->datum, 'd.m.Y');
		}
	}
}
$summe_komm = count($studpruef_komm);

// Studentenliste

$htmlstring .= '<table class="gradetable">';
$htmlstring .= "
		<tr>
			<th></th>
			<th>" . $p->t('global/uid') . "</th>
			<th>" . $p->t('global/nachname') . "</th>
			<th>" . $p->t('global/vorname') . "</th>";

if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)
{
	$htmlstring .= "<th>" . $p->t('benotungstool/teilnoten') . "</th>";
}

$htmlstring .= "<th>" . $p->t('benotungstool/punkte') . ' / ' . $p->t('benotungstool/note') . "</th>
			<th rowspan=2>" . $p->t('benotungstool/lvNote') . "<br>
				<input type='button' onclick='GradeImport()' value='" . $p->t('benotungstool/importieren') . "'>
			</th>
			<th align='right' rowspan=2>
				<form name='freigabeform' method='POST' onsubmit='return OnFreigabeSubmit()'
					action='" . $_SERVER['PHP_SELF'] . "?lvid=$lvid&lehreinheit_id=$lehreinheit_id&stsem=$stsem' >
				<input type='hidden' name='freigabe' value='1'>
				<span style='white-space:nowrap;'>" . $p->t('global/passwort') . ":
					<input type='password' size='8' id='textbox-freigabe-passwort' name='passwort'>
				</span>
				<br>
				<input type='submit' name='frei' value='" . $p->t('benotungstool/freigabe') . "'>
				</form>
			</th>
			<th>" . $p->t('benotungstool/zeugnisnote') . "</th>";

if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
	$htmlstring .= "<th colspan='2'><br>" . $p->t('benotungstool/nachpruefung') . "<br>
	<input type='button' onclick='GradeImportNachp(\"Termin2\")' value='" . $p->t('benotungstool/importieren') . "'>
	</th>";
}
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
	$htmlstring .= "<th colspan='2' nowrap><br>" . $p->t('benotungstool/nachpruefung2') . "<br>
	<input type='button' onclick='GradeImportNachp(\"Termin3\")' value='" . $p->t('benotungstool/importieren') . "'>
	</th>";
}
if (defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
{
	$htmlstring .= "<th colspan='2'>" . $p->t('benotungstool/kommissionellePruefung') . "</th>";
}
$htmlstring .= "

		</tr>
			<tr>
				<th colspan='9'>&nbsp;</th>";
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
	$htmlstring .= "<th colspan='2'>
				<table>
				<tr>
						<td class='td_datum'>" . $p->t('global/datum') . "</td>
						<td class='td_note'>" . $p->t('benotungstool/note') . "</td>
						<td></td>
				</tr>
				</table>
		</th>";
}

if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
	$htmlstring .= "<th colspan='2'>
		<table>
		<tr>
			<td class='td_datum'>" . $p->t('global/datum') . "</td>
			<td class='td_note'>" . $p->t('benotungstool/note') . "</td>
			<td></td>
		</tr>
		</table>
	</th>";
}

if (defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
{
	$htmlstring .= "
		<th colspan='2'>
				<table>
				<tr>
						<td class='td_datum'>" . $p->t('global/datum') . "</td>
						<td class='td_note'>" . $p->t('benotungstool/note') . "</td>
						<td></td>
				</tr>
				</table>
		</th>";
}
$htmlstring .= "
</tr>
";

if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)
{
	// studentenquery
	$qry_stud = "SELECT
					DISTINCT uid, vorname, nachname, matrikelnr
				FROM
					campus.vw_student_lehrveranstaltung
					JOIN campus.vw_student USING(uid)
				WHERE
					studiensemester_kurzbz = ". $db->db_add_param($stsem). "
					AND lehrveranstaltung_id = ". $db->db_add_param($lvid). "
				ORDER BY nachname, vorname ";

	if ($result_stud = $db->db_query($qry_stud))
	{
		$i = 1;
		$errorshown = false;
		$summe_stud = $db->db_num_rows($result_stud);

		//Ergänzung um Mobility-Eintrag (d.d.)
		while ($row_stud = $db->db_fetch_object($result_stud))
		{
			$grades[$row_stud->uid]['vorname'] = $row_stud->vorname;
			$grades[$row_stud->uid]['nachname'] = $row_stud->nachname;

			$student = new student();
			$student->load($row_stud->uid);
			$student->result[]= $student;
			$prestudent_id = $student->prestudent_id;

			$mobility = new mobilitaet();
			$mobility->loadPrestudent($prestudent_id);
			$output = $mobility->result;
			$eintrag = '';
			foreach ($output as $k)
			{
				if(($k->mobilitaetstyp_kurzbz == 'GS') && ($k->studiensemester_kurzbz == $stsem))
			 	$eintrag = ' (d.d.)';
			}
			$grades[$row_stud->uid]['mobility'] = $eintrag;

			// Noten aus Uebungstool
			$le = new lehreinheit();
			$le->load_lehreinheiten($lvid, $stsem);
			foreach ($le->lehreinheiten as $l)
			{
				$legesamtnote = new legesamtnote($l->lehreinheit_id);

				if ($legesamtnote->load($row_stud->uid, $l->lehreinheit_id))
				{
					$gewicht = $l->gewicht;
					if ($l->gewicht == '')
						$gewicht = 1;

					$grades[$row_stud->uid]['grades'][] = array(
						'grade' => $legesamtnote->note,
						'points' => null,
						'weight' => $gewicht,
						'text' => $legesamtnote->note . ' (Uebungstool ' . $l->lehreinheit_id . ')'
					);
				}
			}
		}
	}

	// Load Addons to modify grades
	$addon_obj = new addon();
	if ($addon_obj->loadAddons())
	{
		if (count($addon_obj->result) > 0)
		{
			foreach ($addon_obj->result as $row)
			{
				if (file_exists('../../../../addons/' . $row->kurzbz . '/cis/grades.inc.php'))
					include('../../../../addons/' . $row->kurzbz . '/cis/grades.inc.php');
			}
		}
	}

	$anzahlChanged = 0;
	foreach ($grades as $uid => $data)
	//Ausgabe Array
	{
		$htmlstring .= '<tr class="liste' . ($i % 2) . '">
			<td><a href="mailto:' . $uid . '@' . DOMAIN . '"><img src="../../../../skin/images/button_mail.gif"></a></td>
			<td>' . $db->convert_html_chars($uid) . '</td>
			<td id= '. $uid. "_nn". '>' . $db->convert_html_chars($data['nachname']) . '</td>
			<td id= '. $uid. "_vn". '>' . $db->convert_html_chars($data['vorname']) .  $db->convert_html_chars($data['mobility']) .'</td>';

		// Bereits eingetragene Note ermitteln
		if ($lvgesamtnote = new lvgesamtnote($lvid, $uid, $stsem))
		{
			$note_lv = $lvgesamtnote->note;
			$punkte_lv = $lvgesamtnote->punkte;
		}
		else
		{
			$note_lv = null;
			$punkte_lv = null;
		}

		$notensumme = 0;
		$notensumme_gewichtet = 0;
		$gewichtsumme = 0;
		$punktesumme = 0;
		$punktesumme_gewichtet = 0;
		$anzahlnoten = 0;
		$negativeteilnote = false;
		$note_zusatztext = '';
		$note_zusatztext_tooltip = '';
		$ueberschreibbar = false; //Damit keine Notice Fehler kommt muss Variable bei jeden Schleifendurchgang neue gesetzt und berechnet werden.

		if (isset($data['grades']))
		{
			// Teilnoten summieren und Notenvorschlag berechnen
			foreach ($data['grades'] as $kex => $row_grades)
			{
				if (is_numeric($row_grades['grade']) || (is_null($row_grades['grade']) && is_numeric($row_grades['points'])))
				{
					$notensumme += $row_grades['grade'];
					$punktesumme += $row_grades['points'];
					$notensumme_gewichtet += $row_grades['grade'] * $row_grades['weight'];
					$punktesumme_gewichtet += $row_grades['points'] * $row_grades['weight'];
					$gewichtsumme += $row_grades['weight'];
					$anzahlnoten += 1;
				}
				$note_zusatztext_tooltip .= $row_grades['text'] . "\n";

				if (isset($noten_array[$row_grades['grade']]) && ! $noten_array[$row_grades['grade']]['positiv'])
				{
					$negativeteilnote = true;
					$note_zusatztext .= '<span class="negative">' . $row_grades['text'] . '</span>';
				}
				else
				{
					$note_zusatztext .= $row_grades['text'];
				}
				$note_zusatztext .= '<br>';
			}
		}

		$punkte_vorschlag = '';
		if (! is_null($note_lv))
		{
			$note_vorschlag = $note_lv;
		}
		elseif ($anzahlnoten > 0)
		{
			if (CIS_GESAMTNOTE_PUNKTE)
			{
				if (defined('CIS_GESAMTNOTE_GEWICHTUNG') && CIS_GESAMTNOTE_GEWICHTUNG)
				{
					// Lehreinheitsgewichtung
					$punkte_vorschlag = round($punktesumme_gewichtet / $gewichtsumme, 2);
					$notenschluessel = new notenschluessel();
					$note_vorschlag = $notenschluessel->getNote($punkte_vorschlag, $lvid, $stsem);
				}
				else
				{
					$punkte_vorschlag = round($punktesumme / $anzahlnoten, 2);
					$notenschluessel = new notenschluessel();
					$note_vorschlag = $notenschluessel->getNote($punkte_vorschlag, $lvid, $stsem);
				}
			}
			else
			{
				if (defined('CIS_GESAMTNOTE_GEWICHTUNG') && CIS_GESAMTNOTE_GEWICHTUNG)
				{
					$note_vorschlag = round($notensumme_gewichtet / $gewichtsumme);
				}
				else
				{
					$note_vorschlag = round($notensumme / $anzahlnoten);
				}
			}
		}
		else
		{
			$note_vorschlag = null;
		}

		if ($zeugnisnote = new zeugnisnote($lvid, $uid, $stsem))
			$znote = $zeugnisnote->note;
		else
			$znote = null;

		if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)
		{
			$htmlstring .= '<td style="white-space: nowrap;" title="' . $note_zusatztext_tooltip . '">';
			$htmlstring .= $note_zusatztext . '&nbsp;</td>';
		}

		if (key_exists($uid, $studpruef_arr))
			$hide = "style='display:none;visibility:hidden;'";
		else
			$hide = "style='display:block;visibility:visible;'";

		if (! defined('CIS_GESAMTNOTE_UEBERSCHREIBEN') || CIS_GESAMTNOTE_UEBERSCHREIBEN || (! CIS_GESAMTNOTE_UEBERSCHREIBEN && is_null($znote)))
		{
			$htmlstring .= "<td valign='bottom' nowrap>
					<form name='$uid' id='$uid' method='POST'
						action='" . $_SERVER['PHP_SELF'] . "?lvid=$lvid&lehreinheit_id=$lehreinheit_id&stsem=$stsem'>
						<span id='lvnoteneingabe_" . $uid . "' " . $hide . ">
						<input type='hidden' name='student_uid' value='$uid'>";

			// nur überschreibbare Noten können geändert werden
			$ueberschreibbar = true;

			if (isset($noten_array[$znote]['lkt_ueberschreibbar']) && $noten_array[$znote]['lkt_ueberschreibbar'] === false)
				$ueberschreibbar = false;

			// Punkte
			if (CIS_GESAMTNOTE_PUNKTE)
			{
				$htmlstring .= '
				<input type="text"
					name="punkte"
					id="textbox-punkte-' . $i . '"
					value="' . $punkte_vorschlag . '"
					size="3"';

				if ($ueberschreibbar)
					$htmlstring .= ' oninput="PunkteEingabe(' . $i . ')"';
				else
					$htmlstring .= ' disabled="disabled"';

				$htmlstring .= '/>';
			}

			// Noten DropDown
			if (($punkte_vorschlag != '' && CIS_GESAMTNOTE_PUNKTE) || $ueberschreibbar == false)
				$disabled = 'disabled="disabled"';
			else
				$disabled = '';
			$htmlstring .= '<select name="note" id="dropdown-note-' . $i . '" ' . $disabled . '>';
			$htmlstring .= '<option value="">-- keine Auswahl --</option>';
			foreach ($noten_obj->result as $row_note)
			{
				if ($row_note->note == $note_vorschlag)
					$selected = 'selected';
				else
					$selected = '';

				if ($row_note->lehre && $row_note->aktiv)
					$htmlstring .= '<option value="' . $row_note->note . '" ' . $selected . '>' . $row_note->bezeichnung_mehrsprachig[$sprache] . '</option>';
			}
			$htmlstring .= '</select>';
			$htmlstring .= "
					<input type='hidden' name='note_orig' value='$note_lv'>";
			if ($ueberschreibbar)
			{
				$htmlstring .= "<input type='button' id='button-note-save-" . $i . "' value='->' onclick=\"saveLVNote('" . $uid . "');\">";
			}
			$htmlstring .= "</span>
						</form></td>";
		}
		else
		{
			$htmlstring .= '<td></td>';
		}

		if (isset($noten_array[$note_lv]) && $noten_array[$note_lv]['positiv'] == false)
			$negmarkier = ' class="negative"';
		else
			$negmarkier = "";

		// LV Note
		$htmlstring .= '<td align="center" id="note_' . $uid . '"><span ' . $negmarkier . '>';
		if (isset($noten_array[$note_lv]))
			$htmlstring .= $noten_array[$note_lv]['bezeichnung_mehrsprachig'][$sprache];
		if ($punkte_lv != '')
			$htmlstring .= ' (' . number_format($punkte_lv, 2) . ')';
		$htmlstring .= '</span></td>';

		// status
		$htmlstring .= "<td align='center' id='status_$uid'>";
		if (! $lvgesamtnote->freigabedatum)
		{
			if (key_exists($uid, $studpruef_arr))
			{
				$htmlstring .= "<img src='../../../../skin/images/changed.png'>";
				$anzahlChanged ++;
			}
			else
				$htmlstring .= "<img src='../../../../skin/images/offen.png'>";
		}
		elseif ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum)
		{
			$htmlstring .= "<img src='../../../../skin/images/changed.png'>";
			$anzahlChanged ++;
		}
		else
			$htmlstring .= "<img src='../../../../skin/images/ok.png'>";

		$htmlstring .= "</td>";
		if (($znote) && ($note_lv != $znote))
			$stylestr = " style='color:red; border-color:red; border-style:solid; border-width:1px;'";
		else
			$stylestr = "";

		// Zeugnisnote
		$htmlstring .= "<td" . $stylestr . " align='center'>";
		if (isset($noten_array[$znote]))
			$htmlstring .= $noten_array[$znote]['bezeichnung_mehrsprachig'][$sprache];
		$htmlstring .= "</td>";

		if (isset($noten_array[$znote]) && $noten_array[$znote]['positiv'] == false)
			$summe_ng ++;

		if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
		{
			// Pruefung 2. Termin
			if (key_exists($uid, $studpruef_arr))
			{
				$htmlstring .= "<td colspan='2'>";
				$htmlstring .= "<span id='span_Termin2_" . $uid . "'>";
				$htmlstring .= "<table>";
				$le_id_arr = array();
				$le_id_arr = array_keys($studpruef_arr[$uid]);
				foreach ($le_id_arr as $le_id_stud)
				{
					$pr_note = $studpruef_arr[$uid][$le_id_stud]["note"];
					$pr_punkte = $studpruef_arr[$uid][$le_id_stud]["punkte"];
					$pr_datum = $studpruef_arr[$uid][$le_id_stud]["datum"];
					$pr_le_id = $le_id_stud;

					if ($pr_punkte != '')
					{
						$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung_mehrsprachig'][$sprache];
						$pr_notenbezeichnung .= ' (' . number_format($pr_punkte, 2) . ')';
					}
					else
						$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung_mehrsprachig'][$sprache];

					$onclick = "pruefungAnlegen('" . $uid . "','" . $pr_datum . "','" . $pr_note . "',";
					$onclick .= "'" . $pr_le_id . "','" . $pr_punkte . "')";

					$htmlstring .= '<tr>
							<td class="td_datum">' . $pr_datum . '</td>
							<td class="td_note">' . $pr_notenbezeichnung . '</td>
							<td>';
					if ($ueberschreibbar)
					{
						$htmlstring .=
						'<input type="button"
									name="anlegen"
									value="' . $p->t('global/aendern') . '"
									onclick="' . $onclick . '">';
					}
					$htmlstring .=
							'<td>
						</tr>';
				}
				$htmlstring .= "</table>";
				$htmlstring .= "</span>";
				$htmlstring .= "</td>";
			}
			else
			{
				if (! is_null($note_lv) || ! is_null($znote))
				{
					$htmlstring .= "<td colspan='2'><span id='span_Termin2_" . $uid . "'>";
					if ($ueberschreibbar)
					{
						$htmlstring .=
							"<input type='button'
							name='anlegen'
							value='" . $p->t('benotungstool/anlegen') . "'
							onclick='pruefungAnlegen(\"" . $uid . "\",\"\",\"\",\"\",\"\")'>";
					}
					$htmlstring .= "</span></td>";
				}
				else
				{
					$htmlstring .= "<td colspan='2'></td>";
				}
			}
		}

		if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
		{
			// Pruefung 3. Termin
			if (key_exists($uid, $studpruef_arr_t3))
			{
				$htmlstring .= "<td colspan='2'>";
				$htmlstring .= "<span id='span_Termin3_" . $uid . "'>";
				$htmlstring .= "<table>";
				$le_id_arr = array();
				$le_id_arr = array_keys($studpruef_arr_t3[$uid]);
				foreach ($le_id_arr as $le_id_stud)
				{
					$pr_note = $studpruef_arr_t3[$uid][$le_id_stud]["note"];
					$pr_punkte = $studpruef_arr_t3[$uid][$le_id_stud]["punkte"];
					$pr_datum = $studpruef_arr_t3[$uid][$le_id_stud]["datum"];
					$pr_le_id = $le_id_stud;

					if ($pr_punkte != '')
					{
						$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung_mehrsprachig'][$sprache];
						$pr_notenbezeichnung .= ' (' . number_format($pr_punkte, 2) . ')';
					}
					else
						$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung_mehrsprachig'][$sprache];

					$onclick = "pruefungAnlegen('" . $uid . "',";
					$onclick .= "'" . $pr_datum . "','" . $pr_note . "','" . $pr_le_id . "','" . $pr_punkte . "','Termin3')";

					$htmlstring .= '<tr>
							<td class="td_datum">' . $pr_datum . '</td>
							<td class="td_note">' . $pr_notenbezeichnung . '</td>
							<td>
								<input type="button"
									name="anlegen"
									value="' . $p->t('global/aendern') . '"
									onclick="' . $onclick . '">
							<td>
						</tr>';
				}
				$htmlstring .= "</table>";
				$htmlstring .= "</span>";
				$htmlstring .= "</td>";
			}
			else
			{
				if ((! is_null($note_lv) || ! is_null($znote)) && $ueberschreibbar)
				{
					$htmlstring .= "
					<td colspan='2'>
						<span id='span_Termin3_" . $uid . "'>
							<input
								type='button'
								name='anlegen'
								value='" . $p->t('benotungstool/anlegen') . "'
								onclick='pruefungAnlegen(\"" . $uid . "\",\"\",\"\",\"\",\"\",\"Termin3\")'>
						</span>
					</td>";
				}
				else
					$htmlstring .= "<td colspan='2'></td>";
			}
		}

		if (defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
		{
			// komm Pruefung
			if (key_exists($uid, $studpruef_komm))
			{
				$htmlstring .= "<td colspan='2'>";
				$htmlstring .= "<span id='span_" . $uid . "'>";
				$htmlstring .= "<table>";
				$le_id_arr = array();
				$le_id_arr = array_keys($studpruef_komm[$uid]);
				foreach ($le_id_arr as $le_id_stud)
				{
					$pr_note = $studpruef_komm[$uid][$le_id_stud]["note"];
					$pr_punkte = $studpruef_komm[$uid][$le_id_stud]["punkte"];
					$pr_datum = $studpruef_komm[$uid][$le_id_stud]["datum"];
					$pr_le_id = $le_id_stud;

					if ($pr_punkte != '')
					{
						$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung_mehrsprachig'][$sprache];
						$pr_notenbezeichnung .= ' (' . number_format($pr_punkte, 2) . ')';
					}
					else
						$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung_mehrsprachig'][$sprache];

					$htmlstring .= '
					<tr>
							<td class="td_datum">' . $pr_datum . '</td>
							<td class="td_note">' . $pr_notenbezeichnung . '</td>
					</tr>';
				}
				$htmlstring .= "</table>";
				$htmlstring .= "</span>";
				$htmlstring .= "</td>";
			}
			else
			{
				$htmlstring .= "<td colspan='2'></td>";
			}
		}

		$htmlstring .= "</tr>";
		$i ++;
	}
}

// Fusszeile
$htmlstring .= "
	<tr style='font-weight:bold;' align='center'>
		<th style='font-weight:bold;'>&Sigma;</th>
		<th style='font-weight:bold;' title='" . $p->t('benotungstool/anzahlDerStudenten') . "'>$summe_stud</th>";
if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && (! CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE))
{
	$htmlstring .= "<th colspan='5'></td>";
}
else
{
	$htmlstring .= "<th colspan='6'></td>";
}
$htmlstring .= "<th style='color:red; font-weight:bold;' title='" . $p->t('benotungstool/anzahlNegativerBeurteilungen') . "'>
	" . $summe_ng . "</th>";

if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
	$htmlstring .= "<th style='font-weight:bold;' colspan='2' title='" . $p->t('benotungstool/anzahlNachpruefungen') . "'>
	" . $summe_t2 . "</th>";
}
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
	$htmlstring .= "<th style='font-weight:bold;' colspan='2' title='" . $p->t('benotungstool/anzahlNachpruefungen') . "'>
	" . $summe_t3 . "</th>";
}
if (defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
{
	$htmlstring .= "<th style='font-weight:bold;' colspan='2' title='" . $p->t('benotungstool/anzahlKommisionellePruefungen') . "'>
	" . $summe_komm . "</th>";
}
$htmlstring .= "
	</tr>
</table>
</td></tr>

</table>
";
if ($anzahlChanged > 0)
	echo '<div id="notenWarning" class="warning">' . $p->t('benotungstool/geaenderteNotenVorhanden') . '</div>';

echo $htmlstring;
?>

<div id="nachpruefung_div"></div>

<div id="legende">
	<hr>
	<h3>Legende</h2>
	<p>(d.d.)... Double Degree Program</p>
</div>

</body>
</html>
