Just a few comments; hope they will help:
1. You seem to be still using plain JS a lot --- raising the chance running into cases of having to do this for that browser and that for the other. Take advantage of jQuery. For the most part, you do not have to worry about adjusting your code for a particular browser
2. IE does not like changing or setting the type of an existing input element. Rather than create an input element and then assign the type attribute, create it with the attribute. Example: $('body').append( '<input type="text" name="firstName" id="firstName">' )
Let me run some tests on your code.