There is way too much unnecessary absolute positioning going on in there. Firstly, try turning it all off (esp on #footer and #footer p) and see how things position.
The footer is the last thing in your document flow so it should be at the bottom except for all the positioning.
In fact, you can turn off ALL of the properties for #footer (except font-size).
Next, take any height off of the footer as it should be determined by the content of the internal elements.
For instance, you have set a height of 100px on the footer but footer-wrapper (which is an odd name since it doesn’t wrap the footer) has a set height of 150px.