<?php
require_once('common.inc.php');
require_once('form.inc.php');
require_once('user.inc.php');
require_once('incomplete.inc.php');
require_once('project.inc.php');
require_once('filter.inc.php');
require_once('email.inc.php');
require_once('awards.inc.php');
require_once('committee/judges.inc.php');

$mysqli = sfiab_init('committee');

$u = user_load($mysqli);

$awards = award_load_all($mysqli);
$projects = projects_load_all($mysqli);
$jteams = jteams_load_all($mysqli);

/* Link div1 jteams to projects */
foreach($jteams as &$jteam) {
	if($jteam['round'] == 0 && $awards[$jteam['award_id']]['type'] == 'divisional') {
		foreach($jteam['project_ids'] as $pid) {
			if(!array_key_exists($pid, $projects)) {
				print("WARNING: Project $pid is assigned to a jteam but doesn't exist!");
				continue;
			}
			$projects[$pid]['round_1_jteam'] = &$jteam;
		}
	}
}

$action = '';
if(array_key_exists('action', $_POST)) {
	$action = $_POST['action'];
}


$scores = array();
/* Load all scores, index by pid */
foreach($projects as $pid=>&$project) {
	$q = $mysqli->query("SELECT * FROM judging_scores WHERE pid='$pid'");
	if($q->num_rows == 0) {
		$scores[$pid] = array('scientific'=>'', 'originality'=>'', 'communication'=>'', 'total'=>0);
	} else {
		$scores[$pid] = $q->fetch_assoc();
		filter_int($scores[$pid]['scientific']);
		filter_int($scores[$pid]['originality']);
		filter_int($scores[$pid]['communication']);

		$map = array(0=> '', 1=>'1L', 2=>'1M', 3=>'1H',
				4=>'2L', 5=>'2M', 6=>'2H',
				7=>'3L', 8=>'3M', 9=>'3H',
				10=>'4L', 11=>'4M', 12=>'4H');

		$scores[$pid]['scientific'] = $map[$scores[$pid]['scientific']];
		$scores[$pid]['originality'] = $map[$scores[$pid]['originality']];
		$scores[$pid]['communication'] = $map[$scores[$pid]['communication']];
	}
}



function check_score($score) 
{
	$int_score = 0;
	if(strlen($score) != 2) return NULL;

	$n = (int)substr($score, 0, 1);
	$lmh = strtolower(substr($score, 1, 1));

	if($n < 1 || $n > 4) return NULL;
	switch($lmh) {
	case 'l': $x = 1; break;
	case 'm': $x = 2; break;
	case 'h': $x = 3; break;
	default:
		return NULL;
	}

	/* map to 1L=1, 1M=2, ... 4H=12 */
	$int_score = ($n - 1) * 3 + $x;
	return $int_score;
}


