/**
 * jobExperience.js: defines JobExperience class
 * javascript job class and objects used by resume
 */

/**
 * JobExperience class constructor
 * 1) Instantiate with required parameters (jobAbbrev, jobName, etc.)
 *    Note: object name must match jobAbbrev (used to construct unique id for each job)
 * 2) Set lessExp (required) and moreExp (optional)
 * 3) Call printLess() in web page
 */
function JobExperience( jobAbbrev, jobName, jobLink, jobCity, jobTitle, jobDates )
{
   this.jobAbbrev = jobAbbrev;    // *** must match object name and be unique for each job
   this.jobName   = jobName;      // required: name of company
   this.jobLink   = jobLink;      // optional: link to company's website
   this.jobCity   = jobCity;      // required: city in which work was done
   this.jobTitle  = jobTitle;     // optional: job title, show promotions if applic.
   this.jobDates  = jobDates;     // required: begin and end dates

   this.lessExp   = '';           // text to print on page load and when 'Less' pressed
   this.moreExp   = '';           // text to print when 'More' pressed

   //
   // Note that jobAbbrev is used:
   // o to create a unique id for the content and
   // o to identify the object that handles the onclick event
   //
   this.contentId = this.jobAbbrev + 'Content';
   this.lessImgTag =
      ' <img src="images/less-plain.jpg" border="0" ' +
          'value="Less" alt="Less" name="less" title="Show fewer details about this position" ' +
          'onmouseover="lessStatus(); this.src=\'images/less-hover.jpg\'; return true;" ' +
          'onmouseout="setStatusToDefault(); this.src=\'images/less-plain.jpg\'; return true;" ' +
          'onclick="' + this.jobAbbrev + '.replaceExp(\'less\');" \>' + "\n";
   this.moreImgTag =
      ' <img src="images/more-plain.jpg" border="0" ' +
          'value="More" alt="More" name="more" title="Show more details about this position" ' +
          'onmouseover="moreStatus(); this.src=\'images/more-hover.jpg\'; return true;" ' +
          'onmouseout="setStatusToDefault(); this.src=\'images/more-plain.jpg\'; return true;" ' +
          'onclick="' + this.jobAbbrev + '.replaceExp(\'more\');" \>' + "\n";
}

/**
 * prints the link containing the company name; prints city, title (optional),and dates
 */
JobExperience.prototype.printStart = function()
{
   document.write( '<li>' );
   document.write( ' <a name="' + this.jobAbbrev + '"></a>' );

   if ( this.jobLink == "" )
   {
      document.write( '<a class="nolink" name="' + this.jobName + '">' );   // not sure we need this anchor tag but
      document.write( '<strong><u>' + this.jobName + '</u></strong></a>' ); // having it keeps things consistent
   }  
   else
   {
      document.write(
         '<a id="' + this.jobName + '" href="' + this.jobLink + '" ' +
            'onMouseOver="companyStatus();return true;" ' +
            'onMouseOut="setStatusToDefault();return true;" ' +
            'title="Opens link in separate window" ' +
            'target="_blank"><strong>' + this.jobName + '</strong>' +
         '</a>'
      ); 
   }  

   document.write( ', ' + this.jobCity + '<br \>' );

   if ( this.jobTitle != "" )
   {
      document.write( this.jobTitle + '<br />' );
   }

   document.write( this.jobDates + '<br />' );
}

/**
 * prints the initial text, from the job heading (company name, etc.) to the experience (Less initially)
 */
JobExperience.prototype.printLess = function()
{
   var expDivContent;

   this.printStart();

   if ( this.moreExp == '' )         // if moreExp is blank
   {                                 // don't print More button (e.g. javacert)
      expDivContent = this.lessExp;
   }
   else
   {
      expDivContent = this.lessExp + this.moreImgTag;
   }

   document.write( '<div id="' + this.contentId + '">' + "\n" + expDivContent + '</div>' + "\n" );
}

/**
 * event handler for the buttons' onclick event
 * finds node and replaces its current text with specified more/less text
 */
JobExperience.prototype.replaceExp = function(moreOrLess)
{
   var nodeToChange = getById( this.contentId );
   var newData;

   if ( moreOrLess == 'more' )
   {
      newData = this.moreExp + this.lessImgTag;
   }
   else
   {
      newData = this.lessExp + this.moreImgTag;
   }

   if ( nodeToChange && nodeToChange.nodeType == Node.ELEMENT_NODE)
   {
      nodeToChange.innerHTML = newData;
   }
   else
   {
      var contentIdType = myTypeOf (this.contentId);
      var nodeToChangeType = myTypeOf (nodeToChange);
      document.write( "<p>JobExperience::replaceExp - contentId not an element in document!<br />" );
      document.write( "this.contentId = " + this.contentId + "<br />\n" );
      document.write( "myTypeOf (conentId) = " + contentIdType + '<br />' );
      document.write( "myTypeOf (nodeToChange) = " + nodeToChangeType + '<br />' );
      document.write( "</p>\n" );
   }

}

//
// ===============================================================
// ===============================================================
// =-> Instances of JobExperience class - 1 for each real job <-+=
// ===============================================================
// ===============================================================
//
// Note: Variable name must match jobAbbrev
//    We use the jobAbbrev as the object name when we set up the event handlers
//
//
// *************************************
// *** TEMPLATE FOR NEW OBJECTS/JOBS ***
// *************************************
//
// xxx: 
// ------------------------------------
//
var xxx = new JobExperience(
   'xxx',
   'Company',
   'http://www.groja.com/',
   'Denver, CO', 
   'Webmaster', 
   'startMonth, 200x through endMonth, 200x'
);

xxx.lessExp =
   '<ul>' + "\n" +
   ' <li>' + ' ' + '</li>' +"\n" +
   '</ul>' + "\n";
xxx.moreExp =
   '<ul>' + "\n" +
   ' <li>' + ' ' + '</li>' +"\n" +
   '</ul>' + "\n";

//
// hudsonit: On contract to The Magellan Networks
// ----------------------------------------------
// 2009/07/27-2009/08/07
//
var hudsonit = new JobExperience(
   'hudsonit',
   'Hudson IT',
   'http://hudson.com/',
   'Denver, CO', 
   'Consultant', 
   'July, 2009 through August, 2009'
);

hudsonit.lessExp =
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.gotmn.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
      'The Magellan Network</a>: ' +
      'Helped team get started with Joomla by installing it and LAMP on Red Hat, SuSE and Ubuntu, ' +
       'giving them a guided tour of the CMS, and answering their questions. ' +
      'Researched extensions and wrote module in PHP allowing users to change content in the front end.' + '</li>' +"\n" +
   '</ul>' + "\n";
hudsonit.moreExp =
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.gotmn.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
      'The Magellan Network</a>: ' +
   '  <ul>' + "\n" +
   '   <li>' + 'Installed LAMP and Joomla on Red Hat, SuSE and Ubuntu, answered questions about Linux and ' +
      'the Content Management System, and wrote documents describing how to install and use it.' + '</li>' +"\n" +
   '   <li>' + 'Researched available extensions and wrote a module in PHP ' +
      'allowing logged-in users to edit articles in the front end.' + '</li>' +"\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   '</ul>' + "\n";

//
// msag: MSAG Data Consultants
// ---------------------------
// 2009/05/27-2009/06/25
//
var msag = new JobExperience(
   'msag',
   'MSAG Data Consultants',
   'http://www.msag.com/',
   'Denver, CO', 
   'Independent Contractor', 
   'May, 2009 through June, 2009'
);

msag.lessExp =
   '<ul>' + "\n" +
   ' <li>' + 'Used Javascript, Java, CSS, HTML, ASP, Visual Basic, and Visual Studio to fix browser compatibility issues ' +
      'in on-line Autodesk MapGuide maps.' + '</li>' +"\n" +
   '</ul>' + "\n";
