diff --git a/scripts/commonFiles/Checkmark.gif b/scripts/commonFiles/Checkmark.gif
new file mode 100755
index 0000000..689e523
--- /dev/null
+++ b/scripts/commonFiles/Checkmark.gif
Binary files differ
diff --git a/scripts/commonFiles/DL.footer.php.html b/scripts/commonFiles/DL.footer.php.html
new file mode 100644
index 0000000..4563086
--- /dev/null
+++ b/scripts/commonFiles/DL.footer.php.html
@@ -0,0 +1,81 @@
+
+</div>
+</main>
+<!-- /#main-content-container-row -->
+<p id="back-to-top">
+  <a class="visible-xs" href="#top">Back to the top</a>
+</p>
+<footer role="contentinfo">
+
+  <div class="container">
+
+    <div class="row">
+      <section id="footer-eclipse-foundation" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0 hidden-print">
+        <h2 class="section-title">Eclipse Foundation</h2>
+        <ul class="nav">
+          <li><a href="http://eclipse.org/org/">About us</a></li>
+          <li><a href="http://eclipse.org/org/foundation/contact.php">Contact Us</a></li>
+          <li><a href="http://eclipse.org/donate">Donate</a></li>
+          <li><a href="http://eclipse.org/org/documents/">Governance</a></li>
+          <li><a href="http://eclipse.org/artwork/">Logo and Artwork</a></li>
+          <li><a href="http://eclipse.org/org/foundation/directors.php">Board of Directors</a></li>
+        </ul>
+      </section>
+      <section id="footer-legal" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0 hidden-print ">
+        <h2 class="section-title">Legal</h2>
+        <ul class="nav">
+          <li><a href="http://eclipse.org/legal/privacy.php">Privacy Policy</a></li>
+          <li><a href="http://eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
+          <li><a href="http://eclipse.org/legal/copyright.php">Copyright Agent</a></li>
+          <li><a href="http://eclipse.org/org/documents/epl-v10.php">Eclipse Public License </a></li>
+          <li><a href="http://eclipse.org/legal/">Legal Resources </a></li>
+
+        </ul>
+      </section>
+
+      <section id="footer-useful-links" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0 hidden-print">
+        <h2 class="section-title">Useful Links</h2>
+        <ul class="nav">
+          <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li>
+          <li><a href="//help.eclipse.org/">Documentation</a></li>
+          <li><a href="http://eclipse.org/contribute/">How to Contribute</a></li>
+          <li><a href="http://eclipse.org/mail/">Mailing Lists</a></li>
+          <li><a href="http://eclipse.org/forums/">Forums</a></li>
+          <li><a href="//marketplace.eclipse.org">Marketplace</a></li>
+        </ul>
+      </section>
+
+      <section id="footer-other" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0 hidden-print">
+
+        <h2 class="section-title">Other</h2>
+        <ul class="nav">
+          <li><a href="http://eclipse.org/ide/">IDE and Tools</a></li>
+          <li><a href="http://eclipse.org/projects">Community of Projects</a></li>
+          <li><a href="http://eclipse.org/org/workinggroups/">Working Groups</a></li>
+        </ul>
+
+        <ul class="list-inline social-media">
+          <li><a href="https://twitter.com/EclipseFdn"><i class="fa fa-twitter-square"></i></a></li>
+          <li><a href="https://plus.google.com/+Eclipse"><i class="fa fa-google-plus-square"></i></a></li>
+          <li><a href="https://www.facebook.com/eclipse.org"><i class="fa fa-facebook-square"></i> </a></li>
+          <li><a href="https://www.youtube.com/user/EclipseFdn"><i class="fa fa-youtube-square"></i></a></li>
+        </ul>
+
+      </section>
+      <div id="copyright" class="col-xs-offset-1 col-sm-14 col-md-24 col-md-offset-0">
+        <div>
+          <span class="hidden-print"><img
+            src="/eclipse.org-common/themes/solstice/public/images/logo/eclipse-logo-bw-800x188.png"
+            alt="Eclipse.org black and white logo" width="166" height="39" id="logo-eclipse-white" /></span>
+          <p id="copyright-text">Copyright &copy; 2014 The Eclipse Foundation. All Rights Reserved.</p>
+        </div>
+      </div>
+      <a href="#" class="scrollup">Back to the top</a>
+    </div>
+  </div>
+</footer>
+
+<!-- Placed at the end of the document so the pages load faster -->
+<script src="/eclipse.org-common/themes/solstice/public/javascript/main.min.js"></script>
+</body>
+</html>
diff --git a/scripts/commonFiles/DL.header.php.html b/scripts/commonFiles/DL.header.php.html
new file mode 100644
index 0000000..cdee029
--- /dev/null
+++ b/scripts/commonFiles/DL.header.php.html
@@ -0,0 +1,279 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="author" content="Christopher Guindon" />
+<meta name="keywords" content="eclipse.org, Eclipse Foundation" />
+<link href="//fonts.googleapis.com/css?family=Open+Sans:400,700,300,600,100" rel="stylesheet" type="text/css">
+<link rel="shortcut icon" href="/eclipse.org-common/themes/solstice/public/images/favicon.ico" />
+<title><?php echo $pageTitle;?></title>
+
+<link rel="stylesheet" href="/eclipse.org-common/themes/solstice/public/stylesheets/styles.min.css">
+
+<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+<!--[if lt IE 9]>
+    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
+    <![endif]-->
+
+<style>
+td, th {
+  font-family: monospace, monospace;
+  padding-left: 1em;
+  padding-top: .25em;
+  padding-bottom: .25em;
+  padding-right: 0;
+  text-align: left;
+  vertical-align: top;
+}
+
+table.downloads {
+  font-family: monospace, monospace;
+  width: 80%;
+  margin-left: auto;
+  margin-right: auto;
+  border-collapse: collapse;
+}
+
+td.latest {
+  text-align: left;
+  padding-left: 1em;
+  padding-top: .25em;
+  padding-bottom: .25em;
+  padding-right: 0;
+  width: 100%;
+  background-color: #3b335a;
+  color: #FFFFFF;
+  colspan: 3;
+}
+
+td.main {
+  text-align: left;
+  padding-left: 1em;
+  padding-top: .25em;
+  padding-bottom: .25em;
+  padding-right: 0;
+  width: 100%;
+  background-color: #76708C;
+  color: #FFFFFF;
+}
+
+td.main {
+  text-align: left;
+  padding-left: 1em;
+  padding-top: .25em;
+  padding-bottom: .25em;
+  padding-right: 0;
+  width: 100%;
+  background-color: #76708C;
+  color: #FFFFFF;
+}
+
+td.name {
+  width: 20%;
+  padding-left: 2em;
+  text-align: left;
+}
+
+th.name {
+  width: 20%;
+  text-align: left;
+  text-style: bold;
+}
+
+td.status {
+  padding-left: 2em;
+  text-align: left;
+}
+
+th.status {
+  text-align: left;
+  text-style: bold;
+}
+
+td.date {
+  width: 30%;
+  padding-left: 2em;
+  text-align: left;
+}
+
+th.date {
+  width: 30%;
+  text-align: left;
+  text-style: bold;
+}
+
+img.cs { /* character size image */
+  border: 0;
+  width: 1em;
+  height: 1em;
+  vertical-align: text-bottom;
+  margin: 0 0.5em 0 0;
+}
+</style>
+
+</head>
+<body class="" id="body_solstice">
+  <a class="sr-only" href="#content">Skip to main content</a>
+  <header role="banner">
+    <div class="container">
+
+      <div id="row-toolbar" class="text-right hidden-print">
+
+        <div id="row-toolbar-col" class="col-md-24">
+          <ul class="list-inline">
+            <!-- leaving space instead of "sign in" -->
+            <li>&nbsp;</li>
+            <li>&nbsp;</li>
+          </ul>
+        </div>
+
+      </div>
+
+      <div id="row-logo-search">
+        <div id="header-left" class="col-sm-14 col-md-16 col-lg-19">
+          <div class="row">
+            <div class="hidden-xs">
+              <a href="http://eclipse.org/"><img
+                src="/eclipse.org-common/themes/solstice/public/images/logo/eclipse-800x188.png" alt="Eclipse.org logo"
+                class="logo-eclipse-default img-responsive" /></a>
+            </div>
+            <div id="main-menu" class="navbar row yamm">
+              <div id="navbar-collapse-1" class="navbar-collapse collapse">
+                <ul class="nav navbar-nav">
+                  <li><a href="http://eclipse.org/users/" target="_self">Getting Started </a></li>
+                  <li><a href="http://eclipse.org/membership/" target="_self">Members</a></li>
+                  <li><a href="http://eclipse.org/projects/" target="_self">Projects</a></li>
+                  <li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community <b
+                      class="caret"></b></a>
+                    <ul class="dropdown-menu">
+                      <li><a href="http://marketplace.eclipse.org">Marketplace</a></li>
+                      <li><a href="http://events.eclipse.org">Events</a></li>
+                      <li><a href="//www.planeteclipse.org/">Planet Eclipse</a></li>
+                      <li><a href="http://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li>
+                      <li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li>
+                    </ul></li>
+                  <li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Participate <b
+                      class="caret"></b></a>
+                    <ul class="dropdown-menu">
+                      <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li>
+                      <li><a href="http://eclipse.org/forums/">Forums</a></li>
+                      <li><a href="http://eclipse.org/mail/">Mailing Lists</a></li>
+                      <li><a href="https://wiki.eclipse.org/">Wiki</a></li>
+                      <li><a href="https://wiki.eclipse.org/IRC">IRC</a></li>
+                      <li><a href="http://eclipse.org/contribute/">How to Contribute</a></li>
+                    </ul></li>
+                  <li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Working Groups
+                      <b class="caret"></b>
+                  </a>
+                    <ul class="dropdown-menu">
+                      <li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li>
+                      <li><a href="http://iot.eclipse.org">Internet of Things</a></li>
+                      <li><a href="http://locationtech.org">LocationTech</a></li>
+                      <li><a href="http://lts.eclipse.org">Long-Term Support</a></li>
+                      <li><a href="http://polarsys.org">PolarSys</a></li>
+                      <li><a href="http://science.eclipse.org">Science</a></li>
+                    </ul></li>
+                  <!-- More -->
+                  <li class="dropdown hidden-xs"><a data-toggle="dropdown" class="dropdown-toggle">More<b class="caret"></b></a>
+                    <ul class="dropdown-menu">
+                      <li>
+                        <!-- Content container to add padding -->
+                        <div class="yamm-content">
+                          <div class="row">
+                            <ul class="col-sm-8 list-unstyled">
+                              <li><p>
+                                  <strong>Community</strong>
+                                </p></li>
+                              <li><a href="http://marketplace.eclipse.org">Marketplace</a></li>
+                              <li><a href="http://events.eclipse.org">Events</a></li>
+                              <li><a href="//www.planeteclipse.org/">Planet Eclipse</a></li>
+                              <li><a href="http://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li>
+                              <li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li>
+                            </ul>
+                            <ul class="col-sm-8 list-unstyled">
+                              <li><p>
+                                  <strong>Participate</strong>
+                                </p></li>
+                              <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li>
+                              <li><a href="http://eclipse.org/forums/">Forums</a></li>
+                              <li><a href="http://eclipse.org/mail/">Mailing Lists</a></li>
+                              <li><a href="https://wiki.eclipse.org/">Wiki</a></li>
+                              <li><a href="https://wiki.eclipse.org/IRC">IRC</a></li>
+                              <li><a href="http://eclipse.org/contribute/">How to Contribute</a></li>
+                            </ul>
+                            <ul class="col-sm-8 list-unstyled">
+                              <li><p>
+                                  <strong>Working Groups</strong>
+                                </p></li>
+                              <li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li>
+                              <li><a href="http://iot.eclipse.org">Internet of Things</a></li>
+                              <li><a href="http://locationtech.org">LocationTech</a></li>
+                              <li><a href="http://lts.eclipse.org">Long-Term Support</a></li>
+                              <li><a href="http://polarsys.org">PolarSys</a></li>
+                              <li><a href="http://science.eclipse.org">Science</a></li>
+                            </ul>
+                          </div>
+                        </div>
+                      </li>
+                    </ul></li>
+                </ul>
+              </div>
+              <div class="navbar-header">
+                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
+                  <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span
+                    class="icon-bar"></span> <span class="icon-bar"></span>
+                </button>
+                <a href="http://eclipse.org/" class="navbar-brand visible-xs"><img
+                  src="/eclipse.org-common/themes/solstice/public/images/logo/eclipse-800x188.png" alt="Eclipse.org logo"
+                  width="180" class="logo-eclipse-default" /></a>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div id="header-right" class="form-inline col-sm-10 col-md-8 col-lg-5 hidden-print hidden-xs">
+          <div id="header-right-container">
+            <div id="custom-search-form">
+              <form action="//www.google.com/cse" id="form-eclipse-search" role="form" class="input-group">
+                <input type="hidden" name="cx" value="017941334893793413703:sqfrdtd112s" /> <input id="search-box"
+                  placeholder="Search eclipse.org" type="text" name="q" size="25" class="form-control" /> <span
+                  class="input-group-btn">
+                  <button class="btn btn-default" type="submit">
+                    <i class="fa fa-search"></i>
+                  </button>
+                </span>
+              </form>
+            </div>
+            <!-- /input-group -->
+            <script type="text/javascript"
+              src="//www.google.com/coop/cse/brand?form=searchbox_017941334893793413703%3Asqfrdtd112s&amp;lang=en"></script>
+            <a id="btn-call-for-action" href="http://eclipse.org/downloads/" class="btn btn-huge btn-warning"><i
+              class="fa fa-download"></i> Packages</a>
+          </div>
+        </div>
+
+      </div>
+
+    </div>
+  </header>
+  <section id="breadcrumb" class="defaut-breadcrumbs hidden-print">
+    <div class="container">
+      <ol class="breadcrumb">
+        <li><a href="https://www.eclipse.org/">Home</a></li>
+        <li><a href="https://www.eclipse.org/projects/">Projects</a></li>
+        <li><a href="https://www.eclipse.org/orbit/">Orbit</a></li>
+        <?php
+          if (isset($previousCrumb)) {
+             echo "$previousCrumb";
+          }
+        ?>
+        <li class="active">
+          <?= $pageTitle ?>
+        </li>
+      </ol>
+    </div>
+  </section>
+  <main role="main">
+  <div class="container background-image-none" id="novaContent">
diff --git a/scripts/commonFiles/Fail.gif b/scripts/commonFiles/Fail.gif
new file mode 100755
index 0000000..28bba66
--- /dev/null
+++ b/scripts/commonFiles/Fail.gif
Binary files differ
diff --git a/scripts/commonFiles/Questionmark.gif b/scripts/commonFiles/Questionmark.gif
new file mode 100755
index 0000000..c75a4b9
--- /dev/null
+++ b/scripts/commonFiles/Questionmark.gif
Binary files differ
diff --git a/scripts/commonFiles/coolGears.png b/scripts/commonFiles/coolGears.png
new file mode 100755
index 0000000..db8ba89
--- /dev/null
+++ b/scripts/commonFiles/coolGears.png
Binary files differ
diff --git a/scripts/commonFiles/orbitUtilities.php b/scripts/commonFiles/orbitUtilities.php
new file mode 100644
index 0000000..d4b7beb
--- /dev/null
+++ b/scripts/commonFiles/orbitUtilities.php
@@ -0,0 +1,343 @@
+<?php
+$bundlesToUnzipList = array ();
+function cleanup($string) {
+  $result = str_replace ( "\n", "", $string );
+  $result = str_replace ( "\r", "", $result );
+  $result = trim ( $result );
+  return $result;
+}
+class BundleToUnzip {
+  public $id = "";
+  public $version = "";
+  function __construct($id, $version) {
+    $this->id = trim ( $id );
+    $this->version = trim ( $version );
+  }
+}
+class Bundle {
+  public $symbolicId = "";
+  public $version = "";
+  public $qualifier = "";
+  public $fullfilename = "";
+  public $pack = "";
+  public $cq = "";
+  public $name = "";
+  public $email = "";
+  public $note = "";
+  public $sourceBundle;
+  function __construct($aFullFileNameEntry, $logmissingipdata) {
+    $START_GROUP = "(";
+    $END_GROUP = ")";
+    $UNDERSCORE = "_";
+    $BACKSLASH = "\\";
+    $LITERAL_PERIOD = "\\.";
+    $ANYDIGITS = "\d*";
+    $ANY = ".*";
+    $ZERO_OR_ONE = "?";
+    $PERL_DELIM = "/";
+
+    $this->fullfilename = $aFullFileNameEntry;
+
+    $pattern = $PERL_DELIM . $START_GROUP . $ANY . $END_GROUP . $UNDERSCORE . $START_GROUP . $ANYDIGITS . $LITERAL_PERIOD . $ANYDIGITS . $LITERAL_PERIOD . $ANYDIGITS . $END_GROUP . $LITERAL_PERIOD . $ZERO_OR_ONE . $START_GROUP . $ANY . $END_GROUP . $ZERO_OR_ONE . $LITERAL_PERIOD . $START_GROUP . "zip" . "|" . "jar" . $END_GROUP . $PERL_DELIM;
+
+    // echo "";
+    // echo "pattern: " . $pattern . "<br />";
+    // echo "input: " . $this->fullfilename . "<br />";
+    // echo "";
+    $validMatch = preg_match ( $pattern, $aFullFileNameEntry, $matches );
+    if ($validMatch) {
+      // $item = 0;
+      // foreach ($matches as $match) {
+      // echo "match " . $item . ": " . $match . "<br />";
+      // $item = $item + 1;
+      // }
+      $this->symbolicId = trim ( $matches [1] );
+      $this->version = trim ( $matches [2] );
+      if (array_key_exists ( 3, $matches )) {
+        $this->qualifier = $matches [3];
+      }
+      $this->pack = checkPacked ( $this->symbolicId, $this->version );
+    } else {
+      $this->symbolicId = "Error: apparently not a valid bundle name/version: " . $this->fullfilename;
+    }
+
+    $xmldatafile = "ip_logs/" . $this->symbolicId . ".xml";
+    // echo "filename: " . $xmldatafile . "<br />";
+    if (file_exists ( $xmldatafile )) {
+      // Load the XML source
+      $xml = new DOMDocument ();
+      $xml->load ( $xmldatafile );
+      // find the version element
+
+      $xpath = new DOMXPath ( $xml );
+      $projectNodes = $xpath->query ( "//project[@version='$this->version']" );
+      $nNodes = $projectNodes->length;
+      if ($nNodes > 0) {
+        $projectNode = $projectNodes->item ( 0 );
+        $zElements = $projectNode->getElementsByTagName ( "ipzilla" );
+        foreach ( $zElements as $zElement ) {
+          $this->cq = $zElement->getAttribute ( "bug_id" );
+        }
+
+        $cElements = $projectNode->getElementsByTagName ( "contact" );
+        foreach ( $cElements as $cElement ) {
+          $nElement = $cElement->getElementsByTagName ( "name" );
+          $this->name = $nElement->item ( 0 )->nodeValue;
+          $this->name = cleanup ( $this->name );
+          $mElement = $cElement->getElementsByTagName ( "email" );
+          $this->email = $mElement->item ( 0 )->nodeValue;
+          $this->email = cleanup ( $this->email );
+          $this->email = str_replace ( "@", "*at*", $this->email );
+        }
+
+        // TODO: avoid the html markup <p> by using an array, or similar
+        $notesElements = $projectNode->getElementsByTagName ( "notes" );
+        foreach ( $notesElements as $notesElement ) {
+          $noteElement = $notesElement->getElementsByTagName ( "note" );
+          foreach ( $noteElement as $niElement ) {
+            $notevalue = $niElement->nodeValue;
+            $notevalue = cleanup ( $notevalue );
+            if ($notevalue != "") {
+              $this->note = $this->note . "<p>" . $notevalue . "</p>";
+            }
+          }
+        }
+      } else {
+        $this->cq = "No project info for this version?";
+        if ($logmissingipdata) {
+          // source handled differently, elsewhere
+          if (! endsWith ( $xmldatafile, "source.xml" )) {
+            writeIPLogError ( $xmldatafile, $this->cq, $this->version );
+          }
+        }
+      }
+    } else {
+      $this->cq = "No data file found";
+      if ($logmissingipdata) {
+        // source handled differently, elsewhere
+        if (! endsWith ( $xmldatafile, "source.xml" )) {
+          writeIPLogError ( $xmldatafile, $this->cq, null );
+        }
+      }
+    }
+  }
+  function __toString() {
+    return $this->symbolicId . " " . $this->version;
+  }
+}
+function writeIPLogError($ipfilename, $errmessage, $expectedIPLogVersion) {
+  // $ipoutfilename=$_SERVER['DOCUMENT_ROOT']."//iplogFileErrors.txt";
+  // echo "docroot: " . $_SERVER['DOCUMENT_ROOT'] . "\n";
+  // echo "dir: " . __DIR__ . "\n";
+  // echo "file: " . __FILE__ . "\n";
+  global $ipouterrors;
+  // $ipoutfilename=__DIR__."/iplogFileErrors.txt";
+  // $iphandle = fopen($ipoutfilename, "a+b");
+  $writestring = "\nError in IP_log file:\n\t$ipfilename\n\t$errmessage\n";
+  if ($expectedIPLogVersion != null) {
+    $writestring = $writestring . "\tVersion expected in IP log xml file: $expectedIPLogVersion\n";
+  }
+  $ipouterrors [] = $writestring;
+  // if (fwrite($iphandle, $writestring) === false) {
+  // echo "Cannot write to $ipoutfilename. <br />";
+  // }
+  // fclose($iphandle);
+}
+function endsWith($str, $sub) {
+  return (substr ( $str, strlen ( $str ) - strlen ( $sub ) ) === $sub);
+}
+function stripSuffix($str, $suffix) {
+  $result = $str;
+  if (endsWith ( $str, $suffix )) {
+    $pos = strrpos ( $str, $suffix );
+    $result = substr ( $str, 0, $pos );
+  }
+  return $result;
+}
+function getBundle($list, $id, $version) {
+  foreach ( $list as $bundle ) {
+    if ($bundle->symbolicId == $id && $bundle->version == $version) {
+      return $bundle;
+    }
+  }
+}
+function countDistinct($list) {
+  $idList = array ();
+  foreach ( $list as $bundle ) {
+    $idList [$bundle->symbolicId] = $bundle->symbolicId;
+  }
+  return count ( array_unique ( $idList ) );
+}
+function countDistinctCQs($list) {
+  $idList = array ();
+  foreach ( $list as $bundle ) {
+    $idList [$bundle->cq] = $bundle->cq;
+  }
+  return count ( array_unique ( $idList ) );
+}
+function getListOfCQs($list) {
+  $COMMA = "%2C";
+  $idList = "";
+  $moreThanOne = false;
+  foreach ( $list as $bundle ) {
+    if ($moreThanOne) {
+      $idList = $idList . $COMMA . $bundle->cq;
+    } else {
+      $idList = $bundle->cq;
+      $moreThanOne = true;
+    }
+  }
+  return $idList;
+}
+function countTotal($list) {
+  $result = 0;
+  foreach ( $list as $bundle ) {
+    // always one for bundle
+    $result = $result + 1;
+    if (isset ( $bundle->sourceBundle )) {
+      // one for source, if provided
+      $result = $result + 1;
+    }
+  }
+  return $result;
+}
+function getBundleList($dir) {
+
+  // init required data
+  getBundlesToUnzip ();
+
+  // prepare arrary of bundles to display
+  $bundleList = array ();
+
+  // pass 1
+  $aDirectory = dir ( $dir );
+  while ( $anEntry = $aDirectory->read () ) {
+
+    // we are just looking for jar and zip files, no directories, and
+    // just displaying the name
+    if ($anEntry != "." && $anEntry != ".." && ((endsWith ( $anEntry, ".zip" ) || endsWith ( $anEntry, ".jar" )))) {
+
+      // echo "anEntryName: " . $anEntry . "<br />";
+      $aBundle = new Bundle ( $anEntry, true );
+      // echo "";
+      // echo "bundle: " . $aBundle . "<br />";
+      // echo "id: " . $aBundle->symbolicId . "<br />";
+      // echo "";
+
+      if (endsWith ( $aBundle->symbolicId, ".source" )) {
+        // add to matching bundle object
+        // skip source this pass
+      } else {
+        $bundleList [$aBundle->fullfilename] = $aBundle;
+      }
+    }
+  }
+  $aDirectory->close ();
+
+  // pass 2
+  $aDirectory = dir ( $dir );
+  // loop again to pick up source bundles
+  while ( $anEntry = $aDirectory->read () ) {
+
+    // we are just looking for jar and zip files, no directories, and
+    // just displaying the name
+    if ($anEntry != "." && $anEntry != ".." && ((endsWith ( $anEntry, ".zip" ) || endsWith ( $anEntry, ".jar" )))) {
+
+      // echo "anEntryName: " . $anEntry . "<br />";
+      $aBundle = new Bundle ( $anEntry, false );
+      // echo "";
+      // echo "bundle: " . $aBundle . "<br />";
+      // echo "id: " . $aBundle->symbolicId . "<br />";
+      // echo "";
+
+      if (endsWith ( $aBundle->symbolicId, ".source" )) {
+        // add to matching bundle object
+        // this logic assumes source bundle is always found following
+        // regular bundle
+        // may need to make two passes?
+        // also assumes there's just one id-version (i.e. not multiple
+        // qualifiers).
+        $correspondingID = stripSuffix ( $aBundle->symbolicId, ".source" );
+        $correspondingBundle = getBundle ( $bundleList, $correspondingID, $aBundle->version );
+        if (isset ( $correspondingBundle )) {
+          $correspondingBundle->sourceBundle = $aBundle;
+        } else {
+          echo "Logic Error: PHP script found a source bundle, " . $aBundle->symbolicId . ", before the corresponding code bundle";
+        }
+      } else {
+        // skip bundles this time, just getting source bundles
+      }
+    }
+  }
+  $aDirectory->close ();
+
+  return $bundleList;
+}
+function getBuildBaseName($dropDirectory) {
+  // for now, a simply heuristic to get build name ... same as
+  // base directory name. It's done as a seperate function, though,
+  // since
+  // in future, may have to read a property file, or something.
+  return basename ( $dropDirectory );
+}
+function fileSizeForDisplay($filename) {
+  $onekilo = 1024;
+  $onemeg = $onekilo * $onekilo;
+  $criteria = 10 * $onemeg;
+  $scaleChar = "M";
+  if (file_exists ( $filename )) {
+    $zipfilesize = filesize ( $filename );
+    if ($zipfilesize > $criteria) {
+      $zipfilesize = round ( $zipfilesize / $onemeg, 0 );
+      $scaleChar = "M";
+    } else {
+      $zipfilesize = round ( $zipfilesize / $onekilo, 0 );
+      $scaleChar = "K";
+    }
+  } else {
+    $zipfilesize = 0;
+  }
+  $result = "(" . $zipfilesize . $scaleChar . ")";
+  return $result;
+}
+function getBundlesToUnzip() {
+  global $bundlesToUnzipList;
+  $file_handle = fopen ( "bundlesToUnzip.properties", "r" );
+  if ($file_handle !== false) {
+    while ( ! feof ( $file_handle ) ) {
+      $line = fgets ( $file_handle );
+      if (! (strpos ( $line, "#" ) === 0)) {
+        $dataline = explode ( ",", $line );
+        $id = $dataline [0];
+        // guard against blank or empty lines?
+        // TODO: not sure how they get in there to begin with?
+        if (! empty ( $id )) {
+          $version = $dataline [1];
+          $bundleToUnzip = new BundleToUnzip ( $id, $version );
+          $bundlesToUnzipList [] = $bundleToUnzip;
+        }
+      }
+    }
+    fclose ( $file_handle );
+  }
+  return $bundlesToUnzipList;
+}
+function checkPacked($id, $version) {
+  // echo "id: $id version: $version \n <br />";
+  global $bundlesToUnzipList;
+  $result = "";
+  $arrayLength = sizeof ( $bundlesToUnzipList );
+  for($i = 0; $i < $arrayLength; $i ++) {
+    $bundleToUnzip = $bundlesToUnzipList [$i];
+    // echo " compareBundleToUnzip: id: $bundleToUnzip->id version:
+    // $bundleToUnzip->version \n <br />";
+
+    if ($id == $bundleToUnzip->id && $version == $bundleToUnzip->version) {
+      $result = " (unzip)";
+      break;
+    }
+  }
+  return $result;
+}
+
+?>
diff --git a/scripts/commonFiles/parseProperties.php b/scripts/commonFiles/parseProperties.php
new file mode 100644
index 0000000..482882b
--- /dev/null
+++ b/scripts/commonFiles/parseProperties.php
@@ -0,0 +1,33 @@
+<?php
+
+
+  function parseProperties($filename)
+  {
+    $properties;
+    $i = 0;
+    $handle = fopen($filename, "r");
+    if ($handle)
+    {
+      $size = filesize($filename);
+      $content = fread($handle, $size);
+      fclose($handle);
+
+      $lineArray = explode("\n",$content);
+
+      while(list(,$line) = each($lineArray)) {
+      $line = trim($line);
+      if (strlen($line) > 0) {
+          //echo $line, "<br />";
+          $propertyPair = explode("=", $line);
+          $propertyPair[0] = trim($propertyPair[0], " \"\'");
+          $propertyPair[1] = trim($propertyPair[1], " \"\'");
+
+          $properties[$propertyPair[0]] = $propertyPair[1];
+          $i++;
+      }
+      }
+      }
+    return $properties;
+  }
+
+?>
diff --git a/scripts/commonFiles/processDropDirectory.php b/scripts/commonFiles/processDropDirectory.php
new file mode 100644
index 0000000..3ade74a
--- /dev/null
+++ b/scripts/commonFiles/processDropDirectory.php
@@ -0,0 +1,27 @@
+<?php
+$buildTypePart = substr ( $anEntryLine [2], 0, 1 ); // expect M, I, etc.
+$buckets [$buildBranch] [$buildTypePart] [] = $aDropDirectoryName;
+
+$timePart = substr ( $anEntryLine [2], 1 );
+$year = substr ( $timePart, 0, 4 );
+$month = substr ( $timePart, 4, 2 );
+$day = substr ( $timePart, 6, 2 );
+$hour = substr ( $timePart, 8, 2 );
+$minute = substr ( $timePart, 10, 2 );
+
+$newTimePart = "$year-$month-$day $hour:$minute UTC";
+
+$timeStamp = strtotime ( $newTimePart );
+
+$timeStamps [$buildBranch . "/" . $artifactTimeStamp . $anEntry] = gmdate ( "D, j M Y -- H:i  \(\U\T\C\)", $timeStamp );
+
+if ((sizeof ( $latestTimeStamp [$buildBranch] ) > 0) && (isset ( $latestTimeStamp [$buildBranch] [$buildTypePart] ))) {
+  if ($timeStamp > $latestTimeStamp [$buildBranch] [$buildTypePart]) {
+    $latestTimeStamp [$buildBranch] [$buildTypePart] = $timeStamp;
+    $latestFile [$buildBranch] [$buildTypePart] = $aDropDirectoryName;
+  }
+} else {
+  $latestTimeStamp [$buildBranch] [$buildTypePart] = $timeStamp;
+  $latestFile [$buildBranch] [$buildTypePart] = $aDropDirectoryName;
+}
+?>
\ No newline at end of file
diff --git a/scripts/commonFiles/tinyReminder.php b/scripts/commonFiles/tinyReminder.php
new file mode 100644
index 0000000..13b3a69
--- /dev/null
+++ b/scripts/commonFiles/tinyReminder.php
@@ -0,0 +1,10 @@
+<?php
+
+// tiny banner to remind when looking at "local" or "test" machine results
+$serverName = $_SERVER["SERVER_NAME"];
+
+
+if (!stristr($serverName, "download.eclipse.org")) {
+    echo "<p style=\"text-align: center;\">Reminder: this is <code>$serverName</code>.  See also <a href=\"http://download.eclipse.org/tools/orbit\">Live public eclipse orbit site</a>.</p>";
+}
+
diff --git a/scripts/dlconfig.php b/scripts/dlconfig.php
index 826874c..318e329 100644
--- a/scripts/dlconfig.php
+++ b/scripts/dlconfig.php
@@ -1,4 +1,4 @@
 <?php
 
-$relativePath="http://download.eclipse.org/tools/orbit";
+$relativePath=".";
 $previousCrumb="<li><a href=\"http://download.eclipse.org/tools/orbit/downloads/\">Orbit Downloads</a></li>";
diff --git a/scripts/iplog.php b/scripts/iplog.php
index ccefbc2..badfa0b 100644
--- a/scripts/iplog.php
+++ b/scripts/iplog.php
@@ -12,7 +12,7 @@
 }
 $ipouterrors= array();
 
-//include $relativePath."/commonFiles/orbitUtilities.php";
+include $relativePath."/commonFiles/orbitUtilities.php";
 // previous page is for "bread crumbs"
 
 # get path to use when resolving relative children repositories
