<?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("_projectCommon.php");    # All on the same line to unclutter the user's desktop'


	#*****************************************************************************
	#
	# index.php
	#
	# Author: 		Denis Roy
	# Date:			2005-10-11
	#
	# Description: display list of projects for downloads
	#
	#****************************************************************************

	#
	# Begin: page-specific settings.  Change these.
	$pageTitle 		= "Compare Eclipse Packages";
	$pageKeywords	= "eclipse,download,downloads,mirror,project,plug-ins,plugins,java,ide,swt,refactoring,free java ide,tools,platform,open source,development environment,development,ide";
	$pageAuthor		= "Eclipse Foundation, Inc.";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank)
	# $Nav->addCustomNav("My Link", "mypage.php", "_self");
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank");

	# End: page-specific settings
	#
	# Enable polls on this page
	# Polls are good for 3 months!
	#$App->usePolls();

	# Poll 1 - without a bar graph
	#$Poll = new Poll(1, "How could we improve the way you obtain Eclipse?", "http://www.eclipse.org/downloads/");
	#$Poll->addOption(1, "Sell DVD subscriptions");
	#$Poll->addOption(2, "Use BitTorrent");
	#$Poll->addOption(3, "Get more mirrors");
	#$Poll->addOption(4, "Get faster mirrors");
	#$Poll->addOption(5, "Add more bandwidth");
	#$Poll->addOption(6, "It works fine as it is");
	# $Poll->noGraph();  # uncomment to disable bar graph
	#$pollHTML = $Poll->getHTML();


	 # require_once "/home/data/httpd/eclipse-php-classes/downloads/livedownload.class.php";

	# $LiveDownload = new LiveDownload();
	# $dl_count = number_format($LiveDownload->selectDownloadCount("SDK_31"), 0, '', ',');




	# Place your html content in a file called content/en_pagename.php
	$downloadBasepath = $App->getDownloadBasePath();
	// UnComment this line to restore the old download page.
	// include("content/en_" . $App->getScriptName());
	// Comment this line to restore the old download page.
	
	include("content/en_compare_indigo.php");
	# Generate the web page
	$App->AddExtraHtmlHeader('<link rel="stylesheet" href="content/compare.css"/>');
	$App->generatePage("Nova", $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
</div>				