You've got some great advice above... but I'll throw in my

too!
First off, rubbing the dogs nose in shit isn't going to help. Infact it's considered rather nasty now, so you might want to stop...
Disciplining when they've screwed up is still important, but especially with a little dog like that, I'd just use drama... Throw a terrifying fit immediately, adn then ignore (don't even look at) the dog for 20 minutes or so.
I have my dog trained to pee on command. It's simply a matter of assigning a command to the action when it's already being performed. This means that dog now associates that command with outdoors, and can be praised for peeing outside as well as following a command.
Keep the dog on a very strict walk schedule so that it can learn to pee on schedule. A great way to start this is to take the dog out to pee (including the pee command) once every hour for a few days. Except at night, obviously.. were you may benefit from crating (but crating a 3 year old IS likely to be noisey) Make a note of which hours the dog actually pees or shits... or does it the most. You can then pare down the walk schedule to around those times.
Perhaps you want to hire someone for all this! LOL..
Enough... you know how to reach me if you need more! Feel free to do so.
