<?php
//error_reporting(-1);
//ini_set('display_errors', TRUE);
//ini_set('display_startup_errors', TRUE);
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_once($_SERVER['DOCUMENT_ROOT'] . "/downloads/_projectCommon.php");    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# index.php
	#
	# Author: 		Christopher Guindon
	# Date:			2012-12-10
	#
	# Description: display list of projects for downloads
	#
	#****************************************************************************

	#
	# Begin: page-specific settings.  Change these.
	$pageTitle 		= "Thank You for Downloading Eclipse";
	$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		= "Christopher Guindon";

	//for testing, remove when done
	//$_url = 'http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR1/eclipse-jee-juno-SR1-win32.zip&url=http://download.eclipse.org/technology/epp/downloads/release/juno/SR1/eclipse-jee-juno-SR1-win32.zip&mirror_id=1';

	# 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.

	ob_start();
	include($_SERVER['DOCUMENT_ROOT'] . "/downloads/content/en_thankyou.php");

	$html = ob_get_clean();
	# Generate the web page
	if(isset($_url)){
		$App->AddExtraHtmlHeader('<META HTTP-EQUIV="Refresh" CONTENT="0;URL=' . $_url . '">');
	}

	$App->AddExtraJSFooter('<script type="text/javascript" src="/downloads/assets/public/javascript/thankyou.min.js"></script>');
	$App->AddExtraHtmlHeader('<link rel="stylesheet" href="/downloads/assets/public/stylesheets/thankyou.min.css"/>');
	$App->generatePage("solstice", $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>