<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>

<?php
	/*
	// Set standard timezone for timestamp comparison
	date_default_timezone_set('UTC');
	
	// Load Zend Gdata libraries
	require_once 'Zend/Loader.php';
	Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
	Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
	
	// Set credentials for ClientLogin authentication
	$user = "hemehouse@gmail.com";
	$pass = "KarcinomA5^7";

	try {  
    // Connect to API
    $service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
    $service = new Zend_Gdata_Spreadsheets($client);

    // Get specific worksheet entry (Heme Glossary)
    $query = new Zend_Gdata_Spreadsheets_DocumentQuery();
    $query->setSpreadsheetKey('0AuPh9cI948YxdGkxdFMzQmdiamZKWnFQdW9ZbkFyUWc');
    $query->setWorksheetId('od6');
    $wsEntry = $service->getWorksheetEntry($query);      
  } catch (Exception $e) {
    die('ERROR: ' . $e->getMessage());
  }
	
	$glossary_php_last_updated = strtotime($wsEntry->updated); // Dynamic
	$glossary_html_last_updated = strtotime(date("F d Y H:i:s.", filemtime('glossary.html'))); // Static
	
	// Make sure no glossary user activated functions are called
	if (empty($study_set) && empty($glossary_term_ids) && empty($study_mode)) {
		// Redirect to previously generated static html page if no recent Google Spreadsheets update
		if ($glossary_php_last_updated < $glossary_html_last_updated) {
			header('Location: glossary.html');
			exit;
		} 
		// Else the rest of the php script below will run and overwrite glossary.html file
	}
	*/
	header('Location: glossary.html');
	exit;
?>

<!-- SET OVERLIB VARIABLES -->
<script type="text/javascript">
	var ol_width = 350;
	var ol_fgcolor = '#ffff99';
	var ol_bgcolor = '#ffff00';
	var ol_capcolor = '#000000';	
	var ol_shadowcolor = '#000000';
	var ol_shadowopacity = 60;
	var ol_closeclick = 1;
	var ol_sticky = 1;
	var ol_vauto = 1;
</script>

<!-- OVERLIB FOR POPUP TEXT  -->
<script type="text/javascript" src="/includes/overlib_mini.js"></script>

<!-- COLORBOX FOR POPUP IMAGES -->
<link rel='stylesheet' href='/includes/colorbox.css'>
<script type='text/javascript' src='/includes/jquery-min.js'></script>
<script type='text/javascript' src='/includes/jquery.colorbox-min.js'></script>
<link rel="stylesheet" href="/includes/jquery-ui.css" type="text/css" media="all" />
<link rel="stylesheet" href="/includes/ui.theme.css" type="text/css" media="all" />
<script src="/includes/jquery-ui.min.js" type="text/javascript"></script>
<script type='text/javascript'>
	$.colorbox.settings.opacity = 0.7;
	$.colorbox.settings.close = 'Close';
	
	$(document).ready(function(){
		$(".group1").colorbox({rel:'nofollow'});	
	});
</script>

<?php
/////////////////////////////////////////////////////////////////////////////////////////
// PERFORM THIS FUNCTION WHEN NEW IMAGES ARE UPLOADED to the images directory!!!!!!!!  //
// createThumbs("./images/", "./images/thumbs/", 150); exit;                  
/////////////////////////////////////////////////////////////////////////////////////////


function str_replace_word($needle, $replacement, $haystack){ 
	$pattern = "/\b$needle\b/i";
	$haystack = preg_replace($pattern, $replacement, $haystack, 1);
	return $haystack;
}

// Alphabet array for headers
$ARRAY_ALPHABET = Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');

