@johnuk - what you are seeing is actually a part of the Event specification known as "event bubbling" (see this)...
basically, what event bubbling boils down to is this: say you have an LI element, with a nested A element. if you move the mouse over the LI, a mouseover event is fired. if, however, you move the mouse inside the A, the LI will fire a mouseout event, and the A will fire a mouseover event. if you move the mouse back outside of the A, but still inside the LI, the A will fire a mouseout event and the LI will fire another mouseover event.
it sounds tricky, but it's really not. event bubbling is also the cornerstone to event delegation, which is a critical part of modern application development.
my suggestion would be to use jQuery or another lib that supports "mousenter" and "mouseleave" events. these are similar to mouseover/mouseout, but include child elements as well. so, using the previous example, if you listened for mouseenter events on the LI, there would only be one fired, even if the mouse was over the A element. similarly, the mouseleave event wouldn't be fired until the mouse had left the LI. hope that helps