From 227953e3a6ee41683ea06b3f440946d4007898c3 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Tue, 4 Oct 2016 12:17:45 -0700 Subject: [PATCH] tower UI, coverage map, etc. --- FS/FS/Mason.pm | 1 + FS/FS/Schema.pm | 20 +- FS/FS/sector_coverage.pm | 133 +++++++++++ FS/FS/tower.pm | 2 +- FS/FS/tower_sector.pm | 45 +++- FS/MANIFEST | 2 + FS/t/sector_coverage.t | 5 + httemplate/edit/process/tower.html | 2 +- httemplate/edit/tower.html | 18 +- .../elements/images/ui-icons_444444_256x240.png | Bin 0 -> 6992 bytes .../elements/images/ui-icons_515151_256x240.png | Bin 0 -> 6987 bytes .../elements/images/ui-icons_555555_256x240.png | Bin 0 -> 6988 bytes .../elements/images/ui-icons_777620_256x240.png | Bin 0 -> 4549 bytes .../elements/images/ui-icons_777777_256x240.png | Bin 0 -> 6999 bytes .../elements/images/ui-icons_cc0000_256x240.png | Bin 0 -> 4549 bytes httemplate/elements/jquery-ui.min.css | 10 +- httemplate/elements/jquery-ui.min.js | 22 +- httemplate/elements/jquery-ui.structure.min.css | 5 + httemplate/elements/jquery-ui.theme.min.css | 5 + httemplate/elements/tower_sector.html | 3 +- httemplate/elements/tr-tower_sectors.html | 250 +++++++++++++++++++++ httemplate/misc/sector_coverage-json.cgi | 40 ++++ httemplate/search/elements/gmap.html | 79 ++++--- httemplate/search/tower-map.html | 49 +++- 24 files changed, 615 insertions(+), 76 deletions(-) create mode 100644 FS/FS/sector_coverage.pm create mode 100644 FS/t/sector_coverage.t create mode 100644 httemplate/elements/images/ui-icons_444444_256x240.png create mode 100644 httemplate/elements/images/ui-icons_515151_256x240.png create mode 100644 httemplate/elements/images/ui-icons_555555_256x240.png create mode 100644 httemplate/elements/images/ui-icons_777620_256x240.png create mode 100644 httemplate/elements/images/ui-icons_777777_256x240.png create mode 100644 httemplate/elements/images/ui-icons_cc0000_256x240.png create mode 100644 httemplate/elements/jquery-ui.structure.min.css create mode 100644 httemplate/elements/jquery-ui.theme.min.css create mode 100644 httemplate/elements/tr-tower_sectors.html create mode 100644 httemplate/misc/sector_coverage-json.cgi diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm index ee87b2de4..041b76c10 100644 --- a/FS/FS/Mason.pm +++ b/FS/FS/Mason.pm @@ -416,6 +416,7 @@ if ( -e $addl_handler_use_file ) { use FS::commission_schedule; use FS::commission_rate; use FS::saved_search; + use FS::sector_coverage; # Sammath Naur if ( $FS::Mason::addl_handler_use ) { diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index ced377592..66b9a51c3 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -4886,7 +4886,8 @@ sub tables_hashref { 'sector_range', 'decimal', 'NULL', '', '', '', #? 'downtilt', 'decimal', 'NULL', '', '', '', 'v_width', 'int', 'NULL', '', '', '', - 'margin', 'decimal', 'NULL', '', '', '', + 'db_high', 'int', 'NULL', '', '', '', + 'db_low', 'int', 'NULL', '', '', '', 'image', 'blob', 'NULL', '', '', '', 'west', 'decimal', 'NULL', '10,7', '', '', 'east', 'decimal', 'NULL', '10,7', '', '', @@ -4903,6 +4904,23 @@ sub tables_hashref { ], }, + 'sector_coverage' => { + 'columns' => [ + 'coveragenum', 'serial', '', '', '', '', + 'sectornum', 'int', '', '', '', '', + 'db_loss', 'int', '', '', '', '', + 'geometry', 'text', 'NULL', '', '', '', + ], + 'primary_key' => 'coveragenum', + 'unique' => [], + 'index' => [], + 'foreign_keys' => [ + { columns => [ 'sectornum' ], + table => 'tower_sector' + }, + ], + }, + 'part_virtual_field' => { 'columns' => [ 'vfieldpart', 'serial', '', '', '', '', diff --git a/FS/FS/sector_coverage.pm b/FS/FS/sector_coverage.pm new file mode 100644 index 000000000..fa6a9e154 --- /dev/null +++ b/FS/FS/sector_coverage.pm @@ -0,0 +1,133 @@ +package FS::sector_coverage; +use base qw( FS::Record ); + +use strict; +use FS::Record qw( qsearch qsearchs ); +use Cpanel::JSON::XS; + +=head1 NAME + +FS::sector_coverage - Object methods for sector_coverage records + +=head1 SYNOPSIS + + use FS::sector_coverage; + + $record = new FS::sector_coverage \%hash; + $record = new FS::sector_coverage { 'column' => 'value' }; + + $error = $record->insert; + + $error = $new_record->replace($old_record); + + $error = $record->delete; + + $error = $record->check; + +=head1 DESCRIPTION + +An FS::sector_coverage object represents a coverage map for a sector at +a specific signal strength level. FS::sector_coverage inherits from +FS::Record. The following fields are currently supported: + +=over 4 + +=item coveragenum + +primary key + +=item sectornum + +L foreign key + +=item db_loss + +The maximum path loss shown on this map, in dB. + +=item geometry + +A GeoJSON Geometry object for the area covered at this level. + +=back + +=head1 METHODS + +=over 4 + +=item new HASHREF + +Creates a new map. To add the example to the database, see L<"insert">. + +Note that this stores the hash reference, not a distinct copy of the hash it +points to. You can ask the object for a copy with the I method. + +=cut + +# the new method can be inherited from FS::Record, if a table method is defined + +sub table { 'sector_coverage'; } + +=item insert + +Adds this record to the database. If there is an error, returns the error, +otherwise returns false. + +=item delete + +Delete this record from the database. + +=item replace OLD_RECORD + +Replaces the OLD_RECORD with this one in the database. If there is an error, +returns the error, otherwise returns false. + +=cut + +# the replace method can be inherited from FS::Record + +=item check + +Checks all fields to make sure this is a valid example. If there is +an error, returns the error, otherwise returns false. Called by the insert +and replace methods. + +=cut + +# the check method should currently be supplied - FS::Record contains some +# data checking routines + +sub check { + my $self = shift; + + my $error = + $self->ut_numbern('coveragenum') + || $self->ut_number('sectornum') + || $self->ut_number('db_loss') + ; + return $error if $error; + + if ( length($self->geometry) ) { + # make sure it parses at least + local $@; + my $data = eval { decode_json($self->geometry) }; + if ( $@ ) { + # limit the length, in case it decides to return a large chunk of data + return "Error parsing coverage geometry: ".substr($@, 0, 100); + } + } + + $self->SUPER::check; +} + +=back + +=head1 BUGS + +=head1 SEE ALSO + +L + +=cut + +1; + diff --git a/FS/FS/tower.pm b/FS/FS/tower.pm index f371ec9c7..a05160c4c 100644 --- a/FS/FS/tower.pm +++ b/FS/FS/tower.pm @@ -143,7 +143,7 @@ default sector. sub process_o2m { my $self = shift; my %opt = @_; - my $params = $opt{params}; + my $params = +{ %{$opt{params}} }; # Adjust to make sure our default sector is in the list. my $default_sector = $self->default_sector diff --git a/FS/FS/tower_sector.pm b/FS/FS/tower_sector.pm index 3fadc8685..acead9089 100644 --- a/FS/FS/tower_sector.pm +++ b/FS/FS/tower_sector.pm @@ -4,6 +4,7 @@ use base qw( FS::Record ); use Class::Load qw(load_class); use File::Path qw(make_path); use Data::Dumper; +use Cpanel::JSON::XS; use strict; @@ -75,10 +76,13 @@ The antenna beam elevation in degrees below horizontal. The -3dB vertical beamwidth in degrees. -=item margin +=item db_high -The signal loss margin allowed on the sector, in dB. This is normally -transmitter EIRP minus receiver sensitivity. +The signal loss margin to treat as "high quality". + +=item db_low + +The signal loss margin to treat as "low quality". =item image @@ -149,7 +153,8 @@ sub check { || $self->ut_numbern('v_width') || $self->ut_numbern('downtilt') || $self->ut_floatn('sector_range') - || $self->ut_numbern('margin') + || $self->ut_numbern('db_high') + || $self->ut_numbern('db_low') || $self->ut_anything('image') || $self->ut_sfloatn('west') || $self->ut_sfloatn('east') @@ -201,7 +206,7 @@ sub need_fields_for_coverage { downtilt => 'Downtilt', width => 'Horiz. width', v_width => 'Vert. width', - margin => 'Signal margin', + db_high => 'High quality', latitude => 'Latitude', longitude => 'Longitude', ); @@ -261,6 +266,7 @@ sub process_generate_coverage { my $tower = $sector->tower; load_class('Map::Splat'); + # since this is still experimental, put it somewhere we can find later my $workdir = "$FS::UID::cache_dir/cache.$FS::UID::datasrc/" . "generate_coverage/sector$sectornum-". time; @@ -274,9 +280,9 @@ sub process_generate_coverage { h_width => $sector->width, tilt => $sector->downtilt, v_width => $sector->v_width, - max_loss => $sector->margin, - min_loss => $sector->margin - 80, + db_levels => [ $sector->db_low, $sector->db_high ], dir => $workdir, + #simplify => 0.0004, # remove stairstepping in SRTM3 data? ); $splat->calculate; @@ -284,11 +290,30 @@ sub process_generate_coverage { foreach (qw(west east south north)) { $sector->set($_, $box->{$_}); } - $sector->set('image', $splat->mask); - # mask returns a PNG where everything below max_loss is solid colored, - # and everything above it is transparent. More useful for our purposes. + $sector->set('image', $splat->png); my $error = $sector->replace; die $error if $error; + + foreach ($sector->sector_coverage) { + $error = $_->delete; + die $error if $error; + } + # XXX undecided whether Map::Splat should even do this operation + # or how to store it + # or anything else + $DB::single = 1; + my $data = decode_json( $splat->polygonize_json ); + for my $feature (@{ $data->{features} }) { + my $db = $feature->{properties}{level}; + my $coverage = FS::sector_coverage->new({ + sectornum => $sectornum, + db_loss => $db, + geometry => encode_json($feature->{geometry}) + }); + $error = $coverage->insert; + } + + die $error if $error; } =head1 BUGS diff --git a/FS/MANIFEST b/FS/MANIFEST index 73a740f63..10dda5948 100644 --- a/FS/MANIFEST +++ b/FS/MANIFEST @@ -876,3 +876,5 @@ FS/commission_rate.pm t/commission_rate.t FS/saved_search.pm t/saved_search.t +FS/sector_coverage.pm +t/sector_coverage.t diff --git a/FS/t/sector_coverage.t b/FS/t/sector_coverage.t new file mode 100644 index 000000000..b30415888 --- /dev/null +++ b/FS/t/sector_coverage.t @@ -0,0 +1,5 @@ +BEGIN { $| = 1; print "1..1\n" } +END {print "not ok 1\n" unless $loaded;} +use FS::sector_coverage; +$loaded=1; +print "ok 1\n"; diff --git a/httemplate/edit/process/tower.html b/httemplate/edit/process/tower.html index d14ac56f8..588a68e8d 100644 --- a/httemplate/edit/process/tower.html +++ b/httemplate/edit/process/tower.html @@ -4,7 +4,7 @@ process_o2m => { 'table' => 'tower_sector', 'fields' => [qw( sectorname ip_addr height freq_mhz direction width - downtilt v_width margin + downtilt v_width db_high db_low sector_range )], }, diff --git a/httemplate/edit/tower.html b/httemplate/edit/tower.html index 377a33e9b..dae5d5a89 100644 --- a/httemplate/edit/tower.html +++ b/httemplate/edit/tower.html @@ -12,11 +12,15 @@ 'altitude', 'height', 'veg_height', - { field => 'sectornum', - type => 'tower_sector', - o2m_table => 'tower_sector', - m2_label => 'Sector', - m2_error_callback => $m2_error_callback, +# { field => 'sectornum', +# type => 'tower_sector', +# o2m_table => 'tower_sector', +# m2_label => 'Sector', +# m2_error_callback => $m2_error_callback, +# }, + { type => 'tower_sectors', + field => 'sectornum', + # does its own o2m-thing }, ], labels => { 'towernum' => 'Tower', @@ -27,7 +31,7 @@ 'latitude' => 'Latitude', 'longitude' => 'Longitude', 'altitude' => 'Altitude (feet)', - 'height' => 'Height (feet)', + 'height' => 'Tower height (feet)', 'veg_height' => 'Vegetation height (feet)', 'color' => 'Color', }, @@ -38,7 +42,7 @@ my $m2_error_callback = sub { # reconstruct the list my ($cgi, $object) = @_; my @fields = qw( - sectorname ip_addr height freq_mhz direction width tilt v_width margin sector_range + sectorname ip_addr height freq_mhz direction width tilt v_width db_high db_low sector_range ); map { diff --git a/httemplate/elements/images/ui-icons_444444_256x240.png b/httemplate/elements/images/ui-icons_444444_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..a802263b58990c806c1d1bc2a95c3847f01b138e GIT binary patch literal 6992 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 literal 0 HcmV?d00001 diff --git a/httemplate/elements/images/ui-icons_515151_256x240.png b/httemplate/elements/images/ui-icons_515151_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7372d5db535b2c53d9b13a1a22e229791769a007 GIT binary patch literal 6987 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 ATmS$7 literal 0 HcmV?d00001 diff --git a/httemplate/elements/images/ui-icons_555555_256x240.png b/httemplate/elements/images/ui-icons_555555_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7009bf752f54a13850f5cd3c2956b1c4469b5c65 GIT binary patch literal 6988 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 DJqb9i literal 0 HcmV?d00001 diff --git a/httemplate/elements/images/ui-icons_777777_256x240.png b/httemplate/elements/images/ui-icons_777777_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..8e26ee4fd8c3d9f55b7495bd708181b8558c861c GIT binary patch literal 6999 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"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("
"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.widthi?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget); -i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("