\n"; $count = count($arr); if ($count == 0) { $arr[0]= $item; return; } for ($j= $count; $j>0; $j--){ if ($arr[$j-1] > $item) break; } if (($j != $count) && ($arr[$j] == $item)) return; for ($i= $count-1; $i>=$j; $i--){ $arr[$i+1]= $arr[$i]; } $arr[$j]= $item; } function count_dates($date_set, $date1, $date2) { // echo "EF: $date1, $date2 ",count($date_set)," "; $i1= 0; while (($date_set[$i1] > $date1) and ($i1 < count($date_set))) { ++$i1; } $i2= 0; while (($date_set[$i2] > $date2) and ($i2 < count($date_set))) { ++$i2; } $result= $i1-$i2; if ($result < 0) $result= -$result; // echo " result: $i1 $i2 $result
\n"; return ($result+1); } function order_dates(&$date_set, $age_table) { foreach ($age_table as $a) { if (is_numeric($a)) { insert_sort($date_set,$a); } else if (is_array($a)) { if (isset($a['subdiv'])) order_dates($date_set, $a['subdiv']); if (isset($a['contents'])) order_dates($date_set, $a['contents']); } } } function reorder_by_date(&$date_set, &$age_table, &$result, $current_date, $final_date, $thin= 0, $upper_colour= "") { // echo "RBD: ",count($date_set),"
\n"; $count= count($age_table); for ($n= 0; $n < $count; ++$n) { $a= $age_table[$n]; if (is_numeric($a)) { $current_date= $a; // if (! isset($result[$a]) $result[$a]= array(); } else if (is_array($a)) { $temp['name']= $a['name']; $first_date= $current_date; $last_date= $final_date; if (isset($age_table[$n+1]) && is_numeric($age_table[$n+1])) $last_date= $age_table[$n+1]; // echo "Name: ",$a['name']," ",$first_date," ",$last_date," "; $temp['height']= 2 * (count_dates($date_set,$first_date,$last_date)-1); $temp['width']= 2; if ($thin) $temp['width']= 1; if (isset($a['subdiv'])) $temp['width']= 1; $colour= $upper_colour; if (isset($a['colour'])) $colour= $a['colour']; $temp['colour']= $colour; $result[$current_date][]= $temp; if (isset($a['subdiv'])) { reorder_by_date($date_set, $a['subdiv'], $result, $current_date, $last_date, 1, $colour); } if (isset($a['contents'])) { reorder_by_date($date_set, $a['contents'], $result, $current_date, $last_date, 0, $colour); } } } } function show_sequence($input_table) { $date_set= array(); order_dates($date_set, $input_table); $current_date= "1000000"; /* foreach ($date_set as $date) { echo "date: $date
\n"; } */ reorder_by_date($date_set, $input_table, $age_table, $current_date, 0); echo "\n"; $previous= 0; foreach ($date_set as $date) { echo "\n"; if (! $previous) { echo "\n"; } else { echo "\n"; } if (! isset($age_table[$date])) { echo "\n"; $previous= 0; } else { $previous= 1; echo "\n"; foreach ($age_table[$date] as $item) { echo " \n"; } } } echo "
"; if ($date < "9000") { echo "$date"; } else { echo "Ma"; } echo " 
", "",$item['name'],"
\n"; } Jessop Scientific Software
 

GeoWhen Geological Timeline

This is a graphical representation of geological timeline from the GeoWhen web site.
For a full description of the sources and accuracies please see that site's introduction.