Add commonFiles folder to make include/require statements relative.
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