// shortcuts var $y = YAHOO; var $u = $y.util; var $d = $u.Dom; var $e = $u.Event; var $a = $u.Anim; var $c = $u.Connect; var $ = function(id) { return $d.get(id); } // namespace it $y.namespace('kta.tearney'); // do i $y.kta.tearney = { // initMenu initMenu : function() { // attach our event $e.on('Menu','mouseover',function(e) { // get our target var tar = $e.getTarget(e); // c var c = 0; // make it a parent while ( tar.tagName.toLowerCase() != 'li' && !$d.hasClass(tar,'top') && c < 10 ) { tar = tar.parentNode; c++; } // sub menus var sm = tar.getElementsByTagName('ul'); // check for a child if ( sm.length > 0 ) { $d.setStyle(sm[0],'display','block'); $d.setStyle(sm[0],'width', parseInt($d.getStyle(tar,'width'))-2+'px' ); } // target on $d.addClass(tar,'on'); }); // mouse out $e.on('Menu','mouseout', function(e) { // get our target var tar = $e.getTarget(e); // c var c = 0; // make it a parent while ( tar.tagName.toLowerCase() != 'li' && !$d.hasClass(tar,'top') && c < 10 ) { tar = tar.parentNode; c++; } // remove classname $d.removeClass(tar,'on'); }); }, // staff functions staff : { // init init : function() { // when we're ready $e.onAvailable('staff-list', function(obj) { // attach bubble event $e.on('staff-list','mouseover', obj.change, obj); $e.on('staff-list','click', function(e) { $e.getTarget(e).blur(); $e.stopEvent(e); }); }, this ); }, // change change : function(e,obj) { // get our target var tar = $e.getTarget(e); // not a ul if ( !tar || tar.tagName.toUpperCase() == 'UL' ) return; // c var c = 0; // make sure it's an li while ( tar.tagName.toUpperCase() != "LI" && c < 5 ) { tar= tar.parentNode; c++; } // get it's fist child with should be the link var lnk = tar.firstChild; // find our what we need to scroll to var name = lnk.href.substring(lnk.href.indexOf('#')+1,lnk.href.length); // scroll it var anim = new YAHOO.util.Scroll('staff-info',{ scroll : { to: [0, $(name).offsetTop] } }); anim.animate(); // turn off all others var ul = $('staff-list').getElementsByTagName('li'); for ( var i = 0; i < ul.length; i++ ) { $d.removeClass(ul[i],'on'); } $d.addClass(tar,'on'); } } }; // when we're ready $e.onAvailable('Menu', function() { // init out menu $y.kta.tearney.initMenu(); });