<?php
/*******************************************************************************
 * Copyright (c) 2016 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://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Eric Poirier (Eclipse Foundation) - Initial implementation
 *    Christopher Guindon (Eclipse Foundation)
 *******************************************************************************/
require_once ($_SERVER ['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
$App = new App ();
$path = $App->getWWWPrefix();
include '_variables.php';

// Override default variables for mailchip
$email_body_width = "600px";
$col_1_img = "540px";
$col_2_table = "260";
$col_2_img = "260px";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width" />
<title><?php print $pageTitle; ?></title>

<?php include '../../_includes/_index-css.php'; ?>

<!--
    Outlook Conditional CSS
      These two style blocks target Outlook 2007 & 2010 specifically, forcing
      columns into a single vertical stack as on mobile clients. This is
      primarily done to avoid the 'page break bug' and is optional.
      More information here:
http://templates.mailchimp.com/development/css/outlook-conditional-css
-->
<!--[if mso 12]>
    <style type="text/css">
      .flexibleContainer{display:block !important; width:100% !important;}
    </style>
<![endif]-->
<!--[if mso 14]>
    <style type="text/css">
      .flexibleContainer{display:block !important; width:100% !important;}
    </style>
<![endif]-->

</head>
<body>
  <center>
  <table border="0" cellpadding="0" cellspacing="0" height="100%"
    width="100%" id="bodyTable">
    <tr>
      <td align="center" valign="top" id="bodyCell">

        <!-- EMAIL CONTAINER -->
        <?php include 'content/en_index.php'; ?>

      </td>
    </tr>
  </table>
  </center>
</body>
</html>