msag.moreExp =
   '<ul>' + "\n" +
   ' <li>' + 'Used Javascript, Java, CSS, HTML, ASP, Visual Basic, and Visual Studio to fix browser compatibility issues ' +
      'in on-line Autodesk MapGuide maps.' + '</li>' +"\n" +
   ' <li>' + 'Changed maps to use a Java-based viewer rather than one based on Active X.' + '</li>' +"\n" +
   '</ul>' + "\n";

//
// groja3: groja.com + joomla!
// ---------------------------
//
var groja3 = new JobExperience(
   'groja3',
   'groja.com',
   'http://www.groja.com', 
   'Denver, CO', 
   'Webmaster', 
   'January, 2008 through May, 2009'
);

groja3.lessExp = 
   '<ul>' + "\n" +
   ' <li>Used Joomla (a Content Management System) to implement tomhartung.com and groja.com.</li>' + "\n" +
   ' <li>Designed and wrote a Joomla component using Javascript and the Mootools Javascript library ' +
         'that displays a gallery of images, optionally allowing users to ' +
         'resize images with their mouse wheel.</li>' + "\n" +
   ' <li>Designed and wrote a Joomla template, component, and module using PHP5, Javascript, Mootools, and ' +
         'AJAX that allows users to customize the site\'s appearance (font size, border width, etc.).  ' +
         'Changes appear in real time and original Javascript classes save values in a cookie or the database, ' +
         'depending on configuration parameters.</li>' + "\n" +
   ' <li>Designed and wrote a Joomla component using Joomla\'s MVC (Model,View, Controller) API, integrating ' +
         'existing code and converting it from PHP4 to PHP5. ' +
        'Component includes four forms for inputing personality data, draws images of personalities, and ' +
          'stores personality and image data in a MySql database when the user is logged in to the site, or ' +
          'in cookies when user is not logged in. ' +
        'Used LAMP, (Linux, Apache,  MySql, PHP), Javascript, Mootools, XHTML, XML, and CSS on Linux (Gentoo).</li>' + "\n" +
   ' <li>Wrote several articles detailing the inner workings of groja.com, including one ' +
         '<a href="http://groja.com/index.php/blog/technical/101-how-grojacom-uses-the-joomla-mvc-api" ' +
           'onMouseOver="linkStatus();return true;" ' +
           'onMouseOut="setStatusToDefault();return true;" ' +
           'title="Opens link in separate window" ' +
           'target="_blank">describing how the site uses Joomla\'s MVC API</a>, ' +
        'one ' +
         '<a href="http://groja.com/index.php/blog/technical/103-how-grojacom-uses-javascript-and-mootools" ' +
          'onMouseOver="linkStatus();return true;" ' +
           'onMouseOut="setStatusToDefault();return true;" ' +
           'title="Opens link in separate window" ' +
           'target="_blank">describing how the site uses Javascript and the Mootools Javascript library</a>, ' +
        'and one ' +
         '<a href="http://groja.com/index.php/blog/technical/104-core-grojacom-classes" ' +
          'onMouseOver="linkStatus();return true;" ' +
           'onMouseOut="setStatusToDefault();return true;" ' +
           'title="Opens link in separate window" ' +
           'target="_blank">describing the site\'s core classes</a>.</li>' + "\n" +
   ' <li>Ensured that all original components work properly on all popular browsers.</li>' + "\n" +
   '</ul>' + "\n";

groja3.moreExp = 
   '<ul>' + "\n" +
   ' <li>Used Joomla (a Content Management System) to implement tomhartung.com and groja.com.</li>' + "\n" +
   ' <li>Designed and wrote a Joomla component using Javascript and the Mootools Javascript library ' +
         'that displays a gallery of images, optionally allowing users to ' +
         'resize images with their mouse wheel.</li>' + "\n" +
   ' <li>Designed and wrote a Joomla template, component, and module using PHP5, Javascript, Mootools, and ' +
         'AJAX that allows users to customize the site\'s appearance (font size, border width, etc.).  ' +
         'Changes appear in real time and original Javascript classes save values in a cookie or the database, ' +
         'depending on configuration parameters.</li>' + "\n" +
   ' <li>Designed and wrote a Joomla component using Joomla\'s MVC (Model,View, Controller) API, integrating ' +
         'existing code and converting it from PHP4 to PHP5. ' +
        'Component includes four forms for inputing personality data, draws images of personalities, and ' +
          'stores personality and image data in cookies or a MySql database, ' +
          'depending on whether user is logged in to site.  ' +
        'Used LAMP, (Linux, Apache,  MySql, PHP), Javascript, Mootools, XHTML, XML, and CSS on Linux (Gentoo).</li>' + "\n" +
   ' <li>Wrote several articles documenting the site\'s design and evolution.</li>' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Wrote a formal ' +
         '<a href="http://groja.com/index.php/blog/technical/101-how-grojacom-uses-the-joomla-mvc-api" ' +
          'onMouseOver="linkStatus();return true;" ' +
          'onMouseOut="setStatusToDefault();return true;" ' +
          'title="Opens link in separate window" ' +
          'target="_blank">article describing how the site uses Joomla\'s MVC API</a>.  ' +
         'This is a long and very technical article that contains UML class diagrams showing ' +
          'how custom groja classes inherit from Joomla\'s MVC API classes.</li>' + "\n" +
   '   <li>Wrote an ' +
         '<a href="http://groja.com/index.php/blog/technical/103-how-grojacom-uses-javascript-and-mootools" ' +
          'onMouseOver="linkStatus();return true;" ' +
          'onMouseOut="setStatusToDefault();return true;" ' +
          'title="Opens link in separate window" ' +
          'target="_blank">article describing how the site uses Javascript and Mootools</a>. ' +
         'This article describes how the com_template_parameters component uses ' +
          'the Mootools Javascript library to allow the user to customize the site\'s appearance and ' +
          'how the com_groja component uses the library to display multiple forms on a single, uncluttered page.</li>' + "\n" +
   '   <li>Wrote a formal ' +
         '<a href="http://groja.com/index.php/blog/technical/104-core-grojacom-classes" ' +
          'onMouseOver="linkStatus();return true;" ' +
          'onMouseOut="setStatusToDefault();return true;" ' +
          'title="Opens link in separate window" ' +
          'target="_blank">article describing groja.com\'s core classes</a>. ' +
         'This article lists the classes ported from earlier versions of the site and, ' +
          'where applicable, contains UML class diagrams showing ' +
          'the inheritance structure used by these classes.</li>' + "\n" +
   '   <li>Wrote a rather informal ' +
         '<a href="http://groja.com/index.php/blog/updates/105-the-evolution-of-grojacom" ' +
          'onMouseOver="linkStatus();return true;" ' +
          'onMouseOut="setStatusToDefault();return true;" ' +
          'title="Opens link in separate window" ' +
          'target="_blank">article describing the different versions of groja.com</a>. ' +
         'This article includes a screenshot along with a description of the functionality of each version.</li>' + "\n" +
   '   <li>Wrote an ' +
         '<a href="http://groja.com/index.php/blog/about-the-groja-quiz/102-the-source-of-groja-quiz-questions" ' +
          'onMouseOver="linkStatus();return true;" ' +
          'onMouseOut="setStatusToDefault();return true;" ' +
          'title="Opens link in separate window" ' +
          'target="_blank">article describing how the groja quiz was written</a>. ' +
        'The 88 questions in the groja quiz come from a variety of sources. ' +
        'This article describes those sources and includes a table listing ' +
         'how many of each type of question came from each source.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' <li>Wrote a paper identifying legal issues and questions and began looking for help with these.</li>' + "\n" +
   ' <li>Ensured that all original components work properly on all popular browsers.</li>' + "\n" +
   '</ul>' + "\n";

