Copyright (c) 2000-2006 by A. Richard Palmer. All rights reserved. (Original java script by Eric Braekevelt, June 1999) (revised Feb. 14, 2014)