2014/11/15: Currently this page displays best on a desktop. Mobile devices may not display without scrolling.

This page contains information regarding the development/evolution of this site as well as some of my experiences with FrontPage, Expression Web, HTML, CSS, XHTML, PHP, MySQL, JavaScript/jScript including conversions and other techniques. The site continues to evolve as I learn/discover new techniques. This page also describes PHP functions I have created to facilitate conversion from HTML 4.01 to XHTML to HTML5 and provides various page displays of PHP and other code and which are also useful for code debugging. Dates, sequences and details to be corrected as time and memory allow.

The following table is sortable, just click/touch on a column header. Click/Touch here to restore original sort.

Date or

Event or Action

I initially developed this site on my PC running Windows ME/SE/XP and using Microsoft FrontPage (FP) without using HTML directly. Some time after Microsoft discontinued FP, I replaced FP with Expression Web 2 (EW 2) and later with Expression Web 3 (EW 3).

But I am continuing to use EW 2 until a particular EW 3 publishing problem is resolved by Microsoft (see below for description of problem.

As I read the EW documentation and bought a few books about EW, I realized that I should update my site to be HTML 4.01 Strict compliant and to remove the FP bots and other special FP and Microsoft extensions. While trying to upgrade my site I discovered that I had to learn, at least, some basic HTML and CSS so I bought a few books about HTML and CSS.

2010/05/14: I have done no testing with Apple Mac but no one has reported any problems yet.

2011/03/04: I am now using EW 4.


This site was originally created and maintained using MS FrontPage 2000 frontpage gif and then FrontPage 2002.

The site still looks best using MS Internet Explorer 7 and above. Some features and formatting may be different with other browsers.

Most audio clips were originally created using Real Producer Plus real producer plus image which required the RealAudio Player realplayer 7 image.


I have been and will continue to test my site on multiple browsers and attempt to present similar content/presentation on multiple browsers.


The table format is used to allow easy updates and additions but I will attempt to remove table formatting/presentation usage and keep tables only where tables are desirable such as the table at which you are now looking.


Sorry folks! Most audio links have been disabled until further notice due to a letter from ASCAP demanding that I pay a $300+ licensing fee which I cannot afford. Personal and other non-ASCAP audio links will be restored when I can determine which recordings are ASCAP controlled.


I have added two new pages:

- Drum Info which includes drum tuning, head mounting, playing techniques, basic bongo and conga patterns, etc.

- Tea/Coffee Info which includes links/ information regarding tea and coffee (equipment, brewing, kinds, etc.).


I have re-installed all audio files and have converted them to .mp3 format files using the free version of Switch Audio File Conversion Software (click on the following image to access the information regarding Converter).

I occasionally briefly post links to tunes to provide examples to a select audience for the purpose of discussion...these tunes are removed after a couple of days.

I will immediately remove any link to any file identified by ASCAP or others as being under their control or copyrighted.


Site development and maintenance will now be done using MS Expression Web 2 (soon to be upgraded to Expression Web 3). The site still looks best using MS Internet Explorer 7 and above. Some features and formatting may be different with other browsers but, by modifying the site to be HTML 4.01 Strict compliant, the site should be more consistent across different browsers.


I have added new Food/Cooking Info pages which will include recipes, cooking information, recipes, and my cookbook collections which have been cataloged/created using ReaderWare RW.


Rebuilding the site and redoing pages...some FrontPage "features"/"bots", e.g., shared borders, banner scrolling, animated flag .gifs, etc., have been removed as efforts are applied to make site web HTML/XHTML and CSS compliant without special FrontPage features/bots. These changes should make the site more compatible with all browsers. Please let me know if any link or feature is not working properly.


I have moved this site to new cheaper host provider: Network Solutions.

Please let me know if there are any problems with this site especially if they might be associated with the new provider.


I have added a new Latin Music Collection - CDs page which is a catalog of all my Latin Music CDs cataloged using ReaderWare AW and I cannot emphasize enough how great ReaderWare Support is.

This new page hopefully will eventually include 78s, 45s, and LPs and replace the consolidated older manually updated Latin Music Collection - Annotated page which now contains only LPs, 45s, videos, books and CDs which have annotation and music links. However, there may be delays in adding the annotated materials, LPs, 45s, etc., until ReaderWare AW can accommodate the annotations as I would like to see.

Music books and videos will be cataloged separately using the other ReaderWare components.


I have added a new page to the Food/Cooking Info pages: my Non-Asian Cookbook collection for the Food/Cooking Info pages.


I have converted the site to be HTML 4.01 Strict Compliant and CSS 2.1 Compliant.

valid html 4.01 transitional logo
valid css 2 logo

If any page appears non-compliant, strange or inconsistent, please contact me so I can correct the page.


I am beginning to modify the site to meet Accessibility Standards.

2009/11/17: Accessibility deferred until XHTML conversion completed.

2011/01/20: Accessibility deferred indefinitely but specific issues may be addressed as they are identified.


I am now beginning to simply the HTML code by using CSS  techniques and capabilities.

2009/11/04: Initial code simplification completed.


Working on thumbnails to make them HTML 4.01 Strict compliant.

2009/11/13: Found solution to thumbnail problem and completed reworking all images.


Now using MS Expression Web 3 for site development and maintenance. Expression Web 3 box image

2009/12/07: Alternating between EW 2 and EW 3 depending upon work to be completed because of a few problems with EW 3.

2009/12/14: Using EW 3 and doing some testing of EW 4.


Ordered a bunch of XHTML books. Beginning to upgrade site to XHTML 1.0 Strict.

2009/11/18: Completed conversion from HTML 4.01 Strict to XHTML 1.0 Strict. Still working to make all site filenames lowercase.

valid xhtml 1.0 strict gif

2009/11/22: All filenames now lowercase and most files now have meaningful descriptive filenames.


Ordered a bunch of JavaScript, CSS and DHTML books.


I installed EW 3 SP-1 and publishing problem is solved, so back to EW 3.


Solving the uppercase/mixedcase to lowercase filename problem:

After changing image and audio file names from uppercase/mixedcase to lowercase, I noticed that some file names revert to their previous case. And additionally, when using EW to publish, filenames which had been originally published with uppercase/mixedcase and then changed to lowercase, these filenames will not be updated. Again, Pat Geary helped by pointing out that this is a Windows problem/decision, i.e, Windows does not distinguish between upper and lowercase characters in filenames.

My solution to this publishing problem is:

- Change the filenames using EW so all links will be updated;

- Delete appropriate group of files on destination server (possibly all files);

- Publish using EW which will then copy the files with lowercase filenames.


EW 3 publishing problem (problem present with trial download and with purchased program):

EW 3 repeatedly publishes unchanged pages especially image and audio files which can mean very long publishing times. Microsoft is expected to provide a correction to this problem before the end of 2009. I will continue to use EW 2 until such a correction is available.


EW 3 SP-1 downloaded and installed: publishing problem solved. Back to using EW 3. Actually, it seems that, at least, part of the problem was solved by using the Site View, View, Changed Files on the publishing page.

Note: it was necessary to find the SP-1 download from the www.microsoft.com/download/en/details.aspx?displaylang=en&id=3948" (no longer available???) Microsoft Expression Web 3 Service Pack 1 because Windows Update did not find EW 3 SP-1.

Similarly for EW 3 SP-2.


EW 3 XHTML 1.0 Strict - adding a navigation "Page Include" file:

I desired a way to "include" a file which would contain secondary navigation code allowing me to maintain in a single file any change to the secondary navigation code which is used on multiple pages. I tried to find a solution in various books and with online searches. I tried several methods to no avail. So I contacted Pat Geary again. And again, thanks to Pat for the pointing me to a solution.

The following shows how the problem was resolved:

<!--webbot bot="Include" 
 XHTML 1.0 Strict//EN" 
<html xmlns="http://www.w3.org/1999/xhtml">
<meta content="text/html; charset=utf-8" 
<link rel="stylesheet" href="0_master.css"/>
<a href="autobio-1940s.html">
<a href="autobio-1950s.html">
<a href="autobio-2009s.html">

Note: Currently the use of the

<!--webbot bot="Include" 
U-Include="file.html" TAG="BODY" -->

is the only STRICT XHTML 1.0 "violation".


I just noticed the previous .html links which have been consolidated and changed to .php links, I need to create redirect links to those pages.


SOLVED: used Network Solutions facility so no redirect pages will be required. See 2011/03/11 entry below.


Hopefully, with the changes to XHTML 1.0 Strict, the site will look virtually the same on all browsers.


Finally, a working Submit Comments page!

Also, all .html page filenames (except index.php) have had "-nnkb" added to indicate the approximate file size in KB and old page filenames have been redirected to the new page filenames.


While developing secondary navigation menus using the Web Bot Page Include, I discovered that EW 3 does not contain Page Include development tools as did EW 2, so I have reverted to EW 2 until EW 3 is updated to contain Page Include development tools.


Secondary navigation has been added to all appropriate pages using Web Bot Page Includes which may or may not be XHTML 1.0 Strict compliant. It has been announced that EW 3 should be updated to include the Page Include functionality in the future.


Using the EW Tools, Compatibility Report function, I went through each page and made the required changes. But when I came up against a particular problem in which EW created HTML code which was not HTML 4.01 Strict compliant! This problem was caused by using  EW's Auto Thumbnail function which created xthumbnail code which is not HTML 4.01 Strict compliant, i.e., xthumbnail-orig-image="images/desired-image.jpg

I tried to find the solution online using Google to no avail until I found the following site and posted an inquiry:


2011/09/11: This URI is not currently working.


Several people responded but none of the posted answers solved my problem especially because I needed a simple technique because of the large number of images available on my site. I also discovered that the Notify me of replies box on the page did not work and asked that someone contact me directly via email to help me solve the problem. Pat Geary was that person and has been extremely helpful in helping me solve/resolve a few problems I ran into while converting to HTML 4.01 Strict. Pat also told me that she uses XHTML for her sites. When I said I was going to try converting to XHTML, she recommended that I start with XHTML 1.0 Transitional but I went for XHTML 1.0 Strict.


I am trying to figure out how to keep each page heading in a fixed position while allowing the remainder of each page to scroll if necessary.

I have also added two more pages: Spiritual Quest(s) & Other Weird Stuff and My Arabian Horses.

2009/12/11: solved page heading issue with left-hand vertical fly-out menu.


Converting FP to EW removing FP bots and extensions:

- On PC, copy old FP site to a new folder for EW site;

- Run EW and open new EW site from 1.;

- Open a page in Split View;

- Run Tools, Compatibility Reports using Current Page HTML 4.01 Transitional and CSS 2.0;

- Use Go To Page for each error and correct the invalid code.

This sequence can be tedious if the page contains many errors but it is very straight-forward. For my site it was definitely tedious because I had used many FP bots and extensions and was a real learning process especially regarding HTML.

I then developed an HTML 4.01 Transitional compliant .dwt file to convert my previous FP navigation to handle my header information and navigation.

I also began to make all filenames lowercase and to make some abbreviated filenames into more meaningful filenames.

Note: when developing a new site, it is important to use all lowercase filenames from the start because it can be a potential problem if a site is published to a Unix/Linux server which can distinguish between lowercase and uppercase characters in filenames. Therefore, I strongly suggest that you only use lowercase filenames. I would also suggest that lowercase HTML/XHTML tags be lowercase so as to facilitate being Strict XHTML compatible as that may be desirable at a later time.


Converting to HTML 4.01 Strict using EW Compatibility Reports:

- Open page in Split View;

- Run Tools, Compatibility Reports using Current Page and HTML 4.01 Strict and CSS 2.0;

- Use Go To Page for each error and correct the invalid code.

This can be tedious if the page contains many errors but it is very straight-forward.


Solving the xthumbnail problem using EW Compatibility Reports:

- First check that each image on each page has been processed using EW's Auto Thumbnail process;

- Run EW Tools, Compatibility Reports using All Pages and HTML 4.01 Strict and CSS 2.0;

- Use Go To Page for each xthumbnail error and press Delete which will delete the invalid code.

This can be tedious if the site contains many images with thumbnails but it is fairly quick and very straight-forward.


Converting to XHTML 1.0 Strict using EW Compatibility Reports

This conversion was very straight-forward. For each HTML page:

- Open page in Split View;

- In the code area, right click and click on Apply XML Formatting Rules. (Note: I was not aware of this functionality until Pat Geary mentioned it (thanks again , Pat);

- Run Tools, Compatibility Reports using Current Page and XHTML 1.0 Strict and CSS 2.0;

- Correct any errors.

Note: I also had tried TidyGUI which has some additional functionality and I may redo some pages using TidyGUI to format the code and some other purposes.


I gave up on attempting to make upper horizontal navigation bar in a fixed position.

I changed the horizontal navigation bar in the heading area to a left hand vertical navigation bar. I will try to modify the vertical navigation bar to remain in a fixed position while allowing the remainder of each page to scroll if needed.


I added back a few animated .gif images.

I hope to be able to add back a couple of background sound files but I need to determine how to provide a way (appropriate buttons) for the visitor to turn off the background sounds.


I finally was able to modify the .dwt file to keep the navigation display "fixed", i.e., to keep it displayed while the rest of the page scrolls! It seems to work for all browsers except IE 6.

Note: this was accomplished using only CSS and XHTML without resorting to javascript or other languages!

The animated arrow .gif  animated right arrow .gif is from http://www.fg-a.com/arrows.htm.

<!-- The CSS file entry -->
#id-left-nav {
  position: fixed; left:0.0em; top:0.0em; 
  width:15%; float: left; 
  border: thin solid black; 
  font-size: 0.812em;
<!-- The XHTLM .dwt file entry -->
<div id="id-left-nav">
      <li class="class-xsmall-blk-ctr-bdr-0">
      <strong>Navigation </strong></li>

After checking in many books and doing many online searchs looking for a simple way to use drop-down menu techniques to no avail, finally, using only CSS and XHTML and the technique(s) described in "HTML, XHTML, and CSS All-in-One Desk Reference For Dummies" by Andy Harris and Chris McCulloh  in Chapter 3: Styling Lists and Menus. book cover

I managed to cobble together the collapse of the left hand navigation menu.


I plan to convert the vertical menu to a vertical "fly-out menu".

2010/04/03: Finally, a vertical menu with horizontal fly-out, it turned out to be quite easy using info from Drop-Down Menus, Horizontal Style by Nick Rigby. It only required a couple of CSS changes! I don't know how well it works with IE before 8.0 but I will try to find out and fix it if necessary.

2010/04/18: I wanted to add a little spacing on the Navigation Menu vertical list text lines but "vertical-align: text-middle" was not Strict XHTML 1.0 and caused errors when using the Compatibility Checker. I checked online and, although quite a few solutions for doing the equivalent action were described, they were far more complex than I cared to use. Eventually I found a description that "vertical-align: middle" was the correct syntax. So I replaced all the occurrences of "vertical-align: text-middle" with "vertical-align: middle" and the Compatibility Checker errors disappeared.

I used something like the following:

.menu-navigation-line-height-center {
  line-height: 175%; vertical-align: middle;} 
<div id="menu"
    <li class="
      Navigation Menu</strong> 
      <a href="#">  fly-out menus are 
      indicated by 
      <img alt="animated right arrow .gif" 
        height="10" width="21"/>

Two new pages added: Expression Web Stuff Books and Old Downloadable books.

2010/04/24: New page added: Model Trains.

2010/05/06: New page added: Favorite Restaurants.

2010/05/19: Added recipes and drumming info items flyouts to navigation menu.


Added back the automatic sounds for the Drummer on the Home page and the Conguero on the Rumba Info page but with the ability for the visitor to turn the sounds off if desired.

Note: The use of the <embed>...</embed> code to automatically play the Drummer and Conguero sounds is the second STRICT XHTML 1.0 "violation" and it only works with IE. Other browsers may need to have the correct plug-ins if available.


Added a Cooking Equipment/Gadgets/Manuals page.


Added a couple of new recipes and reformatted several others. I will reformat all my recipes to use "list" formatting.

Renamed Asian Old Downloadable non_asian_cookbooks to Old Downloadable non_asian_cookbooks and expanded the page to include Non-Asian Cookbooks. Changed all cookbook file names to be lowercase and changed hyperlinks on the new page to be in a "list" format.


Added the Chinese Food Pyramid page.


Because I plan to use PHP and eventually MySQL, I am converting to a Unix server on Network Solutions instead of a Windows server.

Although Network Solutions technical support said the FrontPage include extensions would not work on their Unix server, apparently the include extensions and <embed>s both still work. This is great because it gives me more time to eliminate the non-Strict XHTML 1.0 FP includes and the <embed>s.


Almost all pages converted from .html to .php. Remaining pages do not require FrontPage extensions. Except for <embed> the site is now XHTML 1.0 Strict.

2010/07/06 @ 1205: I have removed the <embed> automatic audio until I can determine how to do it while maintaining XHTML 1.0 Strict.

The site is now XHTML 1.0 Strict!


I have just modified my Submit Comments page to use the

http://www.jamesshuggins.com/h/hefs/huggins-email-form-script.htm" (link no longer valid?) Huggins' Email Form Script - A Free PHP Email Script that Doesn't Require You to Know Anything At All About PHP.

A brief description from Huggins' website:

Huggins' Email Form Script is a free PHP script to process Web Forms, specifically those forms which accept information and send an email with that information.

Want to see an example? http://www.jamesshuggins.com/h/hefs/hefs-example-1.htm Example of Huggins' Email Form Script (link no longer valid?).

It is ideal for people who don't know how to write a script, don't want to use a script that exposes their email to spambots, want more features than their current script offers or who are using FrontPage Server Extensions which are going away.

How Free Is it?

It is completely free. No cost. Some who wish to express their thanks sometimes contribute. But there is no obligation to do so.

With several fairly simple changes, I managed to make the processes XHTML 1.0 Strict.

2010/07/08: Fantastic support and follow-up from James S. Huggins! I highly recommend this product.

2010/07/27: I have received several comments and questions via the new Submit Comments page...very nice!

2010/07/31: Moved the temporary styling and other Email Form Script stuff from .dwt file to the .css file; everything seems to work just fine!


Installed Windows Vista Ultimate as precursor to installing Windows 7 Pro. It took many hours to reinstall many programs.


PHP (php-5.2.14-nts-Win32-VC6-x86.msi) and "essential" MySQL (MySQL-essential-5.1.49-win32.msi) installed and tests work just fine.

For some reason, yet to be determined reason the "full" MySQL (MySQL-5.1.49-win32.msi) will not work??? Probably just a matter of proper settings.

2011/08/03: This has not been a problem for quite a while after installing XAMPP.


Changed default.html to index.php; now all pages except for a few .pdf pages are .php pages. This is done just for consistency.

I will monitor the effects to see if there seems to be excessive delays because of the PHP processing of .php pages which do not contain PHP code.


After trying for a couple of weeks (on and off) to get PHP, MySQL and phpMyAdmin working on my development PC; removing and reinstalling PHP and MySQL many times to no avail. I downloaded and installed XAMPP Windows 1.7.3 and now PHP, MySQL and phpMyAdmin all work correctly.


Changed navigation so a narrow about 3em wide Navigation Menu button/bar is displayed on each page and, when hovered over, the previous 20em wide Navigation Menu pops out and functions as before.

The result of the new menu system is to provide a wider screen display of the site information. It took me a while to make it work properly and required changing the margins for the menu content to be set to 0.0em.

2010/08/31: Still trying to add some animation to this menu button/bar to draw attention to it!

2010/09/14: Completed flashing black & white animated gif of Navigation Menu button/bar.


Installed Windows 7 Professional. It took many hours to reinstall many programs. Some problems with getting Windows Live Mail to work and retrieving old emails and contacts.


Received and setup new HP6500 All-In-One printer to replace my trusty old HP6110 printer because the HP6110 lost major functionality under Windows Vista & Windows 7.

HP6500 had problem, i.e., PC would not boot...kept getting a USB mass storage error...HP online chat helped to fix the problem.

HP6500 now works great.


Completed flashing black & white animated gif of Navigation Menu button/bar.


Inserted Tea & Coffee and Favorite Restaurants pages into Cooking pages.

Tweaked the Submit Comments page to help avoid spam comments of which I have received a few.


After a discussion with James S. Huggins http://www.jamesshuggins.com/h/hefs/huggins-email-form-script.htm" (link no longer valid?) Huggins' Email Form Script - A Free PHP Email Script that Doesn't Require You to Know Anything At All About PHP) regarding the effect of flashing items on people with epilepsy, I have removed the animation from navigation menu and replaced with a non-animated menu until I can figure out how to slow the flash rate down to about 1 flash per second.

James also mentioned that "experts" say that centering of text on a page is less effective than left justification. I will look into left adjusting all text except for headers/headings.


I managed to get the Submit Comments page aligned left!

Also I fixed all page XHTML titles to be the same as the titles on each page.


Began to develop a new mySQL book catalog page.

Extracted author, title, index data from ReaderWare as a CSV file.

Created a test MySQL database with a test table (test-table) using myphpadmin via XAMPP.

Googled for info regarding displaying a MySQL database; found many code examples and tried to make them work to no avail.


Added Site Map page and investigating several site map generation programs.

2011/09/06: I apparently did not followup with the site map page. I may implement this later.


I copied and modified the code to display a MySQL database by Sergey Skudaev at http://www.configure-all.com/display_any_table.php and finally got the table to display...the problem was using hyphens in table name...I changed the underscores in table name (test_table) to hyphens and desired code worked!

The next task is to figure out how to migrate the test database to my site host (Network Solutions). I would prefer to have the database migrate with new site code if possible. 2010/12/??: Migration done using myPhpAdmin Import.


Develop MySQL tables and create a generalized catalog.php page to handle all tables automatically based upon the actual characteristics by passing tablename, sortcolumn, and sortorder asc/desc as URL parameters

Created test database on Network Solutions and imported test table data.

I just figured out code which allows me to connect to the MySQL database both when running on local host and when running on the remote host on Network Solutions; example of code:

SOLVED: PHP - Connect/select local/remote MySQL database based on where code is running
$dbhostname = $local_dbhostname;
$dbuser = $local_dbuser;
$dbpassword = $local_dbpassword;
$dbname = $local_dbname;
if (mysql_connect($hostname, 
  $dbuser, $dbpassword) 
      === false) {
  $hostname = $remote_hostname;
  $dbuser = $remote_dbuser;
  $dbpassword = $remote_dbpassword;
  $dbname = $remote_dbname;
    ($hostname, $dbuser, $dbpassword) or die
    ("Unable to connect to the server error="
mysql_select_db($dbname) or
  die("Unable to select the database error="


I doubt I will be able to migrate new database data to Network Solutions as part of EW FTP update process because of where Network Solutions locates databases but I may look into developing some PHP code to do the migration. 2011/02/13: issue resolved some time ago by using phpAdmin on remote server.

I have converted all the MySQL functions to MySQLi_ functions and cleaned up the code and page display which required modifications to the above example.

Next step is to create code which will allow user to sort on desired column.


After spending a lot of time doing a lot of Goggling to find out how to allow a site visitor to select which column upon which to sort and trying other folks code and failing to make any of it work properly, I found, kind of by accident, someone using the $_GET function to get a URL parameter. I thought about it and came up with my own way to allow a site visitor to sort upon the column of their choice.  My technique involved adding links to the page which reference the URL of the page but with column sort parameters. The $_GET function gets the column sort parameter (if not present, a default value is used) and uses it in the MySQLi_query function ORDER option.


Much more work...generalized the test table display page to work with both HTML-CSS books and LMC CDs and additionally all cataloging databases with ascending/descanting sorting on Authors/Artists and Titles by modifying the URL parameters!

There is a problem with using the RW CSV extracts and loading importing them into MySQL tables...seems to be some characters in the extract which cause the import to terminate. This will most likely require some editing of the RW databases to change those characters.

Although the new generalized page is XHTML 1.0 Strict, I will hopefully get to cleaning up the code CSS 2.1 clean by removing various <center>, etc. usage!

If someone shows interest in my techniques/code, I may add examples here on this page and provide links to them so they can appear in in search engines.


Several major problems have been solved. After cleaning up some ReaderWare data last yesterday and today including replacing field trailing quotes and the matching quotes in fields with apostrophes (because "xxx ""zzz""", fields in the RW .CSV export files cause field count errors in the MySQL phpMyAdmin import processing...I will try to figure out why this happens and go back and change the apostrophes back to quotes in the ReaderWare data), all the current database tables (asian_non_asian_cookbooks, non_asian_cookbooks, webdev_books, lmc_audio, and lmc_video) are working in the test and the production environments.

I figured out how to use PHP URL redirection so I can replace several old pages with the new cataloging process while allowing the previous links which are in search engines to automatically go to the new pages. After spending a lot of time trying to make it work on my local host to no avail, I tried it on my site and I discovered that the PHP redirection works on the site host but not on the local host. I may or may not try to make it work identically on the local host and the site host when I get some more time because all other processes work identically on both the local host and the site host.

Additional work to be done includes

- expanding the number of columns in the in the database tables

- cleaning up more of the data in the ReaderWare databases (2011/01/02: no cleanup necessary)

- replacing some current links and adding new links to the new cataloging process where appropriate in the existing pages including a link to LMC Video on the Drumming Info page

- completing the ReaderWare data entry for the new lmc_video table - 2010/12/19 began cataloging of LMC videos

- add cooking video table 2010/12/26: done!

- modify URL redirection to work on local host AND remote host - 2010/12/2 by using HTML redirect instead of PHP header()


Cleaned up the RW, AW and VW data replacing doublequote characters with &quot; characters until ReaderWare is fixed.

I modified the generic catalog page by adding the appropriate "group" navigation .inc file and a PHP .inc file which copies the information which was previously shown of various pages. This required that I create appropriate .inc pages containing the previously shown information, The tablename parameter is used to determine the correct .inc file.

I have also added the new LMC Video links.

Some adjustments need be done to left justify the appropriate text in the aforementioned .inc files 2010/12/23 done.


By modifying the table data in MySQL to include the triple doublequote string, doing a phpMyAdmin extract, I was able to determine the the triple doublequote strings problem is caused by the lack of an escape character.

Began cataloging my LMC Video collection, 39 entries so far done with Auto Catalog which is about 50% of the collection...the remainder will have to be manually processed.

Discovered that "á" and "é" characters in the MySQL tables, when retrieved by the catalog page, are displayed as small square symbols; I think this has to do with character encoding; I need to figure out how to fix this problem. 2011/01/20: solved!

Maybe create a table-driven URL redirect function to use in in the old page to new page redirection pages


After spinning my wheels for many hours, I finally solved the Sort by Title problem!

Also replaced the old links to various books to use the new catalog page.

Replaced some ": " with " - " in several LMC Video titles (possible problem with remote file import


Maybe add LMC books table


Maybe add non Latin music books, audio and video collections.


Maybe add model train book and video tables.


Maybe add Spiritual Quest book and video tables.


Fix the new XHTML 1.0 Strict incompatibilities so code is again compatible.


Fixed the XHTML 1.0 Strict incompatibilities.


Added a new cooking videos table and appropriate links to the Navigation Menu and to cooking_nav.inc.

Tweaked the Navigation Menu for clarity and consistency.


Lost "connection" to Apache and MySQ, i.e., the Expression Development Server comes up instead of Apache/MySQL and cannot preview pages which reference the MySQL database.


2010/12/27: Still working on problem for many hours, reinstalled EW3 and SP1 & SP2, reinstalled XAMPP to no avail.

2010/12/29: Three days of wheel-spinning but I finally got it to work again!

Two changes to Apache httpd.conf:

- DocumentRoot "F:/!!!expressionweb_dmreed.com" (note: changed to H://expressionweb_dmreed.com)

- <Directory "F:/!!!expressionweb_dmreed.com"> (note: changed to H://expressionweb_dmreed.com)


One change to EW Site, Site Settings, Preview to use custom URL: http://localhost/

Using many $_SERVER calls as part of debugging, I am able to see that Apache was indeed the local server.

2010/12/30: To make my site more Unix compliant

- reinstalled XAMPP to f:/xampp and redid above changes

- renamed !!!expressionweb_dmreed.com directories to expressionweb_dmreed. 2011/??/??: renamed to dmreed.com


As I was writing this entry, I just discovered that these changes cause a problem with  displaying Apache Admin in the XAMPP Control Panel (Apache Friends Edition). I am sure there is a setting somewhere to fix the problem but, for now after all these days/hours,  it is time to get some sleep!

2010/12/?? Using VHOSTS is probably the solution.

Partially solved 2011/01/09: VHOSTS works but the problem with Submit Comments Thank You does not come up? Probably has to do with the localhost:nnnnn

solved 2011/01/14: Reinstalled apache 1.7.3 and with original httpd.conf, httpd-vhosts.conf, and php.ini.

SOLVED: Win7, Apache & Virtual Hosts (VHOSTS) using port numbers for different localhosts

After many attempts using the techniques suggested by many online references with no success, I finally found the following TUTORIAL: Setting Up Virtual hosts on Vista. It is simple, straight-forward, and it WORKS!

Additionally, I had to adjust VHOSTS to use separate ports for h:/dmreed and h:/devsite. I found the solution at VirtualHost Examples: Running different sites on different ports showed how to do it!

I changed h:\dmreed.com and h:devsite.com to h:\8081dmreed and h:\8082devsite so http://dmreed.com and http:/localhost/dmreed.com would not be "confused" with each other and VHOSTS would work correctly.

Added the following to C:\Windows\System32\drivers\etc\hosts:       localhost
::1             localhost       8081dmreed       8082devsite

Added the following to H:\xampp\apache\conf\httpd.conf after the line "Listen 80":

Listen 8080
Listen 8081
Listen 8082
Listen 8083
Listen 8084

Added the following to H:\xampp\apache\conf\extra\httpd-vhosts.conf to create named VHOSTS for h:\dmreed and h:\devsite:

  ServerName 8081dmreed.localhost
  DocumentRoot "H:\8081dmreed"
  <Directory "h:\8081dmreed">
    Options Indexes FollowSymLinks 
    Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from All
  ServerName 8082devsite.localhost
  DocumentRoot "H:\8082devsite"
  <Directory "h:\8082devsite>">
    Options Indexes FollowSymLinks 
    Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from All
Additional Named Virtual Hosts as needed
...ports 8083, 8084, etc.

For EW3/EW4, I made the following change to Site/Site Settings/Preview/Preview using custom pURL for this website:

Modified the Huggins script by adding appropriate $_SERVER['SERVER_PORT'] to FormNextUrl.

Now everything works: the Apache Admin and the Submit Comments Thank You page!


Accessing the Huggins script on the remote host is still required. Fixing this "problem" will probably require setting up email on the local host.



Added 2 more virtual hosts using ports 8081 and 8082.


After many days/hours of testing and trial and error, I finally found the solution to the problem of the string """, in ReaderWare export files which happens when a ReaderWare field has a trailing quoted string. This string causes an invalid field count when phpMyAdmin imports the ReaderWare export using the CSV option.

The solution is to use the phpMyAdmin import option "CSV using Load Data" instead of the "CSV" option.

Nice way to end the year!


Finally, I managed to develop PHP code to allow the optional display of product_info/album_info/video_info and my_comments on catalog pages! This included my first use of PHP OOP which I copied from the internet:

//Get fields (columns) names
$xmeta = mysqli_fetch_field($xresult);
$xfields_array[] = 
  <span class="background-1px-teal">
$xfield = $xfields_array[$i];

I definitely will have to study up on OOP!

I reset the preferences in ReaderWare to use Last, First name formats and it works great in the catalog page!

I tweaked the names of .inc files to use all underscore characters rather than some hyphen characters. I have tried to check all affected pages and they look alright but only time will tell if I managed to make all the changes correctly.

Previously working redirect for lmc-cds.php no longer working. 2011/01/08: Maybe working again?

2011/01/10: using my_redirect() works! Need to fix all redirect pages. 2011/01/22: Done.

Widen Navigation Menu button slightly. 2011/01/22: Done.

Raise all fly-outs one or two lines EXCEPT Navigation Menu fly-out. 2011/01/?? Done.


Created a new partition on my HD for Expression Web, ReaderWare, and XAMPP. Renamed folders starting with expressionweb_dmreed.com to expressionweb_dmreed.


After adding new partition, CHKDSK runs with every boot. Goggled for reasons. Ran FSUTIL DIRTY QUERY C: and got message that C: was dirty. Tried many of the various techniques described in the Google search and none of them has reset the dirty bit. But CHKDSK no longer runs on every boot. Would like to reset the dirty bit but it will have to wait! froney face


Replacing the old HDs with the larger HDs and using Partition Wizard to copy the old disk to the new disk seems to have solved the dirty bit problem smiley face smiley face


Began replacing .dwt usage with PHP INCLUDES and removing the large site descriptive text except on the Home Page. Some pages will continue to use the .dwt and all its text as I continue to convert all the pages. Page name will be replace the previously used CSS "id-right-page-container-hdr" which will further reduce the text on a page.


All pages completed and working but Submit comments pages need drastic revision although actually working. 2011/01??: done.

Have to fix character encoding to allow special characters ASAP!

Note that using PHP functions instead of EW .dwt does not allow display of actual page layout but the EW Preview button does display the page. This will take some getting used to but I think the effort is worthwhile.


Display Page/File & MySQL Table Last Updated Date/Time Using Local Date/Time On Local and Remote Hosts

SOLVED: Display Page/File & MySQL Table Last Updated Date/Time On Local & Remote Hosts
Several of the following entries are required to see the entire sequence of changes to produce the final solution and they are prefixed with ***:

*** 2011/01/10: Created file 00_last_updated.inc so I have an easy way to update the information and which consists of the single line:

  Site Last Updated on 2011/01/10 @ 0500

and figured out how to use it in the my_set_title() function using

  implode (file("00_last_updated.inc") )

which displays as:

  Page Last Updated: 20110211 @ 2311

*** 2011/01/11: Redesigned the overall design of displaying pages by replacing the .dwt with a PHP function $html_ver = my_dwt_equiv.php used as follows:


which replaces but uses the former my_set_title and header display functions and the my_footer was modified appropriately.

*** 2011/01/11: Previously I had figured out how to use the date() function to get the page last updated date from the page file itself instead of using the 00_last_updated.inc file:

  $date_last_updated = date("Ymd @ Hi", filemtime($_SERVER["SCRIPT_FILENAME"]));



  $update_dates = "Page Last Updated: ".$date_last_updated.;

which displays as:

  Page Last Updated: 20110211 @ 2311

But I discovered last night that it displayed correctly on the local host but not on the remote host where it displayed what I think is the remote server date. I just now figured out how to get the page file date and display it as PST on both the local and remote hosts:


$date_last_updated = date("Ymd @ Hi T", filemtime($_SERVER["SCRIPT_FILENAME"]));



  $update_dates = "Page Last Updated:&nbsp;&nbsp;". $date_last_updated;

which displays as:

  Page Last Updated: 2011-02-11 23:11:15

which displays as

  Catalog Database Last Updated: 2011-01-25 01:54:22


*** Additionally, I finally got the MySQL table
last updated date ($catalog_last_updated) to work using
the following:

// get table last updated date

   $last_updated_result = array();

   $last_updated_query =
'SELECT UPDATE_TIME FROM information_schema.tables'

    - - - -   - - - -   - - - WHERE TABLE_SCHEMA = "'.$dbname.'" AND TABLE_NAME =

   $last_updated_result =
mysqli_query($db_link, $last_updated_query) or

   while($row =
{ $catalog_last_updated = $row['UPDATE_TIME'];}




   echo 'Catalog Database Last Updated: '.


*** Remote host MySQL table last updated date displays remote host last updated time.

Need to see if I can get it to display as local host time (PST).

Also need to check when daylight savings time changes if the times also change.

Unfortunately, the display of international (UTF-8) is again not functioning.


*** SOLVED: I think I have fixed the last updated date_time problem and both local and remote hosts now seem to display appropriate last updated PST date_time for pages and catalogs. Note that the remote server times differ from the local server times because the remote server files show when those files were uploaded and not when they were changed on the local server. The resolution of the problem involved the following:

- Convert the MySQL LAST_UPDATED to a timestamp format using strtotime()

- For the the remote server, subtract 3600*3 from the timestamp

- Finally convert the timestamp back to the desired display string format using date()


UTF-8 problem solved!

The function $html_ver = my_dwt_equiv($page_title,$catalog_last_updated) does everything a .dwt does except the EW Design View only shows the "page content" but without the CSS formatting.

Inserting the following at the top of each page just before the "page content code":

<?php include '0_my_php_functions.php';
  ('page_title',$catalog_last_updated); ?>

creates the appropriate page XHTML "headers" including <title> and my navigation menu and "page headers" including a date last updated obtained from a file (2011/01/11: see above for new last updated date processing) which is applied on every page :

XHTML 1.0 Strict//EN" 
http-equiv="Content-Type" content="text/html; 
<link rel="stylesheet" href="0_master.css"/>
<style type="text/css">
<title>My Mainly Musical Autobiography 
<span class="right-container">

and a my_footer($html_ver) function which is inserted at the bottom of each page after the "page content code" and creates:

</span class="right-container"> 

If anyone is interested in the technique using $html_ver = my_dwt_equiv() and my_footer($html_ver), you may contact me via the Contact Page for details.


The international character (UTF-8) problem has been solved. Description of solution may be added later. "Solution involves adding the following at the bottom of page code after my_footer($html_ver) and appropriate PHP includes:

<meta content="text/html; charset=utf-8"...

International characters display OK on coded pages but phpMyAdmin does not import them into MySQL. Using phpMyAdmin, if I add "á" to a field it stays and displays in MySQL but it does not display when catalog.php displays the field. So there are a couple of problems: importing into MySQL and the catalog.php display.

2011/01/20 solved!

Redefined a couple of fields from VARCHAR to VARBINARY using phpMyAdmin and catalog.php displays international character(s) correctly. So the problem is importing them into MySQL.

Display difference of page header between local and remote hosts. Local host displays as desired but remote host is off in spacing.

2011/09/09: Removed the meta from the footer() code and everything seems to work OK!


Kind of quirky, I just fiddled around with different ways of displaying the page header and finally found a solution. I do not know why there was a difference???


My site has been and continues to be developed on a PC with Win 7 with the US-International Keyboard option and using:

  1. ExpressionWeb 3 (EW) for site development and for change management and FTPing to my remote host;
  2. All pages and includes are .php files;
  3. Apache, PHP and MySQL were installed using xampp-win32-1.7.3.exe
  4. The following has been added to the bottom of each .php page (except for 00_last_updated.php which contains only a text string) after the closing "?>" to allow EW to save the files properly for the display of UTF-8:
    • <!-->
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

Per a suggestion by James S. Huggins (see my Submit Comments Page), I downloaded and ran xenu link and discovered many, many link problems and inconsistencies on my site although, except for a few broken external links which I removed, the site performed as expected. It took me quite a while to find all the errors because EW Find does not find strings in the PHP quoted XHTML! I highly recommend this useful and FREE program!

XENU can create a very large report file which begins with "TGH" and can be found by entering "%temp%"  in the browser URL box.


How To Make All Solid Borders Around Form Input and TextArea

SOLVED: All Solid Borders Around Form Input & TextArea "Boxes"

After a lot of searching, I finally found the way to make all solid borders around the Form Input and TextArea "boxes" on the Submit Comments Page by adding the following to the CSS file:

input -   {border-color: green; border-style: solid; border-width: thin; padding:.01875em; }

textarea {border-color: green; border-style: solid; border-width: thin; padding:.01875em; }


Found a javascript (sorttable.js) to sort tables by clicking on the header of a column at kryogenix.org/code/browser/sorttable/#sortonload. I added the following to the HEADER code in $html_ver = my_dwt_equiv.php:

<script src="sorttable.js"></script>;

To make XHTML table columns sortable, just add ".sortable" as a class for the table!


Finished the cleanup of the LMC-Annotated table and made the columns sortable.

Just received Wicked Cool PHP by William Steinmetz with Brian Ward wicked cool phpand on page 5 was a description of how to do "zebra stripping" when displaying the rows from a MySQL table. Using the described function and CSS, I have added "zebra stripping" to catalog.php generated displays and other hard-coded tables!

I also added


to the top of my_php_functions.php which is included at the top of every page and displaying every page only catalog.php had one "undefined variable" which was was easily fixed! I really expected to have many errors smiley face


phpMyAdmin Import of EXCEL UTF-8 CSV files with fields terminated by comma and fields enclosed by doublequote

SOLVED: phpMyAdmin Import of UTF-8 CSV files

I finally solved my problem of using phpMyAdmin Import to load UTF-8 data into MySQL.

I created a PHP function convert_csv_to_utf($csv_file_name,$utf_file_name) which reads and encodes $csv_file_name (xxx.csv) and  writes $utf_file_name (xxx.utf).

The xxx.utf is loaded into MySQL using phpMyAdmin Import. When the data is retrieved from MySQL, each field is again encoded before displaying.

The functions involved are as follows:

function convert_csv_to_utf
  ($csv_file_name,$utf_file_name) {
if (file_exists($utf_file_name)) {
  echo "<br>".$utf_file_name." exists";
  if (file_exists($utf_file_name)) {
    echo $utf_file_name." not deleted<br>";}
  else {echo $utf_file_name." deleted<br>";}
else {echo $utf_file_name.
      " does not exist <br>"; }
$utf8_encoded_file = 
echo "<br><br>"
function read_csv_file_encode($filename) {
// set_time_limit(0); only needed if timeouts 
// occur
	$file = fopen($filename, "r");
	$utf8_encoded_file = 
	fclose ($file);
	return $utf8_encoded_file;
function write_utf8_encoded_file
    ($filename,$utf8_encoded_file) {
	echo $filename." written<br><br>";

In the page "display" code, something like the following is used:

print("<td>".utf8_encode($row[$i]). "</td>");

My largest table currently has about 900 rows and the function is almost instantaneous so I am not aware of how long this function would take for very large tables.

2011/05/29: many modifications/additions have been made to the processes, I may replace the above with the newer code when I get some time.


Working to see if using SESSION variables instead of URL parameters for catalog.php will work and leave "clean" URLs.

2011/10/??: Changed so only the $html_ver and $tablename are passed. Now using 0_javascript-table-sort.js for catalog column sorting.


Working on making user "screen resolution suggestion" line conditional based upon the user's screen resolution.

2011/02/08: Solved by using a JavaScript from:

Screen resolution detection and notification script © Dynamic Drive (www.dynamicdrive.com)

For full source code, installation instructions, 100s more DHTML scripts, and Terms Of Use, visit dynamicdrive.com

I modified $html_ver = my_dwt_equiv($page_title,'','','best_viewed') to conditionally insert/run the script if the 4th argument is "best_viewed" or 'best_viewed'.

screenres() has been added to 00_javascrip_lib.js along with the other javascript functions which will reduce the amount of code in my_dwt_equiv() as soon as I figure out how to use it as within a PHP function.

I am still trying to figure out how to change the font/color/size of the document.write() output.


Needed to understand javascript double quote escape; easy changed " to \" in output string for HTML class="...".


Created a best_viewed_msg()  function which I may try to modify to use the actual screenres.js file.


Trying to see if  "Liquid Layout" (see Matthew James Taylor "ultimate-3-column-holy-grail" and other liquid/flexible layout online resources) will make pages display better using various screen resolutions.


Received "Flexible Web Design: Creating Liquid and Elastic Layouts with CSS by Zoe Mickley Gillenwater book cover flexible web design which looks like it should help with my site redesign!


Installed Huggins' latest script update and created a new Submit Comments Page.

Everything works except when I try to run the new script using the localhost copy of the script????


I spent time checking what the Huggins' script actually sends to the SMPT server and it looks to be OK. The problem seems to be with the SMTP server smtp.west.cox.net and how it handles the more complex email addresses. For the now, I will access the script on the remote server.

DEFERED: Setup email on local host.


Made appropriate changes to httpd.conf and httpd-vhosts.conf to setup named VHOSTS for

h:\dmreed.com and h:\devsite.com

Modified the Huggins script by adding appropriate $_SERVER['SERVER_PORT'] to FormNextUrl.

See solved - Win 7, Apache 1.7.3 & Virtual Hosts (VHOSTS) for details.


Look into making "mobile device friendly".

Will probably have to wait until I get a mobile device. smiley face


Display Page Appropriately When User Forces Black Background

SOLVED: Display Page Appropriately When User Forces Black Background

A friend who uses black ground as a browser override pointed out that he could not see the black text on my pages.

I added the following to my CSS file:

* {background-color:white}

and uploaded the changed file to production. He now sees a black background with white text!

I think this has solved this particular accessibility problem.

2011/10/21: Disabled this CSs code and now the tr:next-of-type works for IE8 and greater!


Replaced both 350GB drives with 2TB drives...they might last longer than I do smiley face

Using Partition Wizard to copy old disks to new disks seems to have cleaned up the dirty bit problem! smiley face smiley face


Began looking at HTML 5 and CSS 3. It looks like it will be a very major project to convert the site. Deferred indefinitely.


SOLVED: Modified page header(s) to left align some paragraphs by changing <span class=... to <p class=... and adding margin:0 to definition of each associated task class in 0_master.css.


Removed <?xml version="1.0" encoding="utf-8"?> line because the ?> terminated <?php and this is not desireable. I may look into how to reinsert this line at a later date.


Actually quite easy, I should have thought of it earlier. I just used the following or something similar:

-   echo '<?xml version=\"1.0\" encoding=\"utf-8\"'.'?'.'>';

At the recommendation of Jeffrey Zeldman in his book "Designing with Web Standards", I have removed this line.


Just discovered that the Submit comments page has alignment problems on local host but looks fine on remote host.. Need to fix ASAP.


I just noticed that the localhost Submit Comments alignment problem has disappeared.

I have been doing some "minor" tweaking but I do not know which tweak fixed the problem!


Submit Comments alignment problem occurs again.


Submit Comments alignment problem fixed by using a table.

But I will work on using CSS instead of a table for alignment.


Using Network Solutions "customerror" facility, I have added customized HTTP 404 error handling to provide the link to the Home Page.

Redirect pages will no longer be necessary!

This has allowed me finally to change many page names for consistency and revised meaning. Any changed page names will get the "redirect" message until the various search engines have removed the old names.



Beginning to work on Accessibility issues:

  • Modified Navigation Menu to use actual text instead of a .gif image for the text "NAVIGATION MENU";
  • Changed text to black with white background...not as "pretty" but should improve accessibility.

Came across tawdis.net/ingles.html (link seems to be broken) which checks accessibility of pages. I will use it periodically to see if I can make additional accessibility changes to the site.


Discovered that after adding "font-family: Helvetica, Arial, sans-serif;" the ascending/descending "arrows" used by sortable.js displayed as 5 and 6 (WinDings font numbers?).

After some online searching, I found the HTML entities for ↑ (&uarr;) and ↓ (&darr;) and modified sortable.js to use them rather than the WinDings font. This should allow proper display on computers which do not have WinDings.

ENHANCE: Now the arrows do not refresh appropriately regarding up and down. I will look into this problem as I study and understand JavaScript more.


↑ (&uarr;) and ↓ (&darr;) problem fixed.

ENHANCE: Cannot figure out how to make &uarr; and &darr; bold.

2011/10/22: Unable to find how to bold &uarr; and &darr; so I replaced ↑ with ▲ (&;#x25b2;/&#9650;) and ↓ with ▼ (&#x25bc;/&#9660;).


solved just a few tweaks/corrections and site is again HTML 1.0 Strict compliant .gif and css 2.1 compliant .gif.

Just installed IE 9...so far site looks good with IE 9.

After discovering that IE 9 displays my site slightly differently than other browsers, especially regarding font size, I removed IE 9 and am now using IE 8 again. frowney face


Reinstalled IE 9 with the official MS release and the display differences seem to have disappeared.

I will use the following on a regular basis to verify that any site changes will still validate as XHTML 1.0 Strict and CSS 2.1:


IE 9 displays OK but the Print Button results in pages printing upside down, i.e., printing on 3-hole paper has the holes on the wrong side.

I uninstalled IE 9 AGAIN! And now, I will continue to use IE 8.

This is getting ridiculous, I guess I will have to wait until MS fixes the problem.


I have modified the entire site to use new CSS elements and to remove deprecated/obsolete tags, e.g., <center>...</center>, etc. this is in preparation for making site more accessible by using % or em font sizing.

More work to be done to remove <span>...</span>, etc., to separate semantics, style and structure.

I also need to find and replace appropriate display indentations/lists with <ul>...</ul>, etc.

ENHANCE: I need to revise the use of <h1>...</h1> and <h4>...</h4> in my header and elsewhere to use new CSS classes.

Added new 3rd column for subsequent actions.


Use of my modified <h1> thru <h6> tags has been changed to use classes hdr100 thru .hdr080 which are currently applied only to <div> blocks.


Created function my_db_connect(&$debug,&$dbhostname,&$dbname,&$db_link,&$dbuser,&$dbpassword) to be used in catalog.php and my_footer to facilitate the following.

Added xx-small font line to the bottom of my_footer($html_ver) which displays the current system configuration including: the XAMPP release version, Apache Version, PHP Version, MySQL Version, and the my_functions.php and 0_master.css last updated dates using:

function mysql_ver() {
  $dbhostname = '';
  $dbname = '';
  $db_link = '';
  my_db_connect($debug, $dbhostname, 
    $dbname, $db_link, $dbuser, $dbpassword);
  $rs = mysqli_query
        ($db_link, "SELECT VERSION()");
  $version = mysqli_fetch_row($rs);
  return $version[0];
function apache_ver() {
  $version = explode(" ",
	return ($version[0]."".$version[1]);

Chrome, Foxfire. Opera and Safari display site differently than IE regarding font size.

Need to make font-size "relative".

2011/10/16: Problem to to have resolved without making font-size "relative".


I just discovered that the site validation I was using http://validator.w3.org was only validating the home page. I found a site which validates the entire site. My site is no longer XHTML 1.0 Strict at this time. I will work to make it validate again.

I have enhanced my_php_functions() by adding a new first argument which specifys the (X)HTML version. The default is XHTML 1.0 Transitional and each page will be changed to be XHTML 1.0 Strict when its validation clears.

The Submit Comments page is and will probably remain specified as HTML 4.01 Strict because it uses the Huggin's external software package.

2011/03/19 All pages checked. Some pages need more work. The Submit Comments page needs special considerations.

2011/03/21: All pages checked. Most pages are XHTML 1.0 Strict and CSS 2.1 compliant except for the Submit Comments page. The appropriate images for are displayed on the first page header line.

Note: The code of the catalog.php program is XHTML 1.0 Strict compliant but the code it generates from the RW data may include "&" characters which may make the generated page code XHTML 1.0 Strict non-compliant but I will allow the catalog display to indicate XHTML 1.0 Strict compliant.

It may be possible to scan either the RW input files or the MySQL query results and replace the "&" characters with "&amp;"s.

The Huggins Submit Comments page form code and associated script may be replaced with XHTML 1.0 Strict code and script.

2011/05/16: solved! See 2011/05/16 entry below.



Modifing the read_csv_file_encode() to make the following search and replacements using the PHP function str_replace() priot to UTF-8 encoding:

*   &"
  &bull; *
  &hellip; ...
  &trade (TM)
  Q&A QandA
  &#8212 -
  &emdash -
* &#x92; &apos; or maybe special apostrophe
* &#xBF &apos; or maybe special apostrophe
* &#xE1;  
* &#xEC  
* &#8226;  
* &#x95;  
* &#x2019;  
* &#x201C;  
* &#x201D  
* &eth;  
* &#x85  
* &#xB7;  
* &#xE7;  
* &#xE7;  
* &#xD7  
* &#xA9  
* &#333;  
* &#257;  
* &#x83;  
* &#x82;  
* B&w
* &#xA1;  
* &#xA6;  
* &#xA7;  
* &#xA8;  
* &#x96  
* &#xE8;  
* &#xEE;  

Installed EW 4 SP1.

I would like to think that my numerous emails to MS about EW updates not being part of MS Update helped propmt MS to correct this issue.


Upgraded internet connection to 26MB download and 3.5 MB upload. I have done a couple of tests and it is faster but I have not achieved those speeds, i.e., I got about 20MB max download and 2MB max upload. But I think it is faster than before!


Windows 7 Clearing Dirty Bit

SOLVED: Windows 7: Clearing Disk Dirty Bit

I used the following CMD and it seems to have solved the "dirty bit":

chkdsk /f /r



Logitech Trackman Marble T-CH11 driver works in Windows 7 when compatibility is set to XP SP3. But previously it worked and then did not work. Currently working fine.


Made changes to my_php_functions.php, contact.php, and huggins-email-form-script-v2.2.3.php to make the Submit Comments page validate including adding code to create a $breaker variable to be set to '<br>' if $html_ver = 'HTML 4.01 Transitional' otherwise '<br> />'

similarly for '<hr>' and '<hr />'

and similarly for <img termination.

Also created 00_my_navigation_menu_html.php (an HTML version of 00_my_navigation_menu.php).


2011/05/02: Site is no longer XHTML 1.0 Strict...many errors although pages seem to display OK. frowney face

Major work may be required especially catalog.php generated code from RW LMC-AUDIO data.


  • Tweaked Huggin's Submit Comments code
  • Modified/enhanced newest version of CSV-TO-UTF process
  • Modified RW LMC-AUDIO to remove the one remaining character validation error

Site validates as XHTML 1.0 Strict except for the Submit Comments page which now validates as HTML 4.01 Transitional.


PHP <xmp> Replacement Function

SOLVED: xmp($arg) - PHP Replacement Function for Deprecated HTML <xmp> Tag

I created the following PHP function to replace <xmp> in several of my pages and it seems to have solved the deprecated HTML <xmp> tag issue for my usage and allows my pages to validate as XHTML 1.0 Strict! But will not validate as valid HTML5:

function xmp($arg) {
  // in the following replacements:
  // the first "<" is the "less than" symbol
  // the second "<" is "&lt;"
  // the first ">" is the "greater than" symbol
  // the second ">" is "&gt;"
  // the first "&" is the "ampersand" symbol
  // the second "&" is "&amp;"

  $arg = str_replace("<","<",$arg);
  $arg = str_replace(">",">",$arg);
  $arg = str_replace("&","&",$arg);
  return $arg;


2011/05/23: Redesigned and simplified site navigation to provide better accessibility. Replaced multi-level my fly-out menu with a simple one level menu. What used to be fly-out links are now simply the previously existing page navigation links on existing pages.

Would like to improve how "page container" relates to navigation menu and page display to  prevent horizontal scrolling.

2011/05/28: Temporarily fixed the horizontal scrolling problem on the catalog and other affected pages by reducing the table text size.

ENHANCE: I hope to resolve the problem while allowinng the original text size at some time in the future.


Created a new generalized function redisplay_table_page($html_ver,$_SERVER['REQUEST_URI']) to display the "This table is sortable if JavaScript is enabled, just click/touch on column header. Click/Touch here to restore original sort." where the "Click/Touch here..." is a link to the page itself.


Replaced most <br> and <br /> by br($html_ver,nnn), created new htmlterm($html_ver) function to provide appropriate HTML terminations, i.e., " />" or " >", replaced many <br /><br /> making text into paragraphs, and made some changes to 0_master.css to make p margins smaller.

2014/08/00: Removed usage of br($html_ver,nnn) and replaced with appropriate number of <br> as part of Progressive Enhancement techniques.


Finally, csv-to-uft with substitutions processing has solved all validation problems except for one non-SGML character termination.

2011/10/16: Seems to have been resolved somewhere along the line!


Added $additional_scripts to my_php_functions to allow individual jquery/javascript functionality to appropriate pages without have to load entire scripts libraries

Simplified the check to see if javascript is enabled by using

<script type="text/javascript">
    JavaScript is disabled. This site 
    uses some Javascript. To enable 
    best functionality and viewing, 
    please enable JavaScript.
2011/07/03 Using Xenu, I fixed several links which would break on some servers because of capital letters and/or spaces in the link names.

I have created a PHP function pre_code($code) to allow easy display of HTML and CSS code without modifying the source code. The function replaces '<' with '&lt;', '>' with '&gt;', '$' with '&#36', and 'function' with 'f&zwj;unction'.

Note the use of '&zwj;' which is used to disable the execution of PHP functions and '&#36' to disable PHP function variables but allow correct display of $code on page.

2011/08/31: Replaced by a better PHP function pre_code($html_ver,$code) which does not use '&zwj;' making the display much better. It is used by function dis_func_code():



I rewrote the solved($args...) function to use the new PHP CSS Table functions.


IE8 Displays Page Differently In Compatibility View

SOLVED: IE8 Displays Page Differently In Compatibility View

Suddenly index.php displays differently when accessed from the local host and from the remote host.

In other browsers, both the local host and the remote host display properly. After much testing and comparing the HTML source listings from both hosts, I found that both HTML sources were essentially identical.

I do not know what prompted me to do so but I then looked at the IE8 Compatibility View settings and they were different! I do not know why one invocation of IE8 displayed in Compatibility View?

index.php and maybe other pages does/do not display properly in Compatibility View!

The problem seems to be with displaying CSS-only tables. Turning off Compatibility View allows page(s) to display properly.

Further research provided the answer. IE7 and before do not support "display attributes table, table-row, table-cell, etc., so the CSS-only table codes only display properly with IE8+. Other current browsers seem to work OK

2011/08/08: see 2011/08/09b above for modifications to "CSS Table" functions to create HTML tables or CSS tables depending of IE version.


Created a new PHP function nbsp($reps) which is essentially like br($html_ver,$reps) except that it inserts a number of &nbsp; based upon reps.

needs recode

Created a new PHP function dis_func_code to make it easier to display code examples from my PHP function library file. The function code in the function file to be displayed is delimited by /*begin functionname*/ and /*end functionname*/. The following is the new code and is displayed using the new dis_func_code itself; the border is also part of the new function:

function dis_func_code() {
// Note that using this function may require
// some adjustment of the actual code to be displayed, 
// i.e., to be moved to the left of the HTML page 
// and sometime splitting code lines so the displayed 
// code fits on the displayed page.
  $num_args = func_num_args();
  if ($num_args > 0) $html_ver = func_get_arg(0);
  if ($num_args > 1) $func_name = func_get_arg(1);
  if ($num_args > 2) $func_file = func_get_arg(2);
  else $func_file = '0_my_php_functions.php';
  if (!file_exists($func_file)) {
    return 'file "'.$func_file.'" not found';
  else {
    $func_file_str = file_get_contents($func_file);
    $begin_str = '/*begin '.$func_name.'*/';
    $begin_str_pos = strpos($func_file_str,$begin_str);
    if ($begin_str_pos) {
      $end_str   = '/*end '.$func_name.'*/';
      $end_str_pos = strpos($func_file_str,$end_str);
      $start_function_str_pos = 
        $begin_str_pos + strlen($begin_str);
      $end_function_str_pos = $end_str_pos - 1;
      $length_function_str = 
        $end_function_str_pos - $start_function_str_pos;
      $function_code_str = 
    $ret_val =
      '<a id="'.$func_name.'-link"></a>'.
/*      '<span class="border-2px-orange" >'. */
/*        'Display generated by'.br($html_ver,1). */
/*        'dis_func_code($html_ver,"'. */
/*        $func_name.'","'.$func_file.'")</p>'. */
/*       '</span>'; */
    return $ret_val;
    else {
      return 'function "'.$func_name.
       '" not found in file "'.$func_file.'"';


Created a new PHP function pre_code to make it easier to display HTML and CSS code:

function pre_code($html_ver,$code) {
// Note that using this function may require 
// some physical adjustment of the actual 
// code to be displayed, i.e., to be moved 
// to the left of the HTML page and sometime 
// splitting code lines so the displayed code 
// fits in the appropriate space on the 
// displayed page.
// 1st "<" is "less than" symbol
// 2nd "<" is "&lt;"
// 1st ">" is "greater than" symbol
// 2nd ">" is "&gt;"
// 1st "$" is "dollar" symbol
// 2nd "$" is "&#36;"
// the following line added to allow the 
// display of functions using arguments 
// passed by reference
  $code = str_replace('&$','&$',$code);
  $code = str_replace('$','$',$code);

  $code = str_replace('<','<',$code);
  $code = str_replace('>','>',$code);
  $code = str_replace('(','(',$code);
  $code = str_replace(')',')',$code);

  $ret_val =
/*    '<span class="border-0px-yellow left" 
/*style="background-color:yellow;"> '. */
/*    'Display generated by function pre_code().'. */
/*    .'</span>' */
  return $ret_val;


@11:00:00 Beginning to use html5.js http://remysharp.com/2009/01/07/html5-enabling-script (link no longer works?) and HTML5 elements starting with <nav> for the navigation menu and <footer> for the footer function.

@11:30:00 OOPS! Using <nav> on the navigation menu will have to be deferred until most/all pages are HTML5 because non-HTML5 pages will not validate!

@11:45:00 Recoded the navigation menu and the footer function to conditionally use <nav>/ <footer> or <div> based upon $html_ver.

@11:50:00 Need to resolve <meta ...> end tag issues. But for now, I am taking a break!

2011/09/07: Created a new PHP function html5($html_ver,$html5_element,$html_other_element) to facilitate converting pages to HTML5.

function html5($html_ver,$html5_element,
               $pre_html5_element) {
  if ($html_ver === 'HTML5') 
  return $html5_element; //default HTML5
  else return $pre_html5_element;

The PHP variable $html_ver has been used and continues to be used to allow (X)HTML & HTML5 version specific code to be created by various PHP functions:

// Used for converting site from 
// HTML 4.1 to HTML5)
function br() {
// br($html_ver) creates <br> 
// or <br /> tags based upon the 
// required argument $html_ver
// a second optional argument may be 
// used to specify how many repetitions 
// of the tag is desired, e.g., 
// br($html_ver,2)
  if (func_num_args() > 0)
	{$html_ver = func_get_arg(0);}
  $reps = 1;
  if (func_num_args() > 1) 
	{$reps = func_get_arg(1);}
  switch ($html_ver) {
	case 'HTML 4.01 Transitional':
	  $breaker='<br>';// $breaker=<br>
	case 'HTML5':
	  $breaker='<br>';// $breaker=<br>
	  $breaker='<br>';// $breaker=<br />
  $ret_val = '';
  $i = 0;
  do {
	$ret_val = $ret_val .$breaker;
	$i = $i + 1;
	} while ($i < $reps);
	return $ret_val;

// Used for converting site from 
// HTML 4.1 to HTML5)
function hr($html_ver) {
  switch ($html_ver) {
    case 'HTML 4.01 Transitional':
      $hr = '<hr>';
    case 'HTML5':
      $hr = '<hr>';
      $hr = '<hr>';
  return $hr;

// Used for converting site from 
// HTML 4.1 to HTML5)
/*function htmlterm($html_ver) {
  switch ($html_ver) {
    case 'HTML 4.01 Transitional':
    	$htmlterm = ' >';
    case 'HTML5':
    	$htmlterm = ' >';
      $htmlterm = ' />';
  return $htmlterm;

etc., were created and used to allow appropriate "generic" functionality and validation based upon the HTML/XHTML version being used for each page. This allows easy changing of HTML/XHTML versions.

2011/09/10: The functions pre_code($html_ver,$code) and dis_func_code($html_ver,$func_name,$func_file) can be useful for debugging, for example:

<?php echo pre_code($html_ver,'
  echo "code_example_1 - without code execute<br>";
  $html_ver = "HTML5";
  echo pre_code($html_ver,'>');
'); ?>

will provide the following:



<?php echo pre_code($html_ver,'
  echo "code_example_2 - with code execute<br>";
  $html_ver = "XHTML 1.0 Strict";
  echo pre_code($html_ver,'>');
'); ?>

will provide the following:



Suspended HTML5 enhancements to finish up several pages changing to using <p> instead of PHP function '

'. Also recoded several of the code displays to use dis_func_code() and pre_code() functions.

@230000: Finally cleaned up a lot of displays. Back to HTML5 enhancements!


Recoded each nvigation menu file to use an unordered list which is so much simpler and cleaner than my original flyout with flyout sub menus:


Continuing to modify this page to display code examples using pre_code($html_ver,$code).

When finsished, then back to HTML5.


13:00:00 - I just discovered that the navigation menu no longer works on the Submit Comments page. Immediate resolution is needed.

14:20:00 - I created a temporary Submit Comments page which requests sending me an email while I try to figure out why the original Submit Comments page is no longer workiing correctly.

2011/09/12 @ 20:00:00 - Fixed by adding

<META http-equiv="Content-Style-Type" content="text/css">

to the header code in 0_my_php_functions.php.


I purchased Total Validator Pro (TVP) after preliminary testing with the free version of Total Validator.

total validator logo    total validator logo   total validator logo

I will use TVP as my main site validation program because it provides the ability to perform:

- single page and full site validation on my local host

- single page and full site validation on my remote host

- HTML5 validation which will help me in upgrading my site to HTML5

- accessibility validation which will help me make my site more accessible


Using Total Validator Pro, I have completed the first HTML5 version of my site!

All pages are now HTML5 validated (except for a single character in the xmp function which I will keep because of the needed functionality).

In less than a day, using TVP, I was able to convert my entire site (some 142 pages with 1018 links) from XHTML 1.0 Strict to validate as HTML5 on my local host.

TVP also allowed me to make a couple of corrections and enhancements to my process for converting .csv files to utf-8 files so my catalog display pages (some of which had “bad” characters in the data) now validate as HTML5.

I now use the TV icon to show HTML5 validation.

The first test had 1500+ errors/warnings (some were repeats so a single change fixed multiple errors/warnings) and I am now down to 1 link error and 2 link warnings! And the error is not really an error.

Finding the required changes would have taken many frustrating days if I had had to do one page at a time and/or having to upload pages to my remote site to find each required change.

I look forward to using TVP to improve some site accessibility issues.

Although all pages validate as HTML5, I am not currently using any HTML5 only code.

Now I can continue looking into actually beginning to use some HTML5 only code.

2011/09/15 and 2011/09/16: Some minor tweaking and clean-up.


After a lot of Googling, I found and added a new PHP function " browser_detecton" to facilitate "conditional code" for HTML5. The description and code can be found at


I created a PHP function which uses the above the function browser_detection which returns "$browser.' '.$version" and also provides both $browser and $version via "passed by reference":

function browser_ver($html_ver,&$browser,
            &$version,&$os_type,&$os_number) {
// uses browser_detection() from
// techpatterns.com/downloads/
// php_browser_detection.php
// returns browser-version string but also 
// provides $browser and $version via 
// arguments passed by reference
  $array = browser_detection('full_assoc');
  //print_r($array); echo '<br><br>';
  $os_type = $array['os'];
  $os_number = $array['os_number'];
  $browser_working = $array['browser_working'];
  $browser_number = $array['browser_number'];
  $browser_name = $array['browser_name'];

  switch ($browser_working) {
  	case 'ie':
    	$browser = $browser_working;
    	$version = $array['true_ie_number'];//$array['$browser_number;
	 case 'moz':
  		$moz_data = $array['moz_data'];
    	$browser = $moz_data['0'];
    	$version = $browser_number;
  	case 'op':
    	$browser = $browser_name;
    	$version = $browser_number;
  	case 'webkit':
    	$browser = $browser_name;
    	$version = $browser_number;
  		$browser = $browser_working;
    	$version = $browser_number;
  return 'Detected Operating System: '.
  mb_strtoupper($os_type,'UTF-8').' '.
  ' Detected Browser: '.
  ' '.$version;
//include '0_browser_detection_5.4.5.php';
include '0_new_browser_detection.php';


After reworking 0_my_php_functions to load appropriate versions of navigation menu files and a new based upon detected browser version and similarly for 0_master.css and 0_master-ie6.css (the "-new" is a version which is being redone: reorganizing, removing unused entries, etc.), I finally managed to get site to at least display in IE6/IE7. Not exactly the same as IE8 but close enough for government work!

Currently both .css files are identical and, if no further changes are discovered, I will eliminate the -ie6 version.

I used IETester to verify that the changes work in with IE6/IE7...it also shows that the changes also work with IE5.5!

2014/08/00: Discontinued use of IE specific CSS files so the following files are not available:

The following is the code for 0_nav_menu_ie9.php:

file "0_nav_menu_ie9.php" not found

The following is the code for 0_nav_menu_ie6.php:

file "0_nav_menu_ie6.php" not found


Major rewrite of catalog.php:

  • Changed to use class=sortable
    (sorttable.js) to sort columns
    instead of of doing MySQL query
    with sort order which has reduced
    the amount of PHP code
  • Changed to always display Product
    Info and My Comments
  • Modified function redisplay_table_page
    • Added $script_name parameter replacing
      the use of
    • Replaced redisplay_table_page($html_ver)
      calls with redisplay_table_page
  • These changes have reduced the use of all URL parameters except for $tablename which also reduced the number of pages validated by Total Validator from 141 to 51

function redisplay_table_page($html_ver,$script_name) {
echo '<p class="center blue">The following table is '.
'sortable, just click/touch '.
'on a column header. <a href="'.$script_name.'"> '.
'Click/Touch here to restore original sort.</a></p>';

Installed IE9 again after discovering how to display in IE8 Compatibility Mode. I will use IE9 unless I find inconsistencies.

Trying to figure out how to make IE9 default to IE8 Browser Mode.

Found slight display difference between IE9 and IE8: catalog.php pages are slightly wider with IE9 which required a few changes to shorten code display lines.

TEST NEEDED: need to test and fix application of class and style in CSS TABLE functions.

2011/10/16: IE9 seems to work OK.


During the past few days, I have made some changes to the navigation menu for IE6. It now is sized and positioned correctly but it still scrolls. Continuing to work on making the IE6 navigation menu the same as IE7 and greater.

2011/10/16: Fixed CSS ONLY TABLE functions to correctly use class and style arguments.


During the past few days, I have made some changes to the border displays of the "solved" and "CSS Only Table" functions. I also removed the "* {background-color:white}" from the .css files to allow "zebra striping" of table rows to work properly.

Removed <table> formatting from Drumming Info page.

2014/08/00: Changed back to using tables for page layouts as part of revising site using Progressive Enhancement techniques.


Because of problems with the IE6 navigation menu display and after many hours trying to "fix" the vertical navigation menu in IE6, I decided to change the vertical display to a horizontal navigation menu for IE6 as part of page header using <table>.

Continuing to make minor cleanup and consistency changes.


Created a new PHP function dis_code_exec($html_ver,$code_str) to display both the original code and to execute and display the output of the code.

function dis_code_exec
  ($html_ver,$code_str) {
// Note that using this function may
// require some adjustment of the
// actual code to be displayed, i.e.,
// to be moved to the left of the
// HTML page and sometime splitting
// code lines so the displayed code
// fits on the displayed page.
// Usage:
//    <?php
//    $code_str = 
//    dis_code_exec($html_ver,$code_str)
  //create file from $code_str
  $filename = "@@@@@code_str_file.txt";
  $fh = fopen($filename, 'w') 
  	or die("can't open file");
  fwrite($fh, $code_str);
  $fh = fopen($filename, 'r');
  $code_exec_str = 
  '<div class="border-1px-blue '.
    'padding-1px float-left">'.
  '<div class="border-0 clear padding-1px">'.
    'The following code is displayed by '.
    'function dis_code_exec:'.
  '<div class="border-0 clearpadding-1px '.
  'The following display is created 
   by function '.
  'dis_code_exec inserting the 
   preceeding code '.
  'into the page:<br>'.
  '<div class="clear '.'border-1px-blue '.
    'padding-1px float-left">'.
  '<div class="clear padding-1px left">';
  include "@@@@@code_str_file.txt";
  echo '</div></div></div>'.
       '<div class="clear"></div>';

2011/10/31: Replaced several code displays on this page to use dis_code_exec.

2012/02/18 Added the ability to print individual recipes.

2012/04/??: Discovered that < IE7 will not print the individual recipes.
2012/02/27 Tweaked Program and Catalog Last Updated Dates for consistency including hard coding Program Last Updated Dates because EW4 frequently does not properly handle &quot;changed files&quot;  which can cause incorrect Last Updated Dates.
2012/04/30 I installed MS Virtual XP some time ago so I could test using actual IE6. Because of Windows Update problems I have uninstalled and reinstalled several times. I think the problems have finally been solved.
2012/05/01 Trying to implement simplified catalog display where hovering on simplified row displays popup with all row data.
2012/05/01 Trying to implement image hover to display larger image.
2012/05/13 Created Weird Stuff Books catalog database, renamed Spiritual Quest(s) page to Spiritual Quest(s) &amp; Other Weird Stuff. Modified the renamed page to use new spiritual-quest_nav.php and spiritual-quest_ws-books_pageintro.php. Added ws-books to  catalog.php.
2012/05/20 Split the browser specific 0_master_xxx.css files into a 0_master_all.css file which contains all the CSS code which is not browser specific. The 0_master_xxx.css files will now contain the only the browser specific CSS code.

This will simplify converting all font-size px values into em values and generally simplifying/changing site-wide CSS code by having it all in just one place.

0_my_php_functions.php was modified to include the 0_master_all.css file prior to including the appropriate 0_master_xxx.css file.

I also removed all special code for IE5; now if IE < 7. it defaults to IE6 special code.

2012/05/22 @140000: I have replaced all px with em except for an image processing function in 0_my_php_functions.php; I will work on this as time allows.

2012/05/22 @140000: The change from px to em required some tweaking for proper display in the IE6/7/8/9/non-ie CSS and navigation CSS code. But now I get appropriate displays in all IE6/7/8/9 browsers.

2012/05/22 @ 154000: The image processing function in 0_my_php_functions.php has been modified and now uses em instead of px.

2012/05/23: Modified several font-size values in ew-webdev-history.php and 0_my_php_functions.php to fix display problems resulting from px to em conversion.
2012/05/20 I just discovered that the submit-comments page no longer works. I have removed the page from the navigation menus and the line(s) from the generic page header(s).

I will try to develop my own submit-comments page to replace the Huggins code/pages.

2012/05/21: huggins-email-form-script-v2.2.4-test-d.php has a fix which I will try to install.

2012/05/23: after a minor fix, huggins-email-form-script-v2.2.4-test-d.php works! So I will not now need to develop my own code...whew!

2012/05/23 @ 0600:00: new version huggins-email-form-script-v2.2.4-test-e.php installed.

After searching for an easy way to get image hover to display larger image to no avail, I found Magic Thumb™ ( http://www.magictoolbox.com/magicthumb/) which is free for non-commercial use!

I installed Magic Thumb and made a couple of changes to the imager function in 0_my_php_functions.php and now all images which use the imager function work great! It is definitely easy to use!

2013/01/11 Installed IE10 Preview.
2013/01/14 Installed Windows 8.
2013/10/18 Installed Windows 8.1.
2013/01/31 Received email from Microsoft stating that the Expression Web suite of programs is being modified. It is possible that EW is no longer supported! frowney face

2014/02/22: EW4 has not been supported for quite a while.
2014/02/21 Completed redoing the left side Navigation Bar so that it is now only a small drop-down Navigation hover box at the top of the page to the left of the page title line. The Navigation hover box and the Page Title Line are "fixed" (non-scrollable).

I am still working on getting the new The Navigation hover box and the Page Title Line to display properly in IE7 and for the drop-down Navigation hover box to display the drop-down.

2014/02/24: IE7 displays "OK".
2014/05/06 Installed new dropdown Navigation Menu and new catalog.php as part of trying to make site more presentable on smaller screen sizes including mobile devices.
2014/08/19 A couple of weeks ago, I changed from win 8.1 32 bit to win 8.1 64 bit. It took me several days to reinstall all the programs. About a week ago, my HP 6500 printer did not work and all attempts to reinstall failed with "spooler not working" error message. After many days/hours of trying to fix the problem including buying a couple of different printers to see if the problem could be resolved. But the same spooler error message occured. The error occurred with both USB and wireless connections.

This morning, I called Microsoft support and had to pay $99 for support because I was out of warantee. The Level 1 technician was not able to solve the problem so I was elevated to a Level 2 technician. The level 2 technician, after about 2 hours of investigation, he downloaded and ran tweaking.com_windows_repair_aio_setup.exe and then downloaded a win 8.1 iso file (and placed it on my desktop so I could have a win 8.1 installation disk). He ran it using the keep files and settings option. After the repair installation, the printer/spooler problem is fixed. I still have to see if the printers work after applying all the win 8.1 updates.

Note: After installing all the updates, the HP Solution Center will not work with Win 8.1 64 bit but the printer works just fine.

2016/01/11: See Windows 10 Problems Solved for a description of how I finally solved the HP E709n printer problems.

I begin working to make the site more compatible with mobile devices and to make the site backwards browser compatible using Progressive Enhancement techniques.

2014/10/14: Purchased and installed a HP Compaq L2006tm touchscreen monitor to test onclick/touch code.

2014/10/29: Created a PHP function audio($src,$title) to allow me to easily use the new HTML5 audio tag with appropriate fallback for browsers without such capability.

2015/07/30 Installed Windows 10. Some programs need to run in Windows 8 Compatibility Mode with the "Disable display scaling on high DPI setting" box checked.
2016/08/10 Modified catalog.php to directly use .csv extract files from ReaderWare instead of using mySQL thereby eliminating the additional very time-consuming processes to import files into mySQL. This will allow for more timely updates to all the catalogs.

2016/08/13: Major additional benefit is that large catalog pages load virtually instantly instead of taking some time to load from mySQL!

2016/08/16: Added table search.
2016/09/00 Sometime during September,I discovered that Apache Local Host is not working.

2016/10/03: I continue to search for a solution.

2016/10/16: Solution provided by Apache Lounge as follows Windows_10_XAMPP_7.0.9_Setup_Local_Hosts_Solved web dev pages
2016/10/21 Installed new version of browser_detector to show appropriate IE version.