//
// mortcad: Mortgage Cadence
// -------------------------
// Tues. 8/4/2007 - Fri. 12/14/2007
//
var mortcad = new JobExperience(
   'mortcad',
   'Mortgage Cadence',
   'http://www.mortgagecadence.com/',
   'Denver, CO', 
   'SDK Developer (Contractor)',
   'August, 2007 through December, 2007'
);

mortcad.lessExp =
   '<ul>' + "\n" +
   ' <li>Documented the Application Programming Interface (API) ' +
       'of a Software Development Kit (SDK) written in C# ' +
       'for a mortage loan origination software package, using ' +
       'Visual Studio, SQL Server, and Visio on Windows XP. ' +
       'Documentation included UML class diagrams and sample programs written in C#.</li>' + "\n" +
   ' <li>Reviewed all SDK documents for consistency, ensuring all contained valid HTML and CSS.</li>' + "\n" +
   '</ul>' + "\n";

mortcad.moreExp =
   '<ul>' + "\n" +
   ' <li>Wrote all documentation for the Best Fit feature of ' +
        'the Application Programming Interface (API) ' +
        'of a Software Development Kit (SDK) written in C# ' +
        'for a mortage loan origination software package. ' +
       'Used Visual Studio, SQL Server, and Visio on Windows XP. ' +
       'Documentation included UML class diagrams and sample programs written in C#.</li>' + "\n" +
   ' <li>Proofread all SDK documents, correcting spelling and grammatical errors as necessary.</li>' + "\n" +
   ' <li>Reviewed all SDK documents for consistency, checking all links and ' +
        'ensuring all files had the correct Doctype declaration. ' +
       'Validated all pages at w3.org, ' +
        'correcting malformed HTML and tags with missing required attributes where necessary.</li>' + "\n" +
   ' <li>Checked documents on relevant versions of Windows, ensuring they looked consistent ' +
        'on all relevant browsers.</li>' + "\n" +
   ' <li>Assisted in writing release notes.</li>' + "\n" +
   '</ul>' + "\n";

//
// saipeople: Sai People Solutions -> Verizon Business
// ---------------------------------------------------
// Tues. 10/31/2006 - Wed. 3/28/2007
//
var saipeople = new JobExperience(
   'saipeople',
   'Sai People Solutions',
   'http://saipeople.com/',
   'Denver, CO', 
   'Applications Developer (Contractor)', 
   'October, 2006 through March, 2007'
);

saipeople.lessExp = 
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.verizonbusiness.com/us/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
      'Verizon Business</a>: ' +
    'Used Model-View-Controller design pattern to design, write, test, implement ' +
      'and maintain programs in ' +
      'Java, JavaScript, JSP, JSTL, XML, HTML, and CSS on Unix (SunOS) that ' +
      'query an Oracle database and create and ' +
      'display web-based reports for call traffic analysis.</li>' + "\n" +
   '</ul>' + "\n";

saipeople.moreExp = 
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.verizonbusiness.com/us/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
      'Verizon Business</a>: ' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Designed a prototype screen and wrote a low level design document ' +
      'describing the Drill-down feature for the ' +
      'Jurisdictional Analysis Reporting System (JARS).</li>' + "\n" +
   '   <li>Used Java, JavaScript, JSP, JSTL, XML, CSS, and HTML on Unix (SunOS) ' +
      'to write, test, and implement ' +
      'a web page containing a form with over thirty input parameters.</li>' + "\n" +
   '   <li>Wrote Java classes based on the Model View Controller (MVC) design pattern ' +
      'to use the form parameters to generate SQL queries, query an Oracle database, and ' +
      'display reports allowing users to investigate the cause of variations over time in ' +
      'Percentage of Interstate Usage (PIU) Factors.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   '</ul>' + "\n";

//
// adea: Adea Solutions -> Ericsson
// --------------------------------
// Mon. 7/10/2006 - Mon. 10/2/2006
//
var adea = new JobExperience(
   'adea',
   'Adea Solutions',
   'http://www.adeasolutions.com/',
   'Boulder, CO', 
   'Contractor', 
   'July, 2006 through October, 2006'
);

adea.lessExp =
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.ericsson.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
      'Ericsson</a>: ' +
    'Wrote scripts in Tcl/Expect, Perl, Xml, and Bash to run and test TTS ' +
      '(an application to automatically test wireless phones) ' +
      'on Linux (Red Hat Enterprise Linux).  ' +
     'Wrote how-to documents and test plans describing how to ' +
      'run and test TTS.</li>' + "\n" +
   '</ul>' + "\n";

adea.moreExp =
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.ericsson.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank"> ' +
      'Ericsson</a>:' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Wrote documentation describing how to build, install, run, and ' +
     'trouble-shoot TTS, an application to automatically test wireless phones.</li>' + "\n" +
   '   <li>Created documentation templates, wrote test plans, and ' +
     'created matrices of test cases to test TTS.</li>' + "\n" +
   '   <li>Wrote and maintained scripts in Tcl/Expect, Perl, Xml, and Bash ' +
     'to automatically run and test TTS on Linux (Red Hat Enterprise Linux), ' +
     'using Rational Clearcase for source control and Enea Element middleware.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   '</ul>' + "\n";

//
// groja2: groja.com -> PHP Nuke
// -----------------------------
//
var groja2 = new JobExperience(
   'groja2',
   'groja.com',
   'http://www.groja.com/',
   'Denver, CO', 
   'Webmaster', 
   'February, 2005 through June, 2006'
);

groja2.lessExp =
   '<ul>' + "\n" +
   ' <li>Integrated version 1 of groja.com into ' +
    '<a href="http://phpnuke.org" ' +
     'onMouseOver="linkStatus();return true;" ' +
     'onMouseOut="setStatusToDefault();return true;" ' +
     'title="Opens link in separate window" ' +
     'target="_blank">PHP-Nuke</a>' +
    ' (a ' +
    '<a href="http://en.wikipedia.org/wiki/Content_Management_System" ' +
     'onMouseOver="linkStatus();return true;" ' +
     'onMouseOut="setStatusToDefault();return true;" ' +
     'title="Opens link in separate window" ' +
     'target="_blank">CMS</a>), ' +
   'using PHP, MySql, HTML, and CSS on Linux (Fedora Core 3 and SuSE 9.1 and 10.0).</li>' + "\n" +
   ' <li>Designed and created MySql tables, PHP classes, and PHP Nuke modules to ' +
    'enable users to store and maintain their ' +
    'preferences, quizzes, personality profiles, and images in a database.  ' +
   'Wrote PHP Nuke modules ' +
    'to describe how the site is organized and how to use it, ' +
    'and to display a gallery of example images and version 1 of site.</li>' + "\n" +
   ' <li>Obtained a static IP address and launched groja.com on a ' +
    'dedicated server running apache on Linux (Gentoo).  ' +
   'Created a LAN consisting of the server, a nearly-identical backup server, and ' +
    'a wireless supporting host running Linux (SuSE 10.0).</li>' + "\n" +
   ' <li>Researched web security and changed server configuration accordingly.  ' +
   'Wrote scripts and contingency plans to aid in monitoring, maintaining, ' +
    'making backups, and recovering the server and supporting hosts.</li>' + "\n" +
   '</ul>' + "\n";

