").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:a}),a(t)):r.position(e.extend({of:i},this.options.position)),r.hide(),this._show(r,this.options.show),this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){r.is(":visible")&&(a(l.of),clearInterval(o))},e.fx.interval)),this._trigger("open",t,{tooltip:r})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,a=e(t?t.currentTarget:this.element),n=this._find(a);return n?(i=n.tooltip,n.closing||(clearInterval(this.delayedShow),a.data("ui-tooltip-title")&&!a.attr("title")&&a.attr("title",a.data("ui-tooltip-title")),this._removeDescribedBy(a),n.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),a.removeData("ui-tooltip-open"),this._off(a,"mouseleave focusout keyup"),a[0]!==this.element[0]&&this._off(a,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:i}),n.hiding||(n.closing=!1)),void 0):(a.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("
").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("
").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var a=e.Event("blur"),n=s.element;a.target=a.currentTarget=n[0],t.close(a,!0),e("#"+i).remove(),n.data("ui-tooltip-title")&&(n.attr("title")||n.attr("title",n.data("ui-tooltip-title")),n.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}});var d="ui-effects-",c=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),a=s._rgba=[];return i=i.toLowerCase(),m(h,function(e,n){var r,o=n.re.exec(i),h=o&&n.parse(o),l=n.space||"rgba";return h?(r=s[l](h),s[u[l].cache]=r[u[l].cache],a=s._rgba=r._rgba,!1):t}),a.length?("0,0,0,0"===a.join()&&e.extend(a,n.transparent),s):n[i]}function a(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var n,r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",o=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,a){return new e.Color.fn.parse(t,i,s,a)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("
")[0],m=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,m(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(a,r,o,h){if(a===t)return this._rgba=[null,null,null,null],this;(a.jquery||a.nodeType)&&(a=e(a).css(r),r=t);var d=this,c=e.type(a),p=this._rgba=[];return r!==t&&(a=[a,r,o,h],c="array"),"string"===c?this.parse(s(a)||n._default):"array"===c?(m(u.rgba.props,function(e,t){p[t.idx]=i(a[t.idx],t)}),this):"object"===c?(a instanceof l?m(u,function(e,t){a[t.cache]&&(d[t.cache]=a[t.cache].slice())}):m(u,function(t,s){var n=s.cache;m(s.props,function(e,t){if(!d[n]&&s.to){if("alpha"===e||null==a[e])return;d[n]=s.to(d._rgba)}d[n][t.idx]=i(a[e],t,!0)}),d[n]&&0>e.inArray(null,d[n].slice(0,3))&&(d[n][3]=1,s.from&&(d._rgba=s.from(d[n])))}),this):t},is:function(e){var i=l(e),s=!0,a=this;return m(u,function(e,n){var r,o=i[n.cache];return o&&(r=a[n.cache]||n.to&&n.to(a._rgba)||[],m(n.props,function(e,i){return null!=o[i.idx]?s=o[i.idx]===r[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return m(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),a=s._space(),n=u[a],r=0===this.alpha()?l("transparent"):this,o=r[n.cache]||n.to(r._rgba),h=o.slice();return s=s[n.cache],m(n.props,function(e,a){var n=a.idx,r=o[n],l=s[n],u=d[a.type]||{};null!==l&&(null===r?h[n]=l:(u.mod&&(l-r>u.mod/2?r+=u.mod:r-l>u.mod/2&&(r-=u.mod)),h[n]=i((l-r)*t+r,a)))}),this[a](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),a=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*a[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,a=e[1]/255,n=e[2]/255,r=e[3],o=Math.max(s,a,n),h=Math.min(s,a,n),l=o-h,u=o+h,d=.5*u;return t=h===o?0:s===o?60*(a-n)/l+360:a===o?60*(n-s)/l+120:60*(s-a)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==r?1:r]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],n=e[3],r=.5>=s?s*(1+i):s+i-s*i,o=2*s-r;return[Math.round(255*a(o,r,t+1/3)),Math.round(255*a(o,r,t)),Math.round(255*a(o,r,t-1/3)),n]},m(u,function(s,a){var n=a.props,r=a.cache,h=a.to,u=a.from;l.fn[s]=function(s){if(h&&!this[r]&&(this[r]=h(this._rgba)),s===t)return this[r].slice();var a,o=e.type(s),d="array"===o||"object"===o?s:arguments,c=this[r].slice();return m(n,function(e,t){var s=d["object"===o?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(a=l(u(c)),a[r]=c,a):l(c)},m(n,function(t,i){l.fn[t]||(l.fn[t]=function(a){var n,r=e.type(a),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===r?u:("function"===r&&(a=a.call(this,u),r=e.type(a)),null==a&&i.empty?this:("string"===r&&(n=o.exec(a),n&&(a=u+parseFloat(n[2])*("+"===n[1]?1:-1))),l[i.idx]=a,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");m(i,function(t,i){e.cssHooks[i]={set:function(t,a){var n,r,o="";if("transparent"!==a&&("string"!==e.type(a)||(n=s(a)))){if(a=l(n||a),!c.rgba&&1!==a._rgba[3]){for(r="backgroundColor"===i?t.parentNode:t;(""===o||"transparent"===o)&&r&&r.style;)try{o=e.css(r,"backgroundColor"),r=r.parentNode}catch(h){}a=a.blend(o&&"transparent"!==o?o:"_default")}a=a.toRgbaString()}try{t.style[i]=a}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(r),e.cssHooks.borderColor={expand:function(e){var t={};return m(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},n=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(c),function(){function t(t){var i,s,a=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(a&&a.length&&a[0]&&a[a[0]])for(s=a.length;s--;)i=a[s],"string"==typeof a[i]&&(n[e.camelCase(i)]=a[i]);else for(i in a)"string"==typeof a[i]&&(n[i]=a[i]);return n}function i(t,i){var s,n,r={};for(s in i)n=i[s],t[s]!==n&&(a[s]||(e.fx.step[s]||!isNaN(parseFloat(n)))&&(r[s]=n));return r}var s=["add","remove","toggle"],a={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(c.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(a,n,r,o){var h=e.speed(n,r,o);return this.queue(function(){var n,r=e(this),o=r.attr("class")||"",l=h.children?r.find("*").addBack():r;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),n=function(){e.each(s,function(e,t){a[t]&&r[t+"Class"](a[t])})},n(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),r.attr("class",o),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){n(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(r[0])})})},e.fn.extend({addClass:function(t){return function(i,s,a,n){return s?e.effects.animateClass.call(this,{add:i},s,a,n):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,a,n){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,a,n):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,a,n,r){return"boolean"==typeof s||void 0===s?a?e.effects.animateClass.call(this,s?{add:i}:{remove:i},a,n,r):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,a,n)}}(e.fn.toggleClass),switchClass:function(t,i,s,a,n){return e.effects.animateClass.call(this,{add:i,remove:t},s,a,n)}})}(),function(){function t(t,i,s,a){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(a=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(a=s,s=i,i={}),e.isFunction(s)&&(a=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=a||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(d+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(d+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),a={width:t.width(),height:t.height()},n=document.activeElement;try{n.id}catch(r){n=document.body}return t.wrap(s),(t[0]===n||e.contains(t[0],n))&&e(n).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(a),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,a){return a=a||{},e.each(i,function(e,i){var n=t.cssUnit(i);n[0]>0&&(a[i]=n[0]*s+n[1])}),a}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(n)&&n.call(a[0]),e.isFunction(t)&&t()}var a=e(this),n=s.complete,o=s.mode;(a.is(":hidden")?"hide"===o:"show"===o)?(a[o](),i()):r.call(a[0],s,i)}var s=t.apply(this,arguments),a=s.mode,n=s.queue,r=e.effects.effect[s.effect];return e.fx.off||!r?a?this[a](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):n===!1?this.each(i):this.queue(n||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="show",this.effect.call(this,a)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="hide",this.effect.call(this,a)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="toggle",this.effect.call(this,a)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.fade=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:a},{queue:!1,duration:t.duration,easing:t.easing,complete:i})}});
/* Dropdownchecklist v1.5, Copyright (c) 2008-2010 Adrian Tosca - modified by Bergware - add LUKS indicator */
-!function(e){e.widget("ui.dropdownchecklist",{version:function(){alert("DropDownCheckList v1.5")},_appendDropContainer:function(t){var i=e("
");i.addClass("ui-dropdownchecklist ui-dropdownchecklist-dropcontainer-wrapper"),i.addClass("ui-widget"),i.attr("id",t.attr("id")+"-ddw"),i.css({position:"absolute",left:"-33000px",top:"-33000px"});var o=e("
");return o.addClass("ui-dropdownchecklist-dropcontainer ui-widget-content"),o.css("overflow-y","auto"),i.append(o),i.insertAfter(t),i.isOpen=!1,i},_isDropDownKeyShortcut:function(t,i){return t.altKey&&e.ui.keyCode.DOWN==i},_isDropDownCloseKey:function(t,i){return e.ui.keyCode.ESCAPE==i||e.ui.keyCode.ENTER==i},_keyFocusChange:function(t,i,o){var n=e(":focusable"),r=n.index(t);if(r>=0){if(r+=i,o){var s=this.dropWrapper.find("input:not([disabled])"),a=n.index(s.get(0)),l=n.index(s.get(s.length-1));r
l&&(r=a)}n.get(r).focus()}},_handleKeyboard:function(t){var i=this,o=t.keyCode||t.which;!i.dropWrapper.isOpen&&i._isDropDownKeyShortcut(t,o)?(t.stopImmediatePropagation(),i._toggleDropContainer(!0)):i.dropWrapper.isOpen&&i._isDropDownCloseKey(t,o)?(t.stopImmediatePropagation(),i._toggleDropContainer(!1),i.controlSelector.focus()):!i.dropWrapper.isOpen||"checkbox"!=t.target.type||o!=e.ui.keyCode.DOWN&&o!=e.ui.keyCode.UP?i.dropWrapper.isOpen&&e.ui.keyCode.TAB:(t.stopImmediatePropagation(),i._keyFocusChange(t.target,o==e.ui.keyCode.DOWN?1:-1,!0))},_handleFocus:function(t,i,o){var n=this;o&&!n.dropWrapper.isOpen?(t.stopImmediatePropagation(),i?(n.controlSelector.addClass("ui-state-hover"),null!=e.ui.dropdownchecklist.gLastOpened&&e.ui.dropdownchecklist.gLastOpened._toggleDropContainer(!1)):n.controlSelector.removeClass("ui-state-hover")):o||i||(null!=t&&t.stopImmediatePropagation(),n.controlSelector.removeClass("ui-state-hover"),n._toggleDropContainer(!1))},_cancelBlur:function(e){var t=this;null!=t.blurringItem&&(clearTimeout(t.blurringItem),t.blurringItem=null)},_appendControl:function(){var t=this,i=this.sourceSelect,o=this.options,n=e("");n.addClass("ui-dropdownchecklist ui-dropdownchecklist-selector-wrapper ui-widget"),n.css({display:"inline-block",cursor:"default",overflow:"hidden"});var r=i.attr("id");r=null==r||""==r?"ddcl-"+e.ui.dropdownchecklist.gIDCounter++:"ddcl-"+r,n.attr("id",r);var s=e("");s.addClass("ui-dropdownchecklist-selector ui-state-default"),s.css({display:"inline-block",overflow:"hidden","white-space":"nowrap"});var a=i.attr("tabIndex");if(null==a?a=0:(a=parseInt(a))<0&&(a=0),s.attr("tabIndex",a),s.keyup(function(e){t._handleKeyboard(e)}),s.focus(function(e){t._handleFocus(e,!0,!0)}),s.blur(function(e){t._handleFocus(e,!1,!0)}),n.append(s),null!=o.icon){var l=null==o.icon.placement?"left":o.icon.placement,p=e("");p.addClass("ui-icon"),p.addClass(null!=o.icon.toOpen?o.icon.toOpen:"ui-icon-triangle-1-e"),p.css({float:l}),s.append(p)}var c=e("");return c.addClass("ui-dropdownchecklist-text"),c.css({display:"inline-block","white-space":"nowrap",overflow:"hidden"}),s.append(c),n.hover(function(){t.disabled||s.addClass("ui-state-hover")},function(){t.disabled||s.removeClass("ui-state-hover")}),n.click(function(e){t.disabled||(e.stopImmediatePropagation(),t._toggleDropContainer(!t.dropWrapper.isOpen))}),n.insertAfter(i),e(window).resize(function(){!t.disabled&&t.dropWrapper.isOpen&&t._toggleDropContainer(!0)}),n},_createDropItem:function(t,i,o,n,r,s,a,l){var p=this,c=this.options,d=this.sourceSelect,u=this.controlWrapper,h=e("");h.addClass("ui-dropdownchecklist-item"),h.css({"white-space":"nowrap"});var f,v=s?' checked="checked"':"",m=a?' class="inactive"':' class="active"',C=u.attr("id"),g=C+"-i"+t;f=(f=e(p.isMultiple?'':'')).attr("index",t).val(o),h.append(f);var k=e("");return k.addClass("ui-dropdownchecklist-text"),null!=r&&k.attr("style",r),k.css({cursor:"default"}),k.html(n),l&&h.addClass("ui-dropdownchecklist-indent"),h.addClass("ui-state-default"),a&&h.addClass("ui-state-disabled"),k.click(function(e){e.stopImmediatePropagation()}),h.append(k),h.hover(function(t){var i=e(this);i.hasClass("ui-state-disabled")||i.addClass("ui-state-hover")},function(t){e(this).removeClass("ui-state-hover")}),f.click(function(t){var i=e(this);if(t.stopImmediatePropagation(),i.hasClass("active")){var o=p.options.onItemClick;if(e.isFunction(o))try{o.call(p,i,d.get(0))}catch(e){return i.prop("checked",!i.prop("checked")),void p._syncSelected(i)}p._syncSelected(i),p.sourceSelect.trigger("change","ddcl_internal"),!p.isMultiple&&c.closeRadioOnClick&&p._toggleDropContainer(!1)}}),h.click(function(t){var i=e(this);if(t.stopImmediatePropagation(),i.hasClass("ui-state-disabled"))i.focus(),p._cancelBlur();else{var o=i.find("input"),n=o.prop("checked");o.prop("checked",!n);var r=p.options.onItemClick;if(e.isFunction(r))try{r.call(p,o,d.get(0))}catch(e){return o.prop("checked",n),void p._syncSelected(o)}p._syncSelected(o),p.sourceSelect.trigger("change","ddcl_internal"),n||p.isMultiple||!c.closeRadioOnClick||p._toggleDropContainer(!1)}}),h.focus(function(t){e(this);t.stopImmediatePropagation()}),h.keyup(function(e){p._handleKeyboard(e)}),h},_createGroupItem:function(t,i){var o=this,n=e("");n.addClass("ui-dropdownchecklist-group ui-widget-header"),i&&n.addClass("ui-state-disabled"),n.css({"white-space":"nowrap"});var r=e("");return r.addClass("ui-dropdownchecklist-text"),r.css({cursor:"default"}),r.text(t),n.append(r),n.click(function(t){var i=e(this);t.stopImmediatePropagation(),i.focus(),o._cancelBlur()}),n.focus(function(t){e(this);t.stopImmediatePropagation()}),n},_createCloseItem:function(t){var i=this,o=e("");o.addClass("ui-state-default ui-dropdownchecklist-close ui-dropdownchecklist-item"),o.css({"white-space":"nowrap","text-align":"right"});var n=e("");return n.addClass("ui-dropdownchecklist-text"),n.css({cursor:"default"}),n.html(t),o.append(n),o.click(function(t){var o=e(this);t.stopImmediatePropagation(),o.focus(),i._toggleDropContainer(!1)}),o.hover(function(t){e(this).addClass("ui-state-hover")},function(t){e(this).removeClass("ui-state-hover")}),o.focus(function(t){e(this);t.stopImmediatePropagation()}),o},_appendItems:function(){var t=this,i=this.options,o=this.sourceSelect,n=this.dropWrapper.find(".ui-dropdownchecklist-dropcontainer");if(o.children().each(function(i){var o=e(this);if(o.is("option"))t._appendOption(o,n,i,!1,!1);else if(o.is("optgroup")){var r=o.prop("disabled"),s=o.attr("label");if(""!=s){var a=t._createGroupItem(s,r);n.append(a)}t._appendOptions(o,n,i,!0,r)}}),null!=i.explicitClose){var r=t._createCloseItem(i.explicitClose);n.append(r)}return{width:n.outerWidth(),height:n.outerHeight()}},_appendOptions:function(t,i,o,n,r){var s=this;t.children("option").each(function(t){var a=e(this),l=o+"."+t;s._appendOption(a,i,l,n,r)})},_appendOption:function(e,t,i,o,n){var r=this,s=e.html();if(null!=s&&""!=s){var a=e.val(),l=e.attr("style"),p=e.prop("selected");e.attr("luks")&&(s+="");var c=n||e.prop("disabled"),d=r.controlSelector.attr("tabindex"),u=r._createDropItem(i,d,a,s,l,p,c,o);t.append(u)}},_syncSelected:function(t){var i=this,o=this.options,n=this.sourceSelect,r=this.dropWrapper,s=n.get(0).options,a=r.find("input.active");if("exclusive"==o.firstItemChecksAll)if(null==t&&e(s[0]).prop("selected"))a.prop("checked",!1),e(a[0]).prop("checked",!0);else if(null!=t&&0==t.attr("index")){var l=t.prop("checked");a.prop("checked",!1),e(a[0]).prop("checked",l)}else{var p=!0,c=null;a.each(function(t){t>0?e(this).prop("checked")||(p=!1):c=e(this)}),null!=c&&(p&&a.prop("checked",!1),c.prop("checked",p))}else if(o.firstItemChecksAll)if(null==t&&e(s[0]).prop("selected"))a.prop("checked",!0);else if(null!=t&&0==t.attr("index"))a.prop("checked",t.prop("checked"));else{var p=!0,c=null;a.each(function(t){t>0?e(this).prop("checked")||(p=!1):c=e(this)}),null!=c&&c.prop("checked",p)}var d=0;(a=r.find("input")).each(function(t){var i=e(s[t+d]),o=i.html();null!=o&&""!=o||(i=e(s[t+(d+=1)])),i.prop("selected",e(this).prop("checked"))}),i._updateControlText(),null!=t&&t.focus()},_sourceSelectChangeHandler:function(e){var t=this;this.dropWrapper.find("input").val(t.sourceSelect.val()),t._updateControlText()},_updateControlText:function(){var e=this,t=this.sourceSelect,i=this.options,o=this.controlWrapper,n=t.find("option:first"),r=t.find("option"),s=e._formatText(r,i.firstItemChecksAll,n),a=o.find(".ui-dropdownchecklist-text");a.html(s),a.attr("title",a.text())},_formatText:function(t,i,o){var n;if(e.isFunction(this.options.textFormatFunction))try{n=this.options.textFormatFunction(t)}catch(e){alert("textFormatFunction failed: "+e)}else i&&null!=o&&o.prop("selected")?n=o.html():(n="",t.each(function(){if(e(this).prop("selected")){""!=n&&(n+=", ");var t=e(this).attr("style"),i=e("");i.html(e(this).html()),null==t?n+=i.html():(i.attr("style",t),n+=e("").append(i).html())}}),""==n&&(n=null!=this.options.emptyText?this.options.emptyText:" "));return n},_toggleDropContainer:function(t){var i=this,o=function(t){if(null!=t&&t.dropWrapper.isOpen){t.dropWrapper.isOpen=!1,e.ui.dropdownchecklist.gLastOpened=null;var i=t.options;t.dropWrapper.css({top:"-33000px",left:"-33000px"});var n=t.controlSelector;n.removeClass("ui-state-active"),n.removeClass("ui-state-hover");var r=t.controlWrapper.find(".ui-icon");if(r.length>0&&(r.removeClass(null!=i.icon.toClose?i.icon.toClose:"ui-icon-triangle-1-s"),r.addClass(null!=i.icon.toOpen?i.icon.toOpen:"ui-icon-triangle-1-e")),e(document).unbind("click",o),t.dropWrapper.find("input.active").prop("disabled",!0),e.isFunction(i.onComplete))try{i.onComplete.call(t,t.sourceSelect.get(0))}catch(e){alert("callback failed: "+e)}}};t?(o(e.ui.dropdownchecklist.gLastOpened),function(t){if(!t.dropWrapper.isOpen){t.dropWrapper.isOpen=!0,e.ui.dropdownchecklist.gLastOpened=t;var i=t.options;null==i.positionHow||"absolute"==i.positionHow?t.dropWrapper.css({position:"absolute",top:t.controlWrapper.position().top+t.controlWrapper.outerHeight()+"px",left:t.controlWrapper.position().left+"px"}):"relative"==i.positionHow&&t.dropWrapper.css({position:"relative",top:"0px",left:"0px"});var n=0;if(null==i.zIndex){var r=t.controlWrapper.parents().map(function(){var t=e(this).css("z-index");return isNaN(t)?0:t}).get(),s=Math.max.apply(Math,r);s>=0&&(n=s+1)}else n=parseInt(i.zIndex);n>0&&t.dropWrapper.css({"z-index":n});var a=t.controlSelector;a.addClass("ui-state-active"),a.removeClass("ui-state-hover");var l=t.controlWrapper.find(".ui-icon");l.length>0&&(l.removeClass(null!=i.icon.toOpen?i.icon.toOpen:"ui-icon-triangle-1-e"),l.addClass(null!=i.icon.toClose?i.icon.toClose:"ui-icon-triangle-1-s")),e(document).bind("click",function(e){o(t)});var p=t.dropWrapper.find("input.active");p.prop("disabled",!1);var c=p.get(0);null!=c&&c.focus()}}(i)):o(i)},_setSize:function(t){var i=this.options,o=this.dropWrapper,n=this.controlWrapper,r=t.width;if(null!=i.width)r=parseInt(i.width);else if(null!=i.minWidth){var s=parseInt(i.minWidth);r0&&t.height>d&&(u=d,c+=20),e(o).css({height:u+"px",width:c+"px"}),o.find(".ui-dropdownchecklist-dropcontainer").css({height:u+"px"})},_init:function(){var t=this,i=this.options;null==e.ui.dropdownchecklist.gIDCounter&&(e.ui.dropdownchecklist.gIDCounter=1),t.blurringItem=null;var o=t.element;t.initialDisplay=o.css("display"),o.css("display","none"),t.initialMultiple=o.prop("multiple"),t.isMultiple=t.initialMultiple,null!=i.forceMultiple&&(t.isMultiple=i.forceMultiple),o.prop("multiple",!0),t.sourceSelect=o;var n=t._appendControl();t.controlWrapper=n,t.controlSelector=n.find(".ui-dropdownchecklist-selector");var r=t._appendDropContainer(n);t.dropWrapper=r;var s=t._appendItems();t._updateControlText(n,r,o),t._setSize(s),i.firstItemChecksAll&&t._syncSelected(null),i.bgiframe&&"function"==typeof t.dropWrapper.bgiframe&&t.dropWrapper.bgiframe(),t.sourceSelect.change(function(e,i){"ddcl_internal"!=i&&t._sourceSelectChangeHandler(e)})},_refreshOption:function(e,t,i){var o=e.parent();t?(e.prop("disabled",!0),e.removeClass("active"),e.addClass("inactive"),o.addClass("ui-state-disabled")):(e.prop("disabled",!1),e.removeClass("inactive"),e.addClass("active"),o.removeClass("ui-state-disabled")),e.prop("checked",i)},_refreshGroup:function(e,t){t?e.addClass("ui-state-disabled"):e.removeClass("ui-state-disabled")},close:function(){this._toggleDropContainer(!1)},refresh:function(){var t=this,i=this.sourceSelect,o=this.dropWrapper,n=o.find("input"),r=o.find(".ui-dropdownchecklist-group"),s=0,a=0;i.children().each(function(i){var o=e(this),l=o.prop("disabled");if(o.is("option")){var p=o.prop("selected"),c=e(n[a]);t._refreshOption(c,l,p),a+=1}else if(o.is("optgroup")){if(""!=o.attr("label")){var d=e(r[s]);t._refreshGroup(d,l),s+=1}o.children("option").each(function(){var i=e(this),o=l||i.prop("disabled"),r=i.prop("selected"),s=e(n[a]);t._refreshOption(s,o,r),a+=1})}}),t._syncSelected(null)},enable:function(){this.controlSelector.removeClass("ui-state-disabled"),this.disabled=!1},disable:function(){this.controlSelector.addClass("ui-state-disabled"),this.disabled=!0},destroy:function(){e.Widget.prototype.destroy.apply(this,arguments),this.sourceSelect.css("display",this.initialDisplay),this.sourceSelect.prop("multiple",this.initialMultiple),this.controlWrapper.unbind().remove(),this.dropWrapper.remove()}}),e.extend(e.ui.dropdownchecklist,{defaults:{width:null,maxDropHeight:null,firstItemChecksAll:!1,closeRadioOnClick:!1,minWidth:50,positionHow:"absolute",bgiframe:!1,explicitClose:null}})}(jQuery);
+!function(e){e.widget("ui.dropdownchecklist",{version:function(){alert("DropDownCheckList v1.5")},_appendDropContainer:function(t){var i=e("");i.addClass("ui-dropdownchecklist ui-dropdownchecklist-dropcontainer-wrapper"),i.addClass("ui-widget"),i.attr("id",t.attr("id")+"-ddw"),i.css({position:"absolute",left:"-33000px",top:"-33000px"});var o=e("");return o.addClass("ui-dropdownchecklist-dropcontainer ui-widget-content"),o.css("overflow-y","auto"),i.append(o),i.insertAfter(t),i.isOpen=!1,i},_isDropDownKeyShortcut:function(t,i){return t.altKey&&e.ui.keyCode.DOWN==i},_isDropDownCloseKey:function(t,i){return e.ui.keyCode.ESCAPE==i||e.ui.keyCode.ENTER==i},_keyFocusChange:function(t,i,o){var n=e(":focusable"),r=n.index(t);if(r>=0){if(r+=i,o){var s=this.dropWrapper.find("input:not([disabled])"),a=n.index(s.get(0)),l=n.index(s.get(s.length-1));rl&&(r=a)}n.get(r).focus()}},_handleKeyboard:function(t){var i=this,o=t.keyCode||t.which;!i.dropWrapper.isOpen&&i._isDropDownKeyShortcut(t,o)?(t.stopImmediatePropagation(),i._toggleDropContainer(!0)):i.dropWrapper.isOpen&&i._isDropDownCloseKey(t,o)?(t.stopImmediatePropagation(),i._toggleDropContainer(!1),i.controlSelector.focus()):!i.dropWrapper.isOpen||"checkbox"!=t.target.type||o!=e.ui.keyCode.DOWN&&o!=e.ui.keyCode.UP?i.dropWrapper.isOpen&&e.ui.keyCode.TAB:(t.stopImmediatePropagation(),i._keyFocusChange(t.target,o==e.ui.keyCode.DOWN?1:-1,!0))},_handleFocus:function(t,i,o){var n=this;o&&!n.dropWrapper.isOpen?(t.stopImmediatePropagation(),i?(n.controlSelector.addClass("ui-state-hover"),null!=e.ui.dropdownchecklist.gLastOpened&&e.ui.dropdownchecklist.gLastOpened._toggleDropContainer(!1)):n.controlSelector.removeClass("ui-state-hover")):o||i||(null!=t&&t.stopImmediatePropagation(),n.controlSelector.removeClass("ui-state-hover"),n._toggleDropContainer(!1))},_cancelBlur:function(e){var t=this;null!=t.blurringItem&&(clearTimeout(t.blurringItem),t.blurringItem=null)},_appendControl:function(){var t=this,i=this.sourceSelect,o=this.options,n=e("");n.addClass("ui-dropdownchecklist ui-dropdownchecklist-selector-wrapper ui-widget"),n.css({display:"inline-block",cursor:"default",overflow:"hidden"});var r=i.attr("id");r=null==r||""==r?"ddcl-"+e.ui.dropdownchecklist.gIDCounter++:"ddcl-"+r,n.attr("id",r);var s=e("");s.addClass("ui-dropdownchecklist-selector ui-state-default"),s.css({display:"inline-block",overflow:"hidden","white-space":"nowrap"});var a=i.attr("tabIndex");if(null==a?a=0:(a=parseInt(a))<0&&(a=0),s.attr("tabIndex",a),s.keyup(function(e){t._handleKeyboard(e)}),s.focus(function(e){t._handleFocus(e,!0,!0)}),s.blur(function(e){t._handleFocus(e,!1,!0)}),n.append(s),null!=o.icon){var l=null==o.icon.placement?"left":o.icon.placement,p=e("");p.addClass("ui-icon"),p.addClass(null!=o.icon.toOpen?o.icon.toOpen:"ui-icon-triangle-1-e"),p.css({float:l}),s.append(p)}var c=e("");return c.addClass("ui-dropdownchecklist-text"),c.css({display:"inline-block","white-space":"nowrap",overflow:"hidden"}),s.append(c),n.hover(function(){t.disabled||s.addClass("ui-state-hover")},function(){t.disabled||s.removeClass("ui-state-hover")}),n.click(function(e){t.disabled||(e.stopImmediatePropagation(),t._toggleDropContainer(!t.dropWrapper.isOpen))}),n.insertAfter(i),e(window).resize(function(){!t.disabled&&t.dropWrapper.isOpen&&t._toggleDropContainer(!0)}),n},_createDropItem:function(t,i,o,n,r,s,a,l){var p=this,c=this.options,d=this.sourceSelect,u=this.controlWrapper,h=e("");h.addClass("ui-dropdownchecklist-item"),h.css({"white-space":"nowrap"});var f,v=s?' checked="checked"':"",m=a?' class="inactive"':' class="active"',C=u.attr("id"),g=C+"-i"+t;f=(f=e(p.isMultiple?'':'')).attr("index",t).val(o),h.append(f);var k=e("");return k.addClass("ui-dropdownchecklist-text"),null!=r&&k.attr("style",r),k.css({cursor:"default"}),k.html(n),l&&h.addClass("ui-dropdownchecklist-indent"),h.addClass("ui-state-default"),a&&h.addClass("ui-state-disabled"),k.click(function(e){e.stopImmediatePropagation()}),h.append(k),h.hover(function(t){var i=e(this);i.hasClass("ui-state-disabled")||i.addClass("ui-state-hover")},function(t){e(this).removeClass("ui-state-hover")}),f.click(function(t){var i=e(this);if(t.stopImmediatePropagation(),i.hasClass("active")){var o=p.options.onItemClick;if(e.isFunction(o))try{o.call(p,i,d.get(0))}catch(e){return i.prop("checked",!i.prop("checked")),void p._syncSelected(i)}p._syncSelected(i),p.sourceSelect.trigger("change","ddcl_internal"),!p.isMultiple&&c.closeRadioOnClick&&p._toggleDropContainer(!1)}}),h.click(function(t){var i=e(this);if(t.stopImmediatePropagation(),i.hasClass("ui-state-disabled"))i.focus(),p._cancelBlur();else{var o=i.find("input"),n=o.prop("checked");o.prop("checked",!n);var r=p.options.onItemClick;if(e.isFunction(r))try{r.call(p,o,d.get(0))}catch(e){return o.prop("checked",n),void p._syncSelected(o)}p._syncSelected(o),p.sourceSelect.trigger("change","ddcl_internal"),n||p.isMultiple||!c.closeRadioOnClick||p._toggleDropContainer(!1)}}),h.focus(function(t){e(this);t.stopImmediatePropagation()}),h.keyup(function(e){p._handleKeyboard(e)}),h},_createGroupItem:function(t,i){var o=this,n=e("");n.addClass("ui-dropdownchecklist-group ui-widget-header"),i&&n.addClass("ui-state-disabled"),n.css({"white-space":"nowrap"});var r=e("");return r.addClass("ui-dropdownchecklist-text"),r.css({cursor:"default"}),r.text(t),n.append(r),n.click(function(t){var i=e(this);t.stopImmediatePropagation(),i.focus(),o._cancelBlur()}),n.focus(function(t){e(this);t.stopImmediatePropagation()}),n},_createCloseItem:function(t){var i=this,o=e("");o.addClass("ui-state-default ui-dropdownchecklist-close ui-dropdownchecklist-item"),o.css({"white-space":"nowrap","text-align":"right"});var n=e("");return n.addClass("ui-dropdownchecklist-text"),n.css({cursor:"default"}),n.html(t),o.append(n),o.click(function(t){var o=e(this);t.stopImmediatePropagation(),o.focus(),i._toggleDropContainer(!1)}),o.hover(function(t){e(this).addClass("ui-state-hover")},function(t){e(this).removeClass("ui-state-hover")}),o.focus(function(t){e(this);t.stopImmediatePropagation()}),o},_appendItems:function(){var t=this,i=this.options,o=this.sourceSelect,n=this.dropWrapper.find(".ui-dropdownchecklist-dropcontainer");if(o.children().each(function(i){var o=e(this);if(o.is("option"))t._appendOption(o,n,i,!1,!1);else if(o.is("optgroup")){var r=o.prop("disabled"),s=o.attr("label");if(""!=s){var a=t._createGroupItem(s,r);n.append(a)}t._appendOptions(o,n,i,!0,r)}}),null!=i.explicitClose){var r=t._createCloseItem(i.explicitClose);n.append(r)}return{width:n.outerWidth(),height:n.outerHeight()}},_appendOptions:function(t,i,o,n,r){var s=this;t.children("option").each(function(t){var a=e(this),l=o+"."+t;s._appendOption(a,i,l,n,r)})},_appendOption:function(e,t,i,o,n){var r=this,s=e.html();if(null!=s&&""!=s){var a=e.val(),l=e.attr("style"),p=e.prop("selected");e.attr("luks")&&(s+="Encrypted");var c=n||e.prop("disabled"),d=r.controlSelector.attr("tabindex"),u=r._createDropItem(i,d,a,s,l,p,c,o);t.append(u)}},_syncSelected:function(t){var i=this,o=this.options,n=this.sourceSelect,r=this.dropWrapper,s=n.get(0).options,a=r.find("input.active");if("exclusive"==o.firstItemChecksAll)if(null==t&&e(s[0]).prop("selected"))a.prop("checked",!1),e(a[0]).prop("checked",!0);else if(null!=t&&0==t.attr("index")){var l=t.prop("checked");a.prop("checked",!1),e(a[0]).prop("checked",l)}else{var p=!0,c=null;a.each(function(t){t>0?e(this).prop("checked")||(p=!1):c=e(this)}),null!=c&&(p&&a.prop("checked",!1),c.prop("checked",p))}else if(o.firstItemChecksAll)if(null==t&&e(s[0]).prop("selected"))a.prop("checked",!0);else if(null!=t&&0==t.attr("index"))a.prop("checked",t.prop("checked"));else{var p=!0,c=null;a.each(function(t){t>0?e(this).prop("checked")||(p=!1):c=e(this)}),null!=c&&c.prop("checked",p)}var d=0;(a=r.find("input")).each(function(t){var i=e(s[t+d]),o=i.html();null!=o&&""!=o||(i=e(s[t+(d+=1)])),i.prop("selected",e(this).prop("checked"))}),i._updateControlText(),null!=t&&t.focus()},_sourceSelectChangeHandler:function(e){var t=this;this.dropWrapper.find("input").val(t.sourceSelect.val()),t._updateControlText()},_updateControlText:function(){var e=this,t=this.sourceSelect,i=this.options,o=this.controlWrapper,n=t.find("option:first"),r=t.find("option"),s=e._formatText(r,i.firstItemChecksAll,n),a=o.find(".ui-dropdownchecklist-text");a.html(s),a.attr("title",a.text())},_formatText:function(t,i,o){var n;if(e.isFunction(this.options.textFormatFunction))try{n=this.options.textFormatFunction(t)}catch(e){alert("textFormatFunction failed: "+e)}else i&&null!=o&&o.prop("selected")?n=o.html():(n="",t.each(function(){if(e(this).prop("selected")){""!=n&&(n+=", ");var t=e(this).attr("style"),i=e("");i.html(e(this).html()),null==t?n+=i.html():(i.attr("style",t),n+=e("").append(i).html())}}),""==n&&(n=null!=this.options.emptyText?this.options.emptyText:" "));return n},_toggleDropContainer:function(t){var i=this,o=function(t){if(null!=t&&t.dropWrapper.isOpen){t.dropWrapper.isOpen=!1,e.ui.dropdownchecklist.gLastOpened=null;var i=t.options;t.dropWrapper.css({top:"-33000px",left:"-33000px"});var n=t.controlSelector;n.removeClass("ui-state-active"),n.removeClass("ui-state-hover");var r=t.controlWrapper.find(".ui-icon");if(r.length>0&&(r.removeClass(null!=i.icon.toClose?i.icon.toClose:"ui-icon-triangle-1-s"),r.addClass(null!=i.icon.toOpen?i.icon.toOpen:"ui-icon-triangle-1-e")),e(document).unbind("click",o),t.dropWrapper.find("input.active").prop("disabled",!0),e.isFunction(i.onComplete))try{i.onComplete.call(t,t.sourceSelect.get(0))}catch(e){alert("callback failed: "+e)}}};t?(o(e.ui.dropdownchecklist.gLastOpened),function(t){if(!t.dropWrapper.isOpen){t.dropWrapper.isOpen=!0,e.ui.dropdownchecklist.gLastOpened=t;var i=t.options;null==i.positionHow||"absolute"==i.positionHow?t.dropWrapper.css({position:"absolute",top:t.controlWrapper.position().top+t.controlWrapper.outerHeight()+"px",left:t.controlWrapper.position().left+"px"}):"relative"==i.positionHow&&t.dropWrapper.css({position:"relative",top:"0px",left:"0px"});var n=0;if(null==i.zIndex){var r=t.controlWrapper.parents().map(function(){var t=e(this).css("z-index");return isNaN(t)?0:t}).get(),s=Math.max.apply(Math,r);s>=0&&(n=s+1)}else n=parseInt(i.zIndex);n>0&&t.dropWrapper.css({"z-index":n});var a=t.controlSelector;a.addClass("ui-state-active"),a.removeClass("ui-state-hover");var l=t.controlWrapper.find(".ui-icon");l.length>0&&(l.removeClass(null!=i.icon.toOpen?i.icon.toOpen:"ui-icon-triangle-1-e"),l.addClass(null!=i.icon.toClose?i.icon.toClose:"ui-icon-triangle-1-s")),e(document).bind("click",function(e){o(t)});var p=t.dropWrapper.find("input.active");p.prop("disabled",!1);var c=p.get(0);null!=c&&c.focus()}}(i)):o(i)},_setSize:function(t){var i=this.options,o=this.dropWrapper,n=this.controlWrapper,r=t.width;if(null!=i.width)r=parseInt(i.width);else if(null!=i.minWidth){var s=parseInt(i.minWidth);r0&&t.height>d&&(u=d,c+=20),e(o).css({height:u+"px",width:c+"px"}),o.find(".ui-dropdownchecklist-dropcontainer").css({height:u+"px"})},_init:function(){var t=this,i=this.options;null==e.ui.dropdownchecklist.gIDCounter&&(e.ui.dropdownchecklist.gIDCounter=1),t.blurringItem=null;var o=t.element;t.initialDisplay=o.css("display"),o.css("display","none"),t.initialMultiple=o.prop("multiple"),t.isMultiple=t.initialMultiple,null!=i.forceMultiple&&(t.isMultiple=i.forceMultiple),o.prop("multiple",!0),t.sourceSelect=o;var n=t._appendControl();t.controlWrapper=n,t.controlSelector=n.find(".ui-dropdownchecklist-selector");var r=t._appendDropContainer(n);t.dropWrapper=r;var s=t._appendItems();t._updateControlText(n,r,o),t._setSize(s),i.firstItemChecksAll&&t._syncSelected(null),i.bgiframe&&"function"==typeof t.dropWrapper.bgiframe&&t.dropWrapper.bgiframe(),t.sourceSelect.change(function(e,i){"ddcl_internal"!=i&&t._sourceSelectChangeHandler(e)})},_refreshOption:function(e,t,i){var o=e.parent();t?(e.prop("disabled",!0),e.removeClass("active"),e.addClass("inactive"),o.addClass("ui-state-disabled")):(e.prop("disabled",!1),e.removeClass("inactive"),e.addClass("active"),o.removeClass("ui-state-disabled")),e.prop("checked",i)},_refreshGroup:function(e,t){t?e.addClass("ui-state-disabled"):e.removeClass("ui-state-disabled")},close:function(){this._toggleDropContainer(!1)},refresh:function(){var t=this,i=this.sourceSelect,o=this.dropWrapper,n=o.find("input"),r=o.find(".ui-dropdownchecklist-group"),s=0,a=0;i.children().each(function(i){var o=e(this),l=o.prop("disabled");if(o.is("option")){var p=o.prop("selected"),c=e(n[a]);t._refreshOption(c,l,p),a+=1}else if(o.is("optgroup")){if(""!=o.attr("label")){var d=e(r[s]);t._refreshGroup(d,l),s+=1}o.children("option").each(function(){var i=e(this),o=l||i.prop("disabled"),r=i.prop("selected"),s=e(n[a]);t._refreshOption(s,o,r),a+=1})}}),t._syncSelected(null)},enable:function(){this.controlSelector.removeClass("ui-state-disabled"),this.disabled=!1},disable:function(){this.controlSelector.addClass("ui-state-disabled"),this.disabled=!0},destroy:function(){e.Widget.prototype.destroy.apply(this,arguments),this.sourceSelect.css("display",this.initialDisplay),this.sourceSelect.prop("multiple",this.initialMultiple),this.controlWrapper.unbind().remove(),this.dropWrapper.remove()}}),e.extend(e.ui.dropdownchecklist,{defaults:{width:null,maxDropHeight:null,firstItemChecksAll:!1,closeRadioOnClick:!1,minWidth:50,positionHow:"absolute",bgiframe:!1,explicitClose:null}})}(jQuery);
/* Shadowbox.js v3.0.3 */
(function(au,k){var Q={version:"3.0.3"};var J=navigator.userAgent.toLowerCase();if(J.indexOf("windows")>-1||J.indexOf("win32")>-1){Q.isWindows=true}else{if(J.indexOf("macintosh")>-1||J.indexOf("mac os x")>-1){Q.isMac=true}else{if(J.indexOf("linux")>-1){Q.isLinux=true}}}Q.isIE=J.indexOf("msie")>-1;Q.isIE6=J.indexOf("msie 6")>-1;Q.isIE7=J.indexOf("msie 7")>-1;Q.isGecko=J.indexOf("gecko")>-1&&J.indexOf("safari")==-1;Q.isWebKit=J.indexOf("applewebkit/")>-1;var ab=/#(.+)$/,af=/^(light|shadow)box\[(.*?)\]/i,az=/\s*([a-z_]*?)\s*=\s*(.+)\s*/,f=/[0-9a-z]+$/i,aD=/(.+\/)shadowbox\.js/i;var A=false,a=false,l={},z=0,R,ap;Q.current=-1;Q.dimensions=null;Q.ease=function(K){return 1+Math.pow(K-1,3)};Q.errorInfo={fla:{name:"Flash",url:"http://www.adobe.com/products/flashplayer/"},qt:{name:"QuickTime",url:"http://www.apple.com/quicktime/download/"},wmp:{name:"Windows Media Player",url:"http://www.microsoft.com/windows/windowsmedia/"},f4m:{name:"Flip4Mac",url:"http://www.flip4mac.com/wmv_download.htm"}};Q.gallery=[];Q.onReady=aj;Q.path=null;Q.player=null;Q.playerId="sb-player";Q.options={animate:true,animateFade:true,autoplayMovies:true,continuous:false,enableKeys:true,flashParams:{bgcolor:"#000000",allowfullscreen:true},flashVars:{},flashVersion:"9.0.115",handleOversize:"resize",handleUnsupported:"link",onChange:aj,onClose:aj,onFinish:aj,onOpen:aj,showMovieControls:true,skipSetup:false,slideshowDelay:0,viewportPadding:20};Q.getCurrent=function(){return Q.current>-1?Q.gallery[Q.current]:null};Q.hasNext=function(){return Q.gallery.length>1&&(Q.current!=Q.gallery.length-1||Q.options.continuous)};Q.isOpen=function(){return A};Q.isPaused=function(){return ap=="pause"};Q.applyOptions=function(K){l=aC({},Q.options);aC(Q.options,K)};Q.revertOptions=function(){aC(Q.options,l)};Q.init=function(aG,aJ){if(a){return}a=true;if(Q.skin.options){aC(Q.options,Q.skin.options)}if(aG){aC(Q.options,aG)}if(!Q.path){var aI,S=document.getElementsByTagName("script");for(var aH=0,K=S.length;aHaQ){aS=aQ-aM}var aG=2*aO+K;if(aJ+aG>aR){aJ=aR-aG}var S=(aN-aS)/aN,aP=(aH-aJ)/aH,aK=(S>0||aP>0);if(aL&&aK){if(S>aP){aJ=Math.round((aH/aN)*aS)}else{if(aP>S){aS=Math.round((aN/aH)*aJ)}}}Q.dimensions={height:aS+aI,width:aJ+K,innerHeight:aS,innerWidth:aJ,top:Math.floor((aQ-(aS+aM))/2+aO),left:Math.floor((aR-(aJ+aG))/2+aO),oversized:aK};return Q.dimensions};Q.makeGallery=function(aI){var K=[],aH=-1;if(typeof aI=="string"){aI=[aI]}if(typeof aI.length=="number"){aF(aI,function(aK,aL){if(aL.content){K[aK]=aL}else{K[aK]={content:aL}}});aH=0}else{if(aI.tagName){var S=Q.getCache(aI);aI=S?S:Q.makeObject(aI)}if(aI.gallery){K=[];var aJ;for(var aG in Q.cache){aJ=Q.cache[aG];if(aJ.gallery&&aJ.gallery==aI.gallery){if(aH==-1&&aJ.content==aI.content){aH=K.length}K.push(aJ)}}if(aH==-1){K.unshift(aI);aH=0}}else{K=[aI];aH=0}}aF(K,function(aK,aL){K[aK]=aC({},aL)});return[K,aH]};Q.makeObject=function(aH,aG){var aI={content:aH.href,title:aH.getAttribute("title")||"",link:aH};if(aG){aG=aC({},aG);aF(["player","title","height","width","gallery"],function(aJ,aK){if(typeof aG[aK]!="undefined"){aI[aK]=aG[aK];delete aG[aK]}});aI.options=aG}else{aI.options={}}if(!aI.player){aI.player=Q.getPlayer(aI.content)}var K=aH.getAttribute("rel");if(K){var S=K.match(af);if(S){aI.gallery=escape(S[2])}aF(K.split(";"),function(aJ,aK){S=aK.match(az);if(S){aI[S[1]]=S[2]}})}return aI};Q.getPlayer=function(aG){if(aG.indexOf("#")>-1&&aG.indexOf(document.location.href)==0){return"inline"}var aH=aG.indexOf("?");if(aH>-1){aG=aG.substring(0,aH)}var S,K=aG.match(f);if(K){S=K[0].toLowerCase()}if(S){if(Q.img&&Q.img.ext.indexOf(S)>-1){return"img"}if(Q.swf&&Q.swf.ext.indexOf(S)>-1){return"swf"}if(Q.flv&&Q.flv.ext.indexOf(S)>-1){return"flv"}if(Q.qt&&Q.qt.ext.indexOf(S)>-1){if(Q.wmp&&Q.wmp.ext.indexOf(S)>-1){return"qtwmp"}else{return"qt"}}if(Q.wmp&&Q.wmp.ext.indexOf(S)>-1){return"wmp"}}return"iframe"};function G(){var aH=Q.errorInfo,aI=Q.plugins,aK,aL,aO,aG,aN,S,aM,K;for(var aJ=0;aJ'+s(Q.lang.errors[aN],S)+""}else{aL=true}}else{if(aK.player=="inline"){aG=ab.exec(aK.content);if(aG){aM=ad(aG[1]);if(aM){aK.content=aM.innerHTML}else{aL=true}}else{aL=true}}else{if(aK.player=="swf"||aK.player=="flv"){K=(aK.options&&aK.options.flashVersion)||Q.options.flashVersion;if(Q.flash&&!Q.flash.hasFlashPlayerVersion(K)){aK.width=310;aK.height=177}}}}if(aL){Q.gallery.splice(aJ,1);if(aJ
0?aJ-1:aJ}}--aJ}}}function aq(K){if(!Q.options.enableKeys){return}(K?F:M)(document,"keydown",an)}function an(aG){if(aG.metaKey||aG.shiftKey||aG.altKey||aG.ctrlKey){return}var S=v(aG),K;switch(S){case 81:case 88:case 27:K=Q.close;break;case 37:K=Q.previous;break;case 39:K=Q.next;break;case 32:K=typeof ap=="number"?Q.pause:Q.play;break}if(K){n(aG);K()}}function c(aK){aq(false);var aJ=Q.getCurrent();var aG=(aJ.player=="inline"?"html":aJ.player);if(typeof Q[aG]!="function"){throw"unknown player "+aG}if(aK){Q.player.remove();Q.revertOptions();Q.applyOptions(aJ.options||{})}Q.player=new Q[aG](aJ,Q.playerId);if(Q.gallery.length>1){var aH=Q.gallery[Q.current+1]||Q.gallery[0];if(aH.player=="img"){var S=new Image();S.src=aH.content}var aI=Q.gallery[Q.current-1]||Q.gallery[Q.gallery.length-1];if(aI.player=="img"){var K=new Image();K.src=aI.content}}Q.skin.onLoad(aK,W)}function W(){if(!A){return}if(typeof Q.player.ready!="undefined"){var K=setInterval(function(){if(A){if(Q.player.ready){clearInterval(K);K=null;Q.skin.onReady(e)}}else{clearInterval(K);K=null}},10)}else{Q.skin.onReady(e)}}function e(){if(!A){return}Q.player.append(Q.skin.body,Q.dimensions);Q.skin.onShow(I)}function I(){if(!A){return}if(Q.player.onLoad){Q.player.onLoad()}Q.options.onFinish(Q.getCurrent());if(!Q.isPaused()){Q.play()}aq(true)}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(S,aG){var K=this.length>>>0;aG=aG||0;if(aG<0){aG+=K}for(;aG-1;Q.plugins={fla:w.indexOf("Shockwave Flash")>-1,qt:w.indexOf("QuickTime")>-1,wmp:!ai&&w.indexOf("Windows Media")>-1,f4m:ai}}else{var p=function(K){var S;try{S=new ActiveXObject(K)}catch(aG){}return !!S};Q.plugins={fla:p("ShockwaveFlash.ShockwaveFlash"),qt:p("QuickTime.QuickTime"),wmp:p("wmplayer.ocx"),f4m:false}}var X=/^(light|shadow)box/i,am="shadowboxCacheKey",b=1;Q.cache={};Q.select=function(S){var aG=[];if(!S){var K;aF(document.getElementsByTagName("a"),function(aJ,aK){K=aK.getAttribute("rel");if(K&&X.test(K)){aG.push(aK)}})}else{var aI=S.length;if(aI){if(typeof S=="string"){if(Q.find){aG=Q.find(S)}}else{if(aI==2&&typeof S[0]=="string"&&S[1].nodeType){if(Q.find){aG=Q.find(S[0],S[1])}}else{for(var aH=0;aH/dev/null|sed '/-part/d;s|^.*/by-id/[^-]*-||;s|-> ../../||;s|:|-|'", $devices);
foreach ($devices as $device) {
- list($name,$dev) = explode(' ',$device);
- $type = '';
- $diskName = '';
+ list($name,$port) = explode(' ',$device);
+ $diskName = ''; $type = '';
foreach ($disks as $find) {
- if ($find['device']==$dev) {
+ if ($find['device']==$port) {
$diskName = $find['name'];
- $type = isset($find['smType']) ? $find['smType'] : -1;
- if ($type==-1) $type = isset($var['smType']) ? $var['smType'] : '';
- if ($type) {
- $ports = [];
- if (isset($find['smDevice']) && strlen($find['smDevice'])) $port = $find['smDevice'];
- if (isset($find['smPort1']) && strlen($find['smPort1'])) $ports[] = $find['smPort1'];
- if (isset($find['smPort2']) && strlen($find['smPort2'])) $ports[] = $find['smPort2'];
- if (isset($find['smPort3']) && strlen($find['smPort3'])) $ports[] = $find['smPort3'];
- if ($ports) {
- $glue = isset($find['smGlue']) ? $find['smGlue'] : ',';
- $type .= ','.implode($glue,$ports);
- }
- }
+ $type = get_value($find,'smType','');
+ get_ctlr_options($type, $find);
+ $port = $find['smDevice'] ?? $port;
break;
}
}
- exec("smartctl -a $type ".escapeshellarg("/dev/$dev")." 2>/dev/null|todos >".escapeshellarg("/$diag/smart/$name-$date $diskName ($dev).txt"));
+ $port = port_name($port);
+ exec("smartctl -a $type ".escapeshellarg("/dev/$port")." 2>/dev/null|todos >".escapeshellarg("/$diag/smart/$name-$date $diskName ($port).txt"));
}
// create cache pool information
if (is_dir('/mnt/cache') && strpos($disks['cache']['fsType'],'btrfs')) {
diff --git a/plugins/dynamix/scripts/monitor b/plugins/dynamix/scripts/monitor
index a6c32a127..74538402c 100755
--- a/plugins/dynamix/scripts/monitor
+++ b/plugins/dynamix/scripts/monitor
@@ -16,7 +16,7 @@ $var = parse_ini_file("/var/local/emhttp/var.ini");
$devs = parse_ini_file("/var/local/emhttp/devs.ini",true);
$disks = parse_ini_file("/var/local/emhttp/disks.ini",true);
-$docroot = $docroot ?: @$_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+$docroot = $docroot ?: $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/webGui/include/Preselect.php";
require_once "$docroot/webGui/include/CustomMerge.php";
@@ -37,27 +37,31 @@ function plus($val,$word,$last) {
function my_temp($value) {
global $unraid;
$unit = $unraid['display']['unit'];
- return ($unit=='F' ? round(9/5*$value+32) : str_replace('.', $unraid['display']['number'][0], $value))." $unit";
+ return ($unit=='F' ? round(9/5*$value+32) : $value)." $unit";
}
function my_disk($name) {
- return ucfirst(preg_replace('/^(disk|cache)([0-9]+)/','$1 $2',$name));
+ return ucfirst(preg_replace('/^(disk|cache|parity)(\d+)/','$1 $2',$name));
}
-function my_scale($value,&$unit,$precision=NULL) {
+function my_scale($value, &$unit, $decimals=NULL, $scale=NULL) {
global $unraid;
- $scale = $unraid['display']['scale'];
+ $scale = $scale ?? $unraid['display']['scale'];
$number = $unraid['display']['number'];
- $units = ['B','KB','MB','GB','TB','PB'];
- if ($scale==0 && $precision===NULL) {
+ $units = ['B','KB','MB','GB','TB','PB','EB','ZB','YB'];
+ $size = count($units);
+ if ($scale==0 && ($decimals===NULL || $decimals<0)) {
+ $decimals = 0;
$unit = '';
- return number_format($value, 0, $number[0], ($value>=10000 ? $number[1] : ''));
} else {
$base = $value ? floor(log($value, 1000)) : 0;
if ($scale>0 && $base>$scale) $base = $scale;
- $value = round($value/pow(1000, $base), $precision===NULL ? 2 : $precision);
- if ($value>=1000 && $scale<0) { $value = 1; $base++; }
+ if ($base>$size) $base = $size-1;
+ $value /= pow(1000, $base);
+ if ($decimals===NULL) $decimals = $value>=100 ? 0 : ($value>=10 ? 1 : (round($value*100)%100===0 ? 0 : 2));
+ elseif ($decimals<0) $decimals = $value>=100||round($value*10)%10===0 ? 0 : abs($decimals);
+ if ($scale<0 && round($value,-1)==1000) {$value = 1; $base++;}
$unit = $units[$base];
- return number_format($value, $precision===NULL ? (($value-intval($value)==0 || $value>=100) ? 0 : ($value>=10 ? 1 : 2)) : $precision, $number[0], ($value>=10000 ? $number[1] : ''));
}
+ return number_format($value, $decimals, $number[0], $value>=10000 ? $number[1] : '');
}
function my_check($time,$speed) {
if (!$time) return 'unavailable (no parity-check entries logged)';
@@ -92,7 +96,7 @@ function check_temp($name,$temp,$text,$info) {
$max = $disk['maxTemp'] ?? $unraid['display']['max'];
$warn = $temp>=$max && $max>0 ? 'alert' : ($temp>=$hot && $hot>0 ? 'warning' : '');
$item = 'temp';
- $last = isset($saved[$item][$name]) ? $saved[$item][$name] : 0;
+ $last = $saved[$item][$name] ?? 0;
if ($warn) {
if ($temp>$last) {
exec("$notify -e ".escapeshellarg("unRAID $text temperature")." -s ".escapeshellarg(ucfirst($warn)." [$server] - $text ".($warn=='alert'?'overheated (':'is hot (').my_temp($temp).")")." -d ".escapeshellarg("$info")." -i \"$warn\"");
@@ -107,27 +111,17 @@ function check_temp($name,$temp,$text,$info) {
}
function check_smart($name,$port,$text,$info) {
global $var,$disks,$notify,$saved,$server,$numbers;
- $disk = &$disks[$name];
- $select = $disk['smSelect'] ?? -1; if ($select==-1) $select = $var['smSelect'] ?? 0;
- $level = $disk['smLevel'] ?? -1; if ($level==-1) $level = $var['smLevel'] ?? 1;
- $events = explode('|',$disk['smEvents'] ?? $var['smEvents'] ?? $numbers);
- $type = $disk['smType'] ?? -1; if ($type==-1) $type = $var['smType'] ?? '';
- if ($type) {
- $ports = [];
- if (!empty($disk['smDevice'])) $port = $disk['smDevice'];
- if (!empty($disk['smPort1'])) $ports[] = $disk['smPort1'];
- if (!empty($disk['smPort2'])) $ports[] = $disk['smPort2'];
- if (!empty($disk['smPort3'])) $ports[] = $disk['smPort3'];
- if ($ports) {
- $glue = isset($disk['smGlue']) ? $disk['smGlue'] : ',';
- $type .= ','.implode($glue,$ports);
- }
- }
+ $disk = &$disks[$name];
+ $select = get_value($disk,'smSelect',0);
+ $level = get_value($disk,'smLevel',1);
+ $events = explode('|',get_value($disk,'smEvents',$numbers));
+ $type = get_value($disk,'smType','');
+ get_ctlr_options($type, $disk);
$file = "/var/local/emhttp/smart/$name";
exec("awk 'NR>7{print $1,$2,$4,$6,$9,$10}' ".escapeshellarg($file)." 2>/dev/null", $codes);
$item = 'smart';
foreach ($codes as $code) {
- if (!$code) continue;
+ if (!$code || !is_numeric($code[0])) continue;
list($id,$class,$value,$thres,$when,$raw) = explode(' ',$code);
$fail = strpos($when,'FAILING_NOW')!==false;
if (!$fail && !in_array($id,$events)) continue;
@@ -136,7 +130,7 @@ function check_smart($name,$port,$text,$info) {
switch ($select) {
case 0:
$attr = "$name.$id";
- $last = isset($saved[$item][$attr]) ? $saved[$item][$attr]*$level : 0;
+ $last = ($saved[$item][$attr] ?? 0)*$level;
if ($raw>0 || $fail) {
if ($raw>$last) {
exec("$notify -e ".escapeshellarg("unRAID $text SMART health [$id]")." -s ".escapeshellarg("Warning [$server] - $word is $raw")." -d ".escapeshellarg("$info")." -i \"warning\"");
@@ -153,7 +147,7 @@ function check_smart($name,$port,$text,$info) {
break;
case 1:
$attr = "$name.${id}n";
- $last = isset($saved[$item][$attr]) ? $saved[$item][$attr] : 255;
+ $last = $saved[$item][$attr] ?? 255;
if (($thres>0 && $value<=$thres*$level) || $fail) {
if ($value*($value>$thres?$level:1)<$last) {
exec("$notify -e ".escapeshellarg("unRAID $text SMART health [$id]")." -s ".escapeshellarg("Warning [$server] - $word is $value")." -d ".escapeshellarg("$info")." -i \"warning\"");
@@ -171,7 +165,7 @@ function check_smart($name,$port,$text,$info) {
}
}
$file .= '.ssa';
- if (!file_exists($file) || (time()-filemtime($file)>=$var['poll_attributes'])) exec("smartctl -n standby -H ".escapeshellarg($type)." ".escapeshellarg("/dev/$port")."|grep -Pom1 '^SMART.*: \K[A-Z]+'|tr -d '\n' > ".escapeshellarg($file));
+ if (!file_exists($file) || (time()-filemtime($file)>$var['poll_attributes'])) exec("smartctl -H $type ".escapeshellarg("/dev/$port")."|grep -Pom1 '^SMART.*: \K[A-Z]+'|tr -d '\n' >".escapeshellarg($file));
}
function check_usage($name,$used,$text,$info) {
global $notify,$disks,$saved,$unraid,$server;
@@ -181,7 +175,7 @@ function check_usage($name,$used,$text,$info) {
$critical = $disk['critical'] ?? $unraid['display']['critical'];
$warn = $used>=$critical && $critical>0 ? 'alert' : ($used>=$warning && $warning>0 ? 'warning' : '');
$item = 'used';
- $last = isset($saved[$item][$name]) ? $saved[$item][$name] : 0;
+ $last = $saved[$item][$name] ?? 0;
if ($warn) {
if ($used>$last) {
exec("$notify -e ".escapeshellarg("unRAID $text disk utilization")." -s ".escapeshellarg(ucfirst($warn)." [$server] - $text is ".($warn=='alert'?'low on space':'high on usage')." (${used}%)")." -d ".escapeshellarg("$info")." -i \"$warn\"");
@@ -204,13 +198,13 @@ foreach ($disks as $disk) {
// process disk temperature notifications
check_temp($name,$disk['temp'],$text,$info);
// process disk SMART notifications
- check_smart($name,$disk['device'],$text,$info);
+ check_smart($name,port_name($disk['smDevice'] ?? $disk['device']),$text,$info);
// process disk usage notifications
check_usage($name,($disk['fsSize']?100-round(100*$disk['fsFree']/$disk['fsSize']):-1),$text,$info);
// process disk operation notifications
$warn = strtok($disk['color'],'-');
$item = 'disk';
- $last = isset($saved[$item][$name]) ? $saved[$item][$name] : "";
+ $last = $saved[$item][$name] ?? '';
switch ($warn) {
case 'red':
if ($warn!=$last) {
@@ -257,22 +251,23 @@ foreach ($disks as $disk) {
// check unassigned devices
foreach ($devs as $dev) {
$name = $dev['device'];
- if (empty($name)) continue;
$smart = "/var/local/emhttp/smart/$name";
- if (!file_exists($smart) || (time()-filectime($smart)>=$var['poll_attributes'])) exec("smartctl -n standby -A ".escapeshellarg("/dev/$name")." > ".escapeshellarg($smart));
- $temp = exec("awk '\$1==190||\$1==194{print \$10;exit}' ".escapeshellarg($smart));
+ $type = $var['smType'] ?? '';
+ $port = port_name($name);
+ if (!file_exists($smart) || (time()-filectime($smart)>$var['poll_attributes'])) exec("smartctl -A $type ".escapeshellarg("/dev/$port")." >".escapeshellarg($smart));
+ $temp = exec("awk 'BEGIN{t=\"*\"} \$1==190||\$1==194{t=\$10;exit};\$1==\"Temperature:\"{t=\$2;exit} END{print t}' ".escapeshellarg($smart)." 2>/dev/null");
$text = "device $name";
$info = !empty($dev['id']) ? "{$dev['id']} ($name)": "No device identification ($name)";
// process disk temperature notifications
check_temp($name,$temp,$text,$info);
// process disk SMART notifications
- check_smart($name,$dev['device'],$text,$info);
+ check_smart($name,$port,$text,$info);
}
// report array read errors
$item = 'array';
$name = 'errors';
-$last = isset($saved[$item][$name]) ? $saved[$item][$name] : 0;
+$last = $saved[$item][$name] ?? 0;
$warn = count($errors);
$info = "Array has $warn disk".($warn==1 ? "" : "s")." with read errors";
if ($warn>0) {
@@ -290,7 +285,7 @@ if ($warn>0) {
// process parity check, parity sync and data-rebuild notifications
$name = 'parity';
-$last = isset($saved[$item][$name]) ? $saved[$item][$name] : '';
+$last = $saved[$item][$name] ?? '';
if ($var['mdResync']>0) {
if (!$last) {
if (strstr($var['mdResyncAction'],"recon")) {
@@ -321,7 +316,7 @@ if ($var['mdResync']>0) {
// check read-write status of USB flash drive
$name = 'flash';
-$last = isset($saved[$item][$name]) ? $saved[$item][$name] : '';
+$last = $saved[$item][$name] ?? '';
$warn = exec("grep -Pom1 '/boot \S+ \K\S{2}' /proc/mounts");
$info = "{$disks['flash']['id']} ({$disks['flash']['device']})";
if ($warn!="rw") {
@@ -341,7 +336,7 @@ system('mountpoint -q /var/lib/docker', $retval);
if ($retval===0) {
$item = 'system';
$name = 'docker';
- $last = isset($saved[$item][$name]) ? $saved[$item][$name] : '';
+ $last = $saved[$item][$name] ?? '';
if (file_exists("/boot/config/docker.cfg")) {
$cfg = parse_ini_file("/boot/config/docker.cfg");
$info = "Docker utilization of image file {$cfg['DOCKER_IMAGE_FILE']}";
diff --git a/plugins/dynamix/styles/default-azure.css b/plugins/dynamix/styles/default-azure.css
index 9b00edad8..453a8f8ec 100644
--- a/plugins/dynamix/styles/default-azure.css
+++ b/plugins/dynamix/styles/default-azure.css
@@ -9,9 +9,9 @@ a:hover{text-decoration:underline}
a{color:#486DBA;text-decoration:none}
a.none{color:#606E7F}
a.img{text-decoration:none;border:none}
-a.info{position:relative;z-index:1}
-a.info span{display:none}
-a.info:hover span{display:block;white-space:nowrap;font-variant:small-caps;position:absolute;left:8px;color:#4F4F4F;font-size:13px;line-height:20px;padding:5px 8px;border:1px solid #42453E;border-radius:3px;background-color:#EDEAEF}
+a.info{position:relative}
+a.info span{display:none;white-space:nowrap;font-variant:small-caps;position:absolute;top:16px;left:12px;color:#4F4F4F;font-size:13px;line-height:20px;padding:5px 8px;border:1px solid #42453E;border-radius:3px;background-color:#EDEAEF}
+a.info:hover span{display:block;z-index:1}
a.nohand{cursor:default}
i.spacing{margin-left:0;margin-right:10px}
i.icon{margin-right:4px}
@@ -223,7 +223,9 @@ span.three{margin-left:-20px}
span.tub{margin-right:8px;font-size:24px;cursor:pointer}
span.score{font-size:11px;color:#FFFFFF;position:absolute}
span#dropbox{background:none;line-height:60px;margin-right:20px}
-i.padlock{margin-left:8px;cursor:help}
+i.padlock{margin-right:8px;cursor:default}
+i.nolock{visibility:hidden;margin-right:8px}
+i.lock{margin-left:8px;cursor:default}
img.icon{margin:-3px 4px 0 0}
img.list{width:auto;max-width:48px;height:48px}
div.content{position:absolute;top:0;left:0;width:100%;padding-bottom:30px;z-index:-1;clear:both}
diff --git a/plugins/dynamix/styles/default-black.css b/plugins/dynamix/styles/default-black.css
index 8abd07e56..ffb3a7c9d 100644
--- a/plugins/dynamix/styles/default-black.css
+++ b/plugins/dynamix/styles/default-black.css
@@ -9,10 +9,9 @@ a:hover{text-decoration:underline}
a{color:#486DBA;text-decoration:none}
a.none{color:#808080}
a.img{text-decoration:none;border:none}
-a.info{position:relative;z-index:1}
-a.info span{display:none}
-a.info:hover span{display:block;white-space:nowrap;font-variant:small-caps;position:absolute;left:8px;font-size:11px;line-height:20px;color:#FFFFFF;padding:5px 8px;border:1px solid rgba(255,255,255,0.25);border-radius:3px;background-color:rgba(25,25,25,0.95);box-shadow:0 0 3px #505050}
-a.info:hover span.left{left:-182px}
+a.info{position:relative}
+a.info span{display:none;white-space:nowrap;font-variant:small-caps;position:absolute;top:16px;left:12px;font-size:12px;line-height:20px;color:#FFFFFF;padding:5px 8px;border:1px solid rgba(255,255,255,0.25);border-radius:3px;background-color:rgba(25,25,25,0.95);box-shadow:0 0 3px #505050}
+a.info:hover span{display:block;z-index:1}
a.nohand{cursor:default}
i.spacing{margin-left:-6px}
i.icon{margin-right:4px}
@@ -201,7 +200,9 @@ span.two{margin-left:-17px}
span.three{margin-left:-20px}
span.tub{margin-right:8px;font-size:24px;cursor:pointer}
span.score{font-size:11px;color:#F0F0F0;position:absolute}
-i.padlock{margin-left:8px;cursor:help}
+i.padlock{margin-right:8px;cursor:default}
+i.nolock{visibility:hidden;margin-right:8px}
+i.lock{margin-left:8px;cursor:default}
img.icon{margin:-3px 4px 0 0}
img.list{width:auto;max-width:48px;height:48px}
div.content{position:absolute;top:45px;left:0;width:100%;padding-bottom:30px;z-index:-1;clear:both}
diff --git a/plugins/dynamix/styles/default-gray.css b/plugins/dynamix/styles/default-gray.css
index 2480e654d..2bcfb7102 100644
--- a/plugins/dynamix/styles/default-gray.css
+++ b/plugins/dynamix/styles/default-gray.css
@@ -9,9 +9,9 @@ a:hover{text-decoration:underline}
a{color:#486DBA;text-decoration:none}
a.none{color:#606E7F}
a.img{text-decoration:none;border:none}
-a.info{position:relative;z-index:1}
-a.info span{display:none}
-a.info:hover span{display:block;white-space:nowrap;font-variant:small-caps;position:absolute;left:8px;color:#B0B0B0;font-size:13px;line-height:20px;padding:5px 8px;border:1px solid #42453E;border-radius:3px;background-color:#121510}
+a.info{position:relative}
+a.info span{display:none;white-space:nowrap;font-variant:small-caps;position:absolute;top:16px;left:10px;color:#B0B0B0;font-size:13px;line-height:20px;padding:5px 8px;border:1px solid #42453E;border-radius:3px;background-color:#121510}
+a.info:hover span{display:block;z-index:1}
a.nohand{cursor:default}
i.spacing{margin-left:0;margin-right:10px}
i.icon{margin-right:4px}
@@ -223,7 +223,9 @@ span.three{margin-left:-20px}
span.tub{margin-right:8px;font-size:24px;cursor:pointer}
span.score{font-size:11px;color:#FFFFFF;position:absolute}
span#dropbox{background:none;line-height:60px;margin-right:20px}
-i.padlock{margin-left:8px;cursor:help}
+i.padlock{margin-right:8px;cursor:default}
+i.nolock{visibility:hidden;margin-right:8px}
+i.lock{margin-left:8px;cursor:default}
img.icon{margin:-3px 4px 0 0}
img.list{width:auto;max-width:48px;height:48px}
div.content{position:absolute;top:0;left:0;width:100%;padding-bottom:30px;z-index:-1;clear:both}
diff --git a/plugins/dynamix/styles/default-white.css b/plugins/dynamix/styles/default-white.css
index bead8717d..e99471c32 100644
--- a/plugins/dynamix/styles/default-white.css
+++ b/plugins/dynamix/styles/default-white.css
@@ -9,10 +9,9 @@ a:hover{text-decoration:underline}
a{color:#00529B;text-decoration:none}
a.none{color:#303030}
a.img{text-decoration:none;border:none}
-a.info{position:relative;z-index:1}
-a.info span{display:none}
-a.info:hover span{display:block;white-space:nowrap;font-variant:small-caps;position:absolute;left:8px;font-size:11px;line-height:20px;color:#FFFFFF;padding:5px 8px;border:1px solid rgba(255,255,255,0.25);border-radius:3px;background-color:rgba(25,25,25,0.95);box-shadow:0 0 3px #303030}
-a.info:hover span.left{left:-182px}
+a.info{position:relative}
+a.info span{display:none;white-space:nowrap;font-variant:small-caps;position:absolute;top:16px;left:12px;font-size:12px;line-height:20px;color:#FFFFFF;padding:5px 8px;border:1px solid rgba(255,255,255,0.25);border-radius:3px;background-color:rgba(25,25,25,0.95);box-shadow:0 0 3px #303030}
+a.info:hover span{display:block;z-index:1}
a.nohand{cursor:default}
i.spacing{margin-left:-6px}
i.icon{margin-right:4px}
@@ -201,7 +200,9 @@ span.two{margin-left:-17px}
span.three{margin-left:-20px}
span.tub{margin-right:8px;font-size:24px;cursor:pointer}
span.score{font-size:11px;color:#F0F0F0;position:absolute}
-i.padlock{margin-left:8px;cursor:help}
+i.padlock{margin-right:8px;cursor:default}
+i.nolock{visibility:hidden;margin-right:8px}
+i.lock{margin-left:8px;cursor:default}
img.icon{margin:-3px 4px 0 0}
img.list{width:auto;max-width:48px;height:48px}
div.content{position:absolute;top:45px;left:0;width:100%;padding-bottom:30px;z-index:-1;clear:both}