330042 - move/udpate 'helios' grid code to 'indigo'
diff --git a/planning/EclipseSimultaneousRelease.html b/planning/EclipseSimultaneousRelease.html
index 59e88ff..abd53dc 100644
--- a/planning/EclipseSimultaneousRelease.html
+++ b/planning/EclipseSimultaneousRelease.html
@@ -147,7 +147,7 @@
 <p></p>
 <h2>Play well with others ... to be in common repository</h2>
 <p>The requirements in this section must be met for a project to be
-on the common, central repository (e.g. /releases/helios) for end users
+on the common, central repository (e.g. /releases/indigo) for end users
 to discover easily and minimum requirements to be included in EPP
 Packages. The criteria in this section are designed to make sure
 projects work relatively well, and work well together. This is
@@ -229,18 +229,18 @@
 they must provide their archives and metadata in a specified format and
 method to allow at least parts of their repository to be aggregated and
 mirrored to a common repository. The <a
-	href="http://wiki.eclipse.org/Helios/Contributing_to_Helios_Build">current
+	href="http://wiki.eclipse.org/Indigo/Contributing_to_Indigo_Build">current
 process</a> may be modified throughout the year, if improvements can be
-made. Clarification on 03/31/2010: At the <a
-	href="http://wiki.eclipse.org/Planning_Council/March_21_2010#Helios">3/21
-Planning Council meeting,</a> it was agreed this means that project's
-repositories must contain original jars, and pack.gz files (where
+made. Clarification on 03/31/2010: Note that a project's
+repositories must contain original (conditioned) jars, and pack.gz files (where
 original jar means the jar produced by the build, but which has been
 conditioned for pack200). Clarification on 11/08/2010: feature
 &quot;includes&quot; must be strict, that is &quot;include&quot; an
 exact version of that other feature. This is required so installs and
 builds can be repeatable independent of the exact day of the install or
-the exact repos enabled. While there may, in the future, be new
+the exact repos enabled. This is the way things are, and have been for years, 
+and this statement is just making it explicit. 
+While there may, in the future, be new
 mechanisms that allow some &quot;line up collection&quot; to be
 specified, it will be something new, not the feature
 &quot;includes&quot; element.</p>
@@ -280,10 +280,8 @@
 	href="http://www.eclipse.org/legal/epl/about.php">Eclipse
 Foundation &quot;about&quot; template</a>, but where those templates are
 edited by each project, care must be taken to be sure they are edited in
-similar ways. That is, substantial differences are fine, if required, but we need to avoid minor differences based on case, arbitrary dates, and formatting. You can see an example of the license-consolidating UI in
-<a
-	href="http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/eclipse-news-M1.html#Platform">Eclipse
-Platform Helios</a>. Note that the Eclipse Foundation's license or user
+similar ways. That is, substantial differences are fine, if required, but we need to avoid minor differences based on case, 
+arbitrary dates, and formatting.  Note that the Eclipse Foundation's license or user
 agreement files may change from year to year (such as, see <a
 	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316152">bug
 316152</a>) but ideally in Indigo and future releases, it will be easier to
@@ -353,7 +351,7 @@
 API frozen, and similar. See <a
 	href="http://www.eclipse.org/eclipse/development/freeze_plan_3.5.php">Platform
 3.5 Endgame plan</a> as a guideline. See also <a
-	href="http://wiki.eclipse.org/heliosPlan/index.php?title=Helios/Final_Daze&amp;action=edit">Helios
+	href="http://wiki.eclipse.org/indigoPlan/index.php?title=Indigo/Final_Daze&amp;action=edit">Indigo
 Final Daze</a>.)</p>
 <p><b>Accessibility</b>. Projects should design and test for
 accessibility compliance, following established guidelines and Eclipse
@@ -369,7 +367,7 @@
 </ul>
 <p>but, given the <a
 	href="http://wiki.eclipse.org/Planning_Council/Cross_Project_Teams/Accessibility">advice
-of the Accessibility Cross Project Team</a>, for this year's Helios
+of the Accessibility Cross Project Team</a>, for this year's
 Simultaneous Release, projects can document their work or compliance as
 a negative, such as "we did not do any accessibility work or testing and
 do not know the degree of our compliance". But its important to
diff --git a/planning/EclipseSimultaneousRelease.php b/planning/EclipseSimultaneousRelease.php
index 79c526e..8323b66 100644
--- a/planning/EclipseSimultaneousRelease.php
+++ b/planning/EclipseSimultaneousRelease.php
@@ -5,7 +5,7 @@
 #
 # Begin: page-specific settings.
 $pageTitle 		= "Eclipse Planning Council";
-$pageKeywords	= "Eclipse Planning Council Simultaneous Release Helios must-dos";
+$pageKeywords	= "Eclipse Planning Council Simultaneous Release Requirements and must-dos";
 $pageAuthor		= "David Williams";
 $theme = "Nova";
 
