Mike

This is the latest version with everybody's changes. Please take a look at the changed code, there is a lot.