/* | |
xBreadcrumbs (Extended Breadcrums) jQuery Plugin | |
© 2009 ajaxBlender.com | |
For any questions please visit www.ajaxblender.com | |
or email us at support@ajaxblender.com | |
*/ | |
;(function($){ | |
/* Variables */ | |
$.fn.xBreadcrumbs = function(settings){ | |
var element = $(this); | |
var | |
settings = $.extend({}, $.fn.xBreadcrumbs.defaults, settings); | |
function _build(){ | |
if(settings.collapsible){ | |
var sz = element.children('LI').length; | |
element.children('LI').children('A').css('white-space', 'nowrap').css('float', 'left'); | |
element.children('LI').children('A').each(function(i, el){ | |
if(i != sz - 1){ | |
$(this).css('overflow', 'hidden'); | |
$(this).attr('init-width', $(this).width()); | |
$(this).width(settings.collapsedWidth); | |
} | |
}); | |
} | |
element.children('LI').mouseenter(function(){ | |
if($(this).hasClass('hover')){ return; } | |
_hideAllSubLevels(); | |
if(!_subLevelExists($(this))){ return; } | |
// Show sub-level | |
var subLevel = $(this).children('UL'); | |
_showHideSubLevel(subLevel, true); | |
if(settings.collapsible && !$(this).hasClass('current')){ | |
var initWidth = $(this).children('A').attr('init-width'); | |
$(this).children('A').animate({width: initWidth}, 'normal'); | |
} | |
}); | |
element.children('LI').mouseleave(function(){ | |
var subLevel = $(this).children('UL'); | |
_showHideSubLevel(subLevel, false); | |
if(settings.collapsible && !$(this).hasClass('current')){ | |
$(this).children('A').animate({width: settings.collapsedWidth}, 'fast'); | |
} | |
}); | |
}; | |
function _hideAllSubLevels(){ | |
element.children('LI').children('UL').each(function(){ | |
$(this).hide(); | |
$(this).parent().removeClass('hover'); | |
}); | |
}; | |
function _showHideSubLevel(subLevel, isShow){ | |
if(isShow){ | |
subLevel.parent().addClass('hover'); | |
if($.browser.msie){ | |
var pos = subLevel.parent().position(); | |
subLevel.css('left', parseInt(pos['left'])); | |
} | |
if(settings.showSpeed != ''){ subLevel.fadeIn( settings.showSpeed ); } | |
else { subLevel.show(); } | |
} else { | |
subLevel.parent().removeClass('hover'); | |
if(settings.hideSpeed != ''){ subLevel.fadeOut( settings.hideSpeed ); } | |
else { subLevel.hide(); } | |
} | |
}; | |
function _subLevelExists(obj){ | |
return obj.children('UL').length > 0; | |
}; | |
// Entry point | |
_build(); | |
}; | |
/* Default Settings */ | |
$.fn.xBreadcrumbs.defaults = { | |
showSpeed: 'fast', | |
hideSpeed: '', | |
collapsible: false, | |
collapsedWidth: 10 | |
}; | |
})(jQuery); |