function EnhancedCategoriesPlugin(){this._settings={expandText:'&raquo;',contractText:'&laquo;',leafText:'-',expandImage:'',contractImage:'',leafImage:'',buttonColor:'#CC0000',buttonWidth:'10px',buttonMargin:'0 5px 0 0',isButtonAfter:false};}
jQuery.extend(EnhancedCategoriesPlugin.prototype,{setSettings:function(newSettings){jQuery.extend(this._settings,newSettings||{});},getSettings:function(){return this._settings;},getButtonText:function(text,image){var output='';if(image==''){output+=text;}else{output+='<img src="'+image+'" alt="'+text+'" title="'+text+'" />';}
return output;}});jQuery(document).ready(function(){enhancedCategoriesPlugin=new EnhancedCategoriesPlugin();});jQuery.fn.enhancedCategories=function(args){var defaults=enhancedCategoriesPlugin.getSettings();jQuery.extend(defaults,args);return jQuery('li.cat-item',this).each(function(){var childrenUl=jQuery(this).children('ul');var hasChildren=(childrenUl.length>0);var button='';jQuery('img',this)
.css({margin:'0 5px',padding:'0'});if(hasChildren){if(defaults.contractChildren==1){button+='<span class="button is_expanded" style="cursor: pointer;">';button+=enhancedCategoriesPlugin.getButtonText(defaults.expandText,defaults.expandImage);button+='</span>';}else{button+='<span class="button is_contracted" style="cursor: pointer;">';button+=enhancedCategoriesPlugin.getButtonText(defaults.contractText,defaults.contractImage);button+='</span>';}}else{button+='<span class="button" style="">';button+=enhancedCategoriesPlugin.getButtonText(defaults.leafText,defaults.leafImage);button+='</span>';}
if(defaults.isButtonAfter){if(hasChildren){jQuery(this).children('ul').before(button);}else{jQuery(this).append(button);}}else{jQuery(this).prepend(button);}
jQuery(this)
.css({listStyleType:'none'})
.children('span.button')
.css({width:defaults.buttonWidth,margin:defaults.buttonMargin,color:defaults.buttonColor})
.click(function(){jQuery(this)
.siblings('ul')
.slideToggle()
.end()
.each(function(){if(jQuery(this).hasClass('is_expanded')){jQuery(this)
.html(enhancedCategoriesPlugin.getButtonText(defaults.contractText,defaults.contractImage))
.removeClass('is_expanded')
.addClass('is_contracted');}else{jQuery(this)
.html(enhancedCategoriesPlugin.getButtonText(defaults.expandText,defaults.expandImage))
.removeClass('is_contracted')
.addClass('is_expanded');}
return this;});});jQuery(this).children('ul')
.css({paddingLeft:defaults.buttonWidth});if(defaults.contractChildren==1){jQuery(this).children('ul').hide();}
return this;});};
