<?php	
	$documentRoot = $_SERVER['DOCUMENT_ROOT'];
	require_once ($documentRoot . "/membership/promo/promos.php");
	if (isset($_GET['adNo'])) { 
		$adNo = $_GET['adNo'];
	}
	$promo = chooseRandomPromo($adNo);
	ob_start();
	
	if ($_GET['osType'] == NULL)
	{
		$osDisplay = $App->getClientOS();
	}
	else {
		$osDisplay = $_GET['osType'];
	}
	$osWarning = "";
	$defaultPath = '/home/data/httpd/writable/community/';
	//$defaultPath = $documentRoot . '/downloads/content/';
	switch ($osDisplay) {
		case "win32":
			$display = "Windows";
			$packagesDetails = "heliosCacheWin.xml";
			$osWarning = "<b>Problems extracting the ZIP file?</b> Please read these <a href='http://wiki.eclipse.org/SDK_Known_Issues#Windows_issues'>Known Issues</a>.<br />";
			break;
		case "win64":
			$display = "Windows";
			$packagesDetails = "heliosCacheWin.xml";
			$osWarning = "<b>Problems extracting the ZIP file?</b> Please read these <a href='http://wiki.eclipse.org/SDK_Known_Issues#Windows_issues'>Known Issues</a>.<br />";
			break;		
		case "linux":
			$display = "Linux";
			$packagesDetails = "heliosCacheLinux.xml";
			$osWarning = "<b>Linux users please note:</b> Eclipse on GCJ is untested.  Please see the Linux <a href='http://wiki.eclipse.org/SDK_Known_Issues#Linux_issues'>Known Issues</a> document.<br />";
			break;
		case "linux-x64":
			$display = "Linux";
			$packagesDetails = "heliosCacheLinux.xml";
			$osWarning = "<b>Linux users please note:</b> Eclipse on GCJ is untested.  Please see the Linux <a href='http://wiki.eclipse.org/SDK_Known_Issues#Linux_issues'>Known Issues</a> document.<br />";
			break;
		case "macosx":
			$packagesDetails = "heliosCacheCocoa.xml";
			$display = "Mac OS X";
			break;
		case "carbon";
			$packagesDetails = "heliosCacheCarbon.xml";
			$display = "Mac OS X";
			break;
		case "cocoa64":
			$packagesDetails = "heliosCacheCocoa.xml";
			$display = "Mac OS X";
			break;
		default:
			$display = "Windows";
			$packagesDetails = "heliosCacheWin.xml";
			//$packagesDetails = $documentRoot . "/downloads/content/heliosCacheWin.xml";
			$osWarning = "<b>We were unable to find Eclipse packages for your platform ($osDisplay)</b>. Below are the packages for Windows. Downloads for your platform may be available <a href=\"$classOtherDownloads\">here</a>.<br />";
			break;
	}
	function featuredRow ($package, $display, $zebra) {
	ob_start();
		?>
				<div class="row  clearfix <?php if ($zebra) { print 'zebra'; }?>">
					<div class="icon"><img src="<?php print $package['icon'];?>" width="32"/></div>
					<div class="text">
						<span class="title"><a href="<?php print $package['url']?>"><?php print $package['name'];?></a></span>, <?php print $package['size'];?></a><br/>
						<span class="downloadCounts">Downloaded <?php print number_format($package['downloadCount']);?> Times</span><a class="details" href="<?php print $package['url']?>">Details</a> 
						<?php if (stripos($package['name'], 'classic') != 0) {?>&nbsp; <a class="details" href="http://download.eclipse.org/eclipse/downloads/">Other Downloads</a><?php }?>
					</div>
					<div class="download">
						<div class="downloadArrow">
							<img src="http://dev.eclipse.org/large_icons/actions/go-bottom.png"><br/>
						</div>
						<a class="downloadLink" href="<?php print $package['downloadurl'];?>"><?php print $display;?> 32 Bit</a><br/>
						<?php if ($package['downloadurl64'] != "") {?>
						<a class="downloadLink" href="<?php print $package['downloadurl64'];?>"><?php print $display;?> 64 Bit</a>
						<?php } ?>
						
					</div>
				</div>		
	<?php
	return ob_get_clean(); 
	}
	
	function otherRow ($package) {
		ob_start(); 
		?>
					<li class="row">
						<span class="title"><a href="<?php print $package['url']?>"><?php print $package['name'];?></a></span>, <?php print $package['size'];?></span>
						<a class="downloadLink" href="<?php print $package['downloadurl'];?>">Download</a>				
					</li>				
	<?php 
	return ob_get_clean();
	}
	
	$xml = simplexml_load_file($defaultPath . $packagesDetails);
	$featuredRows = 15;
	$count = 0;
	$zebra = TRUE;
	foreach ($xml->package as $package) {
		if ($count < $featuredRows) {
			$count ++;
			$featuredRowsHTML .= featuredRow($package, $display, $zebra);
			$zebra = !$zebra;
		}
		else {
			$otherRowsHTML .= otherRow($package);
		}		
	} 
