Magento is one of the hardest platforms I have ever had to theme, but their are a lot of built in resources at your disposal.
This brief tutorial will demonstrate how to use the default dynamic navigation, and body classes to create a light-weight current state for your navigation.
Typically, stores will either have a total product based navigation or page links mixed in with a “products” tab.
For this particular demonstration, we will be working with a mixed navigation.
1) The first thing you want to do (after choosing a theme to work with) is navigate to app/design/frontend/yourPackage/yourTheme/template/catalog/navigation/top.phtml.
You’ll see some simple PHP code that generates your navigation based on your category structure in the admin.
<ul id="nav">
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php echo $this->drawItem($_category) ?>
<?php endforeach ?>
</ul>
Since we are using a mixed navigation, we will be adding the page links into ul#nav.
<ul id="nav">
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php echo $this->drawItem($_category) ?>
<?php endforeach ?>
<li><a href="<?php echo $this->getUrl('about-us');?>">About Us</a></li>
<li><a href="<?php echo $this->getUrl('store-locator');?>">Store Locator</a></li>
<li><a href="<?php echo $this->getUrl('contacts');?>">Contact Us</a></li>
<li><a href="<?php echo $this->getUrl('wholesale');?>">Wholesale</a></li>
</ul>
** Always use dynamic URLs when adding links to views (.phtml)
2) Next, you will need to make sure your category structure in the admin is set up as follows, so that the navigation does not spread horizontally.

** Make sure to clear / disable your cache in the admin, or you may not see your changes when previewing.
3) Now we are ready to create current states for your page links, as it is already built into Magento for the product / catalog links.
Re-open your top.phtml file and add some simple class identifiers to your page list items, or anchors depending on how your navigation is designed.
<ul id="nav">
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php echo $this->drawItem($_category) ?>
<?php endforeach ?>
<li class="about"><a href="<?php echo $this->getUrl('about-us');?>">About Us</a></li>
<li class="store-locator"><a href="<?php echo $this->getUrl('store-locator');?>">Store Locator</a></li>
<li class="contact"><a href="<?php echo $this->getUrl('contact');?>">Contact Us</a></li>
<li class="wholesale"><a href="<?php echo $this->getUrl('wholesale');?>">Wholesale</a></li>
</ul>
4) Save the file and view the source of one of your CMS pages, you will see that Magento has already attached an identifier to the body tag.
<body class=" cms-page-view cms-about-us">
5) Now its as simple as targeting those lists or anchors to achieve your desired current state effect, so open up your main style sheet from skin/frontend/yourPackage/yourTheme/css/styles.css.
Use this example to target your active states.
.cms-about-us .about,
.cms-store-locator .store-locator,
.cms-contact .contact,
.cms-wholesale .wholesale { background-color:#fff; color:#000; padding:15px; }
That’s all there is to it. For me, this has proven to be much lighter weight than traditional PHP based current states.