(function(e,m){var x,q,r,o,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M;function p(a){return a.id&&e('label[for="'+a.id+'"]').val()||a.name}function N(a,c,d){d||(d=0);c.each(function(){var b=e(this),c=this,g=this.nodeName.toLowerCase(),h,i;"label"==g&&b.find("input, textarea, select").length&&(h=b.text(),b=b.children().first(),c=b.get(0),g=c.nodeName.toLowerCase());switch(g){case "menu":i={name:b.attr("label"),items:{}};N(i.items,b.children(),d);break;case "a":case "button":i={name:b.text(),disabled:!!b.attr("disabled"),
callback:function(){return function(){b.click()}}()};break;case "menuitem":case "command":switch(b.attr("type")){case m:case "command":case "menuitem":i={name:b.attr("label"),disabled:!!b.attr("disabled"),callback:function(){return function(){c.click()}}()};break;case "checkbox":i={type:"checkbox",disabled:!!b.attr("disabled"),name:b.attr("label"),selected:!!b.attr("checked")};break;case "radio":i={type:"radio",disabled:!!b.attr("disabled"),name:b.attr("label"),radio:b.attr("radiogroup"),value:b.attr("id"),
selected:!!b.attr("checked")};break;default:i=m}break;case "hr":i="-------";break;case "input":switch(b.attr("type")){case "text":i={type:"text",name:h||p(c),disabled:!!b.attr("disabled"),value:b.val()};break;case "checkbox":i={type:"checkbox",name:h||p(c),disabled:!!b.attr("disabled"),selected:!!b.attr("checked")};break;case "radio":i={type:"radio",name:h||p(c),disabled:!!b.attr("disabled"),radio:!!b.attr("name"),value:b.val(),selected:!!b.attr("checked")};break;default:i=m}break;case "select":i=
{type:"select",name:h||p(c),disabled:!!b.attr("disabled"),selected:b.val(),options:{}};b.children().each(function(){i.options[this.value]=e(this).text()});break;case "textarea":i={type:"textarea",name:h||p(c),disabled:!!b.attr("disabled"),value:b.val()};break;case "label":break;default:i={type:"html",html:b.clone(!0)}}i&&(d++,a["key"+d]=i)})}e.support.htmlMenuitem="HTMLMenuItemElement"in window;e.support.htmlCommand="HTMLCommandElement"in window;var j=null,O=!1,t=!1,u=0,k={},n={},P={selector:null,
appendTo:null,trigger:"right",autoHide:!1,ignoreRightClick:!1,delay:200,determinePosition:function(a){if(e.ui&&e.ui.position)a.css("display","block").position({my:"center top",at:"center bottom",of:this,offset:"0 5",collision:"fit"}).css("display","none");else{var c=this.offset();c.top+=this.outerHeight();c.left+=this.outerWidth()/2-a.outerWidth()/2;a.css(c)}},position:function(a,c,d){if(!c&&!d)a.determinePosition.call(this,a.$menu);else{var c="maintain"===c&&"maintain"===d?a.$menu.position():{top:d,
left:c},b=e(window),d=b.scrollTop()+b.height(),b=b.scrollLeft()+b.width(),f=a.$menu.height(),g=a.$menu.width();c.top+f>d&&(c.top-=f);c.left+g>b&&(c.left-=g);a.$menu.css(c)}},positionSubmenu:function(a){if(e.ui&&e.ui.position)a.css("display","block").position({my:"left top",at:"right top",of:this,collision:"fit"}).css("display","");else{var c=this.offset();c.top+=0;c.left+=this.outerWidth();a.css(c)}},zIndex:1,animation:{duration:50,show:"slideDown",hide:"slideUp"},events:{show:e.noop,hide:e.noop},
callback:null,items:{}},s=null,v=null,w=null,Q,R=function(a){for(var c=0;!(c=Math.max(c,parseInt(a.css("z-index"),10)||0),a=a.parent(),!a||!a.length||"body"==a.prop("nodeName").toLowerCase()););return c};o=function(a){a.preventDefault();a.stopImmediatePropagation()};y=function(a){var c=e(this);a.preventDefault();a.stopImmediatePropagation();t?t=!1:c.hasClass("context-menu-disabled")||(j=c,l.show.call(c,a.data,a.pageX,a.pageY))};z=function(a){a.preventDefault();a.stopImmediatePropagation();e(this).trigger(jQuery.Event("contextmenu",
{data:a.data,pageX:a.pageX,pageY:a.pageY}))};A=function(a){var c=e(this),d=e(a.relatedTarget),b=e(document);if(!(d.is(".context-menu-list")||d.closest(".context-menu-list").length||j&&j.length))v=a.pageX,w=a.pageY,Q=a.data,b.bind("mousemove.contextMenuShow",x),s=setTimeout(function(){s=null;b.unbind("mousemove.contextMenuShow");j=c;c.trigger(jQuery.Event("contextmenu",{data:Q,pageX:v,pageY:w}))},a.data.delay)};x=function(a){v=a.pageX;w=a.pageY};B=function(a){a=e(a.relatedTarget);if(!a.is(".context-menu-list")&&
!a.closest(".context-menu-list").length){try{clearTimeout(s)}catch(c){}s=null}};C=function(a){2==a.button&&(t=!0)};D=function(a){var c=e(this),d=c.data("contextMenuRoot");a.preventDefault();a.stopImmediatePropagation();c.remove();l.hide.call(d.$trigger,d)};E=function(a){var c=j.data("contextMenu")||{};c.$menu.children();c.isInput||a.preventDefault();a.stopPropagation();switch(a.keyCode){case 9:case 38:if(c.isInput)if(9==a.keyCode&&a.shiftKey){a.preventDefault();c.$selected&&c.$selected.find("input, textarea, select").blur();
c.$menu.trigger("prevcommand");break}else{if(38==a.keyCode&&"checkbox"==c.$selected.find("input, textarea, select").prop("type")){a.preventDefault();break}}else if(9!=a.keyCode||a.shiftKey){c.$menu.trigger("prevcommand");break}case 9:case 40:c.isInput?9==a.keyCode?(a.preventDefault(),c.$selected&&c.$selected.find("input, textarea, select").blur(),c.$menu.trigger("nextcommand")):40==a.keyCode&&"checkbox"==c.$selected.find("input, textarea, select").prop("type")&&a.preventDefault():c.$menu.trigger("nextcommand");
break;case 37:if(c.isInput||!c.$selected||!c.$selected.length)break;if(!c.$selected.parent().hasClass("context-menu-root"))a=c.$selected.parent().parent(),c.$selected.removeClass("hover"),c.$selected=a;break;case 39:if(c.isInput||!c.$selected||!c.$selected.length)break;a=c.$selected.data("contextMenu")||{};if(a.$menu)c.$selected=null,a.$selected=null,a.$menu.trigger("nextcommand");break;case 13:if(c.isInput){c.$selected&&!c.$selected.is(":textarea, :select")&&a.preventDefault();break}c.$selected&&
c.$selected.trigger("mouseup");break;case 27:l.hide.call(j,c),j=null}};F=function(a){a.stopPropagation();var c=e(this).data("contextMenu")||{};if(c.$selected){var d=c.$selected,c=c.$selected.parent().data("contextMenu")||{};c.$selected=d}for(var d=c.$menu.children(),b=!c.$selected||!c.$selected.prev().length?d.last():c.$selected.prev(),f=b;b.hasClass("disabled")||b.hasClass("not-selectable");)if(b=b.prev().length?b.prev():d.last(),b.is(f))return;c.$selected&&q.call(c.$selected.get(0),a);r.call(b.get(0),
a);a=b.find("input, textarea, select");a.length&&a.focus()};G=function(a){a.stopPropagation();var c=e(this).data("contextMenu")||{};if(c.$selected){var d=c.$selected,c=c.$selected.parent().data("contextMenu")||{};c.$selected=d}for(var d=c.$menu.children(),b=!c.$selected||!c.$selected.next().length?d.first():c.$selected.next(),f=b;b.hasClass("disabled")||b.hasClass("not-selectable");)if(b=b.next().length?b.next():d.first(),b.is(f))return;c.$selected&&q.call(c.$selected.get(0),a);r.call(b.get(0),a);
a=b.find("input, textarea, select");a.length&&a.focus()};H=function(){var a=e(this).closest(".context-menu-item"),c=a.data(),d=c.contextMenu,c=c.contextMenuRoot;c.$selected=d.$selected=a;c.isInput=d.isInput=!0};I=function(){var a=e(this).closest(".context-menu-item").data();a.contextMenuRoot.isInput=a.contextMenu.isInput=!1};J=function(){e(this).data().contextMenuRoot.hovering=!0};K=function(a){var c=e(this).data().contextMenuRoot;if(c.$layer&&c.$layer.is(a.relatedTarget))c.hovering=!1};r=function(a){var c=
e(this),d=c.data(),b=d.contextMenu,f=d.contextMenuRoot;f.hovering=!0;f.$layer&&f.$layer.is(a.relatedTarget)&&(a.preventDefault(),a.stopImmediatePropagation());(d.contextMenu.$menu?d.contextMenu:d.contextMenuRoot).$menu.children().removeClass("hover");c.hasClass("disabled")||c.hasClass("not-selectable")?b.$selected=null:(b.$selected=f.$selected=c,c.addClass("hover"),b.$node&&f.positionSubmenu.call(b.$node,b.$menu))};q=function(a){var c=e(this),d=c.data(),b=d.contextMenu,d=d.contextMenuRoot;d!==b&&
d.$layer&&d.$layer.is(a.relatedTarget)?(d.$selected.removeClass("hover"),a.preventDefault(),a.stopImmediatePropagation(),d.$selected=b.$selected=b.$node):(b.$selected=null,c.removeClass("hover"))};L=function(a){var c=e(this),d=c.data(),b=d.contextMenuRoot,f=d.contextMenuKey;if(d.contextMenu.items[f]&&!c.hasClass("disabled")){a.preventDefault();a.stopImmediatePropagation();if(e.isFunction(b.callbacks[f]))a=b.callbacks[f];else if(e.isFunction(b.callback))a=b.callback;else return;!1!==a.call(b.$trigger,
f,b)?(l.hide.call(b.$trigger,b),j=null):l.update.call(b.$trigger,b)}};M=function(a){a.stopImmediatePropagation()};var l={show:function(a,c,d){var b=e(this),f={};e("#context-menu-layer").trigger("mousedown");if(!1===a.events.show.call(b,a))j=null;else{l.update.call(b,a);a.position.call(b,a,c,d);if(a.zIndex)f.zIndex=R(b)+a.zIndex;l.layer.call(a.$menu,a,f.zIndex);a.$trigger=b;a.$menu.css(f)[a.animation.show](a.animation.duration);b.data("contextMenu",a);e(document).unbind("keydown.contextMenu").bind("keydown.contextMenu",
E);if(a.autoHide){var g=b.position();g.right=g.left+b.outerWidth();g.bottom=g.top+this.outerHeight();e(document).bind("mousemove.contextMenuAutoHide",function(b){a.$layer&&!a.hovering&&(!(b.pageX>=g.left&&b.pageX<=g.right)||!(b.pageY>=g.top&&b.pageY<=g.bottom))&&a.$layer.trigger("mousedown")})}}},hide:function(a){var c=e(this);a||(a=c.data("contextMenu")||{});if(!(a.events&&!1===a.events.hide.call(c,a))){if(a.$layer)try{a.$layer.remove(),delete a.$layer}catch(d){a.$layer=null}j=null;a.$menu.find(".hover").removeClass("hover");
a.$selected=null;e(document).unbind("keydown.contextMenu").unbind(".contextMenuAutoHide");a.$menu&&a.$menu[a.animation.hide](a.animation.duration)}},create:function(a,c){c===m&&(c=a);a.$menu=e('<ul class="context-menu-list '+(this.className||"")+'"></ul>').data({contextMenu:a,contextMenuRoot:c});e.each(["callbacks","commands","inputs"],function(d,b){a[b]={};c[b]||(c[b]={})});e.each(a.items,function(d,b){var f=e('<li class="context-menu-item '+(b.className||"")+'"></li>'),g=null,h=null;b.$node=f.data({contextMenu:a,
contextMenuRoot:c,contextMenuKey:d});if("string"==typeof b)f.addClass("context-menu-separator not-selectable");else{if("html"==b.type)f.addClass("context-menu-html not-selectable");else if(b.type)g=e("<label></label>").appendTo(f),e("<span></span>").appendTo(g).text(b.name),f.addClass("context-menu-input"),a.hasTypes=!0,e.each([a,c],function(a,c){c.commands[d]=b;c.inputs[d]=b});else if(b.items)b.type="sub";switch(b.type){case "text":h=e('<input type="text" value="1" name="context-menu-input-'+d+'" value="">').val(b.value||
"").appendTo(g);break;case "textarea":h=e('<textarea name="context-menu-input-'+d+'"></textarea>').val(b.value||"").appendTo(g);b.height&&h.height(b.height);break;case "checkbox":h=e('<input type="checkbox" value="1" name="context-menu-input-'+d+'" value="">').val(b.value||"").prop("checked",!!b.selected).prependTo(g);break;case "radio":h=e('<input type="radio" value="1" name="context-menu-input-'+b.radio+'" value="">').val(b.value||"").prop("checked",!!b.selected).prependTo(g);break;case "select":h=
e('<select name="context-menu-input-'+d+'">').appendTo(g);b.options&&(e.each(b.options,function(a,b){e("<option></option>").val(a).text(b).appendTo(h)}),h.val(b.selected));break;case "sub":e("<span></span>").text(b.name).appendTo(f);b.appendTo=b.$node;l.create(b,c);f.data("contextMenu",b);b.callback=null;break;case "html":e(b.html).appendTo(f);break;default:e.each([a,c],function(a,c){c.commands[d]=b;if(e.isFunction(b.callback))c.callbacks[d]=b.callback}),e("<span></span>").text(b.name||"").appendTo(f)}b.type&&
"sub"!=b.type&&"html"!=b.type&&(h.bind("focus",H).bind("blur",I),b.events&&h.bind(b.events));b.icon&&f.addClass("icon icon-"+b.icon)}b.$input=h;b.$label=g;f.appendTo(a.$menu);a.hasTypes||(e.browser.msie?f.bind("selectstart.disableTextSelect",o):e.browser.mozilla||f.bind("mousedown.disableTextSelect",o))});a.$node||a.$menu.css("display","none").addClass("context-menu-root");a.$menu.appendTo(a.appendTo||document.body)},update:function(a){var c=this;a.$menu.children().each(function(){var d=e(this),b=
d.data("contextMenuKey"),f=a.items[b],b=e.isFunction(f.disabled)&&f.disabled.call(c,b,a)||!0===f.disabled;d[b?"addClass":"removeClass"]("disabled");if(f.type)switch(d.find("input, select, textarea").prop("disabled",b),f.type){case "text":case "textarea":f.$input.val(f.value||"");break;case "checkbox":case "radio":f.$input.val(f.value||"").prop("checked",!!f.selected);break;case "select":f.$input.val(f.selected||"")}})},layer:function(a,c){var d=e(window);return a.$layer=e('<div id="context-menu-layer" style="position:fixed; z-index:'+
c+'; top:0; left:0; opacity: 0;"></div>').css({height:d.height(),width:d.width(),display:"block"}).data("contextMenuRoot",a).insertBefore(this).bind("mousedown",D)}};e.fn.contextMenu=function(a){a===m?this.first().trigger("contextmenu"):a.x&&a.y?this.first().trigger(jQuery.Event("contextmenu",{pageX:a.x,pageY:a.y})):a?this.removeClass("context-menu-disabled"):a||this.addClass("context-menu-disabled");return this};e.contextMenu=function(a,c){"string"!=typeof a&&(c=a,a="create");"string"==typeof c?
c={selector:c}:c===m&&(c={});var d=e.extend(!0,{},P,c||{}),b=b=e(document);switch(a){case "create":if(!d.selector)throw Error("No selector specified");if(d.selector.match(/.context-menu-(list|item|input)($|\s)/))throw Error('Cannot bind to selector "'+d.selector+'" as it contains a reserved className');if(!d.items||e.isEmptyObject(d.items))throw Error("No Items sepcified");u++;d.ns=".contextMenu"+u;k[d.selector]=d.ns;n[d.ns]=d;O||(b.delegate(".context-menu-list","prevcommand.contextMenu",F).delegate(".context-menu-list",
"nextcommand.contextMenu",G).delegate(".context-menu-list","contextmenu.contextMenu",o).delegate(".context-menu-list","mouseenter.contextMenu",J).delegate(".context-menu-list","mouseleave.contextMenu",K).delegate(".context-menu-input","mouseup.contextMenu",M).delegate(".context-menu-item","mouseup.contextMenu",L).delegate(".context-menu-item","contextmenu.contextMenu",o).delegate(".context-menu-item","mouseenter.contextMenu",r).delegate(".context-menu-item","mouseleave.contextMenu",q),O=!0);b.delegate(d.selector,
"contextmenu"+d.ns,d,y);switch(d.trigger){case "hover":b.delegate(d.selector,"mouseenter"+d.ns,d,A).delegate(d.selector,"mouseleave"+d.ns,d,B);break;case "left":b.delegate(d.selector,"click"+d.ns,d,z)}"hover"!=d.trigger&&d.ignoreRightClick&&b.delegate(d.selector,"mousedown"+d.ns,C);l.create(d);break;case "destroy":if(d.selector){if(k[d.selector]){try{n[k[d.selector]].$menu&&n[k[d.selector]].$menu.remove(),delete n[k[d.selector]]}catch(f){n[k[d.selector]]=null}b.undelegate(k[d.selector])}}else b.undelegate(".contextMenu").unbind(".contextMenu"),
e.each(k,function(a,c){b.undelegate(c)}),k={},n={},u=0,e(".context-menu-list").remove();break;case "html5":(!e.support.htmlCommand&&!e.support.htmlMenuitem||"boolean"==typeof c&&c)&&e('menu[type="context"]').each(function(){this.id&&e.contextMenu({selector:"[contextmenu="+this.id+"]",items:e.contextMenu.fromMenu(this)})}).css("display","none");break;default:throw Error('Unknown operation "'+a+'"');}return this};e.contextMenu.setInputValues=function(a,c){c===m&&(c={});e.each(a.inputs,function(a,b){switch(b.type){case "text":case "textarea":b.value=
c[a]||"";break;case "checkbox":b.selected=c[a]?!0:!1;break;case "radio":b.selected=(c[b.radio]||"")==b.value?!0:!1;break;case "select":b.selected=c[a]||""}})};e.contextMenu.getInputValues=function(a,c){c===m&&(c={});e.each(a.inputs,function(a,b){switch(b.type){case "text":case "textarea":case "select":c[a]=b.$input.val();break;case "checkbox":c[a]=b.$input.prop("checked");break;case "radio":if(b.$input.prop("checked"))c[b.radio]=b.value}});return c};e.contextMenu.fromMenu=function(a){var a=e(a),c=
{};N(c,a.children());return c};e.contextMenu.defaults=P})(jQuery);

