Copyright (c) 2000-2006 by A. Richard Palmer. All rights reserved. (Original java script by Eric Braekevelt, June 1999) (revised Feb. 11, 2014; links updated Jan. 4, 2026)