groja2.moreExp =
   '<ul>' + "\n" +
   ' <li>Customized existing ' +
    '<a href="http://phpnuke.org" ' +
     'onMouseOver="linkStatus();return true;" ' +
     'onMouseOut="setStatusToDefault();return true;" ' +
     'title="Opens link in separate window" ' +
     'target="_blank">PHP-Nuke</a> ' +
   'themes, style sheets, and modules for use ' +
   'on version 2 of groja.com site.</li>' + "\n" +
   ' <li>Designed and created tables in MySql and supporting classes in PHP to store user ' +
    'preferences, quizzes, personality profiles, and images.</li>' + "\n" +
   ' <li>Designed and implemented PHP Nuke modules ' +
    'to allow users to specify, create, change, and delete their ' +
    'preferences, quizzes, personality profiles and images ' +
    'in a MySQL database.</li>' + "\n" +
   ' <li>Obtained a static IP address and launched groja.com on a dedicated server ' +
    'running apache on a minimal installation of Linux ' +
    '(<a href="http://gentoo.org" ' +
     'onMouseOver="linkStatus();return true;" ' +
     'onMouseOut="setStatusToDefault();return true;" ' +
     'title="Opens link in separate window" ' +
     'target="_blank">Gentoo</a>).  ' +
   'Created a three-host LAN consisting of the server, a nearly identical backup server, ' +
    'and a wireless dual-boot supporting host running Linux, ' +
    '(<a href="http://www.novell.com/linux/" ' +
     'onMouseOver="linkStatus();return true;" ' +
     'onMouseOut="setStatusToDefault();return true;" ' +
     'title="Opens link in separate window" ' +
     'target="_blank">SuSE 10.0</a>) ' +
    'and Windows XP.</li>' + "\n" +
   ' <li>Wrote PHP Nuke modules to describe how the site is organized and how to use it, ' +
    'to search the site\'s FAQs, ' +
    'to display a gallery of 48 example spiritual portraits in various sequences, ' +
    'to display the site\'s privacy policy, ' +
    'to show users what version 1 of the site looked like, and ' + 
    'to display a single random image.</li>' + "\n" +
   ' <li>Researched web site security and made a variety of changes ' +
    'to ensure groja.com is secure.</li>' + "\n" +
   ' <li>Created and documented contingency plans, procedures, and ' +
    'supporting scripts to aid in monitoring, maintaining, making backups, and ' +
    'quickly recovering the server and supporting hosts.</li>' + "\n" +
   ' <li>Began learning Spanish (mostly for fun).</li>' + "\n" +
   '</ul>' + "\n";

//
// ideaint2: Idea Integration -> Affinity Group Inc.
// -------------------------------------------------
//
var ideaint2 = new JobExperience(
   'ideaint2',
   'Idea Integration',
   'http://www.idea.com/',
   'Englewood, CO', 
   'Independent Contractor', 
   'October, 2004 through January, 2005'
);

ideaint2.lessExp =
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.affinitygroup.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
     'Affinity Group Inc. (AGI)</a>: ' +
     'Analyzed, documented, and converted order fulfillment and campaign population ' +
     'C programs and Korn shell scripts to Perl, on Unix (HP-UX) and Windows XP.</li>' + "\n" +
   '</ul>' + "\n";

ideaint2.moreExp =
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.affinitygroup.com/" ' +
      'onMouseOver="companyStatus();return true;" ' +
      'onMouseOut="setStatusToDefault();return true;" ' +
      'title="Opens link in separate window" ' +
      'target="_blank">' +
      'Affinity Group Inc. (AGI)</a>:' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Analyzed order fulfillment process by examining approximately ' +
        '50,000 lines of C code and 11,000 lines of Korn shell (ksh) code ' +
        'in close to 200 files.</li>' + "\n" +
   '   <li>Traced and documented logic in C and ksh code, especially that ' +
        'which creates output files.</li>' + "\n" +
   '   <li>Converted several C programs to perl, ' +
        'using AGI perl library routines for calling ' +
        'Sybase stored procedures and performing Code 1 address verification ' +
        'and automated file transfer via FTP.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   '</ul>' + "\n";

//
// tomhinfo: tomh.info with CSS
// ----------------------------
//
var tomhinfo = new JobExperience(
   'tomhinfo',
   'tomh.info',
   'http://www.tomh.info/',
   'Denver, CO', 
   'Webmaster', 
   'July, 2004 through September, 2004'
);

tomhinfo.lessExp =
   '<ul>' + "\n" +
   ' <li>Updated tomh.info to use CSS.</li>' + "\n" +
   '</ul>';

tomhinfo.moreExp =
   '<ul>' + "\n" +
   ' <li>Learned about Cascading Style Sheets (CSS) by updating ' +
      'the tomh.info site.</li>' + "\n" +
   ' <li>Used the ' +
      '<a href="http://www.gimp.org" ' +
        'onMouseOver="linkStatus();return true;" ' +
        'onMouseOut="setStatusToDefault();return true;" ' +
        'title="Opens link in separate window" ' +
        'target="_blank">GIMP</a> ' +
      'to customize photographs for the website.</li>' + "\n" +
   '</ul>';

//
// broadband: Broadband Services, Inc.
// -----------------------------------
//
var broadband = new JobExperience(
   'broadband',
   'Broadband Services Incorporated',
   '',
   'Highlands Ranch, CO', 
   'Software Engineer, MapVantage Group', 
   'September, 2002 through June, 2004'
);

broadband.lessExp =
   '<ul>' + "\n" +
   ' <li>Analyzed Autocad drawing files containing maps of ' +
      'cable television optical fiber network equipment ' +
      'using Perl and the Feature Manipulation Engine (FME) on Windows 2000.</li>' + "\n" +
   ' <li>Modeled the equipment in Rational Rose and compiled the model ' +
      'into a data dictionary (DD) using SpatialNet on Windows 2000.</li>' + "\n" +
   ' <li>Loaded Windows-based Autocad drawing files into an Oracle Database ' +
      'on Linux, using the SpatialNet DD, Autocad, Perl, and FME.</li>' + "\n" +
   ' <li>Spearheaded the customization of the fiber network mapping application ' +
      'for use by multiple customers, making BSI the first company able to sell a ' +
      'fiber network GIS hosting service.</li>' + "\n" +
    ' <li>Wrote, tested, and ran Oracle SQL scripts to correct ' +
       'inconsistencies in the database.</li>' + "\n" +
   '</ul>';

broadband.moreExp =
   '<ul>' + "\n" +
   ' <li>Loaded Windows-based Autocad drawing files into ' +
      'an Oracle Database running on Linux:' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Wrote programs in Perl and used the Feature Manipulation ' +
        'Engine (FME) to analyze Autocad files containing maps of ' +
        'cable television optical fiber networks and equipment on Windows 2000.</li>' + "\n" +
   '   <li>Built customized model of the network and equipment in Rational Rose, inheriting ' +
        'functionality from classes defined in SpatialNet on Windows 2000.</li> ' + "\n" +
   '   <li>Compiled model into a data dictionary (DD) using SpatialNet, ' +
        'enhancing and debugging the often cryptic DD code as necessary.</li>' + "\n" +
   '   <li>Loaded Autocad drawing files into an Oracle Database on Linux ' +
        'using SpatialNet, Autocad, and the Feature Manipulation Engine (FME).</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   ' <li>While implementing and customizing SpatialNet: ' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Led the team in number of bugs fixed.</li>' + "\n" +
   '   <li>Managed, coordinated, and created all releases.</li>' + "\n" +
   '   <li>With no assistance from SpatialNet consultants, ' +
        'defined, performed, and documented processes required to ' +
        'modify and extend the model for use by other customers.  ' +
        'This put BSI in the unique position of being able to sell ' +
        'a customized fiber network GIS hosting service.</li>' + "\n" +
   '   <li>Wrote, debugged, and ran Oracle SQL scripts to identify and ' +
        'correct issues arising from the loading of inconsistent and dynamic data.</li>' + "\n" +
   '   <li>Defined and documented processes for less-experienced team members.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   '</ul>';

