var wnavi={ transition: {overtime:300, outtime:300}, shadow: {enable:true, offsetx:5, offsety:5}, showhidedelay: {showdelay: 100, hidedelay: 200}, detectwebkit: navigator.userAgent.toLowerCase().indexOf('applewebkit')!=-1, detectie6: document.all && !window.XMLHttpRequest, getajaxmenu:function($, setting){ var $menucontainer=$('#'+setting.contentsource[0]) ; $menucontainer.html('Loading Menu...'); $.ajax({ url: setting.contentsource[1], async: true, error:function(ajaxrequest){ $menucontainer.html('Error fetching content. Server Response: '+ajaxrequest.responseText); }, success:function(content){ $menucontainer.html(content); wnavi.buildmenu($, setting); } }) }, buildmenu:function($, setting){ var smoothmenu=wnavi; var $mainmenu=$('#'+setting.mainmenuid+'>ul') ; $mainmenu.parent().get(0).className=setting.classname || 'wnavi'; var $headers=$mainmenu.find('ul').parent(); $headers.hover( function(e){ $(this).children('a:eq(0)').addClass('selected'); }, function(e){ $(this).children('a:eq(0)').removeClass('selected'); } ); $headers.each(function(i){ var $curobj=$(this).css({zIndex: 300-i}) ;//메뉴 300개까지 var $subul=$(this).find('ul:eq(0)').css({display:'block'}); $subul.data('timers', {}); this._dimensions={w:this.offsetWidth, h:this.offsetHeight, subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}; this.istopheader=$curobj.parents('ul').length==1? true : false ; $subul.css({top:this.istopheader && setting.orientation!='v'? this._dimensions.h+'px' : 0}); if (smoothmenu.shadow.enable){ this._shadowoffset={x:(this.istopheader?$subul.offset().left+smoothmenu.shadow.offsetx : this._dimensions.w), y:(this.istopheader? $subul.offset().top+smoothmenu.shadow.offsety : $curobj.position().top)}; if (this.istopheader) $parentshadow=$(document.body); else{ var $parentLi=$curobj.parents('li:eq(0)'); $parentshadow=$parentLi.get(0).$shadow; }; } $curobj.hover( function(e){ var $targetul=$subul ; var header=$curobj.get(0) ; clearTimeout($targetul.data('timers').hidetimer); $targetul.data('timers').showtimer=setTimeout(function(){ header._offsets={left:$curobj.offset().left, top:$curobj.offset().top}; var menuleft=header.istopheader && setting.orientation!='v'? 0 : header._dimensions.w; menuleft=(header._offsets.left+menuleft+header._dimensions.subulw>$(window).width())? (header.istopheader && setting.orientation!='v'? -header._dimensions.subulw+header._dimensions.w : -header._dimensions.w) : menuleft; if ($targetul.queue().length<=1){ $targetul.css({left:menuleft+'px', width:header._dimensions.subulw+'px'}).animate({height:'show',opacity:'show'}, wnavi.transition.overtime); if (smoothmenu.shadow.enable){ var shadowleft=header.istopheader? $targetul.offset().left+wnavi.shadow.offsetx : menuleft; var shadowtop=header.istopheader?$targetul.offset().top+smoothmenu.shadow.offsety : header._shadowoffset.y; if (!header.istopheader && wnavi.detectwebkit){ header.$shadow.css({opacity:1}); } try{ header.$shadow.css({overflow:'', width:header._dimensions.subulw+'px', left:shadowleft+'px', top:shadowtop+'px'}).animate({height:header._dimensions.subulh+'px'}, wnavi.transition.overtime); }catch(e){} } } }, wnavi.showhidedelay.showdelay); }, function(e){ var $targetul=$subul; var header=$curobj.get(0); clearTimeout($targetul.data('timers').showtimer); $targetul.data('timers').hidetimer=setTimeout(function(){ $targetul.animate({height:'hide', opacity:'hide'}, wnavi.transition.outtime); if (smoothmenu.shadow.enable){ if (wnavi.detectwebkit){ header.$shadow.children('div:eq(0)').css({opacity:0}); } try{header.$shadow.css({overflow:'hidden'}).animate({height:0}, wnavi.transition.outtime);} catch(e){} } }, wnavi.showhidedelay.hidedelay); } ); }); $mainmenu.find('ul').css({display:'none', visibility:'visible'}); }, init:function(setting){ if (typeof setting.customtheme=='object' && setting.customtheme.length==2){ var mainmenuid='#'+setting.mainmenuid; var mainselector=(setting.orientation=='v')? mainmenuid : mainmenuid+', '+mainmenuid; document.write(''); } this.shadow.enable=(document.all && !window.XMLHttpRequest)? false : this.shadow.enable; jQuery(document).ready(function($){ if (typeof setting.contentsource=='object'){ wnavi.getajaxmenu($, setting); } else{ wnavi.buildmenu($, setting); } }); } };