diff --git a/planning/SimultaneousReleaseFunctions.php b/planning/SimultaneousReleaseFunctions.php
new file mode 100644
index 0000000..d166665
--- /dev/null
+++ b/planning/SimultaneousReleaseFunctions.php
@@ -0,0 +1,584 @@
+<?php 
+function get_fields_names($App,$release){
+		return array('basics','Planning','IP-Documentation','Release-Review','commonrepo','Communication-and-Availability','API','Message-Bundles','Version-Numbering','OSGi-Bundle-Format','Execution-Environment','Signing','Jarred-Bundles','Re-use','Optimization','Provide-p2-Repository','Capabilities','Support-Translations','Excel-in-NL-Support','Branding','Do-No-Harm','License-Text-Consistency','be_a_good_eclipse_citizen','Engage-Community','Usability','Performance','Test-Localization','Enable-Use-with-All-Languages','Builds','Ramp-Down-Planned-and-Defined','Accessibility','Unit-Tests','API-Policy-Defined-and-Documented','Retention-Policy','Project-Metrics');
+		
+		/*
+		 * fetch all the long/short descriptions for the tracker fields
+		 */
+		$query = "select * from simultaneous_release_tracker_fields where therelease = '".addslashes($release)."'";
+		$res = $App->portal_sql($query);
+		$field_descriptions = array();
+		while($row = mysql_fetch_assoc($res)){
+			$field_descriptions[$row['field']] = $row;
+		}
+		return $field_descriptions;
+}
+
+function get_projects_tracking_by_parent($App){
+	$dbhc = new DBConnectionPortalRO();
+	$dbh = $dbhc->connect();
+	$query = "select * from simultaneous_release_tracker_project_relationships";
+	$res = mysql_query($query,$dbh);
+	
+	/*
+	 * fetch all the project tracking with thier parent
+	 */
+	$projects_tracking_with_parent = array();
+	while($row = mysql_fetch_assoc($res)){
+		$projects_tracking_with_parent[$row['projectid']] = $row['tracked_by_projectid'];
+	}
+	
+	if($_GET['debug'] == "true"){
+		print "<pre>projects_tracking_with_parent<br>";
+		print_r($projects_tracking_with_parent);
+	}
+	
+	return $projects_tracking_with_parent;
+}
+ 
+function get_projects_tracking($App){
+	$projects_tracking_with_parent = get_projects_tracking_by_parent($App);
+	/*
+	 * fetch all the project data
+	 */
+	$query = "select 
+				distinct ProjectID 
+			  from 
+			  	ProjectInfo, 
+			  	ProjectInfoValues 
+			  where 
+			  	MainKey = 'simultaneousrelease' 
+			  and 
+			  	Subkey = 'indigo' 
+			  and 
+			  	Value = 1 
+			  and 
+			  	ProjectInfo.ProjectInfoID = ProjectInfoValues.ProjectInfoID
+			  order by ProjectID
+			  	";
+	$res = $App->eclipse_sql($query);
+	$projects_tracking = array();
+	while($row = mysql_fetch_assoc($res)){
+		if(isset($projects_tracking_with_parent[$row['ProjectID']])){
+			continue;
+		}
+		$projects_tracking[] = $row['ProjectID'];
+	}
+	if($_GET['debug'] == "true"){
+		print "<pre>projects_tracking<br>";
+		print_r($projects_tracking);
+	}
+	
+	return $projects_tracking;	
+	
+	#todo - get read access for this script worked out
+	/*
+	 * fetch all the project data
+	$query = "select * from Projects where ProjectID in ('".implode("','",$projects_tracking)."')";
+	$res = $App->eclipse_sql($query);
+	$projects = array();
+	while($row = mysql_fetch_assoc($res)){
+		$projects[$row['ProjectID']] = $row;
+	}	
+		
+	return $projects;
+	 */
+	
+}
+
+function get_project_tracking($App,$projectid){
+	$dbhc = new DBConnectionPortalRO(); 
+	$dbh = $dbhc->connect();
+	/*
+	 * fetch all the tracking data for this project
+	 */
+	$query = "select * from simultaneous_release_tracker where projectid = '".addslashes($projectid)."'";
+	$res = mysql_query($query,$dbh);	
+	//	$res = $App->portal_sql($query);
+	$rows = array();
+	while($row = mysql_fetch_assoc($res)){
+		$rows[$row['track_key']] = $row['track_value'];
+		$exception = $row['track_key']."_exception";
+		$rows[$exception] = $row['exception'];
+	}
+
+	if($_GET['debug'] == "true"){
+		print "<pre>project_tracking for: $projectid<br>";
+		print_r($rows);
+	}
+	
+	// WTB Experimental
+//	$projectId = addslashes($projectid);
+//	$sql = "SELECT distinct
+//			r.ProjectName, r.ProjectId, 
+//			SlidesURL, IPLogURL,
+//			s.status as Status, s.value as Date 
+//		FROM 
+//			ProjectReviews as r 
+//			left join ProjectReviewStatus as s on (r.id = s.id and s.Status = 'IP Log Posted')
+//		WHERE
+//			reviewName = 'Indigo Release'
+//			and r.ProjectId=$projectid";
+//	
+//	$result = $App->foundation_sql($sql);
+//	while ($row = mysql_fetch_assoc($result)) {
+//		$rows['ip_log_posted'] = $row['Status'] == 'IP Log Posted' ? 'on' : '';
+//		$rows['ip_log_url'] = $row['IPLogURL'];
+//		$rows['slides_url'] = $row['SlidesURL'];
+//	}
+	
+	
+	return $rows;
+}
+
+
+function get_fields(){
+	$thefields = array();
+	//		Do the basics ... early
+		$fields = array();
+		$thefields['basics'] = array (
+			'fields' => $fields,
+			'name' => 'Basic Requirements',
+			'one_line_summary' => 'The requirements and conditions stated in this section are the basic minimum required for a project to claim they are part of the yearly Simultaneous Release.'
+		);
+		
+		/*
+		 * Offset
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'offset', 'label'=>'Offset', 'type'=>'select', 'options' =>array('+0'=>'+0','+1'=>'+1','+2'=>'+2','+3'=>'+3'),'check'=>'noquery','allow_excpetion' => false);
+		$thefields['Offset'] = array (
+			'fields' => $fields,
+			'name' => 'Offset',
+		
+		);
+		
+		/*
+		 * PLANNING URL
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'planning_url', 'label'=>'URL', 'type'=>'textfield','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Planning'] = array (
+			'fields' => $fields,
+			'name' => 'Planning',
+		);
+
+		/*
+		 * IP DOCUMENTATION
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'ip_documentation_IP_URL', 'label'=>'URL to IP Log', 'type'=>'textfield','check'=>'noquery','allow_excpetion' => true);
+		$thefields['IP-Documentation'] =array (
+			'fields' => $fields ,
+			'name' => 'IP-Documentation',
+		);
+		
+		/*
+		 * RELEASE REVIEW
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'release_review_PMC_executive_summary', 'label'=>'URL to PMC\'s Executive Summary (by RC2)', 'type'=>'textfield','check'=>'noquery','allow_excpetion' => true);
+//		$fields[] = array ('key'=>'release_review__checklist_url', 'label'=>'URL to checklists', 'type'=>'textfield','check'=>'req noquery','allow_excpetion' => true);
+		$thefields['Release-Review'] =array (
+			'fields' => $fields ,
+			'name' => 'Release-Review',
+		);
+		
+		
+		/*
+		 * Common Repo
+		 */
+		$fields = array();
+		$thefields['commonrepo'] = array (
+			'fields' => $fields,
+			'name' => 'Common Repository Requirements',
+		);
+		
+		/*
+		 * Communication and Availability
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'communication_and_availability', 'label'=>'Subscriptions confirmed and contact info sent.', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'communication_and_availability_releng_contacts', 'label'=>'Releng Contact Names. [the expectation being names only, not contact info]', 'type'=>'shorttextarea','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Communication-and-Availability'] =array (
+			'fields' => $fields ,
+			'name' => 'Communication-and-Availability',
+		);
+		
+		/*
+		 * API
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'bugzilla_api_clean', 'label'=>'Bugzillas open, or can "prove" API clean.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'url_api_reports', 'label'=>'Link to API check reports', 'type'=>'textfield','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'list_bugzilla_api_deviations', 'label'=>'List of Bugilla\'s open for API deviations', 'type'=>'shorttextarea','check'=>'noquery','allow_excpetion' => true);
+		$thefields['API'] =array (
+			'fields' => $fields ,
+			'name' => 'API',
+			'one_line_summary' => 'Projects should leverage only published APIs of dependencies.',
+			'details' => 'Projects should leverage only published APIs of dependencies. All deviations must be documented in bugzillas. These bugzillas may be of the type that a dependent project should provide a required API, or of the type that a consuming project must move to some API that already exists. Note that technically there is no obligation for consumed projects to provide API that is requested ... that depends on many things ... but the main goal of requiring these bugzilla entries is to provide some documentation and measure of the amount of risk associated with non-API use.'
+		);
+		
+		/*
+		 * Message Bundles
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'message_bundles_used_throughout', 'label'=>'Message Bundles used throughout.', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+//		$fields[] = array ('key'=>'message_bundles_exception', 'label'=>'Message Bundle Exception. Give description of technical reasons, and link to Planning Councils approval.', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Message-Bundles'] =array (
+			'fields' => $fields ,
+			'name' => 'Message-Bundles',
+			'one_line_summary' => 'Projects must use Eclipse message bundles unless there are technical reasons not to.',
+			'details' => 'Projects must use <a target="_blank" href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.isv/reference/misc/message_bundles.html">Eclipse message bundles</a> unless there are technical reasons not to.'
+		);
+		
+		/*
+		 * Version Numbering
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'standard_versioning_used', 'label'=>'Standard Versioning used.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+//		$fields[] = array ('key'=>'standard_versioning_exceptions', 'label'=>'Exceptions', 'type'=>'shorttextarea','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Version-Numbering'] =array (
+			'fields' => $fields ,
+			'name' => 'Version-Numbering',
+			'one_line_summary' => 'Projects must use 4-part version numbers.',
+			'details' => 'Projects must use <a target="_blank" href="http://wiki.eclipse.org/Version_Numbering">4-part version numbers</a>.',
+		);
+		
+		/*
+		 * OSGi bundle format
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'using_osgi_bundle_format', 'label'=>'OSGi bundle format used.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['OSGi-Bundle-Format'] =array (
+			'fields' => $fields ,
+			'name' => 'OSGi-Bundle-Format',
+			'one_line_summary' => 'All plug-ins (bundles) must use the true bundle form.',
+			'details' => 'All plug-ins (bundles) must use the true bundle form. That is, provide a manifest.mf file, and not rely on the plugin.xml file being \'translated\' into a manifest.mf file at initial startup. With that, empty plugin.xml files in the presence of a manifest.mf file should not be included in a bundle. (For some old history, see <a target="_blank" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=130598">bug 130598</a>.)'
+		);
+			
+		/*
+		 * Execution Environment
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'using_bundle_required_execution_environment', 'label'=>'Bundle Required Execution Environment used.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Execution-Environment'] =array (
+			'fields' => $fields ,
+			'name' => 'Execution-Environment',
+			'one_line_summary' => 'All plug-ins must correctly list their Bundle Required Execution Environment (BREE).',
+			'details' => 'All plug-ins must <a target="_blank" href="http://wiki.eclipse.org/Execution_Environments">correctly list their Bundle Required Execution Environment (BREE)</a>.',
+		);
+		
+		/*
+		 * Signing
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'using_signing', 'label'=>'Signing used.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Signing'] =array (
+			'fields' => $fields ,
+			'name' => 'Signing',
+			'one_line_summary' => 'Projects must use signed plugins using the Eclipse certificate</a>.',
+			'details' => 'Projects must use <a target="_blank" href="http://wiki.eclipse.org/JAR_Signing">signed plugins using the Eclipse certificate</a>.',
+		);
+		
+		
+		/*
+		 * Jarred Bundles
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'used_jarred_bundles', 'label'=>'Jarred Bundles used.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Jarred-Bundles'] =array (
+			'fields' => $fields ,
+			'name' => 'Jarred-Bundles',
+			'one_line_summary' => 'Projects must use jarred plug-ins.',
+			'details' => 'Projects must use jarred plug-ins (with unpack=false) unless authorized by the planning council for technical exceptions. Also, nested jars should be avoided if possible since it creates problems for projects that has dependencies to such plug-ins. The OSGi runtime is fine with it but the PDE environment is not able to handle classpaths that contain nested jars.'
+		);
+		
+		/*
+		 * Re-use
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'used_reuse_orbit', 'label'=>'Re use from Orbit.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Re-use'] =array (
+			'fields' => $fields ,
+			'name' => 'Re-use',
+			'one_line_summary' => 'Re-use and share common third party jars.',
+			'details' => 'Re-use and share common third party jars. Any third-party plug-ins that are common between projects must be consumed via <a traget="_blank" href="http://www.eclipse.org/orbit">Orbit</a>; a Simultaneous Release will not have duplicate third-party libraries (note that this only applies to identical versions of the libraries; thus if project A requires foo.jar 1.6 and project B uses foo.jar 1.7, that\'s ok, as long as it is required and has a documented reason).'
+		);
+		
+		
+		/*
+		 * Optimization
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'used_optimize_p2_repositories', 'label'=>'Optimize p2 repositories used.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Optimization'] =array (
+			'fields' => $fields ,
+			'name' => 'Optimization',
+			'one_line_summary' => 'Projects must optimize their p2 repositories to reduce bandwidth utilization and provide a better install and update experience for users.',
+		);
+		
+		 
+		/*
+		 * Provide p2 repository
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'provide_p2_repository', 'label'=>'Provide p2 repository.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Provide-p2-Repository'] =array (
+			'fields' => $fields ,
+			'name' => 'Provide-p2-Repository',
+			'one_line_summary' => 'Projects must provide their own project p2 repository.',
+			'details' => 'Projects must provide their own project p2 repository for their own project and updates. In addition, they must provide their archives and metadata in a specified format and method to allow at least parts of their repository to be aggregated and mirrored to a common repository. The <a target="_blank" href="http://wiki.eclipse.org/Indigo/Contributing_to_Indigo_Build">current process</a> may be modified throughout the year, if improvements can be made.'
+		);
+		
+		
+
+		
+		/*
+		 * Capabilities.
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'url_capabilities_description', 'label'=>'URL to a project\'s description of their capabilities (even if sample) and/or plugin names adopters can use', 'type'=>'textfield','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'url_discover_strategy', 'label'=>'URL to a project\'s description of their progressive discover strategy or documentation', 'type'=>'textfield','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Capabilities'] =array (
+			'fields' => $fields ,
+			'name' => 'Capabilities',
+			'one_line_summary' => 'Each project will provide basic capability/activity definitions to allow for their UI contributions to be hidden.',
+			'details' => 'Each project will provide basic capability/activity definitions to allow for their UI contributions to be hidden. These may be provided in a separate plugins and features to facilitate inclusion and reuse by consumers in product development, or simply well documented so adopters can reuse via copy/paste. Ideally, projects should also provide triggers to facilitate progressive discovery of functionality.'
+		);
+		
+		/*
+		 * Support Translations
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'used_support_translations', 'label'=>'Translation support used.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Support-Translations'] =array (
+			'fields' => $fields ,
+			'name' => 'Support-Translations',
+			'one_line_summary' => 'All strings must be externalized, and Projects must participate in Babel.',
+			'details' => 'All strings must be externalized, and Projects must participate in Babel, meaning it is registered and available for string translation, etc. Projects must freeze the UI sufficiently early to allow the Babel project time to translate strings so there can be simultaneous release of translated versions. The UI should be frozen by M6 (a "freeze" all major changes and additions are done by M6, and changes after that are done in a controlled, well documented fashion, so Babel translators can more easily "keep up" with late changes).'
+		);
+		
+		/*
+		 * Excel in NL support
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'used_ICU4J', 'label'=>'ICU4J used where appropriate.<br>', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+//		$fields[] = array ('key'=>'exceptions_ICU4J', 'label'=>'Exceptions', 'type'=>'shorttextarea','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Excel-in-NL-Support'] =array (
+			'fields' => $fields ,
+			'name' => 'Excel-in-NL-Support',
+			'one_line_summary' => 'The Project must use ICU4J, where appropriate, to excel in NL support. (The latest ICU4J bundles will be in Orbit)',
+			'details' => 'The Project must use <a traget="_blank" href="http://wiki.eclipse.org/ICU4J">ICU4J</a>, where appropriate, to excel in NL support. (The latest ICU4J bundles will be in Orbit)',
+		);
+		
+		/*
+		 * Branding
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'used_branding', 'label'=>'Branding used.', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Branding'] =array (
+			'fields' => $fields ,
+			'name' => 'Branding',
+			'one_line_summary' => 'Each major project (as determined by participating PMCs) must have an \'About\' dialog icon with hover text that displays the provider name.',
+			'details' => ' Each major project (as determined by participating PMCs) must have an \'About\' dialog icon with hover text that displays the provider name. Every plug-in and feature must specify a descriptive provider-name (for features), or Bundle-Vendor header (for plug-ins), as determined by the project\'s PMC (e.g. "Eclipse Modeling Project" rather than "Eclipse.org"). Also, Projects must contribute to the welcome page when appropriate.'
+		);
+		
+		
+		/*
+		 * No Unresolved Bugs
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'no_unresolved_bugs', 'label'=>'No unresolved bugs or known issues causing interference with others', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['Do-No-Harm'] =array (
+			'fields' => $fields ,
+			'name' => 'Do-No-Harm',
+			'one_line_summary' => 'Projects must work together in any combination of any install.',
+			'details' => 'Projects must work together in any combination of any install. Put another way, this means that users can install any subset of the projects and each of the installed projects will work as well as if it had been loaded independently. If such a problem is identified, the affected projects must track down and fix the problem.',
+		);
+				
+		/*
+		 * License text consistency
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'used_standard_license_form', 'label'=>'Standard forms of license used', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$thefields['License-Text-Consistency'] =array (
+			'fields' => $fields ,
+			'name' => 'License-Text-Consistency',
+			'one_line_summary' => '[New this year.]  Use standard forms of license documents.',
+			'details' => '[New this year.]  Use standard forms of license documents so it is displayed in the most usable, and concise way during install and update. It is a normal requirement to use a standard Eclipse Foundation "about" template, but where those templates are edited by each project, care must be taken to be sure they are edited in similar ways.'
+		);
+		
+		
+		
+		
+		
+//		Be a good Eclipse Citizen ... and document it
+		$fields = array();
+		$thefields['be_a_good_eclipse_citizen'] = array (
+			'fields' => $fields,
+			'name' => 'Eclipse Citizenship',
+			'one_line_summary' => 'Projects should exhibit good Eclipse Citizenship, to Release and participate in Common Discovery Site and EPP Packages. These are often "best practices" that some projects have found helpful at Eclipse. These criteria often speak to the quality of the Project, as an Eclipse Project, as opposed to their code or architecture. They are a bit more subjective than some of the other criteria, and the relevancy to any particular project may not be as universal, so there is no set number of items to satisfy. But, it is required that each project document their level of compliance to each item. Especially good Eclipse Citizens will get a gold star, and especially bad ones might get a frowny face.'
+		);
+		/*
+		 * Engage Community
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'engage_community', 'label'=>'Engage Community', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'engage_community_new_and_noteworthy', 'label'=>'New & Noteworthy URL or description', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Engage-Community'] =array (
+			'fields' => $fields ,
+			'name' => 'Engage-Community',
+			'one_line_summary' => 'The Project should actively engage their community to get feedback on milestone builds, and document how they do that.',
+			'details' => 'The Project should actively engage their community to get feedback on milestone builds, and document how they do that. One way to do this is to have a <a  target="_blank" href="http://wiki.eclipse.org/Architecture_Council/New_and_Noteworthy">New & Noteworthy</a> for each milestone. New and Noteworthy documents should be something readable and usable not just a static list of all the bugs. Corollary: individual new & noteworthy should be linked in to the collective New & Noteworthy.'
+		);
+		/*
+		 * Usability
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'following_usability_guidelines', 'label'=>'Usability', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'following_usability_guidelines_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Usability'] =array (
+			'fields' => $fields ,
+			'name' => 'Usability',
+			'one_line_summary' => 'The Project should follow the User Interface Guidelines.',
+			'details' => 'The Project should follow the User Interface Guidelines. The UI Checklist is a good place to start. Also, should participate in a User Interface Best Practices Working Group  UI walkthrough.',
+		);
+		/*
+		 * Performance
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'measurable_performance_criteria', 'label'=>'Performance', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'measurable_performance_criteria_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Performance'] =array (
+			'fields' => $fields ,
+			'name' => 'Performance',
+			'one_line_summary' => 'Project should have measurable performance criteria that are regularly tested against. Projects should devote at least one milestone to performance and scalability improvements.'
+		);
+
+		/*
+		 * Test Localization
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'use_babel_pseudo_translation', 'label'=>'Test Localization', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'use_babel_pseudo_translation_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Test-Localization'] =array (
+			'fields' => $fields ,
+			'name' => 'Test-Localization',
+			'one_line_summary' => 'The project should use the Babel Pseudo Translation Test to verify their translatability.',
+		);
+		
+		/*
+		 * Enable Use with All Languages
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'enable_use_with_all_languages', 'label'=>'Enable Use with All Languages', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'enable_use_with_all_languages_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Enable-Use-with-All-Languages'] =array (
+			'fields' => $fields ,
+			'name' => 'Enable-Use-with-All-Languages',
+			'one_line_summary' => 'Should design and test for enabling all languages including bidi, unicode characters, etc. This is different than "translating" the program. For example, while using an English version of Eclipse Web Tools, someone should be able to create a Chinese language web application.'
+		);
+		
+		/*
+		 * Builds
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'builds', 'label'=>'Builds', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'builds_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Builds'] =array (
+			'fields' => $fields ,
+			'name' => 'Builds',
+			'one_line_summary' => 'Projects must have a mature, stable build process: documented, scripted, repeatable, and executable by others.'
+		);
+		
+
+		/*
+		 * Ramp Down Planned and Defined
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'ramp_down_planned_and_defined', 'label'=>'Ramp Down Planned and Defined', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'ramp_down_planned_and_defined_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Ramp-Down-Planned-and-Defined'] =array (
+			'fields' => $fields ,
+			'name' => 'Ramp-Down-Planned-and-Defined',
+			'one_line_summary' => 'Projects must have a written ramp down policy by M6, at the latest, and provide link. The plan should describe when the project plans to be feature complete, have API frozen, and similar. See Platform 3.5 Endgame plan as a guideline.)'
+		);
+				
+		/*
+		 * Accessibility
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'accessibility', 'label'=>'Accessibility', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'accessibility_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Accessibility'] =array (
+			'fields' => $fields ,
+			'name' => 'Accessibility',
+			'one_line_summary' => 'Projects should design and test for accessibility compliance, following established guidelines and Eclipse fundamental techniques to achieve accessibility.',
+			'details' => 'Projects should design and test for accessibility compliance, following established guidelines and Eclipse fundamental techniques to achieve accessibility. Projects must document their accessibility work and compliance. Ideally this would be by using a publicly available checklists, such as
+							<ul>
+							    <li> <a target="_blank" href="http://www.itic.org/resources/voluntary-product-accessibility-template-vpat/">http://www.itic.org/resources/voluntary-product-accessibility-template-vpat/</a>
+							    <li> <a target="_blank" href="http://www.section508.gov/">http://www.section508.gov/</a>
+							    <li> <a target="_blank" href="http://www.w3.org/TR/WCAG/">http://www.w3.org/TR/WCAG/</a>
+							</ul>
+							but, given the advice of the <a target="_blank" href="http://wiki.eclipse.org/Planning_Council/Cross_Project_Teams/Accessibility">Accessibility Cross Project Team</a>, for this year\'s Simultaneous Release, projects can document their work or compliance as a negative, such as "we did not do any accessibility work or testing and do not know the degree of our compliance". But its important to document, so adopters know. If possible, and appropriate, accessibility testing tools can be leveraged such as <a target="_blank" href="http://www.nvda-project.org/">NVDA</a>. The main <a target="_blank" href="http://www.eclipse.org/articles/article.php?file=Article-Accessibility351/index.html">accessibility article at Eclipse Corner</a> has been made current (thanks goes to Todd Creasey).'
+		);
+
+		
+		/*
+		 * Unit Tests
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'unit_tests', 'label'=>'Unit Tests', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'unit_tests_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Unit-Tests'] =array (
+			'fields' => $fields ,
+			'name' => 'Unit-Tests',
+			'one_line_summary' => '[New this year.] Projects must have some unit tests that can verify at least basic functionality of a build or distribution. The steps to build and run the tests must be documented and executable by others.'
+		);
+		
+		/*
+		 *  API Policy Defined and Documented
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'api_policy_defined_and_documented', 'label'=>'API Policy Defined and Documented', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'api_policy_defined_and_documented_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['API-Policy-Defined-and-Documented'] =array (
+			'fields' => $fields ,
+			'name' => 'API-Policy-Defined-and-Documented',
+			'one_line_summary' => '[New this year.] Typically would include how \'APIs\' are distinguished from non-API and \'provisional\' API, if any. It is recommended that non-API be marked with x-internal in the bundles manifest. Also, should include what the commitment is to API, how long maintained after deprecated, etc.',
+			'details' => '[New this year.] Typically would include how \'APIs\' are distinguished from non-API and \'provisional\' API, if any. It is recommended that non-API be marked with x-internal in the bundles manifest. Also, should include what the commitment is to API, how long maintained after deprecated, etc. As one example, see <a target="_blank" href="http://wiki.eclipse.org/WTP_API_Policy">WTP API Policy</a>.'
+			);
+		
+		/*
+		 *  Retention Policy
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'retention_policy', 'label'=>'Retention Policy', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'retention_policy_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Retention-Policy'] =array (
+			'fields' => $fields ,
+			'name' => 'Retention-Policy',
+			'one_line_summary' => '[New this year.] Projects should define and document their retention policy. This should include both zip distributions and repositories.',
+			'details' => '[New this year.] Projects should define and document their retention policy. This should include both zip distributions and repositories. For examples, see <a target="_blank" href="http://wiki.eclipse.org/WTP/Retention_Policy">WTP Retention Policy</a> and <a target="_blank" href="http://wiki.eclipse.org/Eclipse_Project_Update_Sites">Eclipse Project Update Sites</a>'
+			);
+		
+		
+		/*
+		 * Project Metrics
+		 */
+		$fields = array();
+		$fields[] = array ('key'=>'project_metrics', 'label'=>'Project Metrics', 'type'=>'checkbox','check'=>'noquery','allow_excpetion' => true);
+		$fields[] = array ('key'=>'project_metrics_new_and_noteworthy', 'label'=>'Please describe or provide URL', 'type'=>'shorttextarea','check'=>'noquery');
+		$thefields['Project-Metrics'] =array (
+			'fields' => $fields ,
+			'name' => 'Project-Metrics',
+			'one_line_summary' => '[New this year.] Projects should provide some summary metrics.',
+			'details' => '[New this year.] Projects should provide some summary metrics, such as number of bundles, number of committers, lines of code, number of bugs opened and fixed. This is so some statements can be made and tracked year-to-year about the size of the simultaneous release.'
+			);
+			
+	return $thefields;	
+}
+
+
+?>
\ No newline at end of file
diff --git a/planning/SimultaneousReleaseGrid.php b/planning/SimultaneousReleaseGrid.php
new file mode 100644
index 0000000..5423115
--- /dev/null
+++ b/planning/SimultaneousReleaseGrid.php
@@ -0,0 +1,338 @@
+<html>
+<head>
+	<title>Simultaneous Release Summary Matrix</title>
+</head>
+<?php  
+require('/home/data/httpd/eclipse-php-classes/system/dbconnection_portal_ro.class.php');																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		
+include('SimultaneousReleaseFunctions.php');
+
+ob_start();
+?>
+<!-- include empty lef nav col for now -->
+
+<div id="maincontent">
+	<div id="midcolumn">
+		<div style='float: left; margin-left: 50px; margin-right: 50px;'>
+			<a href="http://eclipse.org/indigo/planning/SimultaneousRleaseOverview.php">Back to Project List</a>
+			<br>
+			<?php
+				if(isset($_GET['showallprojects'])){
+					?><a href="?">Top Level Overview Grid</a><?php
+				}else{
+					?><a href="?showallprojects=true">All Projects Overview Grid</a><?php
+				}
+			?>
+		</div>
+		<div>
+			<h1><?= $pageTitle ?></h1>
+			<h2>Simultaneous Release Compliance Grid</h2>
+			<p style='width: 60%; margin-left: 50px;'> 
+			This page is to summarize progress towards the yearly <a target="_blank" href="http://wiki.eclipse.org/Indigo/Simultaneous_Release_Plan">Simultaneous Release</a> as the data has been provided by the projects, at the <a target="_blank" href="https://dev.eclipse.org/portal/myfoundation/portal/portal.php">Eclipse Foundations Portal Tracking Tool</a>. For details on the requirements see <a target="_blank" href="http://www.eclipse.org/indigo/planning/EclipseSimultaneousRelease.php">requirements for the Simultaneous Release</a>.
+			<br>
+			If questions please see <a target="_blank" href="http://wiki.eclipse.org/Indigo/Simultaneous_Release_Tracker_FAQ">Simultaneous Release Tracker FAQ</a> or ask the question on <a href="mailto:cross-project-issues-dev@eclipse.org">cross-project dev list</a>. 
+			</p>
+		</div>		
+		
+		<?php 
+		$projects_tracking_with_parent = get_projects_tracking_by_parent($App);
+		$tracking_projects = get_projects_tracking($App);
+
+		
+		$all_the_fields = get_fields($App,'indigo');
+		$projects = array();
+		foreach($tracking_projects as $projectid){
+			$projects[$projectid] = get_project_tracking($App,$projectid);
+		}
+
+		
+		
+		if(!isset($_GET['projectid']) and !isset($_GET['showallprojects']) ){
+			/*
+			 * roll up all sub projects with their parent
+			 */
+			foreach($projects as $projectid => $project){
+				$project_id_parts = explode(".",$projectid);
+				/*
+				 * if a sub proejct
+				 */
+				if(count($project_id_parts) > 1){
+					$parent_project_id = $project_id_parts[0];
+					if (isset($_GET['debug']) && $parent_project_id == 'eclipse') echo "!!!!Eclipse Project rollup: $projectid !!!!";
+					$top_level_already_exists = true;
+					if(!isset($projects[$parent_project_id])){
+						$top_level_already_exists = false;;
+					}
+					
+					/*
+					 * combine the release fields into the parent
+					 */
+					$parent_project = $projects[$parent_project_id];
+					foreach($all_the_fields as $fieldlabel => $fields){
+				    	if(empty($fields['fields'])){
+					    		$group_type = $shown_field;
+					    		continue;
+				    	}	
+				    	foreach($fields['fields'] as $afield){
+				    		if($top_level_already_exists != true){
+				    			$parent_project[$afield['key']] = $project[$afield['key']];
+				    		}elseif(!isset($project[$afield['key']]) and isset($parent_project[$afield['key']])){
+				    			unset($parent_project[$afield['key']]);
+				    		}
+				    	}
+					}
+					/*
+					 * remove the old child project
+					 */
+					$key = 	array_search($projectid,$tracking_projects);
+					unset($tracking_projects[$key]);
+					/*
+					 * add the parent project to the list of tracking project if not already there
+					 */
+					if(!in_array($parent_project_id,$tracking_projects)){
+						$tracking_projects[] = $parent_project_id;
+					}
+					/*
+					 * udpate the project values
+					 */
+					$parent_project['parent_projectid'] = $parent_project_id;
+					$projects[$parent_project_id]= $parent_project;
+				}
+			}
+			sort($tracking_projects);
+		}elseif(isset($_GET['projectid'])){
+			$parent_projectid = $_GET['projectid'];
+			foreach($tracking_projects as $k => $projectid){
+				if(!preg_match("/^$parent_projectid*/i",$projectid)){
+					unset($tracking_projects[$k]);
+				}
+			}
+		}
+		?>
+		<table BORDER=2>
+		<tr>
+			<td width="<?= (((count($tracking_projects)+1)/100.0))*100 ?>%">&nbsp;</td>
+			<?php
+			/*
+			 * show the project along the top
+			 */
+			foreach($tracking_projects as $projectid){
+		    	$project_tracking = $projects[$projectid];
+				$project_id_cleaned = str_replace(".","<br>",$projectid);
+				?>
+				<td ALIGN="center" width="<?= (((count($tracking_projects)+1)/100.0))*100 ?>%">
+					<?php 
+					if(isset($project_tracking['parent_projectid']) and $project_tracking['parent_projectid'] != ""){
+						?>
+						<a href="http://eclipse.org/indigo/planning/SimultaneousReleaseGrid.php?projectid=<?=$project_tracking['parent_projectid']?>"><?= $project_id_cleaned?></a>
+						<?
+					}else{
+						?>
+						<a href="http://eclipse.org/indigo/planning/SimultaneousReleaseOverview.php?action=project&projectid=<?=$projectid?>"><?= $project_id_cleaned?></a>
+						<?
+					}
+					?>
+				</td>
+				<?php			
+			}
+			?>
+		</tr>
+		<?php 
+		foreach($all_the_fields as $fieldlabel => $fields){
+	    	if(empty($fields['fields'])){
+		    		$group_type = $shown_field;
+		    		continue;
+	    	}
+			?>
+			<tr>
+				<td ALIGN="center"><?=(str_replace("-"," ",$fields['name']))?></td>
+				<?php
+					$group_type ="";
+					foreach($tracking_projects as $projectid){
+				    	$project_tracking = $projects[$projectid];
+						?>
+						<td ALIGN="center">
+				    	<?php
+			    		if(count($fields['fields']) == 1){
+			    			show_line($group_type,$project_tracking,$fields['fields'][0]['key'],false);
+			    		}else{
+			    			$all_completed = true;
+				    		foreach($fields['fields'] as $afield){
+//				    			show_line($group_type,$project_tracking,$afield['key'],false);
+				    			if(!$project_tracking[$afield['key']]){
+				    				$all_completed = false;
+				    				$key = $afield['key'];
+				    			}else{
+				    				if($key == ""){
+					    				$key = $afield['key'];
+				    				}
+				    			}
+					    	}
+			    			show_line($group_type,$project_tracking,$key,false);
+			    		}
+						?>
+						</td>
+						<?php 
+					}
+				?>
+			</tr>
+			<?php
+		}
+		
+		/*
+		 * Due to some restrictions on database access, this script cannot connect to
+		 * the Foundation database to get the IP Log and Release Documentation information.
+		 * Instead, we have to connect via Ajax call from the browser and do a little
+		 * JavaScript magic. At this point, we just insert a row into the table to
+		 * act as a placeholder for this information. The script at the bottom of this
+		 * file takes care of population.
+		 */
+		echo "<tr><td align=\"centre\">IP Log</td>";
+		foreach($tracking_projects as $projectid) {
+			echo "<td align=\"center\"><div id=\"$projectid-iplog\"><span style='color:yellow; font-size: 150%;'>&diams;</span></div></td>";
+		}
+		echo "</tr>";
+		
+		echo "<tr><td align=\"centre\">Release Docuware</td>";
+		foreach($tracking_projects as $projectid) {
+			echo "<td align=\"center\"><div id=\"$projectid-docuware\"><span style='color:yellow; font-size: 150%;'>&diams;</span></div></td>";
+		}
+		echo "</tr>";
+			
+		?>
+		</table>
+		
+<?php include('SimultaneousReleaseKey.php');?>
+		
+	</div>
+</div>
+<?php
+$html = ob_get_contents();
+ob_end_clean();
+
+print $html;
+
+# Generate the web page
+//$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
+function show_line($group_type,$project_tracking,$key,$show_more_than_diamond = true){
+    $color = 'yellow';
+    $value = "";
+    
+    /*
+     * check if before M7 and in group baisc/commonrepo
+     */
+    if(($group_type == 'basics' or $group_type == 'commonrepo') and strtotime('now') > strtotime('2010-05-06')){
+    	$color = 'red';
+    }
+    
+    /*
+     * check if data is prensent
+     */
+    if(isset($project_tracking[$key])){
+		$color = 'green';
+		$value = $project_tracking[$key];
+    }
+    
+    /*
+     * check for an excpetion
+     */
+    if(isset($project_tracking[$key.'_exception']) and  $project_tracking[$key.'_exception'] != ""){
+		$color = 'lightgreen';
+		$value = $project_tracking[$key.'_exception'];
+    } 
+    
+    /*
+     * swap out new and noteworthy
+     */
+    $sub_field = str_replace("_"," ",$key);
+    if(preg_match("/New And Noteworthy/i",$sub_field)){
+    	$sub_field = "Link to Supporting Documentation";
+    }
+    
+    /*
+     * display colored diamond
+     */
+    if($show_more_than_diamond){
+    	print "&nbsp;&nbsp;";
+    }
+    print "<span style='color:$color; font-size: 150%;'>&diams;</span>";
+    /*
+	* check value
+	*/
+	if($value != ""){
+        /*
+         * if the value is a link
+         */
+        if(preg_match("/http:\/\/|https:\/\//i",$value)){
+        	/*
+        	 * then make the label a link
+        	 */
+             if($show_more_than_diamond){
+        		echo "<a href='$value'>".ucwords($sub_field)."</a>";
+             }
+        }else{
+        	if($show_more_than_diamond){
+	        	print ucwords($sub_field);
+        	}
+        	/*
+        	 * display value if not keyword 'on'
+        	 */
+        	if(!preg_match("/^on$/i",trim($value)) and $show_more_than_diamond){
+        		echo ": ".$value;
+        	}
+        }
+        }else{
+        /*
+         * show the field
+         */
+        	if($show_more_than_diamond){
+				print ucwords($sub_field);
+        	}
+        }
+        if($show_more_than_diamond){
+        	print "<br>";
+        }
+}
+
+?>
+
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/yahoo/yahoo.js"></script> 
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/event/event.js"></script>
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/connection/connection.js"></script>
+	<script>
+		function successHandler(o){		 
+			var root = o.responseXML.documentElement;
+			var reviews = root.getElementsByTagName('review');
+			var index = 0;
+			for(index=0;index<reviews.length;index++) {
+				var review = reviews[index];
+				var name = review.getAttribute("name");
+				var id = review.getAttribute("projectid");
+				var iplog = review.getAttribute("iplog");
+				var iplog_date = review.getAttribute("iplog-date");
+				var docuware = review.getAttribute("docuware");
+				var docuware_date = review.getAttribute("docuware-date");
+
+				var iplog_div = document.getElementById(id + '-iplog');
+				if (iplog_div) {
+					var status = "<span style='color:green; font-size: 150%;'>&diams;</span>";
+					if (!iplog) status = "<span style='color:lightgreen; font-size: 150%;'>&diams;</span>";
+					if (!iplog_date) status = "<span style='color:red; font-size: 150%;'>&diams;</span>";
+
+					iplog_div.innerHTML = status;
+				}
+				
+				var docuware_div = document.getElementById(id + '-docuware');
+				if (docuware_div) {
+					var status = "<span style='color:green; font-size: 150%;'>&diams;</span>";
+					if (!docuware) status = "<span style='color:lightgreen; font-size: 150%;'>&diams;</span>";
+					if (!docuware_date) status = "<span style='color:red; font-size: 150%;'>&diams;</span>";
+
+					docuware_div.innerHTML = status;
+				}
+			}		 
+		}
+		YAHOO.util.Connect.asyncRequest('GET', 'http://<?= $_SERVER['SERVER_NAME'] ?>/projects/xml/review_status.php?name=Indigo', { success:successHandler });
+	</script>
+
+</html>
\ No newline at end of file
diff --git a/planning/SimultaneousReleaseGrid2.php b/planning/SimultaneousReleaseGrid2.php
new file mode 100644
index 0000000..75aaed0
--- /dev/null
+++ b/planning/SimultaneousReleaseGrid2.php
@@ -0,0 +1,208 @@
+<html>
+<head>
+	<title>Simultaneous Summary Matrix</title>
+</head>
+<?php  
+require('/home/data/httpd/eclipse-php-classes/system/dbconnection_portal_ro.class.php');																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		
+include('SimultaneousReleaseFunctions.php');
+
+class ReleaseData {
+	var $projects = array();	
+	
+	function &getProjectReleaseData($id) {
+		return $projects[$id];
+	}
+}
+
+class ProjectReleaseData {
+	var $id;
+	var $data = array();
+	
+	function getStatus($key) {
+		return $data[$key];
+	}
+}
+
+function getReleaseData() {
+	global $App;
+	
+	$query = "select 
+				distinct ProjectID 
+			  from 
+			  	ProjectInfo, 
+			  	ProjectInfoValues 
+			  where 
+			  	MainKey = 'simultaneousrelease' 
+			  and 
+			  	Subkey = 'indigo' 
+			  and 
+			  	Value = 1 
+			  and 
+			  	ProjectInfo.ProjectInfoID = ProjectInfoValues.ProjectInfoID
+			  order by ProjectID
+			  	";
+	$results = $App->eclipse_sql($query);
+	
+	$releaseData = new ReleaseData();
+	while($row = mysql_fetch_assoc($results)){
+		$id = $row['ProjectID'];
+		$projectReleaseData =  new ProjectReleaseData();
+		$projectReleaseData->id = $id;
+		$releaseData->projects[$id] = $projectReleaseData;
+	}
+	
+	$dbhc = new DBConnectionPortalRO(); 
+	$dbh = $dbhc->connect();
+	
+	$query = "select projectid, track_key, track_value, exception, therelease from simultaneous_release_tracker";
+	$results = mysql_query($query,$dbh);	
+	while ($row = mysql_fetch_assoc($results)) {
+		$id = $row['projectid'];
+		$key = $row['track_key'];
+		$releaseData->projects[$id]->data[$key] = $row;
+	}
+	
+//	Array
+//(
+//    [projectid] => modeling.emf.transaction
+//    [track_key] => unit_tests
+//    [track_value] => on
+//    [exception] => 
+//    [therelease] => 
+//)
+
+	return $releaseData;
+}
+
+$releaseData = getReleaseData();
+$all_fields = get_fields();
+
+print_r($all_fields);
+
+ob_start();
+?>
+<!-- include empty lef nav col for now -->
+
+<div id="maincontent">
+	<div id="midcolumn">
+		<div style='float: left; margin-left: 50px; margin-right: 50px;'>
+			<a href="http://eclipse.org/indigo/planning/SimultaneousRleaseOverview.php">Back to Project List</a>
+			<br>
+			<?php
+				if(isset($_GET['showallprojects'])){
+					?><a href="?">Top Level Overview Grid</a><?php
+				}else{
+					?><a href="?showallprojects=true">All Projects Overview Grid</a><?php
+				}
+			?>
+		</div>
+		<div>
+			<h1><?= $pageTitle ?></h1>
+			<h2>Simultaneous Release Compliance Grid</h2>
+			<p style='width: 60%; margin-left: 50px;'> 
+			This page is to summarize progress towards the yearly <a target="_blank" href="http://wiki.eclipse.org/Indigo/Simultaneous_Release_Plan">Simultaneous Release</a> as the data has been provided by the projects, at the <a target="_blank" href="https://dev.eclipse.org/portal/myfoundation/portal/portal.php">Eclipse Foundations Portal Tracking Tool</a>. For details on the requirements see <a target="_blank" href="http://www.eclipse.org/indigo/planning/EclipseSimultaneousRelease.php">requirements for the Simultaneous Release</a>.
+			<br>
+			If questions please see <a target="_blank" href="http://wiki.eclipse.org/SimRel/Simultaneous_Release_Tracker_FAQ">Simultaneous Release Tracker FAQ</a> or ask the question on <a href="mailto:cross-project-issues-dev@eclipse.org">cross-project dev list</a>. 
+			</p>
+		</div>		
+		
+		<table BORDER=2>
+		<tr>
+			<td>&nbsp;</td>
+			<?php
+			/*
+			 * show the projects along the top
+			 */
+			foreach($releaseData->projects as $id => $project) {
+				$pretty_id = str_replace(".","<br>",$id);
+				echo "<td ALIGN=\"center\">";
+				echo "<a href=\"http://eclipse.org/indigo/planning/SimultaneousReleaseOverview.php?action=project&projectid=$id\">$pretty_id</a>";
+			}
+			
+			foreach($all_fields as $fieldlabel => $fields) {
+		    	if(empty($fields['fields'])) continue;
+				echo "<tr>";
+				echo "<td ALIGN=\"center\">". str_replace("-"," ",$fields['name']) . "</td>";
+				
+				foreach($releaseData->projects as $project) {
+					$status = $project->getStatus($fields['fields'][0]['key']);
+					echo "<td>" . $status . "</td>";
+				}
+				echo "</tr>";
+			}
+		
+			/*
+			 * Due to some restrictions on database access, this script cannot connect to
+			 * the Foundation database to get the IP Log and Release Documentation information.
+			 * Instead, we have to connect via Ajax call from the browser and do a little
+			 * JavaScript magic. At this point, we just insert a row into the table to
+			 * act as a placeholder for this information. The script at the bottom of this
+			 * file takes care of population.
+			 */
+			echo "<tr><td align=\"centre\">IP Log</td>";
+			foreach($releaseData as $id => $project) {
+				echo "<td align=\"center\"><div id=\"$id-iplog\"><span style='color:yellow; font-size: 150%;'>&diams;</span></div></td>";
+			}
+			echo "</tr>";
+			
+			echo "<tr><td align=\"centre\">Release Docuware</td>";
+			foreach($releaseData as $id => $projectid) {
+				echo "<td align=\"center\"><div id=\"$id-docuware\"><span style='color:yellow; font-size: 150%;'>&diams;</span></div></td>";
+			}
+			echo "</tr>";
+			
+		?>
+		</table>
+		
+<?php include('SimultaneousReleaseKey.php');?>
+		
+	</div>
+</div>
+<?php
+$html = ob_get_contents();
+ob_end_clean();
+
+print $html;
+
+?>
+
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/yahoo/yahoo.js"></script> 
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/event/event.js"></script>
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/connection/connection.js"></script>
+	<script>
+		function successHandler(o){		 
+			var root = o.responseXML.documentElement;
+			var reviews = root.getElementsByTagName('review');
+			var index = 0;
+			for(index=0;index<reviews.length;index++) {
+				var review = reviews[index];
+				var name = review.getAttribute("name");
+				var id = review.getAttribute("projectid");
+				var iplog = review.getAttribute("iplog");
+				var iplog_date = review.getAttribute("iplog-date");
+				var docuware = review.getAttribute("docuware");
+				var docuware_date = review.getAttribute("docuware-date");
+
+				var iplog_div = document.getElementById(id + '-iplog');
+				if (iplog_div) {
+					var status = "<span style='color:green; font-size: 150%;'>&diams;</span>";
+					if (!iplog) status = "<span style='color:lightgreen; font-size: 150%;'>&diams;</span>";
+					if (!iplog_date) status = "<span style='color:red; font-size: 150%;'>&diams;</span>";
+
+					iplog_div.innerHTML = status;
+				}
+				
+				var docuware_div = document.getElementById(id + '-docuware');
+				if (docuware_div) {
+					var status = "<span style='color:green; font-size: 150%;'>&diams;</span>";
+					if (!docuware) status = "<span style='color:lightgreen; font-size: 150%;'>&diams;</span>";
+					if (!docuware_date) status = "<span style='color:red; font-size: 150%;'>&diams;</span>";
+
+					docuware_div.innerHTML = status;
+				}
+			}		 
+		}
+		YAHOO.util.Connect.asyncRequest('GET', 'http://<?= $_SERVER['SERVER_NAME'] ?>/projects/xml/review_status.php?name=Indigo', { success:successHandler });
+	</script>
+
+</html>
\ No newline at end of file
diff --git a/planning/SimultaneousReleaseKey.php b/planning/SimultaneousReleaseKey.php
new file mode 100644
index 0000000..24e97d9
--- /dev/null
+++ b/planning/SimultaneousReleaseKey.php
@@ -0,0 +1,7 @@
+
+	<ul style='margin: 0px; margin-top: 10px; list-style: none;'><b>Key</b>
+		<li style='padding: 0px; list-style: none;'><span style='color: green; font-size: 150%;'>&diams;</span>Completed</li>
+		<li style='padding: 0px; list-style: none;'><span style='color: yellow; font-size: 150%;'>&diams;</span>No Data</li>
+		<li style='padding: 0px; list-style: none;'><span style='color: red; font-size: 150%;'>&diams;</span>Not Completed</li>	
+		<li style='padding: 0px; list-style: none;'><span style='color: lightgreen; font-size: 150%;'>&diams;</span>Completed, with exception</li>	
+	</ul>
diff --git a/planning/SimultaneousReleaseLeftCol.php b/planning/SimultaneousReleaseLeftCol.php
new file mode 100644
index 0000000..7646cf0
--- /dev/null
+++ b/planning/SimultaneousReleaseLeftCol.php
@@ -0,0 +1,20 @@
+<?php 
+	if(isset($_GET['action']) and $_GET['action'] == 'project'){
+		?>
+		<a href="http://eclipse.org/indigo/planning/SimultaneousRleaseOverview.php">Back to Project List</a>
+		<br> 
+		<?php
+	}else{
+		?>
+		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<?php
+	}
+?>
+	<a href="http://eclipse.org/indigo/planning/SimultaneousReleaseGrid.php">Top Level Overview Grid</a>
+	<br>
+	<a href="http://eclipse.org/indigo/planning/SimultaneousReleaseGrid.php?showallprojects=true">All Projects Overview Grid</a>
+<?php 
+	if(isset($_GET['action']) and $_GET['action'] == 'project'){
+		include('SimultaneousReleaseKey.php');
+	}
+?>
\ No newline at end of file
diff --git a/planning/SimultaneousReleaseOverview.php b/planning/SimultaneousReleaseOverview.php
new file mode 100644
index 0000000..ecf3af3
--- /dev/null
+++ b/planning/SimultaneousReleaseOverview.php
@@ -0,0 +1,171 @@
+<?php  
+require('/home/data/httpd/eclipse-php-classes/system/dbconnection_portal_ro.class.php');																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		
+include('SimultaneousReleaseFunctions.php');
+
+# Begin: page-specific settings.
+$pageTitle 		= "Indigo Summary of Projects";
+$pageKeywords	= "Eclipse Planning Council";
+$pageAuthor		= "Gabe O'BRien";
+$theme = "Nova";
+# Paste your HTML content between the markers!
+ob_start();
+?>
+<!-- include empty lef nav col for now -->
+<div id="leftcol">
+	<?php  include("SimultaneousReleaseLeftCol.php"); ?>
+</div>
+<div id="maincontent">
+	<div id="midcolumn">
+		<h1><?= $pageTitle ?></h1>
+		<h2>Simultaneous Release Compliance</h2>
+		<?php 
+			switch($_GET['action']){
+				case 'project':
+					show_a_project($App,$_GET['projectid']);
+					break;
+				case 'show_list':
+				default:
+					show_list_of_projects($App);
+			}
+		?>
+	</div>
+</div>
+<?php
+$html = ob_get_contents();
+ob_end_clean();
+
+# Generate the web page
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
+function show_a_project($App,$projectid){
+	$project_tracking = get_project_tracking($App,$projectid);
+	$all_the_fields = get_fields($App,'indigo');
+	?>
+	<div style="float: right;">
+		<a target="_blank" href="https://dev.eclipse.org/portal/myfoundation/portal/portal.php">Edit this data at the Foundation's Portal</a>
+	</div>
+	<ul style=''>
+		<li></>Project: <?=$projectid?><br>
+		<li></>Date: <?=date('c');?><br>
+	</ul>
+	<?php
+	$group_type = "";
+    foreach($all_the_fields as $fieldlabel => $fields){
+    	$shown_field = str_replace("-"," ",$fieldlabel);
+    	if(empty($fields['fields'])){
+    		$group_type = $shown_field;
+    	    ?><h3><?=ucwords($fields['name'])?></h3><?php
+    	}else{
+    		if(count($fields['fields']) == 1){
+//	    		print "<b>".ucwords($shown_field)."</b><br>";
+    			show_line($group_type,$project_tracking,$fields['fields'][0]['key']);
+    		}else{
+	    		print "<b>".ucwords($shown_field)."</b><br>";
+	    		foreach($fields['fields'] as $afield){
+	    			show_line($group_type,$project_tracking,$afield['key']);
+		    	}
+    		}
+    	}
+    }
+}
+
+
+function show_line($group_type,$project_tracking,$key){
+    $color = 'yellow';
+    $value = "";
+    
+    /*
+     * check if before M7 and in group baisc/commonrepo
+     */
+    if(($group_type == 'basics' or $group_type == 'commonrepo') and strtotime('now') > strtotime('2010-05-06')){
+    	$color = 'red';
+    }
+    
+    /*
+     * check if data is prensent
+     */
+    if(isset($project_tracking[$key])){
+		$color = 'green';
+		$value = $project_tracking[$key];
+    }
+    
+    /*
+     * check for an excpetion
+     */
+    if(isset($project_tracking[$key.'_exception']) and  $project_tracking[$key.'_exception'] != ""){
+		$color = 'lightgreen';
+		if($project_tracking[$key] != ""){
+			$value = $project_tracking[$key];
+		}else{
+			$value = $project_tracking[$key.'_exception'];
+		}
+    } 
+    
+    /*
+     * swap out new and noteworthy
+     */
+    $sub_field = str_replace("_"," ",$key);
+    if(preg_match("/New And Noteworthy/i",$sub_field)){
+    	$sub_field = "Link to Supporting Documentation";
+    }
+    
+    /*
+     * display colored diamond
+     */
+	print "&nbsp;&nbsp;<span style='color:$color; font-size: 150%;'>&diams;</span>";
+        
+	/*
+	* check value
+	*/
+	if($value != ""){
+        /*
+         * if the value is a link
+         */
+        if(preg_match("/http:\/\/|https:\/\//i",$value)){
+        	/*
+        	 * then make the label a link
+        	 */
+        	echo "<a href='$value'>".ucwords($sub_field)."</a>";
+        }else{
+        	print ucwords($sub_field);
+        	/*
+        	 * display value if not keyword 'on'
+        	 */
+        	if(!preg_match("/^on$/i",trim($value))){
+        		echo ": ".$value;
+        	}
+        }
+        }else{
+        /*
+         * show the field
+         */
+                print ucwords($sub_field);
+        }
+        print "<br>";
+
+}
+
+
+function show_list_of_projects($App){
+	$projects_tracking_with_parent = get_projects_tracking_by_parent($App);
+	$tracking_projects = get_projects_tracking($App);
+	foreach($tracking_projects as $projectid){
+		?>
+			<a href="?action=project&projectid=<?=$projectid?>"><?=$projectid?></a>
+			<?php
+			foreach($projects_tracking_with_parent as $k => $v){
+				if($v == $projectid){
+					?>
+					<br>
+					&nbsp;&nbsp;&nbsp;
+					<?=$k?>
+					<?php 
+				}
+			}
+			?>
+			<br>
+		<?php
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/planning/SimultaneousRleaseOverview.php b/planning/SimultaneousRleaseOverview.php
new file mode 100644
index 0000000..cb4a7f7
--- /dev/null
+++ b/planning/SimultaneousRleaseOverview.php
@@ -0,0 +1,3 @@
+<?php 
+	header("location: SimultaneousReleaseOverview.php");
+?>
\ No newline at end of file
diff --git a/planning/grid.php b/planning/grid.php
new file mode 100644
index 0000000..72b44bd
--- /dev/null
+++ b/planning/grid.php
@@ -0,0 +1,368 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2009-2010 Eclipse Foundation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Gabe O'Brien (Eclipse Foundation) - initial API and implementation
+ *    Wayne Beaton (Eclipse Foundation) - Generalized and updated.
+ *******************************************************************************/
+require_once($_SERVER['DOCUMENT_ROOT']) . "/projects/classes/debug.php";
+	
+require('/home/data/httpd/eclipse-php-classes/system/dbconnection_portal_ro.class.php');
+
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	
+
+$App 	= new App();	
+$Nav	= new Nav();	
+$Menu 	= new Menu();		
+
+include('SimultaneousReleaseFunctions.php');
+
+$release = isset($_GET['release']) ? $_GET['release'] : 'indigo';
+if (!in_array($release, array('indigo', 'helios'))) $release = 'indigo';
+
+$release_name = ucwords($release);
+$pageTitle = "Coordinated Release Summary Matrix ($release_name)";
+$release_plan_url = "http://wiki.eclipse.org/$release_name/Simultaneous_Release_Plan";
+$release_tracker_faq_url = "http://wiki.eclipse.org/$release_name/Simultaneous_Release_Tracker_FAQ";
+$release_status_url = 'http://' . $_SERVER['SERVER_NAME'] . "/projects/xml/review_status.php?name=$review_name>";
+
+ob_start();
+?>
+<html>
+<head>
+	<title><?php echo $pageTitle; ?></title>
+</head>
+<!-- include empty lef nav col for now -->
+
+<div id="maincontent">
+	<div id="midcolumn">
+		<div style='float: left; margin-left: 50px; margin-right: 50px;'>
+			<br>
+			<?php
+				if(isset($_GET['showallprojects'])){
+					?><a href="?">Top Level Overview Grid</a><?php
+				}else{
+					?><a href="?showallprojects=true">All Projects Overview Grid</a><?php
+				}
+			?>
+		</div>
+		<div>
+			<h1><?= $pageTitle ?></h1>
+			<h2>Simultaneous Release Compliance Grid</h2>
+			<p style='width: 60%; margin-left: 50px;'> 
+			This page is to summarize progress towards the yearly <a target="_blank" href="<?php echo $release_plan_url; ?>">Simultaneous Release</a> as the data has been provided by the projects, at the <a target="_blank" href="https://dev.eclipse.org/portal/myfoundation/portal/portal.php">Eclipse Foundations Portal Tracking Tool</a>. For details on the requirements see <a target="_blank" href="http://www.eclipse.org/indigo/planning/EclipseSimultaneousRelease.php">requirements for the Simultaneous Release</a>.
+			<br>
+			If questions please see <a target="_blank" href="<?php echo $release_tracker_faq_url; ?>">Simultaneous Release Tracker FAQ</a> or ask the question on <a href="mailto:cross-project-issues-dev@eclipse.org">cross-project dev list</a>. 
+			</p>
+		</div>		
+		
+		<?php 
+		$projects_tracking_with_parent = get_projects_tracking_by_parent($App);
+		$tracking_projects = get_projects_tracking($App);
+
+		
+		$all_the_fields = get_fields($App,$release);
+		$projects = array();
+		foreach($tracking_projects as $projectid){
+			$projects[$projectid] = get_project_tracking($App,$projectid);
+		}
+
+		
+		
+		if(!isset($_GET['projectid']) and !isset($_GET['showallprojects']) ){
+			/*
+			 * roll up all sub projects with their parent
+			 */
+			foreach($projects as $projectid => $project){
+				$project_id_parts = explode(".",$projectid);
+				/*
+				 * if a sub proejct
+				 */
+				if(count($project_id_parts) > 1){
+					$parent_project_id = $project_id_parts[0];
+					if (isset($_GET['debug']) && $parent_project_id == 'eclipse') echo "!!!!Eclipse Project rollup: $projectid !!!!";
+					$top_level_already_exists = true;
+					if(!isset($projects[$parent_project_id])){
+						$top_level_already_exists = false;;
+					}
+					
+					/*
+					 * combine the release fields into the parent
+					 */
+					$parent_project = $projects[$parent_project_id];
+					foreach($all_the_fields as $fieldlabel => $fields){
+				    	if(empty($fields['fields'])){
+					    		$group_type = $shown_field;
+					    		continue;
+				    	}	
+				    	foreach($fields['fields'] as $afield){
+				    		if($top_level_already_exists != true){
+				    			$parent_project[$afield['key']] = $project[$afield['key']];
+				    		}elseif(!isset($project[$afield['key']]) and isset($parent_project[$afield['key']])){
+				    			unset($parent_project[$afield['key']]);
+				    		}
+				    	}
+					}
+					/*
+					 * remove the old child project
+					 */
+					$key = 	array_search($projectid,$tracking_projects);
+					unset($tracking_projects[$key]);
+					/*
+					 * add the parent project to the list of tracking project if not already there
+					 */
+					if(!in_array($parent_project_id,$tracking_projects)){
+						$tracking_projects[] = $parent_project_id;
+					}
+					/*
+					 * udpate the project values
+					 */
+					$parent_project['parent_projectid'] = $parent_project_id;
+					$projects[$parent_project_id]= $parent_project;
+				}
+			}
+			sort($tracking_projects);
+		}elseif(isset($_GET['projectid'])){
+			$parent_projectid = $_GET['projectid'];
+			foreach($tracking_projects as $k => $projectid){
+				if(!preg_match("/^$parent_projectid*/i",$projectid)){
+					unset($tracking_projects[$k]);
+				}
+			}
+		}
+		?>
+		<table BORDER=2>
+		<tr>
+			<td width="<?= (((count($tracking_projects)+1)/100.0))*100 ?>%">&nbsp;</td>
+			<?php
+			/*
+			 * show the project along the top
+			 */
+			foreach($tracking_projects as $projectid){
+		    	$project_tracking = $projects[$projectid];
+				$project_id_cleaned = str_replace(".","<br>",$projectid);
+				?>
+				<td ALIGN="center" width="<?= (((count($tracking_projects)+1)/100.0))*100 ?>%">
+					<?php 
+					if(isset($project_tracking['parent_projectid']) and $project_tracking['parent_projectid'] != ""){
+						?>
+						<a href="http://eclipse.org/indigo/planning/SimultaneousReleaseGrid.php?projectid=<?=$project_tracking['parent_projectid']?>"><?= $project_id_cleaned?></a>
+						<?
+					}else{
+						?>
+						<a href="http://eclipse.org/indigo/planning/SimultaneousReleaseOverview.php?action=project&projectid=<?=$projectid?>"><?= $project_id_cleaned?></a>
+						<?
+					}
+					?>
+				</td>
+				<?php			
+			}
+			?>
+		</tr>
+		<?php 
+		foreach($all_the_fields as $fieldlabel => $fields){
+	    	if(empty($fields['fields'])){
+		    		$group_type = $shown_field;
+		    		continue;
+	    	}
+			?>
+			<tr>
+				<td ALIGN="center"><?=(str_replace("-"," ",$fields['name']))?></td>
+				<?php
+					$group_type ="";
+					foreach($tracking_projects as $projectid){
+				    	$project_tracking = $projects[$projectid];
+						?>
+						<td ALIGN="center">
+				    	<?php
+			    		if(count($fields['fields']) == 1){
+			    			show_line($group_type,$project_tracking,$fields['fields'][0]['key'],false);
+			    		}else{
+			    			$all_completed = true;
+				    		foreach($fields['fields'] as $afield){
+//				    			show_line($group_type,$project_tracking,$afield['key'],false);
+				    			if(!$project_tracking[$afield['key']]){
+				    				$all_completed = false;
+				    				$key = $afield['key'];
+				    			}else{
+				    				if($key == ""){
+					    				$key = $afield['key'];
+				    				}
+				    			}
+					    	}
+			    			show_line($group_type,$project_tracking,$key,false);
+			    		}
+						?>
+						</td>
+						<?php 
+					}
+				?>
+			</tr>
+			<?php
+		}
+		
+		/*
+		 * Due to some restrictions on database access, this script cannot connect to
+		 * the Foundation database to get the IP Log and Release Documentation information.
+		 * Instead, we have to connect via Ajax call from the browser and do a little
+		 * JavaScript magic. At this point, we just insert a row into the table to
+		 * act as a placeholder for this information. The script at the bottom of this
+		 * file takes care of population.
+		 */
+		echo "<tr><td align=\"centre\">IP Log</td>";
+		foreach($tracking_projects as $projectid) {
+			echo "<td align=\"center\"><div id=\"$projectid-iplog\"><span style='color:yellow; font-size: 150%;'>&diams;</span></div></td>";
+		}
+		echo "</tr>";
+		
+		echo "<tr><td align=\"centre\">Release Docuware</td>";
+		foreach($tracking_projects as $projectid) {
+			echo "<td align=\"center\"><div id=\"$projectid-docuware\"><span style='color:yellow; font-size: 150%;'>&diams;</span></div></td>";
+		}
+		echo "</tr>";
+			
+		?>
+		</table>
+		
+<?php include('SimultaneousReleaseKey.php');?>
+		
+	</div>
+</div>
+<?php
+$html = ob_get_contents();
+ob_end_clean();
+
+print $html;
+
+# Generate the web page
+//$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
+function show_line($group_type,$project_tracking,$key,$show_more_than_diamond = true){
+    $color = 'yellow';
+    $value = "";
+    
+    /*
+     * check if before M7 and in group baisc/commonrepo
+     */
+    if(($group_type == 'basics' or $group_type == 'commonrepo') and strtotime('now') > strtotime('2010-05-06')){
+    	$color = 'red';
+    }
+    
+    /*
+     * check if data is prensent
+     */
+    if(isset($project_tracking[$key])){
+		$color = 'green';
+		$value = $project_tracking[$key];
+    }
+    
+    /*
+     * check for an excpetion
+     */
+    if(isset($project_tracking[$key.'_exception']) and  $project_tracking[$key.'_exception'] != ""){
+		$color = 'lightgreen';
+		$value = $project_tracking[$key.'_exception'];
+    } 
+    
+    /*
+     * swap out new and noteworthy
+     */
+    $sub_field = str_replace("_"," ",$key);
+    if(preg_match("/New And Noteworthy/i",$sub_field)){
+    	$sub_field = "Link to Supporting Documentation";
+    }
+    
+    /*
+     * display colored diamond
+     */
+    if($show_more_than_diamond){
+    	print "&nbsp;&nbsp;";
+    }
+    print "<span style='color:$color; font-size: 150%;'>&diams;</span>";
+    /*
+	* check value
+	*/
+	if($value != ""){
+        /*
+         * if the value is a link
+         */
+        if(preg_match("/http:\/\/|https:\/\//i",$value)){
+        	/*
+        	 * then make the label a link
+        	 */
+             if($show_more_than_diamond){
+        		echo "<a href='$value'>".ucwords($sub_field)."</a>";
+             }
+        }else{
+        	if($show_more_than_diamond){
+	        	print ucwords($sub_field);
+        	}
+        	/*
+        	 * display value if not keyword 'on'
+        	 */
+        	if(!preg_match("/^on$/i",trim($value)) and $show_more_than_diamond){
+        		echo ": ".$value;
+        	}
+        }
+        }else{
+        /*
+         * show the field
+         */
+        	if($show_more_than_diamond){
+				print ucwords($sub_field);
+        	}
+        }
+        if($show_more_than_diamond){
+        	print "<br>";
+        }
+}
+
+?>
+
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/yahoo/yahoo.js"></script> 
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/event/event.js"></script>
+	<script src="http://yui.yahooapis.com/2.8.0r4/build/connection/connection.js"></script>
+	<script>
+		function successHandler(o){		 
+			var root = o.responseXML.documentElement;
+			var reviews = root.getElementsByTagName('review');
+			var index = 0;
+			for(index=0;index<reviews.length;index++) {
+				var review = reviews[index];
+				var name = review.getAttribute("name");
+				var id = review.getAttribute("projectid");
+				var iplog = review.getAttribute("iplog");
+				var iplog_date = review.getAttribute("iplog-date");
+				var docuware = review.getAttribute("docuware");
+				var docuware_date = review.getAttribute("docuware-date");
+
+				var iplog_div = document.getElementById(id + '-iplog');
+				if (iplog_div) {
+					var status = "<span style='color:green; font-size: 150%;'>&diams;</span>";
+					if (!iplog) status = "<span style='color:lightgreen; font-size: 150%;'>&diams;</span>";
+					if (!iplog_date) status = "<span style='color:red; font-size: 150%;'>&diams;</span>";
+
+					iplog_div.innerHTML = status;
+				}
+				
+				var docuware_div = document.getElementById(id + '-docuware');
+				if (docuware_div) {
+					var status = "<span style='color:green; font-size: 150%;'>&diams;</span>";
+					if (!docuware) status = "<span style='color:lightgreen; font-size: 150%;'>&diams;</span>";
+					if (!docuware_date) status = "<span style='color:red; font-size: 150%;'>&diams;</span>";
+
+					docuware_div.innerHTML = status;
+				}
+			}		 
+		}
+		YAHOO.util.Connect.asyncRequest('GET', '<?php echo $release_status_url; ?>', { success:successHandler });
+	</script>
+
+</html>
\ No newline at end of file
diff --git a/planning/index.html b/planning/index.html
new file mode 100644
index 0000000..e3c7035
--- /dev/null
+++ b/planning/index.html
@@ -0,0 +1 @@
+Eclipse Planning Council Web Test page
\ No newline at end of file
diff --git a/planning/index.php b/planning/index.php
new file mode 100644
index 0000000..b12a13e
--- /dev/null
+++ b/planning/index.php
@@ -0,0 +1,35 @@
+<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
+
+#
+# Begin: page-specific settings.
+$pageTitle 		= "Eclipse Planning Council";
+$pageKeywords	= "Eclipse Planning Council";
+$pageAuthor		= "David Williams";
+$theme = "Nova";
+# Paste your HTML content between the markers!
+ob_start();
+?>
+
+
+	<!-- include empty lef nav col for now -->
+	<div id="leftcol">
+	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	</div>
+	
+<div id="maincontent">
+<div id="midcolumn">
+<h1><?= $pageTitle ?></h1>
+<h2>Purpose</h2>
+<p>This 'planning' directory at this URL is to hold Planning Council specific web
+pages and web apps. Most Planning Council information is available on
+the <a href="http://wiki.eclipse.org/Planning_Council">Eclipse Planning
+Council Wiki Pages</a></p>
+</div>
+</div> 
+
+<?php
+$html = ob_get_contents();
+ob_end_clean();
+
+# Generate the web page
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);