//
// groja1: groja.com - version 1 and tomh.info too
// -----------------------------------------------
//
var groja1 = new JobExperience(
   'groja1',
   'groja.com',
   'http://www.groja.com/',
   'Denver, CO', 
   'Webmaster', 
   'June, 2001 through August, 2002'
);

groja1.lessExp =
   '<ul>' +
   '<li>Conceived, designed, wrote, tested, documented, ' +
     'implemented, and maintained the groja.com and tomh.info ' +
     'websites using PHP, HTML, and JavaScript on Linux (RedHat 7.X).</li>' +
   '<li>Passed the Sun Certified Java2 Programmer Exam.</li>' +
   '</ul>';

groja1.moreExp =
   '<ul>' +
   '<li>Conceived, designed, wrote, tested, documented, ' +
      'implemented, and maintained GROJA(tm) program on the ' +
      'groja.com website using PHP and HTML on Linux (RedHat 7.X).   ' +
     'The GROJA(tm) program draws an image of a visitor\'s personality, ' +
      'based on their four-letter personality type.</li>' +
   '<li>Used the ' +
     '<a href="http://www.gimp.org" ' +
       'onMouseOver="linkStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">GIMP</a> ' +
     'to manually create navigation bar and custom buttons ' +
     'for tomh.info website.</li>' +
   '<li>Wrote JavaScript functions for tomh.info website ' +
     'to provide More, Contact, and Top buttons for each job on resume.</li>' +
   '<li>Passed the Sun Certified Java2 Programmer Exam.</li>' +
   '<li>Source code for both websites is available for review.</li>' +
   '<li>Personal note: ' +
     'Took some time off and did some non-technical things ' +
     'such as: quit smoking, learned performance dancing, ' +
     'learned yoga, and watched many many films and movies.</li>' +
   '</ul>';

//
// ideaint1: Idea Integration - first time around
// ----------------------------------------------
//
var ideaint1 = new JobExperience(
   'ideaint1',
   'Idea Integration',
   'http://www.idea.com/',
   'Denver, CO', 
   'Consultant, promoted to Senior Consultant', 
   'August, 1998 through June, 2001'
);

ideaint1.lessExp =
   '<ul>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.mapquest.com" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">MapQuest.com</a>: ' +
     'Designed, wrote, tested, documented, implemented, and ' +
      'maintained both interactive and automatic business-to-business ' +
      'programs (B2B) in Java, C++, and Perl5, ' +
      'using Java Beans (EJB), Java Server Pages (JSP), ' +
      'Oracle (SQL, OCI), XML, HTML, CGI, and proprietary C++ APIs ' +
      'on Unix (Solaris).  ' +
   'Demonstrated flexibility by switching between Java, C++, and Perl5, writing new code as ' +
    'well as maintaining existing code, on a number of projects to meet changing requirements.</li>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.skld.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">SKLD</a>: ' +
     'Analyzed and documented TiNO system programs, written in Java, ' +
      'Unix/C, MSDOS/C, JavaScript, Perl, Awk, csh, ksh, and sh.  ' +
     'Helped estimate work required to make the system Y2K compliant.  ' +
     'Wrote programs in Informix 4GL to assist ' +
      'in porting data from TiNO to the TIMS system.</li>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.emersonprocess.com/micromotion/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">Micro Motion</a>: ' +
     'Enhanced real-time flow meter calibration programs in C ' +
      'on Unix (HP-UX).</li>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.abacus-direct.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">Abacus</a>: ' +
     'Designed, wrote, tested, documented, and implemented programs in C/C++, Rogue Wave, ' +
      'and Perl4 on Unix (SunOS).</li>' + "\n" +
   '</ul>' + "\n";

ideaint1.moreExp =
   'Worked as a consultant to a variety of companies, ' +
   'performing the following technical roles:' + "\n" +
   '<ul>' + "\n" +
   ' <li>On contract at ' +
      '<a href="http://www.mapquest.com" ' +
        'onMouseOver="companyStatus();return true;" ' +
        'onMouseOut="setStatusToDefault();return true;" ' +
        'title="Opens link in separate window" ' +
        'target="_blank">MapQuest.com</a>, ' +
      'from June, 1999 through February, 2001:' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Wrote, tested, and maintained the Fast Update batch geocoder ' +
        'in Perl5 and Oracle, implementing it to run automatically on ' +
        'Unix (Solaris).</li>' + "\n" +
   '   <li>Wrote, tested, implemented, and maintained an ' +
        'automatic system to use ssh to distribute files to multiple ' +
        'Unix (Solaris) first in Java, then (when that did not work as ' +
        'hoped) in Perl5.</li>' + "\n" +
   '   <li>Maintained and enhanced Hosted Edit, the Fast Update ' +
        'CGI interface, using C/C++, Oracle (SQL, OCI), HTML, and ' +
        'proprietary C++ APIs on Unix (Solaris).</li>' + "\n" +
   '   <li>Maintained and enhanced Java2 programs in the Small ' +
        'Business Initiative System using Enterprise Java Beans (EJB), ' +
        'Java Server Pages (JSP), Oracle (SQL, OCI), Apache/Tomcat, and ' +
        'XML on Unix (Solaris).  ' +
        'These programs obtained parameters (such as background and ' +
        'link colors) used at a URL and stored the values in an ' +
        'Oracle database.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   ' <li>On contract at ' +
      '<a href="http://www.skld.com/" ' +
        'onMouseOver="companyStatus();return true;" ' +
        'onMouseOut="setStatusToDefault();return true;" ' +
        'title="Opens link in separate window" ' +
        'target="_blank">SKLD</a>, ' +
      'from December, 1998 through June, 1999:' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Analyzed and documented ' +
        '<a href="http://www.skld.com/" ' +
          'onMouseOver="companyStatus();return true;" ' +
          'onMouseOut="setStatusToDefault();return true;" ' +
          'title="Opens link in separate window" ' +
          'target="_blank">SKLD\'s</a> ' +
        'TiNO system programs, written in Java, ' +
        'Unix/C, MSDOS/C, JavaScript, Perl, Awk, csh, ksh, and sh.  ' +
        '(Local land title guarantee companies own SKLD, ' +
        'and SKLD used to use Tino to track real estate.)</li>' + "\n" +
   '   <li>Helped estimate work required to make Tino Y2K compliant.  ' +
        'When management realized that fixing the system was impractical, ' +
        'wrote documents to help management ' +
        'identify and purchase a replacement system.</li>' + "\n" +
   '   <li>Wrote programs in Informix 4GL to assist ' +
        'in porting data from TiNO to the TIMS system.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.emersonprocess.com/micromotion/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">Micro Motion</a>, ' +
   'from October, 1998 through December, 1998:' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Enhanced real-time flow meter calibration programs in C ' +
        'on Unix (HP-UX) to take multiple temperature readings, ' +
        'resulting in more accurate calibrations.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   ' <li>On contract at ' +
     '<a href="http://www.abacus-direct.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">Abacus</a>, ' +
   'from August, 1998 through October, 1998:' + "\n" +
   '  <ul>' + "\n" +
   '   <li>Designed, wrote, tested, documented, and implemented ' +
        'programs for catalog response analysis in C/C++ and Rogue Wave ' +
        'on Unix (SunOS).</li>' + "\n" +
   '   <li>Wrote and enhanced programs in Perl4 for data conversion and input.</li>' + "\n" + 
   '   <li>Streamlined process for input files with fixed-length records, ' +
        'reducing the amount of coding required by over 50%.</li>' + "\n" +
   '  </ul>' + "\n" +
   ' </li>' + "\n" +
   '</ul>' + "\n";

