function isNumeric(n){return!isNaN(parseFloat(n))&&isFinite(n)}function defaultComparison(n,t){return isNumeric(n)&&isNumeric(t)?n-t:(n=n.toString(),t=t.toString(),n==t?0:n<t?-1:1)}(function(){function n(n,t,i){var r=new ko.observable(n);this.value=new ko.observable(t);this.key=new ko.computed({read:r,write:function(n){var t=r();t!=n&&(i.remove(n),r(n))}})}function t(n,t){var i=ko.utils.arrayFirst(t,function(t){return t.key()==n});return i?i.value:null}ko.observableDictionary=function(n,t,i){var r={};return r.items=new ko.observableArray,r._wrappers={},r._keySelector=t||function(n,t){return t},r._valueSelector=i||function(n){return n},typeof t=="string"&&(r._keySelector=function(n){return n[t]}),typeof i=="string"&&(r._valueSelector=function(n){return n[i]}),ko.utils.extend(r,ko.observableDictionary.fn),r.pushAll(n),r};ko.observableDictionary.fn={remove:function(t){var i=t;t instanceof n?i=function(n){return n.key()===t.key()}:typeof t!="function"&&(i=function(n){return n.key()===t});ko.observableArray.fn.remove.call(this.items,i)},push:function(t,i){var r=null,u;return(t instanceof n&&(r=t,i=t.value(),t=t.key()),i===undefined?(i=this._valueSelector(t),t=this._keySelector(i)):i=this._valueSelector(i),u=this.get(t,!1),u)?(u(i),u):(r||(r=new n(t,i,this)),ko.observableArray.fn.push.call(this.items,r),i)},pushAll:function(t){var i=this,u=i.items(),r;if(t instanceof Array)$.each(t,function(t,r){var f=i._keySelector(r,t),e=i._valueSelector(r);u.push(new n(f,e,i))});else for(r in t)if(t.hasOwnProperty(r)){var f=t[r],e=i._keySelector(f,r),o=i._valueSelector(f);u.push(new n(e,o,i))}i.items.valueHasMutated()},sort:function(n){return n===undefined&&(n=function(n,t){return defaultComparison(n.key(),t.key())}),ko.observableArray.fn.sort.call(this.items,n)},indexOf:function(t){var r,i;if(t instanceof n)return ko.observableArray.fn.indexOf.call(this.items,t);for(r=this.items(),i=0;i<r.length;i++)if(r[i].key()==t)return i;return-1},get:function(n,i){if(i==!1)return t(n,this.items());var r=this._wrappers[n];return r==null&&(r=this._wrappers[n]=new ko.computed({read:function(){var i=t(n,this.items());return i?i():null},write:function(i){var r=t(n,this.items());r?r(i):this.push(n,i)}},this)),r},set:function(n,t){return this.push(n,t)},keys:function(){return ko.utils.arrayMap(this.items(),function(n){return n.key()})},values:function(){return ko.utils.arrayMap(this.items(),function(n){return n.value()})},toJSON:function(){var n={},t=ko.utils.unwrapObservable(this.items);return ko.utils.arrayForEach(t,function(t){var i=ko.utils.unwrapObservable(t.key),r=ko.utils.unwrapObservable(t.value);n[i]=r}),n}}})();ko.bindingHandlers.fadeVisible={init:function(n,t){var i=t();$(n).toggle(ko.utils.unwrapObservable(i))},update:function(n,t){var i=t();ko.utils.unwrapObservable(i)?$(n).fadeIn(200):$(n).fadeOut(200)}};ko.bindingHandlers.fadeInvisible={init:function(n,t){var i=t();$(n).toggle(ko.utils.unwrapObservable(i))},update:function(n,t){var i=t();ko.utils.unwrapObservable(i)?$(n).fadeOut(200):$(n).fadeIn(200)}};ko.bindingHandlers.slideVisible={init:function(n,t){var i=ko.utils.unwrapObservable(t()),r;if(i==="show"){$(n).hide();return}if(i==="hide"){$(n).show();return}r=$(n).is(":visible");i!==r&&(i?$(n).show():$(n).hide())},update:function(n,t){var i=ko.utils.unwrapObservable(t()),r=$(n).is(":visible");i!==r&&(i?$(n).slideDown(200):$(n).slideUp(200))}};ko.bindingHandlers.slideInvisible={init:function(n,t){var i=t();$(n).toggle(ko.utils.unwrapObservable(i))},update:function(n,t){var i=t();ko.utils.unwrapObservable(i)?$(n).hide():$(n).slideDown(200)}};ko.bindingHandlers.dontBind={init:function(){return{controlsDescendantBindings:!0}}};ko.bindingHandlers.slideVisibleHorizontal={init:function(n,t){var i=ko.utils.unwrapObservable(t()),r=$(n).is(":visible");i!==r&&(i?$(n).show():$(n).hide())},update:function(n,t){var i=ko.utils.unwrapObservable(t()),r=$(n).is(":visible");i!==r&&(i?$(n).animate({width:"show"}):$(n).animate({width:"hide"}))}};ko.bindingHandlers.basicSlider={init:function(n,t,i){var f=i().sliderOptions||{},u=ko.utils.unwrapObservable(t()),r=$(n),o,e;f.slide=function(n,t){u.value(t.value)};f.value=u.value();ko.utils.domNodeDisposal.addDisposeCallback(n,function(){r.slider("destroy")});r.slider(f);r.find("a").append('<div class="slider-input-single"/>');o=$(".slider-input-single",r);e=function(){var n=u.value();r.slider("option","value",n);o.text(n)};u.value.subscribe(e);e()}};ko.bindingHandlers.rangeSlider={init:function(n,t,i){var f=i().sliderOptions||{},r=ko.utils.unwrapObservable(t()),u=$(n);f.range=!0;f.slide=function(n,t){r.minValue(t.values[0]);r.maxValue(t.values[1])};f.values=[r.minValue(),r.maxValue()];ko.utils.domNodeDisposal.addDisposeCallback(n,function(){u.slider("destroy")});u.slider(f);u.find("a:first").append('<div class="slider-input-left"/>');u.find("a:last").append('<div class="slider-input-right" />');var o=$(".slider-input-left",u),s=$(".slider-input-right",u),e=function(){var n=[r.minValue(),r.maxValue()];u.slider("option","values",n);o.text(n[0]);s.text(n[1])};r.minValue.subscribe(e);r.maxValue.subscribe(e);e()}};ko.bindingHandlers.timeSlider={init:function(n,t,i){for(var u=i().sliderOptions||{},f=u.points,l=u.steps,a=$('<div class="slider-tooltip-wrapper"><\/div>'),y=$('<div class="slider-tooltip" />'),h=0,e=[],v,s,c,r=1,o=f.length;r<o;r++)h+=(f[r]-f[r-1])/l[r-1],e.push(h);v=function(n){for(r=0,o=e.length;r<o;r++)if(n<=e[r]){var t=((e[r-1]||0)*f[r+1]-e[r]*f[r])/(f[r+1]-f[r]);return(n-t)*l[r]}return null};u.max=h;u.min=u.min;u.step=1;s=function(n){if(n>60){var t=n%60|0;return Msg.format(u.displayText[0],n/60|0,t!=0?t:"00")}return Msg.format(u.displayText[1],n)};u.create=function(){var t=$('<div class="slider-max-value" />').text(s(f[f.length-1])),i=$('<div class="slider-min-value" />').text(s(f[0]+u.min));$(n).append(t);$(n).append(i)};a.append(y);$(n).slider(u).find(".ui-slider-handle").append(a);ko.utils.domNodeDisposal.addDisposeCallback(n,function(){$(n).slider("destroy")});c=function(i,r){var f=t(),u=v(r.value);$(n).find(".slider-tooltip").text(s(u));f(u)};ko.utils.registerEventHandler(n,"slidechange",c);ko.utils.registerEventHandler(n,"slide",c)},update:function(n,t,i){for(var s=i().sliderOptions||{},u=s.points,h=s.steps,e,c=0,o=[],l,r=1,f=u.length;r<f;r++)c+=(u[r]-u[r-1])/h[r-1],o.push(c);l=function(n){for(r=1,f=u.length;r<f;r++)if(u[r]>=n&&u[r-1]<=n){var t=((o[r-2]||0)*u[r]-o[r-1]*u[r-1])/(u[r]-u[r-1]);return(n/h[r-1]|0)+t}return null};e=ko.utils.unwrapObservable(t());isNaN(e)&&(e=0);$(n).slider("value",l(e))}};ko.bindingHandlers.nanoScroller={init:function(n,t){var i=ko.utils.unwrapObservable(t());setTimeout(function(){$(n).nanoScroller(i)},0)}};ko.bindingHandlers.nanoScrollerAutoScroll={init:function(n,t){ko.utils.unwrapObservable(t());setTimeout(function(){$(n).nanoScroller();$(n).nanoScroller({scroll:"bottom"})},0)},update:function(n,t){ko.utils.unwrapObservable(t());setTimeout(function(){var t=$(n).children(".content");t[0].previousScrollHeight>t.outerHeight()&&t[0].scrollHeight>t.outerHeight()&&t[0].previousScrollHeight-t.scrollTop()-t.outerHeight()>22?$(n).nanoScroller():($(n).nanoScroller(),$(n).nanoScroller({scroll:"bottom"}));t[0].previousScrollHeight=t[0].scrollHeight},0)}};ko.bindingHandlers.nanoScrollerAutoUpdate={init:function(n,t){ko.utils.unwrapObservable(t());setTimeout(function(){$(n).nanoScroller()},0)},update:function(n,t){ko.utils.unwrapObservable(t());setTimeout(function(){$(n).nanoScroller()},0)}};ko.bindingHandlers.progressBar={init:function(n,t,i){var r=i().progressBarOptions||{max:100},u=r.max,f=ko.utils.unwrapObservable(t());$(n).find(".bar").width(f/u*100+"%")},update:function(n,t,i){var r=ko.utils.unwrapObservable(t()),u=i().progressBarOptions||{},f=u.max;$(n).find(".bar").width(r/f*100+"%")}};ko.bindingHandlers.attrIf={update:function(n,t,i){var r=ko.utils.unwrapObservable(t()),u=ko.utils.unwrapObservable(r._if);u&&(delete r._if,ko.bindingHandlers.attr.update(n,t,i))}},function(n){var t=[],i=function(t,i){n(t.selector,i).each(function(){this.jq_initialized&&this.jq_initialized===!0||(this.jq_initialized=!0,t.callback.call(this))})};n.extend({initializer:function(n,r,u){var f={selector:n,callback:r};i(f,u||document);t.push(f)},applyInitializers:function(n){for(var u,r=0;r<t.length;r++)u=t[r],i(u,n)}})}(jQuery),function(n){n.fn.onCtrlEnter=function(t){return n(this).keydown(function(n){(n.keyCode==10||n.keyCode==13)&&n.ctrlKey&&t&&t(n)}),this}}(jQuery);window.TimeoutAction=function(){function n(n,t,i){this.action=n;this.active=!0;this.eventName=i;this.log=app.getLogger("TimeoutAction"+(this.eventName?" for "+this.eventName:""));this.timeout=setTimeout(this.execute.bind(this),t);this.log("ctor")}return n.prototype.execute=function(){if(this.active){this.active=!1;this.log("execution");clearTimeout(this.timeout);try{this.action()}catch(n){this.log("Error while processing timeout callback: "+n.message)}}},n}(),function(n){n.Modal=function(){function n(n){this.element=n.element}return n.prototype.show=function(){return $(this.element).modal("show"),!1},n.prototype.hide=function(){return $(this.element).modal("hide"),!1},n}()}(window.app.vm=window.app.vm||{}),function(n){n.ConfirmationDialog=function(n){function t(t){n.call(this,t);this.header=ko.observable("");this.body=ko.observable("");this.primaryActionText=ko.observable(Msg.t("Ok"));this.cancelActionText=ko.observable(Msg.t("Отменить"));this.action=function(){};$(this.element).on("hidden",this._onHidden.bind(this))}return app.extends(t,n),t.prototype._onHidden=function(){this.header("");this.body("");this.primaryActionText(Msg.t("Ok"));this.cancelActionText(Msg.t("Отменить"));this.action=function(){}},t.prototype.show=function(t){this.header(t.header);this.body(t.body);this.primaryActionText(t.primaryActionText||this.primaryActionText());this.cancelActionText(t.cancelActionText||this.cancelActionText());this.action=t.action;n.prototype.show.call(this)},t}(n.Modal)}(window.app.vm=window.app.vm||{}),function(n){n.NotificationViewModel=function(){var n=this,t;n.visible=ko.observable(!1);n.message=ko.observable("");n.button=null;n.preventShow=!1;n.hide=function(){n.visible()&&n.visible(!1)};n.show=function(i,r,u,f){n.preventShow||(i?(clearTimeout(t),n.message(i),u&&(n.button=u),n.visible()||n.visible(!0),r!==!0&&(t=f?setTimeout(function(){n.hide()},f):setTimeout(function(){n.hide()},3e3))):n.hide())}}}(window.app.vm=window.app.vm||{}),function(n){n.error=new app.vm.NotificationViewModel;n.warning=new app.vm.NotificationViewModel;n.success=new app.vm.NotificationViewModel;n.lsError=new app.vm.NotificationViewModel;n.prompt=new app.vm.NotificationViewModel}(window.Notifications=window.Notifications||{}),function(n){n.locationHash=new function(){var n=this,t={},i=[],r=!1,e=function(n){return n===undefined||n===null||n===""},u=function(){var t=n.storedHash(),i=location.hash||"#";i!==t&&(location.hash=t)},f;n.storedHash=function(){var i=[],n;for(n in t)i.push(n+(e(t[n])?"":"="+t[n]));return"#"+i.join(";")};n.startAtomicChange=function(){r=!0};n.endAtomicChange=function(){r=!1};n.append=function(n,i){t[n]=i};n.update=function(){u()};n.set=function(n,i){t[n]!==i&&(t[n]=i,r||u())};n.preset=function(n,i){t[n]!==i&&(t[n]=i)};n.get=function(n){return t[n]};n.getBoolean=function(n,i){return t[n]===!0||t[n]==="true"?!0:t[n]===!1||t[n]==="false"?!1:i};n.getNumeric=function(n,i){return $.isNumeric(t[n])?+t[n]:i};n.remove=function(n){t.hasOwnProperty(n)&&(delete t[n],r||u())};n.isSet=function(n){return t.hasOwnProperty(n)};n.setOrRemove=function(t,i,r){r?n.remove(t):n.set(t,i)};n.addChangeListener=function(n){i.push(n)};n.removeChangeListener=function(n){i=_.without(i,n)};f=function(){try{var n={};_.each(location.hash.replace("#","").split(";"),function(t){var i=t.split("=");i[0]&&(n[i[0]]=i[1]?decodeURI(i[1]):i[1])});t=n}catch(i){}},function(){$(window).on("hashchange",function(){var u=n.storedHash(),t,r;for(f(),t=0;r=i[t];t++)try{r(u)}catch(e){console.error(e)}});f()}()}}(window.app=window.app||{}),function(n){var t=function(t){var u=this,i=t.watchObject,s=t.watchKeysWithBoolValues||[],h=t.watchKeysWithNumValues||[],e=(t.watchKeys||[]).concat(s).concat(h),r=t.aliases||null,f=t.defaults||{},c=t.onInitialized||function(){},o=t.updateExtensions||null,l=t.updateLock||null,a=function(t,i){return s.indexOf(t)>=0?n.locationHash.getBoolean(i,f[t]):h.indexOf(t)>=0?n.locationHash.getNumeric(i,f[t]):n.locationHash.get(i)};if(!i)throw"watchObject is not defined";u.onUpdate=function(){var t=function(){n.locationHash.startAtomicChange();_.each(e,function(t){var u,e;o&&o[t]&&o[t]();u=t;r&&(u=r[t]);e=i[t]();e==f[t]?n.locationHash.remove(u):n.locationHash.set(u,e)});n.locationHash.endAtomicChange();n.locationHash.update()};l&&l()?setTimeout(u.onUpdate,300):t()};u.initialize=function(){_.each(e,function(t){var f=t;r&&(f=r[t]);n.locationHash.isSet(f)&&i[t](a(t,f));i[t].subscribe(u.onUpdate)});c()};u.reinitialize=function(){_.each(e,function(t){var u=t;r&&(u=r[t]);n.locationHash.isSet(u)?i[t](a(t,u)):i[t]()!==f[t]&&i[t](f[t])});c()}};n.locationHashStorage={_storage:null,initialize:function(n){this._storage=new t(n);this._storage.initialize()},reinitialize:function(){this._storage.reinitialize()}}}(window.app=window.app||{})