// Array of capitalized terms, used to make parsing the definitions text (usually for terms with multiple words or abbreviated terms)
$CAPITAL_TERMS = Array('B-cell', 'T-cell', 'ADAMTS-13', 'CD', 'CD2', 'CD3', 'CD4', 'CD5', 'CD8', 'CD15', 'CD19', 'CD20', 'CD23', 'CD10', 'CD43', 'AIHA', 'IFE', 'JAK2', 'CD79a', 'SPEP', 'RBC', 'Heinz bodies', 'Dohle_bodies', 'Vitamin K', 'von Willebrand factor', 'Vitamin B12', 'MDS', 'DIC', 'EPO', 'GCSF', 'Hb', 'Hct', 'D-Dimer', 'Acute', 'Chronic', 'Leukemia', 'Lymphoma', 'HUS', 'G6PD deficiency', 'TTP', 'MPN', 'Thrombotic Thrombocytopenic Purpura', 'Coombs\' test', 'Disseminated Intravascular Coagulation (DIC)', 'Auer rods', 'Kell', 'PTT', 'T-ALL', 'APL', 'AML', 'Sezary syndrome', 'Mott cells', 'EBV', 'B-ALL', 'ALCL', 'Burkitt_lymphoma', 'CBC', 'WBC', 'CD_Mnemonic', 'FDP', 'CLL', 'CMML', 'SLL', 'CD21', 'CD16', 'CD7', 'CML', 'INR', 'TPO', 'vWF', 'ATRA', 'dRVVT', 'Protein C', 'Hodgkin lymphoma', 'MGUS', 'PNH', 'MMA', 'PT', 'LA', 'APC resistance', 'Hemophilia A', 'Hemophilia B', 'Hemophilia C');

try {  
	$query = new Zend_Gdata_Spreadsheets_CellQuery();
	$query->setSpreadsheetKey("0AuPh9cI948YxdGkxdFMzQmdiamZKWnFQdW9ZbkFyUWc");
	$query->setWorksheetId("od6");
} catch (Exception $e) {
  die('ERROR: ' . $e->getMessage());
}

// Get a list of the 2nd, 3rd, and 4th rows (glossary_media, glossary_name, glossary_definition) and put into big arrays
$query->setReturnEmpty(true);
$query->setMinCol(2);
$query->setMaxCol(4);
$query->setMinRow(2);

$cellFeed = $service->getCellFeed($query);

// Populate the data_arrays to generate the Javascript data
$array_counter = 1;
$special_chars = array("\n");
$replace_special_chars = array("<br>"); 
foreach ($cellFeed as $cellEntry) {
	if ($array_counter == 1) {
		$glossary_medias[] = str_replace(" ", "", $cellEntry->getCell()->getText());
	} elseif ($array_counter == 2) {
		$glossary_names[] = $cellEntry->getCell()->getText();
	} elseif ($array_counter == 3) {
		$glossary_definitions[] = str_replace($special_chars, $replace_special_chars, $cellEntry->getCell()->getText());
	}
	
	// Reset array counter when all of row data is entered
	$array_counter < 3 ? $array_counter++ : $array_counter = 1;
}

// Create php array of all terms
$all_glossary_terms = "
	<?php
		\$all_glossary_terms = array (";

// Autocomplete search function
$all_glossary_tags = "
	<script language='javascript'>
		$(function() {
			availableTags = [";
			
			for ($g = 0; $g <= count($glossary_names); $g++) {
				if ($g != count($glossary_names)) {
					if (!empty($glossary_names[$g])) {
						$all_glossary_tags .= "{label: \"" . str_replace("_", " ", $glossary_names[$g]) . "\", value: $g},\n";
						$all_glossary_terms .= "\"" . strtolower($glossary_names[$g]) . "\",\n";
					}
				} else {
					$all_glossary_tags .= "{label: \"" . str_replace("_", " ", $glossary_names[$g]) . "\", value: $g}\n";
					$all_glossary_terms .= "\"" . strtolower($glossary_names[$g]) . "\"\n";
				}
			}
				
$all_glossary_tags .= "
			];
			$( \"#tags\" ).autocomplete({
				source: availableTags,
				select: function (event, ui) {
				$(event.target).val(ui.item.label);
				window.location = '" . BASE_URL . "/index.php?SCREEN=glossary_fetch&glossary_term_ids[]=' + ui.item.value;
				return false;}		
			});
		});
		</script>\n";
		
