<?php
	requirePHPLib('form');

	if (!Auth::check() && UOJConfig::$data['switch']['force-login']) {
		redirectToLogin();
	}

	if (!isset($_COOKIE['bootstrap4'])) {
		$REQUIRE_LIB['bootstrap5'] = '';
	}

	$upcoming_contest_name = null;
	$upcoming_contest_href = null;
	$rest_second = 1000000;
	function echoContest($contest) {
		global $myUser, $upcoming_contest_name, $upcoming_contest_href, $rest_second, $REQUIRE_LIB;

		$a_class = ' ';

		if (isset($REQUIRE_LIB['bootstrap5'])) {
			$a_class = ' class="text-decoration-none" ';
		}
		
		$contest_name_link = <<<EOD
<a $a_class href="/contest/{$contest['id']}">{$contest['name']}</a>
EOD;
		genMoreContestInfo($contest);
		if ($contest['cur_progress'] == CONTEST_NOT_STARTED) {
			$cur_rest_second = $contest['start_time']->getTimestamp() - UOJTime::$time_now->getTimestamp();
			if ($cur_rest_second < $rest_second) {
				$upcoming_contest_name = $contest['name'];
				$upcoming_contest_href = "/contest/{$contest['id']}";
				$rest_second = $cur_rest_second;
			}
			if ($myUser != null && hasRegistered($myUser, $contest)) {
				$contest_name_link .= '<sup><a '.$a_class.' style="color:green">'.UOJLocale::get('contests::registered').'</a></sup>';
			} else {
				$contest_name_link .= '<sup><a '.$a_class.' style="color:red" href="/contest/'.$contest['id'].'/register">'.UOJLocale::get('contests::register').'</a></sup>';
			}
		} elseif ($contest['cur_progress'] == CONTEST_IN_PROGRESS) {
			$contest_name_link .= '<sup><a '.$a_class.' style="color:blue" href="/contest/'.$contest['id'].'">'.UOJLocale::get('contests::in progress').'</a></sup>';
		} elseif ($contest['cur_progress'] == CONTEST_PENDING_FINAL_TEST) {
			$contest_name_link .= '<sup><a '.$a_class.' style="color:blue" href="/contest/'.$contest['id'].'">'.UOJLocale::get('contests::pending final test').'</a></sup>';
		} elseif ($contest['cur_progress'] == CONTEST_TESTING) {
			$contest_name_link .= '<sup><a '.$a_class.' style="color:blue" href="/contest/'.$contest['id'].'">'.UOJLocale::get('contests::final testing').'</a></sup>';
		} elseif ($contest['cur_progress'] == CONTEST_FINISHED) {
			$contest_name_link .= '<sup><a '.$a_class.'style="color:grey" href="/contest/'.$contest['id'].'/standings">'.UOJLocale::get('contests::ended').'</a></sup>';
		}
		
		$last_hour = round($contest['last_min'] / 60, 2);
		
		$click_zan_block = getClickZanBlock('C', $contest['id'], $contest['zan']);
		echo '<tr>';
		echo '<td>', $contest_name_link, '</td>';
		echo '<td>', '<a'.$a_class.'href="'.HTML::timeanddate_url($contest['start_time'], array('duration' => $contest['last_min'])).'">'.$contest['start_time_str'].'</a>', '</td>';
		echo '<td>', UOJLocale::get('hours', $last_hour), '</td>';
		echo '<td>', '<a'.$a_class.'href="/contest/'.$contest['id'].'/registrants">';
		
		if (isset($REQUIRE_LIB['bootstrap5'])) {
			echo '<i class="bi bi-person-fill"></i>';
		} else {
			echo '<span class="glyphicon glyphicon-user"></span>';
		}

		echo ' &times;'.$contest['player_num'].'</a>', '</td>';
		echo '<td>', '<div class="text-left">'.$click_zan_block.'</div>', '</td>';
		echo '</tr>';
	}
	?>
<?php echoUOJPageHeader(UOJLocale::get('contests')) ?>
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
<div class="d-flex justify-content-between">
<?php endif ?>
<h1 class="h2">
	<?= UOJLocale::get('contests') ?>
</h1>
<?php
if (isSuperUser($myUser)) {
	if (isset($REQUIRE_LIB['bootstrap5'])) {
		echo '<div class="text-end">';
	} else {
		echo '<div class="text-right">';
	}
	echo '<a href="/contest/new" class="btn btn-primary">'.UOJLocale::get('contests::add new contest').'</a>';
	echo '</div>';
}
	?>

<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
</div>
<?php endif ?>
<h4><?= UOJLocale::get('contests::current or upcoming contests') ?></h4>
<?php
			$table_header = '';
	$table_header .= '<tr>';
	$table_header .= '<th>'.UOJLocale::get('contests::contest name').'</th>';
	$table_header .= '<th style="width:15em;">'.UOJLocale::get('contests::start time').'</th>';
	$table_header .= '<th style="width:100px;">'.UOJLocale::get('contests::duration').'</th>';
	$table_header .= '<th style="width:100px;">'.UOJLocale::get('contests::the number of registrants').'</th>';
	$table_header .= '<th style="width:180px;">'.UOJLocale::get('appraisal').'</th>';
	$table_header .= '</tr>';

	$table_config = array('page_len' => 40);
	if (isset($REQUIRE_LIB['bootstrap5'])) {
		$table_config['div_classes'] = array('card', 'mb-3');
		$table_config['table_classes'] = array('table', 'uoj-table', 'mb-0', 'text-center');
	}
	echoLongTable(array('*'), 'contests', "status != 'finished'", 'order by start_time desc, id desc', $table_header,
		echoContest,
		$table_config
	);

	if ($rest_second <= 86400) {
		$notification = json_encode($upcoming_contest_name . " 已经开始了。是否要跳转到比赛页面?");
		echo <<<EOD
<div class="text-center bot-buffer-lg">
<div class="text-secondary">$upcoming_contest_name 倒计时</div>
<div id="contest-countdown"></div>
<script type="text/javascript">
$('#contest-countdown').countdown($rest_second, function() {
	if (confirm($notification)) {
		window.location.href = "$upcoming_contest_href";
	}
});
</script>
</div>
EOD;
	}
	?>

<h4><?= UOJLocale::get('contests::ended contests') ?></h4>
<?php
	echoLongTable(array('*'), 'contests', "status = 'finished'", 'order by start_time desc, id desc', $table_header,
		echoContest,
		$table_config
	);
	?>
<?php echoUOJPageFooter() ?>