My question involves landlord-tenant law in the State of: Virginia

I applied for an apartment at the beginning of the month. When they told me I had been approved, they said I would get a prorated 1st month rent and security deposit if I moved in 2 weeks early (today). I have that offer with the total amount I owed in writing.

A few days ago, I was working on address changes and scheduling utility hookups. I found out from one of the utility companies that my new address was already occupied. The CSR called the housing office to see what the deal was and called me back and told me that my apartment had been changed (to one that wasn't as nice as the 1st one). Housing told me after the fact that they had to put me in a different apartment because the tenant in the 1st one decided not to move. Strike 1.

Yesterday, housing called me and told me that the prorated special was invalid because it expired last month. No apologies or anything, just "You need to pay the rest of your rent and security deposit." Keep in mind that I didn't even apply for the apartment until THIS month. Strike 2.

This morning, I showed up at housing right when it opened to sign the lease and get the keys to my apartment. I still hadn't heard anything else about the rent thing. The manager wasn't there so I couldn't sign the lease and the leasing agent said she didn't know when the manager would be there. I asked her to give me a call when she got there. She did...almost 6 hours later, then gave me attitude when I said I wasn't moving in today because it was too late. (I had people who were going to help me and they didn't have all day to sit around.)

If they are assigning occupied apartments, offering expired specials, and making me wait all day on moving day, then I probably don't want to live there. I called them back and told them I didn't want the apartment anymore after everything that happened. I haven't signed anything so do I have any recourse to get any of my money back? Is it legal for them to charge me a cancellation fee?