switch($action) {
case 'save':
	/* Add a project to a prize */
	$pid = (int)$_POST['pid'];

	$sc = '';
	$or = '';
	$co = '';
	post_text($sc, 'scientific');
	post_text($or, 'originality');
	post_text($co, 'communication');

	if($sc == '' && $or == '' && $co == '') {
		$mysqli->query("DELETE FROM judging_scores WHERE pid='$pid'");
		form_ajax_response(array('status'=>0, 'val'=>array('total'=>"<font color=red>--</font>")));
		exit();
	}


	/* Error check */
	$scientific = check_score($sc);
	$originality = check_score($or);
	$communication = check_score($co);

	if($scientific === NULL || $originality === NULL || $communication === NULL) {
		form_ajax_response(1);
		return;
	}

	$total = ($scientific * 3) + ($originality * 2)  + ($communication * 1);

	/* Does it exist? */
	$q = $mysqli->query("SELECT * FROM judging_scores WHERE pid='$pid'");
	if($q->num_rows != 1) {
		$mysqli->query("DELETE FROM judging_scores WHERE pid='$pid'");
		$mysqli->query("INSERT INTO judging_scores (`pid`,`scientific`,`originality`,`communication`,`total`) VALUES('$pid','0','0','0','0')");

	}
	$mysqli->query("UPDATE judging_scores SET `scientific`='$scientific',`originality`='$originality',
				`communication`='$communication',`total`='$total' WHERE pid='$pid'");

	form_ajax_response(array('status'=>0, 'val'=>array('total'=>"<font color=green>$total</font>")));
	exit();
}

$page_id = 'c_judge_score_entry';
$help = '<p>Enter Judging Scores';
sfiab_page_begin($u, "Enter Judging Scores", $page_id, $help);
?>


<div data-role="page" id="<?=$page_id?>"><div data-role="main" class="sfiab_page" > 

	<p>You can search by judging team number using #number. e.g., #6 for judging team 6.
	<p>You can reload this page to force a search cache update and search for "missing" to see all the projects with no scores yet

	<ul data-role="listview" data-filter="true" data-filter-placeholder="Search for judging team number, project numbers or titles, or missing..." data-inset="true">
<?php
	foreach($projects as $pid=>&$project) {
		$filter_text = $project['title'].' '.$project['number'];
		$form_id = $page_id.'_'.$pid;

		if(!array_key_exists('round_1_jteam', $project)) {
			print("coulnd't find round 1 jteam for project: ".print_r($project));
			continue;
		}
		$jteam = &$project['round_1_jteam'];
		$filter_text .= ' #'.$jteam['num'];
?>
		<li id="project_<?=$pid?>" data-filtertext="<?=$filter_text?>">
			<h3><?=$project['number']?> - <?=$project['title']?></h3>
<?php			form_begin($form_id, 'c_judge_score_entry.php');
			$form_show_data_clear_buttons = false;

			form_hidden($form_id,'pid', $pid);
?>
			<table><tr>
			<td width="30%">
				<?=$jteam['num']?> - <?=$jteam['name']?><br/>
			</td>
			<td width="10%">
				<b><font size=+2><span id="<?=$form_id?>_total">
<?php				$total = $scores[$pid]['total'];
				if($total == 0) { ?>
					<font color=red>--</font>
<?php				} else { ?>
					<font color=green><?=$scores[$pid]['total']?></font>
<?php				} ?>	
				</span></font></b>

			</td>
			<td width="5%">
				<?=form_text($form_id, 'scientific', NULL, $scores[$pid]) ?>
			</td>
			<td width="5%">
				<?=form_text($form_id, 'originality', NULL, $scores[$pid]) ?>
			</td>
			<td width="5%">
				<?=form_text($form_id, 'communication', NULL, $scores[$pid]) ?>
			</td>
			<td>
				<?=form_submit($form_id, 'save', 'Save', 'Saved') ?>
			</td>
			</tr></table>
			<?=form_end($form_id);?>
		</li>
<?php		
		} ?>
	</ul>

</div></div>


<script>
var current_prize_id = -1;


function prize_enable_edit(prize_id)
{
	if(current_prize_id != -1) {
		prize_cancel_edit();
	}
	current_prize_id = prize_id;
	$("#prize_editor_"+prize_id).show();
	$("#prize_editor").detach().appendTo("#prize_editor_"+prize_id);
	$("#prize_editor").show();

	$("#prize_"+prize_id+" tr").each(function( index ) {
		var pid = $(this).attr('id');
		$( this ).append("<td id='X'><a href=\"#\" onclick=\"prize_pdel("+pid+");\">[X]</a></td>");
	});

	return false;
}
function prize_cancel_edit()
{
	$("#prize_editor_"+current_prize_id).hide();
	$("#prize_editor").hide();

	$("#prize_"+current_prize_id+" tr td[id='X']").remove();

	current_prize_id = -1;
	return false;
}



function prize_pdel(id)
{
	$.post('c_award_winners.php', { action: "pdel", prize_id: current_prize_id, pid: id }, function(data) {
		if(data.status == 0) {
			/* Remove from award */
			$("#prize_"+current_prize_id+' tr[id="'+id+'"]').remove();
			$("#prize_count_"+current_prize_id).html(data.happy);
		}
	}, "json");
	return false;
}

function prize_padd()
{
	var id = $("#prize_editor_all_psel option:selected").val();
	$.post('c_award_winners.php', { action: "padd", prize_id: current_prize_id, pid: id }, function(data) {
		if(data.status == 0) {
			/* Add to award list */
			$('#p_tr tr[id="'+id+'"]').appendTo('#prize_'+current_prize_id);
			/* Append the [X] to the new tr in the award table */
			$( "#prize_"+current_prize_id+' tr[id="'+id+'"]').append("<td id='X'><a href=\"#\" onclick=\"prize_pdel("+id+");\">[X]</a></td>");
			$("#prize_count_"+current_prize_id).html(data.happy);
		}
	}, "json");
	return false;
}



</script>

<?php
sfiab_page_end();
?>