diff --git a/judge.inc.php b/judge.inc.php
index 6809b6b8..cd36e182 100644
--- a/judge.inc.php
+++ b/judge.inc.php
@@ -65,6 +65,12 @@ function judge_status_other(&$u)
 	/* They must select a language to judge in */
 	if(count($u['languages']) < 1) return 'incomplete';
 
+	if($config['judges_availability_enable'] != 'no') {
+		$q = mysql_query("SELECT id FROM judges_availability 
+				WHERE users_id=\"{$u['id']}\"");
+		if(mysql_num_rows($q) == 0) return 'incomplete';
+	}
+
 	return 'complete';
 }
 
@@ -104,18 +110,6 @@ function judge_status_special_awards(&$u)
 	return 'incomplete';
 }
 
-function judge_status_availability(&$u)
-{
-	global $config;
-	if($config['judges_availability_enable'] == 'no') return 'complete';
-
-	$q = mysql_query("SELECT id FROM judges_availability 
-			WHERE users_id=\"{$u['id']}\"");
-	if(mysql_num_rows($q) > 0) return 'complete';
-
-	return 'incomplete';
-}
-
 function judge_status_update(&$u)
 {
 	global $config;
diff --git a/judge_availability.php b/judge_availability.php
deleted file mode 100644
index c21876c4..00000000
--- a/judge_availability.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?
-/* 
-  This file is part of the 'Science Fair In A Box' project
-  SFIAB Website: http://www.sfiab.ca
-
-  Copyright (C) 2005 Sci-Tech Ontario Inc <info@scitechontario.org>
-  Copyright (C) 2005 James Grant <james@lightbox.org>
-  Copyright (C) 2009 David Grant <dave@lightbox.org>
-
-  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, version 2.
-
-  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; see the file COPYING.  If not, write to
-  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  Boston, MA 02111-1307, USA.
-*/
-?>
-<?
-require_once('common.inc.php');
-require_once('user.inc.php');
-require_once('judge.inc.php');
-
-/* Sort out who we're editting */
-if($_POST['users_id']) 
-	$eid = intval($_POST['users_id']); /* From a save form */
-else if(array_key_exists('embed_edit_id', $_SESSION))
-	$eid = $_SESSION['embed_edit_id']; /* From the embedded editor */
-else 
-	$eid = $_SESSION['users_id'];	/* Regular entry */
-
-if($eid != $_SESSION['users_id']) {
-	/* Not editing ourself, we had better be
-	 * a committee member */
-	user_auth_required('committee','admin');
-}
-
-$u = user_load($eid);
-
-$times = array();
-
-/* Load the judging rounds */
-$q = mysql_query("SELECT date,starttime,endtime,name FROM judges_timeslots WHERE round_id='0' AND year='{$config['FAIRYEAR']}' ORDER BY starttime,type");
-$x = 0;
-while($r = mysql_fetch_object($q)) {
-	$found = false;
-	foreach($times as $xx => $t) {
-		if($t['date'] == $r->date && $t['starttime'] == $r->starttime && $t['endtime'] == $r->endtime) {
-			$times[$xx]['name'] .= ", {$r->name}";
-			$found = true;
-			break;
-		}
-	}
-	if(!$found) {
-		$times[$x] = array( 'date' => $r->date,
-				'starttime' => $r->starttime,
-				'endtime' => $r->endtime,
-				'name' => $r->name);
-		$x++;
-	}
-}
-
-switch($_GET['action']) {
-case 'save':
-	mysql_query("DELETE FROM judges_availability WHERE users_id='{$u['id']}'");
-
-	if(is_array($_POST['time']) ) {	
-		foreach($_POST['time'] as $x) {
-			if(trim($times[$x]['starttime']) == '') continue;
-
-			mysql_query("INSERT INTO judges_availability (users_id, `date`,`start`,`end`) 
-					VALUES ('{$u['id']}',
-					'{$times[$x]['date']}',
-					'{$times[$x]['starttime']}','{$times[$x]['endtime']}')");
-		}
-	}
-	happy_("Time Availability preferences successfully saved");
-	exit;
-}
-
-if($_SESSION['embed'] == true) {
-	display_messages();
-	echo "<h4>".i18n('Time Availability')."</h4>";
-	echo "<br />";
-} else {
-	//send the header
-	send_header('Time Availability', 
-		array('Judge Registration' => 'judge_main.php')
-		);
-}
-
-?>
-<script type="text/javascript">
-function judgeavailability_save()
-{
-	$("#debug").load("<?=$config['SFIABDIRECTORY']?>/judge_availability.php?action=save", $("#judgeavailability_form").serializeArray());
-        return false;
-}
-</script>
-<?
-
-
-judge_status_update($u);
-
-if($_SESSION['embed'] != true) {
-	//output the current status
-	$newstatus=judge_status_availability($u);
-	if($newstatus!='complete')
-		echo error(i18n("Time Availability Preferences Incomplete"));
-	else
-		echo happy(i18n("Time Availability Preferences Complete"));
-}
-
-?>
-<form id="judgeavailability_form" >
-<input type="hidden" name="users_id" value="<?=$u['id']?>" />
-<br />
-<table>
-<?
-/* Get all their available times */
-$q = mysql_query("SELECT * FROM judges_availability WHERE users_id=\"{$u['id']}\" ORDER BY `start`");
-
-$sel = array();
-while($r=mysql_fetch_object($q)) {
-	foreach($times as $x=>$t) {
-		if($r->start == $t['starttime'] && $r->end == $t['endtime'] && $r->date == $t['date']) {
-			$sel[$x] = true;
-		}
-	}
-}
-
-if(count($times) > 1) {
-	echo i18n("Please Note, you will be scheduled to judge in ALL (not just one) judging timeslots you select.");
-	echo '<br /><br />';
-}
-
-foreach($times as $x=>$t) {
-	$ch = $sel[$x] == true ? 'checked="checked"' : '';
-	echo "<tr><td>";
-	echo "<input onclick=\"checkboxclicked(this)\" $ch type=\"checkbox\" name=\"time[]\" value=\"$x\" />";
-	$st = substr($t['starttime'], 0, 5);
-	$end = substr($t['endtime'], 0, 5);
-	echo "</td><td><b>{$times[$x]['date']} $st - $end</b></td></tr>";
-	echo "<tr><td></td><td><p>{$t['name']}</td>";
-	echo "</tr>";
-}
-?>
-</table>
-<br />
-<br />
-
-<input type="submit" onclick="judgeavailability_save();return false;" value="<?=i18n("Save Time Availability Preferences")?>" />
-</form>
-
-<?
-if($_SESSION['embed'] != true) send_footer();
-?>
diff --git a/judge_other.php b/judge_other.php
index d61080f4..896e7785 100644
--- a/judge_other.php
+++ b/judge_other.php
@@ -39,6 +39,30 @@ else
 
 $u = user_load($edit_id);
 
+/* Load the judging rounds */
+$times = array();
+$q = mysql_query("SELECT date,starttime,endtime,name FROM judges_timeslots WHERE round_id='0' AND year='{$config['FAIRYEAR']}' ORDER BY starttime,type");
+$x = 0;
+while($r = mysql_fetch_object($q)) {
+	$found = false;
+	foreach($times as $xx => $t) {
+		if($t['date'] == $r->date && $t['starttime'] == $r->starttime && $t['endtime'] == $r->endtime) {
+			$times[$xx]['name'] .= ", {$r->name}";
+			$found = true;
+			break;
+		}
+	}
+	if(!$found) {
+		$times[$x] = array( 'date' => $r->date,
+				'starttime' => $r->starttime,
+				'endtime' => $r->endtime,
+				'name' => $r->name);
+		$x++;
+	}
+}
+
+
+
 switch($_GET['action']) {
 case 'save':
 	if(!is_array($_POST['languages'])) $_POST['languages']=array();
@@ -53,10 +77,24 @@ case 'save':
 	$u['years_regional'] = intval($_POST['years_regional']);
 	$u['years_national'] = intval($_POST['years_national']);
 	$u['highest_psd'] = stripslashes($_POST['highest_psd']);
-
 	user_save($u);
 
 	questions_save_answers("judgereg",$u['id'],$_POST['questions']);
+
+	mysql_query("DELETE FROM judges_availability WHERE users_id='{$u['id']}'");
+
+	if(is_array($_POST['time']) ) {	
+		foreach($_POST['time'] as $x) {
+			if(trim($times[$x]['starttime']) == '') continue;
+
+			mysql_query("INSERT INTO judges_availability (users_id, `date`,`start`,`end`) 
+					VALUES ('{$u['id']}',
+					'{$times[$x]['date']}',
+					'{$times[$x]['starttime']}','{$times[$x]['endtime']}')");
+		}
+	}
+
+
 	happy_("Preferences successfully saved");
 
 	$u = user_load($u['id']);
@@ -69,9 +107,11 @@ case 'save':
 	exit;
 }
 
-$fields = array('languages[]', 'years_school','years_regional','years_national','willing_chair','highest_psd');
+$fields = array('languages[]', 'years_school','years_regional','years_national','willing_chair','highest_psd','time[]');
 $required = array('languages[]');
 
+if(count($times) > 1) $required[] = 'time[]';
+
 ?>
 <h4><?=i18n("Judge Information")?> - <span class="status_judge"></span></h4>
 <br/>
@@ -88,6 +128,35 @@ $required = array('languages[]');
 <tr><?=user_edit_item($u, 'Judge at a Regional Fair', 'years_regional', 'textbox', 5)?></tr>
 <tr><?=user_edit_item($u, 'Judge at a National Fair', 'years_national', 'textbox', 5)?></tr>
 
+<? if(count($times) > 1) { ?>
+	<tr><td style="text-align: left" colspan="2"><br /><b><?=i18n('Time Availability')?></b><hr />
+	<i><?=i18n('Please specify the time(s) you are available to judge.  You will be scheduled to judge in ALL (not just one) judging timeslot.')?></i>
+	</td></tr>
+
+<?
+	/* Get all their available times */
+	$q = mysql_query("SELECT * FROM judges_availability WHERE users_id=\"{$u['id']}\" ORDER BY `start`");
+
+	$sel = array();
+	while($r=mysql_fetch_object($q)) {
+		foreach($times as $x=>$t) {
+			if($r->start == $t['starttime'] && $r->end == $t['endtime'] && $r->date == $t['date']) 
+				$sel[] = $x;
+		}
+	}
+	$items = array();
+	foreach($times as $x=>$t) {
+		$st = substr($t['starttime'], 0, 5);
+		$end = substr($t['endtime'], 0, 5);
+		$items[$x] = "{$t['name']} ({$times[$x]['date']} $st - $end)";
+	}
+
+	echo '<tr>';
+	user_edit_item($u, 'Time Availability', 'time[]', 'checklist', $items, $sel);
+	echo '</tr>';
+}
+?>
+
 <tr><td style="text-align: left" colspan="2"><br /><b><?=i18n('Judging Questions')?></b><hr /></td></tr>
 <tr><?=user_edit_item($u, 'I am willing to be the lead for my judging team', 'willing_chair', 'yesno')?></tr>
 <tr><?=user_edit_item($u, 'Highest post-secondary degree', 'highest_psd', 'textbox')?></tr>
@@ -121,6 +190,7 @@ $(document).ready(function() {
 
 		rules: {
 			"languages[]": { required: true },
+			"time[]": { required: <?=in_array('time[]', $required)?'true':'false'?> },
 			years_school: { min: 0, max:100 },
 			years_regional: { min: 0, max:100 },
 			years_national: { min: 0, max:100 }
@@ -128,6 +198,7 @@ $(document).ready(function() {
 
 		messages: {
 			"languages[]": { required:  "<?=i18n('Please select the language(s) you can judge in')?>" },
+			"time[]": { required:  "<?=i18n('Please select the time(s) you are available for judging')?>" },
 			years_school: { 
 					min:  "<?=i18n('Please enter a valid number')?>",
 					max:  "<?=i18n('Please enter a valid number')?>",
diff --git a/user_edit.inc.php b/user_edit.inc.php
index 2c1c577c..216fe432 100644
--- a/user_edit.inc.php
+++ b/user_edit.inc.php
@@ -24,7 +24,7 @@
 
 require_once('account.inc.php');
 
-function user_edit_item(&$u, $label, $fname, $type='textbox', $data1=NULL)
+function user_edit_item(&$u, $label, $fname, $type='textbox', $data1=NULL, $data2=NULL)
 {
 	global $required, $fields, $config;
 
@@ -87,6 +87,19 @@ function user_edit_item(&$u, $label, $fname, $type='textbox', $data1=NULL)
 		}
 		echo "</span>";
 		break;
+	
+	case 'checklist':
+		/* data1 = items, data2 = checked items */
+		echo "<span>";
+		$x = 0;
+		foreach($data1 AS $key=>$txt) {
+			$ch = (in_array($key,$data2)) ? 'checked="checked"' : '';
+			if($x) echo '<br />';
+			echo "<input $ch type=\"checkbox\" name=\"$fname\" value=\"$l\" />$txt";
+			$x=1;
+		}
+		echo "</span>";
+		break;
 	}
 	echo '</td>';
 }