wickedwebsites wrote:... could you just explain what the change in the code did, (I'm stilll learning) 
I know that feeling, because I am too!
A bit of commentary: the "if" in the first line sets the $topPage variable *if* we are NOT on the homepage. Since "Home" is the only page at "level 0", whenever you're anywhere else, this variable sets the "area" of the site you are in (e.g., "North"). It is self-contained, so doesn't need a corresponding "endif".
The next "if" is the one we needed to change. I had left in a "greater than" test from the code I was stealing this from. What I really wanted was "==", which is a PHP's way of saying "if the value is equal to..." (a single "=" assigns a value). So here we're saying "if the level is == 0, then we're on the homepage, so give us the standard navigation items". And that's what the next "foreach" bit does.
Then comes the "elseif": which means here "else, if we're not at level 0" (which is the "home" level), then use that $topPage variable to generate the navigation, which it does with the next "foreach" bit. Since $topPage knows that we're in "North" or "South", or whatever, we get that navigation, even if we go further into the page structure (where we were losing the navigation items before).
(Within the "elseif", there is a second test ("&&...") which keeps this nav off your "news" page, too. That's a bit of a crude test, and you may well want to tweak that bit!)
The "if... elseif..." still needs to be "closed", so we have that final "endif" to let PHP know we're done with the tests for now.
Hope that helps to make sense of the code! The explanations may not be 100% precise, but possibly they will do. 
Btw, you can find a full commentary explaining the default nav code in the wiki. That might make a good partner with this post if you're still feeling your way.
Hope that helps!