$all_glossary_terms .= ");
	?>";

		// Write/overwrite to all_glossary_tags.inc	 
		file_put_contents("./glossary_terms/all_glossary_tags.inc", $all_glossary_tags);
		file_put_contents("./glossary_terms/all_glossary_terms.inc", $all_glossary_terms);
		
		// Output javascript autocomplete array and function
		echo $all_glossary_tags; 
?>

<script language='Javascript'>	
	<?php
		$special_chars = array("[", "]", "'", "_");
		$replace_special_chars = array("", "", "&#39", " "); 
	?>
	
	<!--Put all of the glossary terms into a javascript array for display and manipulation-->
	var all_definitions = new Array<?php echo '(' . str_replace($special_chars, $replace_special_chars, json_encode($glossary_definitions)) . ');'; ?>
	var all_captions = new Array<?php echo '(' . str_replace($special_chars, $replace_special_chars, json_encode($glossary_names)) . ');'; ?>
	
	function print_definition(array_num) {
		document.write(all_definitions[array_num]);
	}
	
	function goToStudySet() {
		var studySet = document.comparison.study_sets.value;
		window.location = '<?=BASE_URL?>/index.php?SCREEN=glossary_fetch&study_set=' + studySet;
	}
</script>

<a name='toppage'>
<table width='100%' border='0'>
	<tr>
		<td align='left'>
			<h1><img align='absmiddle' src='<?=GRAPHICS_DIR?>/glossary_square_icon.jpg'> Hematology Glossary</h1>
		</td>
		<td align='right'>
			<a href='http://itunes.apple.com/us/app/hematology-outlines/id521029633?mt=8&ls=1'><img border='0' src='<?=GRAPHICS_DIR?>/home_ipad_iphone.jpg'></a>
		</td>
	</tr>
</table><br>

<div class="ui-widget">
	<label for="tags">Quick Search: </label>  
	<input id="tags" /> 
</div>

<form name='comparison' method='get' action='index.php'>
<input type='hidden' name='SCREEN' value='glossary_fetch'>

<h2>
	Go To: 	<a href='#A'>A</a> |  <a href='#B'>B</a> |  <a href='#C'>C</a> | 	<a href='#D'>D</a> | 	<a href='#E'>E</a> | <a href='#F'>F</a> | 	<a href='#G'>G</a> | 	<a href='#H'>H</a> | 	<a href='#I'>I</a> | 	<a href='#J'>J</a> | 
					<a href='#K'>K</a> | 	<a href='#L'>L</a> | 	<a href='#M'>M</a> | 	<a href='#N'>N</a> | 	<a href='#O'>O</a> | <a href='#P'>P</a> | 	<a href='#Q'>Q</a> | 	<a href='#R'>R</a> | 	<a href='#S'>S</a> | 	<a href='#T'>T</a> | 
					<a href='#U'>U</a> | 	<a href='#V'>V</a> | 	<a href='#W'>W</a> | 	<a href='#X'>X</a> | 	<a href='#Y'>Y</a> | 	<a href='#Z'>Z</a> 
</h2><br>

<input type='submit' name='studymode' value='Study mode from selected terms'> or 
<select name='study_sets' onChange='goToStudySet();'>
	<option value=''>-Select a study set-
	<option value='CD markers'>CD markers
	<option value='Peripheral Blood Components'>Peripheral Blood Components
	<option value='Neoplasms'>Neoplasms
	<option value='Coagulation and Bleeding Disorders'>Coagulation and Bleeding Disorders
	<option value='Transfusion Medicine'>Transfusion Medicine
</select><br><br>

<table border='1' cellspacing='0' cellpadding='3'>

