/*! * sMenu - v0.1.1 - 2014-08-25 * http://archive.sdn21.com/archive/js/smenu/ * Copyright (c) 2014 Ma Yong Min * Licensed MIT (http://archive.sdn21.com/archive/js/smenu/LICENSE-MIT) */ (function($){$.sMenu={version:"0.1",curr:0};$.fn.sMenu=function(options){var opt=$.extend(true,{},$.fn.sMenu.defaults,options);this.each(function(){var obj_menu=$(this);var obj_ul=$("ul",obj_menu);var obj_li=$("> li",obj_ul);var obj_link=$("> a",obj_li);var max_depth=3;var timer=null;var is_open=false;var img_arr={off:new Array,on:new Array,hover:new Array};var str_selector="> ul > li";for(var i=1;i<=max_depth;i++){var obj=$(str_selector,obj_menu);if(obj.length>0){obj.addClass(opt.depth_class+"-"+i);str_selector+="> ul > li"}else{max_depth=i-1;break}}var getDepth=function(e){var t=0;for(var n=1;n<=max_depth;n++){if(e.hasClass(opt.depth_class+"-"+n)){t=n;break}}return t};var setOn=function(){var str_selector="";for(var i=1;i<=max_depth;i++){var on_idx=eval("opt.on_menu"+i)-1;if(on_idx>-1){str_selector+="> ul > li:eq("+on_idx+")";$(str_selector,obj_menu).addClass(opt.on_class)}else{break}}if(opt.flag_use_img){var cnt=obj_link.length;for(var i=0;i img"),"on")}else{replaceImage(obj_link.eq(i).find("> img"),"off")}}}opt.onCall()};var replaceImage=function(e,t){var n=new Array;n=e.attr("class").split("img_arr_");n=n[1].split(" ");var r=n[0];var i=e.attr("src");var s=img_arr[t][r];if(i!=s){e.attr("src",s)}};var setHover=function(e){var t=getDepth(e);if(t>0){var n=opt.depth_class+"-"+t;var r=e.siblings("li").find("li").andSelf();r.removeClass(opt.hover_class);e.addClass(opt.hover_class);if(opt.flag_use_img){var i=r.length;for(var s=0;s a > img"),"on")}else{replaceImage(r.eq(s).find("> a > img"),"off")}}replaceImage(e.find("> a > img"),"hover")}}opt.hoverCall(e,t)};var init=function(){obj_li.removeClass(opt.hover_class);setOn()};var setImageArray=function(){var e=obj_link.length;for(var t=0;t img").addClass("img_arr_"+t).attr("src");var r=n.lastIndexOf(".");img_arr["off"][t]=n;var i=n.substring(0,r);var s=n.substring(r,n.length);img_arr["on"][t]=i+opt.on_suffix+s;img_arr["hover"][t]=i+opt.hover_suffix+s}};var close=function(){obj_menu.removeClass(opt.open_class);opt.closeCall();init();clearTimeout(timer);is_open=false};if(opt.flag_use_img){setImageArray()}if(opt.is_snb){obj_link.on("click",function(e){if(!obj_menu.hasClass(opt.open_class)){obj_menu.addClass(opt.open_class);opt.openCall()}setHover($(this).parent("li"));clearTimeout(timer);is_open=true;if($(this).parent("li").find("ul").length>0){e.preventDefault()}})}else{obj_link.on("mouseenter focusin",function(e){if(!obj_menu.hasClass(opt.open_class)){obj_menu.addClass(opt.open_class);opt.openCall()}setHover($(this).parent("li"));clearTimeout(timer);is_open=true});obj_menu.on("mouseleave",function(){close()});obj_link.filter(":eq(0), :eq(-1)").on("focusout",function(e){timer=setTimeout(function(){close()},100)})}init()});return this};$.fn.sMenu.defaults={open_class:"open",on_class:"on",hover_class:"on",depth_class:"depth",flag_use_img:false,on_suffix:"_on",hover_suffix:"_on",hoverCall:function(e,t){},onCall:function(){},openCall:function(){},closeCall:function(){},on_menu1:0,on_menu2:0,on_menu3:0,is_snb:false}})(jQuery)