(function($){$.fn.dropmenu=function(custom){var defaults={openAnimation:"size",closeAnimation:"slide",openClick:false,openSpeed:300,closeSpeed:200,closeDelay:200,onHide:function(){},onHidden:function(){},onShow:function(){},onShown:function(){},zindex:100,openMenuClass:'open',autoAddArrowElements:true};var settings=$.extend({},defaults,custom);var delayTimer="";var menu=$(this);var main_menu_items=menu.find('> li').children('ul, div').css('display','none').end().find('ul ul, li > div').css('display','none').end();var all_menu_items=menu.find('li > ul, li > div').parent().addClass("dropitem");if(settings.autoAddArrowElements){all_menu_items.find('> a').append('<span class="arrow"></span>');}
$(all_menu_items).hover(function(){if(settings.closeDelay!=0){window.clearInterval(delayTimer);closeAllSiblings($(this));}
if(!settings.openClick&&!$(this).is('.'+settings.openMenuClass)){settings.onShow.call($(this));openMenu($(this));}},function(){settings.onHide.call($(this));if(settings.closeDelay==0){closeMenu($(this).find('li.'+settings.openMenuClass));closeMenu($(this));}else{var menu=$(this);window.clearInterval(delayTimer);delayTimer=setInterval(function(){window.clearInterval(delayTimer);closeMenu($(menu).find('li.'+settings.openMenuClass));closeMenu(menu);},settings.closeDelay);}});if(settings.openClick){$(all_menu_items).click(function(){settings.onShow.call($(this));openMenu($(this));});}
function openMenu(menu_item){var menu_box=menu_item.find('> ul, > div').stop(true,true);$(menu_item).parent().find("ul, div").css("z-index",settings.zindex);menu_box.css("z-index",(settings.zindex+1));if(typeof settings.openAnimation=='function'){$(menu_item).addClass(settings.openMenuClass)
settings.openAnimation.call(menu_box);return;}
if(!$(menu_item).is('.'+settings.openMenuClass)){switch(settings.openAnimation){case'fade':fadeAnimation(menu_box,true);break;case'size':sizeAnimation(menu_box,true);break;default:slideAnimation(menu_box,true);break;}}}
function closeMenu(menu_item){var menu_box=menu_item.find('> ul, > div').stop(true,true);if(typeof settings.closeAnimation=='function'){$(menu_item).removeClass(settings.openMenuClass)
settings.closeAnimation.call(menu_box);return;}
switch(settings.closeAnimation){case'fade':fadeAnimation(menu_box,false);break;case'size':sizeAnimation(menu_box,false);break;default:slideAnimation(menu_box,false);break;}}
function slideAnimation(menu_item,do_open){if(do_open){$(menu_item).parent().addClass(settings.openMenuClass).end().slideDown(settings.openSpeed,function(){cbShown($(menu_item))});}else{$(menu_item).slideUp(settings.closeSpeed,function(){$(this).parent().removeClass(settings.openMenuClass);cbHidden($(menu_item));});}}
function fadeAnimation(menu_item,do_open){if(do_open){$(menu_item).parent().addClass(settings.openMenuClass).end().fadeIn(settings.openSpeed,function(){cbShown($(menu_item))});}else{$(menu_item).fadeOut(settings.closeSpeed,function(){$(this).parent().removeClass(settings.openMenuClass);cbHidden($(menu_item));});}}
function sizeAnimation(menu_item,do_open){if(do_open){$(menu_item).parent().addClass(settings.openMenuClass).end().show(settings.openSpeed,function(){cbShown($(menu_item))});}else{$(menu_item).hide(settings.closeSpeed,function(){$(this).parent().removeClass(settings.openMenuClass);cbHidden($(menu_item));});}}
function closeAllSiblings(selected){var submenus=selected.siblings('.'+settings.openMenuClass);$.each(submenus,function(i,val){var opened_menus=$(submenus[i]).find('li.'+settings.openMenuClass);opened_menus.css("z-index",(settings.zindex-1));closeMenu(opened_menus);closeMenu($(submenus[i]));});}
function cbShown(menu_item){settings.onShown.call($(menu_item).parent())}
function cbHidden(menu_item){settings.onHidden.call($(menu_item).parent())}
return this;}})(jQuery);
