<?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 		= "Eclipse Downloads";
	$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.";
	
	$App->PageRSS = "/downloads/rss.php";
	$App->PageRSSTitle = "Eclipse Releases";
	
	# 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_developer.php");
	# Generate the web page
	$App->setjQueryVersion('1.4.4');
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="helios.css" media="screen" />');		
	$App->generatePage("Nova", $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