//
// analysts: Analysts International Corporation
// --------------------------------------------
//
var analysts = new JobExperience(
   'analysts',
   'Analysts International Corporation',
   'http://www.analysts.com/',
   'Boulder, CO', 
   'Technical Staff (Consultant)', 
   'March, 1998 through August, 1998'
);

analysts.lessExp =
   '<ul>' +
   '<li>On contract at ' +
    '<a href="http://www.qwest.com" ' +
     'onMouseOver="companyStatus();return true;" ' +
     'onMouseOut="setStatusToDefault();return true;" ' +
     'title="Opens link in separate window" ' +
     'target="_blank">US West Advanced Technologies (now Qwest</a>): ' + 
    'Designed, wrote, tested, and enhanced programs in Java ' +
     'to parse mainframe output and load it into an Oracle ' +
     'database running on Unix (SunOS).  ' +
    'Used ksh and crontab to ' +
     'schedule these programs to run automatically.  ' +
    '</li>' +
   '</ul>' + "\n";

analysts.moreExp =
   'On contract at ' +
   '<a href="http://www.qwest.com" ' +
     'onMouseOver="companyStatus();return true;" ' +
     'onMouseOut="setStatusToDefault();return true;" ' +
     'title="Opens link in separate window" ' +
     'target="_blank">US West Advanced Technologies (now Qwest</a>): ' + 
   '<ul>' +
   '<li>Designed, wrote, tested, and enhanced Java classes ' +
   'to parse mainframe error output and ' +
   'load relevant data into an Oracle database.  ' +
   'These classes were part of a system that would automatically ' +
   'correct some of these errors.  ' +
   '<li>Wrote ksh scripts and used the Unix crontab command to ' +
   'schedule these programs to automatically download, parse,' +
   'and load this data.  ' +
   '</ul>' + "\n";

//
// mapquest: MapQuest.com
// ----------------------
//
var mapquest = new JobExperience(
   'mapquest',
   'MapQuest.com',
   'http://www.mapquest.com/',
   'Denver, CO', 
   'Internet Engineer', 
   'August, 1996 through November, 1997'
);

mapquest.lessExp =
   '<ul>' +
   ' <li>Designed, wrote, enhanced, and maintained the geocentric ' +
      'advertising feature along with related data handling ' +
      'programs, using C/C++, Perl4, CGI/HTML, and proprietary ' +
      'and commercial APIs on Unix (SunOS, SGI) web servers.' +
      'This feature increased web advertising revenues by 100 to 200%.</li>' +
   ' <li>Integrated the geocentric advertising feature into ' +
      'the Connect system using C/C++ on Unix (Solaris).</li>' +
   ' <li>Used Rational Rose to design classes to handle Point of ' +
      'Interest (POI) data consistently, and wrote those classes in ' +
      'C/C++ on Unix (Solaris).</li>' +
   '</ul>';

mapquest.moreExp =
   '<ul>' +
   ' <li>Rewrote the batch geocoder in C, increasing its efficiency.</li>' +
   ' <li>Wrote, tested, implemented, and enhanced ' +
      'the geocentric advertising system in C/C++.  ' +
      'Conceived, designed, wrote, and implemented programs ' +
      'in C and Perl4 to enable users to load data for this system ' +
      'directly into the ' +
      '<a href="http://www.netgravity.com/" ' +
        'onMouseOver="companyStatus();return true;" ' +
        'onMouseOut="setStatusToDefault();return true;" ' +
        'title="Opens link in separate window" ' +
        'target="_blank">Net Gravity</a> ' +
      'ad management database.  ' +
      'The system allowed advertisers to target their ads ' +
      'based on the visitor\'s browser and platform, and on ' +
      'parameters of the current map, ' +
      'such as the zoom level, latitude and longitude, and ' +
      'which Points of Interest (POIs) are checked.  ' +
      'It increased web advertising revenues by 100 to 200%.  ' +
      'Mentored other developers in how to maintain the system.</li>' +
   ' <li>Created geo-tags for the Connect system using C/C++,  ' +
      'allowing customers to use the geocentric advertising feature ' +
      'on their sites.  ' +
      'Also maintained and enhanced the system, fixing bugs and ' +
      'changing it to allow the user to turn off the origin icon.</li>' +
   ' <li>Used Rational Rose to design a set of library classes for ' +
      'managing multiple (recursive) levels of ' +
      'Points of Interest (POIs) more consistently, alleviating the ' +
      'need for redundant and inconsistent code.</li>' +
   ' <li>All of these applications run on Unix (SunOS, SGI) web ' +
      'servers, and most of them used proprietary and commercial ' +
      '(Net Gravity, Rogue Wave) Application Programming Interfaces ' +
      '(APIs).</li>' +
   '</ul>';

//
// evolving: Evolving Systems Incorporated
// ---------------------------------------
//
var evolving = new JobExperience(
   'evolving',
   'Evolving Systems Incorporated',
   'http://www.evolving.com/',
   'Greenwood Village, CO', 
   'Configuration Management Analyst II, promoted to Configuration Management Analyst III', 
   'November, 1991 through July, 1996'
);

evolving.lessExp =
   '<ul>' +
   ' <li>Conceived, designed, developed, documented, and maintained ' +
      'configuration management programs and scripts written ' +
      'in Perl4, Awk, and Korn shell (Ksh), running on Unix ' +
      '(AIX, SunOS, HP-UX).  ' +
      'These programs and scripts enabled new employees to ' +
      'use version control (RCS, PVCS, CMVC) and build (make) tools ' +
      'with very little training, and ' +
      'gave them greater control over what code was ' +
      'delivered to the customer.</li>' +
   ' <li>Fixed bugs in C/C++ and Oracle ESQL PRO*C call center report programs ' +
      'on Unix (AIX).</li>' +
   ' <li>Helped write requirement specifications for automated ' +
      'telephone provisioning systems.</li>' +
   '</ul>';

evolving.moreExp =
// 'Performed a variety of technical tasks in multiple roles ' +
// 'for this consulting firm that specializes in delivering ' +
// 'telecommunications software projects.' +
   '<ul>' +
   ' <li><u>As a Programmer, from September 1995 through July, 1996:</u>' +
   '  <ul>' +
       '<li>Fixed bugs in C/C++ and Oracle ESQL PRO*C communications ' +
        'and report programs on Unix (AIX).</li>' +
   '  </ul>' +
   ' </li>' +
   ' <li><u>As a Configuration Management Analyst, ' +
      'from February 1992 through September, 1995:</u>' +
   '  <ul>' +
   '   <li>Conceived, designed, wrote, tested, and documented ' +
        'AIX Korn shell scripts to allow developers ' +
        'to simultaneously work on multiple code branches in PVCS.</li>' +
   '   <li>Rewrote these scripts to use CMVC instead of PVCS, ' +
        'and to allow developers to easily associate specific code ' +
        'changes with specific bugs.</li>' +
   '   <li>Rewrote these scripts in Perl4 to support both CMVC and RCS, and ' +
        'to support development on both Unix and Windows.</li>' +
   '   <li>Developed generic nightly build (make) scripts in Korn ' +
        'shell to support multiple projects and to email the ' +
        'appropriate developer when the nightly build failed in a ' +
        'directory for which the developer was responsible.</li>' +
   '   <li>All of these scripts and programs provided a simple interface ' +
        'to the complex development environment, supporting the rapid growth ' +
        'of the company during this time.</li>' +
   '   <li>Consulted with managers, architects, and developers on ' +
        'the use and possible purchase of new tools for software ' +
        'building and version control.</li>' +
   '   <li>Mentored new Configuration Management Analysts.</li>' +
   '   <li>Answered developers\' questions about all ' +
        'facets of version control, source code management, and ' +
        'the building of executables via make and makefiles.</li>' +
   '   <li>Performed source code merges and built delivery packages.</li>' +
   '  </ul>' +
   ' </li>' +
   ' <li><u>As a Technical Writer, ' +
      'from November 1991 through February, 1992:</u>' +
   '  <ul>' +
      '<li>Assisted writing requirement specifications for automated ' +
       'telephone provisioning systems.</li>' +
   '  </ul>' +
   ' </li>' +
   '</ul>';