?>
<script type="text/javascript" src="http://www.eclipse.org/forums/jquery.js"></script>
<script type="text/javascript" src="content/helios.js"></script>
<div class="wideContainer">
	<div class="downloadHeader">
		<ul class="selector">
			<li><a href="/downloads/">Packages</a></li>
			<li><a href="/downloads/index-helios.php" class="active">Developer Builds</a></li>
			<li><a href="/downloads/?tab=project">Projects</a></li>
		</ul>
		<a id="bug" href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=310525'>Give us your feedback on this new page.</a>
	</div>	
	<div class="contentArea">
		
		<div class="leftContent">
			<div class="descriptionBar">
				<div class="descriptionRight">
					<span id="texttwo"><a href="http://www.eclipse.org/downloads/packages/compare-packages">Compare Packages</a></span>
					<span id="textthree"><a href="http://wiki.eclipse.org/Older_Versions_Of_Eclipse">Older Versions</a></span>
				</div>			
				<div class="descriptionOS">
					<span id="descriptionText">Eclipse Helios (3.6 RC4) Packages</span> for 
					<select id="osSelect">
						<option <?php if ($osDisplay == 'win32') echo "selected"?> value="win32">Windows</option>
						<option <?php if ($osDisplay == 'linux' || $osDisplay == 'linux-x64') echo "selected"?> value="linux">Linux</option>
						<option <?php if ($osDisplay == 'macosx') echo "selected"?> value="macosx">Mac OS X (Cocoa)</option>
					</select>
				</div>
			</div>
			<div class="featuredRows clearfix">
			<?php print	$featuredRowsHTML; ?>
			</div><!--
			
			<div class="moreBlock clearfix">
			<h3>Other Packages</h3>
				<ul class="col1">
			<?php print	$otherRowsHTML; ?>					
				</ul>
			</div>
						
			--><div id="googleAds">
				<script type="text/javascript"><!--
				google_ad_client = "pub-6797025590085056"; google_ad_slot = "4661560739"; google_ad_width = 468; google_ad_height = 60;
				//-->
				</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>	
			</div>									
		</div>
		
		<div class="rightContent">
			<h3 class="">Hint:</h3>
			<p class="jre">You will need a <a href="/downloads/moreinfo/jre.php">Java runtime environment (JRE)</a> to use Eclipse (Java 5 JRE recommended). All downloads are provided under the terms and conditions of the <a href="/legal/epl/notice.php">Eclipse Foundation Software User Agreement</a> unless otherwise specified.</p>
			
			<div class="ad">
				<?php print $promo; ?>
			</div>
			
			<h3>Installing Eclipse</h3>
				<ul id="installingEclipse">
					<li><a href="http://wiki.eclipse.org/FAQ_Where_do_I_get_and_install_Eclipse%3F">Install Guide</a></li>
					<li><a href="http://wiki.eclipse.org/SDK_Known_Issues">Known Issues</a></li>
					<li><a href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-129.htm">Updating Eclipse</a></li>
				</ul>
				
			<h3>Related Links</h3>
				<ul id="relatedLinks">
					<li><a href="http://wiki.eclipse.org/CVS_Howto">Source Code</a></li>
					<li><a href="http://help.eclipse.org">Documentation</a></li>
					<li><a href="/donate/">Make a Donation</a></li>
					<li><a href="/forums/">Forums</a></li>
					<li><a href="/helios/">Eclipse Helios (3.6) <span class="helios">Jun '10</span></a></li>
					<li><a href="/galileo/">Eclipse Galileo (3.5)</a></li>
					<li><a href="/ganymede/">Eclipse Ganymede (3.4)</a></li>
				</ul>
		</div>
	</div>
</div>

<?
	$html = ob_get_clean();
?>