Fixes to SDIF, Age calculation, and other stuff

It has been a pretty hectic week for Swim Team and as such, I have found some bugs and some minor annoyances and tried to fix most of them.  The most serious bug was in the SDIF export which I was working with one of our coaches on so he could started working with WinSwim with our roster.  If the parent profile wasn’t entered, the last last profile found was being used to construct the D1 and D2 records.  Now when a parent profile record isn’t found, it reverts to the site admin’s record to populate the data.

I also switched a bunch of the swimmer lists (roster, all swimmers) back to sorting by last name because that is how the data is usually looked at.  I also fixed a bug in the age computation which was rather elusive – it only appeared once in a while.  It turns out the logic was wrong in an age computation function I had grabbed off a PHP site a while back.  Lastly, I made progress on the swimmer id/number/label but am not yet computing them.  I think all of the infrastructure for them is down now.