This code has no warranty, and I'm not responsible for what you do with it. Do not use unless you agree to hold me harmless. Feel free to copy/steal/etc. You should read the code and modify it to fit ...