Ashka, to answer number 4. With a Calendar table you can use ...
Select * from Calendar
Where Q=3 and Y=2009 and dw=5
to get all of the Fridays in the Quarter.
On my server this takes on average .093 of a second compared to your loop taking about .145
Not a huge amount of time, but every little bit may count. My calendar table also has other functions - I have Fiscal weeks and months along with calendar, frequently I need to connect to a AS/400 database, and it uses a different date format, it's easier and faster to link the data to my calendar table than use a function. I include holidays and workdays to get a count of shipping days in a quarter. There's a lot of flexibility and power that you can't get from a loop.