//
// unisys: Unisys
// --------------
//
var unisys = new JobExperience(
   'unisys',
   'Unisys',
   'http://www.unisys.com/',
   'Camarillo, CA', 
   'Senior Product Information Analyst (Technical Writer)', 
   'February, 1990 through July, 1991'
);

unisys.lessExp =
   '<ul>' +
   ' <li>Documented message-based and event-driven ' +
     'Application Programming Interface (API) for developers ' +
     'to use in building graphical user interfaces (GUIs).</li>  ' +
   ' <li>Wrote example programs using this API in C on ' +
     'Unisys (BTOS) microcomputers.</li>' +
   '</ul>';

unisys.moreExp =
   '<ul>' +
   ' <li>Wrote the <i>ADT Programming Guide</i>, a training ' +
     'manual for C Programmers who use the Application ' +
     'Development Toolkit (ADT) on ' +
     'Unisys (BTOS) microcomputers.  ' +
     'ADT was a message-based and ' +
     'event-driven Application Programming Interface (API) for ' +
     'developers to use in building text-based Graphical ' +
     'User Interfaces (GUIs).  ' +
     'The API was based on IBM\'s Presentation Manager.</li>' +
   ' <li>Wrote example programs, and programming exercises and ' +
     'their solutions for the <i>ADT Programming Guide</i>.  ' +
     'This code demonstrated basic features of the GUI, such as ' +
     'how to create windows and send messages, as well as more advanced ' +
     'features, such as handling errors, creating scroll bars, and ' +
     'using the timer.</li>' +
   ' <li>Edited, corrected, and refined the <i>ADT Reference Manual</i>.</li>  ' +
   '</ul>';

//
// pande: Pande, Inc.
// ------------------
//
var pande = new JobExperience(
   'pande',
   'Pande, Incorporated',
   '',
   'Gardena, CA', 
   'Systems Engineer (Contractor)', 
   'June, 1989 through February, 1990'
);

pande.lessExp =
   '<ul>' +
   ' <li>On contract at ' +
      '<a href="http://www.toshibatecusa.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">Toshiba TEC America Inc.</a>: ' +
      'wrote product requirements and functional ' +
       'specifications for a network of retail point-of-sale ' +
       '(POS) terminals connected to IBM-compatible PC (AT) ' +
       'in-store processor.  ' +
      'Created a database of POS vendors, products, and ' +
      'customers.</li>' +
   '</ul>';

pande.moreExp =
   'On contract at ' +
     '<a href="http://www.toshibatecusa.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">the Marketing Department of Toshiba TEC America Inc.</a>:</u><br />' +
   '<ul>' +
   ' <li>Wrote product requirements and ' +
     'functional specifications for a ' +
     'network of retail Point of Sale ' +
     '(POS) terminals connected to IBM-compatible PC (AT) ' +
     'in-store processor.  ' +
     'The audience for these documents was marketing, ' +
     'management, and development.</li>  ' +
   ' <li>Described POS features such as Terminal Off-line ' +
     'Functionality, Lay-Away, Returning Merchandise, ' +
     'Terminal Reporting, Tax Tables, Special Orders, ' +
     'Item Markdown Reporting, and Bar Code Recognition.' +
   ' <li>Created a database of POS vendors, products, and ' +
     'customers using dBase IV on an IBM AT.</li>  ' +
   '</ul>';

//
// gradschool: 
// ------------------------------------
//
var gradschool = new JobExperience(
   'gradschool',
   'Part-time Jobs Held While in Graduate School',
   '',
   'Richmond, VA', 
   '', 
   'May, 1986 through May, 1989'
);

gradschool.lessExp =
   '<ul>' +
   ' <li>Programmed in IBM 8100 (minicomputer) Assembler for' +
     '<a href="http://www.owens-minor.com/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank"> ' +
       'Owens and Minor Hospital Supply</a>.</li>' +
   ' <li>Taught IBM-PC Basic for ' +
     '<a href="http://www.jsr.cc.va.us/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
       'J. Sargeant Reynolds Community College</a>.</li>' +
   ' <li>Programmed in Microsoft Lisp for the ' +
     '<a href="http://www.smv.org/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
       'Virginia Science Museum</a>.</li>' +
   ' <li>Developed and documented IBM-PC applications for ' +
     '<u>Success Software</u>.' +
   ' <li>Tutored Physics for the ' +
     '<a href="http://vcurams.vcu.edu/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
     'VCU Athletic Department</a>.</li>' +
   '</ul>';

gradschool.moreExp =
   '<ul>' +
   ' <li>For the ' +
     '<a href="http://vcurams.vcu.edu/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
     'VCU Athletic Department</a>, ' +
     'from January, 1989 through May, 1989: (part-time)<br />' +
     'Helped student atheletes learn Physics.</li>' +
   ' <li>For ' +
     '<a href="http://www.jsr.cc.va.us/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
     'J. Sargeant Reynolds Community College</a>, ' +
     'from June, 1988 through December, 1988: (part-time)<br />' +
     'Prepared and presented lessons, assigned and graded work, ' +
     'including programming tasks using GWBasic on IBM PCs, ' +
     'wrote and gave tests, and ' +
     'computed and reported student grades.</li>' +
   ' <li>For the ' +
     '<a href="http://www.smv.org/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
     'Virginia Science Museum</a>, ' +
     'from December, 1987 through April, 1988: (part-time)<br />' +
     'Designed, wrote, tested, and debugged a program ' +
     'in Microsoft Lisp to teach visitors about light and shadow.</li>' +
   ' <li>For ' +
       '<a href="http://www.owens-minor.com/" ' +
         'onMouseOver="companyStatus();return true;" ' +
         'onMouseOut="setStatusToDefault();return true;" ' +
         'title="Opens link in separate window" ' +
         'target="_blank">' +
       'Owens and Minor Hospital Supply</a>, ' +
     'from May, 1987 through April, 1988: (full-time)<br />' +
     'Wrote, tested, and debugged program to track and report ' +
     'inventory of lot-controlled (dated) supplies using ' +
     'IBM 8100 (minicomputer) Assembler.  ' +
     'Documented and maintained Order Entry and other systems.</li>' +
   ' <li>For <u>Success Software</u>, ' +
     'from January, 1987 through May, 1987: (part-time)<br />' +
     'Wrote User\'s Manual for the Client Keeper System and ' +
     'helped with data conversion.</li>' +
   ' <li>From May, 1986 through December, 1986:<br />' +
     'Enjoyed being a full-time student at ' +
     '<a href="http://www.vcu.edu/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">' +
     'VCU</a>.</li>' +
   '</ul>';

//
// bova: Wells Fargo (formerly Wachovia and Bank of Virginia before that)
// ----------------------------------------------------------------------
// BOVA became part of -> Wachovia was bought out by -> Wells Fargo
//
var bova = new JobExperience(
   'bova',
   'Bank of Virginia (now Wells Fargo)',
   'http://www.wellsfargo.com/',
   'Richmond, VA', 
   'Programmer Analyst, promoted to Senior Programmer Analyst', 
   'December, 1979 through April, 1986'
);

