/**
 * The following code is from Michael Schmidt(MichaelMSchmidt (at) msn.com).
 * 
 * The code is published under BSD license.
 * 
 * Thanks for the input from Michael Schmidt.
 * 
 * Nov 12 2007 - added support for % operation
 *               Innoopract (evolanakis (at) innoopract.com)
 */