<?php 
	$ALPHABET_COUNTER = 0;
				
	// Loop through data arrays
	for ($x = 0; $x < count($glossary_names); $x++) {
		if ($glossary_names[$x] == '') break; // Stop generating table when no more glossary names (Google Spreadsheets will automatically have blank rows at end)
		
		// Set the letter header in caps
		if (substr($glossary_names[$x],0,1) == $ARRAY_ALPHABET[$ALPHABET_COUNTER]) {
			echo "<tr><td colspan='3'><a href='#toppage'>Back to top</a> ^ <br><br><h1><a name='$ARRAY_ALPHABET[$ALPHABET_COUNTER]'>" . $ARRAY_ALPHABET[$ALPHABET_COUNTER] . "</h1><br><input type='submit' class='mono11' value='Compare Selected'> <input type='reset' class='mono11' value='Clear Selected'></td></tr>\n";
			$ALPHABET_COUNTER++;
		}
		
		// Alternating background row color
		$color == '#ffffff' ? $color = '#eeeeee' : $color = '#ffffff';
		
	  // Parse the definition for all glossary terms and set hyperlinks
		unset($str_link); // Reset the definition string
		
		for ($y = 0; $y < count($glossary_names); $y++) { // Loop through all glossary names
			if ($str_link == "") $str_link = $glossary_definitions[$x]; // Set initial definition string as original
			if (stripos($glossary_definitions[$x], $glossary_names[$y])) { // The name is found within the definition text, so continue
					//Check the case of the name in the original definition text against the array of terms that should always be alphabetized
					if (in_array($glossary_names[$y], $CAPITAL_TERMS)) {
						$fixed_glossary_name = str_replace("'", "&#39", $glossary_names[$y]);
					} else {
						$fixed_glossary_name = strtolower(str_replace("'", "&#39", $glossary_names[$y]));
					}
				
				 	// Build final string
				 	$replacement_str = "<a href=\"javascript:void(0);\" onClick=\"return overlib(all_definitions[$y], CAPTION, all_captions[$y], LEFT, SHADOW);\" onMouseOut=\"nd();\">$fixed_glossary_name</a>";
				 	$str_link = str_replace_word($glossary_names[$y], $replacement_str, $str_link);
				}
			}
		
		// Extract media (possibly multiple), if any
		unset($media_string);
		
		if ($glossary_medias[$x]) {
			unset($media_list);
			
			$media_list = explode(",", $glossary_medias[$x]);
			$media_string = "<table border='0'><tr>\n";
			for ($z = 0; $z < count($media_list); $z++) {
				$media_string .= "<td><a class='group1' title='Figure " . ($z+1) . " - " . $glossary_names[$x] . "' href='" . GRAPHICS_DIR . "/" . $media_list[$z] . "'><img border='1' src='" . GRAPHICS_DIR . "/thumbs/" . $media_list[$z] . "'></a>&nbsp;&nbsp;<center><b>Figure " . ($z+1) . "</b></center></td>\n";
				if ($z == 3) $media_string .= "</tr><tr>";
			}
			$media_string .= "</tr></table>\n";
			$media_string = "<center><br>" . $media_string . "</b></center><br>\n";
		}
		
		$row_string =  
				 "<tr bgcolor='$color'>
						<td width=10 valign=top><input type=checkbox name='glossary_term_ids[]' value='$x'></td>
						<td valign=top width=200><b>" . str_replace("_", " ", $glossary_names[$x]) . "</b></td><td valign=top> " . $str_link . $media_string . "</td>
					</tr>\n";
					
		echo $row_string;
		
		// Create a file containing the glossary term
		$remove_table_str = array("<table border='0'><tr>", "<td>", "</td>", "</tr></table>");
		$glossary_term_table = 
			"<table border='0'cellpadding='2' cellspacing='0' width='100%'>
				<tr valign='top'>
					<td width=100%><font size='3'><b>" . str_replace("_", " ", $glossary_names[$x]) . "</b></font><br><hr><br>" .
						$str_link . str_replace($remove_table_str, "", $media_string) . "<br>
					</td>
				</tr>
			 </table>";
		$glossary_file_name = $x . ".inc";
		file_put_contents("./glossary_terms/" . $glossary_file_name, $glossary_term_table); 
	}		
?>

</table><br>
</form>

<?php 
	// Write php output to static glossary.html file
	print_footer();
	file_put_contents('glossary.html', ob_get_contents());	
	ob_end_flush(); 
	exit;
?>