It sounds like you have inherited a lot of cargo-cult code. I would wrap a test suite around that puppy ASAP. I would also look at removing as many of the design patterns from it as possible. In my experience, most design patterns aren't needed, either when they were implemented or, especially, now.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?