bova.lessExp =
   '<ul>' +
   ' <li>Designed, developed, documented, and maintained programs ' +
     'in Cobol for management information (financial reporting) ' +
     'systems running on Unisys mainframes and IBM-compatible PCs.</li>' +
   ' <li>As the only technical person in the department, ' +
     'worked closely with all levels of management and staff.</li>' +
   '</ul>';

bova.moreExp =
   '<ul>' +
   ' <li>As the only technical person in the department, ' +
     'worked closely with all levels of management and staff ' +
     'to conceive, design, write, test, implement, document, and ' +
     'maintain programs to produce a wide variety of reports ' +
     'for management and board members.</li>' +
   ' <li>Wrote program for the Money Center in IBM PC Cobol ' +
     'to track large variable-rate deposits on a day-to-day basis.</li>' +
   ' <li>Maintained, enhanced, and documented ' +
     'system in Unisys Cobol to provide senior management and board members with monthly reports ' +
     'on budgeted and actual financial numbers (assets and liabilities, income and expenses).  ' +
     'Eventually rewrote (structured) entire system and helped streamline procedures.</li>' +
   ' <li>Created presentation graphics for Board Meetings using Videoshow and Picture It on IBM PCs.</li>' +
   ' <li>Additional applications include Rate/Level/Mix Reporting, ' +
     'Fixed Assets, Rolling (Fiscal) Forecast, Five Year Plan, Regional and Company Board Reports, ' +
     'Branch Profitability, Branch Deposits, Bank Comparison Spreadsheet, and various utility programs.</li>' +
   ' <li>Used Cobol, Lotus, Smart, Edlin, and MS-DOS on IBM-compatible PCs.  ' +
     'Used Cobol, Cande, and Wfl on Unisys 7900 mainframes.  ' +
     'Used Multiplan (spreadsheet) on Unisys microcomputers.</li>' +
   '</ul>';

//
// ricva: City of Richmond, Virginia
// ---------------------------------
//
var ricva = new JobExperience(
   'ricva',
   'City of Richmond, Virginia',
   'http://www.richmondgov.com/',
   'Richmond, VA', 
   'Programmer, promoted to Senior Programmer', 
   'January, 1978 through December, 1979'
);

ricva.lessExp =
   '<ul>' +
   ' <li>Wrote and maintained programs for the Utilities, Welfare, and other systems ' +
     'using Cobol, Assembler, JCL, CICS, VSAM, ISAM, Roscoe, and Dyl260, ' +
     'running on IBM 370 mainframes.</li>' +
   '</ul>';

ricva.moreExp =
   '<ul>' +
   ' <li>Wrote program in Cobol to convert the Utilities system to area meter reading, ' +
     'greatly increasing the efficiency of the meter readers.</li>' +
   ' <li>Wrote program in Cobol to send notices to citizens who are delinquent in paying ' +
     'their parking tickets, increasing the city\'s revenue.</li>' +
   ' <li>Completed the Work Request system.</li>' +
   ' <li>Made minor modifications to programs ' +
     'for the Welfare and other systems using Cobol, Assembler, ' +
     'JCL, CICS, VSAM, ISAM, Roscoe, and Dyl260, running on IBM 370 mainframes.</li>' +
   '</ul>';

//
// overnite: UPS (formerly Overnite Transportation)
// ------------------------------------------------
//
var overnite = new JobExperience(
   'overnite',
   'Overnite Transportation Company (now UPS)',
   'http://www.overnite.com/',
   'Richmond, VA', 
   'Programmer Trainee, promoted to Programmer', 
   'March, 1976 through December, 1977'
);

overnite.lessExp =
   '<ul>' +
   ' <li>Maintained and documented programs for the Vehicle Accident, Claims, and other systems ' +
     'in NCR Cobol and NCR Assembler (Neat/3) running on NCR minicomputers.</li>' +
   '</ul>';

overnite.moreExp =
   '<ul>' +
   ' <li>Wrote the Vehicle Accident system in NCR Assembler (Neat/3).</li>' +
   ' <li>Working with just one other person, translated the ' +
     'Claims System from NCR Assembler to NCR Cobol, ' +
     'programming it to use the Total database package.</li>' +
   ' <li>Maintained and documented programs in ' +
     'Neat/3 for other systems running on NCR minicomputers.  ' +
     'For example, helped increase the number of digits used for ' +
     'terminal numbers in all programs from two to three.</li>' +
   ' <li>Historical note: used punched cards in this position.</li>' +
   '</ul>';

//
// javacert: Sun Java Certification
// --------------------------------
//
var javacert = new JobExperience(
   'javacert',
   'Sun Certified Java2 Programmer',
   'http://suned.sun.com/US/certification/java/java_progj2se.html/',
   'Denver, CO', 
   '', 
   'July, 2001'
);

javacert.lessExp = '<ul><li>Scored 83% (60% is passing).</li></ul>';
javacert.moreExp = '';

//
// masters: Master of Interdisciplinary Studies from VCU
// -----------------------------------------------------
//
var masters = new JobExperience(
   'masters',
   'Master of Interdisciplinary Studies',
   'http://www.graduate.vcu.edu/',
   '<a href="http://www.vcu.edu/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">Virginia Commonwealth University</a>, Richmond, VA', 
   '', 
   'September 1983 through May, 1989'
);

masters.lessExp =
   '<ul>' +
   ' <li><u>Emphasis:</u> Computer Science and Art</li>' +
   ' <li><u>GPA:</u> 3.77 (of 4.0)</li>' +
   '</ul>';

masters.moreExp =
   '<ul>' +
   ' <li><u>Emphasis:</u> Computer Science and Art</li>' +
   ' <li><u>GPA:</u> 3.77 (of 4.0)</li>' +
   ' <li><u>Areas of Study:</u> ' +
     'Artificial Intelligence, Computer Graphics, ' +
     'Micro-Electronics, and Electronic Music' +
   ' <li><u>Computer Languages Learned:</u> ' +
     'Unix/C, Turbo C, Microsoft Lisp, Franz Lisp, XLisp, ' +
     'Prolog, Microcomputer Assembler, Applesoft Basic' +
   ' <li>This Masters degree is roughly equivalent to a Masters ' +
     'in Computer Science.' +
   ' <li>Getting accepted into this program required ' +
     'taking additional undergraduate classes after ' +
     'completing the BS in Math.' +
   ' <li><u>Paid for 100% of graduate-level education myself.</u></li>' +
   '</ul>';

//
// bachelors: Bachelor of Science from VCU
// ---------------------------------------
//
var bachelors = new JobExperience(
   'bachelors',
   'Bachelor of Science in Mathematics',
   'http://www.math.vcu.edu/',
   '<a href="http://www.vcu.edu/" ' +
       'onMouseOver="companyStatus();return true;" ' +
       'onMouseOut="setStatusToDefault();return true;" ' +
       'title="Opens link in separate window" ' +
       'target="_blank">Virginia Commonwealth University</a>, Richmond, VA', 
   '', 
   'August, 1986'
);

bachelors.lessExp =
   '<ul>' +
   ' <li><u>Emphasis:</u> Computer Science</li>' +
   ' <li><u>GPAs:</u> 3.43 in Major, 3.15 Overall</li>' +
   '</ul>';

bachelors.moreExp =
   '<ul>' +
   ' <li><u>Emphasis:</u>Computer Science</li>' +
   ' <li><u>GPAs:</u> 3.43 in Major, 3.15 Overall</li>' +
   ' <li><u>Minor:</u> Chemistry' +
   ' <li><u>Computer Languages Learned:</u> ' +
     'Pascal, PL/I, Mainframe Assembler, ' +
     'Hewlett Packard Basic, Cobol, Fortran, Snobol4' +
   ' <li><u>Paid for 90% of undergraduate-level education myself.</u></li>' +
   '</ul>';
