<?
/* 
   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) 2007 James Grant <james@lightbox.org>
   Copyright (C) 2007 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("reports.inc.php");

 user_auth_required('committee');

 
 /* Load the user's volunteer position selections */

 $edit_mode = array_key_exists('edit', $_GET);

 $action = $_GET['action'];
 if($action=='') $action = $_POST['action'];

 if($action == 'unlink') {
 	$id = intval($_GET['id']);
	mysql_query("DELETE FROM reports_committee WHERE
			users_id='{$_SESSION['users_id']}' AND id='$id'");
	$_SESSION['messages'][] = 'unlinked';
	header("Location: reports.php?edit=1");
	exit;
 }

 $reports_id = 0;
 if($action == 'reload') {
 	$edit_mode = true;
 	$reports_id = intval($_POST['reports_id']);
 }

 if($action == 'add') {
 	$reports_id = intval($_POST['reports_id']);
	/* reports_id might be < 0, that's ok */
	$category = $_POST['category'];
	$category_exist = $_POST['category_exist'];
	$comment = mysql_escape_string(stripslashes($_POST['comment']));

	if($category_exist != '') $category = $category_exist;
	$category = mysql_escape_string(stripslashes(trim($category)));

	if($category == '') {
		$_SESSION['messages'][] = 'nocategory';
		header("Location: reports.php?edit=1");
		exit;
	}
	
	if($reports_id > 0) {
		$type = $_POST['type'];
		$stock = $_POST['stock'];
		if(!array_key_exists($type, $report_options['type']['values'])) {
			echo "Invalid format: type=$type";
			exit;
		}
		if(!array_key_exists($stock, $report_stock)) {
			echo "Invalid stock: stock=$stock";
			exit;
		}
	} else {
		$type = '';
		$stock = '';
	}

	mysql_query("INSERT INTO `reports_committee` 
		(`id`, `users_id` , `reports_id` , `category` , `comment` , `format` , `stock`)
		VALUES (
			NULL , '{$_SESSION['users_id']}', 
			'$reports_id', '$category', '$comment', 
			'$type', '$stock' );");
	$_SESSION['messages'][] = 'added';
	header("Location: reports.php?edit=1");
	exit;
 }


 //send the header
 if($edit_mode == false) {
	 send_header("My Reports", 
 			array("Committee Main" => "committee_main.php"),
            "print/export_reports"
			);

	/* Send a greeting */
	echo i18n('Welcome to the new report interface.  You can select and save specific reports under specific categories so you can always find the report you need without having to go through the list each time.  To begin customizing this list, click on the "Click Here to edit your Report List" link at the bottom of this page.  ');
	echo i18n('The old report list is still available').' <a href="reports_old.php">'.i18n('here').'</a>, but will be deleted in the summer of 2008';
	echo '<br /><br />';


 } else {
	 send_header("Edit My Reports", 
 			array("Committee Main" => "committee_main.php",
	 			"My Reports" => "admin/reports.php"),
                "print/export_reports"
			);
 }

 require_once("../ajax.inc.php");

 
 foreach($_SESSION['messages'] as $m) {
 	switch($m) {
	case 'nocategory':
	 	echo error(i18n("You must select a category or type a new category name to add a report to your list"));
		break;
	case 'added':
	 	echo happy(i18n("Report successfully added"));
		break;
	case 'unlinked':
	 	echo happy(i18n("Report successfully removed"));
		break;
	}
 }
 $_SESSION['messages'] = array();

 /* Load all the users reports */
 $q = mysql_query("SELECT reports_committee.*,reports.name
 			FROM reports_committee 
				LEFT JOIN reports ON reports.id=reports_committee.reports_id
 			WHERE users_id='{$_SESSION['users_id']}'
			ORDER BY category,id");
 echo mysql_error();
 if(mysql_num_rows($q) == 0) {
 	echo i18n('You have no reports saved');
 } else {
 	/* List each report with info */
	if($edit_mode == true) {
		echo i18n('Deleting all the reports from a category will also delete the category.');
		echo '<br />';
		echo '<br />';
		echo '<a href="reports.php">'.i18n('Click here when you are finished editing your report list').'</a>';
		echo '<br />';
		echo '<br />';
	}

	$last_category = '';
	$x=0;
	echo "<table class=\"tableedit\">";
	while($i = mysql_fetch_object($q)) {
		$trclass = ($x % 2 == 0) ? "even" : "odd";
		$x++;
		if($last_category != $i->category) {
			/* New category */
			echo '<tr><td colspan=\"2\"><h3>';
			if($edit_mode == true) echo i18n('Category').': ';
			echo "{$i->category}</h3></td></tr>";
			$last_category = $i->category;
		}

		if($i->reports_id > 0) { 
			$name = $i->name;
			$url = "admin/reports_gen.php?id={$i->reports_id}&show_options=1";
		} else {
			$name = $report_custom[-$i->reports_id]['name'];
			$url = $report_custom[-$i->reports_id]['custom_url'];
		}

		if($edit_mode == false) 
			$name = "<a href=\"{$config['SFIABDIRECTORY']}/$url\">$name</a>";

		echo "<tr class=\"$trclass\"><td>";

		if($edit_mode == true) 
			echo "<a title=\"Remove Report\" href=\"reports.php?action=unlink&id={$i->id}\"><img src=\"".$config['SFIABDIRECTORY']."/images/16/button_cancel.".$config['icon_extension']."\" border=\"0\" alt=\"Remove Report\" /></a>&nbsp;";
		echo $name.'</td>';

/*
		if($i->reports_id > 0) {
			echo '<tr><td width=\"20px\"></td><td>';
			echo '<span style=\"font-size: 0.75em;\">';
			echo i18n('Format').": {$i->format}, ";
			echo i18n('Paper').": {$report_stock[$i->stock]['name']}, ";
			echo i18n('Year').": {$config['FAIRYEAR']}";
			echo '</span>';
			echo '</td></tr>';
		}
*/

		echo "<td><span style=\"font-size: 0.85em;\">{$i->comment}</span></td></tr>";
	}
	echo "</table>";
		
 }

 /* Load available reports */
 $reports = report_load_all();

 if($edit_mode == false) {
 	echo '<hr />';
	echo '<a href="reports.php?edit=1">'.i18n('Click here to edit your Report List').'</a>';

 	echo '<hr />';
	echo "<h3>".i18n("All Reports")."</h3>";

	/* Print all the reports in a pulldown menu for generation */
	echo "<form method=\"get\" name=\"reportgen\" action=\"reports_gen.php\">";
	echo "<input type=\"hidden\" name=\"show_options\" value=\"1\" />";
	echo "<select name=\"id\" id=\"report\">";
	echo "<option value=\"0\">".i18n("Select a Report")."</option>\n";
	$x=0;
	foreach($reports as $r) {
		echo "<option value=\"{$r['id']}\">{$r['name']}</option>\n";
	}
	echo "</select>";
	echo "<input type=\"submit\" value=\"".i18n("Generate Report")."\"></form>";
	echo "<br />";

 	send_footer();
	exit;
 }

 echo '<hr />';

 ?>
	<script type="text/javascript">
	function add_reload()
	{
		var url="report.ajax.php?reports_id="+document.addreport.reports_id.options[document.addreport.reports_id.selectedIndex].value;
//		alert(url);
		http.open("GET",url,true);
		http.onreadystatechange=handleResponse;
		http.send(null);
		return true;
	}

	function handleResponse()
	{
		try {
			if(http.readyState==4)
			{
				//eval the JSON to get the object if the length is big enough (custom reports return json [])
				if(http.responseText.length>3) {
					document.addreport.type.disabled=false;
					document.addreport.stock.disabled=false;
					document.addreport.type.style.display='';
					document.addreport.stock.style.display='';
					document.getElementById('reporttypecustom').style.display='none';
					document.getElementById('reportstockcustom').style.display='none';

/* dont use JSON anymore since it adds an extra PHP-side requirement, we'll just get a 3 line response with one thing per line that we need
					var obj=eval('('+http.responseText+')');
					if(obj['option']['type']) {
						for(i=0;i<document.addreport.type.options.length;i++) {
							if(document.addreport.type.options[i].value==obj['option']['type'])
								document.addreport.type.selectedIndex=i;
						}
					}
					else
						document.addreport.type.selectedIndex=0;

					if(obj['option']['stock']) {
						for(i=0;i<document.addreport.stock.options.length;i++) {
							if(document.addreport.stock.options[i].value==obj['option']['stock'])
								document.addreport.stock.selectedIndex=i;
						}
					}
					else
						document.addreport.stock.selectedIndex=0;

					if(obj['desc'])
						document.addreport.comment.value=obj['desc'];
*/
					var lines=http.responseText.split('\n');
					var reportType=lines[0];
					var reportStock=lines[1];
					var reportDesc=lines[2];

					if(reportType) {
						for(i=0;i<document.addreport.type.options.length;i++) {
							if(document.addreport.type.options[i].value==reportType)
								document.addreport.type.selectedIndex=i;
						}
					}
					else
						document.addreport.type.selectedIndex=0;

					if(reportStock) {
						for(i=0;i<document.addreport.stock.options.length;i++) {
							if(document.addreport.stock.options[i].value==reportStock)
								document.addreport.stock.selectedIndex=i;
						}
					}
					else
						document.addreport.stock.selectedIndex=0;

					if(reportDesc);
						document.addreport.comment.value=reportDesc;
				}
				else
				{
					document.addreport.type.disabled=true;
					document.addreport.stock.disabled=true;
					document.addreport.type.style.display='none';
					document.addreport.stock.style.display='none';
					document.getElementById('reporttypecustom').style.display='';
					document.getElementById('reportstockcustom').style.display='';
					document.addreport.comment.value='';
				}
			}
		}
		catch(e) {
			alert('caught error: '+e);
		}
	}
	</script>
 <?

 /* Create an add report box */
 echo '<h3>'.i18n('Add a Report to your Report List').'</h3>';
 echo "<form method=\"post\" name=\"addreport\"action=\"reports.php\">";
 echo "<input type=\"hidden\" name=\"action\" value=\"add\">";
 echo "<table class=\"tableedit\">\n";
 echo '<tr><td colspan="2">';
 echo "<select name=\"reports_id\" onChange=\"add_reload()\">";
 echo "<option value=\"\">".i18n("Choose a report")."</option>\n";
 $x=0;
 foreach($reports as $r) {
 	$x++;
	$sel = ($reports_id == $r['id']) ? 'selected="selected"' : '';
	echo "<option value=\"{$r['id']}\" $sel>$x. {$r['name']}</option>";

 }
 $rid = -1;
 foreach($report_custom as $r) {
 	$x++;
	$sel = ($reports_id == $rid) ? 'selected="selected"' : '';
	echo "<option value=\"$rid\" $sel>$x. {$r['name']}</option>";
	$rid--;
 }

 echo "</select></td></tr>";

 echo "<tr><td>".i18n("Category").":</td><td>";
 $q = mysql_query("SELECT DISTINCT category FROM reports_committee
 		WHERE users_id='{$_SESSION['users_id']}'
		ORDER BY category");

 echo i18n("Existing Category").": <select name=\"category_exist\">";
 echo "<option value=\"\">-- ".i18n('Use New Category')." --</option>";
 while($i = mysql_fetch_object($q)) {
 	echo "<option value=\"{$i->category}\">{$i->category}</option>";
 }
 echo "</select><br />";
 echo i18n("OR New Category").": <input type=\"text\" name=\"category\">";
 echo "</td></tr>";

 $option_keys = array('type','stock');
 foreach($report_options as $ok=>$o) {
 	if(!in_array($ok, $option_keys)) continue;
 	echo "<tr><td>{$o['desc']}:</td>";
	echo "<td><select name=\"$ok\" id=\"$ok\">";
	foreach($o['values'] as $k=>$v) {
		echo "<option value=\"$k\">$v</option>\n";
	}
	echo "</select><span id=\"report{$ok}custom\" style=\"display: none;\">".i18n("Custom")."</span></td></tr>";
 }
 echo "<tr><td>".i18n("Comments").":</td><td>";
 echo "<textarea rows=\"3\" cols=\"60\" name=\"comment\"></textarea></td></tr>";
 echo "<tr><td colspan=\"2\"><input type=\"submit\" value=\"".i18n("Add Report to My Reports")."\" /></td></tr>";


 echo '</table></form>';



 echo '<hr />';
 echo '<h3>Descriptions for All Reports</h3>';
 echo i18n('Click on the report number to try the report with the default report options before you add it to your Report List');
 echo '<br /><br />';
 echo "<table class=\"tableedit\">\n";
 $x=0;
 foreach(array_merge($reports, $report_custom) as $r) {
	$trclass = ($x % 2 == 0) ? "even" : "odd";
	$x++;
 	echo "<tr class=\"$trclass\">";
	if($r['custom_url'] == '') {
		$url = "admin/reports_gen.php?id={$r['id']}";
	} else {
		$url = $r['custom_url'];
	}
	echo "<td><a href=\"{$config['SFIABDIRECTORY']}/$url\">$x.</a></td>";
	echo "<td><table cellspacing=0 cellpadding=0 width=\"100%\"><tr>";

	echo "<td><b>{$r['name']}</b></td>";
	echo "<td align=\"right\">Created By: {$r['creator']}</td></tr>";
	echo "<tr><td colspan=\"2\">{$r['desc']}</td></tr>";
	echo "</table></tr>";
 }
	
echo "</table>";

 echo "<br />";

send_footer();
?>