diff options
Diffstat (limited to 'framework/Web/Javascripts/source/jquery')
35 files changed, 13795 insertions, 12761 deletions
diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/animated-overlay.gif b/framework/Web/Javascripts/source/jquery/css/base/images/animated-overlay.gif Binary files differnew file mode 100644 index 00000000..d441f75e --- /dev/null +++ b/framework/Web/Javascripts/source/jquery/css/base/images/animated-overlay.gif diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_0_aaaaaa_40x100.png Binary files differindex b3fe56f2..5b5dab2a 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_0_aaaaaa_40x100.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_0_aaaaaa_40x100.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_75_ffffff_40x100.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_75_ffffff_40x100.png Binary files differindex f63829ae..ac8b229a 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_75_ffffff_40x100.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_75_ffffff_40x100.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_55_fbf9ee_1x400.png Binary files differindex e67a294e..ad3d6346 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_55_fbf9ee_1x400.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_55_fbf9ee_1x400.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_65_ffffff_1x400.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_65_ffffff_1x400.png Binary files differindex 6a436ad1..42ccba26 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_65_ffffff_1x400.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_65_ffffff_1x400.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_dadada_1x400.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_dadada_1x400.png Binary files differindex a3582dbf..5a46b47c 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_dadada_1x400.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_dadada_1x400.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_e6e6e6_1x400.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_e6e6e6_1x400.png Binary files differindex 1bc15208..86c2baa6 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_e6e6e6_1x400.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_e6e6e6_1x400.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_95_fef1ec_1x400.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_95_fef1ec_1x400.png Binary files differindex 6d540320..4443fdc1 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_95_fef1ec_1x400.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_95_fef1ec_1x400.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png Binary files differindex c07fd06d..7c9fa6c6 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_222222_256x240.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_222222_256x240.png Binary files differindex e1994df2..ee039dc0 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_222222_256x240.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_222222_256x240.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_2e83ff_256x240.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_2e83ff_256x240.png Binary files differindex 42d63dbf..45e8928e 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_2e83ff_256x240.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_2e83ff_256x240.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_454545_256x240.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_454545_256x240.png Binary files differindex f076a41d..7ec70d11 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_454545_256x240.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_454545_256x240.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_888888_256x240.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_888888_256x240.png Binary files differindex b53b7301..5ba708c3 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_888888_256x240.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_888888_256x240.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_cd0a0a_256x240.png b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_cd0a0a_256x240.png Binary files differindex 3b8d7377..7930a558 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_cd0a0a_256x240.png +++ b/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_cd0a0a_256x240.png diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery-ui.css b/framework/Web/Javascripts/source/jquery/css/base/jquery-ui.css index 151bd495..da013d66 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery-ui.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery-ui.css @@ -1,10 +1,7 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-02-02  * http://jqueryui.com -* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css -* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */ +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;zoom:1}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto;zoom:1}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}* html .ui-autocomplete{width:1px}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}/*! jQuery UI - v1.9.2 - 2012-11-23 -* http://jqueryui.com -* Includes: jquery.ui.theme.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}
\ No newline at end of file +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px} +.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.accordion.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.accordion.css index 17bee6ba..bb6198b5 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.accordion.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.accordion.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.accordion.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;zoom:1}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto;zoom:1}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.autocomplete.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.autocomplete.css index 60b97935..92b453d0 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.autocomplete.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.autocomplete.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.autocomplete.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}* html .ui-autocomplete{width:1px}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.button.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.button.css index 34604d3a..ceb823d2 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.button.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.button.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.button.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.core.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.core.css index 4928115e..62435c78 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.core.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.core.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.core.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.datepicker.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.datepicker.css index fb1bc69b..60fc1015 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.datepicker.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.datepicker.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.datepicker.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.dialog.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.dialog.css index 2d0053eb..86a52b3b 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.dialog.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.dialog.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.dialog.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-dialog{position:absolute;top:0;left:0;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.menu.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.menu.css index ca837dde..143ae613 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.menu.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.menu.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.menu.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.progressbar.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.progressbar.css index aba49f88..36f5c83b 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.progressbar.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.progressbar.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.progressbar.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.resizable.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.resizable.css index 4ce6a91b..79bfa6e9 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.resizable.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.resizable.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.resizable.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ +  .ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.selectable.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.selectable.css index 63023d66..080d9a6e 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.selectable.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.selectable.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.selectable.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ +  .ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.slider.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.slider.css index d8f5cf9c..2952fb0a 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.slider.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.slider.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.slider.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.spinner.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.spinner.css index de61669b..4a87beb7 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.spinner.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.spinner.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.spinner.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tabs.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tabs.css index c7864527..aa252184 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tabs.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tabs.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.tabs.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.theme.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.theme.css index 0f44c5ab..d0fd110c 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.theme.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.theme.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.theme.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tooltip.css b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tooltip.css index 1306b0dc..9a36db8a 100755..100644 --- a/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tooltip.css +++ b/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tooltip.css @@ -1,5 +1,5 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-29  * http://jqueryui.com -* Includes: jquery.ui.tooltip.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}
\ No newline at end of file +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/jquery-ui-i18n.min.js b/framework/Web/Javascripts/source/jquery/jquery-ui-i18n.min.js index 8a7f2896..853a18b1 100755..100644 --- a/framework/Web/Javascripts/source/jquery/jquery-ui-i18n.min.js +++ b/framework/Web/Javascripts/source/jquery/jquery-ui-i18n.min.js @@ -1,5 +1,6 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-17  * http://jqueryui.com -* Includes: jquery.ui.datepicker-af.js, jquery.ui.datepicker-ar-DZ.js, jquery.ui.datepicker-ar.js, jquery.ui.datepicker-az.js, jquery.ui.datepicker-bg.js, jquery.ui.datepicker-bs.js, jquery.ui.datepicker-ca.js, jquery.ui.datepicker-cs.js, jquery.ui.datepicker-cy-GB.js, jquery.ui.datepicker-da.js, jquery.ui.datepicker-de.js, jquery.ui.datepicker-el.js, jquery.ui.datepicker-en-AU.js, jquery.ui.datepicker-en-GB.js, jquery.ui.datepicker-en-NZ.js, jquery.ui.datepicker-eo.js, jquery.ui.datepicker-es.js, jquery.ui.datepicker-et.js, jquery.ui.datepicker-eu.js, jquery.ui.datepicker-fa.js, jquery.ui.datepicker-fi.js, jquery.ui.datepicker-fo.js, jquery.ui.datepicker-fr-CH.js, jquery.ui.datepicker-fr.js, jquery.ui.datepicker-gl.js, jquery.ui.datepicker-he.js, jquery.ui.datepicker-hi.js, jquery.ui.datepicker-hr.js, jquery.ui.datepicker-hu.js, jquery.ui.datepicker-hy.js, jquery.ui.datepicker-id.js, jquery.ui.datepicker-is.js, jquery.ui.datepicker-it.js, jquery.ui.datepicker-ja.js, jquery.ui.datepicker-ka.js, jquery.ui.datepicker-kk.js, jquery.ui.datepicker-km.js, jquery.ui.datepicker-ko.js, jquery.ui.datepicker-lb.js, jquery.ui.datepicker-lt.js, jquery.ui.datepicker-lv.js, jquery.ui.datepicker-mk.js, jquery.ui.datepicker-ml.js, jquery.ui.datepicker-ms.js, jquery.ui.datepicker-nl-BE.js, jquery.ui.datepicker-nl.js, jquery.ui.datepicker-no.js, jquery.ui.datepicker-pl.js, jquery.ui.datepicker-pt-BR.js, jquery.ui.datepicker-pt.js, jquery.ui.datepicker-rm.js, jquery.ui.datepicker-ro.js, jquery.ui.datepicker-ru.js, jquery.ui.datepicker-sk.js, jquery.ui.datepicker-sl.js, jquery.ui.datepicker-sq.js, jquery.ui.datepicker-sr-SR.js, jquery.ui.datepicker-sr.js, jquery.ui.datepicker-sv.js, jquery.ui.datepicker-ta.js, jquery.ui.datepicker-th.js, jquery.ui.datepicker-tj.js, jquery.ui.datepicker-tr.js, jquery.ui.datepicker-uk.js, jquery.ui.datepicker-vi.js, jquery.ui.datepicker-zh-CN.js, jquery.ui.datepicker-zh-HK.js, jquery.ui.datepicker-zh-TW.js -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -jQuery(function(e){e.datepicker.regional.af={closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.af)}),jQuery(function(e){e.datepicker.regional["ar-DZ"]={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["ar-DZ"])}),jQuery(function(e){e.datepicker.regional.ar={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ar)}),jQuery(function(e){e.datepicker.regional.az={closeText:"Bağla",prevText:"<Geri",nextText:"İrəli>",currentText:"Bugün",monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthNamesShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],dayNamesShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayNamesMin:["B","B","Ç","С","Ç","C","Ş"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.az)}),jQuery(function(e){e.datepicker.regional.bg={closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.bg)}),jQuery(function(e){e.datepicker.regional.bs={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.bs)}),jQuery(function(e){e.datepicker.regional.ca={closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ca)}),jQuery(function(e){e.datepicker.regional.cs={closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.cs)}),jQuery(function(e){e.datepicker.regional["cy-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthNamesShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tac","Rha"],dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],dayNamesShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],dayNamesMin:["Su","Ll","Ma","Me","Ia","Gw","Sa"],weekHeader:"Wy",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["cy-GB"])}),jQuery(function(e){e.datepicker.regional.da={closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.da)}),jQuery(function(e){e.datepicker.regional.de={closeText:"schließen",prevText:"<zurück",nextText:"Vor>",currentText:"heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.de)}),jQuery(function(e){e.datepicker.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Τρέχων Μήνας",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.el)}),jQuery(function(e){e.datepicker.regional["en-AU"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-AU"])}),jQuery(function(e){e.datepicker.regional["en-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-GB"])}),jQuery(function(e){e.datepicker.regional["en-NZ"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-NZ"])}),jQuery(function(e){e.datepicker.regional.eo={closeText:"Fermi",prevText:"<Anta",nextText:"Sekv>",currentText:"Nuna",monthNames:["Januaro","Februaro","Marto","Aprilo","Majo","Junio","Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aŭg","Sep","Okt","Nov","Dec"],dayNames:["Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato"],dayNamesShort:["Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab"],dayNamesMin:["Di","Lu","Ma","Me","Ĵa","Ve","Sa"],weekHeader:"Sb",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.eo)}),jQuery(function(e){e.datepicker.regional.es={closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthNamesShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],dayNames:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mié","Juv","Vie","Sáb"],dayNamesMin:["Do","Lu","Ma","Mi","Ju","Vi","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.es)}),jQuery(function(e){e.datepicker.regional.et={closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.et)}),jQuery(function(e){e.datepicker.regional.eu={closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.eu)}),jQuery(function(e){e.datepicker.regional.fa={closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["فروردين","ارديبهشت","خرداد","تير","مرداد","شهريور","مهر","آبان","آذر","دی","بهمن","اسفند"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fa)}),jQuery(function(e){e.datepicker.regional.fi={closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fi)}),jQuery(function(e){e.datepicker.regional.fo={closeText:"Lat aftur",prevText:"<Fyrra",nextText:"Næsta>",currentText:"Í dag",monthNames:["Januar","Februar","Mars","Apríl","Mei","Juni","Juli","August","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leyardagur"],dayNamesShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],dayNamesMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],weekHeader:"Vk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fo)}),jQuery(function(e){e.datepicker.regional["fr-CH"]={closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthNamesShort:["Jan","Fév","Mar","Avr","Mai","Jun","Jul","Aoû","Sep","Oct","Nov","Déc"],dayNames:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],dayNamesShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayNamesMin:["Di","Lu","Ma","Me","Je","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["fr-CH"])}),jQuery(function(e){e.datepicker.regional.fr={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthNamesShort:["Janv.","Févr.","Mars","Avril","Mai","Juin","Juil.","Août","Sept.","Oct.","Nov.","Déc."],dayNames:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],dayNamesShort:["Dim.","Lun.","Mar.","Mer.","Jeu.","Ven.","Sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fr)}),jQuery(function(e){e.datepicker.regional.gl={closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.gl)}),jQuery(function(e){e.datepicker.regional.he={closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.he)}),jQuery(function(e){e.datepicker.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hi)}),jQuery(function(e){e.datepicker.regional.hr={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hr)}),jQuery(function(e){e.datepicker.regional.hu={closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hu)}),jQuery(function(e){e.datepicker.regional.hy={closeText:"Փակել",prevText:"<Նախ.",nextText:"Հաջ.>",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hy)}),jQuery(function(e){e.datepicker.regional.id={closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.id)}),jQuery(function(e){e.datepicker.regional.is={closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.is)}),jQuery(function(e){e.datepicker.regional.it={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.it)}),jQuery(function(e){e.datepicker.regional.ja={closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional.ja)}),jQuery(function(e){e.datepicker.regional.ka={closeText:"დახურვა",prevText:"< წინა",nextText:"შემდეგი >",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ka)}),jQuery(function(e){e.datepicker.regional.kk={closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.kk)}),jQuery(function(e){e.datepicker.regional.km={closeText:"ធ្វើរួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃនេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.km)}),jQuery(function(e){e.datepicker.regional.ko={closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"},e.datepicker.setDefaults(e.datepicker.regional.ko)}),jQuery(function(e){e.datepicker.regional.lb={closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lb)}),jQuery(function(e){e.datepicker.regional.lt={closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lt)}),jQuery(function(e){e.datepicker.regional.lv={closeText:"Aizvērt",prevText:"Iepr",nextText:"Nāka",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Nav",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lv)}),jQuery(function(e){e.datepicker.regional.mk={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.mk)}),jQuery(function(e){e.datepicker.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്ച്ച്","ഏപ്രില്","മേയ്","ജൂണ്","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്","ഒക്ടോബര്","നവംബര്","ഡിസംബര്"],monthNamesShort:["ജനു","ഫെബ്","മാര്","ഏപ്രി","മേയ്","ജൂണ്","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്","തിങ്കള്","ചൊവ്വ","ബുധന്","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ml)}),jQuery(function(e){e.datepicker.regional.ms={closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ms)}),jQuery(function(e){e.datepicker.regional["nl-BE"]={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["nl-BE"])}),jQuery(function(e){e.datepicker.regional.nl={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nl)}),jQuery(function(e){e.datepicker.regional.no={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.no)}),jQuery(function(e){e.datepicker.regional.pl={closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.pl)}),jQuery(function(e){e.datepicker.regional["pt-BR"]={closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["pt-BR"])}),jQuery(function(e){e.datepicker.regional.pt={closeText:"Fechar",prevText:"<Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.pt)}),jQuery(function(e){e.datepicker.regional.rm={closeText:"Serrar",prevText:"<Suandant",nextText:"Precedent>",currentText:"Actual",monthNames:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],monthNamesShort:["Scha","Fev","Mar","Avr","Matg","Zer","Fan","Avu","Sett","Oct","Nov","Dec"],dayNames:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"],dayNamesShort:["Dum","Gli","Mar","Mes","Gie","Ven","Som"],dayNamesMin:["Du","Gl","Ma","Me","Gi","Ve","So"],weekHeader:"emna",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.rm)}),jQuery(function(e){e.datepicker.regional.ro={closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ro)}),jQuery(function(e){e.datepicker.regional.ru={closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ru)}),jQuery(function(e){e.datepicker.regional.sk={closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sk)}),jQuery(function(e){e.datepicker.regional.sl={closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sl)}),jQuery(function(e){e.datepicker.regional.sq={closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sq)}),jQuery(function(e){e.datepicker.regional["sr-SR"]={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["sr-SR"])}),jQuery(function(e){e.datepicker.regional.sr={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sr)}),jQuery(function(e){e.datepicker.regional.sv={closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sv)}),jQuery(function(e){e.datepicker.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ta)}),jQuery(function(e){e.datepicker.regional.th={closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.th)}),jQuery(function(e){e.datepicker.regional.tj={closeText:"Идома",prevText:"<Қафо",nextText:"Пеш>",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.tj)}),jQuery(function(e){e.datepicker.regional.tr={closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.tr)}),jQuery(function(e){e.datepicker.regional.uk={closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.uk)}),jQuery(function(e){e.datepicker.regional.vi={closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.vi)}),jQuery(function(e){e.datepicker.regional["zh-CN"]={closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-CN"])}),jQuery(function(e){e.datepicker.regional["zh-HK"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-HK"])}),jQuery(function(e){e.datepicker.regional["zh-TW"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-TW"])});
\ No newline at end of file +* Includes: jquery.ui.datepicker-af.js, jquery.ui.datepicker-ar-DZ.js, jquery.ui.datepicker-ar.js, jquery.ui.datepicker-az.js, jquery.ui.datepicker-be.js, jquery.ui.datepicker-bg.js, jquery.ui.datepicker-bs.js, jquery.ui.datepicker-ca.js, jquery.ui.datepicker-cs.js, jquery.ui.datepicker-cy-GB.js, jquery.ui.datepicker-da.js, jquery.ui.datepicker-de.js, jquery.ui.datepicker-el.js, jquery.ui.datepicker-en-AU.js, jquery.ui.datepicker-en-GB.js, jquery.ui.datepicker-en-NZ.js, jquery.ui.datepicker-eo.js, jquery.ui.datepicker-es.js, jquery.ui.datepicker-et.js, jquery.ui.datepicker-eu.js, jquery.ui.datepicker-fa.js, jquery.ui.datepicker-fi.js, jquery.ui.datepicker-fo.js, jquery.ui.datepicker-fr-CA.js, jquery.ui.datepicker-fr-CH.js, jquery.ui.datepicker-fr.js, jquery.ui.datepicker-gl.js, jquery.ui.datepicker-he.js, jquery.ui.datepicker-hi.js, jquery.ui.datepicker-hr.js, jquery.ui.datepicker-hu.js, jquery.ui.datepicker-hy.js, jquery.ui.datepicker-id.js, jquery.ui.datepicker-is.js, jquery.ui.datepicker-it.js, jquery.ui.datepicker-ja.js, jquery.ui.datepicker-ka.js, jquery.ui.datepicker-kk.js, jquery.ui.datepicker-km.js, jquery.ui.datepicker-ko.js, jquery.ui.datepicker-ky.js, jquery.ui.datepicker-lb.js, jquery.ui.datepicker-lt.js, jquery.ui.datepicker-lv.js, jquery.ui.datepicker-mk.js, jquery.ui.datepicker-ml.js, jquery.ui.datepicker-ms.js, jquery.ui.datepicker-nb.js, jquery.ui.datepicker-nl-BE.js, jquery.ui.datepicker-nl.js, jquery.ui.datepicker-nn.js, jquery.ui.datepicker-no.js, jquery.ui.datepicker-pl.js, jquery.ui.datepicker-pt-BR.js, jquery.ui.datepicker-pt.js, jquery.ui.datepicker-rm.js, jquery.ui.datepicker-ro.js, jquery.ui.datepicker-ru.js, jquery.ui.datepicker-sk.js, jquery.ui.datepicker-sl.js, jquery.ui.datepicker-sq.js, jquery.ui.datepicker-sr-SR.js, jquery.ui.datepicker-sr.js, jquery.ui.datepicker-sv.js, jquery.ui.datepicker-ta.js, jquery.ui.datepicker-th.js, jquery.ui.datepicker-tj.js, jquery.ui.datepicker-tr.js, jquery.ui.datepicker-uk.js, jquery.ui.datepicker-vi.js, jquery.ui.datepicker-zh-CN.js, jquery.ui.datepicker-zh-HK.js, jquery.ui.datepicker-zh-TW.js +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ +jQuery(function(e){e.datepicker.regional.af={closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.af)}),jQuery(function(e){e.datepicker.regional["ar-DZ"]={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["ar-DZ"])}),jQuery(function(e){e.datepicker.regional.ar={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ar)}),jQuery(function(e){e.datepicker.regional.az={closeText:"Bağla",prevText:"<Geri",nextText:"İrəli>",currentText:"Bugün",monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthNamesShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],dayNamesShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayNamesMin:["B","B","Ç","С","Ç","C","Ş"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.az)}),jQuery(function(e){e.datepicker.regional.be={closeText:"Зачыніць",prevText:"←Папяр.",nextText:"Наст.→",currentText:"Сёньня",monthNames:["Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань"],monthNamesShort:["Сту","Лют","Сак","Кра","Тра","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сьн"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Аў","Ср","Чц","Пт","Сб"],weekHeader:"Тд",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.be)}),jQuery(function(e){e.datepicker.regional.bg={closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.bg)}),jQuery(function(e){e.datepicker.regional.bs={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.bs)}),jQuery(function(e){e.datepicker.regional.ca={closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ca)}),jQuery(function(e){e.datepicker.regional.cs={closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.cs)}),jQuery(function(e){e.datepicker.regional["cy-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthNamesShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tac","Rha"],dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],dayNamesShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],dayNamesMin:["Su","Ll","Ma","Me","Ia","Gw","Sa"],weekHeader:"Wy",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["cy-GB"])}),jQuery(function(e){e.datepicker.regional.da={closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.da)}),jQuery(function(e){e.datepicker.regional.de={closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.de)}),jQuery(function(e){e.datepicker.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Τρέχων Μήνας",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.el)}),jQuery(function(e){e.datepicker.regional["en-AU"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-AU"])}),jQuery(function(e){e.datepicker.regional["en-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-GB"])}),jQuery(function(e){e.datepicker.regional["en-NZ"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["en-NZ"])}),jQuery(function(e){e.datepicker.regional.eo={closeText:"Fermi",prevText:"<Anta",nextText:"Sekv>",currentText:"Nuna",monthNames:["Januaro","Februaro","Marto","Aprilo","Majo","Junio","Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aŭg","Sep","Okt","Nov","Dec"],dayNames:["Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato"],dayNamesShort:["Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab"],dayNamesMin:["Di","Lu","Ma","Me","Ĵa","Ve","Sa"],weekHeader:"Sb",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.eo)}),jQuery(function(e){e.datepicker.regional.es={closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ogo","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","juv","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.es)}),jQuery(function(e){e.datepicker.regional.et={closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.et)}),jQuery(function(e){e.datepicker.regional.eu={closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.eu)}),jQuery(function(e){e.datepicker.regional.fa={closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["فروردين","ارديبهشت","خرداد","تير","مرداد","شهريور","مهر","آبان","آذر","دی","بهمن","اسفند"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fa)}),jQuery(function(e){e.datepicker.regional.fi={closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fi)}),jQuery(function(e){e.datepicker.regional.fo={closeText:"Lat aftur",prevText:"<Fyrra",nextText:"Næsta>",currentText:"Í dag",monthNames:["Januar","Februar","Mars","Apríl","Mei","Juni","Juli","August","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leyardagur"],dayNamesShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],dayNamesMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],weekHeader:"Vk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fo)}),jQuery(function(e){e.datepicker.regional["fr-CA"]={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["fr-CA"])}),jQuery(function(e){e.datepicker.regional["fr-CH"]={closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["fr-CH"])}),jQuery(function(e){e.datepicker.regional.fr={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.fr)}),jQuery(function(e){e.datepicker.regional.gl={closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.gl)}),jQuery(function(e){e.datepicker.regional.he={closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.he)}),jQuery(function(e){e.datepicker.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hi)}),jQuery(function(e){e.datepicker.regional.hr={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hr)}),jQuery(function(e){e.datepicker.regional.hu={closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hu)}),jQuery(function(e){e.datepicker.regional.hy={closeText:"Փակել",prevText:"<Նախ.",nextText:"Հաջ.>",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.hy)}),jQuery(function(e){e.datepicker.regional.id={closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.id)}),jQuery(function(e){e.datepicker.regional.is={closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.is)}),jQuery(function(e){e.datepicker.regional.it={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.it)}),jQuery(function(e){e.datepicker.regional.ja={closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional.ja)}),jQuery(function(e){e.datepicker.regional.ka={closeText:"დახურვა",prevText:"< წინა",nextText:"შემდეგი >",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ka)}),jQuery(function(e){e.datepicker.regional.kk={closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.kk)}),jQuery(function(e){e.datepicker.regional.km={closeText:"ធ្វើរួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃនេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.km)}),jQuery(function(e){e.datepicker.regional.ko={closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"},e.datepicker.setDefaults(e.datepicker.regional.ko)}),jQuery(function(e){e.datepicker.regional.ky={closeText:"Жабуу",prevText:"<Мур",nextText:"Кий>",currentText:"Бүгүн",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],dayNamesShort:["жек","дүй","шей","шар","бей","жум","ише"],dayNamesMin:["Жк","Дш","Шш","Шр","Бш","Жм","Иш"],weekHeader:"Жум",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ky)}),jQuery(function(e){e.datepicker.regional.lb={closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lb)}),jQuery(function(e){e.datepicker.regional.lt={closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lt)}),jQuery(function(e){e.datepicker.regional.lv={closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.lv)}),jQuery(function(e){e.datepicker.regional.mk={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.mk)}),jQuery(function(e){e.datepicker.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്ച്ച്","ഏപ്രില്","മേയ്","ജൂണ്","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്","ഒക്ടോബര്","നവംബര്","ഡിസംബര്"],monthNamesShort:["ജനു","ഫെബ്","മാര്","ഏപ്രി","മേയ്","ജൂണ്","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്","തിങ്കള്","ചൊവ്വ","ബുധന്","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ml)}),jQuery(function(e){e.datepicker.regional.ms={closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ms)}),jQuery(function(e){e.datepicker.regional.nb={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nb) +}),jQuery(function(e){e.datepicker.regional["nl-BE"]={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["nl-BE"])}),jQuery(function(e){e.datepicker.regional.nl={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nl)}),jQuery(function(e){e.datepicker.regional.nn={closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.nn)}),jQuery(function(e){e.datepicker.regional.no={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.no)}),jQuery(function(e){e.datepicker.regional.pl={closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.pl)}),jQuery(function(e){e.datepicker.regional["pt-BR"]={closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["pt-BR"])}),jQuery(function(e){e.datepicker.regional.pt={closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.pt)}),jQuery(function(e){e.datepicker.regional.rm={closeText:"Serrar",prevText:"<Suandant",nextText:"Precedent>",currentText:"Actual",monthNames:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],monthNamesShort:["Scha","Fev","Mar","Avr","Matg","Zer","Fan","Avu","Sett","Oct","Nov","Dec"],dayNames:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"],dayNamesShort:["Dum","Gli","Mar","Mes","Gie","Ven","Som"],dayNamesMin:["Du","Gl","Ma","Me","Gi","Ve","So"],weekHeader:"emna",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.rm)}),jQuery(function(e){e.datepicker.regional.ro={closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ro)}),jQuery(function(e){e.datepicker.regional.ru={closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ru)}),jQuery(function(e){e.datepicker.regional.sk={closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sk)}),jQuery(function(e){e.datepicker.regional.sl={closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sl)}),jQuery(function(e){e.datepicker.regional.sq={closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sq)}),jQuery(function(e){e.datepicker.regional["sr-SR"]={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional["sr-SR"])}),jQuery(function(e){e.datepicker.regional.sr={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sr)}),jQuery(function(e){e.datepicker.regional.sv={closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.sv)}),jQuery(function(e){e.datepicker.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.ta)}),jQuery(function(e){e.datepicker.regional.th={closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.th)}),jQuery(function(e){e.datepicker.regional.tj={closeText:"Идома",prevText:"<Қафо",nextText:"Пеш>",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.tj)}),jQuery(function(e){e.datepicker.regional.tr={closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.tr)}),jQuery(function(e){e.datepicker.regional.uk={closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.uk)}),jQuery(function(e){e.datepicker.regional.vi={closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.datepicker.setDefaults(e.datepicker.regional.vi)}),jQuery(function(e){e.datepicker.regional["zh-CN"]={closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-CN"])}),jQuery(function(e){e.datepicker.regional["zh-HK"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-HK"])}),jQuery(function(e){e.datepicker.regional["zh-TW"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},e.datepicker.setDefaults(e.datepicker.regional["zh-TW"])});
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/jquery-ui.js b/framework/Web/Javascripts/source/jquery/jquery-ui.js index 1faa401c..a5ae96f1 100644 --- a/framework/Web/Javascripts/source/jquery/jquery-ui.js +++ b/framework/Web/Javascripts/source/jquery/jquery-ui.js @@ -1,23 +1,17 @@ -/*! jQuery UI - v1.9.2 - 2013-10-13 +/*! jQuery UI - v1.10.4 - 2014-01-17  * http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js -* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ - +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */  (function( $, undefined ) {  var uuid = 0,  	runiqueId = /^ui-id-\d+$/; -// prevent duplicate loading -// this is only a problem because we proxy existing functions -// and we don't want to double proxy them +// $.ui might exist from components with no dependencies, e.g., $.ui.position  $.ui = $.ui || {}; -if ( $.ui.version ) { -	return; -}  $.extend( $.ui, { -	version: "1.9.2", +	version: "1.10.4",  	keyCode: {  		BACKSPACE: 8, @@ -47,34 +41,35 @@ $.extend( $.ui, {  // plugins  $.fn.extend({ -	_focus: $.fn.focus, -	focus: function( delay, fn ) { -		return typeof delay === "number" ? -			this.each(function() { -				var elem = this; -				setTimeout(function() { -					$( elem ).focus(); -					if ( fn ) { -						fn.call( elem ); -					} -				}, delay ); -			}) : -			this._focus.apply( this, arguments ); -	}, +	focus: (function( orig ) { +		return function( delay, fn ) { +			return typeof delay === "number" ? +				this.each(function() { +					var elem = this; +					setTimeout(function() { +						$( elem ).focus(); +						if ( fn ) { +							fn.call( elem ); +						} +					}, delay ); +				}) : +				orig.apply( this, arguments ); +		}; +	})( $.fn.focus ),  	scrollParent: function() {  		var scrollParent; -		if (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { +		if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {  			scrollParent = this.parents().filter(function() { -				return (/(relative|absolute|fixed)/).test($.css(this,'position')) && (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x')); +				return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));  			}).eq(0);  		} else {  			scrollParent = this.parents().filter(function() { -				return (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x')); +				return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));  			}).eq(0);  		} -		return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; +		return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;  	},  	zIndex: function( zIndex ) { @@ -147,7 +142,7 @@ function focusable( element, isTabIndexNotNaN ) {  function visible( element ) {  	return $.expr.filters.visible( element ) && -		!$( element ).parents().andSelf().filter(function() { +		!$( element ).parents().addBack().filter(function() {  			return $.css( this, "visibility" ) === "hidden";  		}).length;  } @@ -175,31 +170,6 @@ $.extend( $.expr[ ":" ], {  	}  }); -// support -$(function() { -	var body = document.body, -		div = body.appendChild( div = document.createElement( "div" ) ); - -	// access offsetHeight before setting the style to prevent a layout bug -	// in IE 9 which causes the element to continue to take up space even -	// after it is removed from the DOM (#8026) -	div.offsetHeight; - -	$.extend( div.style, { -		minHeight: "100px", -		height: "auto", -		padding: 0, -		borderWidth: 0 -	}); - -	$.support.minHeight = div.offsetHeight === 100; -	$.support.selectstart = "onselectstart" in div; - -	// set display to none to avoid a layout bug in IE -	// http://dev.jquery.com/ticket/4014 -	body.removeChild( div ).style.display = "none"; -}); -  // support: jQuery <1.8  if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {  	$.each( [ "Width", "Height" ], function( i, name ) { @@ -247,6 +217,15 @@ if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {  	});  } +// support: jQuery <1.8 +if ( !$.fn.addBack ) { +	$.fn.addBack = function( selector ) { +		return this.add( selector == null ? +			this.prevObject : this.prevObject.filter( selector ) +		); +	}; +} +  // support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)  if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {  	$.fn.removeData = (function( removeData ) { @@ -265,13 +244,9 @@ if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {  // deprecated +$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); -(function() { -	var uaMatch = /msie ([\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || []; -	$.ui.ie = uaMatch.length ? true : false; -	$.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6; -})(); - +$.support.selectstart = "onselectstart" in document.createElement( "div" );  $.fn.extend({  	disableSelection: function() {  		return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) + @@ -286,7 +261,7 @@ $.fn.extend({  });  $.extend( $.ui, { -	// $.ui.plugin is deprecated.  Use the proxy pattern instead. +	// $.ui.plugin is deprecated. Use $.widget() extensions instead.  	plugin: {  		add: function( module, option, set ) {  			var i, @@ -311,8 +286,6 @@ $.extend( $.ui, {  		}  	}, -	contains: $.contains, -  	// only used by resizable  	hasScroll: function( el, a ) { @@ -335,20 +308,11 @@ $.extend( $.ui, {  		has = ( el[ scroll ] > 0 );  		el[ scroll ] = 0;  		return has; -	}, - -	// these are odd functions, fix the API or move into individual plugins -	isOverAxis: function( x, reference, size ) { -		//Determines when x coordinate is over "b" element axis -		return ( x > reference ) && ( x < ( reference + size ) ); -	}, -	isOver: function( y, x, top, left, height, width ) { -		//Determines when x, y coordinates is over "b" element -		return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );  	}  });  })( jQuery ); +  (function( $, undefined ) {  var uuid = 0, @@ -366,6 +330,9 @@ $.cleanData = function( elems ) {  $.widget = function( name, base, prototype ) {  	var fullName, existingConstructor, constructor, basePrototype, +		// proxiedPrototype allows the provided prototype to remain unmodified +		// so that it can be used as a mixin for multiple widgets (#8876) +		proxiedPrototype = {},  		namespace = name.split( "." )[ 0 ];  	name = name.split( "." )[ 1 ]; @@ -412,43 +379,43 @@ $.widget = function( name, base, prototype ) {  	// inheriting from  	basePrototype.options = $.widget.extend( {}, basePrototype.options );  	$.each( prototype, function( prop, value ) { -		if ( $.isFunction( value ) ) { -			prototype[ prop ] = (function() { -				var _super = function() { -						return base.prototype[ prop ].apply( this, arguments ); -					}, -					_superApply = function( args ) { -						return base.prototype[ prop ].apply( this, args ); -					}; -				return function() { -					var __super = this._super, -						__superApply = this._superApply, -						returnValue; +		if ( !$.isFunction( value ) ) { +			proxiedPrototype[ prop ] = value; +			return; +		} +		proxiedPrototype[ prop ] = (function() { +			var _super = function() { +					return base.prototype[ prop ].apply( this, arguments ); +				}, +				_superApply = function( args ) { +					return base.prototype[ prop ].apply( this, args ); +				}; +			return function() { +				var __super = this._super, +					__superApply = this._superApply, +					returnValue; -					this._super = _super; -					this._superApply = _superApply; +				this._super = _super; +				this._superApply = _superApply; -					returnValue = value.apply( this, arguments ); +				returnValue = value.apply( this, arguments ); -					this._super = __super; -					this._superApply = __superApply; +				this._super = __super; +				this._superApply = __superApply; -					return returnValue; -				}; -			})(); -		} +				return returnValue; +			}; +		})();  	});  	constructor.prototype = $.widget.extend( basePrototype, {  		// TODO: remove support for widgetEventPrefix  		// always use the name + a colon as the prefix, e.g., draggable:start  		// don't prefix for widgets that aren't DOM-based -		widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name -	}, prototype, { +		widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name +	}, proxiedPrototype, {  		constructor: constructor,  		namespace: namespace,  		widgetName: name, -		// TODO remove widgetBaseClass, see #8155 -		widgetBaseClass: fullName,  		widgetFullName: fullName  	}); @@ -574,9 +541,6 @@ $.Widget.prototype = {  		this.focusable = $();  		if ( element !== this ) { -			// 1.9 BC for #7810 -			// TODO remove dual storage -			$.data( element, this.widgetName, this );  			$.data( element, this.widgetFullName, this );  			this._on( true, this.element, {  				remove: function( event ) { @@ -656,12 +620,12 @@ $.Widget.prototype = {  					curOption = curOption[ parts[ i ] ];  				}  				key = parts.pop(); -				if ( value === undefined ) { +				if ( arguments.length === 1 ) {  					return curOption[ key ] === undefined ? null : curOption[ key ];  				}  				curOption[ key ] = value;  			} else { -				if ( value === undefined ) { +				if ( arguments.length === 1 ) {  					return this.options[ key ] === undefined ? null : this.options[ key ];  				}  				options[ key ] = value; @@ -843,7 +807,7 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {  		if ( options.delay ) {  			element.delay( options.delay );  		} -		if ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) { +		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {  			element[ method ]( options );  		} else if ( effectName !== method && element[ effectName ] ) {  			element[ effectName ]( options.duration, options.easing, callback ); @@ -859,25 +823,19 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {  	};  }); -// DEPRECATED -if ( $.uiBackCompat !== false ) { -	$.Widget.prototype._getCreateOptions = function() { -		return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ]; -	}; -} -  })( jQuery ); +  (function( $, undefined ) {  var mouseHandled = false; -$( document ).mouseup( function( e ) { +$( document ).mouseup( function() {  	mouseHandled = false;  });  $.widget("ui.mouse", { -	version: "1.9.2", +	version: "1.10.4",  	options: { -		cancel: 'input,textarea,button,select,option', +		cancel: "input,textarea,button,select,option",  		distance: 1,  		delay: 0  	}, @@ -885,12 +843,12 @@ $.widget("ui.mouse", {  		var that = this;  		this.element -			.bind('mousedown.'+this.widgetName, function(event) { +			.bind("mousedown."+this.widgetName, function(event) {  				return that._mouseDown(event);  			}) -			.bind('click.'+this.widgetName, function(event) { -				if (true === $.data(event.target, that.widgetName + '.preventClickEvent')) { -					$.removeData(event.target, that.widgetName + '.preventClickEvent'); +			.bind("click."+this.widgetName, function(event) { +				if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { +					$.removeData(event.target, that.widgetName + ".preventClickEvent");  					event.stopImmediatePropagation();  					return false;  				} @@ -902,11 +860,11 @@ $.widget("ui.mouse", {  	// TODO: make sure destroying one instance of mouse doesn't mess with  	// other instances of mouse  	_mouseDestroy: function() { -		this.element.unbind('.'+this.widgetName); +		this.element.unbind("."+this.widgetName);  		if ( this._mouseMoveDelegate ) {  			$(document) -				.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) -				.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); +				.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) +				.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);  		}  	}, @@ -944,8 +902,8 @@ $.widget("ui.mouse", {  		}  		// Click event may never have fired (Gecko & Opera) -		if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) { -			$.removeData(event.target, this.widgetName + '.preventClickEvent'); +		if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { +			$.removeData(event.target, this.widgetName + ".preventClickEvent");  		}  		// these delegates are required to keep context @@ -956,8 +914,8 @@ $.widget("ui.mouse", {  			return that._mouseUp(event);  		};  		$(document) -			.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) -			.bind('mouseup.'+this.widgetName, this._mouseUpDelegate); +			.bind("mousemove."+this.widgetName, this._mouseMoveDelegate) +			.bind("mouseup."+this.widgetName, this._mouseUpDelegate);  		event.preventDefault(); @@ -967,7 +925,7 @@ $.widget("ui.mouse", {  	_mouseMove: function(event) {  		// IE mouseup check - mouseup happened when mouse was out of window -		if ($.ui.ie && !(document.documentMode >= 9) && !event.button) { +		if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {  			return this._mouseUp(event);  		} @@ -987,14 +945,14 @@ $.widget("ui.mouse", {  	_mouseUp: function(event) {  		$(document) -			.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) -			.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); +			.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) +			.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);  		if (this._mouseStarted) {  			this._mouseStarted = false;  			if (event.target === this._mouseDownEvent.target) { -				$.data(event.target, this.widgetName + '.preventClickEvent', true); +				$.data(event.target, this.widgetName + ".preventClickEvent", true);  			}  			this._mouseStop(event); @@ -1011,529 +969,23 @@ $.widget("ui.mouse", {  		);  	}, -	_mouseDelayMet: function(event) { +	_mouseDelayMet: function(/* event */) {  		return this.mouseDelayMet;  	},  	// These are placeholder methods, to be overriden by extending plugin -	_mouseStart: function(event) {}, -	_mouseDrag: function(event) {}, -	_mouseStop: function(event) {}, -	_mouseCapture: function(event) { return true; } +	_mouseStart: function(/* event */) {}, +	_mouseDrag: function(/* event */) {}, +	_mouseStop: function(/* event */) {}, +	_mouseCapture: function(/* event */) { return true; }  });  })(jQuery); -(function( $, undefined ) { - -$.ui = $.ui || {}; - -var cachedScrollbarWidth, -	max = Math.max, -	abs = Math.abs, -	round = Math.round, -	rhorizontal = /left|center|right/, -	rvertical = /top|center|bottom/, -	roffset = /[\+\-]\d+%?/, -	rposition = /^\w+/, -	rpercent = /%$/, -	_position = $.fn.position; - -function getOffsets( offsets, width, height ) { -	return [ -		parseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), -		parseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) -	]; -} -function parseCss( element, property ) { -	return parseInt( $.css( element, property ), 10 ) || 0; -} - -$.position = { -	scrollbarWidth: function() { -		if ( cachedScrollbarWidth !== undefined ) { -			return cachedScrollbarWidth; -		} -		var w1, w2, -			div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), -			innerDiv = div.children()[0]; - -		$( "body" ).append( div ); -		w1 = innerDiv.offsetWidth; -		div.css( "overflow", "scroll" ); - -		w2 = innerDiv.offsetWidth; - -		if ( w1 === w2 ) { -			w2 = div[0].clientWidth; -		} - -		div.remove(); - -		return (cachedScrollbarWidth = w1 - w2); -	}, -	getScrollInfo: function( within ) { -		var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ), -			overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ), -			hasOverflowX = overflowX === "scroll" || -				( overflowX === "auto" && within.width < within.element[0].scrollWidth ), -			hasOverflowY = overflowY === "scroll" || -				( overflowY === "auto" && within.height < within.element[0].scrollHeight ); -		return { -			width: hasOverflowX ? $.position.scrollbarWidth() : 0, -			height: hasOverflowY ? $.position.scrollbarWidth() : 0 -		}; -	}, -	getWithinInfo: function( element ) { -		var withinElement = $( element || window ), -			isWindow = $.isWindow( withinElement[0] ); -		return { -			element: withinElement, -			isWindow: isWindow, -			offset: withinElement.offset() || { left: 0, top: 0 }, -			scrollLeft: withinElement.scrollLeft(), -			scrollTop: withinElement.scrollTop(), -			width: isWindow ? withinElement.width() : withinElement.outerWidth(), -			height: isWindow ? withinElement.height() : withinElement.outerHeight() -		}; -	} -}; - -$.fn.position = function( options ) { -	if ( !options || !options.of ) { -		return _position.apply( this, arguments ); -	} - -	// make a copy, we don't want to modify arguments -	options = $.extend( {}, options ); - -	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, -		target = $( options.of ), -		within = $.position.getWithinInfo( options.within ), -		scrollInfo = $.position.getScrollInfo( within ), -		targetElem = target[0], -		collision = ( options.collision || "flip" ).split( " " ), -		offsets = {}; - -	if ( targetElem.nodeType === 9 ) { -		targetWidth = target.width(); -		targetHeight = target.height(); -		targetOffset = { top: 0, left: 0 }; -	} else if ( $.isWindow( targetElem ) ) { -		targetWidth = target.width(); -		targetHeight = target.height(); -		targetOffset = { top: target.scrollTop(), left: target.scrollLeft() }; -	} else if ( targetElem.preventDefault ) { -		// force left top to allow flipping -		options.at = "left top"; -		targetWidth = targetHeight = 0; -		targetOffset = { top: targetElem.pageY, left: targetElem.pageX }; -	} else { -		targetWidth = target.outerWidth(); -		targetHeight = target.outerHeight(); -		targetOffset = target.offset(); -	} -	// clone to reuse original targetOffset later -	basePosition = $.extend( {}, targetOffset ); - -	// force my and at to have valid horizontal and vertical positions -	// if a value is missing or invalid, it will be converted to center -	$.each( [ "my", "at" ], function() { -		var pos = ( options[ this ] || "" ).split( " " ), -			horizontalOffset, -			verticalOffset; - -		if ( pos.length === 1) { -			pos = rhorizontal.test( pos[ 0 ] ) ? -				pos.concat( [ "center" ] ) : -				rvertical.test( pos[ 0 ] ) ? -					[ "center" ].concat( pos ) : -					[ "center", "center" ]; -		} -		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; -		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; - -		// calculate offsets -		horizontalOffset = roffset.exec( pos[ 0 ] ); -		verticalOffset = roffset.exec( pos[ 1 ] ); -		offsets[ this ] = [ -			horizontalOffset ? horizontalOffset[ 0 ] : 0, -			verticalOffset ? verticalOffset[ 0 ] : 0 -		]; - -		// reduce to just the positions without the offsets -		options[ this ] = [ -			rposition.exec( pos[ 0 ] )[ 0 ], -			rposition.exec( pos[ 1 ] )[ 0 ] -		]; -	}); - -	// normalize collision option -	if ( collision.length === 1 ) { -		collision[ 1 ] = collision[ 0 ]; -	} - -	if ( options.at[ 0 ] === "right" ) { -		basePosition.left += targetWidth; -	} else if ( options.at[ 0 ] === "center" ) { -		basePosition.left += targetWidth / 2; -	} - -	if ( options.at[ 1 ] === "bottom" ) { -		basePosition.top += targetHeight; -	} else if ( options.at[ 1 ] === "center" ) { -		basePosition.top += targetHeight / 2; -	} - -	atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); -	basePosition.left += atOffset[ 0 ]; -	basePosition.top += atOffset[ 1 ]; - -	return this.each(function() { -		var collisionPosition, using, -			elem = $( this ), -			elemWidth = elem.outerWidth(), -			elemHeight = elem.outerHeight(), -			marginLeft = parseCss( this, "marginLeft" ), -			marginTop = parseCss( this, "marginTop" ), -			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, -			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, -			position = $.extend( {}, basePosition ), -			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); - -		if ( options.my[ 0 ] === "right" ) { -			position.left -= elemWidth; -		} else if ( options.my[ 0 ] === "center" ) { -			position.left -= elemWidth / 2; -		} - -		if ( options.my[ 1 ] === "bottom" ) { -			position.top -= elemHeight; -		} else if ( options.my[ 1 ] === "center" ) { -			position.top -= elemHeight / 2; -		} - -		position.left += myOffset[ 0 ]; -		position.top += myOffset[ 1 ]; - -		// if the browser doesn't support fractions, then round for consistent results -		if ( !$.support.offsetFractions ) { -			position.left = round( position.left ); -			position.top = round( position.top ); -		} - -		collisionPosition = { -			marginLeft: marginLeft, -			marginTop: marginTop -		}; - -		$.each( [ "left", "top" ], function( i, dir ) { -			if ( $.ui.position[ collision[ i ] ] ) { -				$.ui.position[ collision[ i ] ][ dir ]( position, { -					targetWidth: targetWidth, -					targetHeight: targetHeight, -					elemWidth: elemWidth, -					elemHeight: elemHeight, -					collisionPosition: collisionPosition, -					collisionWidth: collisionWidth, -					collisionHeight: collisionHeight, -					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], -					my: options.my, -					at: options.at, -					within: within, -					elem : elem -				}); -			} -		}); - -		if ( $.fn.bgiframe ) { -			elem.bgiframe(); -		} - -		if ( options.using ) { -			// adds feedback as second argument to using callback, if present -			using = function( props ) { -				var left = targetOffset.left - position.left, -					right = left + targetWidth - elemWidth, -					top = targetOffset.top - position.top, -					bottom = top + targetHeight - elemHeight, -					feedback = { -						target: { -							element: target, -							left: targetOffset.left, -							top: targetOffset.top, -							width: targetWidth, -							height: targetHeight -						}, -						element: { -							element: elem, -							left: position.left, -							top: position.top, -							width: elemWidth, -							height: elemHeight -						}, -						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", -						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" -					}; -				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { -					feedback.horizontal = "center"; -				} -				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { -					feedback.vertical = "middle"; -				} -				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { -					feedback.important = "horizontal"; -				} else { -					feedback.important = "vertical"; -				} -				options.using.call( this, props, feedback ); -			}; -		} - -		elem.offset( $.extend( position, { using: using } ) ); -	}); -}; - -$.ui.position = { -	fit: { -		left: function( position, data ) { -			var within = data.within, -				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, -				outerWidth = within.width, -				collisionPosLeft = position.left - data.collisionPosition.marginLeft, -				overLeft = withinOffset - collisionPosLeft, -				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, -				newOverRight; - -			// element is wider than within -			if ( data.collisionWidth > outerWidth ) { -				// element is initially over the left side of within -				if ( overLeft > 0 && overRight <= 0 ) { -					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; -					position.left += overLeft - newOverRight; -				// element is initially over right side of within -				} else if ( overRight > 0 && overLeft <= 0 ) { -					position.left = withinOffset; -				// element is initially over both left and right sides of within -				} else { -					if ( overLeft > overRight ) { -						position.left = withinOffset + outerWidth - data.collisionWidth; -					} else { -						position.left = withinOffset; -					} -				} -			// too far left -> align with left edge -			} else if ( overLeft > 0 ) { -				position.left += overLeft; -			// too far right -> align with right edge -			} else if ( overRight > 0 ) { -				position.left -= overRight; -			// adjust based on position and margin -			} else { -				position.left = max( position.left - collisionPosLeft, position.left ); -			} -		}, -		top: function( position, data ) { -			var within = data.within, -				withinOffset = within.isWindow ? within.scrollTop : within.offset.top, -				outerHeight = data.within.height, -				collisionPosTop = position.top - data.collisionPosition.marginTop, -				overTop = withinOffset - collisionPosTop, -				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, -				newOverBottom; - -			// element is taller than within -			if ( data.collisionHeight > outerHeight ) { -				// element is initially over the top of within -				if ( overTop > 0 && overBottom <= 0 ) { -					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; -					position.top += overTop - newOverBottom; -				// element is initially over bottom of within -				} else if ( overBottom > 0 && overTop <= 0 ) { -					position.top = withinOffset; -				// element is initially over both top and bottom of within -				} else { -					if ( overTop > overBottom ) { -						position.top = withinOffset + outerHeight - data.collisionHeight; -					} else { -						position.top = withinOffset; -					} -				} -			// too far up -> align with top -			} else if ( overTop > 0 ) { -				position.top += overTop; -			// too far down -> align with bottom edge -			} else if ( overBottom > 0 ) { -				position.top -= overBottom; -			// adjust based on position and margin -			} else { -				position.top = max( position.top - collisionPosTop, position.top ); -			} -		} -	}, -	flip: { -		left: function( position, data ) { -			var within = data.within, -				withinOffset = within.offset.left + within.scrollLeft, -				outerWidth = within.width, -				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, -				collisionPosLeft = position.left - data.collisionPosition.marginLeft, -				overLeft = collisionPosLeft - offsetLeft, -				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, -				myOffset = data.my[ 0 ] === "left" ? -					-data.elemWidth : -					data.my[ 0 ] === "right" ? -						data.elemWidth : -						0, -				atOffset = data.at[ 0 ] === "left" ? -					data.targetWidth : -					data.at[ 0 ] === "right" ? -						-data.targetWidth : -						0, -				offset = -2 * data.offset[ 0 ], -				newOverRight, -				newOverLeft; -			if ( overLeft < 0 ) { -				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; -				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { -					position.left += myOffset + atOffset + offset; -				} -			} -			else if ( overRight > 0 ) { -				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; -				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { -					position.left += myOffset + atOffset + offset; -				} -			} -		}, -		top: function( position, data ) { -			var within = data.within, -				withinOffset = within.offset.top + within.scrollTop, -				outerHeight = within.height, -				offsetTop = within.isWindow ? within.scrollTop : within.offset.top, -				collisionPosTop = position.top - data.collisionPosition.marginTop, -				overTop = collisionPosTop - offsetTop, -				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, -				top = data.my[ 1 ] === "top", -				myOffset = top ? -					-data.elemHeight : -					data.my[ 1 ] === "bottom" ? -						data.elemHeight : -						0, -				atOffset = data.at[ 1 ] === "top" ? -					data.targetHeight : -					data.at[ 1 ] === "bottom" ? -						-data.targetHeight : -						0, -				offset = -2 * data.offset[ 1 ], -				newOverTop, -				newOverBottom; -			if ( overTop < 0 ) { -				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; -				if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) { -					position.top += myOffset + atOffset + offset; -				} -			} -			else if ( overBottom > 0 ) { -				newOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; -				if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) { -					position.top += myOffset + atOffset + offset; -				} -			} -		} -	}, -	flipfit: { -		left: function() { -			$.ui.position.flip.left.apply( this, arguments ); -			$.ui.position.fit.left.apply( this, arguments ); -		}, -		top: function() { -			$.ui.position.flip.top.apply( this, arguments ); -			$.ui.position.fit.top.apply( this, arguments ); -		} -	} -}; - -// fraction support test -(function () { -	var testElement, testElementParent, testElementStyle, offsetLeft, i, -		body = document.getElementsByTagName( "body" )[ 0 ], -		div = document.createElement( "div" ); - -	//Create a "fake body" for testing based on method used in jQuery.support -	testElement = document.createElement( body ? "div" : "body" ); -	testElementStyle = { -		visibility: "hidden", -		width: 0, -		height: 0, -		border: 0, -		margin: 0, -		background: "none" -	}; -	if ( body ) { -		$.extend( testElementStyle, { -			position: "absolute", -			left: "-1000px", -			top: "-1000px" -		}); -	} -	for ( i in testElementStyle ) { -		testElement.style[ i ] = testElementStyle[ i ]; -	} -	testElement.appendChild( div ); -	testElementParent = body || document.documentElement; -	testElementParent.insertBefore( testElement, testElementParent.firstChild ); - -	div.style.cssText = "position: absolute; left: 10.7432222px;"; - -	offsetLeft = $( div ).offset().left; -	$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; - -	testElement.innerHTML = ""; -	testElementParent.removeChild( testElement ); -})(); - -// DEPRECATED -if ( $.uiBackCompat !== false ) { -	// offset option -	(function( $ ) { -		var _position = $.fn.position; -		$.fn.position = function( options ) { -			if ( !options || !options.offset ) { -				return _position.call( this, options ); -			} -			var offset = options.offset.split( " " ), -				at = options.at.split( " " ); -			if ( offset.length === 1 ) { -				offset[ 1 ] = offset[ 0 ]; -			} -			if ( /^\d/.test( offset[ 0 ] ) ) { -				offset[ 0 ] = "+" + offset[ 0 ]; -			} -			if ( /^\d/.test( offset[ 1 ] ) ) { -				offset[ 1 ] = "+" + offset[ 1 ]; -			} -			if ( at.length === 1 ) { -				if ( /left|center|right/.test( at[ 0 ] ) ) { -					at[ 1 ] = "center"; -				} else { -					at[ 1 ] = at[ 0 ]; -					at[ 0 ] = "center"; -				} -			} -			return _position.call( this, $.extend( options, { -				at: at[ 0 ] + offset[ 0 ] + " " + at[ 1 ] + offset[ 1 ], -				offset: undefined -			} ) ); -		}; -	}( jQuery ) ); -} - -}( jQuery ) );  (function( $, undefined ) {  $.widget("ui.draggable", $.ui.mouse, { -	version: "1.9.2", +	version: "1.10.4",  	widgetEventPrefix: "drag",  	options: {  		addClasses: true, @@ -1559,15 +1011,24 @@ $.widget("ui.draggable", $.ui.mouse, {  		snapMode: "both",  		snapTolerance: 20,  		stack: false, -		zIndex: false +		zIndex: false, + +		// callbacks +		drag: null, +		start: null, +		stop: null  	},  	_create: function() { -		if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position"))) -			this.element[0].style.position = 'relative'; - -		(this.options.addClasses && this.element.addClass("ui-draggable")); -		(this.options.disabled && this.element.addClass("ui-draggable-disabled")); +		if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) { +			this.element[0].style.position = "relative"; +		} +		if (this.options.addClasses){ +			this.element.addClass("ui-draggable"); +		} +		if (this.options.disabled){ +			this.element.addClass("ui-draggable-disabled"); +		}  		this._mouseInit(); @@ -1583,16 +1044,18 @@ $.widget("ui.draggable", $.ui.mouse, {  		var o = this.options;  		// among others, prevent a drag on a resizable-handle -		if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle')) +		if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {  			return false; +		}  		//Quit if we're not on a valid handle  		this.handle = this._getHandle(event); -		if (!this.handle) +		if (!this.handle) {  			return false; +		}  		$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { -			$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>') +			$("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>")  			.css({  				width: this.offsetWidth+"px", height: this.offsetHeight+"px",  				position: "absolute", opacity: "0.001", zIndex: 1000 @@ -1618,8 +1081,9 @@ $.widget("ui.draggable", $.ui.mouse, {  		this._cacheHelperProportions();  		//If ddmanager is used for droppables, set the global draggable -		if($.ui.ddmanager) +		if($.ui.ddmanager) {  			$.ui.ddmanager.current = this; +		}  		/*  		 * - Position generation - @@ -1630,8 +1094,10 @@ $.widget("ui.draggable", $.ui.mouse, {  		this._cacheMargins();  		//Store the helper's css position -		this.cssPosition = this.helper.css("position"); +		this.cssPosition = this.helper.css( "position" );  		this.scrollParent = this.helper.scrollParent(); +		this.offsetParent = this.helper.offsetParent(); +		this.offsetParentCssPosition = this.offsetParent.css( "position" );  		//The element's absolute position on the page minus margins  		this.offset = this.positionAbs = this.element.offset(); @@ -1640,6 +1106,9 @@ $.widget("ui.draggable", $.ui.mouse, {  			left: this.offset.left - this.margins.left  		}; +		//Reset scroll cache +		this.offset.scroll = false; +  		$.extend(this.offset, {  			click: { //Where the click happened, relative to the element  				left: event.pageX - this.offset.left, @@ -1654,12 +1123,11 @@ $.widget("ui.draggable", $.ui.mouse, {  		this.originalPageX = event.pageX;  		this.originalPageY = event.pageY; -		//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied +		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied  		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));  		//Set a containment if given in the options -		if(o.containment) -			this._setContainment(); +		this._setContainment();  		//Trigger event + callbacks  		if(this._trigger("start", event) === false) { @@ -1671,19 +1139,26 @@ $.widget("ui.draggable", $.ui.mouse, {  		this._cacheHelperProportions();  		//Prepare the droppable offsets -		if ($.ui.ddmanager && !o.dropBehaviour) +		if ($.ui.ddmanager && !o.dropBehaviour) {  			$.ui.ddmanager.prepareOffsets(this, event); +		}  		this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position  		//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003) -		if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event); +		if ( $.ui.ddmanager ) { +			$.ui.ddmanager.dragStart(this, event); +		}  		return true;  	},  	_mouseDrag: function(event, noPropagation) { +		// reset any necessary cached properties (see #5009) +		if ( this.offsetParentCssPosition === "fixed" ) { +			this.offset.parent = this._getParentOffset(); +		}  		//Compute the helpers position  		this.position = this._generatePosition(event); @@ -1692,16 +1167,22 @@ $.widget("ui.draggable", $.ui.mouse, {  		//Call plugins and callbacks and use the resulting position if something is returned  		if (!noPropagation) {  			var ui = this._uiHash(); -			if(this._trigger('drag', event, ui) === false) { +			if(this._trigger("drag", event, ui) === false) {  				this._mouseUp({});  				return false;  			}  			this.position = ui.position;  		} -		if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px'; -		if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px'; -		if($.ui.ddmanager) $.ui.ddmanager.drag(this, event); +		if(!this.options.axis || this.options.axis !== "y") { +			this.helper[0].style.left = this.position.left+"px"; +		} +		if(!this.options.axis || this.options.axis !== "x") { +			this.helper[0].style.top = this.position.top+"px"; +		} +		if($.ui.ddmanager) { +			$.ui.ddmanager.drag(this, event); +		}  		return false;  	}, @@ -1709,9 +1190,11 @@ $.widget("ui.draggable", $.ui.mouse, {  	_mouseStop: function(event) {  		//If we are using droppables, inform the manager about the drop -		var dropped = false; -		if ($.ui.ddmanager && !this.options.dropBehaviour) +		var that = this, +			dropped = false; +		if ($.ui.ddmanager && !this.options.dropBehaviour) {  			dropped = $.ui.ddmanager.drop(this, event); +		}  		//if a drop comes from outside (a sortable)  		if(this.dropped) { @@ -1720,17 +1203,11 @@ $.widget("ui.draggable", $.ui.mouse, {  		}  		//if the original element is no longer in the DOM don't bother to continue (see #8269) -		var element = this.element[0], elementInDom = false; -		while ( element && (element = element.parentNode) ) { -			if (element == document ) { -				elementInDom = true; -			} -		} -		if ( !elementInDom && this.options.helper === "original" ) +		if ( this.options.helper === "original" && !$.contains( this.element[ 0 ].ownerDocument, this.element[ 0 ] ) ) {  			return false; +		} -		if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { -			var that = this; +		if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {  			$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {  				if(that._trigger("stop", event) !== false) {  					that._clear(); @@ -1752,7 +1229,9 @@ $.widget("ui.draggable", $.ui.mouse, {  		});  		//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003) -		if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event); +		if( $.ui.ddmanager ) { +			$.ui.ddmanager.dragStop(this, event); +		}  		return $.ui.mouse.prototype._mouseUp.call(this, event);  	}, @@ -1770,51 +1249,45 @@ $.widget("ui.draggable", $.ui.mouse, {  	},  	_getHandle: function(event) { - -		var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false; -		$(this.options.handle, this.element) -			.find("*") -			.andSelf() -			.each(function() { -				if(this == event.target) handle = true; -			}); - -		return handle; - +		return this.options.handle ? +			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length : +			true;  	},  	_createHelper: function(event) { -		var o = this.options; -		var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element); +		var o = this.options, +			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element); -		if(!helper.parents('body').length) -			helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo)); +		if(!helper.parents("body").length) { +			helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo)); +		} -		if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) +		if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {  			helper.css("position", "absolute"); +		}  		return helper;  	},  	_adjustOffsetFromHelper: function(obj) { -		if (typeof obj == 'string') { -			obj = obj.split(' '); +		if (typeof obj === "string") { +			obj = obj.split(" ");  		}  		if ($.isArray(obj)) {  			obj = {left: +obj[0], top: +obj[1] || 0};  		} -		if ('left' in obj) { +		if ("left" in obj) {  			this.offset.click.left = obj.left + this.margins.left;  		} -		if ('right' in obj) { +		if ("right" in obj) {  			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;  		} -		if ('top' in obj) { +		if ("top" in obj) {  			this.offset.click.top = obj.top + this.margins.top;  		} -		if ('bottom' in obj) { +		if ("bottom" in obj) {  			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;  		}  	}, @@ -1822,21 +1295,23 @@ $.widget("ui.draggable", $.ui.mouse, {  	_getParentOffset: function() {  		//Get the offsetParent and cache its position -		this.offsetParent = this.helper.offsetParent();  		var po = this.offsetParent.offset();  		// This is a special case where we need to modify a offset calculated on start, since the following happened:  		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent  		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that  		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag -		if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) { +		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {  			po.left += this.scrollParent.scrollLeft();  			po.top += this.scrollParent.scrollTop();  		} -		if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information -		|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix +		//This needs to be actually done for all browsers, since pageX/pageY includes this information +		//Ugly IE fix +		if((this.offsetParent[0] === document.body) || +			(this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {  			po = { top: 0, left: 0 }; +		}  		return {  			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), @@ -1847,7 +1322,7 @@ $.widget("ui.draggable", $.ui.mouse, {  	_getRelativeOffset: function() { -		if(this.cssPosition == "relative") { +		if(this.cssPosition === "relative") {  			var p = this.element.position();  			return {  				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), @@ -1877,53 +1352,87 @@ $.widget("ui.draggable", $.ui.mouse, {  	_setContainment: function() { -		var o = this.options; -		if(o.containment == 'parent') o.containment = this.helper[0].parentNode; -		if(o.containment == 'document' || o.containment == 'window') this.containment = [ -			o.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, -			o.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, -			(o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, -			(o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top -		]; +		var over, c, ce, +			o = this.options; -		if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) { -			var c = $(o.containment); -			var ce = c[0]; if(!ce) return; -			var co = c.offset(); -			var over = ($(ce).css("overflow") != 'hidden'); +		if ( !o.containment ) { +			this.containment = null; +			return; +		} +		if ( o.containment === "window" ) {  			this.containment = [ -				(parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0), -				(parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0), -				(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, -				(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom +				$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left, +				$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top, +				$( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left, +				$( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top  			]; -			this.relative_container = c; +			return; +		} -		} else if(o.containment.constructor == Array) { +		if ( o.containment === "document") { +			this.containment = [ +				0, +				0, +				$( document ).width() - this.helperProportions.width - this.margins.left, +				( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top +			]; +			return; +		} + +		if ( o.containment.constructor === Array ) {  			this.containment = o.containment; +			return; +		} + +		if ( o.containment === "parent" ) { +			o.containment = this.helper[ 0 ].parentNode; +		} + +		c = $( o.containment ); +		ce = c[ 0 ]; + +		if( !ce ) { +			return;  		} +		over = c.css( "overflow" ) !== "hidden"; + +		this.containment = [ +			( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ), +			( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ) , +			( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right, +			( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top  - this.margins.bottom +		]; +		this.relative_container = c;  	},  	_convertPositionTo: function(d, pos) { -		if(!pos) pos = this.position; -		var mod = d == "absolute" ? 1 : -1; -		var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); +		if(!pos) { +			pos = this.position; +		} + +		var mod = d === "absolute" ? 1 : -1, +			scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent; + +		//Cache the scroll +		if (!this.offset.scroll) { +			this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()}; +		}  		return {  			top: ( -				pos.top																	// The absolute mouse position -				+ this.offset.relative.top * mod										// Only for relative positioned nodes: Relative offset from element to offset parent -				+ this.offset.parent.top * mod											// The offsetParent's offset without borders (offset + border) -				- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) +				pos.top	+																// The absolute mouse position +				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent +				this.offset.parent.top * mod -										// The offsetParent's offset without borders (offset + border) +				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top ) * mod )  			),  			left: ( -				pos.left																// The absolute mouse position -				+ this.offset.relative.left * mod										// Only for relative positioned nodes: Relative offset from element to offset parent -				+ this.offset.parent.left * mod											// The offsetParent's offset without borders (offset + border) -				- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) +				pos.left +																// The absolute mouse position +				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent +				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border) +				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left ) * mod )  			)  		}; @@ -1931,60 +1440,77 @@ $.widget("ui.draggable", $.ui.mouse, {  	_generatePosition: function(event) { -		var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); -		var pageX = event.pageX; -		var pageY = event.pageY; +		var containment, co, top, left, +			o = this.options, +			scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent, +			pageX = event.pageX, +			pageY = event.pageY; + +		//Cache the scroll +		if (!this.offset.scroll) { +			this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()}; +		}  		/*  		 * - Position constraining -  		 * Constrain the position to a mix of grid, containment.  		 */ -		if(this.originalPosition) { //If we are not dragging yet, we won't check for options -			var containment; -			if(this.containment) { -			if (this.relative_container){ -				var co = this.relative_container.offset(); -				containment = [ this.containment[0] + co.left, -					this.containment[1] + co.top, -					this.containment[2] + co.left, -					this.containment[3] + co.top ]; -			} -			else { -				containment = this.containment; -			} +		// If we are not dragging yet, we won't check for options +		if ( this.originalPosition ) { +			if ( this.containment ) { +				if ( this.relative_container ){ +					co = this.relative_container.offset(); +					containment = [ +						this.containment[ 0 ] + co.left, +						this.containment[ 1 ] + co.top, +						this.containment[ 2 ] + co.left, +						this.containment[ 3 ] + co.top +					]; +				} +				else { +					containment = this.containment; +				} -				if(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left; -				if(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top; -				if(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left; -				if(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top; +				if(event.pageX - this.offset.click.left < containment[0]) { +					pageX = containment[0] + this.offset.click.left; +				} +				if(event.pageY - this.offset.click.top < containment[1]) { +					pageY = containment[1] + this.offset.click.top; +				} +				if(event.pageX - this.offset.click.left > containment[2]) { +					pageX = containment[2] + this.offset.click.left; +				} +				if(event.pageY - this.offset.click.top > containment[3]) { +					pageY = containment[3] + this.offset.click.top; +				}  			}  			if(o.grid) {  				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950) -				var top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; -				pageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; +				top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; +				pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; -				var left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; -				pageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; +				left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; +				pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;  			}  		}  		return {  			top: ( -				pageY																// The absolute mouse position -				- this.offset.click.top													// Click offset (relative to the element) -				- this.offset.relative.top												// Only for relative positioned nodes: Relative offset from element to offset parent -				- this.offset.parent.top												// The offsetParent's offset without borders (offset + border) -				+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) +				pageY -																	// The absolute mouse position +				this.offset.click.top	-												// Click offset (relative to the element) +				this.offset.relative.top -												// Only for relative positioned nodes: Relative offset from element to offset parent +				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border) +				( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top )  			),  			left: ( -				pageX																// The absolute mouse position -				- this.offset.click.left												// Click offset (relative to the element) -				- this.offset.relative.left												// Only for relative positioned nodes: Relative offset from element to offset parent -				- this.offset.parent.left												// The offsetParent's offset without borders (offset + border) -				+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) +				pageX -																	// The absolute mouse position +				this.offset.click.left -												// Click offset (relative to the element) +				this.offset.relative.left -												// Only for relative positioned nodes: Relative offset from element to offset parent +				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border) +				( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left )  			)  		}; @@ -1992,8 +1518,9 @@ $.widget("ui.draggable", $.ui.mouse, {  	_clear: function() {  		this.helper.removeClass("ui-draggable-dragging"); -		if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove(); -		//if($.ui.ddmanager) $.ui.ddmanager.current = null; +		if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) { +			this.helper.remove(); +		}  		this.helper = null;  		this.cancelHelperRemoval = false;  	}, @@ -2003,13 +1530,16 @@ $.widget("ui.draggable", $.ui.mouse, {  	_trigger: function(type, event, ui) {  		ui = ui || this._uiHash();  		$.ui.plugin.call(this, type, [event, ui]); -		if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins +		//The absolute position has to be recalculated after plugins +		if(type === "drag") { +			this.positionAbs = this._convertPositionTo("absolute"); +		}  		return $.Widget.prototype._trigger.call(this, type, event, ui);  	},  	plugins: {}, -	_uiHash: function(event) { +	_uiHash: function() {  		return {  			helper: this.helper,  			position: this.position, @@ -2023,11 +1553,11 @@ $.widget("ui.draggable", $.ui.mouse, {  $.ui.plugin.add("draggable", "connectToSortable", {  	start: function(event, ui) { -		var inst = $(this).data("draggable"), o = inst.options, +		var inst = $(this).data("ui-draggable"), o = inst.options,  			uiSortable = $.extend({}, ui, { item: inst.element });  		inst.sortables = [];  		$(o.connectToSortable).each(function() { -			var sortable = $.data(this, 'sortable'); +			var sortable = $.data(this, "ui-sortable");  			if (sortable && !sortable.options.disabled) {  				inst.sortables.push({  					instance: sortable, @@ -2042,7 +1572,7 @@ $.ui.plugin.add("draggable", "connectToSortable", {  	stop: function(event, ui) {  		//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper -		var inst = $(this).data("draggable"), +		var inst = $(this).data("ui-draggable"),  			uiSortable = $.extend({}, ui, { item: inst.element });  		$.each(inst.sortables, function() { @@ -2053,8 +1583,10 @@ $.ui.plugin.add("draggable", "connectToSortable", {  				inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance  				this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work) -				//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid' -				if(this.shouldRevert) this.instance.options.revert = true; +				//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid" +				if(this.shouldRevert) { +					this.instance.options.revert = this.shouldRevert; +				}  				//Trigger the stop of the sortable  				this.instance._mouseStop(event); @@ -2062,8 +1594,9 @@ $.ui.plugin.add("draggable", "connectToSortable", {  				this.instance.options.helper = this.instance.options._helper;  				//If the helper has been the original item, restore properties in the sortable -				if(inst.options.helper == 'original') -					this.instance.currentItem.css({ top: 'auto', left: 'auto' }); +				if(inst.options.helper === "original") { +					this.instance.currentItem.css({ top: "auto", left: "auto" }); +				}  			} else {  				this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance @@ -2075,21 +1608,13 @@ $.ui.plugin.add("draggable", "connectToSortable", {  	},  	drag: function(event, ui) { -		var inst = $(this).data("draggable"), that = this; - -		var checkPos = function(o) { -			var dyClick = this.offset.click.top, dxClick = this.offset.click.left; -			var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left; -			var itemHeight = o.height, itemWidth = o.width; -			var itemTop = o.top, itemLeft = o.left; +		var inst = $(this).data("ui-draggable"), that = this; -			return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth); -		}; +		$.each(inst.sortables, function() { -		$.each(inst.sortables, function(i) { +			var innermostIntersecting = false, +				thisSortable = this; -			var innermostIntersecting = false; -			var thisSortable = this;  			//Copy over some variables to allow calling the sortable's native _intersectsWith  			this.instance.positionAbs = inst.positionAbs;  			this.instance.helperProportions = inst.helperProportions; @@ -2101,11 +1626,13 @@ $.ui.plugin.add("draggable", "connectToSortable", {  					this.instance.positionAbs = inst.positionAbs;  					this.instance.helperProportions = inst.helperProportions;  					this.instance.offset.click = inst.offset.click; -					if  (this != thisSortable -						&& this.instance._intersectsWith(this.instance.containerCache) -						&& $.ui.contains(thisSortable.instance.element[0], this.instance.element[0])) +					if (this !== thisSortable && +						this.instance._intersectsWith(this.instance.containerCache) && +						$.contains(thisSortable.instance.element[0], this.instance.element[0]) +					) {  						innermostIntersecting = false; -						return innermostIntersecting; +					} +					return innermostIntersecting;  				});  			} @@ -2118,7 +1645,7 @@ $.ui.plugin.add("draggable", "connectToSortable", {  					//Now we fake the start of dragging for the sortable instance,  					//by cloning the list group item, appending it to the sortable and using it as inst.currentItem  					//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one) -					this.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data("sortable-item", true); +					this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true);  					this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it  					this.instance.options.helper = function() { return ui.helper[0]; }; @@ -2141,7 +1668,9 @@ $.ui.plugin.add("draggable", "connectToSortable", {  				}  				//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable -				if(this.instance.currentItem) this.instance._mouseDrag(event); +				if(this.instance.currentItem) { +					this.instance._mouseDrag(event); +				}  			} else { @@ -2156,20 +1685,22 @@ $.ui.plugin.add("draggable", "connectToSortable", {  					this.instance.options.revert = false;  					// The out event needs to be triggered independently -					this.instance._trigger('out', event, this.instance._uiHash(this.instance)); +					this.instance._trigger("out", event, this.instance._uiHash(this.instance));  					this.instance._mouseStop(event, true);  					this.instance.options.helper = this.instance.options._helper;  					//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size  					this.instance.currentItem.remove(); -					if(this.instance.placeholder) this.instance.placeholder.remove(); +					if(this.instance.placeholder) { +						this.instance.placeholder.remove(); +					}  					inst._trigger("fromSortable", event);  					inst.dropped = false; //draggable revert needs that  				} -			}; +			}  		}); @@ -2177,205 +1708,276 @@ $.ui.plugin.add("draggable", "connectToSortable", {  });  $.ui.plugin.add("draggable", "cursor", { -	start: function(event, ui) { -		var t = $('body'), o = $(this).data('draggable').options; -		if (t.css("cursor")) o._cursor = t.css("cursor"); +	start: function() { +		var t = $("body"), o = $(this).data("ui-draggable").options; +		if (t.css("cursor")) { +			o._cursor = t.css("cursor"); +		}  		t.css("cursor", o.cursor);  	}, -	stop: function(event, ui) { -		var o = $(this).data('draggable').options; -		if (o._cursor) $('body').css("cursor", o._cursor); +	stop: function() { +		var o = $(this).data("ui-draggable").options; +		if (o._cursor) { +			$("body").css("cursor", o._cursor); +		}  	}  });  $.ui.plugin.add("draggable", "opacity", {  	start: function(event, ui) { -		var t = $(ui.helper), o = $(this).data('draggable').options; -		if(t.css("opacity")) o._opacity = t.css("opacity"); -		t.css('opacity', o.opacity); +		var t = $(ui.helper), o = $(this).data("ui-draggable").options; +		if(t.css("opacity")) { +			o._opacity = t.css("opacity"); +		} +		t.css("opacity", o.opacity);  	},  	stop: function(event, ui) { -		var o = $(this).data('draggable').options; -		if(o._opacity) $(ui.helper).css('opacity', o._opacity); +		var o = $(this).data("ui-draggable").options; +		if(o._opacity) { +			$(ui.helper).css("opacity", o._opacity); +		}  	}  });  $.ui.plugin.add("draggable", "scroll", { -	start: function(event, ui) { -		var i = $(this).data("draggable"); -		if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset(); +	start: function() { +		var i = $(this).data("ui-draggable"); +		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { +			i.overflowOffset = i.scrollParent.offset(); +		}  	}, -	drag: function(event, ui) { +	drag: function( event ) { -		var i = $(this).data("draggable"), o = i.options, scrolled = false; +		var i = $(this).data("ui-draggable"), o = i.options, scrolled = false; -		if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') { +		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { -			if(!o.axis || o.axis != 'x') { -				if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) +			if(!o.axis || o.axis !== "x") { +				if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {  					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; -				else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) +				} else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) {  					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed; +				}  			} -			if(!o.axis || o.axis != 'y') { -				if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) +			if(!o.axis || o.axis !== "y") { +				if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {  					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; -				else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) +				} else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) {  					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed; +				}  			}  		} else { -			if(!o.axis || o.axis != 'x') { -				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) +			if(!o.axis || o.axis !== "x") { +				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {  					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); -				else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) +				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {  					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); +				}  			} -			if(!o.axis || o.axis != 'y') { -				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) +			if(!o.axis || o.axis !== "y") { +				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {  					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); -				else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) +				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {  					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); +				}  			}  		} -		if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) +		if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {  			$.ui.ddmanager.prepareOffsets(i, event); +		}  	}  });  $.ui.plugin.add("draggable", "snap", { -	start: function(event, ui) { +	start: function() { + +		var i = $(this).data("ui-draggable"), +			o = i.options; -		var i = $(this).data("draggable"), o = i.options;  		i.snapElements = []; -		$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() { -			var $t = $(this); var $o = $t.offset(); -			if(this != i.element[0]) i.snapElements.push({ -				item: this, -				width: $t.outerWidth(), height: $t.outerHeight(), -				top: $o.top, left: $o.left -			}); +		$(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() { +			var $t = $(this), +				$o = $t.offset(); +			if(this !== i.element[0]) { +				i.snapElements.push({ +					item: this, +					width: $t.outerWidth(), height: $t.outerHeight(), +					top: $o.top, left: $o.left +				}); +			}  		});  	},  	drag: function(event, ui) { -		var inst = $(this).data("draggable"), o = inst.options; -		var d = o.snapTolerance; - -		var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, +		var ts, bs, ls, rs, l, r, t, b, i, first, +			inst = $(this).data("ui-draggable"), +			o = inst.options, +			d = o.snapTolerance, +			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,  			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; -		for (var i = inst.snapElements.length - 1; i >= 0; i--){ +		for (i = inst.snapElements.length - 1; i >= 0; i--){ -			var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width, -				t = inst.snapElements[i].top, b = t + inst.snapElements[i].height; +			l = inst.snapElements[i].left; +			r = l + inst.snapElements[i].width; +			t = inst.snapElements[i].top; +			b = t + inst.snapElements[i].height; -			//Yes, I know, this is insane ;) -			if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) { -				if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); +			if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) { +				if(inst.snapElements[i].snapping) { +					(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); +				}  				inst.snapElements[i].snapping = false;  				continue;  			} -			if(o.snapMode != 'inner') { -				var ts = Math.abs(t - y2) <= d; -				var bs = Math.abs(b - y1) <= d; -				var ls = Math.abs(l - x2) <= d; -				var rs = Math.abs(r - x1) <= d; -				if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; -				if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; -				if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; -				if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left; +			if(o.snapMode !== "inner") { +				ts = Math.abs(t - y2) <= d; +				bs = Math.abs(b - y1) <= d; +				ls = Math.abs(l - x2) <= d; +				rs = Math.abs(r - x1) <= d; +				if(ts) { +					ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; +				} +				if(bs) { +					ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; +				} +				if(ls) { +					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; +				} +				if(rs) { +					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left; +				}  			} -			var first = (ts || bs || ls || rs); +			first = (ts || bs || ls || rs); -			if(o.snapMode != 'outer') { -				var ts = Math.abs(t - y1) <= d; -				var bs = Math.abs(b - y2) <= d; -				var ls = Math.abs(l - x1) <= d; -				var rs = Math.abs(r - x2) <= d; -				if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; -				if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; -				if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; -				if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left; +			if(o.snapMode !== "outer") { +				ts = Math.abs(t - y1) <= d; +				bs = Math.abs(b - y2) <= d; +				ls = Math.abs(l - x1) <= d; +				rs = Math.abs(r - x2) <= d; +				if(ts) { +					ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; +				} +				if(bs) { +					ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; +				} +				if(ls) { +					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; +				} +				if(rs) { +					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left; +				}  			} -			if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) +			if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {  				(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); +			}  			inst.snapElements[i].snapping = (ts || bs || ls || rs || first); -		}; +		}  	}  });  $.ui.plugin.add("draggable", "stack", { -	start: function(event, ui) { - -		var o = $(this).data("draggable").options; +	start: function() { +		var min, +			o = this.data("ui-draggable").options, +			group = $.makeArray($(o.stack)).sort(function(a,b) { +				return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0); +			}); -		var group = $.makeArray($(o.stack)).sort(function(a,b) { -			return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0); -		});  		if (!group.length) { return; } -		var min = parseInt(group[0].style.zIndex) || 0; +		min = parseInt($(group[0]).css("zIndex"), 10) || 0;  		$(group).each(function(i) { -			this.style.zIndex = min + i; +			$(this).css("zIndex", min + i);  		}); - -		this[0].style.zIndex = min + group.length; - +		this.css("zIndex", (min + group.length));  	}  });  $.ui.plugin.add("draggable", "zIndex", {  	start: function(event, ui) { -		var t = $(ui.helper), o = $(this).data("draggable").options; -		if(t.css("zIndex")) o._zIndex = t.css("zIndex"); -		t.css('zIndex', o.zIndex); +		var t = $(ui.helper), o = $(this).data("ui-draggable").options; +		if(t.css("zIndex")) { +			o._zIndex = t.css("zIndex"); +		} +		t.css("zIndex", o.zIndex);  	},  	stop: function(event, ui) { -		var o = $(this).data("draggable").options; -		if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex); +		var o = $(this).data("ui-draggable").options; +		if(o._zIndex) { +			$(ui.helper).css("zIndex", o._zIndex); +		}  	}  });  })(jQuery); +  (function( $, undefined ) { +function isOverAxis( x, reference, size ) { +	return ( x > reference ) && ( x < ( reference + size ) ); +} +  $.widget("ui.droppable", { -	version: "1.9.2", +	version: "1.10.4",  	widgetEventPrefix: "drop",  	options: { -		accept: '*', +		accept: "*",  		activeClass: false,  		addClasses: true,  		greedy: false,  		hoverClass: false, -		scope: 'default', -		tolerance: 'intersect' +		scope: "default", +		tolerance: "intersect", + +		// callbacks +		activate: null, +		deactivate: null, +		drop: null, +		out: null, +		over: null  	},  	_create: function() { -		var o = this.options, accept = o.accept; -		this.isover = 0; this.isout = 1; +		var proportions, +			o = this.options, +			accept = o.accept; + +		this.isover = false; +		this.isout = true;  		this.accept = $.isFunction(accept) ? accept : function(d) {  			return d.is(accept);  		}; -		//Store the droppable's proportions -		this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight }; +		this.proportions = function( /* valueToWrite */ ) { +			if ( arguments.length ) { +				// Store the droppable's proportions +				proportions = arguments[ 0 ]; +			} else { +				// Retrieve or derive the droppable's proportions +				return proportions ? +					proportions : +					proportions = { +						width: this.element[ 0 ].offsetWidth, +						height: this.element[ 0 ].offsetHeight +					}; +			} +		};  		// Add the reference and positions to the manager  		$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || []; @@ -2386,17 +1988,21 @@ $.widget("ui.droppable", {  	},  	_destroy: function() { -		var drop = $.ui.ddmanager.droppables[this.options.scope]; -		for ( var i = 0; i < drop.length; i++ ) -			if ( drop[i] == this ) +		var i = 0, +			drop = $.ui.ddmanager.droppables[this.options.scope]; + +		for ( ; i < drop.length; i++ ) { +			if ( drop[i] === this ) {  				drop.splice(i, 1); +			} +		}  		this.element.removeClass("ui-droppable ui-droppable-disabled");  	},  	_setOption: function(key, value) { -		if(key == 'accept') { +		if(key === "accept") {  			this.accept = $.isFunction(value) ? value : function(d) {  				return d.is(value);  			}; @@ -2406,24 +2012,38 @@ $.widget("ui.droppable", {  	_activate: function(event) {  		var draggable = $.ui.ddmanager.current; -		if(this.options.activeClass) this.element.addClass(this.options.activeClass); -		(draggable && this._trigger('activate', event, this.ui(draggable))); +		if(this.options.activeClass) { +			this.element.addClass(this.options.activeClass); +		} +		if(draggable){ +			this._trigger("activate", event, this.ui(draggable)); +		}  	},  	_deactivate: function(event) {  		var draggable = $.ui.ddmanager.current; -		if(this.options.activeClass) this.element.removeClass(this.options.activeClass); -		(draggable && this._trigger('deactivate', event, this.ui(draggable))); +		if(this.options.activeClass) { +			this.element.removeClass(this.options.activeClass); +		} +		if(draggable){ +			this._trigger("deactivate", event, this.ui(draggable)); +		}  	},  	_over: function(event) {  		var draggable = $.ui.ddmanager.current; -		if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element + +		// Bail if draggable and droppable are same element +		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { +			return; +		}  		if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { -			if(this.options.hoverClass) this.element.addClass(this.options.hoverClass); -			this._trigger('over', event, this.ui(draggable)); +			if(this.options.hoverClass) { +				this.element.addClass(this.options.hoverClass); +			} +			this._trigger("over", event, this.ui(draggable));  		}  	}, @@ -2431,37 +2051,53 @@ $.widget("ui.droppable", {  	_out: function(event) {  		var draggable = $.ui.ddmanager.current; -		if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element + +		// Bail if draggable and droppable are same element +		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { +			return; +		}  		if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { -			if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass); -			this._trigger('out', event, this.ui(draggable)); +			if(this.options.hoverClass) { +				this.element.removeClass(this.options.hoverClass); +			} +			this._trigger("out", event, this.ui(draggable));  		}  	},  	_drop: function(event,custom) { -		var draggable = custom || $.ui.ddmanager.current; -		if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element +		var draggable = custom || $.ui.ddmanager.current, +			childrenIntersection = false; -		var childrenIntersection = false; -		this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() { -			var inst = $.data(this, 'droppable'); +		// Bail if draggable and droppable are same element +		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { +			return false; +		} + +		this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() { +			var inst = $.data(this, "ui-droppable");  			if( -				inst.options.greedy -				&& !inst.options.disabled -				&& inst.options.scope == draggable.options.scope -				&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) -				&& $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance) +				inst.options.greedy && +				!inst.options.disabled && +				inst.options.scope === draggable.options.scope && +				inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) && +				$.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)  			) { childrenIntersection = true; return false; }  		}); -		if(childrenIntersection) return false; +		if(childrenIntersection) { +			return false; +		}  		if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { -			if(this.options.activeClass) this.element.removeClass(this.options.activeClass); -			if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass); -			this._trigger('drop', event, this.ui(draggable)); +			if(this.options.activeClass) { +				this.element.removeClass(this.options.activeClass); +			} +			if(this.options.hoverClass) { +				this.element.removeClass(this.options.hoverClass); +			} +			this._trigger("drop", event, this.ui(draggable));  			return this.element;  		} @@ -2482,44 +2118,44 @@ $.widget("ui.droppable", {  $.ui.intersect = function(draggable, droppable, toleranceMode) { -	if (!droppable.offset) return false; +	if (!droppable.offset) { +		return false; +	} -	var x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width, -		y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height; -	var l = droppable.offset.left, r = l + droppable.proportions.width, -		t = droppable.offset.top, b = t + droppable.proportions.height; +	var draggableLeft, draggableTop, +		x1 = (draggable.positionAbs || draggable.position.absolute).left, +		y1 = (draggable.positionAbs || draggable.position.absolute).top, +		x2 = x1 + draggable.helperProportions.width, +		y2 = y1 + draggable.helperProportions.height, +		l = droppable.offset.left, +		t = droppable.offset.top, +		r = l + droppable.proportions().width, +		b = t + droppable.proportions().height;  	switch (toleranceMode) { -		case 'fit': -			return (l <= x1 && x2 <= r -				&& t <= y1 && y2 <= b); -			break; -		case 'intersect': -			return (l < x1 + (draggable.helperProportions.width / 2) // Right Half -				&& x2 - (draggable.helperProportions.width / 2) < r // Left Half -				&& t < y1 + (draggable.helperProportions.height / 2) // Bottom Half -				&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half -			break; -		case 'pointer': -			var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left), -				draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top), -				isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width); -			return isOver; -			break; -		case 'touch': +		case "fit": +			return (l <= x1 && x2 <= r && t <= y1 && y2 <= b); +		case "intersect": +			return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half +				x2 - (draggable.helperProportions.width / 2) < r && // Left Half +				t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half +				y2 - (draggable.helperProportions.height / 2) < b ); // Top Half +		case "pointer": +			draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left); +			draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top); +			return isOverAxis( draggableTop, t, droppable.proportions().height ) && isOverAxis( draggableLeft, l, droppable.proportions().width ); +		case "touch":  			return ( -					(y1 >= t && y1 <= b) ||	// Top edge touching -					(y2 >= t && y2 <= b) ||	// Bottom edge touching -					(y1 < t && y2 > b)		// Surrounded vertically -				) && ( -					(x1 >= l && x1 <= r) ||	// Left edge touching -					(x2 >= l && x2 <= r) ||	// Right edge touching -					(x1 < l && x2 > r)		// Surrounded horizontally -				); -			break; +				(y1 >= t && y1 <= b) ||	// Top edge touching +				(y2 >= t && y2 <= b) ||	// Bottom edge touching +				(y1 < t && y2 > b)		// Surrounded vertically +			) && ( +				(x1 >= l && x1 <= r) ||	// Left edge touching +				(x2 >= l && x2 <= r) ||	// Right edge touching +				(x1 < l && x2 > r)		// Surrounded horizontally +			);  		default:  			return false; -			break;  		}  }; @@ -2529,23 +2165,41 @@ $.ui.intersect = function(draggable, droppable, toleranceMode) {  */  $.ui.ddmanager = {  	current: null, -	droppables: { 'default': [] }, +	droppables: { "default": [] },  	prepareOffsets: function(t, event) { -		var m = $.ui.ddmanager.droppables[t.options.scope] || []; -		var type = event ? event.type : null; // workaround for #2317 -		var list = (t.currentItem || t.element).find(":data(droppable)").andSelf(); +		var i, j, +			m = $.ui.ddmanager.droppables[t.options.scope] || [], +			type = event ? event.type : null, // workaround for #2317 +			list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack(); -		droppablesLoop: for (var i = 0; i < m.length; i++) { +		droppablesLoop: for (i = 0; i < m.length; i++) { + +			//No disabled and non-accepted +			if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) { +				continue; +			} + +			// Filter out elements in the current dragged item +			for (j=0; j < list.length; j++) { +				if(list[j] === m[i].element[0]) { +					m[i].proportions().height = 0; +					continue droppablesLoop; +				} +			} -			if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;	//No disabled and non-accepted -			for (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item -			m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; 									//If the element is not visible, continue +			m[i].visible = m[i].element.css("display") !== "none"; +			if(!m[i].visible) { +				continue; +			} -			if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables +			//Activate the droppable if used directly from draggables +			if(type === "mousedown") { +				m[i]._activate.call(m[i], event); +			} -			m[i].offset = m[i].element.offset(); -			m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight }; +			m[ i ].offset = m[ i ].element.offset(); +			m[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight });  		} @@ -2553,14 +2207,19 @@ $.ui.ddmanager = {  	drop: function(draggable, event) {  		var dropped = false; -		$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { +		// Create a copy of the droppables in case the list changes during the drop (#9116) +		$.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function() { -			if(!this.options) return; -			if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) +			if(!this.options) { +				return; +			} +			if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) {  				dropped = this._drop.call(this, event) || dropped; +			}  			if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { -				this.isout = 1; this.isover = 0; +				this.isout = true; +				this.isover = false;  				this._deactivate.call(this, event);  			} @@ -2571,51 +2230,60 @@ $.ui.ddmanager = {  	dragStart: function( draggable, event ) {  		//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)  		draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() { -			if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event ); +			if( !draggable.options.refreshPositions ) { +				$.ui.ddmanager.prepareOffsets( draggable, event ); +			}  		});  	},  	drag: function(draggable, event) {  		//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse. -		if(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event); +		if(draggable.options.refreshPositions) { +			$.ui.ddmanager.prepareOffsets(draggable, event); +		}  		//Run through all droppables and check their positions based on specific tolerance options  		$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { -			if(this.options.disabled || this.greedyChild || !this.visible) return; -			var intersects = $.ui.intersect(draggable, this, this.options.tolerance); +			if(this.options.disabled || this.greedyChild || !this.visible) { +				return; +			} -			var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null); -			if(!c) return; +			var parentInstance, scope, parent, +				intersects = $.ui.intersect(draggable, this, this.options.tolerance), +				c = !intersects && this.isover ? "isout" : (intersects && !this.isover ? "isover" : null); +			if(!c) { +				return; +			} -			var parentInstance;  			if (this.options.greedy) {  				// find droppable parents with same scope -				var scope = this.options.scope; -				var parent = this.element.parents(':data(droppable)').filter(function () { -					return $.data(this, 'droppable').options.scope === scope; +				scope = this.options.scope; +				parent = this.element.parents(":data(ui-droppable)").filter(function () { +					return $.data(this, "ui-droppable").options.scope === scope;  				});  				if (parent.length) { -					parentInstance = $.data(parent[0], 'droppable'); -					parentInstance.greedyChild = (c == 'isover' ? 1 : 0); +					parentInstance = $.data(parent[0], "ui-droppable"); +					parentInstance.greedyChild = (c === "isover");  				}  			}  			// we just moved into a greedy child -			if (parentInstance && c == 'isover') { -				parentInstance['isover'] = 0; -				parentInstance['isout'] = 1; +			if (parentInstance && c === "isover") { +				parentInstance.isover = false; +				parentInstance.isout = true;  				parentInstance._out.call(parentInstance, event);  			} -			this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0; -			this[c == "isover" ? "_over" : "_out"].call(this, event); +			this[c] = true; +			this[c === "isout" ? "isover" : "isout"] = false; +			this[c === "isover" ? "_over" : "_out"].call(this, event);  			// we just moved out of a greedy child -			if (parentInstance && c == 'isout') { -				parentInstance['isout'] = 0; -				parentInstance['isover'] = 1; +			if (parentInstance && c === "isout") { +				parentInstance.isout = false; +				parentInstance.isover = true;  				parentInstance._over.call(parentInstance, event);  			}  		}); @@ -2624,15 +2292,26 @@ $.ui.ddmanager = {  	dragStop: function( draggable, event ) {  		draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );  		//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003) -		if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event ); +		if( !draggable.options.refreshPositions ) { +			$.ui.ddmanager.prepareOffsets( draggable, event ); +		}  	}  };  })(jQuery); +  (function( $, undefined ) { +function num(v) { +	return parseInt(v, 10) || 0; +} + +function isNumber(value) { +	return !isNaN(parseInt(value, 10)); +} +  $.widget("ui.resizable", $.ui.mouse, { -	version: "1.9.2", +	version: "1.10.4",  	widgetEventPrefix: "resize",  	options: {  		alsoResize: false, @@ -2650,11 +2329,19 @@ $.widget("ui.resizable", $.ui.mouse, {  		maxWidth: null,  		minHeight: 10,  		minWidth: 10, -		zIndex: 1000 +		// See #7960 +		zIndex: 90, + +		// callbacks +		resize: null, +		start: null, +		stop: null  	},  	_create: function() { -		var that = this, o = this.options; +		var n, i, handle, axis, hname, +			that = this, +			o = this.options;  		this.element.addClass("ui-resizable");  		$.extend(this, { @@ -2662,7 +2349,7 @@ $.widget("ui.resizable", $.ui.mouse, {  			aspectRatio: o.aspectRatio,  			originalElement: this.element,  			_proportionallyResizeElements: [], -			_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null +			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null  		});  		//Wrap the element if it cannot hold child nodes @@ -2670,18 +2357,18 @@ $.widget("ui.resizable", $.ui.mouse, {  			//Create a wrapper element and set the wrapper to the new current internal element  			this.element.wrap( -				$('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({ -					position: this.element.css('position'), +				$("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({ +					position: this.element.css("position"),  					width: this.element.outerWidth(),  					height: this.element.outerHeight(), -					top: this.element.css('top'), -					left: this.element.css('left') +					top: this.element.css("top"), +					left: this.element.css("left")  				})  			);  			//Overwrite the original this.element  			this.element = this.element.parent().data( -				"resizable", this.element.data('resizable') +				"ui-resizable", this.element.data("ui-resizable")  			);  			this.elementIsWrapper = true; @@ -2691,41 +2378,46 @@ $.widget("ui.resizable", $.ui.mouse, {  			this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});  			//Prevent Safari textarea resize -			this.originalResizeStyle = this.originalElement.css('resize'); -			this.originalElement.css('resize', 'none'); +			this.originalResizeStyle = this.originalElement.css("resize"); +			this.originalElement.css("resize", "none");  			//Push the actual element to our proportionallyResize internal array -			this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' })); +			this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" }));  			// avoid IE jump (hard set the margin) -			this.originalElement.css({ margin: this.originalElement.css('margin') }); +			this.originalElement.css({ margin: this.originalElement.css("margin") });  			// fix handlers offset  			this._proportionallyResize();  		} -		this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' }); -		if(this.handles.constructor == String) { +		this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" }); +		if(this.handles.constructor === String) { -			if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw'; -			var n = this.handles.split(","); this.handles = {}; +			if ( this.handles === "all") { +				this.handles = "n,e,s,w,se,sw,ne,nw"; +			} + +			n = this.handles.split(","); +			this.handles = {}; -			for(var i = 0; i < n.length; i++) { +			for(i = 0; i < n.length; i++) { -				var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle; -				var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>'); +				handle = $.trim(n[i]); +				hname = "ui-resizable-"+handle; +				axis = $("<div class='ui-resizable-handle " + hname + "'></div>");  				// Apply zIndex to all handles - see #7960  				axis.css({ zIndex: o.zIndex });  				//TODO : What's going on here? -				if ('se' == handle) { -					axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se'); -				}; +				if ("se" === handle) { +					axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); +				}  				//Insert into internal handles object and append to element -				this.handles[handle] = '.ui-resizable-'+handle; +				this.handles[handle] = ".ui-resizable-"+handle;  				this.element.append(axis);  			} @@ -2733,26 +2425,29 @@ $.widget("ui.resizable", $.ui.mouse, {  		this._renderAxis = function(target) { +			var i, axis, padPos, padWrapper; +  			target = target || this.element; -			for(var i in this.handles) { +			for(i in this.handles) { -				if(this.handles[i].constructor == String) +				if(this.handles[i].constructor === String) {  					this.handles[i] = $(this.handles[i], this.element).show(); +				}  				//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)  				if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { -					var axis = $(this.handles[i], this.element), padWrapper = 0; +					axis = $(this.handles[i], this.element);  					//Checking the correct pad and border  					padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();  					//The padding type i have to apply... -					var padPos = [ 'padding', -						/ne|nw|n/.test(i) ? 'Top' : -						/se|sw|s/.test(i) ? 'Bottom' : -						/^e$/.test(i) ? 'Right' : 'Left' ].join(""); +					padPos = [ "padding", +						/ne|nw|n/.test(i) ? "Top" : +						/se|sw|s/.test(i) ? "Bottom" : +						/^e$/.test(i) ? "Right" : "Left" ].join("");  					target.css(padPos, padWrapper); @@ -2761,25 +2456,26 @@ $.widget("ui.resizable", $.ui.mouse, {  				}  				//TODO: What's that good for? There's not anything to be executed left -				if(!$(this.handles[i]).length) +				if(!$(this.handles[i]).length) {  					continue; - +				}  			}  		};  		//TODO: make renderAxis a prototype function  		this._renderAxis(this.element); -		this._handles = $('.ui-resizable-handle', this.element) +		this._handles = $(".ui-resizable-handle", this.element)  			.disableSelection();  		//Matching axis name  		this._handles.mouseover(function() {  			if (!that.resizing) { -				if (this.className) -					var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); +				if (this.className) { +					axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); +				}  				//Axis, default = se -				that.axis = axis && axis[1] ? axis[1] : 'se'; +				that.axis = axis && axis[1] ? axis[1] : "se";  			}  		}); @@ -2789,12 +2485,16 @@ $.widget("ui.resizable", $.ui.mouse, {  			$(this.element)  				.addClass("ui-resizable-autohide")  				.mouseenter(function() { -					if (o.disabled) return; +					if (o.disabled) { +						return; +					}  					$(this).removeClass("ui-resizable-autohide");  					that._handles.show();  				})  				.mouseleave(function(){ -					if (o.disabled) return; +					if (o.disabled) { +						return; +					}  					if (!that.resizing) {  						$(this).addClass("ui-resizable-autohide");  						that._handles.hide(); @@ -2811,57 +2511,66 @@ $.widget("ui.resizable", $.ui.mouse, {  		this._mouseDestroy(); -		var _destroy = function(exp) { -			$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") -				.removeData("resizable").removeData("ui-resizable").unbind(".resizable").find('.ui-resizable-handle').remove(); -		}; +		var wrapper, +			_destroy = function(exp) { +				$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") +					.removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove(); +			};  		//TODO: Unwrap at same DOM position  		if (this.elementIsWrapper) {  			_destroy(this.element); -			var wrapper = this.element; +			wrapper = this.element;  			this.originalElement.css({ -				position: wrapper.css('position'), +				position: wrapper.css("position"),  				width: wrapper.outerWidth(),  				height: wrapper.outerHeight(), -				top: wrapper.css('top'), -				left: wrapper.css('left') +				top: wrapper.css("top"), +				left: wrapper.css("left")  			}).insertAfter( wrapper );  			wrapper.remove();  		} -		this.originalElement.css('resize', this.originalResizeStyle); +		this.originalElement.css("resize", this.originalResizeStyle);  		_destroy(this.originalElement);  		return this;  	},  	_mouseCapture: function(event) { -		var handle = false; -		for (var i in this.handles) { -			if ($(this.handles[i])[0] == event.target) { -				handle = true; +		var i, handle, +			capture = false; + +		for (i in this.handles) { +			handle = $(this.handles[i])[0]; +			if (handle === event.target || $.contains(handle, event.target)) { +				capture = true;  			}  		} -		return !this.options.disabled && handle; +		return !this.options.disabled && capture;  	},  	_mouseStart: function(event) { -		var o = this.options, iniPos = this.element.position(), el = this.element; +		var curleft, curtop, cursor, +			o = this.options, +			iniPos = this.element.position(), +			el = this.element;  		this.resizing = true; -		this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };  		// bugfix for http://dev.jquery.com/ticket/1749 -		if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) { -			el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left }); +		if ( (/absolute/).test( el.css("position") ) ) { +			el.css({ position: "absolute", top: el.css("top"), left: el.css("left") }); +		} else if (el.is(".ui-draggable")) { +			el.css({ position: "absolute", top: iniPos.top, left: iniPos.left });  		}  		this._renderProxy(); -		var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top')); +		curleft = num(this.helper.css("left")); +		curtop = num(this.helper.css("top"));  		if (o.containment) {  			curleft += $(o.containment).scrollLeft() || 0; @@ -2871,17 +2580,17 @@ $.widget("ui.resizable", $.ui.mouse, {  		//Store needed variables  		this.offset = this.helper.offset();  		this.position = { left: curleft, top: curtop }; -		this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; +		this.size = this._helper ? { width: this.helper.width(), height: this.helper.height() } : { width: el.width(), height: el.height() };  		this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };  		this.originalPosition = { left: curleft, top: curtop };  		this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };  		this.originalMousePosition = { left: event.pageX, top: event.pageY };  		//Aspect Ratio -		this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); +		this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); -		var cursor = $('.ui-resizable-' + this.axis).css('cursor'); -		$('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor); +		cursor = $(".ui-resizable-" + this.axis).css("cursor"); +		$("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);  		el.addClass("ui-resizable-resizing");  		this._propagate("start", event); @@ -2891,38 +2600,60 @@ $.widget("ui.resizable", $.ui.mouse, {  	_mouseDrag: function(event) {  		//Increase performance, avoid regex -		var el = this.helper, o = this.options, props = {}, -			that = this, smp = this.originalMousePosition, a = this.axis; +		var data, +			el = this.helper, props = {}, +			smp = this.originalMousePosition, +			a = this.axis, +			prevTop = this.position.top, +			prevLeft = this.position.left, +			prevWidth = this.size.width, +			prevHeight = this.size.height, +			dx = (event.pageX-smp.left)||0, +			dy = (event.pageY-smp.top)||0, +			trigger = this._change[a]; -		var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0; -		var trigger = this._change[a]; -		if (!trigger) return false; +		if (!trigger) { +			return false; +		}  		// Calculate the attrs that will be change -		var data = trigger.apply(this, [event, dx, dy]); +		data = trigger.apply(this, [event, dx, dy]);  		// Put this in the mouseDrag handler since the user can start pressing shift while resizing  		this._updateVirtualBoundaries(event.shiftKey); -		if (this._aspectRatio || event.shiftKey) +		if (this._aspectRatio || event.shiftKey) {  			data = this._updateRatio(data, event); +		}  		data = this._respectSize(data, event); +		this._updateCache(data); +  		// plugins callbacks need to be called first  		this._propagate("resize", event); -		el.css({ -			top: this.position.top + "px", left: this.position.left + "px", -			width: this.size.width + "px", height: this.size.height + "px" -		}); +		if (this.position.top !== prevTop) { +			props.top = this.position.top + "px"; +		} +		if (this.position.left !== prevLeft) { +			props.left = this.position.left + "px"; +		} +		if (this.size.width !== prevWidth) { +			props.width = this.size.width + "px"; +		} +		if (this.size.height !== prevHeight) { +			props.height = this.size.height + "px"; +		} +		el.css(props); -		if (!this._helper && this._proportionallyResizeElements.length) +		if (!this._helper && this._proportionallyResizeElements.length) {  			this._proportionallyResize(); +		} -		this._updateCache(data); - -		// calling the user callback at the end -		this._trigger('resize', event, this.ui()); +		// Call the user callback if the element was resized +		if ( ! $.isEmptyObject(props) ) { +			this._trigger("resize", event, this.ui()); +		}  		return false;  	}, @@ -2930,39 +2661,49 @@ $.widget("ui.resizable", $.ui.mouse, {  	_mouseStop: function(event) {  		this.resizing = false; -		var o = this.options, that = this; +		var pr, ista, soffseth, soffsetw, s, left, top, +			o = this.options, that = this;  		if(this._helper) { -			var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName), -				soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height, -				soffsetw = ista ? 0 : that.sizeDiff.width; -			var s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) }, -				left = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null, -				top = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null; +			pr = this._proportionallyResizeElements; +			ista = pr.length && (/textarea/i).test(pr[0].nodeName); +			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height; +			soffsetw = ista ? 0 : that.sizeDiff.width; -			if (!o.animate) +			s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) }; +			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null; +			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; + +			if (!o.animate) {  				this.element.css($.extend(s, { top: top, left: left })); +			}  			that.helper.height(that.size.height);  			that.helper.width(that.size.width); -			if (this._helper && !o.animate) this._proportionallyResize(); +			if (this._helper && !o.animate) { +				this._proportionallyResize(); +			}  		} -		$('body').css('cursor', 'auto'); +		$("body").css("cursor", "auto");  		this.element.removeClass("ui-resizable-resizing");  		this._propagate("stop", event); -		if (this._helper) this.helper.remove(); +		if (this._helper) { +			this.helper.remove(); +		} +  		return false;  	},  	_updateVirtualBoundaries: function(forceAspectRatio) { -		var o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b; +		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, +			o = this.options;  		b = {  			minWidth: isNumber(o.minWidth) ? o.minWidth : 0, @@ -2979,35 +2720,55 @@ $.widget("ui.resizable", $.ui.mouse, {  			pMaxWidth = b.maxHeight * this.aspectRatio;  			pMaxHeight = b.maxWidth / this.aspectRatio; -			if(pMinWidth > b.minWidth) b.minWidth = pMinWidth; -			if(pMinHeight > b.minHeight) b.minHeight = pMinHeight; -			if(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth; -			if(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight; +			if(pMinWidth > b.minWidth) { +				b.minWidth = pMinWidth; +			} +			if(pMinHeight > b.minHeight) { +				b.minHeight = pMinHeight; +			} +			if(pMaxWidth < b.maxWidth) { +				b.maxWidth = pMaxWidth; +			} +			if(pMaxHeight < b.maxHeight) { +				b.maxHeight = pMaxHeight; +			}  		}  		this._vBoundaries = b;  	},  	_updateCache: function(data) { -		var o = this.options;  		this.offset = this.helper.offset(); -		if (isNumber(data.left)) this.position.left = data.left; -		if (isNumber(data.top)) this.position.top = data.top; -		if (isNumber(data.height)) this.size.height = data.height; -		if (isNumber(data.width)) this.size.width = data.width; +		if (isNumber(data.left)) { +			this.position.left = data.left; +		} +		if (isNumber(data.top)) { +			this.position.top = data.top; +		} +		if (isNumber(data.height)) { +			this.size.height = data.height; +		} +		if (isNumber(data.width)) { +			this.size.width = data.width; +		}  	}, -	_updateRatio: function(data, event) { +	_updateRatio: function( data ) { -		var o = this.options, cpos = this.position, csize = this.size, a = this.axis; +		var cpos = this.position, +			csize = this.size, +			a = this.axis; -		if (isNumber(data.height)) data.width = (data.height * this.aspectRatio); -		else if (isNumber(data.width)) data.height = (data.width / this.aspectRatio); +		if (isNumber(data.height)) { +			data.width = (data.height * this.aspectRatio); +		} else if (isNumber(data.width)) { +			data.height = (data.width / this.aspectRatio); +		} -		if (a == 'sw') { +		if (a === "sw") {  			data.left = cpos.left + (csize.width - data.width);  			data.top = null;  		} -		if (a == 'nw') { +		if (a === "nw") {  			data.top = cpos.top + (csize.height - data.height);  			data.left = cpos.left + (csize.width - data.width);  		} @@ -3015,51 +2776,72 @@ $.widget("ui.resizable", $.ui.mouse, {  		return data;  	}, -	_respectSize: function(data, event) { - -		var el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis, -				ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), -					isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height); +	_respectSize: function( data ) { -		if (isminw) data.width = o.minWidth; -		if (isminh) data.height = o.minHeight; -		if (ismaxw) data.width = o.maxWidth; -		if (ismaxh) data.height = o.maxHeight; - -		var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height; -		var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); +		var o = this._vBoundaries, +			a = this.axis, +			ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), +			isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height), +			dw = this.originalPosition.left + this.originalSize.width, +			dh = this.position.top + this.size.height, +			cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); +		if (isminw) { +			data.width = o.minWidth; +		} +		if (isminh) { +			data.height = o.minHeight; +		} +		if (ismaxw) { +			data.width = o.maxWidth; +		} +		if (ismaxh) { +			data.height = o.maxHeight; +		} -		if (isminw && cw) data.left = dw - o.minWidth; -		if (ismaxw && cw) data.left = dw - o.maxWidth; -		if (isminh && ch)	data.top = dh - o.minHeight; -		if (ismaxh && ch)	data.top = dh - o.maxHeight; +		if (isminw && cw) { +			data.left = dw - o.minWidth; +		} +		if (ismaxw && cw) { +			data.left = dw - o.maxWidth; +		} +		if (isminh && ch) { +			data.top = dh - o.minHeight; +		} +		if (ismaxh && ch) { +			data.top = dh - o.maxHeight; +		}  		// fixing jump error on top/left - bug #2330 -		var isNotwh = !data.width && !data.height; -		if (isNotwh && !data.left && data.top) data.top = null; -		else if (isNotwh && !data.top && data.left) data.left = null; +		if (!data.width && !data.height && !data.left && data.top) { +			data.top = null; +		} else if (!data.width && !data.height && !data.top && data.left) { +			data.left = null; +		}  		return data;  	},  	_proportionallyResize: function() { -		var o = this.options; -		if (!this._proportionallyResizeElements.length) return; -		var element = this.helper || this.element; +		if (!this._proportionallyResizeElements.length) { +			return; +		} -		for (var i=0; i < this._proportionallyResizeElements.length; i++) { +		var i, j, borders, paddings, prel, +			element = this.helper || this.element; -			var prel = this._proportionallyResizeElements[i]; +		for ( i=0; i < this._proportionallyResizeElements.length; i++) { + +			prel = this._proportionallyResizeElements[i];  			if (!this.borderDif) { -				var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')], -					p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')]; +				this.borderDif = []; +				borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")]; +				paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")]; -				this.borderDif = $.map(b, function(v, i) { -					var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0; -					return border + padding; -				}); +				for ( j = 0; j < borders.length; j++ ) { +					this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 ); +				}  			}  			prel.css({ @@ -3067,7 +2849,7 @@ $.widget("ui.resizable", $.ui.mouse, {  				width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0  			}); -		}; +		}  	}, @@ -3078,18 +2860,14 @@ $.widget("ui.resizable", $.ui.mouse, {  		if(this._helper) { -			this.helper = this.helper || $('<div style="overflow:hidden;"></div>'); - -			// fix ie6 offset TODO: This seems broken -			var ie6offset = ($.ui.ie6 ? 1 : 0), -			pxyoffset = ( $.ui.ie6 ? 2 : -1 ); +			this.helper = this.helper || $("<div style='overflow:hidden;'></div>");  			this.helper.addClass(this._helper).css({ -				width: this.element.outerWidth() + pxyoffset, -				height: this.element.outerHeight() + pxyoffset, -				position: 'absolute', -				left: this.elementOffset.left - ie6offset +'px', -				top: this.elementOffset.top - ie6offset +'px', +				width: this.element.outerWidth() - 1, +				height: this.element.outerHeight() - 1, +				position: "absolute", +				left: this.elementOffset.left +"px", +				top: this.elementOffset.top +"px",  				zIndex: ++o.zIndex //TODO: Don't modify option  			}); @@ -3104,15 +2882,15 @@ $.widget("ui.resizable", $.ui.mouse, {  	},  	_change: { -		e: function(event, dx, dy) { +		e: function(event, dx) {  			return { width: this.originalSize.width + dx };  		}, -		w: function(event, dx, dy) { -			var o = this.options, cs = this.originalSize, sp = this.originalPosition; +		w: function(event, dx) { +			var cs = this.originalSize, sp = this.originalPosition;  			return { left: sp.left + dx, width: cs.width - dx };  		},  		n: function(event, dx, dy) { -			var o = this.options, cs = this.originalSize, sp = this.originalPosition; +			var cs = this.originalSize, sp = this.originalPosition;  			return { top: sp.top + dy, height: cs.height - dy };  		},  		s: function(event, dx, dy) { @@ -3134,7 +2912,7 @@ $.widget("ui.resizable", $.ui.mouse, {  	_propagate: function(n, event) {  		$.ui.plugin.call(this, n, [event, this.ui()]); -		(n != "resize" && this._trigger(n, event, this.ui())); +		(n !== "resize" && this._trigger(n, event, this.ui()));  	},  	plugins: {}, @@ -3157,76 +2935,18 @@ $.widget("ui.resizable", $.ui.mouse, {   * Resizable Extensions   */ -$.ui.plugin.add("resizable", "alsoResize", { - -	start: function (event, ui) { -		var that = $(this).data("resizable"), o = that.options; - -		var _store = function (exp) { -			$(exp).each(function() { -				var el = $(this); -				el.data("resizable-alsoresize", { -					width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), -					left: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10) -				}); -			}); -		}; - -		if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) { -			if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); } -			else { $.each(o.alsoResize, function (exp) { _store(exp); }); } -		}else{ -			_store(o.alsoResize); -		} -	}, - -	resize: function (event, ui) { -		var that = $(this).data("resizable"), o = that.options, os = that.originalSize, op = that.originalPosition; - -		var delta = { -			height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, -			top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 -		}, - -		_alsoResize = function (exp, c) { -			$(exp).each(function() { -				var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, -					css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left']; - -				$.each(css, function (i, prop) { -					var sum = (start[prop]||0) + (delta[prop]||0); -					if (sum && sum >= 0) -						style[prop] = sum || null; -				}); - -				el.css(style); -			}); -		}; - -		if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) { -			$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); }); -		}else{ -			_alsoResize(o.alsoResize); -		} -	}, - -	stop: function (event, ui) { -		$(this).removeData("resizable-alsoresize"); -	} -}); -  $.ui.plugin.add("resizable", "animate", { -	stop: function(event, ui) { -		var that = $(this).data("resizable"), o = that.options; - -		var pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName), -					soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height, -						soffsetw = ista ? 0 : that.sizeDiff.width; - -		var style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, -					left = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null, -						top = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null; +	stop: function( event ) { +		var that = $(this).data("ui-resizable"), +			o = that.options, +			pr = that._proportionallyResizeElements, +			ista = pr.length && (/textarea/i).test(pr[0].nodeName), +			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height, +			soffsetw = ista ? 0 : that.sizeDiff.width, +			style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, +			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null, +			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;  		that.element.animate(  			$.extend(style, top && left ? { top: top, left: left } : {}), { @@ -3235,13 +2955,15 @@ $.ui.plugin.add("resizable", "animate", {  				step: function() {  					var data = { -						width: parseInt(that.element.css('width'), 10), -						height: parseInt(that.element.css('height'), 10), -						top: parseInt(that.element.css('top'), 10), -						left: parseInt(that.element.css('left'), 10) +						width: parseInt(that.element.css("width"), 10), +						height: parseInt(that.element.css("height"), 10), +						top: parseInt(that.element.css("top"), 10), +						left: parseInt(that.element.css("left"), 10)  					}; -					if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height }); +					if (pr && pr.length) { +						$(pr[0]).css({ width: data.width, height: data.height }); +					}  					// propagating resize, and updating values for each animation step  					that._updateCache(data); @@ -3256,14 +2978,21 @@ $.ui.plugin.add("resizable", "animate", {  $.ui.plugin.add("resizable", "containment", { -	start: function(event, ui) { -		var that = $(this).data("resizable"), o = that.options, el = that.element; -		var oc = o.containment,	ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; -		if (!ce) return; +	start: function() { +		var element, p, co, ch, cw, width, height, +			that = $(this).data("ui-resizable"), +			o = that.options, +			el = that.element, +			oc = o.containment, +			ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; + +		if (!ce) { +			return; +		}  		that.containerElement = $(ce); -		if (/document/.test(oc) || oc == document) { +		if (/document/.test(oc) || oc === document) {  			that.containerOffset = { left: 0, top: 0 };  			that.containerPosition = { left: 0, top: 0 }; @@ -3275,15 +3004,19 @@ $.ui.plugin.add("resizable", "containment", {  		// i'm a node, so compute top, left, right, bottom  		else { -			var element = $(ce), p = []; +			element = $(ce); +			p = [];  			$([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });  			that.containerOffset = element.offset();  			that.containerPosition = element.position();  			that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; -			var co = that.containerOffset, ch = that.containerSize.height,	cw = that.containerSize.width, -						width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); +			co = that.containerOffset; +			ch = that.containerSize.height; +			cw = that.containerSize.width; +			width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ); +			height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);  			that.parentData = {  				element: ce, left: co.left, top: co.top, width: width, height: height @@ -3291,156 +3024,280 @@ $.ui.plugin.add("resizable", "containment", {  		}  	}, -	resize: function(event, ui) { -		var that = $(this).data("resizable"), o = that.options, -				ps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position, -				pRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement; +	resize: function( event ) { +		var woset, hoset, isParent, isOffsetRelative, +			that = $(this).data("ui-resizable"), +			o = that.options, +			co = that.containerOffset, cp = that.position, +			pRatio = that._aspectRatio || event.shiftKey, +			cop = { top:0, left:0 }, ce = that.containerElement; -		if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co; +		if (ce[0] !== document && (/static/).test(ce.css("position"))) { +			cop = co; +		}  		if (cp.left < (that._helper ? co.left : 0)) {  			that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); -			if (pRatio) that.size.height = that.size.width / that.aspectRatio; +			if (pRatio) { +				that.size.height = that.size.width / that.aspectRatio; +			}  			that.position.left = o.helper ? co.left : 0;  		}  		if (cp.top < (that._helper ? co.top : 0)) {  			that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); -			if (pRatio) that.size.width = that.size.height * that.aspectRatio; +			if (pRatio) { +				that.size.width = that.size.height * that.aspectRatio; +			}  			that.position.top = that._helper ? co.top : 0;  		}  		that.offset.left = that.parentData.left+that.position.left;  		that.offset.top = that.parentData.top+that.position.top; -		var woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ), -					hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height ); +		woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ); +		hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height ); -		var isParent = that.containerElement.get(0) == that.element.parent().get(0), -			isOffsetRelative = /relative|absolute/.test(that.containerElement.css('position')); +		isParent = that.containerElement.get(0) === that.element.parent().get(0); +		isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position")); -		if(isParent && isOffsetRelative) woset -= that.parentData.left; +		if ( isParent && isOffsetRelative ) { +			woset -= Math.abs( that.parentData.left ); +		}  		if (woset + that.size.width >= that.parentData.width) {  			that.size.width = that.parentData.width - woset; -			if (pRatio) that.size.height = that.size.width / that.aspectRatio; +			if (pRatio) { +				that.size.height = that.size.width / that.aspectRatio; +			}  		}  		if (hoset + that.size.height >= that.parentData.height) {  			that.size.height = that.parentData.height - hoset; -			if (pRatio) that.size.width = that.size.height * that.aspectRatio; +			if (pRatio) { +				that.size.width = that.size.height * that.aspectRatio; +			}  		}  	}, -	stop: function(event, ui){ -		var that = $(this).data("resizable"), o = that.options, cp = that.position, -				co = that.containerOffset, cop = that.containerPosition, ce = that.containerElement; - -		var helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height; +	stop: function(){ +		var that = $(this).data("ui-resizable"), +			o = that.options, +			co = that.containerOffset, +			cop = that.containerPosition, +			ce = that.containerElement, +			helper = $(that.helper), +			ho = helper.offset(), +			w = helper.outerWidth() - that.sizeDiff.width, +			h = helper.outerHeight() - that.sizeDiff.height; -		if (that._helper && !o.animate && (/relative/).test(ce.css('position'))) +		if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) {  			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); +		} -		if (that._helper && !o.animate && (/static/).test(ce.css('position'))) +		if (that._helper && !o.animate && (/static/).test(ce.css("position"))) {  			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); +		} + +	} +}); + +$.ui.plugin.add("resizable", "alsoResize", { + +	start: function () { +		var that = $(this).data("ui-resizable"), +			o = that.options, +			_store = function (exp) { +				$(exp).each(function() { +					var el = $(this); +					el.data("ui-resizable-alsoresize", { +						width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), +						left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) +					}); +				}); +			}; + +		if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) { +			if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); } +			else { $.each(o.alsoResize, function (exp) { _store(exp); }); } +		}else{ +			_store(o.alsoResize); +		} +	}, + +	resize: function (event, ui) { +		var that = $(this).data("ui-resizable"), +			o = that.options, +			os = that.originalSize, +			op = that.originalPosition, +			delta = { +				height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, +				top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 +			}, + +			_alsoResize = function (exp, c) { +				$(exp).each(function() { +					var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {}, +						css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"]; + +					$.each(css, function (i, prop) { +						var sum = (start[prop]||0) + (delta[prop]||0); +						if (sum && sum >= 0) { +							style[prop] = sum || null; +						} +					}); + +					el.css(style); +				}); +			}; + +		if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) { +			$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); }); +		}else{ +			_alsoResize(o.alsoResize); +		} +	}, +	stop: function () { +		$(this).removeData("resizable-alsoresize");  	}  });  $.ui.plugin.add("resizable", "ghost", { -	start: function(event, ui) { +	start: function() { -		var that = $(this).data("resizable"), o = that.options, cs = that.size; +		var that = $(this).data("ui-resizable"), o = that.options, cs = that.size;  		that.ghost = that.originalElement.clone();  		that.ghost -			.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) -			.addClass('ui-resizable-ghost') -			.addClass(typeof o.ghost == 'string' ? o.ghost : ''); +			.css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) +			.addClass("ui-resizable-ghost") +			.addClass(typeof o.ghost === "string" ? o.ghost : "");  		that.ghost.appendTo(that.helper);  	}, -	resize: function(event, ui){ -		var that = $(this).data("resizable"), o = that.options; -		if (that.ghost) that.ghost.css({ position: 'relative', height: that.size.height, width: that.size.width }); +	resize: function(){ +		var that = $(this).data("ui-resizable"); +		if (that.ghost) { +			that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); +		}  	}, -	stop: function(event, ui){ -		var that = $(this).data("resizable"), o = that.options; -		if (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0)); +	stop: function() { +		var that = $(this).data("ui-resizable"); +		if (that.ghost && that.helper) { +			that.helper.get(0).removeChild(that.ghost.get(0)); +		}  	}  });  $.ui.plugin.add("resizable", "grid", { -	resize: function(event, ui) { -		var that = $(this).data("resizable"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey; -		o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid; -		var ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1); +	resize: function() { +		var that = $(this).data("ui-resizable"), +			o = that.options, +			cs = that.size, +			os = that.originalSize, +			op = that.originalPosition, +			a = that.axis, +			grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid, +			gridX = (grid[0]||1), +			gridY = (grid[1]||1), +			ox = Math.round((cs.width - os.width) / gridX) * gridX, +			oy = Math.round((cs.height - os.height) / gridY) * gridY, +			newWidth = os.width + ox, +			newHeight = os.height + oy, +			isMaxWidth = o.maxWidth && (o.maxWidth < newWidth), +			isMaxHeight = o.maxHeight && (o.maxHeight < newHeight), +			isMinWidth = o.minWidth && (o.minWidth > newWidth), +			isMinHeight = o.minHeight && (o.minHeight > newHeight); -		if (/^(se|s|e)$/.test(a)) { -			that.size.width = os.width + ox; -			that.size.height = os.height + oy; +		o.grid = grid; + +		if (isMinWidth) { +			newWidth = newWidth + gridX;  		} -		else if (/^(ne)$/.test(a)) { -			that.size.width = os.width + ox; -			that.size.height = os.height + oy; -			that.position.top = op.top - oy; +		if (isMinHeight) { +			newHeight = newHeight + gridY;  		} -		else if (/^(sw)$/.test(a)) { -			that.size.width = os.width + ox; -			that.size.height = os.height + oy; -			that.position.left = op.left - ox; +		if (isMaxWidth) { +			newWidth = newWidth - gridX;  		} -		else { -			that.size.width = os.width + ox; -			that.size.height = os.height + oy; +		if (isMaxHeight) { +			newHeight = newHeight - gridY; +		} + +		if (/^(se|s|e)$/.test(a)) { +			that.size.width = newWidth; +			that.size.height = newHeight; +		} else if (/^(ne)$/.test(a)) { +			that.size.width = newWidth; +			that.size.height = newHeight;  			that.position.top = op.top - oy; +		} else if (/^(sw)$/.test(a)) { +			that.size.width = newWidth; +			that.size.height = newHeight;  			that.position.left = op.left - ox; +		} else { +			if ( newHeight - gridY > 0 ) { +				that.size.height = newHeight; +				that.position.top = op.top - oy; +			} else { +				that.size.height = gridY; +				that.position.top = op.top + os.height - gridY; +			} +			if ( newWidth - gridX > 0 ) { +				that.size.width = newWidth; +				that.position.left = op.left - ox; +			} else { +				that.size.width = gridX; +				that.position.left = op.left + os.width - gridX; +			}  		}  	}  }); -var num = function(v) { -	return parseInt(v, 10) || 0; -}; - -var isNumber = function(value) { -	return !isNaN(parseInt(value, 10)); -}; -  })(jQuery); +  (function( $, undefined ) {  $.widget("ui.selectable", $.ui.mouse, { -	version: "1.9.2", +	version: "1.10.4",  	options: { -		appendTo: 'body', +		appendTo: "body",  		autoRefresh: true,  		distance: 0, -		filter: '*', -		tolerance: 'touch' +		filter: "*", +		tolerance: "touch", + +		// callbacks +		selected: null, +		selecting: null, +		start: null, +		stop: null, +		unselected: null, +		unselecting: null  	},  	_create: function() { -		var that = this; +		var selectees, +			that = this;  		this.element.addClass("ui-selectable");  		this.dragged = false;  		// cache selectee children based on filter -		var selectees;  		this.refresh = function() {  			selectees = $(that.options.filter, that.element[0]);  			selectees.addClass("ui-selectee");  			selectees.each(function() { -				var $this = $(this); -				var pos = $this.offset(); +				var $this = $(this), +					pos = $this.offset();  				$.data(this, "selectable-item", {  					element: this,  					$element: $this, @@ -3449,9 +3306,9 @@ $.widget("ui.selectable", $.ui.mouse, {  					right: pos.left + $this.outerWidth(),  					bottom: pos.top + $this.outerHeight(),  					startselected: false, -					selected: $this.hasClass('ui-selected'), -					selecting: $this.hasClass('ui-selecting'), -					unselecting: $this.hasClass('ui-unselecting') +					selected: $this.hasClass("ui-selected"), +					selecting: $this.hasClass("ui-selecting"), +					unselecting: $this.hasClass("ui-unselecting")  				});  			});  		}; @@ -3474,14 +3331,14 @@ $.widget("ui.selectable", $.ui.mouse, {  	},  	_mouseStart: function(event) { -		var that = this; +		var that = this, +			options = this.options;  		this.opos = [event.pageX, event.pageY]; -		if (this.options.disabled) +		if (this.options.disabled) {  			return; - -		var options = this.options; +		}  		this.selectees = $(options.filter, this.element[0]); @@ -3490,8 +3347,8 @@ $.widget("ui.selectable", $.ui.mouse, {  		$(options.appendTo).append(this.helper);  		// position helper (lasso)  		this.helper.css({ -			"left": event.clientX, -			"top": event.clientY, +			"left": event.pageX, +			"top": event.pageY,  			"width": 0,  			"height": 0  		}); @@ -3500,13 +3357,13 @@ $.widget("ui.selectable", $.ui.mouse, {  			this.refresh();  		} -		this.selectees.filter('.ui-selected').each(function() { +		this.selectees.filter(".ui-selected").each(function() {  			var selectee = $.data(this, "selectable-item");  			selectee.startselected = true;  			if (!event.metaKey && !event.ctrlKey) { -				selectee.$element.removeClass('ui-selected'); +				selectee.$element.removeClass("ui-selected");  				selectee.selected = false; -				selectee.$element.addClass('ui-unselecting'); +				selectee.$element.addClass("ui-unselecting");  				selectee.unselecting = true;  				// selectable UNSELECTING callback  				that._trigger("unselecting", event, { @@ -3515,10 +3372,11 @@ $.widget("ui.selectable", $.ui.mouse, {  			}  		}); -		$(event.target).parents().andSelf().each(function() { -			var selectee = $.data(this, "selectable-item"); +		$(event.target).parents().addBack().each(function() { +			var doSelect, +				selectee = $.data(this, "selectable-item");  			if (selectee) { -				var doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected'); +				doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected");  				selectee.$element  					.removeClass(doSelect ? "ui-unselecting" : "ui-selected")  					.addClass(doSelect ? "ui-selecting" : "ui-unselecting"); @@ -3542,43 +3400,52 @@ $.widget("ui.selectable", $.ui.mouse, {  	},  	_mouseDrag: function(event) { -		var that = this; +  		this.dragged = true; -		if (this.options.disabled) +		if (this.options.disabled) {  			return; +		} -		var options = this.options; +		var tmp, +			that = this, +			options = this.options, +			x1 = this.opos[0], +			y1 = this.opos[1], +			x2 = event.pageX, +			y2 = event.pageY; -		var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY; -		if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; } -		if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; } +		if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; } +		if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }  		this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});  		this.selectees.each(function() { -			var selectee = $.data(this, "selectable-item"); +			var selectee = $.data(this, "selectable-item"), +				hit = false; +  			//prevent helper from being selected if appendTo: selectable -			if (!selectee || selectee.element == that.element[0]) +			if (!selectee || selectee.element === that.element[0]) {  				return; -			var hit = false; -			if (options.tolerance == 'touch') { +			} + +			if (options.tolerance === "touch") {  				hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); -			} else if (options.tolerance == 'fit') { +			} else if (options.tolerance === "fit") {  				hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);  			}  			if (hit) {  				// SELECT  				if (selectee.selected) { -					selectee.$element.removeClass('ui-selected'); +					selectee.$element.removeClass("ui-selected");  					selectee.selected = false;  				}  				if (selectee.unselecting) { -					selectee.$element.removeClass('ui-unselecting'); +					selectee.$element.removeClass("ui-unselecting");  					selectee.unselecting = false;  				}  				if (!selectee.selecting) { -					selectee.$element.addClass('ui-selecting'); +					selectee.$element.addClass("ui-selecting");  					selectee.selecting = true;  					// selectable SELECTING callback  					that._trigger("selecting", event, { @@ -3589,15 +3456,15 @@ $.widget("ui.selectable", $.ui.mouse, {  				// UNSELECT  				if (selectee.selecting) {  					if ((event.metaKey || event.ctrlKey) && selectee.startselected) { -						selectee.$element.removeClass('ui-selecting'); +						selectee.$element.removeClass("ui-selecting");  						selectee.selecting = false; -						selectee.$element.addClass('ui-selected'); +						selectee.$element.addClass("ui-selected");  						selectee.selected = true;  					} else { -						selectee.$element.removeClass('ui-selecting'); +						selectee.$element.removeClass("ui-selecting");  						selectee.selecting = false;  						if (selectee.startselected) { -							selectee.$element.addClass('ui-unselecting'); +							selectee.$element.addClass("ui-unselecting");  							selectee.unselecting = true;  						}  						// selectable UNSELECTING callback @@ -3608,10 +3475,10 @@ $.widget("ui.selectable", $.ui.mouse, {  				}  				if (selectee.selected) {  					if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { -						selectee.$element.removeClass('ui-selected'); +						selectee.$element.removeClass("ui-selected");  						selectee.selected = false; -						selectee.$element.addClass('ui-unselecting'); +						selectee.$element.addClass("ui-unselecting");  						selectee.unselecting = true;  						// selectable UNSELECTING callback  						that._trigger("unselecting", event, { @@ -3630,20 +3497,18 @@ $.widget("ui.selectable", $.ui.mouse, {  		this.dragged = false; -		var options = this.options; - -		$('.ui-unselecting', this.element[0]).each(function() { +		$(".ui-unselecting", this.element[0]).each(function() {  			var selectee = $.data(this, "selectable-item"); -			selectee.$element.removeClass('ui-unselecting'); +			selectee.$element.removeClass("ui-unselecting");  			selectee.unselecting = false;  			selectee.startselected = false;  			that._trigger("unselected", event, {  				unselected: selectee.element  			});  		}); -		$('.ui-selecting', this.element[0]).each(function() { +		$(".ui-selecting", this.element[0]).each(function() {  			var selectee = $.data(this, "selectable-item"); -			selectee.$element.removeClass('ui-selecting').addClass('ui-selected'); +			selectee.$element.removeClass("ui-selecting").addClass("ui-selected");  			selectee.selecting = false;  			selectee.selected = true;  			selectee.startselected = true; @@ -3661,10 +3526,19 @@ $.widget("ui.selectable", $.ui.mouse, {  });  })(jQuery); +  (function( $, undefined ) { +function isOverAxis( x, reference, size ) { +	return ( x > reference ) && ( x < ( reference + size ) ); +} + +function isFloating(item) { +	return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); +} +  $.widget("ui.sortable", $.ui.mouse, { -	version: "1.9.2", +	version: "1.10.4",  	widgetEventPrefix: "sort",  	ready: false,  	options: { @@ -3672,7 +3546,7 @@ $.widget("ui.sortable", $.ui.mouse, {  		axis: false,  		connectWith: false,  		containment: false, -		cursor: 'auto', +		cursor: "auto",  		cursorAt: false,  		dropOnEmpty: true,  		forcePlaceholderSize: false, @@ -3680,7 +3554,7 @@ $.widget("ui.sortable", $.ui.mouse, {  		grid: false,  		handle: false,  		helper: "original", -		items: '> *', +		items: "> *",  		opacity: false,  		placeholder: false,  		revert: false, @@ -3689,7 +3563,21 @@ $.widget("ui.sortable", $.ui.mouse, {  		scrollSpeed: 20,  		scope: "default",  		tolerance: "intersect", -		zIndex: 1000 +		zIndex: 1000, + +		// callbacks +		activate: null, +		beforeStop: null, +		change: null, +		deactivate: null, +		out: null, +		over: null, +		receive: null, +		remove: null, +		sort: null, +		start: null, +		stop: null, +		update: null  	},  	_create: function() { @@ -3701,7 +3589,7 @@ $.widget("ui.sortable", $.ui.mouse, {  		this.refresh();  		//Let's determine if the items are being displayed horizontally -		this.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false; +		this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false;  		//Let's determine the parent's offset  		this.offset = this.element.offset(); @@ -3710,7 +3598,7 @@ $.widget("ui.sortable", $.ui.mouse, {  		this._mouseInit();  		//We're ready to go -		this.ready = true +		this.ready = true;  	}, @@ -3719,8 +3607,9 @@ $.widget("ui.sortable", $.ui.mouse, {  			.removeClass("ui-sortable ui-sortable-disabled");  		this._mouseDestroy(); -		for ( var i = this.items.length - 1; i >= 0; i-- ) +		for ( var i = this.items.length - 1; i >= 0; i-- ) {  			this.items[i].item.removeData(this.widgetName + "-item"); +		}  		return this;  	}, @@ -3737,32 +3626,44 @@ $.widget("ui.sortable", $.ui.mouse, {  	},  	_mouseCapture: function(event, overrideHandle) { -		var that = this; +		var currentItem = null, +			validHandle = false, +			that = this;  		if (this.reverting) {  			return false;  		} -		if(this.options.disabled || this.options.type == 'static') return false; +		if(this.options.disabled || this.options.type === "static") { +			return false; +		}  		//We have to refresh the items data once first  		this._refreshItems(event);  		//Find out if the clicked node (or one of its parents) is a actual item in this.items -		var currentItem = null, nodes = $(event.target).parents().each(function() { -			if($.data(this, that.widgetName + '-item') == that) { +		$(event.target).parents().each(function() { +			if($.data(this, that.widgetName + "-item") === that) {  				currentItem = $(this);  				return false;  			}  		}); -		if($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target); +		if($.data(event.target, that.widgetName + "-item") === that) { +			currentItem = $(event.target); +		} -		if(!currentItem) return false; +		if(!currentItem) { +			return false; +		}  		if(this.options.handle && !overrideHandle) { -			var validHandle = false; - -			$(this.options.handle, currentItem).find("*").andSelf().each(function() { if(this == event.target) validHandle = true; }); -			if(!validHandle) return false; +			$(this.options.handle, currentItem).find("*").addBack().each(function() { +				if(this === event.target) { +					validHandle = true; +				} +			}); +			if(!validHandle) { +				return false; +			}  		}  		this.currentItem = currentItem; @@ -3773,7 +3674,9 @@ $.widget("ui.sortable", $.ui.mouse, {  	_mouseStart: function(event, overrideHandle, noActivation) { -		var o = this.options; +		var i, body, +			o = this.options; +  		this.currentContainer = this;  		//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture @@ -3822,14 +3725,14 @@ $.widget("ui.sortable", $.ui.mouse, {  		this.originalPageX = event.pageX;  		this.originalPageY = event.pageY; -		//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied +		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied  		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));  		//Cache the former DOM position  		this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };  		//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way -		if(this.helper[0] != this.currentItem[0]) { +		if(this.helper[0] !== this.currentItem[0]) {  			this.currentItem.hide();  		} @@ -3837,47 +3740,63 @@ $.widget("ui.sortable", $.ui.mouse, {  		this._createPlaceholder();  		//Set a containment if given in the options -		if(o.containment) +		if(o.containment) {  			this._setContainment(); +		} -		if(o.cursor) { // cursor option -			if ($('body').css("cursor")) this._storedCursor = $('body').css("cursor"); -			$('body').css("cursor", o.cursor); +		if( o.cursor && o.cursor !== "auto" ) { // cursor option +			body = this.document.find( "body" ); + +			// support: IE +			this.storedCursor = body.css( "cursor" ); +			body.css( "cursor", o.cursor ); + +			this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body );  		}  		if(o.opacity) { // opacity option -			if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity"); +			if (this.helper.css("opacity")) { +				this._storedOpacity = this.helper.css("opacity"); +			}  			this.helper.css("opacity", o.opacity);  		}  		if(o.zIndex) { // zIndex option -			if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex"); +			if (this.helper.css("zIndex")) { +				this._storedZIndex = this.helper.css("zIndex"); +			}  			this.helper.css("zIndex", o.zIndex);  		}  		//Prepare scrolling -		if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') +		if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {  			this.overflowOffset = this.scrollParent.offset(); +		}  		//Call callbacks  		this._trigger("start", event, this._uiHash());  		//Recache the helper size -		if(!this._preserveHelperProportions) +		if(!this._preserveHelperProportions) {  			this._cacheHelperProportions(); +		} -		//Post 'activate' events to possible containers -		if(!noActivation) { -			 for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, this._uiHash(this)); } +		//Post "activate" events to possible containers +		if( !noActivation ) { +			for ( i = this.containers.length - 1; i >= 0; i-- ) { +				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); +			}  		}  		//Prepare possible droppables -		if($.ui.ddmanager) +		if($.ui.ddmanager) {  			$.ui.ddmanager.current = this; +		} -		if ($.ui.ddmanager && !o.dropBehaviour) +		if ($.ui.ddmanager && !o.dropBehaviour) {  			$.ui.ddmanager.prepareOffsets(this, event); +		}  		this.dragging = true; @@ -3888,6 +3807,9 @@ $.widget("ui.sortable", $.ui.mouse, {  	},  	_mouseDrag: function(event) { +		var i, item, itemElement, intersection, +			o = this.options, +			scrolled = false;  		//Compute the helpers position  		this.position = this._generatePosition(event); @@ -3899,70 +3821,86 @@ $.widget("ui.sortable", $.ui.mouse, {  		//Do scrolling  		if(this.options.scroll) { -			var o = this.options, scrolled = false; -			if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') { +			if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { -				if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) +				if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {  					this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; -				else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) +				} else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {  					this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; +				} -				if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) +				if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {  					this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; -				else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) +				} else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {  					this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; +				}  			} else { -				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) +				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {  					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); -				else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) +				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {  					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); +				} -				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) +				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {  					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); -				else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) +				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {  					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); +				}  			} -			if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) +			if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {  				$.ui.ddmanager.prepareOffsets(this, event); +			}  		}  		//Regenerate the absolute position used for position checks  		this.positionAbs = this._convertPositionTo("absolute");  		//Set the helper position -		if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px'; -		if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px'; +		if(!this.options.axis || this.options.axis !== "y") { +			this.helper[0].style.left = this.position.left+"px"; +		} +		if(!this.options.axis || this.options.axis !== "x") { +			this.helper[0].style.top = this.position.top+"px"; +		}  		//Rearrange -		for (var i = this.items.length - 1; i >= 0; i--) { +		for (i = this.items.length - 1; i >= 0; i--) {  			//Cache variables and intersection, continue if no intersection -			var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item); -			if (!intersection) continue; +			item = this.items[i]; +			itemElement = item.item[0]; +			intersection = this._intersectsWithPointer(item); +			if (!intersection) { +				continue; +			}  			// Only put the placeholder inside the current Container, skip all -			// items form other containers. This works because when moving +			// items from other containers. This works because when moving  			// an item from one container to another the  			// currentContainer is switched before the placeholder is moved.  			// -			// Without this moving items in "sub-sortables" can cause the placeholder to jitter -			// beetween the outer and inner container. -			if (item.instance !== this.currentContainer) continue; +			// Without this, moving items in "sub-sortables" can cause +			// the placeholder to jitter beetween the outer and inner container. +			if (item.instance !== this.currentContainer) { +				continue; +			} -			if (itemElement != this.currentItem[0] //cannot intersect with itself -				&&	this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before -				&&	!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked -				&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true) -				//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container +			// cannot intersect with itself +			// no useless actions that have been done before +			// no action if the item moved is the parent of the item checked +			if (itemElement !== this.currentItem[0] && +				this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && +				!$.contains(this.placeholder[0], itemElement) && +				(this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true)  			) { -				this.direction = intersection == 1 ? "down" : "up"; +				this.direction = intersection === 1 ? "down" : "up"; -				if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) { +				if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) {  					this._rearrange(event, item);  				} else {  					break; @@ -3977,10 +3915,12 @@ $.widget("ui.sortable", $.ui.mouse, {  		this._contactContainers(event);  		//Interconnect with droppables -		if($.ui.ddmanager) $.ui.ddmanager.drag(this, event); +		if($.ui.ddmanager) { +			$.ui.ddmanager.drag(this, event); +		}  		//Call callbacks -		this._trigger('sort', event, this._uiHash()); +		this._trigger("sort", event, this._uiHash());  		this.lastPositionAbs = this.positionAbs;  		return false; @@ -3989,22 +3929,29 @@ $.widget("ui.sortable", $.ui.mouse, {  	_mouseStop: function(event, noPropagation) { -		if(!event) return; +		if(!event) { +			return; +		}  		//If we are using droppables, inform the manager about the drop -		if ($.ui.ddmanager && !this.options.dropBehaviour) +		if ($.ui.ddmanager && !this.options.dropBehaviour) {  			$.ui.ddmanager.drop(this, event); +		}  		if(this.options.revert) { -			var that = this; -			var cur = this.placeholder.offset(); +			var that = this, +				cur = this.placeholder.offset(), +				axis = this.options.axis, +				animation = {}; +			if ( !axis || axis === "x" ) { +				animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft); +			} +			if ( !axis || axis === "y" ) { +				animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop); +			}  			this.reverting = true; - -			$(this.helper).animate({ -				left: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft), -				top: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop) -			}, parseInt(this.options.revert, 10) || 500, function() { +			$(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {  				that._clear(event);  			});  		} else { @@ -4021,10 +3968,11 @@ $.widget("ui.sortable", $.ui.mouse, {  			this._mouseUp({ target: null }); -			if(this.options.helper == "original") +			if(this.options.helper === "original") {  				this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); -			else +			} else {  				this.currentItem.show(); +			}  			//Post deactivating events to containers  			for (var i = this.containers.length - 1; i >= 0; i--){ @@ -4039,8 +3987,12 @@ $.widget("ui.sortable", $.ui.mouse, {  		if (this.placeholder) {  			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! -			if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]); -			if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove(); +			if(this.placeholder[0].parentNode) { +				this.placeholder[0].parentNode.removeChild(this.placeholder[0]); +			} +			if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { +				this.helper.remove(); +			}  			$.extend(this, {  				helper: null, @@ -4062,28 +4014,33 @@ $.widget("ui.sortable", $.ui.mouse, {  	serialize: function(o) { -		var items = this._getItemsAsjQuery(o && o.connected); -		var str = []; o = o || {}; +		var items = this._getItemsAsjQuery(o && o.connected), +			str = []; +		o = o || {};  		$(items).each(function() { -			var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/)); -			if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2])); +			var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); +			if (res) { +				str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2])); +			}  		});  		if(!str.length && o.key) { -			str.push(o.key + '='); +			str.push(o.key + "=");  		} -		return str.join('&'); +		return str.join("&");  	},  	toArray: function(o) { -		var items = this._getItemsAsjQuery(o && o.connected); -		var ret = []; o = o || {}; +		var items = this._getItemsAsjQuery(o && o.connected), +			ret = []; -		items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); }); +		o = o || {}; + +		items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); });  		return ret;  	}, @@ -4094,73 +4051,73 @@ $.widget("ui.sortable", $.ui.mouse, {  		var x1 = this.positionAbs.left,  			x2 = x1 + this.helperProportions.width,  			y1 = this.positionAbs.top, -			y2 = y1 + this.helperProportions.height; - -		var l = item.left, +			y2 = y1 + this.helperProportions.height, +			l = item.left,  			r = l + item.width,  			t = item.top, -			b = t + item.height; +			b = t + item.height, +			dyClick = this.offset.click.top, +			dxClick = this.offset.click.left, +			isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ), +			isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ), +			isOverElement = isOverElementHeight && isOverElementWidth; -		var dyClick = this.offset.click.top, -			dxClick = this.offset.click.left; - -		var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r; - -		if(	   this.options.tolerance == "pointer" -			|| this.options.forcePointerForContainers -			|| (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height']) +		if ( this.options.tolerance === "pointer" || +			this.options.forcePointerForContainers || +			(this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"])  		) {  			return isOverElement;  		} else { -			return (l < x1 + (this.helperProportions.width / 2) // Right Half -				&& x2 - (this.helperProportions.width / 2) < r // Left Half -				&& t < y1 + (this.helperProportions.height / 2) // Bottom Half -				&& y2 - (this.helperProportions.height / 2) < b ); // Top Half +			return (l < x1 + (this.helperProportions.width / 2) && // Right Half +				x2 - (this.helperProportions.width / 2) < r && // Left Half +				t < y1 + (this.helperProportions.height / 2) && // Bottom Half +				y2 - (this.helperProportions.height / 2) < b ); // Top Half  		}  	},  	_intersectsWithPointer: function(item) { -		var isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), -			isOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), +		var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), +			isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),  			isOverElement = isOverElementHeight && isOverElementWidth,  			verticalDirection = this._getDragVerticalDirection(),  			horizontalDirection = this._getDragHorizontalDirection(); -		if (!isOverElement) +		if (!isOverElement) {  			return false; +		}  		return this.floating ? -			( ((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1 ) -			: ( verticalDirection && (verticalDirection == "down" ? 2 : 1) ); +			( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 ) +			: ( verticalDirection && (verticalDirection === "down" ? 2 : 1) );  	},  	_intersectsWithSides: function(item) { -		var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), -			isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), +		var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), +			isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),  			verticalDirection = this._getDragVerticalDirection(),  			horizontalDirection = this._getDragHorizontalDirection();  		if (this.floating && horizontalDirection) { -			return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf)); +			return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf));  		} else { -			return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf)); +			return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf));  		}  	},  	_getDragVerticalDirection: function() {  		var delta = this.positionAbs.top - this.lastPositionAbs.top; -		return delta != 0 && (delta > 0 ? "down" : "up"); +		return delta !== 0 && (delta > 0 ? "down" : "up");  	},  	_getDragHorizontalDirection: function() {  		var delta = this.positionAbs.left - this.lastPositionAbs.left; -		return delta != 0 && (delta > 0 ? "right" : "left"); +		return delta !== 0 && (delta > 0 ? "right" : "left");  	},  	refresh: function(event) { @@ -4171,36 +4128,36 @@ $.widget("ui.sortable", $.ui.mouse, {  	_connectWith: function() {  		var options = this.options; -		return options.connectWith.constructor == String -			? [options.connectWith] -			: options.connectWith; +		return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;  	},  	_getItemsAsjQuery: function(connected) { -		var items = []; -		var queries = []; -		var connectWith = this._connectWith(); +		var i, j, cur, inst, +			items = [], +			queries = [], +			connectWith = this._connectWith();  		if(connectWith && connected) { -			for (var i = connectWith.length - 1; i >= 0; i--){ -				var cur = $(connectWith[i]); -				for (var j = cur.length - 1; j >= 0; j--){ -					var inst = $.data(cur[j], this.widgetName); -					if(inst && inst != this && !inst.options.disabled) { -						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), inst]); +			for (i = connectWith.length - 1; i >= 0; i--){ +				cur = $(connectWith[i]); +				for ( j = cur.length - 1; j >= 0; j--){ +					inst = $.data(cur[j], this.widgetFullName); +					if(inst && inst !== this && !inst.options.disabled) { +						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]);  					} -				}; -			}; +				} +			}  		} -		queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), this]); +		queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); -		for (var i = queries.length - 1; i >= 0; i--){ -			queries[i][0].each(function() { -				items.push(this); -			}); -		}; +		function addItems() { +			items.push( this ); +		} +		for (i = queries.length - 1; i >= 0; i--){ +			queries[i][0].each( addItems ); +		}  		return $(items); @@ -4212,9 +4169,10 @@ $.widget("ui.sortable", $.ui.mouse, {  		this.items = $.grep(this.items, function (item) {  			for (var j=0; j < list.length; j++) { -				if(list[j] == item.item[0]) +				if(list[j] === item.item[0]) {  					return false; -			}; +				} +			}  			return true;  		}); @@ -4224,31 +4182,33 @@ $.widget("ui.sortable", $.ui.mouse, {  		this.items = [];  		this.containers = [this]; -		var items = this.items; -		var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]]; -		var connectWith = this._connectWith(); + +		var i, j, cur, inst, targetData, _queries, item, queriesLength, +			items = this.items, +			queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], +			connectWith = this._connectWith();  		if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down -			for (var i = connectWith.length - 1; i >= 0; i--){ -				var cur = $(connectWith[i]); -				for (var j = cur.length - 1; j >= 0; j--){ -					var inst = $.data(cur[j], this.widgetName); -					if(inst && inst != this && !inst.options.disabled) { +			for (i = connectWith.length - 1; i >= 0; i--){ +				cur = $(connectWith[i]); +				for (j = cur.length - 1; j >= 0; j--){ +					inst = $.data(cur[j], this.widgetFullName); +					if(inst && inst !== this && !inst.options.disabled) {  						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);  						this.containers.push(inst);  					} -				}; -			}; +				} +			}  		} -		for (var i = queries.length - 1; i >= 0; i--) { -			var targetData = queries[i][1]; -			var _queries = queries[i][0]; +		for (i = queries.length - 1; i >= 0; i--) { +			targetData = queries[i][1]; +			_queries = queries[i][0]; -			for (var j=0, queriesLength = _queries.length; j < queriesLength; j++) { -				var item = $(_queries[j]); +			for (j=0, queriesLength = _queries.length; j < queriesLength; j++) { +				item = $(_queries[j]); -				item.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager) +				item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager)  				items.push({  					item: item, @@ -4256,8 +4216,8 @@ $.widget("ui.sortable", $.ui.mouse, {  					width: 0, height: 0,  					left: 0, top: 0  				}); -			}; -		}; +			} +		}  	}, @@ -4268,35 +4228,38 @@ $.widget("ui.sortable", $.ui.mouse, {  			this.offset.parent = this._getParentOffset();  		} -		for (var i = this.items.length - 1; i >= 0; i--){ -			var item = this.items[i]; +		var i, item, t, p; + +		for (i = this.items.length - 1; i >= 0; i--){ +			item = this.items[i];  			//We ignore calculating positions of all connected containers when we're not over them -			if(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0]) +			if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {  				continue; +			} -			var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; +			t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;  			if (!fast) {  				item.width = t.outerWidth();  				item.height = t.outerHeight();  			} -			var p = t.offset(); +			p = t.offset();  			item.left = p.left;  			item.top = p.top; -		}; +		}  		if(this.options.custom && this.options.custom.refreshContainers) {  			this.options.custom.refreshContainers.call(this);  		} else { -			for (var i = this.containers.length - 1; i >= 0; i--){ -				var p = this.containers[i].element.offset(); +			for (i = this.containers.length - 1; i >= 0; i--){ +				p = this.containers[i].element.offset();  				this.containers[i].containerCache.left = p.left;  				this.containers[i].containerCache.top = p.top;  				this.containers[i].containerCache.width	= this.containers[i].element.outerWidth();  				this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); -			}; +			}  		}  		return this; @@ -4304,31 +4267,46 @@ $.widget("ui.sortable", $.ui.mouse, {  	_createPlaceholder: function(that) {  		that = that || this; -		var o = that.options; +		var className, +			o = that.options; -		if(!o.placeholder || o.placeholder.constructor == String) { -			var className = o.placeholder; +		if(!o.placeholder || o.placeholder.constructor === String) { +			className = o.placeholder;  			o.placeholder = {  				element: function() { -					var el = $(document.createElement(that.currentItem[0].nodeName)) -						.addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") -						.removeClass("ui-sortable-helper")[0]; +					var nodeName = that.currentItem[0].nodeName.toLowerCase(), +						element = $( "<" + nodeName + ">", that.document[0] ) +							.addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") +							.removeClass("ui-sortable-helper"); -					if(!className) -						el.style.visibility = "hidden"; +					if ( nodeName === "tr" ) { +						that.currentItem.children().each(function() { +							$( "<td> </td>", that.document[0] ) +								.attr( "colspan", $( this ).attr( "colspan" ) || 1 ) +								.appendTo( element ); +						}); +					} else if ( nodeName === "img" ) { +						element.attr( "src", that.currentItem.attr( "src" ) ); +					} + +					if ( !className ) { +						element.css( "visibility", "hidden" ); +					} -					return el; +					return element;  				},  				update: function(container, p) {  					// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that  					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified -					if(className && !o.forcePlaceholderSize) return; +					if(className && !o.forcePlaceholderSize) { +						return; +					}  					//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item -					if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); }; -					if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); }; +					if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } +					if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }  				}  			};  		} @@ -4345,22 +4323,24 @@ $.widget("ui.sortable", $.ui.mouse, {  	},  	_contactContainers: function(event) { +		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, +			innermostContainer = null, +			innermostIndex = null;  		// get innermost container that intersects with item -		var innermostContainer = null, innermostIndex = null; - - -		for (var i = this.containers.length - 1; i >= 0; i--){ +		for (i = this.containers.length - 1; i >= 0; i--) {  			// never consider a container that's located within the item itself -			if($.contains(this.currentItem[0], this.containers[i].element[0])) +			if($.contains(this.currentItem[0], this.containers[i].element[0])) {  				continue; +			}  			if(this._intersectsWith(this.containers[i].containerCache)) {  				// if we've already found a container and it's more "inner" than this, then continue -				if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) +				if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {  					continue; +				}  				innermostContainer = this.containers[i];  				innermostIndex = i; @@ -4376,24 +4356,37 @@ $.widget("ui.sortable", $.ui.mouse, {  		}  		// if no intersecting containers found, return -		if(!innermostContainer) return; +		if(!innermostContainer) { +			return; +		}  		// move the item into the container if it's not there already  		if(this.containers.length === 1) { -			this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); -			this.containers[innermostIndex].containerCache.over = 1; +			if (!this.containers[innermostIndex].containerCache.over) { +				this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); +				this.containers[innermostIndex].containerCache.over = 1; +			}  		} else {  			//When entering a new container, we will find the item with the least distance and append our item near it -			var dist = 10000; var itemWithLeastDistance = null; -			var posProperty = this.containers[innermostIndex].floating ? 'left' : 'top'; -			var sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height'; -			var base = this.positionAbs[posProperty] + this.offset.click[posProperty]; -			for (var j = this.items.length - 1; j >= 0; j--) { -				if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue; -				if(this.items[j].item[0] == this.currentItem[0]) continue; -				var cur = this.items[j].item.offset()[posProperty]; -				var nearBottom = false; +			dist = 10000; +			itemWithLeastDistance = null; +			floating = innermostContainer.floating || isFloating(this.currentItem); +			posProperty = floating ? "left" : "top"; +			sizeProperty = floating ? "width" : "height"; +			base = this.positionAbs[posProperty] + this.offset.click[posProperty]; +			for (j = this.items.length - 1; j >= 0; j--) { +				if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { +					continue; +				} +				if(this.items[j].item[0] === this.currentItem[0]) { +					continue; +				} +				if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) { +					continue; +				} +				cur = this.items[j].item.offset()[posProperty]; +				nearBottom = false;  				if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){  					nearBottom = true;  					cur += this.items[j][sizeProperty]; @@ -4405,13 +4398,19 @@ $.widget("ui.sortable", $.ui.mouse, {  				}  			} -			if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled +			//Check if dropOnEmpty is enabled +			if(!itemWithLeastDistance && !this.options.dropOnEmpty) {  				return; +			} + +			if(this.currentContainer === this.containers[innermostIndex]) { +				return; +			} -			this.currentContainer = this.containers[innermostIndex];  			itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);  			this._trigger("change", event, this._uiHash());  			this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); +			this.currentContainer = this.containers[innermostIndex];  			//Update the placeholder  			this.options.placeholder.update(this.currentContainer, this.placeholder); @@ -4425,39 +4424,46 @@ $.widget("ui.sortable", $.ui.mouse, {  	_createHelper: function(event) { -		var o = this.options; -		var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem); +		var o = this.options, +			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); -		if(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already -			$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); +		//Add the helper to the DOM if that didn't happen already +		if(!helper.parents("body").length) { +			$(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); +		} -		if(helper[0] == this.currentItem[0]) +		if(helper[0] === this.currentItem[0]) {  			this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; +		} -		if(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width()); -		if(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height()); +		if(!helper[0].style.width || o.forceHelperSize) { +			helper.width(this.currentItem.width()); +		} +		if(!helper[0].style.height || o.forceHelperSize) { +			helper.height(this.currentItem.height()); +		}  		return helper;  	},  	_adjustOffsetFromHelper: function(obj) { -		if (typeof obj == 'string') { -			obj = obj.split(' '); +		if (typeof obj === "string") { +			obj = obj.split(" ");  		}  		if ($.isArray(obj)) {  			obj = {left: +obj[0], top: +obj[1] || 0};  		} -		if ('left' in obj) { +		if ("left" in obj) {  			this.offset.click.left = obj.left + this.margins.left;  		} -		if ('right' in obj) { +		if ("right" in obj) {  			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;  		} -		if ('top' in obj) { +		if ("top" in obj) {  			this.offset.click.top = obj.top + this.margins.top;  		} -		if ('bottom' in obj) { +		if ("bottom" in obj) {  			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;  		}  	}, @@ -4473,14 +4479,16 @@ $.widget("ui.sortable", $.ui.mouse, {  		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent  		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that  		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag -		if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) { +		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {  			po.left += this.scrollParent.scrollLeft();  			po.top += this.scrollParent.scrollTop();  		} -		if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information -		|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix +		// This needs to be actually done for all browsers, since pageX/pageY includes this information +		// with an ugly IE fix +		if( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {  			po = { top: 0, left: 0 }; +		}  		return {  			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), @@ -4491,7 +4499,7 @@ $.widget("ui.sortable", $.ui.mouse, {  	_getRelativeOffset: function() { -		if(this.cssPosition == "relative") { +		if(this.cssPosition === "relative") {  			var p = this.currentItem.position();  			return {  				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), @@ -4519,19 +4527,24 @@ $.widget("ui.sortable", $.ui.mouse, {  	_setContainment: function() { -		var o = this.options; -		if(o.containment == 'parent') o.containment = this.helper[0].parentNode; -		if(o.containment == 'document' || o.containment == 'window') this.containment = [ -			0 - this.offset.relative.left - this.offset.parent.left, -			0 - this.offset.relative.top - this.offset.parent.top, -			$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, -			($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top -		]; +		var ce, co, over, +			o = this.options; +		if(o.containment === "parent") { +			o.containment = this.helper[0].parentNode; +		} +		if(o.containment === "document" || o.containment === "window") { +			this.containment = [ +				0 - this.offset.relative.left - this.offset.parent.left, +				0 - this.offset.relative.top - this.offset.parent.top, +				$(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, +				($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top +			]; +		}  		if(!(/^(document|window|parent)$/).test(o.containment)) { -			var ce = $(o.containment)[0]; -			var co = $(o.containment).offset(); -			var over = ($(ce).css("overflow") != 'hidden'); +			ce = $(o.containment)[0]; +			co = $(o.containment).offset(); +			over = ($(ce).css("overflow") !== "hidden");  			this.containment = [  				co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, @@ -4545,22 +4558,25 @@ $.widget("ui.sortable", $.ui.mouse, {  	_convertPositionTo: function(d, pos) { -		if(!pos) pos = this.position; -		var mod = d == "absolute" ? 1 : -1; -		var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); +		if(!pos) { +			pos = this.position; +		} +		var mod = d === "absolute" ? 1 : -1, +			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, +			scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);  		return {  			top: ( -				pos.top																	// The absolute mouse position -				+ this.offset.relative.top * mod										// Only for relative positioned nodes: Relative offset from element to offset parent -				+ this.offset.parent.top * mod											// The offsetParent's offset without borders (offset + border) -				- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) +				pos.top	+																// The absolute mouse position +				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent +				this.offset.parent.top * mod -											// The offsetParent's offset without borders (offset + border) +				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)  			),  			left: ( -				pos.left																// The absolute mouse position -				+ this.offset.relative.left * mod										// Only for relative positioned nodes: Relative offset from element to offset parent -				+ this.offset.parent.left * mod											// The offsetParent's offset without borders (offset + border) -				- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) +				pos.left +																// The absolute mouse position +				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent +				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border) +				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)  			)  		}; @@ -4568,19 +4584,20 @@ $.widget("ui.sortable", $.ui.mouse, {  	_generatePosition: function(event) { -		var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); +		var top, left, +			o = this.options, +			pageX = event.pageX, +			pageY = event.pageY, +			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);  		// This is another very weird special case that only happens for relative elements:  		// 1. If the css position is relative  		// 2. and the scroll parent is the document or similar to the offset parent  		// we have to refresh the relative offset during the scroll so there are no jumps -		if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) { +		if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) {  			this.offset.relative = this._getRelativeOffset();  		} -		var pageX = event.pageX; -		var pageY = event.pageY; -  		/*  		 * - Position constraining -  		 * Constrain the position to a mix of grid, containment. @@ -4589,36 +4606,44 @@ $.widget("ui.sortable", $.ui.mouse, {  		if(this.originalPosition) { //If we are not dragging yet, we won't check for options  			if(this.containment) { -				if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left; -				if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top; -				if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left; -				if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top; +				if(event.pageX - this.offset.click.left < this.containment[0]) { +					pageX = this.containment[0] + this.offset.click.left; +				} +				if(event.pageY - this.offset.click.top < this.containment[1]) { +					pageY = this.containment[1] + this.offset.click.top; +				} +				if(event.pageX - this.offset.click.left > this.containment[2]) { +					pageX = this.containment[2] + this.offset.click.left; +				} +				if(event.pageY - this.offset.click.top > this.containment[3]) { +					pageY = this.containment[3] + this.offset.click.top; +				}  			}  			if(o.grid) { -				var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; -				pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; +				top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; +				pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; -				var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; -				pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; +				left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; +				pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;  			}  		}  		return {  			top: ( -				pageY																// The absolute mouse position -				- this.offset.click.top													// Click offset (relative to the element) -				- this.offset.relative.top												// Only for relative positioned nodes: Relative offset from element to offset parent -				- this.offset.parent.top												// The offsetParent's offset without borders (offset + border) -				+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) +				pageY -																// The absolute mouse position +				this.offset.click.top -													// Click offset (relative to the element) +				this.offset.relative.top	-											// Only for relative positioned nodes: Relative offset from element to offset parent +				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border) +				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))  			),  			left: ( -				pageX																// The absolute mouse position -				- this.offset.click.left												// Click offset (relative to the element) -				- this.offset.relative.left												// Only for relative positioned nodes: Relative offset from element to offset parent -				- this.offset.parent.left												// The offsetParent's offset without borders (offset + border) -				+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) +				pageX -																// The absolute mouse position +				this.offset.click.left -												// Click offset (relative to the element) +				this.offset.relative.left	-											// Only for relative positioned nodes: Relative offset from element to offset parent +				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border) +				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))  			)  		}; @@ -4626,7 +4651,7 @@ $.widget("ui.sortable", $.ui.mouse, {  	_rearrange: function(event, i, a, hardRefresh) { -		a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling)); +		a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling));  		//Various things done here to improve the performance:  		// 1. we create a setTimeout, that calls refreshPositions @@ -4637,7 +4662,9 @@ $.widget("ui.sortable", $.ui.mouse, {  		var counter = this.counter;  		this._delay(function() { -			if(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove +			if(counter === this.counter) { +				this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove +			}  		});  	}, @@ -4647,24 +4674,33 @@ $.widget("ui.sortable", $.ui.mouse, {  		this.reverting = false;  		// We delay all events that have to be triggered to after the point where the placeholder has been removed and  		// everything else normalized again -		var delayedTriggers = []; +		var i, +			delayedTriggers = [];  		// We first have to update the dom position of the actual currentItem  		// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) -		if(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem); +		if(!this._noFinalSort && this.currentItem.parent().length) { +			this.placeholder.before(this.currentItem); +		}  		this._noFinalSort = null; -		if(this.helper[0] == this.currentItem[0]) { -			for(var i in this._storedCSS) { -				if(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = ''; +		if(this.helper[0] === this.currentItem[0]) { +			for(i in this._storedCSS) { +				if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { +					this._storedCSS[i] = ""; +				}  			}  			this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");  		} else {  			this.currentItem.show();  		} -		if(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); -		if((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed +		if(this.fromOutside && !noPropagation) { +			delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); +		} +		if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { +			delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed +		}  		// Check if the items Container has Changed and trigger appropriate  		// events. @@ -4678,24 +4714,40 @@ $.widget("ui.sortable", $.ui.mouse, {  		//Post events to containers -		for (var i = this.containers.length - 1; i >= 0; i--){ -			if(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); };  }).call(this, this.containers[i])); +		function delayEvent( type, instance, container ) { +			return function( event ) { +				container._trigger( type, event, instance._uiHash( instance ) ); +			}; +		} +		for (i = this.containers.length - 1; i >= 0; i--){ +			if (!noPropagation) { +				delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) ); +			}  			if(this.containers[i].containerCache.over) { -				delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); };  }).call(this, this.containers[i])); +				delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );  				this.containers[i].containerCache.over = 0;  			}  		}  		//Do what was originally in plugins -		if(this._storedCursor) $('body').css("cursor", this._storedCursor); //Reset cursor -		if(this._storedOpacity) this.helper.css("opacity", this._storedOpacity); //Reset opacity -		if(this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index +		if ( this.storedCursor ) { +			this.document.find( "body" ).css( "cursor", this.storedCursor ); +			this.storedStylesheet.remove(); +		} +		if(this._storedOpacity) { +			this.helper.css("opacity", this._storedOpacity); +		} +		if(this._storedZIndex) { +			this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); +		}  		this.dragging = false;  		if(this.cancelHelperRemoval) {  			if(!noPropagation) {  				this._trigger("beforeStop", event, this._uiHash()); -				for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events +				for (i=0; i < delayedTriggers.length; i++) { +					delayedTriggers[i].call(this, event); +				} //Trigger all delayed events  				this._trigger("stop", event, this._uiHash());  			} @@ -4703,15 +4755,22 @@ $.widget("ui.sortable", $.ui.mouse, {  			return false;  		} -		if(!noPropagation) this._trigger("beforeStop", event, this._uiHash()); +		if(!noPropagation) { +			this._trigger("beforeStop", event, this._uiHash()); +		}  		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!  		this.placeholder[0].parentNode.removeChild(this.placeholder[0]); -		if(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null; +		if(this.helper[0] !== this.currentItem[0]) { +			this.helper.remove(); +		} +		this.helper = null;  		if(!noPropagation) { -			for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events +			for (i=0; i < delayedTriggers.length; i++) { +				delayedTriggers[i].call(this, event); +			} //Trigger all delayed events  			this._trigger("stop", event, this._uiHash());  		} @@ -4742,6 +4801,1287 @@ $.widget("ui.sortable", $.ui.mouse, {  });  })(jQuery); + +(function($, undefined) { + +var dataSpace = "ui-effects-"; + +$.effects = { +	effect: {} +}; + +/*! + * jQuery Color Animations v2.1.2 + * https://github.com/jquery/jquery-color + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * Date: Wed Jan 16 08:47:09 2013 -0600 + */ +(function( jQuery, undefined ) { + +	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", + +	// plusequals test for += 100 -= 100 +	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, +	// a set of RE's that can match strings and generate color tuples. +	stringParsers = [{ +			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, +			parse: function( execResult ) { +				return [ +					execResult[ 1 ], +					execResult[ 2 ], +					execResult[ 3 ], +					execResult[ 4 ] +				]; +			} +		}, { +			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, +			parse: function( execResult ) { +				return [ +					execResult[ 1 ] * 2.55, +					execResult[ 2 ] * 2.55, +					execResult[ 3 ] * 2.55, +					execResult[ 4 ] +				]; +			} +		}, { +			// this regex ignores A-F because it's compared against an already lowercased string +			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, +			parse: function( execResult ) { +				return [ +					parseInt( execResult[ 1 ], 16 ), +					parseInt( execResult[ 2 ], 16 ), +					parseInt( execResult[ 3 ], 16 ) +				]; +			} +		}, { +			// this regex ignores A-F because it's compared against an already lowercased string +			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, +			parse: function( execResult ) { +				return [ +					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), +					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), +					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) +				]; +			} +		}, { +			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, +			space: "hsla", +			parse: function( execResult ) { +				return [ +					execResult[ 1 ], +					execResult[ 2 ] / 100, +					execResult[ 3 ] / 100, +					execResult[ 4 ] +				]; +			} +		}], + +	// jQuery.Color( ) +	color = jQuery.Color = function( color, green, blue, alpha ) { +		return new jQuery.Color.fn.parse( color, green, blue, alpha ); +	}, +	spaces = { +		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" +				} +			} +		} +	}, +	propTypes = { +		"byte": { +			floor: true, +			max: 255 +		}, +		"percent": { +			max: 1 +		}, +		"degrees": { +			mod: 360, +			floor: true +		} +	}, +	support = color.support = {}, + +	// element for support tests +	supportElem = jQuery( "<p>" )[ 0 ], + +	// colors = jQuery.Color.names +	colors, + +	// local aliases of functions called often +	each = jQuery.each; + +// determine rgba support immediately +supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; +support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; + +// define cache name and alpha properties +// for rgba and hsla spaces +each( spaces, function( spaceName, space ) { +	space.cache = "_" + spaceName; +	space.props.alpha = { +		idx: 3, +		type: "percent", +		def: 1 +	}; +}); + +function clamp( value, prop, allowEmpty ) { +	var type = propTypes[ prop.type ] || {}; + +	if ( value == null ) { +		return (allowEmpty || !prop.def) ? null : prop.def; +	} + +	// ~~ is an short way of doing floor for positive numbers +	value = type.floor ? ~~value : parseFloat( value ); + +	// IE will pass in empty strings as value for alpha, +	// which will hit this case +	if ( isNaN( value ) ) { +		return prop.def; +	} + +	if ( type.mod ) { +		// we add mod before modding to make sure that negatives values +		// get converted properly: -10 -> 350 +		return (value + type.mod) % type.mod; +	} + +	// for now all property types without mod have min and max +	return 0 > value ? 0 : type.max < value ? type.max : value; +} + +function stringParse( string ) { +	var inst = color(), +		rgba = inst._rgba = []; + +	string = string.toLowerCase(); + +	each( stringParsers, function( i, parser ) { +		var parsed, +			match = parser.re.exec( string ), +			values = match && parser.parse( match ), +			spaceName = parser.space || "rgba"; + +		if ( values ) { +			parsed = inst[ spaceName ]( values ); + +			// if this was an rgba parse the assignment might happen twice +			// oh well.... +			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; +			rgba = inst._rgba = parsed._rgba; + +			// exit each( stringParsers ) here because we matched +			return false; +		} +	}); + +	// Found a stringParser that handled it +	if ( rgba.length ) { + +		// if this came from a parsed string, force "transparent" when alpha is 0 +		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) +		if ( rgba.join() === "0,0,0,0" ) { +			jQuery.extend( rgba, colors.transparent ); +		} +		return inst; +	} + +	// named colors +	return colors[ string ]; +} + +color.fn = jQuery.extend( color.prototype, { +	parse: function( red, green, blue, alpha ) { +		if ( red === undefined ) { +			this._rgba = [ null, null, null, null ]; +			return this; +		} +		if ( red.jquery || red.nodeType ) { +			red = jQuery( red ).css( green ); +			green = undefined; +		} + +		var inst = this, +			type = jQuery.type( red ), +			rgba = this._rgba = []; + +		// more than 1 argument specified - assume ( red, green, blue, alpha ) +		if ( green !== undefined ) { +			red = [ red, green, blue, alpha ]; +			type = "array"; +		} + +		if ( type === "string" ) { +			return this.parse( stringParse( red ) || colors._default ); +		} + +		if ( type === "array" ) { +			each( spaces.rgba.props, function( key, prop ) { +				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); +			}); +			return this; +		} + +		if ( type === "object" ) { +			if ( red instanceof color ) { +				each( spaces, function( spaceName, space ) { +					if ( red[ space.cache ] ) { +						inst[ space.cache ] = red[ space.cache ].slice(); +					} +				}); +			} else { +				each( spaces, function( spaceName, space ) { +					var cache = space.cache; +					each( space.props, function( key, prop ) { + +						// if the cache doesn't exist, and we know how to convert +						if ( !inst[ cache ] && space.to ) { + +							// if the value was null, we don't need to copy it +							// if the key was alpha, we don't need to copy it either +							if ( key === "alpha" || red[ key ] == null ) { +								return; +							} +							inst[ cache ] = space.to( inst._rgba ); +						} + +						// this is the only case where we allow nulls for ALL properties. +						// call clamp with alwaysAllowEmpty +						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); +					}); + +					// everything defined but alpha? +					if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { +						// use the default of 1 +						inst[ cache ][ 3 ] = 1; +						if ( space.from ) { +							inst._rgba = space.from( inst[ cache ] ); +						} +					} +				}); +			} +			return this; +		} +	}, +	is: function( compare ) { +		var is = color( compare ), +			same = true, +			inst = this; + +		each( spaces, function( _, space ) { +			var localCache, +				isCache = is[ space.cache ]; +			if (isCache) { +				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; +				each( space.props, function( _, prop ) { +					if ( isCache[ prop.idx ] != null ) { +						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); +						return same; +					} +				}); +			} +			return same; +		}); +		return same; +	}, +	_space: function() { +		var used = [], +			inst = this; +		each( spaces, function( spaceName, space ) { +			if ( inst[ space.cache ] ) { +				used.push( spaceName ); +			} +		}); +		return used.pop(); +	}, +	transition: function( other, distance ) { +		var end = color( other ), +			spaceName = end._space(), +			space = spaces[ spaceName ], +			startColor = this.alpha() === 0 ? color( "transparent" ) : this, +			start = startColor[ space.cache ] || space.to( startColor._rgba ), +			result = start.slice(); + +		end = end[ space.cache ]; +		each( space.props, function( key, prop ) { +			var index = prop.idx, +				startValue = start[ index ], +				endValue = end[ index ], +				type = propTypes[ prop.type ] || {}; + +			// if null, don't override start value +			if ( endValue === null ) { +				return; +			} +			// if null - use end +			if ( startValue === null ) { +				result[ index ] = endValue; +			} else { +				if ( type.mod ) { +					if ( endValue - startValue > type.mod / 2 ) { +						startValue += type.mod; +					} else if ( startValue - endValue > type.mod / 2 ) { +						startValue -= type.mod; +					} +				} +				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); +			} +		}); +		return this[ spaceName ]( result ); +	}, +	blend: function( opaque ) { +		// if we are already opaque - return ourself +		if ( this._rgba[ 3 ] === 1 ) { +			return this; +		} + +		var rgb = this._rgba.slice(), +			a = rgb.pop(), +			blend = color( opaque )._rgba; + +		return color( jQuery.map( rgb, function( v, i ) { +			return ( 1 - a ) * blend[ i ] + a * v; +		})); +	}, +	toRgbaString: function() { +		var prefix = "rgba(", +			rgba = jQuery.map( this._rgba, function( v, i ) { +				return v == null ? ( i > 2 ? 1 : 0 ) : v; +			}); + +		if ( rgba[ 3 ] === 1 ) { +			rgba.pop(); +			prefix = "rgb("; +		} + +		return prefix + rgba.join() + ")"; +	}, +	toHslaString: function() { +		var prefix = "hsla(", +			hsla = jQuery.map( this.hsla(), function( v, i ) { +				if ( v == null ) { +					v = i > 2 ? 1 : 0; +				} + +				// catch 1 and 2 +				if ( i && i < 3 ) { +					v = Math.round( v * 100 ) + "%"; +				} +				return v; +			}); + +		if ( hsla[ 3 ] === 1 ) { +			hsla.pop(); +			prefix = "hsl("; +		} +		return prefix + hsla.join() + ")"; +	}, +	toHexString: function( includeAlpha ) { +		var rgba = this._rgba.slice(), +			alpha = rgba.pop(); + +		if ( includeAlpha ) { +			rgba.push( ~~( alpha * 255 ) ); +		} + +		return "#" + jQuery.map( rgba, function( v ) { + +			// default to 0 when nulls exist +			v = ( v || 0 ).toString( 16 ); +			return v.length === 1 ? "0" + v : v; +		}).join(""); +	}, +	toString: function() { +		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); +	} +}); +color.fn.parse.prototype = color.fn; + +// hsla conversions adapted from: +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 + +function hue2rgb( p, q, h ) { +	h = ( h + 1 ) % 1; +	if ( h * 6 < 1 ) { +		return p + (q - p) * h * 6; +	} +	if ( h * 2 < 1) { +		return q; +	} +	if ( h * 3 < 2 ) { +		return p + (q - p) * ((2/3) - h) * 6; +	} +	return p; +} + +spaces.hsla.to = function ( rgba ) { +	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { +		return [ null, null, null, rgba[ 3 ] ]; +	} +	var r = rgba[ 0 ] / 255, +		g = rgba[ 1 ] / 255, +		b = rgba[ 2 ] / 255, +		a = rgba[ 3 ], +		max = Math.max( r, g, b ), +		min = Math.min( r, g, b ), +		diff = max - min, +		add = max + min, +		l = add * 0.5, +		h, s; + +	if ( min === max ) { +		h = 0; +	} else if ( r === max ) { +		h = ( 60 * ( g - b ) / diff ) + 360; +	} else if ( g === max ) { +		h = ( 60 * ( b - r ) / diff ) + 120; +	} else { +		h = ( 60 * ( r - g ) / diff ) + 240; +	} + +	// chroma (diff) == 0 means greyscale which, by definition, saturation = 0% +	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) +	if ( diff === 0 ) { +		s = 0; +	} else if ( l <= 0.5 ) { +		s = diff / add; +	} else { +		s = diff / ( 2 - add ); +	} +	return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; +}; + +spaces.hsla.from = function ( hsla ) { +	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { +		return [ null, null, null, hsla[ 3 ] ]; +	} +	var h = hsla[ 0 ] / 360, +		s = hsla[ 1 ], +		l = hsla[ 2 ], +		a = hsla[ 3 ], +		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, +		p = 2 * l - q; + +	return [ +		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), +		Math.round( hue2rgb( p, q, h ) * 255 ), +		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), +		a +	]; +}; + + +each( spaces, function( spaceName, space ) { +	var props = space.props, +		cache = space.cache, +		to = space.to, +		from = space.from; + +	// makes rgba() and hsla() +	color.fn[ spaceName ] = function( value ) { + +		// generate a cache for this space if it doesn't exist +		if ( to && !this[ cache ] ) { +			this[ cache ] = to( this._rgba ); +		} +		if ( value === undefined ) { +			return this[ cache ].slice(); +		} + +		var ret, +			type = jQuery.type( value ), +			arr = ( type === "array" || type === "object" ) ? value : arguments, +			local = this[ cache ].slice(); + +		each( props, function( key, prop ) { +			var val = arr[ type === "object" ? key : prop.idx ]; +			if ( val == null ) { +				val = local[ prop.idx ]; +			} +			local[ prop.idx ] = clamp( val, prop ); +		}); + +		if ( from ) { +			ret = color( from( local ) ); +			ret[ cache ] = local; +			return ret; +		} else { +			return color( local ); +		} +	}; + +	// makes red() green() blue() alpha() hue() saturation() lightness() +	each( props, function( key, prop ) { +		// alpha is included in more than one space +		if ( color.fn[ key ] ) { +			return; +		} +		color.fn[ key ] = function( value ) { +			var vtype = jQuery.type( value ), +				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), +				local = this[ fn ](), +				cur = local[ prop.idx ], +				match; + +			if ( vtype === "undefined" ) { +				return cur; +			} + +			if ( vtype === "function" ) { +				value = value.call( this, cur ); +				vtype = jQuery.type( value ); +			} +			if ( value == null && prop.empty ) { +				return this; +			} +			if ( vtype === "string" ) { +				match = rplusequals.exec( value ); +				if ( match ) { +					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); +				} +			} +			local[ prop.idx ] = value; +			return this[ fn ]( local ); +		}; +	}); +}); + +// add cssHook and .fx.step function for each named hook. +// accept a space separated string of properties +color.hook = function( hook ) { +	var hooks = hook.split( " " ); +	each( hooks, function( i, hook ) { +		jQuery.cssHooks[ hook ] = { +			set: function( elem, value ) { +				var parsed, curElem, +					backgroundColor = ""; + +				if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { +					value = color( parsed || value ); +					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { +						curElem = hook === "backgroundColor" ? elem.parentNode : elem; +						while ( +							(backgroundColor === "" || backgroundColor === "transparent") && +							curElem && curElem.style +						) { +							try { +								backgroundColor = jQuery.css( curElem, "backgroundColor" ); +								curElem = curElem.parentNode; +							} catch ( e ) { +							} +						} + +						value = value.blend( backgroundColor && backgroundColor !== "transparent" ? +							backgroundColor : +							"_default" ); +					} + +					value = value.toRgbaString(); +				} +				try { +					elem.style[ hook ] = value; +				} catch( e ) { +					// wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' +				} +			} +		}; +		jQuery.fx.step[ hook ] = function( fx ) { +			if ( !fx.colorInit ) { +				fx.start = color( fx.elem, hook ); +				fx.end = color( fx.end ); +				fx.colorInit = true; +			} +			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); +		}; +	}); + +}; + +color.hook( stepHooks ); + +jQuery.cssHooks.borderColor = { +	expand: function( value ) { +		var expanded = {}; + +		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { +			expanded[ "border" + part + "Color" ] = value; +		}); +		return expanded; +	} +}; + +// Basic color names only. +// Usage of any of the other color names requires adding yourself or including +// jquery.color.svg-names.js. +colors = jQuery.Color.names = { +	// 4.1. Basic color keywords +	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", + +	// 4.2.3. "transparent" color keyword +	transparent: [ null, null, null, 0 ], + +	_default: "#ffffff" +}; + +})( jQuery ); + + +/******************************************************************************/ +/****************************** CLASS ANIMATIONS ******************************/ +/******************************************************************************/ +(function() { + +var classAnimationActions = [ "add", "remove", "toggle" ], +	shorthandStyles = { +		border: 1, +		borderBottom: 1, +		borderColor: 1, +		borderLeft: 1, +		borderRight: 1, +		borderTop: 1, +		borderWidth: 1, +		margin: 1, +		padding: 1 +	}; + +$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { +	$.fx.step[ prop ] = function( fx ) { +		if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { +			jQuery.style( fx.elem, prop, fx.end ); +			fx.setAttr = true; +		} +	}; +}); + +function getElementStyles( elem ) { +	var key, len, +		style = elem.ownerDocument.defaultView ? +			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : +			elem.currentStyle, +		styles = {}; + +	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { +		len = style.length; +		while ( len-- ) { +			key = style[ len ]; +			if ( typeof style[ key ] === "string" ) { +				styles[ $.camelCase( key ) ] = style[ key ]; +			} +		} +	// support: Opera, IE <9 +	} else { +		for ( key in style ) { +			if ( typeof style[ key ] === "string" ) { +				styles[ key ] = style[ key ]; +			} +		} +	} + +	return styles; +} + + +function styleDifference( oldStyle, newStyle ) { +	var diff = {}, +		name, value; + +	for ( name in newStyle ) { +		value = newStyle[ name ]; +		if ( oldStyle[ name ] !== value ) { +			if ( !shorthandStyles[ name ] ) { +				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { +					diff[ name ] = value; +				} +			} +		} +	} + +	return diff; +} + +// support: jQuery <1.8 +if ( !$.fn.addBack ) { +	$.fn.addBack = function( selector ) { +		return this.add( selector == null ? +			this.prevObject : this.prevObject.filter( selector ) +		); +	}; +} + +$.effects.animateClass = function( value, duration, easing, callback ) { +	var o = $.speed( duration, easing, callback ); + +	return this.queue( function() { +		var animated = $( this ), +			baseClass = animated.attr( "class" ) || "", +			applyClassChange, +			allAnimations = o.children ? animated.find( "*" ).addBack() : animated; + +		// map the animated objects to store the original styles. +		allAnimations = allAnimations.map(function() { +			var el = $( this ); +			return { +				el: el, +				start: getElementStyles( this ) +			}; +		}); + +		// apply class change +		applyClassChange = function() { +			$.each( classAnimationActions, function(i, action) { +				if ( value[ action ] ) { +					animated[ action + "Class" ]( value[ action ] ); +				} +			}); +		}; +		applyClassChange(); + +		// map all animated objects again - calculate new styles and diff +		allAnimations = allAnimations.map(function() { +			this.end = getElementStyles( this.el[ 0 ] ); +			this.diff = styleDifference( this.start, this.end ); +			return this; +		}); + +		// apply original class +		animated.attr( "class", baseClass ); + +		// map all animated objects again - this time collecting a promise +		allAnimations = allAnimations.map(function() { +			var styleInfo = this, +				dfd = $.Deferred(), +				opts = $.extend({}, o, { +					queue: false, +					complete: function() { +						dfd.resolve( styleInfo ); +					} +				}); + +			this.el.animate( this.diff, opts ); +			return dfd.promise(); +		}); + +		// once all animations have completed: +		$.when.apply( $, allAnimations.get() ).done(function() { + +			// set the final class +			applyClassChange(); + +			// for each animated element, +			// clear all css properties that were animated +			$.each( arguments, function() { +				var el = this.el; +				$.each( this.diff, function(key) { +					el.css( key, "" ); +				}); +			}); + +			// this is guarnteed to be there if you use jQuery.speed() +			// it also handles dequeuing the next anim... +			o.complete.call( animated[ 0 ] ); +		}); +	}); +}; + +$.fn.extend({ +	addClass: (function( orig ) { +		return function( classNames, speed, easing, callback ) { +			return speed ? +				$.effects.animateClass.call( this, +					{ add: classNames }, speed, easing, callback ) : +				orig.apply( this, arguments ); +		}; +	})( $.fn.addClass ), + +	removeClass: (function( orig ) { +		return function( classNames, speed, easing, callback ) { +			return arguments.length > 1 ? +				$.effects.animateClass.call( this, +					{ remove: classNames }, speed, easing, callback ) : +				orig.apply( this, arguments ); +		}; +	})( $.fn.removeClass ), + +	toggleClass: (function( orig ) { +		return function( classNames, force, speed, easing, callback ) { +			if ( typeof force === "boolean" || force === undefined ) { +				if ( !speed ) { +					// without speed parameter +					return orig.apply( this, arguments ); +				} else { +					return $.effects.animateClass.call( this, +						(force ? { add: classNames } : { remove: classNames }), +						speed, easing, callback ); +				} +			} else { +				// without force parameter +				return $.effects.animateClass.call( this, +					{ toggle: classNames }, force, speed, easing ); +			} +		}; +	})( $.fn.toggleClass ), + +	switchClass: function( remove, add, speed, easing, callback) { +		return $.effects.animateClass.call( this, { +			add: add, +			remove: remove +		}, speed, easing, callback ); +	} +}); + +})(); + +/******************************************************************************/ +/*********************************** EFFECTS **********************************/ +/******************************************************************************/ + +(function() { + +$.extend( $.effects, { +	version: "1.10.4", + +	// Saves a set of properties in a data storage +	save: function( element, set ) { +		for( var i=0; i < set.length; i++ ) { +			if ( set[ i ] !== null ) { +				element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); +			} +		} +	}, + +	// Restores a set of previously saved properties from a data storage +	restore: function( element, set ) { +		var val, i; +		for( i=0; i < set.length; i++ ) { +			if ( set[ i ] !== null ) { +				val = element.data( dataSpace + set[ i ] ); +				// support: jQuery 1.6.2 +				// http://bugs.jquery.com/ticket/9917 +				// jQuery 1.6.2 incorrectly returns undefined for any falsy value. +				// We can't differentiate between "" and 0 here, so we just assume +				// empty string since it's likely to be a more common value... +				if ( val === undefined ) { +					val = ""; +				} +				element.css( set[ i ], val ); +			} +		} +	}, + +	setMode: function( el, mode ) { +		if (mode === "toggle") { +			mode = el.is( ":hidden" ) ? "show" : "hide"; +		} +		return mode; +	}, + +	// Translates a [top,left] array into a baseline value +	// this should be a little more flexible in the future to handle a string & hash +	getBaseline: function( origin, original ) { +		var y, x; +		switch ( origin[ 0 ] ) { +			case "top": y = 0; break; +			case "middle": y = 0.5; break; +			case "bottom": y = 1; break; +			default: y = origin[ 0 ] / original.height; +		} +		switch ( origin[ 1 ] ) { +			case "left": x = 0; break; +			case "center": x = 0.5; break; +			case "right": x = 1; break; +			default: x = origin[ 1 ] / original.width; +		} +		return { +			x: x, +			y: y +		}; +	}, + +	// Wraps the element around a wrapper that copies position properties +	createWrapper: function( element ) { + +		// if the element is already wrapped, return it +		if ( element.parent().is( ".ui-effects-wrapper" )) { +			return element.parent(); +		} + +		// wrap the element +		var props = { +				width: element.outerWidth(true), +				height: element.outerHeight(true), +				"float": element.css( "float" ) +			}, +			wrapper = $( "<div></div>" ) +				.addClass( "ui-effects-wrapper" ) +				.css({ +					fontSize: "100%", +					background: "transparent", +					border: "none", +					margin: 0, +					padding: 0 +				}), +			// Store the size in case width/height are defined in % - Fixes #5245 +			size = { +				width: element.width(), +				height: element.height() +			}, +			active = document.activeElement; + +		// support: Firefox +		// Firefox incorrectly exposes anonymous content +		// https://bugzilla.mozilla.org/show_bug.cgi?id=561664 +		try { +			active.id; +		} catch( e ) { +			active = document.body; +		} + +		element.wrap( wrapper ); + +		// Fixes #7595 - Elements lose focus when wrapped. +		if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { +			$( active ).focus(); +		} + +		wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element + +		// transfer positioning properties to the wrapper +		if ( element.css( "position" ) === "static" ) { +			wrapper.css({ position: "relative" }); +			element.css({ position: "relative" }); +		} else { +			$.extend( props, { +				position: element.css( "position" ), +				zIndex: element.css( "z-index" ) +			}); +			$.each([ "top", "left", "bottom", "right" ], function(i, pos) { +				props[ pos ] = element.css( pos ); +				if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { +					props[ pos ] = "auto"; +				} +			}); +			element.css({ +				position: "relative", +				top: 0, +				left: 0, +				right: "auto", +				bottom: "auto" +			}); +		} +		element.css(size); + +		return wrapper.css( props ).show(); +	}, + +	removeWrapper: function( element ) { +		var active = document.activeElement; + +		if ( element.parent().is( ".ui-effects-wrapper" ) ) { +			element.parent().replaceWith( element ); + +			// Fixes #7595 - Elements lose focus when wrapped. +			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { +				$( active ).focus(); +			} +		} + + +		return element; +	}, + +	setTransition: function( element, list, factor, value ) { +		value = value || {}; +		$.each( list, function( i, x ) { +			var unit = element.cssUnit( x ); +			if ( unit[ 0 ] > 0 ) { +				value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; +			} +		}); +		return value; +	} +}); + +// return an effect options object for the given parameters: +function _normalizeArguments( effect, options, speed, callback ) { + +	// allow passing all options as the first parameter +	if ( $.isPlainObject( effect ) ) { +		options = effect; +		effect = effect.effect; +	} + +	// convert to an object +	effect = { effect: effect }; + +	// catch (effect, null, ...) +	if ( options == null ) { +		options = {}; +	} + +	// catch (effect, callback) +	if ( $.isFunction( options ) ) { +		callback = options; +		speed = null; +		options = {}; +	} + +	// catch (effect, speed, ?) +	if ( typeof options === "number" || $.fx.speeds[ options ] ) { +		callback = speed; +		speed = options; +		options = {}; +	} + +	// catch (effect, options, callback) +	if ( $.isFunction( speed ) ) { +		callback = speed; +		speed = null; +	} + +	// add options to effect +	if ( options ) { +		$.extend( effect, options ); +	} + +	speed = speed || options.duration; +	effect.duration = $.fx.off ? 0 : +		typeof speed === "number" ? speed : +		speed in $.fx.speeds ? $.fx.speeds[ speed ] : +		$.fx.speeds._default; + +	effect.complete = callback || options.complete; + +	return effect; +} + +function standardAnimationOption( option ) { +	// Valid standard speeds (nothing, number, named speed) +	if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { +		return true; +	} + +	// Invalid strings - treat as "normal" speed +	if ( typeof option === "string" && !$.effects.effect[ option ] ) { +		return true; +	} + +	// Complete callback +	if ( $.isFunction( option ) ) { +		return true; +	} + +	// Options hash (but not naming an effect) +	if ( typeof option === "object" && !option.effect ) { +		return true; +	} + +	// Didn't match any standard API +	return false; +} + +$.fn.extend({ +	effect: function( /* effect, options, speed, callback */ ) { +		var args = _normalizeArguments.apply( this, arguments ), +			mode = args.mode, +			queue = args.queue, +			effectMethod = $.effects.effect[ args.effect ]; + +		if ( $.fx.off || !effectMethod ) { +			// delegate to the original method (e.g., .show()) if possible +			if ( mode ) { +				return this[ mode ]( args.duration, args.complete ); +			} else { +				return this.each( function() { +					if ( args.complete ) { +						args.complete.call( this ); +					} +				}); +			} +		} + +		function run( next ) { +			var elem = $( this ), +				complete = args.complete, +				mode = args.mode; + +			function done() { +				if ( $.isFunction( complete ) ) { +					complete.call( elem[0] ); +				} +				if ( $.isFunction( next ) ) { +					next(); +				} +			} + +			// If the element already has the correct final state, delegate to +			// the core methods so the internal tracking of "olddisplay" works. +			if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { +				elem[ mode ](); +				done(); +			} else { +				effectMethod.call( elem[0], args, done ); +			} +		} + +		return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); +	}, + +	show: (function( orig ) { +		return function( option ) { +			if ( standardAnimationOption( option ) ) { +				return orig.apply( this, arguments ); +			} else { +				var args = _normalizeArguments.apply( this, arguments ); +				args.mode = "show"; +				return this.effect.call( this, args ); +			} +		}; +	})( $.fn.show ), + +	hide: (function( orig ) { +		return function( option ) { +			if ( standardAnimationOption( option ) ) { +				return orig.apply( this, arguments ); +			} else { +				var args = _normalizeArguments.apply( this, arguments ); +				args.mode = "hide"; +				return this.effect.call( this, args ); +			} +		}; +	})( $.fn.hide ), + +	toggle: (function( orig ) { +		return function( option ) { +			if ( standardAnimationOption( option ) || typeof option === "boolean" ) { +				return orig.apply( this, arguments ); +			} else { +				var args = _normalizeArguments.apply( this, arguments ); +				args.mode = "toggle"; +				return this.effect.call( this, args ); +			} +		}; +	})( $.fn.toggle ), + +	// helper functions +	cssUnit: function(key) { +		var style = this.css( key ), +			val = []; + +		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) { +			if ( style.indexOf( unit ) > 0 ) { +				val = [ parseFloat( style ), unit ]; +			} +		}); +		return val; +	} +}); + +})(); + +/******************************************************************************/ +/*********************************** EASING ***********************************/ +/******************************************************************************/ + +(function() { + +// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) + +var baseEasings = {}; + +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { +	baseEasings[ name ] = function( p ) { +		return Math.pow( p, i + 2 ); +	}; +}); + +$.extend( baseEasings, { +	Sine: function ( p ) { +		return 1 - Math.cos( p * Math.PI / 2 ); +	}, +	Circ: function ( p ) { +		return 1 - Math.sqrt( 1 - p * p ); +	}, +	Elastic: function( p ) { +		return p === 0 || p === 1 ? p : +			-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); +	}, +	Back: function( p ) { +		return p * p * ( 3 * p - 2 ); +	}, +	Bounce: function ( p ) { +		var pow2, +			bounce = 4; + +		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} +		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); +	} +}); + +$.each( baseEasings, function( name, easeIn ) { +	$.easing[ "easeIn" + name ] = easeIn; +	$.easing[ "easeOut" + name ] = function( p ) { +		return 1 - easeIn( 1 - p ); +	}; +	$.easing[ "easeInOut" + name ] = function( p ) { +		return p < 0.5 ? +			easeIn( p * 2 ) / 2 : +			1 - easeIn( p * -2 + 2 ) / 2; +	}; +}); + +})(); + +})(jQuery); +  (function( $, undefined ) {  var uid = 0, @@ -4754,7 +6094,7 @@ showProps.height = showProps.paddingTop = showProps.paddingBottom =  	showProps.borderTopWidth = showProps.borderBottomWidth = "show";  $.widget( "ui.accordion", { -	version: "1.9.2", +	version: "1.10.4",  	options: {  		active: 0,  		animate: {}, @@ -4773,100 +6113,29 @@ $.widget( "ui.accordion", {  	},  	_create: function() { -		var accordionId = this.accordionId = "ui-accordion-" + -				(this.element.attr( "id" ) || ++uid), -			options = this.options; - +		var options = this.options;  		this.prevShow = this.prevHide = $(); -		this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ); - -		this.headers = this.element.find( options.header ) -			.addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); -		this._hoverable( this.headers ); -		this._focusable( this.headers ); - -		this.headers.next() -			.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) -			.hide(); +		this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) +			// ARIA +			.attr( "role", "tablist" );  		// don't allow collapsible: false and active: false / null  		if ( !options.collapsible && (options.active === false || options.active == null) ) {  			options.active = 0;  		} + +		this._processPanels();  		// handle negative values  		if ( options.active < 0 ) {  			options.active += this.headers.length;  		} -		this.active = this._findActive( options.active ) -			.addClass( "ui-accordion-header-active ui-state-active" ) -			.toggleClass( "ui-corner-all ui-corner-top" ); -		this.active.next() -			.addClass( "ui-accordion-content-active" ) -			.show(); - -		this._createIcons(); -		this.refresh(); - -		// ARIA -		this.element.attr( "role", "tablist" ); - -		this.headers -			.attr( "role", "tab" ) -			.each(function( i ) { -				var header = $( this ), -					headerId = header.attr( "id" ), -					panel = header.next(), -					panelId = panel.attr( "id" ); -				if ( !headerId ) { -					headerId = accordionId + "-header-" + i; -					header.attr( "id", headerId ); -				} -				if ( !panelId ) { -					panelId = accordionId + "-panel-" + i; -					panel.attr( "id", panelId ); -				} -				header.attr( "aria-controls", panelId ); -				panel.attr( "aria-labelledby", headerId ); -			}) -			.next() -				.attr( "role", "tabpanel" ); - -		this.headers -			.not( this.active ) -			.attr({ -				"aria-selected": "false", -				tabIndex: -1 -			}) -			.next() -				.attr({ -					"aria-expanded": "false", -					"aria-hidden": "true" -				}) -				.hide(); - -		// make sure at least one header is in the tab order -		if ( !this.active.length ) { -			this.headers.eq( 0 ).attr( "tabIndex", 0 ); -		} else { -			this.active.attr({ -				"aria-selected": "true", -				tabIndex: 0 -			}) -			.next() -				.attr({ -					"aria-expanded": "true", -					"aria-hidden": "false" -				}); -		} - -		this._on( this.headers, { keydown: "_keydown" }); -		this._on( this.headers.next(), { keydown: "_panelKeyDown" }); -		this._setupEvents( options.event ); +		this._refresh();  	},  	_getCreateEventData: function() {  		return {  			header: this.active, +			panel: !this.active.length ? $() : this.active.next(),  			content: !this.active.length ? $() : this.active.next()  		};  	}, @@ -4903,6 +6172,7 @@ $.widget( "ui.accordion", {  		this.headers  			.removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset 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" ) @@ -4917,7 +6187,6 @@ $.widget( "ui.accordion", {  		contents = this.headers.next()  			.css( "display", "" )  			.removeAttr( "role" ) -			.removeAttr( "aria-expanded" )  			.removeAttr( "aria-hidden" )  			.removeAttr( "aria-labelledby" )  			.removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) @@ -5013,20 +6282,116 @@ $.widget( "ui.accordion", {  	},  	refresh: function() { -		var maxHeight, overflow, -			heightStyle = this.options.heightStyle, -			parent = this.element.parent(); +		var options = this.options; +		this._processPanels(); + +		// was collapsed or no panel +		if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { +			options.active = false; +			this.active = $(); +		// active false only when collapsible is true +		} else if ( options.active === false ) { +			this._activate( 0 ); +		// was active, but active panel is gone +		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { +			// all remaining panel are disabled +			if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { +				options.active = false; +				this.active = $(); +			// activate previous panel +			} else { +				this._activate( Math.max( 0, options.active - 1 ) ); +			} +		// was active, active panel still exists +		} else { +			// make sure active index is correct +			options.active = this.headers.index( this.active ); +		} + +		this._destroyIcons(); + +		this._refresh(); +	}, + +	_processPanels: function() { +		this.headers = this.element.find( this.options.header ) +			.addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); + +		this.headers.next() +			.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) +			.filter(":not(.ui-accordion-content-active)") +			.hide(); +	}, + +	_refresh: function() { +		var maxHeight, +			options = this.options, +			heightStyle = options.heightStyle, +			parent = this.element.parent(), +			accordionId = this.accordionId = "ui-accordion-" + +				(this.element.attr( "id" ) || ++uid); + +		this.active = this._findActive( options.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( i ) { +				var header = $( this ), +					headerId = header.attr( "id" ), +					panel = header.next(), +					panelId = panel.attr( "id" ); +				if ( !headerId ) { +					headerId = accordionId + "-header-" + i; +					header.attr( "id", headerId ); +				} +				if ( !panelId ) { +					panelId = accordionId + "-panel-" + i; +					panel.attr( "id", panelId ); +				} +				header.attr( "aria-controls", panelId ); +				panel.attr( "aria-labelledby", headerId ); +			}) +			.next() +				.attr( "role", "tabpanel" ); + +		this.headers +			.not( this.active ) +			.attr({ +				"aria-selected": "false", +				"aria-expanded": "false", +				tabIndex: -1 +			}) +			.next() +				.attr({ +					"aria-hidden": "true" +				}) +				.hide(); + +		// make sure at least one header is in the tab order +		if ( !this.active.length ) { +			this.headers.eq( 0 ).attr( "tabIndex", 0 ); +		} else { +			this.active.attr({ +				"aria-selected": "true", +				"aria-expanded": "true", +				tabIndex: 0 +			}) +			.next() +				.attr({ +					"aria-hidden": "false" +				}); +		} +		this._createIcons(); + +		this._setupEvents( options.event );  		if ( heightStyle === "fill" ) { -			// IE 6 treats height like minHeight, so we need to turn off overflow -			// in order to get a reliable height -			// we use the minHeight support test because we assume that only -			// browsers that don't support minHeight will treat height as minHeight -			if ( !$.support.minHeight ) { -				overflow = parent.css( "overflow" ); -				parent.css( "overflow", "hidden"); -			}  			maxHeight = parent.height();  			this.element.siblings( ":visible" ).each(function() {  				var elem = $( this ), @@ -5037,9 +6402,6 @@ $.widget( "ui.accordion", {  				}  				maxHeight -= elem.outerHeight( true );  			}); -			if ( overflow ) { -				parent.css( "overflow", overflow ); -			}  			this.headers.each(function() {  				maxHeight -= $( this ).outerHeight( true ); @@ -5084,14 +6446,20 @@ $.widget( "ui.accordion", {  	},  	_setupEvents: function( event ) { -		var events = {}; -		if ( !event ) { -			return; +		var events = { +			keydown: "_keydown" +		}; +		if ( event ) { +			$.each( event.split(" "), function( index, eventName ) { +				events[ eventName ] = "_eventHandler"; +			});  		} -		$.each( event.split(" "), function( index, eventName ) { -			events[ eventName ] = "_eventHandler"; -		}); + +		this._off( this.headers.add( this.headers.next() ) );  		this._on( this.headers, events ); +		this._on( this.headers.next(), { keydown: "_panelKeyDown" }); +		this._hoverable( this.headers ); +		this._focusable( this.headers );  	},  	_eventHandler: function( event ) { @@ -5169,7 +6537,6 @@ $.widget( "ui.accordion", {  		}  		toHide.attr({ -			"aria-expanded": "false",  			"aria-hidden": "true"  		});  		toHide.prev().attr( "aria-selected", "false" ); @@ -5177,7 +6544,10 @@ $.widget( "ui.accordion", {  		// if we're opening from collapsed state, remove the previous header from the tab order  		// if we're collapsing, then keep the collapsing header in the tab order  		if ( toShow.length && toHide.length ) { -			toHide.prev().attr( "tabIndex", -1 ); +			toHide.prev().attr({ +				"tabIndex": -1, +				"aria-expanded": "false" +			});  		} else if ( toShow.length ) {  			this.headers.filter(function() {  				return $( this ).attr( "tabIndex" ) === 0; @@ -5186,14 +6556,12 @@ $.widget( "ui.accordion", {  		}  		toShow -			.attr({ -				"aria-expanded": "true", -				"aria-hidden": "false" -			}) +			.attr( "aria-hidden", "false" )  			.prev()  				.attr({  					"aria-selected": "true", -					tabIndex: 0 +					tabIndex: 0, +					"aria-expanded": "true"  				});  	}, @@ -5265,210 +6633,19 @@ $.widget( "ui.accordion", {  		if ( toHide.length ) {  			toHide.parent()[0].className = toHide.parent()[0].className;  		} -  		this._trigger( "activate", null, data );  	}  }); - - -// DEPRECATED -if ( $.uiBackCompat !== false ) { -	// navigation options -	(function( $, prototype ) { -		$.extend( prototype.options, { -			navigation: false, -			navigationFilter: function() { -				return this.href.toLowerCase() === location.href.toLowerCase(); -			} -		}); - -		var _create = prototype._create; -		prototype._create = function() { -			if ( this.options.navigation ) { -				var that = this, -					headers = this.element.find( this.options.header ), -					content = headers.next(), -					current = headers.add( content ) -						.find( "a" ) -						.filter( this.options.navigationFilter ) -						[ 0 ]; -				if ( current ) { -					headers.add( content ).each( function( index ) { -						if ( $.contains( this, current ) ) { -							that.options.active = Math.floor( index / 2 ); -							return false; -						} -					}); -				} -			} -			_create.call( this ); -		}; -	}( jQuery, jQuery.ui.accordion.prototype ) ); - -	// height options -	(function( $, prototype ) { -		$.extend( prototype.options, { -			heightStyle: null, // remove default so we fall back to old values -			autoHeight: true, // use heightStyle: "auto" -			clearStyle: false, // use heightStyle: "content" -			fillSpace: false // use heightStyle: "fill" -		}); - -		var _create = prototype._create, -			_setOption = prototype._setOption; - -		$.extend( prototype, { -			_create: function() { -				this.options.heightStyle = this.options.heightStyle || -					this._mergeHeightStyle(); - -				_create.call( this ); -			}, - -			_setOption: function( key ) { -				if ( key === "autoHeight" || key === "clearStyle" || key === "fillSpace" ) { -					this.options.heightStyle = this._mergeHeightStyle(); -				} -				_setOption.apply( this, arguments ); -			}, - -			_mergeHeightStyle: function() { -				var options = this.options; - -				if ( options.fillSpace ) { -					return "fill"; -				} - -				if ( options.clearStyle ) { -					return "content"; -				} - -				if ( options.autoHeight ) { -					return "auto"; -				} -			} -		}); -	}( jQuery, jQuery.ui.accordion.prototype ) ); - -	// icon options -	(function( $, prototype ) { -		$.extend( prototype.options.icons, { -			activeHeader: null, // remove default so we fall back to old values -			headerSelected: "ui-icon-triangle-1-s" -		}); - -		var _createIcons = prototype._createIcons; -		prototype._createIcons = function() { -			if ( this.options.icons ) { -				this.options.icons.activeHeader = this.options.icons.activeHeader || -					this.options.icons.headerSelected; -			} -			_createIcons.call( this ); -		}; -	}( jQuery, jQuery.ui.accordion.prototype ) ); - -	// expanded active option, activate method -	(function( $, prototype ) { -		prototype.activate = prototype._activate; - -		var _findActive = prototype._findActive; -		prototype._findActive = function( index ) { -			if ( index === -1 ) { -				index = false; -			} -			if ( index && typeof index !== "number" ) { -				index = this.headers.index( this.headers.filter( index ) ); -				if ( index === -1 ) { -					index = false; -				} -			} -			return _findActive.call( this, index ); -		}; -	}( jQuery, jQuery.ui.accordion.prototype ) ); - -	// resize method -	jQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh; - -	// change events -	(function( $, prototype ) { -		$.extend( prototype.options, { -			change: null, -			changestart: null -		}); - -		var _trigger = prototype._trigger; -		prototype._trigger = function( type, event, data ) { -			var ret = _trigger.apply( this, arguments ); -			if ( !ret ) { -				return false; -			} - -			if ( type === "beforeActivate" ) { -				ret = _trigger.call( this, "changestart", event, { -					oldHeader: data.oldHeader, -					oldContent: data.oldPanel, -					newHeader: data.newHeader, -					newContent: data.newPanel -				}); -			} else if ( type === "activate" ) { -				ret = _trigger.call( this, "change", event, { -					oldHeader: data.oldHeader, -					oldContent: data.oldPanel, -					newHeader: data.newHeader, -					newContent: data.newPanel -				}); -			} -			return ret; -		}; -	}( jQuery, jQuery.ui.accordion.prototype ) ); - -	// animated option -	// NOTE: this only provides support for "slide", "bounceslide", and easings -	// not the full $.ui.accordion.animations API -	(function( $, prototype ) { -		$.extend( prototype.options, { -			animate: null, -			animated: "slide" -		}); - -		var _create = prototype._create; -		prototype._create = function() { -			var options = this.options; -			if ( options.animate === null ) { -				if ( !options.animated ) { -					options.animate = false; -				} else if ( options.animated === "slide" ) { -					options.animate = 300; -				} else if ( options.animated === "bounceslide" ) { -					options.animate = { -						duration: 200, -						down: { -							easing: "easeOutBounce", -							duration: 1000 -						} -					}; -				} else { -					options.animate = options.animated; -				} -			} - -			_create.call( this ); -		}; -	}( jQuery, jQuery.ui.accordion.prototype ) ); -} -  })( jQuery ); -(function( $, undefined ) { -// used to prevent race conditions with remote data sources -var requestIndex = 0; +(function( $, undefined ) {  $.widget( "ui.autocomplete", { -	version: "1.9.2", +	version: "1.10.4",  	defaultElement: "<input>",  	options: { -		appendTo: "body", +		appendTo: null,  		autoFocus: false,  		delay: 300,  		minLength: 1, @@ -5489,6 +6666,7 @@ $.widget( "ui.autocomplete", {  		select: null  	}, +	requestIndex: 0,  	pending: 0,  	_create: function() { @@ -5499,10 +6677,21 @@ $.widget( "ui.autocomplete", {  		// so we use the suppressKeyPressRepeat flag to avoid handling keypress  		// events when we know the keydown event was used to modify the  		// search term. #7799 -		var suppressKeyPress, suppressKeyPressRepeat, suppressInput; +		var suppressKeyPress, suppressKeyPressRepeat, suppressInput, +			nodeName = this.element[0].nodeName.toLowerCase(), +			isTextarea = nodeName === "textarea", +			isInput = nodeName === "input"; -		this.isMultiLine = this._isMultiLine(); -		this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ]; +		this.isMultiLine = +			// Textareas are always multi-line +			isTextarea ? true : +			// Inputs are always single-line, even if inside a contentEditable element +			// IE also treats inputs as contentEditable +			isInput ? false : +			// All other element types are determined by whether or not they're contentEditable +			this.element.prop( "isContentEditable" ); + +		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];  		this.isNewMenu = true;  		this.element @@ -5575,7 +6764,9 @@ $.widget( "ui.autocomplete", {  			keypress: function( event ) {  				if ( suppressKeyPress ) {  					suppressKeyPress = false; -					event.preventDefault(); +					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { +						event.preventDefault(); +					}  					return;  				}  				if ( suppressKeyPressRepeat ) { @@ -5625,17 +6816,14 @@ $.widget( "ui.autocomplete", {  		this._initSource();  		this.menu = $( "<ul>" ) -			.addClass( "ui-autocomplete" ) -			.appendTo( this.document.find( this.options.appendTo || "body" )[ 0 ] ) +			.addClass( "ui-autocomplete ui-front" ) +			.appendTo( this._appendTo() )  			.menu({ -				// custom key handling for now -				input: $(),  				// disable ARIA support, the live region takes care of that  				role: null  			}) -			.zIndex( this.element.zIndex() + 1 )  			.hide() -			.data( "menu" ); +			.data( "ui-menu" );  		this._on( this.menu.element, {  			mousedown: function( event ) { @@ -5668,7 +6856,8 @@ $.widget( "ui.autocomplete", {  				}  			},  			menufocus: function( event, ui ) { -				// #7024 - Prevent accidental activation of menu items in Firefox +				// support: Firefox +				// Prevent accidental activation of menu items in Firefox (#7024 #9118)  				if ( this.isNewMenu ) {  					this.isNewMenu = false;  					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { @@ -5682,9 +6871,7 @@ $.widget( "ui.autocomplete", {  					}  				} -				// back compat for _renderItem using item.autocomplete, via #7810 -				// TODO remove the fallback, see #8156 -				var item = ui.item.data( "ui-autocomplete-item" ) || ui.item.data( "item.autocomplete" ); +				var item = ui.item.data( "ui-autocomplete-item" );  				if ( false !== this._trigger( "focus", event, { item: item } ) ) {  					// use value to match what will end up in the input, if it was a key event  					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { @@ -5700,9 +6887,7 @@ $.widget( "ui.autocomplete", {  				}  			},  			menuselect: function( event, ui ) { -				// back compat for _renderItem using item.autocomplete, via #7810 -				// TODO remove the fallback, see #8156 -				var item = ui.item.data( "ui-autocomplete-item" ) || ui.item.data( "item.autocomplete" ), +				var item = ui.item.data( "ui-autocomplete-item" ),  					previous = this.previous;  				// only trigger when focus was lost (click on menu) @@ -5735,11 +6920,7 @@ $.widget( "ui.autocomplete", {  				"aria-live": "polite"  			})  			.addClass( "ui-helper-hidden-accessible" ) -			.insertAfter( this.element ); - -		if ( $.fn.bgiframe ) { -			this.menu.element.bgiframe(); -		} +			.insertBefore( this.element );  		// turning off autocomplete prevents the browser from remembering the  		// value when navigating through history, so we re-enable autocomplete @@ -5766,25 +6947,31 @@ $.widget( "ui.autocomplete", {  			this._initSource();  		}  		if ( key === "appendTo" ) { -			this.menu.element.appendTo( this.document.find( value || "body" )[0] ); +			this.menu.element.appendTo( this._appendTo() );  		}  		if ( key === "disabled" && value && this.xhr ) {  			this.xhr.abort();  		}  	}, -	_isMultiLine: function() { -		// Textareas are always multi-line -		if ( this.element.is( "textarea" ) ) { -			return true; +	_appendTo: function() { +		var element = this.options.appendTo; + +		if ( element ) { +			element = element.jquery || element.nodeType ? +				$( element ) : +				this.document.find( element ).eq( 0 );  		} -		// Inputs are always single-line, even if inside a contentEditable element -		// IE also treats inputs as contentEditable -		if ( this.element.is( "input" ) ) { -			return false; + +		if ( !element ) { +			element = this.element.closest( ".ui-front" );  		} -		// All other element types are determined by whether or not they're contentEditable -		return this.element.prop( "isContentEditable" ); + +		if ( !element.length ) { +			element = this.document[0].body; +		} + +		return element;  	},  	_initSource: function() { @@ -5855,19 +7042,18 @@ $.widget( "ui.autocomplete", {  	},  	_response: function() { -		var that = this, -			index = ++requestIndex; +		var index = ++this.requestIndex; -		return function( content ) { -			if ( index === requestIndex ) { -				that.__response( content ); +		return $.proxy(function( content ) { +			if ( index === this.requestIndex ) { +				this.__response( content );  			} -			that.pending--; -			if ( !that.pending ) { -				that.element.removeClass( "ui-autocomplete-loading" ); +			this.pending--; +			if ( !this.pending ) { +				this.element.removeClass( "ui-autocomplete-loading" );  			} -		}; +		}, this );  	},  	__response: function( content ) { @@ -5924,10 +7110,9 @@ $.widget( "ui.autocomplete", {  	},  	_suggest: function( items ) { -		var ul = this.menu.element -			.empty() -			.zIndex( this.element.zIndex() + 1 ); +		var ul = this.menu.element.empty();  		this._renderMenu( ul, items ); +		this.isNewMenu = true;  		this.menu.refresh();  		// size and position menu @@ -6043,18 +7228,17 @@ $.widget( "ui.autocomplete", $.ui.autocomplete, {  	}  }); -  }( jQuery )); +  (function( $, undefined ) { -var lastActive, startXPos, startYPos, clickDragged, +var lastActive,  	baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", -	stateClasses = "ui-state-hover ui-state-active ",  	typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",  	formResetHandler = function() { -		var buttons = $( this ).find( ":ui-button" ); +		var form = $( this );  		setTimeout(function() { -			buttons.button( "refresh" ); +			form.find( ":ui-button" ).button( "refresh" );  		}, 1 );  	},  	radioGroup = function( radio ) { @@ -6062,6 +7246,7 @@ var lastActive, startXPos, startYPos, clickDragged,  			form = radio.form,  			radios = $( [] );  		if ( name ) { +			name = name.replace( /'/g, "\\'" );  			if ( form ) {  				radios = $( form ).find( "[name='" + name + "']" );  			} else { @@ -6075,7 +7260,7 @@ var lastActive, startXPos, startYPos, clickDragged,  	};  $.widget( "ui.button", { -	version: "1.9.2", +	version: "1.10.4",  	defaultElement: "<button>",  	options: {  		disabled: null, @@ -6103,8 +7288,7 @@ $.widget( "ui.button", {  		var that = this,  			options = this.options,  			toggleButton = this.type === "checkbox" || this.type === "radio", -			activeClass = !toggleButton ? "ui-state-active" : "", -			focusClass = "ui-state-focus"; +			activeClass = !toggleButton ? "ui-state-active" : "";  		if ( options.label === null ) {  			options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html()); @@ -6136,55 +7320,32 @@ $.widget( "ui.button", {  				}  			}); -		this.element -			.bind( "focus" + this.eventNamespace, function() { -				// no need to check disabled, focus won't be triggered anyway -				that.buttonElement.addClass( focusClass ); -			}) -			.bind( "blur" + this.eventNamespace, function() { -				that.buttonElement.removeClass( focusClass ); -			}); +		// Can't use _focusable() because the element that receives focus +		// and the element that gets the ui-state-focus class are different +		this._on({ +			focus: function() { +				this.buttonElement.addClass( "ui-state-focus" ); +			}, +			blur: function() { +				this.buttonElement.removeClass( "ui-state-focus" ); +			} +		});  		if ( toggleButton ) {  			this.element.bind( "change" + this.eventNamespace, function() { -				if ( clickDragged ) { -					return; -				}  				that.refresh();  			}); -			// if mouse moves between mousedown and mouseup (drag) set clickDragged flag -			// prevents issue where button state changes but checkbox/radio checked state -			// does not in Firefox (see ticket #6970) -			this.buttonElement -				.bind( "mousedown" + this.eventNamespace, function( event ) { -					if ( options.disabled ) { -						return; -					} -					clickDragged = false; -					startXPos = event.pageX; -					startYPos = event.pageY; -				}) -				.bind( "mouseup" + this.eventNamespace, function( event ) { -					if ( options.disabled ) { -						return; -					} -					if ( startXPos !== event.pageX || startYPos !== event.pageY ) { -						clickDragged = true; -					} -			});  		}  		if ( this.type === "checkbox" ) {  			this.buttonElement.bind( "click" + this.eventNamespace, function() { -				if ( options.disabled || clickDragged ) { +				if ( options.disabled ) {  					return false;  				} -				$( this ).toggleClass( "ui-state-active" ); -				that.buttonElement.attr( "aria-pressed", that.element[0].checked );  			});  		} else if ( this.type === "radio" ) {  			this.buttonElement.bind( "click" + this.eventNamespace, function() { -				if ( options.disabled || clickDragged ) { +				if ( options.disabled ) {  					return false;  				}  				$( this ).addClass( "ui-state-active" ); @@ -6225,7 +7386,9 @@ $.widget( "ui.button", {  						$( this ).addClass( "ui-state-active" );  					}  				}) -				.bind( "keyup" + this.eventNamespace, function() { +				// see #8559, we bind to blur here in case the button element loses +				// focus between keydown and keyup, it would be left in an "active" state +				.bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {  					$( this ).removeClass( "ui-state-active" );  				}); @@ -6292,7 +7455,7 @@ $.widget( "ui.button", {  		this.element  			.removeClass( "ui-helper-hidden-accessible" );  		this.buttonElement -			.removeClass( baseClasses + " " + stateClasses + " " + typeClasses ) +			.removeClass( baseClasses + " ui-state-active " + typeClasses )  			.removeAttr( "role" )  			.removeAttr( "aria-pressed" )  			.html( this.buttonElement.find(".ui-button-text").html() ); @@ -6305,10 +7468,9 @@ $.widget( "ui.button", {  	_setOption: function( key, value ) {  		this._super( key, value );  		if ( key === "disabled" ) { +			this.element.prop( "disabled", !!value );  			if ( value ) { -				this.element.prop( "disabled", true ); -			} else { -				this.element.prop( "disabled", false ); +				this.buttonElement.removeClass( "ui-state-focus" );  			}  			return;  		} @@ -6392,9 +7554,9 @@ $.widget( "ui.button", {  });  $.widget( "ui.buttonset", { -	version: "1.9.2", +	version: "1.10.4",  	options: { -		items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)" +		items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"  	},  	_create: function() { @@ -6449,13 +7611,13 @@ $.widget( "ui.buttonset", {  });  }( jQuery ) ); +  (function( $, undefined ) { -$.extend($.ui, { datepicker: { version: "1.9.2" } }); +$.extend($.ui, { datepicker: { version: "1.10.4" } }); -var PROP_NAME = 'datepicker'; -var dpuuid = new Date().getTime(); -var instActive; +var PROP_NAME = "datepicker", +	instActive;  /* Date picker manager.     Use the singleton instance of this class, $.datepicker, to interact with the date picker. @@ -6463,50 +7625,49 @@ var instActive;     allowing multiple different settings on the same page. */  function Datepicker() { -	this.debug = false; // Change this to true to start debugging  	this._curInst = null; // The current instance in use  	this._keyEvent = false; // If the last event was a key event  	this._disabledInputs = []; // List of date picker inputs that have been disabled  	this._datepickerShowing = false; // True if the popup picker is showing , false if not  	this._inDialog = false; // True if showing within a "dialog", false if not -	this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division -	this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class -	this._appendClass = 'ui-datepicker-append'; // The name of the append marker class -	this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class -	this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class -	this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class -	this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class -	this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class -	this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class +	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division +	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class +	this._appendClass = "ui-datepicker-append"; // The name of the append marker class +	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class +	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class +	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class +	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class +	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class +	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class  	this.regional = []; // Available regional settings, indexed by language code -	this.regional[''] = { // Default regional settings -		closeText: 'Done', // Display text for close link -		prevText: 'Prev', // Display text for previous month link -		nextText: 'Next', // Display text for next month link -		currentText: 'Today', // Display text for current month link -		monthNames: ['January','February','March','April','May','June', -			'July','August','September','October','November','December'], // Names of months for drop-down and formatting -		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting -		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting -		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting -		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday -		weekHeader: 'Wk', // Column header for week of the year -		dateFormat: 'mm/dd/yy', // See format options on parseDate +	this.regional[""] = { // Default regional settings +		closeText: "Done", // Display text for close link +		prevText: "Prev", // Display text for previous month link +		nextText: "Next", // Display text for next month link +		currentText: "Today", // Display text for current month link +		monthNames: ["January","February","March","April","May","June", +			"July","August","September","October","November","December"], // Names of months for drop-down and formatting +		monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting +		dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting +		dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting +		dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday +		weekHeader: "Wk", // Column header for week of the year +		dateFormat: "mm/dd/yy", // See format options on parseDate  		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...  		isRTL: false, // True if right-to-left language, false if left-to-right  		showMonthAfterYear: false, // True if the year select precedes month, false for month then year -		yearSuffix: '' // Additional text to append to the year in the month headers +		yearSuffix: "" // Additional text to append to the year in the month headers  	};  	this._defaults = { // Global defaults for all the date picker instances -		showOn: 'focus', // 'focus' for popup on focus, -			// 'button' for trigger button, or 'both' for either -		showAnim: 'fadeIn', // Name of jQuery animation for popup +		showOn: "focus", // "focus" for popup on focus, +			// "button" for trigger button, or "both" for either +		showAnim: "fadeIn", // Name of jQuery animation for popup  		showOptions: {}, // Options for enhanced animations  		defaultDate: null, // Used when field is blank: actual date,  			// +/-number for offset from today, null for today -		appendText: '', // Display text following the input box, e.g. showing the format -		buttonText: '...', // Text for trigger button -		buttonImage: '', // URL for trigger button image +		appendText: "", // Display text following the input box, e.g. showing the format +		buttonText: "...", // Text for trigger button +		buttonImage: "", // URL for trigger button image  		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button  		hideIfNoPrevNext: false, // True to hide next/previous month links  			// if not applicable, false to just disable them @@ -6514,7 +7675,7 @@ function Datepicker() {  		gotoCurrent: false, // True if today link goes back to current selection instead  		changeMonth: false, // True if month can be selected directly, false if only prev/next  		changeYear: false, // True if year can be selected directly, false if only prev/next -		yearRange: 'c-10:c+10', // Range of years to display in drop-down, +		yearRange: "c-10:c+10", // Range of years to display in drop-down,  			// either relative to today's year (-nn:+nn), relative to currently displayed year  			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)  		showOtherMonths: false, // True to show dates in other months, false to leave blank @@ -6522,14 +7683,14 @@ function Datepicker() {  		showWeek: false, // True to show week of the year, false to not show it  		calculateWeek: this.iso8601Week, // How to calculate the week of the year,  			// takes a Date and returns the number of the week for it -		shortYearCutoff: '+10', // Short year values < this are in the current century, +		shortYearCutoff: "+10", // Short year values < this are in the current century,  			// > this are in the previous century, -			// string value starting with '+' for current year + value +			// string value starting with "+" for current year + value  		minDate: null, // The earliest selectable date, or null for no limit  		maxDate: null, // The latest selectable date, or null for no limit -		duration: 'fast', // Duration of display/closure +		duration: "fast", // Duration of display/closure  		beforeShowDay: null, // Function that takes a date and returns an array with -			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '', +			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",  			// [2] = cell title (optional), e.g. $.datepicker.noWeekends  		beforeShow: null, // Function that takes an input field and  			// returns a set of custom settings for the date picker @@ -6540,69 +7701,53 @@ function Datepicker() {  		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)  		stepMonths: 1, // Number of months to step back/forward  		stepBigMonths: 12, // Number of months to step back/forward for the big links -		altField: '', // Selector for an alternate field to store selected dates into -		altFormat: '', // The date format to use for the alternate field +		altField: "", // Selector for an alternate field to store selected dates into +		altFormat: "", // The date format to use for the alternate field  		constrainInput: true, // The input is constrained by the current date format  		showButtonPanel: false, // True to show button panel, false to not show it  		autoSize: false, // True to size the input for the date format, false to leave as is  		disabled: false // The initial disabled state  	}; -	$.extend(this._defaults, this.regional['']); -	this.dpDiv = bindHover($('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')); +	$.extend(this._defaults, this.regional[""]); +	this.dpDiv = bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"));  }  $.extend(Datepicker.prototype, {  	/* Class name added to elements to indicate already configured with a date picker. */ -	markerClassName: 'hasDatepicker', +	markerClassName: "hasDatepicker",  	//Keep track of the maximum number of rows displayed (see #7043)  	maxRows: 4, -	/* Debug logging (if enabled). */ -	log: function () { -		if (this.debug) -			console.log.apply('', arguments); -	}, -  	// TODO rename to "widget" when switching to widget factory  	_widgetDatepicker: function() {  		return this.dpDiv;  	},  	/* Override the default settings for all instances of the date picker. -	   @param  settings  object - the new settings to use as defaults (anonymous object) -	   @return the manager object */ +	 * @param  settings  object - the new settings to use as defaults (anonymous object) +	 * @return the manager object +	 */  	setDefaults: function(settings) {  		extendRemove(this._defaults, settings || {});  		return this;  	},  	/* Attach the date picker to a jQuery selection. -	   @param  target    element - the target input field or division or span -	   @param  settings  object - the new settings to use for this date picker instance (anonymous) */ +	 * @param  target	element - the target input field or division or span +	 * @param  settings  object - the new settings to use for this date picker instance (anonymous) +	 */  	_attachDatepicker: function(target, settings) { -		// check for settings on the control itself - in namespace 'date:' -		var inlineSettings = null; -		for (var attrName in this._defaults) { -			var attrValue = target.getAttribute('date:' + attrName); -			if (attrValue) { -				inlineSettings = inlineSettings || {}; -				try { -					inlineSettings[attrName] = eval(attrValue); -				} catch (err) { -					inlineSettings[attrName] = attrValue; -				} -			} -		} -		var nodeName = target.nodeName.toLowerCase(); -		var inline = (nodeName == 'div' || nodeName == 'span'); +		var nodeName, inline, inst; +		nodeName = target.nodeName.toLowerCase(); +		inline = (nodeName === "div" || nodeName === "span");  		if (!target.id) {  			this.uuid += 1; -			target.id = 'dp' + this.uuid; +			target.id = "dp" + this.uuid;  		} -		var inst = this._newInst($(target), inline); -		inst.settings = $.extend({}, settings || {}, inlineSettings || {}); -		if (nodeName == 'input') { +		inst = this._newInst($(target), inline); +		inst.settings = $.extend({}, settings || {}); +		if (nodeName === "input") {  			this._connectDatepicker(target, inst);  		} else if (inline) {  			this._inlineDatepicker(target, inst); @@ -6611,13 +7756,13 @@ $.extend(Datepicker.prototype, {  	/* Create a new instance object. */  	_newInst: function(target, inline) { -		var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\$1'); // escape jQuery meta chars +		var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars  		return {id: id, input: target, // associated target  			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection  			drawMonth: 0, drawYear: 0, // month being drawn  			inline: inline, // is datepicker inline or not  			dpDiv: (!inline ? this.dpDiv : // presentation div -			bindHover($('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')))}; +			bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))};  	},  	/* Attach the date picker to an input field. */ @@ -6625,16 +7770,12 @@ $.extend(Datepicker.prototype, {  		var input = $(target);  		inst.append = $([]);  		inst.trigger = $([]); -		if (input.hasClass(this.markerClassName)) +		if (input.hasClass(this.markerClassName)) {  			return; +		}  		this._attachments(input, inst);  		input.addClass(this.markerClassName).keydown(this._doKeyDown). -			keypress(this._doKeyPress).keyup(this._doKeyUp). -			bind("setData.datepicker", function(event, key, value) { -				inst.settings[key] = value; -			}).bind("getData.datepicker", function(event, key) { -				return this._get(inst, key); -			}); +			keypress(this._doKeyPress).keyup(this._doKeyUp);  		this._autoSize(inst);  		$.data(target, PROP_NAME, inst);  		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) @@ -6645,38 +7786,47 @@ $.extend(Datepicker.prototype, {  	/* Make attachments based on settings. */  	_attachments: function(input, inst) { -		var appendText = this._get(inst, 'appendText'); -		var isRTL = this._get(inst, 'isRTL'); -		if (inst.append) +		var showOn, buttonText, buttonImage, +			appendText = this._get(inst, "appendText"), +			isRTL = this._get(inst, "isRTL"); + +		if (inst.append) {  			inst.append.remove(); +		}  		if (appendText) { -			inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>'); -			input[isRTL ? 'before' : 'after'](inst.append); +			inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>"); +			input[isRTL ? "before" : "after"](inst.append);  		} -		input.unbind('focus', this._showDatepicker); -		if (inst.trigger) + +		input.unbind("focus", this._showDatepicker); + +		if (inst.trigger) {  			inst.trigger.remove(); -		var showOn = this._get(inst, 'showOn'); -		if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field +		} + +		showOn = this._get(inst, "showOn"); +		if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field  			input.focus(this._showDatepicker); -		if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked -			var buttonText = this._get(inst, 'buttonText'); -			var buttonImage = this._get(inst, 'buttonImage'); -			inst.trigger = $(this._get(inst, 'buttonImageOnly') ? -				$('<img/>').addClass(this._triggerClass). +		} +		if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked +			buttonText = this._get(inst, "buttonText"); +			buttonImage = this._get(inst, "buttonImage"); +			inst.trigger = $(this._get(inst, "buttonImageOnly") ? +				$("<img/>").addClass(this._triggerClass).  					attr({ src: buttonImage, alt: buttonText, title: buttonText }) : -				$('<button type="button"></button>').addClass(this._triggerClass). -					html(buttonImage == '' ? buttonText : $('<img/>').attr( +				$("<button type='button'></button>").addClass(this._triggerClass). +					html(!buttonImage ? buttonText : $("<img/>").attr(  					{ src:buttonImage, alt:buttonText, title:buttonText }))); -			input[isRTL ? 'before' : 'after'](inst.trigger); +			input[isRTL ? "before" : "after"](inst.trigger);  			inst.trigger.click(function() { -				if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0]) +				if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {  					$.datepicker._hideDatepicker(); -				else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) { +				} else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {  					$.datepicker._hideDatepicker();  					$.datepicker._showDatepicker(input[0]); -				} else +				} else {  					$.datepicker._showDatepicker(input[0]); +				}  				return false;  			});  		} @@ -6684,14 +7834,16 @@ $.extend(Datepicker.prototype, {  	/* Apply the maximum length for the date format. */  	_autoSize: function(inst) { -		if (this._get(inst, 'autoSize') && !inst.inline) { -			var date = new Date(2009, 12 - 1, 20); // Ensure double digits -			var dateFormat = this._get(inst, 'dateFormat'); +		if (this._get(inst, "autoSize") && !inst.inline) { +			var findMax, max, maxI, i, +				date = new Date(2009, 12 - 1, 20), // Ensure double digits +				dateFormat = this._get(inst, "dateFormat"); +  			if (dateFormat.match(/[DM]/)) { -				var findMax = function(names) { -					var max = 0; -					var maxI = 0; -					for (var i = 0; i < names.length; i++) { +				findMax = function(names) { +					max = 0; +					maxI = 0; +					for (i = 0; i < names.length; i++) {  						if (names[i].length > max) {  							max = names[i].length;  							maxI = i; @@ -6700,25 +7852,21 @@ $.extend(Datepicker.prototype, {  					return maxI;  				};  				date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? -					'monthNames' : 'monthNamesShort')))); +					"monthNames" : "monthNamesShort"))));  				date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? -					'dayNames' : 'dayNamesShort'))) + 20 - date.getDay()); +					"dayNames" : "dayNamesShort"))) + 20 - date.getDay());  			} -			inst.input.attr('size', this._formatDate(inst, date).length); +			inst.input.attr("size", this._formatDate(inst, date).length);  		}  	},  	/* Attach an inline date picker to a div. */  	_inlineDatepicker: function(target, inst) {  		var divSpan = $(target); -		if (divSpan.hasClass(this.markerClassName)) +		if (divSpan.hasClass(this.markerClassName)) {  			return; -		divSpan.addClass(this.markerClassName).append(inst.dpDiv). -			bind("setData.datepicker", function(event, key, value){ -				inst.settings[key] = value; -			}).bind("getData.datepicker", function(event, key){ -				return this._get(inst, key); -			}); +		} +		divSpan.addClass(this.markerClassName).append(inst.dpDiv);  		$.data(target, PROP_NAME, inst);  		this._setDate(inst, this._getDefaultDate(inst), true);  		this._updateDatepicker(inst); @@ -6733,186 +7881,219 @@ $.extend(Datepicker.prototype, {  	},  	/* Pop-up the date picker in a "dialog" box. -	   @param  input     element - ignored -	   @param  date      string or Date - the initial date to display -	   @param  onSelect  function - the function to call when a date is selected -	   @param  settings  object - update the dialog date picker instance's settings (anonymous object) -	   @param  pos       int[2] - coordinates for the dialog's position within the screen or -	                     event - with x/y coordinates or -	                     leave empty for default (screen centre) -	   @return the manager object */ +	 * @param  input element - ignored +	 * @param  date	string or Date - the initial date to display +	 * @param  onSelect  function - the function to call when a date is selected +	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object) +	 * @param  pos int[2] - coordinates for the dialog's position within the screen or +	 *					event - with x/y coordinates or +	 *					leave empty for default (screen centre) +	 * @return the manager object +	 */  	_dialogDatepicker: function(input, date, onSelect, settings, pos) { -		var inst = this._dialogInst; // internal instance +		var id, browserWidth, browserHeight, scrollX, scrollY, +			inst = this._dialogInst; // internal instance +  		if (!inst) {  			this.uuid += 1; -			var id = 'dp' + this.uuid; -			this._dialogInput = $('<input type="text" id="' + id + -				'" style="position: absolute; top: -100px; width: 0px;"/>'); +			id = "dp" + this.uuid; +			this._dialogInput = $("<input type='text' id='" + id + +				"' style='position: absolute; top: -100px; width: 0px;'/>");  			this._dialogInput.keydown(this._doKeyDown); -			$('body').append(this._dialogInput); +			$("body").append(this._dialogInput);  			inst = this._dialogInst = this._newInst(this._dialogInput, false);  			inst.settings = {};  			$.data(this._dialogInput[0], PROP_NAME, inst);  		}  		extendRemove(inst.settings, settings || {}); -		date = (date && date.constructor == Date ? this._formatDate(inst, date) : date); +		date = (date && date.constructor === Date ? this._formatDate(inst, date) : date);  		this._dialogInput.val(date);  		this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);  		if (!this._pos) { -			var browserWidth = document.documentElement.clientWidth; -			var browserHeight = document.documentElement.clientHeight; -			var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; -			var scrollY = document.documentElement.scrollTop || document.body.scrollTop; +			browserWidth = document.documentElement.clientWidth; +			browserHeight = document.documentElement.clientHeight; +			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; +			scrollY = document.documentElement.scrollTop || document.body.scrollTop;  			this._pos = // should use actual width/height below  				[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];  		}  		// move input on screen for focus, but hidden behind dialog -		this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px'); +		this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px");  		inst.settings.onSelect = onSelect;  		this._inDialog = true;  		this.dpDiv.addClass(this._dialogClass);  		this._showDatepicker(this._dialogInput[0]); -		if ($.blockUI) +		if ($.blockUI) {  			$.blockUI(this.dpDiv); +		}  		$.data(this._dialogInput[0], PROP_NAME, inst);  		return this;  	},  	/* Detach a datepicker from its control. -	   @param  target    element - the target input field or division or span */ +	 * @param  target	element - the target input field or division or span +	 */  	_destroyDatepicker: function(target) { -		var $target = $(target); -		var inst = $.data(target, PROP_NAME); +		var nodeName, +			$target = $(target), +			inst = $.data(target, PROP_NAME); +  		if (!$target.hasClass(this.markerClassName)) {  			return;  		} -		var nodeName = target.nodeName.toLowerCase(); + +		nodeName = target.nodeName.toLowerCase();  		$.removeData(target, PROP_NAME); -		if (nodeName == 'input') { +		if (nodeName === "input") {  			inst.append.remove();  			inst.trigger.remove();  			$target.removeClass(this.markerClassName). -				unbind('focus', this._showDatepicker). -				unbind('keydown', this._doKeyDown). -				unbind('keypress', this._doKeyPress). -				unbind('keyup', this._doKeyUp); -		} else if (nodeName == 'div' || nodeName == 'span') +				unbind("focus", this._showDatepicker). +				unbind("keydown", this._doKeyDown). +				unbind("keypress", this._doKeyPress). +				unbind("keyup", this._doKeyUp); +		} else if (nodeName === "div" || nodeName === "span") {  			$target.removeClass(this.markerClassName).empty(); +		}  	},  	/* Enable the date picker to a jQuery selection. -	   @param  target    element - the target input field or division or span */ +	 * @param  target	element - the target input field or division or span +	 */  	_enableDatepicker: function(target) { -		var $target = $(target); -		var inst = $.data(target, PROP_NAME); +		var nodeName, inline, +			$target = $(target), +			inst = $.data(target, PROP_NAME); +  		if (!$target.hasClass(this.markerClassName)) {  			return;  		} -		var nodeName = target.nodeName.toLowerCase(); -		if (nodeName == 'input') { + +		nodeName = target.nodeName.toLowerCase(); +		if (nodeName === "input") {  			target.disabled = false; -			inst.trigger.filter('button'). +			inst.trigger.filter("button").  				each(function() { this.disabled = false; }).end(). -				filter('img').css({opacity: '1.0', cursor: ''}); -		} -		else if (nodeName == 'div' || nodeName == 'span') { -			var inline = $target.children('.' + this._inlineClass); -			inline.children().removeClass('ui-state-disabled'); +				filter("img").css({opacity: "1.0", cursor: ""}); +		} else if (nodeName === "div" || nodeName === "span") { +			inline = $target.children("." + this._inlineClass); +			inline.children().removeClass("ui-state-disabled");  			inline.find("select.ui-datepicker-month, select.ui-datepicker-year").  				prop("disabled", false);  		}  		this._disabledInputs = $.map(this._disabledInputs, -			function(value) { return (value == target ? null : value); }); // delete entry +			function(value) { return (value === target ? null : value); }); // delete entry  	},  	/* Disable the date picker to a jQuery selection. -	   @param  target    element - the target input field or division or span */ +	 * @param  target	element - the target input field or division or span +	 */  	_disableDatepicker: function(target) { -		var $target = $(target); -		var inst = $.data(target, PROP_NAME); +		var nodeName, inline, +			$target = $(target), +			inst = $.data(target, PROP_NAME); +  		if (!$target.hasClass(this.markerClassName)) {  			return;  		} -		var nodeName = target.nodeName.toLowerCase(); -		if (nodeName == 'input') { + +		nodeName = target.nodeName.toLowerCase(); +		if (nodeName === "input") {  			target.disabled = true; -			inst.trigger.filter('button'). +			inst.trigger.filter("button").  				each(function() { this.disabled = true; }).end(). -				filter('img').css({opacity: '0.5', cursor: 'default'}); -		} -		else if (nodeName == 'div' || nodeName == 'span') { -			var inline = $target.children('.' + this._inlineClass); -			inline.children().addClass('ui-state-disabled'); +				filter("img").css({opacity: "0.5", cursor: "default"}); +		} else if (nodeName === "div" || nodeName === "span") { +			inline = $target.children("." + this._inlineClass); +			inline.children().addClass("ui-state-disabled");  			inline.find("select.ui-datepicker-month, select.ui-datepicker-year").  				prop("disabled", true);  		}  		this._disabledInputs = $.map(this._disabledInputs, -			function(value) { return (value == target ? null : value); }); // delete entry +			function(value) { return (value === target ? null : value); }); // delete entry  		this._disabledInputs[this._disabledInputs.length] = target;  	},  	/* Is the first field in a jQuery collection disabled as a datepicker? -	   @param  target    element - the target input field or division or span -	   @return boolean - true if disabled, false if enabled */ +	 * @param  target	element - the target input field or division or span +	 * @return boolean - true if disabled, false if enabled +	 */  	_isDisabledDatepicker: function(target) {  		if (!target) {  			return false;  		}  		for (var i = 0; i < this._disabledInputs.length; i++) { -			if (this._disabledInputs[i] == target) +			if (this._disabledInputs[i] === target) {  				return true; +			}  		}  		return false;  	},  	/* Retrieve the instance data for the target control. -	   @param  target  element - the target input field or division or span -	   @return  object - the associated instance data -	   @throws  error if a jQuery problem getting data */ +	 * @param  target  element - the target input field or division or span +	 * @return  object - the associated instance data +	 * @throws  error if a jQuery problem getting data +	 */  	_getInst: function(target) {  		try {  			return $.data(target, PROP_NAME);  		}  		catch (err) { -			throw 'Missing instance data for this datepicker'; +			throw "Missing instance data for this datepicker";  		}  	},  	/* Update or retrieve the settings for a date picker attached to an input field or division. -	   @param  target  element - the target input field or division or span -	   @param  name    object - the new settings to update or -	                   string - the name of the setting to change or retrieve, -	                   when retrieving also 'all' for all instance settings or -	                   'defaults' for all global defaults -	   @param  value   any - the new value for the setting -	                   (omit if above is an object or to retrieve a value) */ +	 * @param  target  element - the target input field or division or span +	 * @param  name	object - the new settings to update or +	 *				string - the name of the setting to change or retrieve, +	 *				when retrieving also "all" for all instance settings or +	 *				"defaults" for all global defaults +	 * @param  value   any - the new value for the setting +	 *				(omit if above is an object or to retrieve a value) +	 */  	_optionDatepicker: function(target, name, value) { -		var inst = this._getInst(target); -		if (arguments.length == 2 && typeof name == 'string') { -			return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) : -				(inst ? (name == 'all' ? $.extend({}, inst.settings) : +		var settings, date, minDate, maxDate, +			inst = this._getInst(target); + +		if (arguments.length === 2 && typeof name === "string") { +			return (name === "defaults" ? $.extend({}, $.datepicker._defaults) : +				(inst ? (name === "all" ? $.extend({}, inst.settings) :  				this._get(inst, name)) : null));  		} -		var settings = name || {}; -		if (typeof name == 'string') { + +		settings = name || {}; +		if (typeof name === "string") {  			settings = {};  			settings[name] = value;  		} +  		if (inst) { -			if (this._curInst == inst) { +			if (this._curInst === inst) {  				this._hideDatepicker();  			} -			var date = this._getDateDatepicker(target, true); -			var minDate = this._getMinMaxDate(inst, 'min'); -			var maxDate = this._getMinMaxDate(inst, 'max'); + +			date = this._getDateDatepicker(target, true); +			minDate = this._getMinMaxDate(inst, "min"); +			maxDate = this._getMinMaxDate(inst, "max");  			extendRemove(inst.settings, settings);  			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided -			if (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined) +			if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {  				inst.settings.minDate = this._formatDate(inst, minDate); -			if (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined) +			} +			if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {  				inst.settings.maxDate = this._formatDate(inst, maxDate); +			} +			if ( "disabled" in settings ) { +				if ( settings.disabled ) { +					this._disableDatepicker(target); +				} else { +					this._enableDatepicker(target); +				} +			}  			this._attachments($(target), inst);  			this._autoSize(inst);  			this._setDate(inst, date); @@ -6927,7 +8108,8 @@ $.extend(Datepicker.prototype, {  	},  	/* Redraw the date picker attached to an input field or division. -	   @param  target  element - the target input field or division or span */ +	 * @param  target  element - the target input field or division or span +	 */  	_refreshDatepicker: function(target) {  		var inst = this._getInst(target);  		if (inst) { @@ -6936,8 +8118,9 @@ $.extend(Datepicker.prototype, {  	},  	/* Set the dates for a jQuery selection. -	   @param  target   element - the target input field or division or span -	   @param  date     Date - the new date */ +	 * @param  target element - the target input field or division or span +	 * @param  date	Date - the new date +	 */  	_setDateDatepicker: function(target, date) {  		var inst = this._getInst(target);  		if (inst) { @@ -6948,87 +8131,110 @@ $.extend(Datepicker.prototype, {  	},  	/* Get the date(s) for the first entry in a jQuery selection. -	   @param  target     element - the target input field or division or span -	   @param  noDefault  boolean - true if no default date is to be used -	   @return Date - the current date */ +	 * @param  target element - the target input field or division or span +	 * @param  noDefault boolean - true if no default date is to be used +	 * @return Date - the current date +	 */  	_getDateDatepicker: function(target, noDefault) {  		var inst = this._getInst(target); -		if (inst && !inst.inline) +		if (inst && !inst.inline) {  			this._setDateFromField(inst, noDefault); +		}  		return (inst ? this._getDate(inst) : null);  	},  	/* Handle keystrokes. */  	_doKeyDown: function(event) { -		var inst = $.datepicker._getInst(event.target); -		var handled = true; -		var isRTL = inst.dpDiv.is('.ui-datepicker-rtl'); +		var onSelect, dateStr, sel, +			inst = $.datepicker._getInst(event.target), +			handled = true, +			isRTL = inst.dpDiv.is(".ui-datepicker-rtl"); +  		inst._keyEvent = true; -		if ($.datepicker._datepickerShowing) +		if ($.datepicker._datepickerShowing) {  			switch (event.keyCode) {  				case 9: $.datepicker._hideDatepicker();  						handled = false;  						break; // hide on tab out -				case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' + -									$.datepicker._currentClass + ')', inst.dpDiv); -						if (sel[0]) +				case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." + +									$.datepicker._currentClass + ")", inst.dpDiv); +						if (sel[0]) {  							$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); -							var onSelect = $.datepicker._get(inst, 'onSelect'); -							if (onSelect) { -								var dateStr = $.datepicker._formatDate(inst); +						} -								// trigger custom callback -								onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); -							} -						else +						onSelect = $.datepicker._get(inst, "onSelect"); +						if (onSelect) { +							dateStr = $.datepicker._formatDate(inst); + +							// trigger custom callback +							onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); +						} else {  							$.datepicker._hideDatepicker(); +						} +  						return false; // don't submit the form -						break; // select the value on enter  				case 27: $.datepicker._hideDatepicker();  						break; // hide on escape  				case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? -							-$.datepicker._get(inst, 'stepBigMonths') : -							-$.datepicker._get(inst, 'stepMonths')), 'M'); +							-$.datepicker._get(inst, "stepBigMonths") : +							-$.datepicker._get(inst, "stepMonths")), "M");  						break; // previous month/year on page up/+ ctrl  				case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? -							+$.datepicker._get(inst, 'stepBigMonths') : -							+$.datepicker._get(inst, 'stepMonths')), 'M'); +							+$.datepicker._get(inst, "stepBigMonths") : +							+$.datepicker._get(inst, "stepMonths")), "M");  						break; // next month/year on page down/+ ctrl -				case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target); +				case 35: if (event.ctrlKey || event.metaKey) { +							$.datepicker._clearDate(event.target); +						}  						handled = event.ctrlKey || event.metaKey;  						break; // clear on ctrl or command +end -				case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target); +				case 36: if (event.ctrlKey || event.metaKey) { +							$.datepicker._gotoToday(event.target); +						}  						handled = event.ctrlKey || event.metaKey;  						break; // current on ctrl or command +home -				case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D'); +				case 37: if (event.ctrlKey || event.metaKey) { +							$.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D"); +						}  						handled = event.ctrlKey || event.metaKey;  						// -1 day on ctrl or command +left -						if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? -									-$.datepicker._get(inst, 'stepBigMonths') : -									-$.datepicker._get(inst, 'stepMonths')), 'M'); +						if (event.originalEvent.altKey) { +							$.datepicker._adjustDate(event.target, (event.ctrlKey ? +								-$.datepicker._get(inst, "stepBigMonths") : +								-$.datepicker._get(inst, "stepMonths")), "M"); +						}  						// next month/year on alt +left on Mac  						break; -				case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D'); +				case 38: if (event.ctrlKey || event.metaKey) { +							$.datepicker._adjustDate(event.target, -7, "D"); +						}  						handled = event.ctrlKey || event.metaKey;  						break; // -1 week on ctrl or command +up -				case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D'); +				case 39: if (event.ctrlKey || event.metaKey) { +							$.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D"); +						}  						handled = event.ctrlKey || event.metaKey;  						// +1 day on ctrl or command +right -						if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? -									+$.datepicker._get(inst, 'stepBigMonths') : -									+$.datepicker._get(inst, 'stepMonths')), 'M'); +						if (event.originalEvent.altKey) { +							$.datepicker._adjustDate(event.target, (event.ctrlKey ? +								+$.datepicker._get(inst, "stepBigMonths") : +								+$.datepicker._get(inst, "stepMonths")), "M"); +						}  						// next month/year on alt +right  						break; -				case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D'); +				case 40: if (event.ctrlKey || event.metaKey) { +							$.datepicker._adjustDate(event.target, +7, "D"); +						}  						handled = event.ctrlKey || event.metaKey;  						break; // +1 week on ctrl or command +down  				default: handled = false;  			} -		else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home +		} else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home  			$.datepicker._showDatepicker(this); -		else { +		} else {  			handled = false;  		} +  		if (handled) {  			event.preventDefault();  			event.stopPropagation(); @@ -7037,22 +8243,27 @@ $.extend(Datepicker.prototype, {  	/* Filter entered characters - based on date format. */  	_doKeyPress: function(event) { -		var inst = $.datepicker._getInst(event.target); -		if ($.datepicker._get(inst, 'constrainInput')) { -			var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); -			var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode); -			return event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1); +		var chars, chr, +			inst = $.datepicker._getInst(event.target); + +		if ($.datepicker._get(inst, "constrainInput")) { +			chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")); +			chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode); +			return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1);  		}  	},  	/* Synchronise manual entry and field/alternate field. */  	_doKeyUp: function(event) { -		var inst = $.datepicker._getInst(event.target); -		if (inst.input.val() != inst.lastVal) { +		var date, +			inst = $.datepicker._getInst(event.target); + +		if (inst.input.val() !== inst.lastVal) {  			try { -				var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), +				date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),  					(inst.input ? inst.input.val() : null),  					$.datepicker._getFormatConfig(inst)); +  				if (date) { // only if valid  					$.datepicker._setDateFromField(inst);  					$.datepicker._updateAlternate(inst); @@ -7060,86 +8271,92 @@ $.extend(Datepicker.prototype, {  				}  			}  			catch (err) { -				$.datepicker.log(err);  			}  		}  		return true;  	},  	/* Pop-up the date picker for a given input field. -	   If false returned from beforeShow event handler do not show. -	   @param  input  element - the input field attached to the date picker or -	                  event - if triggered by focus */ +	 * If false returned from beforeShow event handler do not show. +	 * @param  input  element - the input field attached to the date picker or +	 *					event - if triggered by focus +	 */  	_showDatepicker: function(input) {  		input = input.target || input; -		if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger -			input = $('input', input.parentNode)[0]; -		if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here +		if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger +			input = $("input", input.parentNode)[0]; +		} + +		if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here  			return; -		var inst = $.datepicker._getInst(input); -		if ($.datepicker._curInst && $.datepicker._curInst != inst) { +		} + +		var inst, beforeShow, beforeShowSettings, isFixed, +			offset, showAnim, duration; + +		inst = $.datepicker._getInst(input); +		if ($.datepicker._curInst && $.datepicker._curInst !== inst) {  			$.datepicker._curInst.dpDiv.stop(true, true);  			if ( inst && $.datepicker._datepickerShowing ) {  				$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );  			}  		} -		var beforeShow = $.datepicker._get(inst, 'beforeShow'); -		var beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; + +		beforeShow = $.datepicker._get(inst, "beforeShow"); +		beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};  		if(beforeShowSettings === false){ -			//false  			return;  		}  		extendRemove(inst.settings, beforeShowSettings); +  		inst.lastVal = null;  		$.datepicker._lastInput = input;  		$.datepicker._setDateFromField(inst); -		if ($.datepicker._inDialog) // hide cursor -			input.value = ''; + +		if ($.datepicker._inDialog) { // hide cursor +			input.value = ""; +		}  		if (!$.datepicker._pos) { // position below input  			$.datepicker._pos = $.datepicker._findPos(input);  			$.datepicker._pos[1] += input.offsetHeight; // add the height  		} -		var isFixed = false; + +		isFixed = false;  		$(input).parents().each(function() { -			isFixed |= $(this).css('position') == 'fixed'; +			isFixed |= $(this).css("position") === "fixed";  			return !isFixed;  		}); -		var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; + +		offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};  		$.datepicker._pos = null;  		//to avoid flashes on Firefox  		inst.dpDiv.empty();  		// determine sizing offscreen -		inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'}); +		inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"});  		$.datepicker._updateDatepicker(inst);  		// fix width for dynamic number of date pickers  		// and adjust position before showing  		offset = $.datepicker._checkOffset(inst, offset, isFixed);  		inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? -			'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none', -			left: offset.left + 'px', top: offset.top + 'px'}); +			"static" : (isFixed ? "fixed" : "absolute")), display: "none", +			left: offset.left + "px", top: offset.top + "px"}); +  		if (!inst.inline) { -			var showAnim = $.datepicker._get(inst, 'showAnim'); -			var duration = $.datepicker._get(inst, 'duration'); -			var postProcess = function() { -				var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only -				if( !! cover.length ){ -					var borders = $.datepicker._getBorders(inst.dpDiv); -					cover.css({left: -borders[0], top: -borders[1], -						width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()}); -				} -			}; +			showAnim = $.datepicker._get(inst, "showAnim"); +			duration = $.datepicker._get(inst, "duration");  			inst.dpDiv.zIndex($(input).zIndex()+1);  			$.datepicker._datepickerShowing = true; -			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed -			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) -				inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); -			else -				inst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess); -			if (!showAnim || !duration) -				postProcess(); -			if (inst.input.is(':visible') && !inst.input.is(':disabled')) +			if ( $.effects && $.effects.effect[ showAnim ] ) { +				inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration); +			} else { +				inst.dpDiv[showAnim || "show"](showAnim ? duration : null); +			} + +			if ( $.datepicker._shouldFocusInput( inst ) ) {  				inst.input.focus(); +			} +  			$.datepicker._curInst = inst;  		}  	}, @@ -7147,66 +8364,61 @@ $.extend(Datepicker.prototype, {  	/* Generate the date picker content. */  	_updateDatepicker: function(inst) {  		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) -		var borders = $.datepicker._getBorders(inst.dpDiv);  		instActive = inst; // for delegate hover events  		inst.dpDiv.empty().append(this._generateHTML(inst));  		this._attachHandlers(inst); -		var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only -		if( !!cover.length ){ //avoid call to outerXXXX() when not in IE6 -			cover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()}) +		inst.dpDiv.find("." + this._dayOverClass + " a").mouseover(); + +		var origyearshtml, +			numMonths = this._getNumberOfMonths(inst), +			cols = numMonths[1], +			width = 17; + +		inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""); +		if (cols > 1) { +			inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em");  		} -		inst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover(); -		var numMonths = this._getNumberOfMonths(inst); -		var cols = numMonths[1]; -		var width = 17; -		inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width(''); -		if (cols > 1) -			inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em'); -		inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') + -			'Class']('ui-datepicker-multi'); -		inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') + -			'Class']('ui-datepicker-rtl'); -		if (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input && -				// #6694 - don't focus the input if it's already focused -				// this breaks the change event in IE -				inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement) +		inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + +			"Class"]("ui-datepicker-multi"); +		inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + +			"Class"]("ui-datepicker-rtl"); + +		if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {  			inst.input.focus(); +		} +  		// deffered render of the years select (to avoid flashes on Firefox)  		if( inst.yearshtml ){ -			var origyearshtml = inst.yearshtml; +			origyearshtml = inst.yearshtml;  			setTimeout(function(){  				//assure that inst.yearshtml didn't change.  				if( origyearshtml === inst.yearshtml && inst.yearshtml ){ -					inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml); +					inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml);  				}  				origyearshtml = inst.yearshtml = null;  			}, 0);  		}  	}, -	/* Retrieve the size of left and top borders for an element. -	   @param  elem  (jQuery object) the element of interest -	   @return  (number[2]) the left and top borders */ -	_getBorders: function(elem) { -		var convert = function(value) { -			return {thin: 1, medium: 2, thick: 3}[value] || value; -		}; -		return [parseFloat(convert(elem.css('border-left-width'))), -			parseFloat(convert(elem.css('border-top-width')))]; +	// #6694 - don't focus the input if it's already focused +	// this breaks the change event in IE +	// Support: IE and jQuery <1.9 +	_shouldFocusInput: function( inst ) { +		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );  	},  	/* Check positioning to remain on screen. */  	_checkOffset: function(inst, offset, isFixed) { -		var dpWidth = inst.dpDiv.outerWidth(); -		var dpHeight = inst.dpDiv.outerHeight(); -		var inputWidth = inst.input ? inst.input.outerWidth() : 0; -		var inputHeight = inst.input ? inst.input.outerHeight() : 0; -		var viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()); -		var viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); +		var dpWidth = inst.dpDiv.outerWidth(), +			dpHeight = inst.dpDiv.outerHeight(), +			inputWidth = inst.input ? inst.input.outerWidth() : 0, +			inputHeight = inst.input ? inst.input.outerHeight() : 0, +			viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), +			viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); -		offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0); -		offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0; -		offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; +		offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0); +		offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0; +		offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;  		// now check if datepicker is showing outside window viewport - move to a better place if so.  		offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? @@ -7219,47 +8431,60 @@ $.extend(Datepicker.prototype, {  	/* Find an object's position on the screen. */  	_findPos: function(obj) { -		var inst = this._getInst(obj); -		var isRTL = this._get(inst, 'isRTL'); -		while (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) { -			obj = obj[isRTL ? 'previousSibling' : 'nextSibling']; +		var position, +			inst = this._getInst(obj), +			isRTL = this._get(inst, "isRTL"); + +		while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) { +			obj = obj[isRTL ? "previousSibling" : "nextSibling"];  		} -		var position = $(obj).offset(); + +		position = $(obj).offset();  		return [position.left, position.top];  	},  	/* Hide the date picker from view. -	   @param  input  element - the input field attached to the date picker */ +	 * @param  input  element - the input field attached to the date picker +	 */  	_hideDatepicker: function(input) { -		var inst = this._curInst; -		if (!inst || (input && inst != $.data(input, PROP_NAME))) +		var showAnim, duration, postProcess, onClose, +			inst = this._curInst; + +		if (!inst || (input && inst !== $.data(input, PROP_NAME))) {  			return; +		} +  		if (this._datepickerShowing) { -			var showAnim = this._get(inst, 'showAnim'); -			var duration = this._get(inst, 'duration'); -			var postProcess = function() { +			showAnim = this._get(inst, "showAnim"); +			duration = this._get(inst, "duration"); +			postProcess = function() {  				$.datepicker._tidyDialog(inst);  			};  			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed -			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) -				inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); -			else -				inst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' : -					(showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess); -			if (!showAnim) +			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { +				inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); +			} else { +				inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : +					(showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); +			} + +			if (!showAnim) {  				postProcess(); +			}  			this._datepickerShowing = false; -			var onClose = this._get(inst, 'onClose'); -			if (onClose) -				onClose.apply((inst.input ? inst.input[0] : null), -					[(inst.input ? inst.input.val() : ''), inst]); + +			onClose = this._get(inst, "onClose"); +			if (onClose) { +				onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); +			} +  			this._lastInput = null;  			if (this._inDialog) { -				this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' }); +				this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" });  				if ($.blockUI) {  					$.unblockUI(); -					$('body').append(this.dpDiv); +					$("body").append(this.dpDiv);  				}  			}  			this._inDialog = false; @@ -7268,50 +8493,54 @@ $.extend(Datepicker.prototype, {  	/* Tidy up after a dialog display. */  	_tidyDialog: function(inst) { -		inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar'); +		inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar");  	},  	/* Close date picker if clicked elsewhere. */  	_checkExternalClick: function(event) { -		if (!$.datepicker._curInst) +		if (!$.datepicker._curInst) {  			return; +		}  		var $target = $(event.target),  			inst = $.datepicker._getInst($target[0]); -		if ( ( ( $target[0].id != $.datepicker._mainDivId && -				$target.parents('#' + $.datepicker._mainDivId).length == 0 && +		if ( ( ( $target[0].id !== $.datepicker._mainDivId && +				$target.parents("#" + $.datepicker._mainDivId).length === 0 &&  				!$target.hasClass($.datepicker.markerClassName) &&  				!$target.closest("." + $.datepicker._triggerClass).length &&  				$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || -			( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) ) -			$.datepicker._hideDatepicker(); +			( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) { +				$.datepicker._hideDatepicker(); +		}  	},  	/* Adjust one of the date sub-fields. */  	_adjustDate: function(id, offset, period) { -		var target = $(id); -		var inst = this._getInst(target[0]); +		var target = $(id), +			inst = this._getInst(target[0]); +  		if (this._isDisabledDatepicker(target[0])) {  			return;  		}  		this._adjustInstDate(inst, offset + -			(period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning +			(period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning  			period);  		this._updateDatepicker(inst);  	},  	/* Action for current link. */  	_gotoToday: function(id) { -		var target = $(id); -		var inst = this._getInst(target[0]); -		if (this._get(inst, 'gotoCurrent') && inst.currentDay) { +		var date, +			target = $(id), +			inst = this._getInst(target[0]); + +		if (this._get(inst, "gotoCurrent") && inst.currentDay) {  			inst.selectedDay = inst.currentDay;  			inst.drawMonth = inst.selectedMonth = inst.currentMonth;  			inst.drawYear = inst.selectedYear = inst.currentYear; -		} -		else { -			var date = new Date(); +		} else { +			date = new Date();  			inst.selectedDay = date.getDate();  			inst.drawMonth = inst.selectedMonth = date.getMonth();  			inst.drawYear = inst.selectedYear = date.getFullYear(); @@ -7322,23 +8551,28 @@ $.extend(Datepicker.prototype, {  	/* Action for selecting a new month/year. */  	_selectMonthYear: function(id, select, period) { -		var target = $(id); -		var inst = this._getInst(target[0]); -		inst['selected' + (period == 'M' ? 'Month' : 'Year')] = -		inst['draw' + (period == 'M' ? 'Month' : 'Year')] = +		var target = $(id), +			inst = this._getInst(target[0]); + +		inst["selected" + (period === "M" ? "Month" : "Year")] = +		inst["draw" + (period === "M" ? "Month" : "Year")] =  			parseInt(select.options[select.selectedIndex].value,10); +  		this._notifyChange(inst);  		this._adjustDate(target);  	},  	/* Action for selecting a day. */  	_selectDay: function(id, month, year, td) { -		var target = $(id); +		var inst, +			target = $(id); +  		if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {  			return;  		} -		var inst = this._getInst(target[0]); -		inst.selectedDay = inst.currentDay = $('a', td).html(); + +		inst = this._getInst(target[0]); +		inst.selectedDay = inst.currentDay = $("a", td).html();  		inst.selectedMonth = inst.currentMonth = month;  		inst.selectedYear = inst.currentYear = year;  		this._selectDate(id, this._formatDate(inst, @@ -7348,372 +8582,427 @@ $.extend(Datepicker.prototype, {  	/* Erase the input field and hide the date picker. */  	_clearDate: function(id) {  		var target = $(id); -		var inst = this._getInst(target[0]); -		this._selectDate(target, ''); +		this._selectDate(target, "");  	},  	/* Update the input field with the selected date. */  	_selectDate: function(id, dateStr) { -		var target = $(id); -		var inst = this._getInst(target[0]); +		var onSelect, +			target = $(id), +			inst = this._getInst(target[0]); +  		dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); -		if (inst.input) +		if (inst.input) {  			inst.input.val(dateStr); +		}  		this._updateAlternate(inst); -		var onSelect = this._get(inst, 'onSelect'); -		if (onSelect) + +		onSelect = this._get(inst, "onSelect"); +		if (onSelect) {  			onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback -		else if (inst.input) -			inst.input.trigger('change'); // fire the change event -		if (inst.inline) +		} else if (inst.input) { +			inst.input.trigger("change"); // fire the change event +		} + +		if (inst.inline){  			this._updateDatepicker(inst); -		else { +		} else {  			this._hideDatepicker();  			this._lastInput = inst.input[0]; -			if (typeof(inst.input[0]) != 'object') +			if (typeof(inst.input[0]) !== "object") {  				inst.input.focus(); // restore focus +			}  			this._lastInput = null;  		}  	},  	/* Update any alternate field to synchronise with the main field. */  	_updateAlternate: function(inst) { -		var altField = this._get(inst, 'altField'); +		var altFormat, date, dateStr, +			altField = this._get(inst, "altField"); +  		if (altField) { // update alternate field too -			var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat'); -			var date = this._getDate(inst); -			var dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); +			altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"); +			date = this._getDate(inst); +			dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));  			$(altField).each(function() { $(this).val(dateStr); });  		}  	},  	/* Set as beforeShowDay function to prevent selection of weekends. -	   @param  date  Date - the date to customise -	   @return [boolean, string] - is this date selectable?, what is its CSS class? */ +	 * @param  date  Date - the date to customise +	 * @return [boolean, string] - is this date selectable?, what is its CSS class? +	 */  	noWeekends: function(date) {  		var day = date.getDay(); -		return [(day > 0 && day < 6), '']; +		return [(day > 0 && day < 6), ""];  	},  	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. -	   @param  date  Date - the date to get the week for -	   @return  number - the number of the week within the year that contains this date */ +	 * @param  date  Date - the date to get the week for +	 * @return  number - the number of the week within the year that contains this date +	 */  	iso8601Week: function(date) { -		var checkDate = new Date(date.getTime()); +		var time, +			checkDate = new Date(date.getTime()); +  		// Find Thursday of this week starting on Monday  		checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); -		var time = checkDate.getTime(); + +		time = checkDate.getTime();  		checkDate.setMonth(0); // Compare with Jan 1  		checkDate.setDate(1);  		return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;  	},  	/* Parse a string value into a date object. -	   See formatDate below for the possible formats. - -	   @param  format    string - the expected format of the date -	   @param  value     string - the date in the above format -	   @param  settings  Object - attributes include: -	                     shortYearCutoff  number - the cutoff year for determining the century (optional) -	                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional) -	                     dayNames         string[7] - names of the days from Sunday (optional) -	                     monthNamesShort  string[12] - abbreviated names of the months (optional) -	                     monthNames       string[12] - names of the months (optional) -	   @return  Date - the extracted date value or null if value is blank */ +	 * See formatDate below for the possible formats. +	 * +	 * @param  format string - the expected format of the date +	 * @param  value string - the date in the above format +	 * @param  settings Object - attributes include: +	 *					shortYearCutoff  number - the cutoff year for determining the century (optional) +	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional) +	 *					dayNames		string[7] - names of the days from Sunday (optional) +	 *					monthNamesShort string[12] - abbreviated names of the months (optional) +	 *					monthNames		string[12] - names of the months (optional) +	 * @return  Date - the extracted date value or null if value is blank +	 */  	parseDate: function (format, value, settings) { -		if (format == null || value == null) -			throw 'Invalid arguments'; -		value = (typeof value == 'object' ? value.toString() : value + ''); -		if (value == '') +		if (format == null || value == null) { +			throw "Invalid arguments"; +		} + +		value = (typeof value === "object" ? value.toString() : value + ""); +		if (value === "") {  			return null; -		var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff; -		shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : -				new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); -		var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; -		var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; -		var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; -		var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; -		var year = -1; -		var month = -1; -		var day = -1; -		var doy = -1; -		var literal = false; -		// Check whether a format character is doubled -		var lookAhead = function(match) { -			var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); -			if (matches) -				iFormat++; -			return matches; -		}; -		// Extract a number from the string value -		var getNumber = function(match) { -			var isDoubled = lookAhead(match); -			var size = (match == '@' ? 14 : (match == '!' ? 20 : -				(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2)))); -			var digits = new RegExp('^\\d{1,' + size + '}'); -			var num = value.substring(iValue).match(digits); -			if (!num) -				throw 'Missing number at position ' + iValue; -			iValue += num[0].length; -			return parseInt(num[0], 10); -		}; -		// Extract a name from the string value and convert to an index -		var getName = function(match, shortNames, longNames) { -			var names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { -				return [ [k, v] ]; -			}).sort(function (a, b) { -				return -(a[1].length - b[1].length); -			}); -			var index = -1; -			$.each(names, function (i, pair) { -				var name = pair[1]; -				if (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) { -					index = pair[0]; -					iValue += name.length; -					return false; +		} + +		var iFormat, dim, extra, +			iValue = 0, +			shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, +			shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : +				new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)), +			dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, +			dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, +			monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, +			monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, +			year = -1, +			month = -1, +			day = -1, +			doy = -1, +			literal = false, +			date, +			// Check whether a format character is doubled +			lookAhead = function(match) { +				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); +				if (matches) { +					iFormat++;  				} -			}); -			if (index != -1) -				return index + 1; -			else -				throw 'Unknown name at position ' + iValue; -		}; -		// Confirm that a literal character matches the string value -		var checkLiteral = function() { -			if (value.charAt(iValue) != format.charAt(iFormat)) -				throw 'Unexpected literal at position ' + iValue; -			iValue++; -		}; -		var iValue = 0; -		for (var iFormat = 0; iFormat < format.length; iFormat++) { -			if (literal) -				if (format.charAt(iFormat) == "'" && !lookAhead("'")) +				return matches; +			}, +			// Extract a number from the string value +			getNumber = function(match) { +				var isDoubled = lookAhead(match), +					size = (match === "@" ? 14 : (match === "!" ? 20 : +					(match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), +					digits = new RegExp("^\\d{1," + size + "}"), +					num = value.substring(iValue).match(digits); +				if (!num) { +					throw "Missing number at position " + iValue; +				} +				iValue += num[0].length; +				return parseInt(num[0], 10); +			}, +			// Extract a name from the string value and convert to an index +			getName = function(match, shortNames, longNames) { +				var index = -1, +					names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { +						return [ [k, v] ]; +					}).sort(function (a, b) { +						return -(a[1].length - b[1].length); +					}); + +				$.each(names, function (i, pair) { +					var name = pair[1]; +					if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) { +						index = pair[0]; +						iValue += name.length; +						return false; +					} +				}); +				if (index !== -1) { +					return index + 1; +				} else { +					throw "Unknown name at position " + iValue; +				} +			}, +			// Confirm that a literal character matches the string value +			checkLiteral = function() { +				if (value.charAt(iValue) !== format.charAt(iFormat)) { +					throw "Unexpected literal at position " + iValue; +				} +				iValue++; +			}; + +		for (iFormat = 0; iFormat < format.length; iFormat++) { +			if (literal) { +				if (format.charAt(iFormat) === "'" && !lookAhead("'")) {  					literal = false; -				else +				} else {  					checkLiteral(); -			else +				} +			} else {  				switch (format.charAt(iFormat)) { -					case 'd': -						day = getNumber('d'); +					case "d": +						day = getNumber("d");  						break; -					case 'D': -						getName('D', dayNamesShort, dayNames); +					case "D": +						getName("D", dayNamesShort, dayNames);  						break; -					case 'o': -						doy = getNumber('o'); +					case "o": +						doy = getNumber("o");  						break; -					case 'm': -						month = getNumber('m'); +					case "m": +						month = getNumber("m");  						break; -					case 'M': -						month = getName('M', monthNamesShort, monthNames); +					case "M": +						month = getName("M", monthNamesShort, monthNames);  						break; -					case 'y': -						year = getNumber('y'); +					case "y": +						year = getNumber("y");  						break; -					case '@': -						var date = new Date(getNumber('@')); +					case "@": +						date = new Date(getNumber("@"));  						year = date.getFullYear();  						month = date.getMonth() + 1;  						day = date.getDate();  						break; -					case '!': -						var date = new Date((getNumber('!') - this._ticksTo1970) / 10000); +					case "!": +						date = new Date((getNumber("!") - this._ticksTo1970) / 10000);  						year = date.getFullYear();  						month = date.getMonth() + 1;  						day = date.getDate();  						break;  					case "'": -						if (lookAhead("'")) +						if (lookAhead("'")){  							checkLiteral(); -						else +						} else {  							literal = true; +						}  						break;  					default:  						checkLiteral();  				} +			}  		} +  		if (iValue < value.length){ -			var extra = value.substr(iValue); +			extra = value.substr(iValue);  			if (!/^\s+/.test(extra)) {  				throw "Extra/unparsed characters found in date: " + extra;  			}  		} -		if (year == -1) + +		if (year === -1) {  			year = new Date().getFullYear(); -		else if (year < 100) +		} else if (year < 100) {  			year += new Date().getFullYear() - new Date().getFullYear() % 100 +  				(year <= shortYearCutoff ? 0 : -100); +		} +  		if (doy > -1) {  			month = 1;  			day = doy;  			do { -				var dim = this._getDaysInMonth(year, month - 1); -				if (day <= dim) +				dim = this._getDaysInMonth(year, month - 1); +				if (day <= dim) {  					break; +				}  				month++;  				day -= dim;  			} while (true);  		} -		var date = this._daylightSavingAdjust(new Date(year, month - 1, day)); -		if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) -			throw 'Invalid date'; // E.g. 31/02/00 + +		date = this._daylightSavingAdjust(new Date(year, month - 1, day)); +		if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { +			throw "Invalid date"; // E.g. 31/02/00 +		}  		return date;  	},  	/* Standard date formats. */ -	ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601) -	COOKIE: 'D, dd M yy', -	ISO_8601: 'yy-mm-dd', -	RFC_822: 'D, d M y', -	RFC_850: 'DD, dd-M-y', -	RFC_1036: 'D, d M y', -	RFC_1123: 'D, d M yy', -	RFC_2822: 'D, d M yy', -	RSS: 'D, d M y', // RFC 822 -	TICKS: '!', -	TIMESTAMP: '@', -	W3C: 'yy-mm-dd', // ISO 8601 +	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) +	COOKIE: "D, dd M yy", +	ISO_8601: "yy-mm-dd", +	RFC_822: "D, d M y", +	RFC_850: "DD, dd-M-y", +	RFC_1036: "D, d M y", +	RFC_1123: "D, d M yy", +	RFC_2822: "D, d M yy", +	RSS: "D, d M y", // RFC 822 +	TICKS: "!", +	TIMESTAMP: "@", +	W3C: "yy-mm-dd", // ISO 8601  	_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +  		Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),  	/* Format a date object into a string value. -	   The format can be combinations of the following: -	   d  - day of month (no leading zero) -	   dd - day of month (two digit) -	   o  - day of year (no leading zeros) -	   oo - day of year (three digit) -	   D  - day name short -	   DD - day name long -	   m  - month of year (no leading zero) -	   mm - month of year (two digit) -	   M  - month name short -	   MM - month name long -	   y  - year (two digit) -	   yy - year (four digit) -	   @ - Unix timestamp (ms since 01/01/1970) -	   ! - Windows ticks (100ns since 01/01/0001) -	   '...' - literal text -	   '' - single quote - -	   @param  format    string - the desired format of the date -	   @param  date      Date - the date value to format -	   @param  settings  Object - attributes include: -	                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional) -	                     dayNames         string[7] - names of the days from Sunday (optional) -	                     monthNamesShort  string[12] - abbreviated names of the months (optional) -	                     monthNames       string[12] - names of the months (optional) -	   @return  string - the date in the above format */ +	 * The format can be combinations of the following: +	 * d  - day of month (no leading zero) +	 * dd - day of month (two digit) +	 * o  - day of year (no leading zeros) +	 * oo - day of year (three digit) +	 * D  - day name short +	 * DD - day name long +	 * m  - month of year (no leading zero) +	 * mm - month of year (two digit) +	 * M  - month name short +	 * MM - month name long +	 * y  - year (two digit) +	 * yy - year (four digit) +	 * @ - Unix timestamp (ms since 01/01/1970) +	 * ! - Windows ticks (100ns since 01/01/0001) +	 * "..." - literal text +	 * '' - single quote +	 * +	 * @param  format string - the desired format of the date +	 * @param  date Date - the date value to format +	 * @param  settings Object - attributes include: +	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional) +	 *					dayNames		string[7] - names of the days from Sunday (optional) +	 *					monthNamesShort string[12] - abbreviated names of the months (optional) +	 *					monthNames		string[12] - names of the months (optional) +	 * @return  string - the date in the above format +	 */  	formatDate: function (format, date, settings) { -		if (!date) -			return ''; -		var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; -		var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; -		var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; -		var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; -		// Check whether a format character is doubled -		var lookAhead = function(match) { -			var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); -			if (matches) -				iFormat++; -			return matches; -		}; -		// Format a number, with leading zero if necessary -		var formatNumber = function(match, value, len) { -			var num = '' + value; -			if (lookAhead(match)) -				while (num.length < len) -					num = '0' + num; -			return num; -		}; -		// Format a name, short or long as requested -		var formatName = function(match, value, shortNames, longNames) { -			return (lookAhead(match) ? longNames[value] : shortNames[value]); -		}; -		var output = ''; -		var literal = false; -		if (date) -			for (var iFormat = 0; iFormat < format.length; iFormat++) { -				if (literal) -					if (format.charAt(iFormat) == "'" && !lookAhead("'")) +		if (!date) { +			return ""; +		} + +		var iFormat, +			dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, +			dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, +			monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, +			monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, +			// Check whether a format character is doubled +			lookAhead = function(match) { +				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); +				if (matches) { +					iFormat++; +				} +				return matches; +			}, +			// Format a number, with leading zero if necessary +			formatNumber = function(match, value, len) { +				var num = "" + value; +				if (lookAhead(match)) { +					while (num.length < len) { +						num = "0" + num; +					} +				} +				return num; +			}, +			// Format a name, short or long as requested +			formatName = function(match, value, shortNames, longNames) { +				return (lookAhead(match) ? longNames[value] : shortNames[value]); +			}, +			output = "", +			literal = false; + +		if (date) { +			for (iFormat = 0; iFormat < format.length; iFormat++) { +				if (literal) { +					if (format.charAt(iFormat) === "'" && !lookAhead("'")) {  						literal = false; -					else +					} else {  						output += format.charAt(iFormat); -				else +					} +				} else {  					switch (format.charAt(iFormat)) { -						case 'd': -							output += formatNumber('d', date.getDate(), 2); +						case "d": +							output += formatNumber("d", date.getDate(), 2);  							break; -						case 'D': -							output += formatName('D', date.getDay(), dayNamesShort, dayNames); +						case "D": +							output += formatName("D", date.getDay(), dayNamesShort, dayNames);  							break; -						case 'o': -							output += formatNumber('o', +						case "o": +							output += formatNumber("o",  								Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);  							break; -						case 'm': -							output += formatNumber('m', date.getMonth() + 1, 2); +						case "m": +							output += formatNumber("m", date.getMonth() + 1, 2);  							break; -						case 'M': -							output += formatName('M', date.getMonth(), monthNamesShort, monthNames); +						case "M": +							output += formatName("M", date.getMonth(), monthNamesShort, monthNames);  							break; -						case 'y': -							output += (lookAhead('y') ? date.getFullYear() : -								(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); +						case "y": +							output += (lookAhead("y") ? date.getFullYear() : +								(date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100);  							break; -						case '@': +						case "@":  							output += date.getTime();  							break; -						case '!': +						case "!":  							output += date.getTime() * 10000 + this._ticksTo1970;  							break;  						case "'": -							if (lookAhead("'")) +							if (lookAhead("'")) {  								output += "'"; -							else +							} else {  								literal = true; +							}  							break;  						default:  							output += format.charAt(iFormat);  					} +				}  			} +		}  		return output;  	},  	/* Extract all possible characters from the date format. */  	_possibleChars: function (format) { -		var chars = ''; -		var literal = false; -		// Check whether a format character is doubled -		var lookAhead = function(match) { -			var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); -			if (matches) -				iFormat++; -			return matches; -		}; -		for (var iFormat = 0; iFormat < format.length; iFormat++) -			if (literal) -				if (format.charAt(iFormat) == "'" && !lookAhead("'")) +		var iFormat, +			chars = "", +			literal = false, +			// Check whether a format character is doubled +			lookAhead = function(match) { +				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); +				if (matches) { +					iFormat++; +				} +				return matches; +			}; + +		for (iFormat = 0; iFormat < format.length; iFormat++) { +			if (literal) { +				if (format.charAt(iFormat) === "'" && !lookAhead("'")) {  					literal = false; -				else +				} else {  					chars += format.charAt(iFormat); -			else +				} +			} else {  				switch (format.charAt(iFormat)) { -					case 'd': case 'm': case 'y': case '@': -						chars += '0123456789'; +					case "d": case "m": case "y": case "@": +						chars += "0123456789";  						break; -					case 'D': case 'M': +					case "D": case "M":  						return null; // Accept anything  					case "'": -						if (lookAhead("'")) +						if (lookAhead("'")) {  							chars += "'"; -						else +						} else {  							literal = true; +						}  						break;  					default:  						chars += format.charAt(iFormat);  				} +			} +		}  		return chars;  	}, @@ -7725,19 +9014,20 @@ $.extend(Datepicker.prototype, {  	/* Parse existing date and initialise date picker. */  	_setDateFromField: function(inst, noDefault) { -		if (inst.input.val() == inst.lastVal) { +		if (inst.input.val() === inst.lastVal) {  			return;  		} -		var dateFormat = this._get(inst, 'dateFormat'); -		var dates = inst.lastVal = inst.input ? inst.input.val() : null; -		var date, defaultDate; -		date = defaultDate = this._getDefaultDate(inst); -		var settings = this._getFormatConfig(inst); + +		var dateFormat = this._get(inst, "dateFormat"), +			dates = inst.lastVal = inst.input ? inst.input.val() : null, +			defaultDate = this._getDefaultDate(inst), +			date = defaultDate, +			settings = this._getFormatConfig(inst); +  		try {  			date = this.parseDate(dateFormat, dates, settings) || defaultDate;  		} catch (event) { -			this.log(event); -			dates = (noDefault ? '' : dates); +			dates = (noDefault ? "" : dates);  		}  		inst.selectedDay = date.getDate();  		inst.drawMonth = inst.selectedMonth = date.getMonth(); @@ -7751,53 +9041,56 @@ $.extend(Datepicker.prototype, {  	/* Retrieve the default date shown on opening. */  	_getDefaultDate: function(inst) {  		return this._restrictMinMax(inst, -			this._determineDate(inst, this._get(inst, 'defaultDate'), new Date())); +			this._determineDate(inst, this._get(inst, "defaultDate"), new Date()));  	},  	/* A date may be specified as an exact value or a relative one. */  	_determineDate: function(inst, date, defaultDate) {  		var offsetNumeric = function(offset) { -			var date = new Date(); -			date.setDate(date.getDate() + offset); -			return date; -		}; -		var offsetString = function(offset) { -			try { -				return $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), -					offset, $.datepicker._getFormatConfig(inst)); -			} -			catch (e) { -				// Ignore -			} -			var date = (offset.toLowerCase().match(/^c/) ? -				$.datepicker._getDate(inst) : null) || new Date(); -			var year = date.getFullYear(); -			var month = date.getMonth(); -			var day = date.getDate(); -			var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g; -			var matches = pattern.exec(offset); -			while (matches) { -				switch (matches[2] || 'd') { -					case 'd' : case 'D' : -						day += parseInt(matches[1],10); break; -					case 'w' : case 'W' : -						day += parseInt(matches[1],10) * 7; break; -					case 'm' : case 'M' : -						month += parseInt(matches[1],10); -						day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); -						break; -					case 'y': case 'Y' : -						year += parseInt(matches[1],10); -						day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); -						break; +				var date = new Date(); +				date.setDate(date.getDate() + offset); +				return date; +			}, +			offsetString = function(offset) { +				try { +					return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), +						offset, $.datepicker._getFormatConfig(inst));  				} -				matches = pattern.exec(offset); -			} -			return new Date(year, month, day); -		}; -		var newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) : -			(typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); -		newDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate); +				catch (e) { +					// Ignore +				} + +				var date = (offset.toLowerCase().match(/^c/) ? +					$.datepicker._getDate(inst) : null) || new Date(), +					year = date.getFullYear(), +					month = date.getMonth(), +					day = date.getDate(), +					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, +					matches = pattern.exec(offset); + +				while (matches) { +					switch (matches[2] || "d") { +						case "d" : case "D" : +							day += parseInt(matches[1],10); break; +						case "w" : case "W" : +							day += parseInt(matches[1],10) * 7; break; +						case "m" : case "M" : +							month += parseInt(matches[1],10); +							day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); +							break; +						case "y": case "Y" : +							year += parseInt(matches[1],10); +							day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); +							break; +					} +					matches = pattern.exec(offset); +				} +				return new Date(year, month, day); +			}, +			newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) : +				(typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); + +		newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate);  		if (newDate) {  			newDate.setHours(0);  			newDate.setMinutes(0); @@ -7808,37 +9101,42 @@ $.extend(Datepicker.prototype, {  	},  	/* Handle switch to/from daylight saving. -	   Hours may be non-zero on daylight saving cut-over: -	   > 12 when midnight changeover, but then cannot generate -	   midnight datetime, so jump to 1AM, otherwise reset. -	   @param  date  (Date) the date to check -	   @return  (Date) the corrected date */ +	 * Hours may be non-zero on daylight saving cut-over: +	 * > 12 when midnight changeover, but then cannot generate +	 * midnight datetime, so jump to 1AM, otherwise reset. +	 * @param  date  (Date) the date to check +	 * @return  (Date) the corrected date +	 */  	_daylightSavingAdjust: function(date) { -		if (!date) return null; +		if (!date) { +			return null; +		}  		date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);  		return date;  	},  	/* Set the date(s) directly. */  	_setDate: function(inst, date, noChange) { -		var clear = !date; -		var origMonth = inst.selectedMonth; -		var origYear = inst.selectedYear; -		var newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); +		var clear = !date, +			origMonth = inst.selectedMonth, +			origYear = inst.selectedYear, +			newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); +  		inst.selectedDay = inst.currentDay = newDate.getDate();  		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();  		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); -		if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange) +		if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {  			this._notifyChange(inst); +		}  		this._adjustInstDate(inst);  		if (inst.input) { -			inst.input.val(clear ? '' : this._formatDate(inst)); +			inst.input.val(clear ? "" : this._formatDate(inst));  		}  	},  	/* Retrieve the date(s) directly. */  	_getDate: function(inst) { -		var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null : +		var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null :  			this._daylightSavingAdjust(new Date(  			inst.currentYear, inst.currentMonth, inst.currentDay)));  			return startDate; @@ -7848,64 +9146,71 @@ $.extend(Datepicker.prototype, {  	 * they work with static code transformers like Caja.  	 */  	_attachHandlers: function(inst) { -		var stepMonths = this._get(inst, 'stepMonths'); -		var id = '#' + inst.id.replace( /\\\\/g, "\\" ); -		inst.dpDiv.find('[data-handler]').map(function () { +		var stepMonths = this._get(inst, "stepMonths"), +			id = "#" + inst.id.replace( /\\\\/g, "\\" ); +		inst.dpDiv.find("[data-handler]").map(function () {  			var handler = {  				prev: function () { -					window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M'); +					$.datepicker._adjustDate(id, -stepMonths, "M");  				},  				next: function () { -					window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M'); +					$.datepicker._adjustDate(id, +stepMonths, "M");  				},  				hide: function () { -					window['DP_jQuery_' + dpuuid].datepicker._hideDatepicker(); +					$.datepicker._hideDatepicker();  				},  				today: function () { -					window['DP_jQuery_' + dpuuid].datepicker._gotoToday(id); +					$.datepicker._gotoToday(id);  				},  				selectDay: function () { -					window['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this); +					$.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);  					return false;  				},  				selectMonth: function () { -					window['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M'); +					$.datepicker._selectMonthYear(id, this, "M");  					return false;  				},  				selectYear: function () { -					window['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y'); +					$.datepicker._selectMonthYear(id, this, "Y");  					return false;  				}  			}; -			$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]); +			$(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]);  		});  	},  	/* Generate the HTML for the current state of the date picker. */  	_generateHTML: function(inst) { -		var today = new Date(); -		today = this._daylightSavingAdjust( -			new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time -		var isRTL = this._get(inst, 'isRTL'); -		var showButtonPanel = this._get(inst, 'showButtonPanel'); -		var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext'); -		var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat'); -		var numMonths = this._getNumberOfMonths(inst); -		var showCurrentAtPos = this._get(inst, 'showCurrentAtPos'); -		var stepMonths = this._get(inst, 'stepMonths'); -		var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1); -		var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : -			new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); -		var minDate = this._getMinMaxDate(inst, 'min'); -		var maxDate = this._getMinMaxDate(inst, 'max'); -		var drawMonth = inst.drawMonth - showCurrentAtPos; -		var drawYear = inst.drawYear; +		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, +			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, +			monthNames, monthNamesShort, beforeShowDay, showOtherMonths, +			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, +			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, +			printDate, dRow, tbody, daySettings, otherMonth, unselectable, +			tempDate = new Date(), +			today = this._daylightSavingAdjust( +				new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time +			isRTL = this._get(inst, "isRTL"), +			showButtonPanel = this._get(inst, "showButtonPanel"), +			hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), +			navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), +			numMonths = this._getNumberOfMonths(inst), +			showCurrentAtPos = this._get(inst, "showCurrentAtPos"), +			stepMonths = this._get(inst, "stepMonths"), +			isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1), +			currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : +				new Date(inst.currentYear, inst.currentMonth, inst.currentDay))), +			minDate = this._getMinMaxDate(inst, "min"), +			maxDate = this._getMinMaxDate(inst, "max"), +			drawMonth = inst.drawMonth - showCurrentAtPos, +			drawYear = inst.drawYear; +  		if (drawMonth < 0) {  			drawMonth += 12;  			drawYear--;  		}  		if (maxDate) { -			var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), +			maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),  				maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));  			maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);  			while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { @@ -7918,133 +9223,142 @@ $.extend(Datepicker.prototype, {  		}  		inst.drawMonth = drawMonth;  		inst.drawYear = drawYear; -		var prevText = this._get(inst, 'prevText'); + +		prevText = this._get(inst, "prevText");  		prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,  			this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),  			this._getFormatConfig(inst))); -		var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? -			'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click"' + -			' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' : -			(hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+ prevText +'"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>')); -		var nextText = this._get(inst, 'nextText'); + +		prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? +			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" + +			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" : +			(hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>")); + +		nextText = this._get(inst, "nextText");  		nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,  			this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),  			this._getFormatConfig(inst))); -		var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? -			'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click"' + -			' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' : -			(hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+ nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>')); -		var currentText = this._get(inst, 'currentText'); -		var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today); + +		next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? +			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" + +			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" : +			(hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>")); + +		currentText = this._get(inst, "currentText"); +		gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today);  		currentText = (!navigationAsDateFormat ? currentText :  			this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); -		var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">' + -			this._get(inst, 'closeText') + '</button>' : ''); -		var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') + -			(this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click"' + -			'>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : ''; -		var firstDay = parseInt(this._get(inst, 'firstDay'),10); + +		controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + +			this._get(inst, "closeText") + "</button>" : ""); + +		buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") + +			(this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" + +			">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : ""; + +		firstDay = parseInt(this._get(inst, "firstDay"),10);  		firstDay = (isNaN(firstDay) ? 0 : firstDay); -		var showWeek = this._get(inst, 'showWeek'); -		var dayNames = this._get(inst, 'dayNames'); -		var dayNamesShort = this._get(inst, 'dayNamesShort'); -		var dayNamesMin = this._get(inst, 'dayNamesMin'); -		var monthNames = this._get(inst, 'monthNames'); -		var monthNamesShort = this._get(inst, 'monthNamesShort'); -		var beforeShowDay = this._get(inst, 'beforeShowDay'); -		var showOtherMonths = this._get(inst, 'showOtherMonths'); -		var selectOtherMonths = this._get(inst, 'selectOtherMonths'); -		var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week; -		var defaultDate = this._getDefaultDate(inst); -		var html = ''; -		for (var row = 0; row < numMonths[0]; row++) { -			var group = ''; + +		showWeek = this._get(inst, "showWeek"); +		dayNames = this._get(inst, "dayNames"); +		dayNamesMin = this._get(inst, "dayNamesMin"); +		monthNames = this._get(inst, "monthNames"); +		monthNamesShort = this._get(inst, "monthNamesShort"); +		beforeShowDay = this._get(inst, "beforeShowDay"); +		showOtherMonths = this._get(inst, "showOtherMonths"); +		selectOtherMonths = this._get(inst, "selectOtherMonths"); +		defaultDate = this._getDefaultDate(inst); +		html = ""; +		dow; +		for (row = 0; row < numMonths[0]; row++) { +			group = "";  			this.maxRows = 4; -			for (var col = 0; col < numMonths[1]; col++) { -				var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); -				var cornerClass = ' ui-corner-all'; -				var calender = ''; +			for (col = 0; col < numMonths[1]; col++) { +				selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); +				cornerClass = " ui-corner-all"; +				calender = "";  				if (isMultiMonth) { -					calender += '<div class="ui-datepicker-group'; -					if (numMonths[1] > 1) +					calender += "<div class='ui-datepicker-group"; +					if (numMonths[1] > 1) {  						switch (col) { -							case 0: calender += ' ui-datepicker-group-first'; -								cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break; -							case numMonths[1]-1: calender += ' ui-datepicker-group-last'; -								cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break; -							default: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break; +							case 0: calender += " ui-datepicker-group-first"; +								cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break; +							case numMonths[1]-1: calender += " ui-datepicker-group-last"; +								cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break; +							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;  						} -					calender += '">'; +					} +					calender += "'>";  				} -				calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' + -					(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') + -					(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') + +				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" + +					(/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") + +					(/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +  					this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,  					row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers -					'</div><table class="ui-datepicker-calendar"><thead>' + -					'<tr>'; -				var thead = (showWeek ? '<th class="ui-datepicker-week-col">' + this._get(inst, 'weekHeader') + '</th>' : ''); -				for (var dow = 0; dow < 7; dow++) { // days of the week -					var day = (dow + firstDay) % 7; -					thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' + -						'<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>'; +					"</div><table class='ui-datepicker-calendar'><thead>" + +					"<tr>"; +				thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : ""); +				for (dow = 0; dow < 7; dow++) { // days of the week +					day = (dow + firstDay) % 7; +					thead += "<th" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + +						"<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>";  				} -				calender += thead + '</tr></thead><tbody>'; -				var daysInMonth = this._getDaysInMonth(drawYear, drawMonth); -				if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth) +				calender += thead + "</tr></thead><tbody>"; +				daysInMonth = this._getDaysInMonth(drawYear, drawMonth); +				if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {  					inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); -				var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; -				var curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate -				var numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) +				} +				leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; +				curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate +				numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)  				this.maxRows = numRows; -				var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); -				for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows -					calender += '<tr>'; -					var tbody = (!showWeek ? '' : '<td class="ui-datepicker-week-col">' + -						this._get(inst, 'calculateWeek')(printDate) + '</td>'); -					for (var dow = 0; dow < 7; dow++) { // create date picker days -						var daySettings = (beforeShowDay ? -							beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']); -						var otherMonth = (printDate.getMonth() != drawMonth); -						var unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || +				printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); +				for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows +					calender += "<tr>"; +					tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" + +						this._get(inst, "calculateWeek")(printDate) + "</td>"); +					for (dow = 0; dow < 7; dow++) { // create date picker days +						daySettings = (beforeShowDay ? +							beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); +						otherMonth = (printDate.getMonth() !== drawMonth); +						unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||  							(minDate && printDate < minDate) || (maxDate && printDate > maxDate); -						tbody += '<td class="' + -							((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends -							(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months -							((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key -							(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ? +						tbody += "<td class='" + +							((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends +							(otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months +							((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key +							(defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?  							// or defaultDate is current printedDate and defaultDate is selectedDate -							' ' + this._dayOverClass : '') + // highlight selected day -							(unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days -							(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates -							(printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day -							(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + // highlight today (if different) -							((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + // cell title -							(unselectable ? '' : ' data-handler="selectDay" data-event="click" data-month="' + printDate.getMonth() + '" data-year="' + printDate.getFullYear() + '"') + '>' + // actions -							(otherMonth && !showOtherMonths ? ' ' : // display for other months -							(unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' + -							(printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + -							(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day -							(otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months -							'" href="#">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date +							" " + this._dayOverClass : "") + // highlight selected day +							(unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") +  // highlight unselectable days +							(otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates +							(printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day +							(printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different) +							((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "'") + "'" : "") + // cell title +							(unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions +							(otherMonth && !showOtherMonths ? " " : // display for other months +							(unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" + +							(printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") + +							(printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day +							(otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months +							"' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date  						printDate.setDate(printDate.getDate() + 1);  						printDate = this._daylightSavingAdjust(printDate);  					} -					calender += tbody + '</tr>'; +					calender += tbody + "</tr>";  				}  				drawMonth++;  				if (drawMonth > 11) {  					drawMonth = 0;  					drawYear++;  				} -				calender += '</tbody></table>' + (isMultiMonth ? '</div>' + -							((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : ''); +				calender += "</tbody></table>" + (isMultiMonth ? "</div>" + +							((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : "");  				group += calender;  			}  			html += group;  		} -		html += buttonPanel + ($.ui.ie6 && !inst.inline ? -			'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : ''); +		html += buttonPanel;  		inst._keyEvent = false;  		return html;  	}, @@ -8052,108 +9366,116 @@ $.extend(Datepicker.prototype, {  	/* Generate the month and year header. */  	_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,  			secondary, monthNames, monthNamesShort) { -		var changeMonth = this._get(inst, 'changeMonth'); -		var changeYear = this._get(inst, 'changeYear'); -		var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); -		var html = '<div class="ui-datepicker-title">'; -		var monthHtml = ''; + +		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, +			changeMonth = this._get(inst, "changeMonth"), +			changeYear = this._get(inst, "changeYear"), +			showMonthAfterYear = this._get(inst, "showMonthAfterYear"), +			html = "<div class='ui-datepicker-title'>", +			monthHtml = ""; +  		// month selection -		if (secondary || !changeMonth) -			monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span>'; -		else { -			var inMinYear = (minDate && minDate.getFullYear() == drawYear); -			var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); -			monthHtml += '<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">'; -			for (var month = 0; month < 12; month++) { -				if ((!inMinYear || month >= minDate.getMonth()) && -						(!inMaxYear || month <= maxDate.getMonth())) -					monthHtml += '<option value="' + month + '"' + -						(month == drawMonth ? ' selected="selected"' : '') + -						'>' + monthNamesShort[month] + '</option>'; +		if (secondary || !changeMonth) { +			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>"; +		} else { +			inMinYear = (minDate && minDate.getFullYear() === drawYear); +			inMaxYear = (maxDate && maxDate.getFullYear() === drawYear); +			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>"; +			for ( month = 0; month < 12; month++) { +				if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) { +					monthHtml += "<option value='" + month + "'" + +						(month === drawMonth ? " selected='selected'" : "") + +						">" + monthNamesShort[month] + "</option>"; +				}  			} -			monthHtml += '</select>'; +			monthHtml += "</select>"; +		} + +		if (!showMonthAfterYear) { +			html += monthHtml + (secondary || !(changeMonth && changeYear) ? " " : "");  		} -		if (!showMonthAfterYear) -			html += monthHtml + (secondary || !(changeMonth && changeYear) ? ' ' : ''); +  		// year selection  		if ( !inst.yearshtml ) { -			inst.yearshtml = ''; -			if (secondary || !changeYear) -				html += '<span class="ui-datepicker-year">' + drawYear + '</span>'; -			else { +			inst.yearshtml = ""; +			if (secondary || !changeYear) { +				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>"; +			} else {  				// determine range of years to display -				var years = this._get(inst, 'yearRange').split(':'); -				var thisYear = new Date().getFullYear(); -				var determineYear = function(value) { -					var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) : -						(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) : +				years = this._get(inst, "yearRange").split(":"); +				thisYear = new Date().getFullYear(); +				determineYear = function(value) { +					var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : +						(value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) :  						parseInt(value, 10)));  					return (isNaN(year) ? thisYear : year);  				}; -				var year = determineYear(years[0]); -				var endYear = Math.max(year, determineYear(years[1] || '')); +				year = determineYear(years[0]); +				endYear = Math.max(year, determineYear(years[1] || ""));  				year = (minDate ? Math.max(year, minDate.getFullYear()) : year);  				endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); -				inst.yearshtml += '<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">'; +				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";  				for (; year <= endYear; year++) { -					inst.yearshtml += '<option value="' + year + '"' + -						(year == drawYear ? ' selected="selected"' : '') + -						'>' + year + '</option>'; +					inst.yearshtml += "<option value='" + year + "'" + +						(year === drawYear ? " selected='selected'" : "") + +						">" + year + "</option>";  				} -				inst.yearshtml += '</select>'; +				inst.yearshtml += "</select>";  				html += inst.yearshtml;  				inst.yearshtml = null;  			}  		} -		html += this._get(inst, 'yearSuffix'); -		if (showMonthAfterYear) -			html += (secondary || !(changeMonth && changeYear) ? ' ' : '') + monthHtml; -		html += '</div>'; // Close datepicker_header + +		html += this._get(inst, "yearSuffix"); +		if (showMonthAfterYear) { +			html += (secondary || !(changeMonth && changeYear) ? " " : "") + monthHtml; +		} +		html += "</div>"; // Close datepicker_header  		return html;  	},  	/* Adjust one of the date sub-fields. */  	_adjustInstDate: function(inst, offset, period) { -		var year = inst.drawYear + (period == 'Y' ? offset : 0); -		var month = inst.drawMonth + (period == 'M' ? offset : 0); -		var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + -			(period == 'D' ? offset : 0); -		var date = this._restrictMinMax(inst, -			this._daylightSavingAdjust(new Date(year, month, day))); +		var year = inst.drawYear + (period === "Y" ? offset : 0), +			month = inst.drawMonth + (period === "M" ? offset : 0), +			day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), +			date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); +  		inst.selectedDay = date.getDate();  		inst.drawMonth = inst.selectedMonth = date.getMonth();  		inst.drawYear = inst.selectedYear = date.getFullYear(); -		if (period == 'M' || period == 'Y') +		if (period === "M" || period === "Y") {  			this._notifyChange(inst); +		}  	},  	/* Ensure a date is within any min/max bounds. */  	_restrictMinMax: function(inst, date) { -		var minDate = this._getMinMaxDate(inst, 'min'); -		var maxDate = this._getMinMaxDate(inst, 'max'); -		var newDate = (minDate && date < minDate ? minDate : date); -		newDate = (maxDate && newDate > maxDate ? maxDate : newDate); -		return newDate; +		var minDate = this._getMinMaxDate(inst, "min"), +			maxDate = this._getMinMaxDate(inst, "max"), +			newDate = (minDate && date < minDate ? minDate : date); +		return (maxDate && newDate > maxDate ? maxDate : newDate);  	},  	/* Notify change of month/year. */  	_notifyChange: function(inst) { -		var onChange = this._get(inst, 'onChangeMonthYear'); -		if (onChange) +		var onChange = this._get(inst, "onChangeMonthYear"); +		if (onChange) {  			onChange.apply((inst.input ? inst.input[0] : null),  				[inst.selectedYear, inst.selectedMonth + 1, inst]); +		}  	},  	/* Determine the number of months to show. */  	_getNumberOfMonths: function(inst) { -		var numMonths = this._get(inst, 'numberOfMonths'); -		return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)); +		var numMonths = this._get(inst, "numberOfMonths"); +		return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths));  	},  	/* Determine the current maximum date - ensure no time components are set. */  	_getMinMaxDate: function(inst, minMax) { -		return this._determineDate(inst, this._get(inst, minMax + 'Date'), null); +		return this._determineDate(inst, this._get(inst, minMax + "Date"), null);  	},  	/* Find the number of days in a given month. */ @@ -8168,30 +9490,51 @@ $.extend(Datepicker.prototype, {  	/* Determines if we should allow a "next/prev" month display change. */  	_canAdjustMonth: function(inst, offset, curYear, curMonth) { -		var numMonths = this._getNumberOfMonths(inst); -		var date = this._daylightSavingAdjust(new Date(curYear, +		var numMonths = this._getNumberOfMonths(inst), +			date = this._daylightSavingAdjust(new Date(curYear,  			curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); -		if (offset < 0) + +		if (offset < 0) {  			date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); +		}  		return this._isInRange(inst, date);  	},  	/* Is the given date in the accepted range? */  	_isInRange: function(inst, date) { -		var minDate = this._getMinMaxDate(inst, 'min'); -		var maxDate = this._getMinMaxDate(inst, 'max'); +		var yearSplit, currentYear, +			minDate = this._getMinMaxDate(inst, "min"), +			maxDate = this._getMinMaxDate(inst, "max"), +			minYear = null, +			maxYear = null, +			years = this._get(inst, "yearRange"); +			if (years){ +				yearSplit = years.split(":"); +				currentYear = new Date().getFullYear(); +				minYear = parseInt(yearSplit[0], 10); +				maxYear = parseInt(yearSplit[1], 10); +				if ( yearSplit[0].match(/[+\-].*/) ) { +					minYear += currentYear; +				} +				if ( yearSplit[1].match(/[+\-].*/) ) { +					maxYear += currentYear; +				} +			} +  		return ((!minDate || date.getTime() >= minDate.getTime()) && -			(!maxDate || date.getTime() <= maxDate.getTime())); +			(!maxDate || date.getTime() <= maxDate.getTime()) && +			(!minYear || date.getFullYear() >= minYear) && +			(!maxYear || date.getFullYear() <= maxYear));  	},  	/* Provide the configuration settings for formatting/parsing. */  	_getFormatConfig: function(inst) { -		var shortYearCutoff = this._get(inst, 'shortYearCutoff'); -		shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : +		var shortYearCutoff = this._get(inst, "shortYearCutoff"); +		shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff :  			new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));  		return {shortYearCutoff: shortYearCutoff, -			dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), -			monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')}; +			dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"), +			monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")};  	},  	/* Format the given date for display. */ @@ -8201,10 +9544,10 @@ $.extend(Datepicker.prototype, {  			inst.currentMonth = inst.selectedMonth;  			inst.currentYear = inst.selectedYear;  		} -		var date = (day ? (typeof day == 'object' ? day : +		var date = (day ? (typeof day === "object" ? day :  			this._daylightSavingAdjust(new Date(year, month, day))) :  			this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); -		return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)); +		return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst));  	}  }); @@ -8214,18 +9557,26 @@ $.extend(Datepicker.prototype, {   * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.   */  function bindHover(dpDiv) { -	var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a'; -	return dpDiv.delegate(selector, 'mouseout', function() { -			$(this).removeClass('ui-state-hover'); -			if (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover'); -			if (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover'); +	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; +	return dpDiv.delegate(selector, "mouseout", function() { +			$(this).removeClass("ui-state-hover"); +			if (this.className.indexOf("ui-datepicker-prev") !== -1) { +				$(this).removeClass("ui-datepicker-prev-hover"); +			} +			if (this.className.indexOf("ui-datepicker-next") !== -1) { +				$(this).removeClass("ui-datepicker-next-hover"); +			}  		}) -		.delegate(selector, 'mouseover', function(){ +		.delegate(selector, "mouseover", function(){  			if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) { -				$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); -				$(this).addClass('ui-state-hover'); -				if (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover'); -				if (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover'); +				$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); +				$(this).addClass("ui-state-hover"); +				if (this.className.indexOf("ui-datepicker-prev") !== -1) { +					$(this).addClass("ui-datepicker-prev-hover"); +				} +				if (this.className.indexOf("ui-datepicker-next") !== -1) { +					$(this).addClass("ui-datepicker-next-hover"); +				}  			}  		});  } @@ -8233,15 +9584,17 @@ function bindHover(dpDiv) {  /* jQuery extend now ignores nulls! */  function extendRemove(target, props) {  	$.extend(target, props); -	for (var name in props) -		if (props[name] == null || props[name] == undefined) +	for (var name in props) { +		if (props[name] == null) {  			target[name] = props[name]; +		} +	}  	return target; -}; +}  /* Invoke the datepicker functionality.     @param  options  string - a command, optionally followed by additional parameters or -	                Object - settings for attaching new datepicker functionality +					Object - settings for attaching new datepicker functionality     @return  jQuery object */  $.fn.datepicker = function(options){ @@ -8252,21 +9605,27 @@ $.fn.datepicker = function(options){  	/* Initialise the date picker. */  	if (!$.datepicker.initialized) { -		$(document).mousedown($.datepicker._checkExternalClick). -			find(document.body).append($.datepicker.dpDiv); +		$(document).mousedown($.datepicker._checkExternalClick);  		$.datepicker.initialized = true;  	} +	/* Append datepicker main container to body if not exist. */ +	if ($("#"+$.datepicker._mainDivId).length === 0) { +		$("body").append($.datepicker.dpDiv); +	} +  	var otherArgs = Array.prototype.slice.call(arguments, 1); -	if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget')) -		return $.datepicker['_' + options + 'Datepicker']. +	if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) { +		return $.datepicker["_" + options + "Datepicker"].  			apply($.datepicker, [this[0]].concat(otherArgs)); -	if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') -		return $.datepicker['_' + options + 'Datepicker']. +	} +	if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") { +		return $.datepicker["_" + options + "Datepicker"].  			apply($.datepicker, [this[0]].concat(otherArgs)); +	}  	return this.each(function() { -		typeof options == 'string' ? -			$.datepicker['_' + options + 'Datepicker']. +		typeof options === "string" ? +			$.datepicker["_" + options + "Datepicker"].  				apply($.datepicker, [this].concat(otherArgs)) :  			$.datepicker._attachDatepicker(this, options);  	}); @@ -8275,17 +9634,13 @@ $.fn.datepicker = function(options){  $.datepicker = new Datepicker(); // singleton instance  $.datepicker.initialized = false;  $.datepicker.uuid = new Date().getTime(); -$.datepicker.version = "1.9.2"; - -// Workaround for #4055 -// Add another global to avoid noConflict issues with inline event handlers -window['DP_jQuery_' + dpuuid] = $; +$.datepicker.version = "1.10.4";  })(jQuery); +  (function( $, undefined ) { -var uiDialogClasses = "ui-dialog ui-widget ui-widget-content ui-corner-all ", -	sizeRelatedOptions = { +var sizeRelatedOptions = {  		buttons: true,  		height: true,  		maxHeight: true, @@ -8301,19 +9656,20 @@ var uiDialogClasses = "ui-dialog ui-widget ui-widget-content ui-corner-all ",  		minWidth: true  	}; -$.widget("ui.dialog", { -	version: "1.9.2", +$.widget( "ui.dialog", { +	version: "1.10.4",  	options: { +		appendTo: "body",  		autoOpen: true, -		buttons: {}, +		buttons: [],  		closeOnEscape: true,  		closeText: "close",  		dialogClass: "",  		draggable: true,  		hide: null,  		height: "auto", -		maxHeight: false, -		maxWidth: false, +		maxHeight: null, +		maxWidth: null,  		minHeight: 150,  		minWidth: 150,  		modal: false, @@ -8322,7 +9678,7 @@ $.widget("ui.dialog", {  			at: "center",  			of: window,  			collision: "fit", -			// ensure that the titlebar is never outside the document +			// Ensure the titlebar is always visible  			using: function( pos ) {  				var topOffset = $( this ).css( pos ).offset().top;  				if ( topOffset < 0 ) { @@ -8332,137 +9688,56 @@ $.widget("ui.dialog", {  		},  		resizable: true,  		show: null, -		stack: true, -		title: "", +		title: null,  		width: 300, -		zIndex: 1000 + +		// callbacks +		beforeClose: null, +		close: null, +		drag: null, +		dragStart: null, +		dragStop: null, +		focus: null, +		open: null, +		resize: null, +		resizeStart: null, +		resizeStop: null  	},  	_create: function() { -		this.originalTitle = this.element.attr( "title" ); -		// #5742 - .attr() might return a DOMElement -		if ( typeof this.originalTitle !== "string" ) { -			this.originalTitle = ""; -		} -		this.oldPosition = { +		this.originalCss = { +			display: this.element[0].style.display, +			width: this.element[0].style.width, +			minHeight: this.element[0].style.minHeight, +			maxHeight: this.element[0].style.maxHeight, +			height: this.element[0].style.height +		}; +		this.originalPosition = {  			parent: this.element.parent(),  			index: this.element.parent().children().index( this.element )  		}; +		this.originalTitle = this.element.attr("title");  		this.options.title = this.options.title || this.originalTitle; -		var that = this, -			options = this.options, - -			title = options.title || " ", -			uiDialog, -			uiDialogTitlebar, -			uiDialogTitlebarClose, -			uiDialogTitle, -			uiDialogButtonPane; - -			uiDialog = ( this.uiDialog = $( "<div>" ) ) -				.addClass( uiDialogClasses + options.dialogClass ) -				.css({ -					display: "none", -					outline: 0, // TODO: move to stylesheet -					zIndex: options.zIndex -				}) -				// setting tabIndex makes the div focusable -				.attr( "tabIndex", -1) -				.keydown(function( event ) { -					if ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && -							event.keyCode === $.ui.keyCode.ESCAPE ) { -						that.close( event ); -						event.preventDefault(); -					} -				}) -				.mousedown(function( event ) { -					that.moveToTop( false, event ); -				}) -				.appendTo( "body" ); - -			this.element -				.show() -				.removeAttr( "title" ) -				.addClass( "ui-dialog-content ui-widget-content" ) -				.appendTo( uiDialog ); - -			uiDialogTitlebar = ( this.uiDialogTitlebar = $( "<div>" ) ) -				.addClass( "ui-dialog-titlebar  ui-widget-header  " + -					"ui-corner-all  ui-helper-clearfix" ) -				.bind( "mousedown", function() { -					// Dialog isn't getting focus when dragging (#8063) -					uiDialog.focus(); -				}) -				.prependTo( uiDialog ); - -			uiDialogTitlebarClose = $( "<a href='#'></a>" ) -				.addClass( "ui-dialog-titlebar-close  ui-corner-all" ) -				.attr( "role", "button" ) -				.click(function( event ) { -					event.preventDefault(); -					that.close( event ); -				}) -				.appendTo( uiDialogTitlebar ); -			( this.uiDialogTitlebarCloseText = $( "<span>" ) ) -				.addClass( "ui-icon ui-icon-closethick" ) -				.text( options.closeText ) -				.appendTo( uiDialogTitlebarClose ); +		this._createWrapper(); -			uiDialogTitle = $( "<span>" ) -				.uniqueId() -				.addClass( "ui-dialog-title" ) -				.html( title ) -				.prependTo( uiDialogTitlebar ); - -			uiDialogButtonPane = ( this.uiDialogButtonPane = $( "<div>" ) ) -				.addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ); - -			( this.uiButtonSet = $( "<div>" ) ) -				.addClass( "ui-dialog-buttonset" ) -				.appendTo( uiDialogButtonPane ); - -		uiDialog.attr({ -			role: "dialog", -			"aria-labelledby": uiDialogTitle.attr( "id" ) -		}); +		this.element +			.show() +			.removeAttr("title") +			.addClass("ui-dialog-content ui-widget-content") +			.appendTo( this.uiDialog ); -		uiDialogTitlebar.find( "*" ).add( uiDialogTitlebar ).disableSelection(); -		this._hoverable( uiDialogTitlebarClose ); -		this._focusable( uiDialogTitlebarClose ); +		this._createTitlebar(); +		this._createButtonPane(); -		if ( options.draggable && $.fn.draggable ) { +		if ( this.options.draggable && $.fn.draggable ) {  			this._makeDraggable();  		} -		if ( options.resizable && $.fn.resizable ) { +		if ( this.options.resizable && $.fn.resizable ) {  			this._makeResizable();  		} -		this._createButtons( options.buttons );  		this._isOpen = false; - -		if ( $.fn.bgiframe ) { -			uiDialog.bgiframe(); -		} - -		// prevent tabbing out of modal dialogs -		this._on( uiDialog, { keydown: function( event ) { -			if ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) { -				return; -			} - -			var tabbables = $( ":tabbable", uiDialog ), -				first = tabbables.filter( ":first" ), -				last  = tabbables.filter( ":last" ); - -			if ( event.target === last[0] && !event.shiftKey ) { -				first.focus( 1 ); -				return false; -			} else if ( event.target === first[0] && event.shiftKey ) { -				last.focus( 1 ); -				return false; -			} -		}});  	},  	_init: function() { @@ -8471,30 +9746,39 @@ $.widget("ui.dialog", {  		}  	}, +	_appendTo: function() { +		var element = this.options.appendTo; +		if ( element && (element.jquery || element.nodeType) ) { +			return $( element ); +		} +		return this.document.find( element || "body" ).eq( 0 ); +	}, +  	_destroy: function() {  		var next, -			oldPosition = this.oldPosition; +			originalPosition = this.originalPosition; + +		this._destroyOverlay(); -		if ( this.overlay ) { -			this.overlay.destroy(); -		} -		this.uiDialog.hide();  		this.element -			.removeClass( "ui-dialog-content ui-widget-content" ) -			.hide() -			.appendTo( "body" ); -		this.uiDialog.remove(); +			.removeUniqueId() +			.removeClass("ui-dialog-content ui-widget-content") +			.css( this.originalCss ) +			// Without detaching first, the following becomes really slow +			.detach(); + +		this.uiDialog.stop( true, true ).remove();  		if ( this.originalTitle ) {  			this.element.attr( "title", this.originalTitle );  		} -		next = oldPosition.parent.children().eq( oldPosition.index ); +		next = originalPosition.parent.children().eq( originalPosition.index );  		// Don't try to place the dialog next to itself (#8613) -		if ( next.length && next[ 0 ] !== this.element[ 0 ] ) { +		if ( next.length && next[0] !== this.element[0] ) {  			next.before( this.element );  		} else { -			oldPosition.parent.append( this.element ); +			originalPosition.parent.append( this.element );  		}  	}, @@ -8502,160 +9786,282 @@ $.widget("ui.dialog", {  		return this.uiDialog;  	}, -	close: function( event ) { -		var that = this, -			maxZ, thisZ; +	disable: $.noop, +	enable: $.noop, -		if ( !this._isOpen ) { -			return; -		} +	close: function( event ) { +		var activeElement, +			that = this; -		if ( false === this._trigger( "beforeClose", event ) ) { +		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {  			return;  		}  		this._isOpen = false; +		this._destroyOverlay(); -		if ( this.overlay ) { -			this.overlay.destroy(); -		} +		if ( !this.opener.filter(":focusable").focus().length ) { -		if ( this.options.hide ) { -			this._hide( this.uiDialog, this.options.hide, function() { -				that._trigger( "close", event ); -			}); -		} else { -			this.uiDialog.hide(); -			this._trigger( "close", event ); -		} +			// support: IE9 +			// IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> +			try { +				activeElement = this.document[ 0 ].activeElement; -		$.ui.dialog.overlay.resize(); +				// Support: IE9, IE10 +				// If the <body> is blurred, IE will switch windows, see #4520 +				if ( activeElement && activeElement.nodeName.toLowerCase() !== "body" ) { -		// adjust the maxZ to allow other modal dialogs to continue to work (see #4309) -		if ( this.options.modal ) { -			maxZ = 0; -			$( ".ui-dialog" ).each(function() { -				if ( this !== that.uiDialog[0] ) { -					thisZ = $( this ).css( "z-index" ); -					if ( !isNaN( thisZ ) ) { -						maxZ = Math.max( maxZ, thisZ ); -					} +					// Hiding a focused element doesn't trigger blur in WebKit +					// so in case we have nothing to focus on, explicitly blur the active element +					// https://bugs.webkit.org/show_bug.cgi?id=47182 +					$( activeElement ).blur();  				} -			}); -			$.ui.dialog.maxZ = maxZ; +			} catch ( error ) {}  		} -		return this; +		this._hide( this.uiDialog, this.options.hide, function() { +			that._trigger( "close", event ); +		});  	},  	isOpen: function() {  		return this._isOpen;  	}, -	// the force parameter allows us to move modal dialogs to their correct -	// position on open -	moveToTop: function( force, event ) { -		var options = this.options, -			saveScroll; - -		if ( ( options.modal && !force ) || -				( !options.stack && !options.modal ) ) { -			return this._trigger( "focus", event ); -		} +	moveToTop: function() { +		this._moveToTop(); +	}, -		if ( options.zIndex > $.ui.dialog.maxZ ) { -			$.ui.dialog.maxZ = options.zIndex; -		} -		if ( this.overlay ) { -			$.ui.dialog.maxZ += 1; -			$.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; -			this.overlay.$el.css( "z-index", $.ui.dialog.overlay.maxZ ); +	_moveToTop: function( event, silent ) { +		var moved = !!this.uiDialog.nextAll(":visible").insertBefore( this.uiDialog ).length; +		if ( moved && !silent ) { +			this._trigger( "focus", event );  		} - -		// Save and then restore scroll -		// Opera 9.5+ resets when parent z-index is changed. -		// http://bugs.jqueryui.com/ticket/3193 -		saveScroll = { -			scrollTop: this.element.scrollTop(), -			scrollLeft: this.element.scrollLeft() -		}; -		$.ui.dialog.maxZ += 1; -		this.uiDialog.css( "z-index", $.ui.dialog.maxZ ); -		this.element.attr( saveScroll ); -		this._trigger( "focus", event ); - -		return this; +		return moved;  	},  	open: function() { +		var that = this;  		if ( this._isOpen ) { +			if ( this._moveToTop() ) { +				this._focusTabbable(); +			}  			return;  		} -		var hasFocus, -			options = this.options, -			uiDialog = this.uiDialog; +		this._isOpen = true; +		this.opener = $( this.document[0].activeElement );  		this._size(); -		this._position( options.position ); -		uiDialog.show( options.show ); -		this.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null; -		this.moveToTop( true ); +		this._position(); +		this._createOverlay(); +		this._moveToTop( null, true ); +		this._show( this.uiDialog, this.options.show, function() { +			that._focusTabbable(); +			that._trigger("focus"); +		}); -		// set focus to the first tabbable element in the content area or the first button -		// if there are no tabbable elements, set focus on the dialog itself -		hasFocus = this.element.find( ":tabbable" ); +		this._trigger("open"); +	}, + +	_focusTabbable: function() { +		// Set focus to the first match: +		// 1. First element inside the dialog matching [autofocus] +		// 2. Tabbable element inside the content element +		// 3. Tabbable element inside the buttonpane +		// 4. The close button +		// 5. The dialog itself +		var hasFocus = this.element.find("[autofocus]");  		if ( !hasFocus.length ) { -			hasFocus = this.uiDialogButtonPane.find( ":tabbable" ); -			if ( !hasFocus.length ) { -				hasFocus = uiDialog; -			} +			hasFocus = this.element.find(":tabbable"); +		} +		if ( !hasFocus.length ) { +			hasFocus = this.uiDialogButtonPane.find(":tabbable"); +		} +		if ( !hasFocus.length ) { +			hasFocus = this.uiDialogTitlebarClose.filter(":tabbable"); +		} +		if ( !hasFocus.length ) { +			hasFocus = this.uiDialog;  		}  		hasFocus.eq( 0 ).focus(); +	}, -		this._isOpen = true; -		this._trigger( "open" ); +	_keepFocus: function( event ) { +		function checkFocus() { +			var activeElement = this.document[0].activeElement, +				isActive = this.uiDialog[0] === activeElement || +					$.contains( this.uiDialog[0], activeElement ); +			if ( !isActive ) { +				this._focusTabbable(); +			} +		} +		event.preventDefault(); +		checkFocus.call( this ); +		// support: IE +		// IE <= 8 doesn't prevent moving focus even with event.preventDefault() +		// so we check again later +		this._delay( checkFocus ); +	}, -		return this; +	_createWrapper: function() { +		this.uiDialog = $("<div>") +			.addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " + +				this.options.dialogClass ) +			.hide() +			.attr({ +				// Setting tabIndex makes the div focusable +				tabIndex: -1, +				role: "dialog" +			}) +			.appendTo( this._appendTo() ); + +		this._on( this.uiDialog, { +			keydown: function( event ) { +				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && +						event.keyCode === $.ui.keyCode.ESCAPE ) { +					event.preventDefault(); +					this.close( event ); +					return; +				} + +				// prevent tabbing out of dialogs +				if ( event.keyCode !== $.ui.keyCode.TAB ) { +					return; +				} +				var tabbables = this.uiDialog.find(":tabbable"), +					first = tabbables.filter(":first"), +					last  = tabbables.filter(":last"); + +				if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) { +					first.focus( 1 ); +					event.preventDefault(); +				} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) { +					last.focus( 1 ); +					event.preventDefault(); +				} +			}, +			mousedown: function( event ) { +				if ( this._moveToTop( event ) ) { +					this._focusTabbable(); +				} +			} +		}); + +		// We assume that any existing aria-describedby attribute means +		// that the dialog content is marked up properly +		// otherwise we brute force the content as the description +		if ( !this.element.find("[aria-describedby]").length ) { +			this.uiDialog.attr({ +				"aria-describedby": this.element.uniqueId().attr("id") +			}); +		}  	}, -	_createButtons: function( buttons ) { +	_createTitlebar: function() { +		var uiDialogTitle; + +		this.uiDialogTitlebar = $("<div>") +			.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix") +			.prependTo( this.uiDialog ); +		this._on( this.uiDialogTitlebar, { +			mousedown: function( event ) { +				// Don't prevent click on close button (#8838) +				// Focusing a dialog that is partially scrolled out of view +				// causes the browser to scroll it into view, preventing the click event +				if ( !$( event.target ).closest(".ui-dialog-titlebar-close") ) { +					// Dialog isn't getting focus when dragging (#8063) +					this.uiDialog.focus(); +				} +			} +		}); + +		// support: IE +		// Use type="button" to prevent enter keypresses in textboxes from closing the +		// dialog in IE (#9312) +		this.uiDialogTitlebarClose = $( "<button type='button'></button>" ) +			.button({ +				label: this.options.closeText, +				icons: { +					primary: "ui-icon-closethick" +				}, +				text: false +			}) +			.addClass("ui-dialog-titlebar-close") +			.appendTo( this.uiDialogTitlebar ); +		this._on( this.uiDialogTitlebarClose, { +			click: function( event ) { +				event.preventDefault(); +				this.close( event ); +			} +		}); + +		uiDialogTitle = $("<span>") +			.uniqueId() +			.addClass("ui-dialog-title") +			.prependTo( this.uiDialogTitlebar ); +		this._title( uiDialogTitle ); + +		this.uiDialog.attr({ +			"aria-labelledby": uiDialogTitle.attr("id") +		}); +	}, + +	_title: function( title ) { +		if ( !this.options.title ) { +			title.html(" "); +		} +		title.text( this.options.title ); +	}, + +	_createButtonPane: function() { +		this.uiDialogButtonPane = $("<div>") +			.addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"); + +		this.uiButtonSet = $("<div>") +			.addClass("ui-dialog-buttonset") +			.appendTo( this.uiDialogButtonPane ); + +		this._createButtons(); +	}, + +	_createButtons: function() {  		var that = this, -			hasButtons = false; +			buttons = this.options.buttons;  		// if we already have a button pane, remove it  		this.uiDialogButtonPane.remove();  		this.uiButtonSet.empty(); -		if ( typeof buttons === "object" && buttons !== null ) { -			$.each( buttons, function() { -				return !(hasButtons = true); -			}); -		} -		if ( hasButtons ) { -			$.each( buttons, function( name, props ) { -				var button, click; -				props = $.isFunction( props ) ? -					{ click: props, text: name } : -					props; -				// Default to a non-submitting button -				props = $.extend( { type: "button" }, props ); -				// Change the context for the click callback to be the main element -				click = props.click; -				props.click = function() { -					click.apply( that.element[0], arguments ); -				}; -				button = $( "<button></button>", props ) -					.appendTo( that.uiButtonSet ); -				if ( $.fn.button ) { -					button.button(); -				} -			}); -			this.uiDialog.addClass( "ui-dialog-buttons" ); -			this.uiDialogButtonPane.appendTo( this.uiDialog ); -		} else { -			this.uiDialog.removeClass( "ui-dialog-buttons" ); +		if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) { +			this.uiDialog.removeClass("ui-dialog-buttons"); +			return;  		} + +		$.each( buttons, function( name, props ) { +			var click, buttonOptions; +			props = $.isFunction( props ) ? +				{ click: props, text: name } : +				props; +			// Default to a non-submitting button +			props = $.extend( { type: "button" }, props ); +			// Change the context for the click callback to be the main element +			click = props.click; +			props.click = function() { +				click.apply( that.element[0], arguments ); +			}; +			buttonOptions = { +				icons: props.icons, +				text: props.showText +			}; +			delete props.icons; +			delete props.showText; +			$( "<button></button>", props ) +				.button( buttonOptions ) +				.appendTo( that.uiButtonSet ); +		}); +		this.uiDialog.addClass("ui-dialog-buttons"); +		this.uiDialogButtonPane.appendTo( this.uiDialog );  	},  	_makeDraggable: function() { @@ -8674,8 +10080,8 @@ $.widget("ui.dialog", {  			handle: ".ui-dialog-titlebar",  			containment: "document",  			start: function( event, ui ) { -				$( this ) -					.addClass( "ui-dialog-dragging" ); +				$( this ).addClass("ui-dialog-dragging"); +				that._blockFrames();  				that._trigger( "dragStart", event, filteredUi( ui ) );  			},  			drag: function( event, ui ) { @@ -8686,22 +10092,21 @@ $.widget("ui.dialog", {  					ui.position.left - that.document.scrollLeft(),  					ui.position.top - that.document.scrollTop()  				]; -				$( this ) -					.removeClass( "ui-dialog-dragging" ); +				$( this ).removeClass("ui-dialog-dragging"); +				that._unblockFrames();  				that._trigger( "dragStop", event, filteredUi( ui ) ); -				$.ui.dialog.overlay.resize();  			}  		});  	}, -	_makeResizable: function( handles ) { -		handles = (handles === undefined ? this.options.resizable : handles); +	_makeResizable: function() {  		var that = this,  			options = this.options, +			handles = options.resizable,  			// .ui-resizable has position: relative defined in the stylesheet  			// but dialogs have to use absolute or fixed positioning -			position = this.uiDialog.css( "position" ), -			resizeHandles = typeof handles === 'string' ? +			position = this.uiDialog.css("position"), +			resizeHandles = typeof handles === "string" ?  				handles	:  				"n,e,s,w,se,sw,ne,nw"; @@ -8724,76 +10129,39 @@ $.widget("ui.dialog", {  			minHeight: this._minHeight(),  			handles: resizeHandles,  			start: function( event, ui ) { -				$( this ).addClass( "ui-dialog-resizing" ); +				$( this ).addClass("ui-dialog-resizing"); +				that._blockFrames();  				that._trigger( "resizeStart", event, filteredUi( ui ) );  			},  			resize: function( event, ui ) {  				that._trigger( "resize", event, filteredUi( ui ) );  			},  			stop: function( event, ui ) { -				$( this ).removeClass( "ui-dialog-resizing" );  				options.height = $( this ).height();  				options.width = $( this ).width(); +				$( this ).removeClass("ui-dialog-resizing"); +				that._unblockFrames();  				that._trigger( "resizeStop", event, filteredUi( ui ) ); -				$.ui.dialog.overlay.resize();  			}  		}) -		.css( "position", position ) -		.find( ".ui-resizable-se" ) -			.addClass( "ui-icon ui-icon-grip-diagonal-se" ); +		.css( "position", position );  	},  	_minHeight: function() {  		var options = this.options; -		if ( options.height === "auto" ) { -			return options.minHeight; -		} else { -			return Math.min( options.minHeight, options.height ); -		} +		return options.height === "auto" ? +			options.minHeight : +			Math.min( options.minHeight, options.height );  	}, -	_position: function( position ) { -		var myAt = [], -			offset = [ 0, 0 ], -			isVisible; - -		if ( position ) { -			// deep extending converts arrays to objects in jQuery <= 1.3.2 :-( -	//		if (typeof position == 'string' || $.isArray(position)) { -	//			myAt = $.isArray(position) ? position : position.split(' '); - -			if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) { -				myAt = position.split ? position.split( " " ) : [ position[ 0 ], position[ 1 ] ]; -				if ( myAt.length === 1 ) { -					myAt[ 1 ] = myAt[ 0 ]; -				} - -				$.each( [ "left", "top" ], function( i, offsetPosition ) { -					if ( +myAt[ i ] === myAt[ i ] ) { -						offset[ i ] = myAt[ i ]; -						myAt[ i ] = offsetPosition; -					} -				}); - -				position = { -					my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " + -						myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]), -					at: myAt.join( " " ) -				}; -			} - -			position = $.extend( {}, $.ui.dialog.prototype.options.position, position ); -		} else { -			position = $.ui.dialog.prototype.options.position; -		} - -		// need to show the dialog to get the actual offset in the position plugin -		isVisible = this.uiDialog.is( ":visible" ); +	_position: function() { +		// Need to show the dialog to get the actual offset in the position plugin +		var isVisible = this.uiDialog.is(":visible");  		if ( !isVisible ) {  			this.uiDialog.show();  		} -		this.uiDialog.position( position ); +		this.uiDialog.position( this.options.position );  		if ( !isVisible ) {  			this.uiDialog.hide();  		} @@ -8801,8 +10169,8 @@ $.widget("ui.dialog", {  	_setOptions: function( options ) {  		var that = this, -			resizableOptions = {}, -			resize = false; +			resize = false, +			resizableOptions = {};  		$.each( options, function( key, value ) {  			that._setOption( key, value ); @@ -8817,8 +10185,9 @@ $.widget("ui.dialog", {  		if ( resize ) {  			this._size(); +			this._position();  		} -		if ( this.uiDialog.is( ":data(resizable)" ) ) { +		if ( this.uiDialog.is(":data(ui-resizable)") ) {  			this.uiDialog.resizable( "option", resizableOptions );  		}  	}, @@ -8827,78 +10196,82 @@ $.widget("ui.dialog", {  		var isDraggable, isResizable,  			uiDialog = this.uiDialog; -		switch ( key ) { -			case "buttons": -				this._createButtons( value ); -				break; -			case "closeText": -				// ensure that we always pass a string -				this.uiDialogTitlebarCloseText.text( "" + value ); -				break; -			case "dialogClass": -				uiDialog -					.removeClass( this.options.dialogClass ) -					.addClass( uiDialogClasses + value ); -				break; -			case "disabled": -				if ( value ) { -					uiDialog.addClass( "ui-dialog-disabled" ); -				} else { -					uiDialog.removeClass( "ui-dialog-disabled" ); -				} -				break; -			case "draggable": -				isDraggable = uiDialog.is( ":data(draggable)" ); -				if ( isDraggable && !value ) { -					uiDialog.draggable( "destroy" ); -				} +		if ( key === "dialogClass" ) { +			uiDialog +				.removeClass( this.options.dialogClass ) +				.addClass( value ); +		} -				if ( !isDraggable && value ) { -					this._makeDraggable(); -				} -				break; -			case "position": -				this._position( value ); -				break; -			case "resizable": -				// currently resizable, becoming non-resizable -				isResizable = uiDialog.is( ":data(resizable)" ); -				if ( isResizable && !value ) { -					uiDialog.resizable( "destroy" ); -				} +		if ( key === "disabled" ) { +			return; +		} -				// currently resizable, changing handles -				if ( isResizable && typeof value === "string" ) { -					uiDialog.resizable( "option", "handles", value ); -				} +		this._super( key, value ); -				// currently non-resizable, becoming resizable -				if ( !isResizable && value !== false ) { -					this._makeResizable( value ); -				} -				break; -			case "title": -				// convert whatever was passed in o a string, for html() to not throw up -				$( ".ui-dialog-title", this.uiDialogTitlebar ) -					.html( "" + ( value || " " ) ); -				break; +		if ( key === "appendTo" ) { +			this.uiDialog.appendTo( this._appendTo() );  		} -		this._super( key, value ); +		if ( key === "buttons" ) { +			this._createButtons(); +		} + +		if ( key === "closeText" ) { +			this.uiDialogTitlebarClose.button({ +				// Ensure that we always pass a string +				label: "" + value +			}); +		} + +		if ( key === "draggable" ) { +			isDraggable = uiDialog.is(":data(ui-draggable)"); +			if ( isDraggable && !value ) { +				uiDialog.draggable("destroy"); +			} + +			if ( !isDraggable && value ) { +				this._makeDraggable(); +			} +		} + +		if ( key === "position" ) { +			this._position(); +		} + +		if ( key === "resizable" ) { +			// currently resizable, becoming non-resizable +			isResizable = uiDialog.is(":data(ui-resizable)"); +			if ( isResizable && !value ) { +				uiDialog.resizable("destroy"); +			} + +			// currently resizable, changing handles +			if ( isResizable && typeof value === "string" ) { +				uiDialog.resizable( "option", "handles", value ); +			} + +			// currently non-resizable, becoming resizable +			if ( !isResizable && value !== false ) { +				this._makeResizable(); +			} +		} + +		if ( key === "title" ) { +			this._title( this.uiDialogTitlebar.find(".ui-dialog-title") ); +		}  	},  	_size: function() { -		/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content -		 * divs will both have width and height set, so we need to reset them -		 */ -		var nonContentHeight, minContentHeight, autoHeight, -			options = this.options, -			isVisible = this.uiDialog.is( ":visible" ); +		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content +		// divs will both have width and height set, so we need to reset them +		var nonContentHeight, minContentHeight, maxContentHeight, +			options = this.options; -		// reset content sizing +		// Reset content sizing  		this.element.show().css({  			width: "auto",  			minHeight: 0, +			maxHeight: "none",  			height: 0  		}); @@ -8914,219 +10287,1156 @@ $.widget("ui.dialog", {  			})  			.outerHeight();  		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); +		maxContentHeight = typeof options.maxHeight === "number" ? +			Math.max( 0, options.maxHeight - nonContentHeight ) : +			"none";  		if ( options.height === "auto" ) { -			// only needed for IE6 support -			if ( $.support.minHeight ) { -				this.element.css({ -					minHeight: minContentHeight, -					height: "auto" -				}); -			} else { -				this.uiDialog.show(); -				autoHeight = this.element.css( "height", "auto" ).height(); -				if ( !isVisible ) { -					this.uiDialog.hide(); -				} -				this.element.height( Math.max( autoHeight, minContentHeight ) ); -			} +			this.element.css({ +				minHeight: minContentHeight, +				maxHeight: maxContentHeight, +				height: "auto" +			});  		} else { -			this.element.height( Math.max( options.height - nonContentHeight, 0 ) ); +			this.element.height( Math.max( 0, options.height - nonContentHeight ) );  		} -		if (this.uiDialog.is( ":data(resizable)" ) ) { +		if (this.uiDialog.is(":data(ui-resizable)") ) {  			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );  		} -	} -}); +	}, -$.extend($.ui.dialog, { -	uuid: 0, -	maxZ: 0, +	_blockFrames: function() { +		this.iframeBlocks = this.document.find( "iframe" ).map(function() { +			var iframe = $( this ); -	getTitleId: function($el) { -		var id = $el.attr( "id" ); -		if ( !id ) { -			this.uuid += 1; -			id = this.uuid; +			return $( "<div>" ) +				.css({ +					position: "absolute", +					width: iframe.outerWidth(), +					height: iframe.outerHeight() +				}) +				.appendTo( iframe.parent() ) +				.offset( iframe.offset() )[0]; +		}); +	}, + +	_unblockFrames: function() { +		if ( this.iframeBlocks ) { +			this.iframeBlocks.remove(); +			delete this.iframeBlocks;  		} -		return "ui-dialog-title-" + id;  	}, -	overlay: function( dialog ) { -		this.$el = $.ui.dialog.overlay.create( dialog ); +	_allowInteraction: function( event ) { +		if ( $( event.target ).closest(".ui-dialog").length ) { +			return true; +		} + +		// TODO: Remove hack when datepicker implements +		// the .ui-front logic (#8989) +		return !!$( event.target ).closest(".ui-datepicker").length; +	}, + +	_createOverlay: function() { +		if ( !this.options.modal ) { +			return; +		} + +		var that = this, +			widgetFullName = this.widgetFullName; +		if ( !$.ui.dialog.overlayInstances ) { +			// Prevent use of anchors and inputs. +			// We use a delay in case the overlay is created from an +			// event that we're going to be cancelling. (#2804) +			this._delay(function() { +				// Handle .dialog().dialog("close") (#4065) +				if ( $.ui.dialog.overlayInstances ) { +					this.document.bind( "focusin.dialog", function( event ) { +						if ( !that._allowInteraction( event ) ) { +							event.preventDefault(); +							$(".ui-dialog:visible:last .ui-dialog-content") +								.data( widgetFullName )._focusTabbable(); +						} +					}); +				} +			}); +		} + +		this.overlay = $("<div>") +			.addClass("ui-widget-overlay ui-front") +			.appendTo( this._appendTo() ); +		this._on( this.overlay, { +			mousedown: "_keepFocus" +		}); +		$.ui.dialog.overlayInstances++; +	}, + +	_destroyOverlay: function() { +		if ( !this.options.modal ) { +			return; +		} + +		if ( this.overlay ) { +			$.ui.dialog.overlayInstances--; + +			if ( !$.ui.dialog.overlayInstances ) { +				this.document.unbind( "focusin.dialog" ); +			} +			this.overlay.remove(); +			this.overlay = null; +		}  	}  }); -$.extend( $.ui.dialog.overlay, { -	instances: [], -	// reuse old instances due to IE memory leak with alpha transparency (see #5185) -	oldInstances: [], -	maxZ: 0, -	events: $.map( -		"focus,mousedown,mouseup,keydown,keypress,click".split( "," ), -		function( event ) { -			return event + ".dialog-overlay"; -		} -	).join( " " ), -	create: function( dialog ) { -		if ( this.instances.length === 0 ) { -			// prevent use of anchors and inputs -			// we use a setTimeout in case the overlay is created from an -			// event that we're going to be cancelling (see #2804) -			setTimeout(function() { -				// handle $(el).dialog().dialog('close') (see #4065) -				if ( $.ui.dialog.overlay.instances.length ) { -					$( document ).bind( $.ui.dialog.overlay.events, function( event ) { -						// stop events if the z-index of the target is < the z-index of the overlay -						// we cannot return true when we don't want to cancel the event (#3523) -						if ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) { -							return false; +$.ui.dialog.overlayInstances = 0; + +// DEPRECATED +if ( $.uiBackCompat !== false ) { +	// position option with array notation +	// just override with old implementation +	$.widget( "ui.dialog", $.ui.dialog, { +		_position: function() { +			var position = this.options.position, +				myAt = [], +				offset = [ 0, 0 ], +				isVisible; + +			if ( position ) { +				if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) { +					myAt = position.split ? position.split(" ") : [ position[0], position[1] ]; +					if ( myAt.length === 1 ) { +						myAt[1] = myAt[0]; +					} + +					$.each( [ "left", "top" ], function( i, offsetPosition ) { +						if ( +myAt[ i ] === myAt[ i ] ) { +							offset[ i ] = myAt[ i ]; +							myAt[ i ] = offsetPosition;  						}  					}); + +					position = { +						my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " + +							myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]), +						at: myAt.join(" ") +					};  				} -			}, 1 ); -			// handle window resize -			$( window ).bind( "resize.dialog-overlay", $.ui.dialog.overlay.resize ); +				position = $.extend( {}, $.ui.dialog.prototype.options.position, position ); +			} else { +				position = $.ui.dialog.prototype.options.position; +			} + +			// need to show the dialog to get the actual offset in the position plugin +			isVisible = this.uiDialog.is(":visible"); +			if ( !isVisible ) { +				this.uiDialog.show(); +			} +			this.uiDialog.position( position ); +			if ( !isVisible ) { +				this.uiDialog.hide(); +			}  		} +	}); +} -		var $el = ( this.oldInstances.pop() || $( "<div>" ).addClass( "ui-widget-overlay" ) ); +}( jQuery ) ); -		// allow closing by pressing the escape key -		$( document ).bind( "keydown.dialog-overlay", function( event ) { -			var instances = $.ui.dialog.overlay.instances; -			// only react to the event if we're the top overlay -			if ( instances.length !== 0 && instances[ instances.length - 1 ] === $el && -				dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && -				event.keyCode === $.ui.keyCode.ESCAPE ) { +(function( $, undefined ) { -				dialog.close( event ); -				event.preventDefault(); +var rvertical = /up|down|vertical/, +	rpositivemotion = /up|left|vertical|horizontal/; + +$.effects.effect.blind = function( o, done ) { +	// Create element +	var el = $( this ), +		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], +		mode = $.effects.setMode( el, o.mode || "hide" ), +		direction = o.direction || "up", +		vertical = rvertical.test( direction ), +		ref = vertical ? "height" : "width", +		ref2 = vertical ? "top" : "left", +		motion = rpositivemotion.test( direction ), +		animation = {}, +		show = mode === "show", +		wrapper, distance, margin; + +	// if already wrapped, the wrapper's properties are my property. #6245 +	if ( el.parent().is( ".ui-effects-wrapper" ) ) { +		$.effects.save( el.parent(), props ); +	} else { +		$.effects.save( el, props ); +	} +	el.show(); +	wrapper = $.effects.createWrapper( el ).css({ +		overflow: "hidden" +	}); + +	distance = wrapper[ ref ](); +	margin = parseFloat( wrapper.css( ref2 ) ) || 0; + +	animation[ ref ] = show ? distance : 0; +	if ( !motion ) { +		el +			.css( vertical ? "bottom" : "right", 0 ) +			.css( vertical ? "top" : "left", "auto" ) +			.css({ position: "absolute" }); + +		animation[ ref2 ] = show ? margin : distance + margin; +	} + +	// start at 0 if we are showing +	if ( show ) { +		wrapper.css( ref, 0 ); +		if ( ! motion ) { +			wrapper.css( ref2, margin + distance ); +		} +	} + +	// Animate +	wrapper.animate( animation, { +		duration: o.duration, +		easing: o.easing, +		queue: false, +		complete: function() { +			if ( mode === "hide" ) { +				el.hide();  			} -		}); +			$.effects.restore( el, props ); +			$.effects.removeWrapper( el ); +			done(); +		} +	}); -		$el.appendTo( document.body ).css({ -			width: this.width(), -			height: this.height() -		}); +}; + +})(jQuery); + +(function( $, undefined ) { + +$.effects.effect.bounce = function( o, done ) { +	var el = $( this ), +		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], + +		// defaults: +		mode = $.effects.setMode( el, o.mode || "effect" ), +		hide = mode === "hide", +		show = mode === "show", +		direction = o.direction || "up", +		distance = o.distance, +		times = o.times || 5, + +		// number of internal animations +		anims = times * 2 + ( show || hide ? 1 : 0 ), +		speed = o.duration / anims, +		easing = o.easing, + +		// utility: +		ref = ( direction === "up" || direction === "down" ) ? "top" : "left", +		motion = ( direction === "up" || direction === "left" ), +		i, +		upAnim, +		downAnim, + +		// we will need to re-assemble the queue to stack our animations in place +		queue = el.queue(), +		queuelen = queue.length; + +	// Avoid touching opacity to prevent clearType and PNG issues in IE +	if ( show || hide ) { +		props.push( "opacity" ); +	} + +	$.effects.save( el, props ); +	el.show(); +	$.effects.createWrapper( el ); // Create Wrapper + +	// default distance for the BIGGEST bounce is the outer Distance / 3 +	if ( !distance ) { +		distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; +	} + +	if ( show ) { +		downAnim = { opacity: 1 }; +		downAnim[ ref ] = 0; + +		// if we are showing, force opacity 0 and set the initial position +		// then do the "first" animation +		el.css( "opacity", 0 ) +			.css( ref, motion ? -distance * 2 : distance * 2 ) +			.animate( downAnim, speed, easing ); +	} + +	// start at the smallest distance if we are hiding +	if ( hide ) { +		distance = distance / Math.pow( 2, times - 1 ); +	} + +	downAnim = {}; +	downAnim[ ref ] = 0; +	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here +	for ( i = 0; i < times; i++ ) { +		upAnim = {}; +		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + +		el.animate( upAnim, speed, easing ) +			.animate( downAnim, speed, easing ); + +		distance = hide ? distance * 2 : distance / 2; +	} -		if ( $.fn.bgiframe ) { -			$el.bgiframe(); +	// Last Bounce when Hiding +	if ( hide ) { +		upAnim = { opacity: 0 }; +		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + +		el.animate( upAnim, speed, easing ); +	} + +	el.queue(function() { +		if ( hide ) { +			el.hide();  		} +		$.effects.restore( el, props ); +		$.effects.removeWrapper( el ); +		done(); +	}); -		this.instances.push( $el ); -		return $el; -	}, +	// inject all the animations we just queued to be first in line (after "inprogress") +	if ( queuelen > 1) { +		queue.splice.apply( queue, +			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); +	} +	el.dequeue(); + +}; + +})(jQuery); + +(function( $, undefined ) { -	destroy: function( $el ) { -		var indexOf = $.inArray( $el, this.instances ), -			maxZ = 0; +$.effects.effect.clip = function( o, done ) { +	// Create element +	var el = $( this ), +		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], +		mode = $.effects.setMode( el, o.mode || "hide" ), +		show = mode === "show", +		direction = o.direction || "vertical", +		vert = direction === "vertical", +		size = vert ? "height" : "width", +		position = vert ? "top" : "left", +		animation = {}, +		wrapper, animate, distance; -		if ( indexOf !== -1 ) { -			this.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] ); +	// Save & Show +	$.effects.save( el, props ); +	el.show(); + +	// Create Wrapper +	wrapper = $.effects.createWrapper( el ).css({ +		overflow: "hidden" +	}); +	animate = ( el[0].tagName === "IMG" ) ? wrapper : el; +	distance = animate[ size ](); + +	// Shift +	if ( show ) { +		animate.css( size, 0 ); +		animate.css( position, distance / 2 ); +	} + +	// Create Animation Object: +	animation[ size ] = show ? distance : 0; +	animation[ position ] = show ? 0 : distance / 2; + +	// Animate +	animate.animate( animation, { +		queue: false, +		duration: o.duration, +		easing: o.easing, +		complete: function() { +			if ( !show ) { +				el.hide(); +			} +			$.effects.restore( el, props ); +			$.effects.removeWrapper( el ); +			done();  		} +	}); + +}; + +})(jQuery); + +(function( $, undefined ) { -		if ( this.instances.length === 0 ) { -			$( [ document, window ] ).unbind( ".dialog-overlay" ); +$.effects.effect.drop = function( o, done ) { + +	var el = $( this ), +		props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ], +		mode = $.effects.setMode( el, o.mode || "hide" ), +		show = mode === "show", +		direction = o.direction || "left", +		ref = ( direction === "up" || direction === "down" ) ? "top" : "left", +		motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg", +		animation = { +			opacity: show ? 1 : 0 +		}, +		distance; + +	// Adjust +	$.effects.save( el, props ); +	el.show(); +	$.effects.createWrapper( el ); + +	distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2; + +	if ( show ) { +		el +			.css( "opacity", 0 ) +			.css( ref, motion === "pos" ? -distance : distance ); +	} + +	// Animation +	animation[ ref ] = ( show ? +		( motion === "pos" ? "+=" : "-=" ) : +		( motion === "pos" ? "-=" : "+=" ) ) + +		distance; + +	// Animate +	el.animate( animation, { +		queue: false, +		duration: o.duration, +		easing: o.easing, +		complete: function() { +			if ( mode === "hide" ) { +				el.hide(); +			} +			$.effects.restore( el, props ); +			$.effects.removeWrapper( el ); +			done();  		} +	}); +}; + +})(jQuery); + +(function( $, undefined ) { + +$.effects.effect.explode = function( o, done ) { + +	var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3, +		cells = rows, +		el = $( this ), +		mode = $.effects.setMode( el, o.mode || "hide" ), +		show = mode === "show", -		$el.height( 0 ).width( 0 ).remove(); +		// show and then visibility:hidden the element before calculating offset +		offset = el.show().css( "visibility", "hidden" ).offset(), + +		// width and height of a piece +		width = Math.ceil( el.outerWidth() / cells ), +		height = Math.ceil( el.outerHeight() / rows ), +		pieces = [], -		// adjust the maxZ to allow other modal dialogs to continue to work (see #4309) -		$.each( this.instances, function() { -			maxZ = Math.max( maxZ, this.css( "z-index" ) ); +		// loop +		i, j, left, top, mx, my; + +	// children animate complete: +	function childComplete() { +		pieces.push( this ); +		if ( pieces.length === rows * cells ) { +			animComplete(); +		} +	} + +	// clone the element for each row and cell. +	for( i = 0; i < rows ; i++ ) { // ===> +		top = offset.top + i * height; +		my = i - ( rows - 1 ) / 2 ; + +		for( j = 0; j < cells ; j++ ) { // ||| +			left = offset.left + j * width; +			mx = j - ( cells - 1 ) / 2 ; + +			// Create a clone of the now hidden main element that will be absolute positioned +			// within a wrapper div off the -left and -top equal to size of our pieces +			el +				.clone() +				.appendTo( "body" ) +				.wrap( "<div></div>" ) +				.css({ +					position: "absolute", +					visibility: "visible", +					left: -j * width, +					top: -i * height +				}) + +			// select the wrapper - make it overflow: hidden and absolute positioned based on +			// where the original was located +left and +top equal to the size of pieces +				.parent() +				.addClass( "ui-effects-explode" ) +				.css({ +					position: "absolute", +					overflow: "hidden", +					width: width, +					height: height, +					left: left + ( show ? mx * width : 0 ), +					top: top + ( show ? my * height : 0 ), +					opacity: show ? 0 : 1 +				}).animate({ +					left: left + ( show ? 0 : mx * width ), +					top: top + ( show ? 0 : my * height ), +					opacity: show ? 1 : 0 +				}, o.duration || 500, o.easing, childComplete ); +		} +	} + +	function animComplete() { +		el.css({ +			visibility: "visible"  		}); -		this.maxZ = maxZ; -	}, +		$( pieces ).remove(); +		if ( !show ) { +			el.hide(); +		} +		done(); +	} +}; -	height: function() { -		var scrollHeight, -			offsetHeight; -		// handle IE -		if ( $.ui.ie ) { -			scrollHeight = Math.max( -				document.documentElement.scrollHeight, -				document.body.scrollHeight -			); -			offsetHeight = Math.max( -				document.documentElement.offsetHeight, -				document.body.offsetHeight -			); +})(jQuery); -			if ( scrollHeight < offsetHeight ) { -				return $( window ).height() + "px"; -			} else { -				return scrollHeight + "px"; +(function( $, undefined ) { + +$.effects.effect.fade = function( o, done ) { +	var el = $( this ), +		mode = $.effects.setMode( el, o.mode || "toggle" ); + +	el.animate({ +		opacity: mode +	}, { +		queue: false, +		duration: o.duration, +		easing: o.easing, +		complete: done +	}); +}; + +})( jQuery ); + +(function( $, undefined ) { + +$.effects.effect.fold = function( o, done ) { + +	// Create element +	var el = $( this ), +		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], +		mode = $.effects.setMode( el, o.mode || "hide" ), +		show = mode === "show", +		hide = mode === "hide", +		size = o.size || 15, +		percent = /([0-9]+)%/.exec( size ), +		horizFirst = !!o.horizFirst, +		widthFirst = show !== horizFirst, +		ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], +		duration = o.duration / 2, +		wrapper, distance, +		animation1 = {}, +		animation2 = {}; + +	$.effects.save( el, props ); +	el.show(); + +	// Create Wrapper +	wrapper = $.effects.createWrapper( el ).css({ +		overflow: "hidden" +	}); +	distance = widthFirst ? +		[ wrapper.width(), wrapper.height() ] : +		[ wrapper.height(), wrapper.width() ]; + +	if ( percent ) { +		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; +	} +	if ( show ) { +		wrapper.css( horizFirst ? { +			height: 0, +			width: size +		} : { +			height: size, +			width: 0 +		}); +	} + +	// Animation +	animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; +	animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; + +	// Animate +	wrapper +		.animate( animation1, duration, o.easing ) +		.animate( animation2, duration, o.easing, function() { +			if ( hide ) { +				el.hide();  			} -		// handle "good" browsers -		} else { -			return $( document ).height() + "px"; +			$.effects.restore( el, props ); +			$.effects.removeWrapper( el ); +			done(); +		}); + +}; + +})(jQuery); + +(function( $, undefined ) { + +$.effects.effect.highlight = function( o, done ) { +	var elem = $( this ), +		props = [ "backgroundImage", "backgroundColor", "opacity" ], +		mode = $.effects.setMode( elem, o.mode || "show" ), +		animation = { +			backgroundColor: elem.css( "backgroundColor" ) +		}; + +	if (mode === "hide") { +		animation.opacity = 0; +	} + +	$.effects.save( elem, props ); + +	elem +		.show() +		.css({ +			backgroundImage: "none", +			backgroundColor: o.color || "#ffff99" +		}) +		.animate( animation, { +			queue: false, +			duration: o.duration, +			easing: o.easing, +			complete: function() { +				if ( mode === "hide" ) { +					elem.hide(); +				} +				$.effects.restore( elem, props ); +				done(); +			} +		}); +}; + +})(jQuery); + +(function( $, undefined ) { + +$.effects.effect.pulsate = function( o, done ) { +	var elem = $( this ), +		mode = $.effects.setMode( elem, o.mode || "show" ), +		show = mode === "show", +		hide = mode === "hide", +		showhide = ( show || mode === "hide" ), + +		// showing or hiding leaves of the "last" animation +		anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), +		duration = o.duration / anims, +		animateTo = 0, +		queue = elem.queue(), +		queuelen = queue.length, +		i; + +	if ( show || !elem.is(":visible")) { +		elem.css( "opacity", 0 ).show(); +		animateTo = 1; +	} + +	// anims - 1 opacity "toggles" +	for ( i = 1; i < anims; i++ ) { +		elem.animate({ +			opacity: animateTo +		}, duration, o.easing ); +		animateTo = 1 - animateTo; +	} + +	elem.animate({ +		opacity: animateTo +	}, duration, o.easing); + +	elem.queue(function() { +		if ( hide ) { +			elem.hide();  		} -	}, +		done(); +	}); -	width: function() { -		var scrollWidth, -			offsetWidth; -		// handle IE -		if ( $.ui.ie ) { -			scrollWidth = Math.max( -				document.documentElement.scrollWidth, -				document.body.scrollWidth -			); -			offsetWidth = Math.max( -				document.documentElement.offsetWidth, -				document.body.offsetWidth -			); +	// We just queued up "anims" animations, we need to put them next in the queue +	if ( queuelen > 1 ) { +		queue.splice.apply( queue, +			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); +	} +	elem.dequeue(); +}; -			if ( scrollWidth < offsetWidth ) { -				return $( window ).width() + "px"; -			} else { -				return scrollWidth + "px"; +})(jQuery); + +(function( $, undefined ) { + +$.effects.effect.puff = function( o, done ) { +	var elem = $( this ), +		mode = $.effects.setMode( elem, o.mode || "hide" ), +		hide = mode === "hide", +		percent = parseInt( o.percent, 10 ) || 150, +		factor = percent / 100, +		original = { +			height: elem.height(), +			width: elem.width(), +			outerHeight: elem.outerHeight(), +			outerWidth: elem.outerWidth() +		}; + +	$.extend( o, { +		effect: "scale", +		queue: false, +		fade: true, +		mode: mode, +		complete: done, +		percent: hide ? percent : 100, +		from: hide ? +			original : +			{ +				height: original.height * factor, +				width: original.width * factor, +				outerHeight: original.outerHeight * factor, +				outerWidth: original.outerWidth * factor  			} -		// handle "good" browsers -		} else { -			return $( document ).width() + "px"; +	}); + +	elem.effect( o ); +}; + +$.effects.effect.scale = function( o, done ) { + +	// Create element +	var el = $( this ), +		options = $.extend( true, {}, o ), +		mode = $.effects.setMode( el, o.mode || "effect" ), +		percent = parseInt( o.percent, 10 ) || +			( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), +		direction = o.direction || "both", +		origin = o.origin, +		original = { +			height: el.height(), +			width: el.width(), +			outerHeight: el.outerHeight(), +			outerWidth: el.outerWidth() +		}, +		factor = { +			y: direction !== "horizontal" ? (percent / 100) : 1, +			x: direction !== "vertical" ? (percent / 100) : 1 +		}; + +	// We are going to pass this effect to the size effect: +	options.effect = "size"; +	options.queue = false; +	options.complete = done; + +	// Set default origin and restore for show/hide +	if ( mode !== "effect" ) { +		options.origin = origin || ["middle","center"]; +		options.restore = true; +	} + +	options.from = o.from || ( mode === "show" ? { +		height: 0, +		width: 0, +		outerHeight: 0, +		outerWidth: 0 +	} : original ); +	options.to = { +		height: original.height * factor.y, +		width: original.width * factor.x, +		outerHeight: original.outerHeight * factor.y, +		outerWidth: original.outerWidth * factor.x +	}; + +	// Fade option to support puff +	if ( options.fade ) { +		if ( mode === "show" ) { +			options.from.opacity = 0; +			options.to.opacity = 1;  		} -	}, +		if ( mode === "hide" ) { +			options.from.opacity = 1; +			options.to.opacity = 0; +		} +	} -	resize: function() { -		/* If the dialog is draggable and the user drags it past the -		 * right edge of the window, the document becomes wider so we -		 * need to stretch the overlay. If the user then drags the -		 * dialog back to the left, the document will become narrower, -		 * so we need to shrink the overlay to the appropriate size. -		 * This is handled by shrinking the overlay before setting it -		 * to the full document size. -		 */ -		var $overlays = $( [] ); -		$.each( $.ui.dialog.overlay.instances, function() { -			$overlays = $overlays.add( this ); -		}); +	// Animate +	el.effect( options ); -		$overlays.css({ +}; + +$.effects.effect.size = function( o, done ) { + +	// Create element +	var original, baseline, factor, +		el = $( this ), +		props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], + +		// Always restore +		props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], + +		// Copy for children +		props2 = [ "width", "height", "overflow" ], +		cProps = [ "fontSize" ], +		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], +		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], + +		// Set options +		mode = $.effects.setMode( el, o.mode || "effect" ), +		restore = o.restore || mode !== "effect", +		scale = o.scale || "both", +		origin = o.origin || [ "middle", "center" ], +		position = el.css( "position" ), +		props = restore ? props0 : props1, +		zero = { +			height: 0,  			width: 0, -			height: 0 -		}).css({ -			width: $.ui.dialog.overlay.width(), -			height: $.ui.dialog.overlay.height() +			outerHeight: 0, +			outerWidth: 0 +		}; + +	if ( mode === "show" ) { +		el.show(); +	} +	original = { +		height: el.height(), +		width: el.width(), +		outerHeight: el.outerHeight(), +		outerWidth: el.outerWidth() +	}; + +	if ( o.mode === "toggle" && mode === "show" ) { +		el.from = o.to || zero; +		el.to = o.from || original; +	} else { +		el.from = o.from || ( mode === "show" ? zero : original ); +		el.to = o.to || ( mode === "hide" ? zero : original ); +	} + +	// Set scaling factor +	factor = { +		from: { +			y: el.from.height / original.height, +			x: el.from.width / original.width +		}, +		to: { +			y: el.to.height / original.height, +			x: el.to.width / original.width +		} +	}; + +	// Scale the css box +	if ( scale === "box" || scale === "both" ) { + +		// Vertical props scaling +		if ( factor.from.y !== factor.to.y ) { +			props = props.concat( vProps ); +			el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); +			el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); +		} + +		// Horizontal props scaling +		if ( factor.from.x !== factor.to.x ) { +			props = props.concat( hProps ); +			el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); +			el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); +		} +	} + +	// Scale the content +	if ( scale === "content" || scale === "both" ) { + +		// Vertical props scaling +		if ( factor.from.y !== factor.to.y ) { +			props = props.concat( cProps ).concat( props2 ); +			el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); +			el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); +		} +	} + +	$.effects.save( el, props ); +	el.show(); +	$.effects.createWrapper( el ); +	el.css( "overflow", "hidden" ).css( el.from ); + +	// Adjust +	if (origin) { // Calculate baseline shifts +		baseline = $.effects.getBaseline( origin, original ); +		el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; +		el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; +		el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; +		el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; +	} +	el.css( el.from ); // set top & left + +	// Animate +	if ( scale === "content" || scale === "both" ) { // Scale the children + +		// Add margins/font-size +		vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); +		hProps = hProps.concat([ "marginLeft", "marginRight" ]); +		props2 = props0.concat(vProps).concat(hProps); + +		el.find( "*[width]" ).each( function(){ +			var child = $( this ), +				c_original = { +					height: child.height(), +					width: child.width(), +					outerHeight: child.outerHeight(), +					outerWidth: child.outerWidth() +				}; +			if (restore) { +				$.effects.save(child, props2); +			} + +			child.from = { +				height: c_original.height * factor.from.y, +				width: c_original.width * factor.from.x, +				outerHeight: c_original.outerHeight * factor.from.y, +				outerWidth: c_original.outerWidth * factor.from.x +			}; +			child.to = { +				height: c_original.height * factor.to.y, +				width: c_original.width * factor.to.x, +				outerHeight: c_original.height * factor.to.y, +				outerWidth: c_original.width * factor.to.x +			}; + +			// Vertical props scaling +			if ( factor.from.y !== factor.to.y ) { +				child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); +				child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); +			} + +			// Horizontal props scaling +			if ( factor.from.x !== factor.to.x ) { +				child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); +				child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); +			} + +			// Animate children +			child.css( child.from ); +			child.animate( child.to, o.duration, o.easing, function() { + +				// Restore children +				if ( restore ) { +					$.effects.restore( child, props2 ); +				} +			});  		});  	} -}); -$.extend( $.ui.dialog.overlay.prototype, { -	destroy: function() { -		$.ui.dialog.overlay.destroy( this.$el ); +	// Animate +	el.animate( el.to, { +		queue: false, +		duration: o.duration, +		easing: o.easing, +		complete: function() { +			if ( el.to.opacity === 0 ) { +				el.css( "opacity", el.from.opacity ); +			} +			if( mode === "hide" ) { +				el.hide(); +			} +			$.effects.restore( el, props ); +			if ( !restore ) { + +				// we need to calculate our new positioning based on the scaling +				if ( position === "static" ) { +					el.css({ +						position: "relative", +						top: el.to.top, +						left: el.to.left +					}); +				} else { +					$.each([ "top", "left" ], function( idx, pos ) { +						el.css( pos, function( _, str ) { +							var val = parseInt( str, 10 ), +								toRef = idx ? el.to.left : el.to.top; + +							// if original was "auto", recalculate the new value from wrapper +							if ( str === "auto" ) { +								return toRef + "px"; +							} + +							return val + toRef + "px"; +						}); +					}); +				} +			} + +			$.effects.removeWrapper( el ); +			done(); +		} +	}); + +}; + +})(jQuery); + +(function( $, undefined ) { + +$.effects.effect.shake = function( o, done ) { + +	var el = $( this ), +		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], +		mode = $.effects.setMode( el, o.mode || "effect" ), +		direction = o.direction || "left", +		distance = o.distance || 20, +		times = o.times || 3, +		anims = times * 2 + 1, +		speed = Math.round(o.duration/anims), +		ref = (direction === "up" || direction === "down") ? "top" : "left", +		positiveMotion = (direction === "up" || direction === "left"), +		animation = {}, +		animation1 = {}, +		animation2 = {}, +		i, + +		// we will need to re-assemble the queue to stack our animations in place +		queue = el.queue(), +		queuelen = queue.length; + +	$.effects.save( el, props ); +	el.show(); +	$.effects.createWrapper( el ); + +	// Animation +	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; +	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; +	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; + +	// Animate +	el.animate( animation, speed, o.easing ); + +	// Shakes +	for ( i = 1; i < times; i++ ) { +		el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );  	} -}); +	el +		.animate( animation1, speed, o.easing ) +		.animate( animation, speed / 2, o.easing ) +		.queue(function() { +			if ( mode === "hide" ) { +				el.hide(); +			} +			$.effects.restore( el, props ); +			$.effects.removeWrapper( el ); +			done(); +		}); + +	// inject all the animations we just queued to be first in line (after "inprogress") +	if ( queuelen > 1) { +		queue.splice.apply( queue, +			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); +	} +	el.dequeue(); + +}; + +})(jQuery); -}( jQuery ) );  (function( $, undefined ) { -var mouseHandled = false; +$.effects.effect.slide = function( o, done ) { + +	// Create element +	var el = $( this ), +		props = [ "position", "top", "bottom", "left", "right", "width", "height" ], +		mode = $.effects.setMode( el, o.mode || "show" ), +		show = mode === "show", +		direction = o.direction || "left", +		ref = (direction === "up" || direction === "down") ? "top" : "left", +		positiveMotion = (direction === "up" || direction === "left"), +		distance, +		animation = {}; + +	// Adjust +	$.effects.save( el, props ); +	el.show(); +	distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); + +	$.effects.createWrapper( el ).css({ +		overflow: "hidden" +	}); + +	if ( show ) { +		el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); +	} + +	// Animation +	animation[ ref ] = ( show ? +		( positiveMotion ? "+=" : "-=") : +		( positiveMotion ? "-=" : "+=")) + +		distance; + +	// Animate +	el.animate( animation, { +		queue: false, +		duration: o.duration, +		easing: o.easing, +		complete: function() { +			if ( mode === "hide" ) { +				el.hide(); +			} +			$.effects.restore( el, props ); +			$.effects.removeWrapper( el ); +			done(); +		} +	}); +}; + +})(jQuery); + +(function( $, undefined ) { + +$.effects.effect.transfer = function( o, done ) { +	var elem = $( this ), +		target = $( o.to ), +		targetFixed = target.css( "position" ) === "fixed", +		body = $("body"), +		fixTop = targetFixed ? body.scrollTop() : 0, +		fixLeft = targetFixed ? body.scrollLeft() : 0, +		endPosition = target.offset(), +		animation = { +			top: endPosition.top - fixTop , +			left: endPosition.left - fixLeft , +			height: target.innerHeight(), +			width: target.innerWidth() +		}, +		startPosition = elem.offset(), +		transfer = $( "<div class='ui-effects-transfer'></div>" ) +			.appendTo( document.body ) +			.addClass( o.className ) +			.css({ +				top: startPosition.top - fixTop , +				left: startPosition.left - fixLeft , +				height: elem.innerHeight(), +				width: elem.innerWidth(), +				position: targetFixed ? "fixed" : "absolute" +			}) +			.animate( animation, o.duration, o.easing, function() { +				transfer.remove(); +				done(); +			}); +}; + +})(jQuery); + +(function( $, undefined ) {  $.widget( "ui.menu", { -	version: "1.9.2", +	version: "1.10.4",  	defaultElement: "<ul>",  	delay: 300,  	options: { @@ -9148,6 +11458,9 @@ $.widget( "ui.menu", {  	_create: function() {  		this.activeMenu = this.element; +		// flag used to prevent firing of the click handler +		// as the event bubbles up through nested menus +		this.mouseHandled = false;  		this.element  			.uniqueId()  			.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) @@ -9181,14 +11494,19 @@ $.widget( "ui.menu", {  			},  			"click .ui-menu-item:has(a)": function( event ) {  				var target = $( event.target ).closest( ".ui-menu-item" ); -				if ( !mouseHandled && target.not( ".ui-state-disabled" ).length ) { -					mouseHandled = true; - +				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {  					this.select( event ); + +					// Only set the mouseHandled flag if the event will bubble, see #9469. +					if ( !event.isPropagationStopped() ) { +						this.mouseHandled = true; +					} +  					// Open submenu on click  					if ( target.has( ".ui-menu" ).length ) {  						this.expand( event ); -					} else if ( !this.element.is( ":focus" ) ) { +					} else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) { +  						// Redirect focus to the menu  						this.element.trigger( "focus", [ true ] ); @@ -9238,7 +11556,7 @@ $.widget( "ui.menu", {  				}  				// Reset the mouseHandled flag -				mouseHandled = false; +				this.mouseHandled = false;  			}  		});  	}, @@ -9247,7 +11565,7 @@ $.widget( "ui.menu", {  		// Destroy (sub)menus  		this.element  			.removeAttr( "aria-activedescendant" ) -			.find( ".ui-menu" ).andSelf() +			.find( ".ui-menu" ).addBack()  				.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )  				.removeAttr( "role" )  				.removeAttr( "tabIndex" ) @@ -9389,6 +11707,8 @@ $.widget( "ui.menu", {  			icon = this.options.icons.submenu,  			submenus = this.element.find( this.options.menus ); +		this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ); +  		// Initialize nested menus  		submenus.filter( ":not(.ui-menu)" )  			.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" ) @@ -9429,7 +11749,7 @@ $.widget( "ui.menu", {  		menus.children( ":not(.ui-menu-item)" ).each(function() {  			var item = $( this );  			// hyphen, em dash, en dash -			if ( !/[^\-—–\s]/.test( item.text() ) ) { +			if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) {  				item.addClass( "ui-widget-content ui-menu-divider" );  			}  		}); @@ -9450,6 +11770,15 @@ $.widget( "ui.menu", {  		}[ this.options.role ];  	}, +	_setOption: function( key, value ) { +		if ( key === "icons" ) { +			this.element.find( ".ui-menu-icon" ) +				.removeClass( this.options.icons.submenu ) +				.addClass( value.submenu ); +		} +		this._super( key, value ); +	}, +  	focus: function( event, item ) {  		var nested, focused;  		this.blur( event, event && event.type === "focus" ); @@ -9480,7 +11809,7 @@ $.widget( "ui.menu", {  		}  		nested = item.children( ".ui-menu" ); -		if ( nested.length && ( /^mouse/.test( event.type ) ) ) { +		if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {  			this._startOpening(nested);  		}  		this.activeMenu = item.parent(); @@ -9716,31 +12045,529 @@ $.widget( "ui.menu", {  });  }( jQuery )); + +(function( $, undefined ) { + +$.ui = $.ui || {}; + +var cachedScrollbarWidth, +	max = Math.max, +	abs = Math.abs, +	round = Math.round, +	rhorizontal = /left|center|right/, +	rvertical = /top|center|bottom/, +	roffset = /[\+\-]\d+(\.[\d]+)?%?/, +	rposition = /^\w+/, +	rpercent = /%$/, +	_position = $.fn.position; + +function getOffsets( offsets, width, height ) { +	return [ +		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), +		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) +	]; +} + +function parseCss( element, property ) { +	return parseInt( $.css( element, property ), 10 ) || 0; +} + +function getDimensions( elem ) { +	var raw = elem[0]; +	if ( raw.nodeType === 9 ) { +		return { +			width: elem.width(), +			height: elem.height(), +			offset: { top: 0, left: 0 } +		}; +	} +	if ( $.isWindow( raw ) ) { +		return { +			width: elem.width(), +			height: elem.height(), +			offset: { top: elem.scrollTop(), left: elem.scrollLeft() } +		}; +	} +	if ( raw.preventDefault ) { +		return { +			width: 0, +			height: 0, +			offset: { top: raw.pageY, left: raw.pageX } +		}; +	} +	return { +		width: elem.outerWidth(), +		height: elem.outerHeight(), +		offset: elem.offset() +	}; +} + +$.position = { +	scrollbarWidth: function() { +		if ( cachedScrollbarWidth !== undefined ) { +			return cachedScrollbarWidth; +		} +		var w1, w2, +			div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), +			innerDiv = div.children()[0]; + +		$( "body" ).append( div ); +		w1 = innerDiv.offsetWidth; +		div.css( "overflow", "scroll" ); + +		w2 = innerDiv.offsetWidth; + +		if ( w1 === w2 ) { +			w2 = div[0].clientWidth; +		} + +		div.remove(); + +		return (cachedScrollbarWidth = w1 - w2); +	}, +	getScrollInfo: function( within ) { +		var overflowX = within.isWindow || within.isDocument ? "" : +				within.element.css( "overflow-x" ), +			overflowY = within.isWindow || within.isDocument ? "" : +				within.element.css( "overflow-y" ), +			hasOverflowX = overflowX === "scroll" || +				( overflowX === "auto" && within.width < within.element[0].scrollWidth ), +			hasOverflowY = overflowY === "scroll" || +				( overflowY === "auto" && within.height < within.element[0].scrollHeight ); +		return { +			width: hasOverflowY ? $.position.scrollbarWidth() : 0, +			height: hasOverflowX ? $.position.scrollbarWidth() : 0 +		}; +	}, +	getWithinInfo: function( element ) { +		var withinElement = $( element || window ), +			isWindow = $.isWindow( withinElement[0] ), +			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9; +		return { +			element: withinElement, +			isWindow: isWindow, +			isDocument: isDocument, +			offset: withinElement.offset() || { left: 0, top: 0 }, +			scrollLeft: withinElement.scrollLeft(), +			scrollTop: withinElement.scrollTop(), +			width: isWindow ? withinElement.width() : withinElement.outerWidth(), +			height: isWindow ? withinElement.height() : withinElement.outerHeight() +		}; +	} +}; + +$.fn.position = function( options ) { +	if ( !options || !options.of ) { +		return _position.apply( this, arguments ); +	} + +	// make a copy, we don't want to modify arguments +	options = $.extend( {}, options ); + +	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, +		target = $( options.of ), +		within = $.position.getWithinInfo( options.within ), +		scrollInfo = $.position.getScrollInfo( within ), +		collision = ( options.collision || "flip" ).split( " " ), +		offsets = {}; + +	dimensions = getDimensions( target ); +	if ( target[0].preventDefault ) { +		// force left top to allow flipping +		options.at = "left top"; +	} +	targetWidth = dimensions.width; +	targetHeight = dimensions.height; +	targetOffset = dimensions.offset; +	// clone to reuse original targetOffset later +	basePosition = $.extend( {}, targetOffset ); + +	// force my and at to have valid horizontal and vertical positions +	// if a value is missing or invalid, it will be converted to center +	$.each( [ "my", "at" ], function() { +		var pos = ( options[ this ] || "" ).split( " " ), +			horizontalOffset, +			verticalOffset; + +		if ( pos.length === 1) { +			pos = rhorizontal.test( pos[ 0 ] ) ? +				pos.concat( [ "center" ] ) : +				rvertical.test( pos[ 0 ] ) ? +					[ "center" ].concat( pos ) : +					[ "center", "center" ]; +		} +		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; +		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; + +		// calculate offsets +		horizontalOffset = roffset.exec( pos[ 0 ] ); +		verticalOffset = roffset.exec( pos[ 1 ] ); +		offsets[ this ] = [ +			horizontalOffset ? horizontalOffset[ 0 ] : 0, +			verticalOffset ? verticalOffset[ 0 ] : 0 +		]; + +		// reduce to just the positions without the offsets +		options[ this ] = [ +			rposition.exec( pos[ 0 ] )[ 0 ], +			rposition.exec( pos[ 1 ] )[ 0 ] +		]; +	}); + +	// normalize collision option +	if ( collision.length === 1 ) { +		collision[ 1 ] = collision[ 0 ]; +	} + +	if ( options.at[ 0 ] === "right" ) { +		basePosition.left += targetWidth; +	} else if ( options.at[ 0 ] === "center" ) { +		basePosition.left += targetWidth / 2; +	} + +	if ( options.at[ 1 ] === "bottom" ) { +		basePosition.top += targetHeight; +	} else if ( options.at[ 1 ] === "center" ) { +		basePosition.top += targetHeight / 2; +	} + +	atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); +	basePosition.left += atOffset[ 0 ]; +	basePosition.top += atOffset[ 1 ]; + +	return this.each(function() { +		var collisionPosition, using, +			elem = $( this ), +			elemWidth = elem.outerWidth(), +			elemHeight = elem.outerHeight(), +			marginLeft = parseCss( this, "marginLeft" ), +			marginTop = parseCss( this, "marginTop" ), +			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, +			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, +			position = $.extend( {}, basePosition ), +			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); + +		if ( options.my[ 0 ] === "right" ) { +			position.left -= elemWidth; +		} else if ( options.my[ 0 ] === "center" ) { +			position.left -= elemWidth / 2; +		} + +		if ( options.my[ 1 ] === "bottom" ) { +			position.top -= elemHeight; +		} else if ( options.my[ 1 ] === "center" ) { +			position.top -= elemHeight / 2; +		} + +		position.left += myOffset[ 0 ]; +		position.top += myOffset[ 1 ]; + +		// if the browser doesn't support fractions, then round for consistent results +		if ( !$.support.offsetFractions ) { +			position.left = round( position.left ); +			position.top = round( position.top ); +		} + +		collisionPosition = { +			marginLeft: marginLeft, +			marginTop: marginTop +		}; + +		$.each( [ "left", "top" ], function( i, dir ) { +			if ( $.ui.position[ collision[ i ] ] ) { +				$.ui.position[ collision[ i ] ][ dir ]( position, { +					targetWidth: targetWidth, +					targetHeight: targetHeight, +					elemWidth: elemWidth, +					elemHeight: elemHeight, +					collisionPosition: collisionPosition, +					collisionWidth: collisionWidth, +					collisionHeight: collisionHeight, +					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], +					my: options.my, +					at: options.at, +					within: within, +					elem : elem +				}); +			} +		}); + +		if ( options.using ) { +			// adds feedback as second argument to using callback, if present +			using = function( props ) { +				var left = targetOffset.left - position.left, +					right = left + targetWidth - elemWidth, +					top = targetOffset.top - position.top, +					bottom = top + targetHeight - elemHeight, +					feedback = { +						target: { +							element: target, +							left: targetOffset.left, +							top: targetOffset.top, +							width: targetWidth, +							height: targetHeight +						}, +						element: { +							element: elem, +							left: position.left, +							top: position.top, +							width: elemWidth, +							height: elemHeight +						}, +						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", +						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" +					}; +				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { +					feedback.horizontal = "center"; +				} +				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { +					feedback.vertical = "middle"; +				} +				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { +					feedback.important = "horizontal"; +				} else { +					feedback.important = "vertical"; +				} +				options.using.call( this, props, feedback ); +			}; +		} + +		elem.offset( $.extend( position, { using: using } ) ); +	}); +}; + +$.ui.position = { +	fit: { +		left: function( position, data ) { +			var within = data.within, +				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, +				outerWidth = within.width, +				collisionPosLeft = position.left - data.collisionPosition.marginLeft, +				overLeft = withinOffset - collisionPosLeft, +				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, +				newOverRight; + +			// element is wider than within +			if ( data.collisionWidth > outerWidth ) { +				// element is initially over the left side of within +				if ( overLeft > 0 && overRight <= 0 ) { +					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; +					position.left += overLeft - newOverRight; +				// element is initially over right side of within +				} else if ( overRight > 0 && overLeft <= 0 ) { +					position.left = withinOffset; +				// element is initially over both left and right sides of within +				} else { +					if ( overLeft > overRight ) { +						position.left = withinOffset + outerWidth - data.collisionWidth; +					} else { +						position.left = withinOffset; +					} +				} +			// too far left -> align with left edge +			} else if ( overLeft > 0 ) { +				position.left += overLeft; +			// too far right -> align with right edge +			} else if ( overRight > 0 ) { +				position.left -= overRight; +			// adjust based on position and margin +			} else { +				position.left = max( position.left - collisionPosLeft, position.left ); +			} +		}, +		top: function( position, data ) { +			var within = data.within, +				withinOffset = within.isWindow ? within.scrollTop : within.offset.top, +				outerHeight = data.within.height, +				collisionPosTop = position.top - data.collisionPosition.marginTop, +				overTop = withinOffset - collisionPosTop, +				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, +				newOverBottom; + +			// element is taller than within +			if ( data.collisionHeight > outerHeight ) { +				// element is initially over the top of within +				if ( overTop > 0 && overBottom <= 0 ) { +					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; +					position.top += overTop - newOverBottom; +				// element is initially over bottom of within +				} else if ( overBottom > 0 && overTop <= 0 ) { +					position.top = withinOffset; +				// element is initially over both top and bottom of within +				} else { +					if ( overTop > overBottom ) { +						position.top = withinOffset + outerHeight - data.collisionHeight; +					} else { +						position.top = withinOffset; +					} +				} +			// too far up -> align with top +			} else if ( overTop > 0 ) { +				position.top += overTop; +			// too far down -> align with bottom edge +			} else if ( overBottom > 0 ) { +				position.top -= overBottom; +			// adjust based on position and margin +			} else { +				position.top = max( position.top - collisionPosTop, position.top ); +			} +		} +	}, +	flip: { +		left: function( position, data ) { +			var within = data.within, +				withinOffset = within.offset.left + within.scrollLeft, +				outerWidth = within.width, +				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, +				collisionPosLeft = position.left - data.collisionPosition.marginLeft, +				overLeft = collisionPosLeft - offsetLeft, +				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, +				myOffset = data.my[ 0 ] === "left" ? +					-data.elemWidth : +					data.my[ 0 ] === "right" ? +						data.elemWidth : +						0, +				atOffset = data.at[ 0 ] === "left" ? +					data.targetWidth : +					data.at[ 0 ] === "right" ? +						-data.targetWidth : +						0, +				offset = -2 * data.offset[ 0 ], +				newOverRight, +				newOverLeft; + +			if ( overLeft < 0 ) { +				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; +				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { +					position.left += myOffset + atOffset + offset; +				} +			} +			else if ( overRight > 0 ) { +				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; +				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { +					position.left += myOffset + atOffset + offset; +				} +			} +		}, +		top: function( position, data ) { +			var within = data.within, +				withinOffset = within.offset.top + within.scrollTop, +				outerHeight = within.height, +				offsetTop = within.isWindow ? within.scrollTop : within.offset.top, +				collisionPosTop = position.top - data.collisionPosition.marginTop, +				overTop = collisionPosTop - offsetTop, +				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, +				top = data.my[ 1 ] === "top", +				myOffset = top ? +					-data.elemHeight : +					data.my[ 1 ] === "bottom" ? +						data.elemHeight : +						0, +				atOffset = data.at[ 1 ] === "top" ? +					data.targetHeight : +					data.at[ 1 ] === "bottom" ? +						-data.targetHeight : +						0, +				offset = -2 * data.offset[ 1 ], +				newOverTop, +				newOverBottom; +			if ( overTop < 0 ) { +				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; +				if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) { +					position.top += myOffset + atOffset + offset; +				} +			} +			else if ( overBottom > 0 ) { +				newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; +				if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) { +					position.top += myOffset + atOffset + offset; +				} +			} +		} +	}, +	flipfit: { +		left: function() { +			$.ui.position.flip.left.apply( this, arguments ); +			$.ui.position.fit.left.apply( this, arguments ); +		}, +		top: function() { +			$.ui.position.flip.top.apply( this, arguments ); +			$.ui.position.fit.top.apply( this, arguments ); +		} +	} +}; + +// fraction support test +(function () { +	var testElement, testElementParent, testElementStyle, offsetLeft, i, +		body = document.getElementsByTagName( "body" )[ 0 ], +		div = document.createElement( "div" ); + +	//Create a "fake body" for testing based on method used in jQuery.support +	testElement = document.createElement( body ? "div" : "body" ); +	testElementStyle = { +		visibility: "hidden", +		width: 0, +		height: 0, +		border: 0, +		margin: 0, +		background: "none" +	}; +	if ( body ) { +		$.extend( testElementStyle, { +			position: "absolute", +			left: "-1000px", +			top: "-1000px" +		}); +	} +	for ( i in testElementStyle ) { +		testElement.style[ i ] = testElementStyle[ i ]; +	} +	testElement.appendChild( div ); +	testElementParent = body || document.documentElement; +	testElementParent.insertBefore( testElement, testElementParent.firstChild ); + +	div.style.cssText = "position: absolute; left: 10.7432222px;"; + +	offsetLeft = $( div ).offset().left; +	$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; + +	testElement.innerHTML = ""; +	testElementParent.removeChild( testElement ); +})(); + +}( jQuery ) ); +  (function( $, undefined ) {  $.widget( "ui.progressbar", { -	version: "1.9.2", +	version: "1.10.4",  	options: { +		max: 100,  		value: 0, -		max: 100 + +		change: null, +		complete: null  	},  	min: 0,  	_create: function() { +		// Constrain initial value +		this.oldValue = this.options.value = this._constrainedValue(); +  		this.element  			.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )  			.attr({ +				// Only set static values, aria-valuenow and aria-valuemax are +				// set inside _refreshValue()  				role: "progressbar", -				"aria-valuemin": this.min, -				"aria-valuemax": this.options.max, -				"aria-valuenow": this._value() +				"aria-valuemin": this.min  			});  		this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )  			.appendTo( this.element ); -		this.oldValue = this._value();  		this._refreshValue();  	}, @@ -9757,56 +12584,92 @@ $.widget( "ui.progressbar", {  	value: function( newValue ) {  		if ( newValue === undefined ) { -			return this._value(); +			return this.options.value;  		} -		this._setOption( "value", newValue ); -		return this; +		this.options.value = this._constrainedValue( newValue ); +		this._refreshValue();  	}, -	_setOption: function( key, value ) { -		if ( key === "value" ) { -			this.options.value = value; -			this._refreshValue(); -			if ( this._value() === this.options.max ) { -				this._trigger( "complete" ); -			} +	_constrainedValue: function( newValue ) { +		if ( newValue === undefined ) { +			newValue = this.options.value;  		} -		this._super( key, value ); +		this.indeterminate = newValue === false; + +		// sanitize value +		if ( typeof newValue !== "number" ) { +			newValue = 0; +		} + +		return this.indeterminate ? false : +			Math.min( this.options.max, Math.max( this.min, newValue ) );  	}, -	_value: function() { -		var val = this.options.value; -		// normalize invalid value -		if ( typeof val !== "number" ) { -			val = 0; +	_setOptions: function( options ) { +		// Ensure "value" option is set after other values (like max) +		var value = options.value; +		delete options.value; + +		this._super( options ); + +		this.options.value = this._constrainedValue( value ); +		this._refreshValue(); +	}, + +	_setOption: function( key, value ) { +		if ( key === "max" ) { +			// Don't allow a max less than min +			value = Math.max( this.min, value );  		} -		return Math.min( this.options.max, Math.max( this.min, val ) ); + +		this._super( key, value );  	},  	_percentage: function() { -		return 100 * this._value() / this.options.max; +		return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );  	},  	_refreshValue: function() { -		var value = this.value(), +		var value = this.options.value,  			percentage = this._percentage(); +		this.valueDiv +			.toggle( this.indeterminate || value > this.min ) +			.toggleClass( "ui-corner-right", value === this.options.max ) +			.width( percentage.toFixed(0) + "%" ); + +		this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate ); + +		if ( this.indeterminate ) { +			this.element.removeAttr( "aria-valuenow" ); +			if ( !this.overlayDiv ) { +				this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv ); +			} +		} else { +			this.element.attr({ +				"aria-valuemax": this.options.max, +				"aria-valuenow": value +			}); +			if ( this.overlayDiv ) { +				this.overlayDiv.remove(); +				this.overlayDiv = null; +			} +		} +  		if ( this.oldValue !== value ) {  			this.oldValue = value;  			this._trigger( "change" );  		} - -		this.valueDiv -			.toggle( value > this.min ) -			.toggleClass( "ui-corner-right", value === this.options.max ) -			.width( percentage.toFixed(0) + "%" ); -		this.element.attr( "aria-valuenow", value ); +		if ( value === this.options.max ) { +			this._trigger( "complete" ); +		}  	}  });  })( jQuery ); +  (function( $, undefined ) {  // number of pages in a slider @@ -9814,7 +12677,7 @@ $.widget( "ui.progressbar", {  var numPages = 5;  $.widget( "ui.slider", $.ui.mouse, { -	version: "1.9.2", +	version: "1.10.4",  	widgetEventPrefix: "slide",  	options: { @@ -9826,16 +12689,16 @@ $.widget( "ui.slider", $.ui.mouse, {  		range: false,  		step: 1,  		value: 0, -		values: null +		values: null, + +		// callbacks +		change: null, +		slide: null, +		start: null, +		stop: null  	},  	_create: function() { -		var i, handleCount, -			o = this.options, -			existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), -			handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>", -			handles = []; -  		this._keySliding = false;  		this._mouseSliding = false;  		this._animateOff = true; @@ -9848,31 +12711,34 @@ $.widget( "ui.slider", $.ui.mouse, {  				" ui-slider-" + this.orientation +  				" ui-widget" +  				" ui-widget-content" + -				" ui-corner-all" + -				( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) ); +				" ui-corner-all"); -		this.range = $([]); +		this._refresh(); +		this._setOption( "disabled", this.options.disabled ); -		if ( o.range ) { -			if ( o.range === true ) { -				if ( !o.values ) { -					o.values = [ this._valueMin(), this._valueMin() ]; -				} -				if ( o.values.length && o.values.length !== 2 ) { -					o.values = [ o.values[0], o.values[0] ]; -				} -			} +		this._animateOff = false; +	}, -			this.range = $( "<div></div>" ) -				.appendTo( this.element ) -				.addClass( "ui-slider-range" + -				// note: this isn't the most fittingly semantic framework class for this element, -				// but worked best visually with a variety of themes -				" ui-widget-header" + -				( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) ); -		} +	_refresh: function() { +		this._createRange(); +		this._createHandles(); +		this._setupEvents(); +		this._refreshValue(); +	}, + +	_createHandles: function() { +		var i, handleCount, +			options = this.options, +			existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), +			handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>", +			handles = []; + +		handleCount = ( options.values && options.values.length ) || 1; -		handleCount = ( o.values && o.values.length ) || 1; +		if ( existingHandles.length > handleCount ) { +			existingHandles.slice( handleCount ).remove(); +			existingHandles = existingHandles.slice( 0, handleCount ); +		}  		for ( i = existingHandles.length; i < handleCount; i++ ) {  			handles.push( handle ); @@ -9882,124 +12748,71 @@ $.widget( "ui.slider", $.ui.mouse, {  		this.handle = this.handles.eq( 0 ); -		this.handles.add( this.range ).filter( "a" ) -			.click(function( event ) { -				event.preventDefault(); -			}) -			.mouseenter(function() { -				if ( !o.disabled ) { -					$( this ).addClass( "ui-state-hover" ); -				} -			}) -			.mouseleave(function() { -				$( this ).removeClass( "ui-state-hover" ); -			}) -			.focus(function() { -				if ( !o.disabled ) { -					$( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" ); -					$( this ).addClass( "ui-state-focus" ); -				} else { -					$( this ).blur(); -				} -			}) -			.blur(function() { -				$( this ).removeClass( "ui-state-focus" ); -			}); -  		this.handles.each(function( i ) {  			$( this ).data( "ui-slider-handle-index", i );  		}); +	}, -		this._on( this.handles, { -			keydown: function( event ) { -				var allowed, curVal, newVal, step, -					index = $( event.target ).data( "ui-slider-handle-index" ); - -				switch ( event.keyCode ) { -					case $.ui.keyCode.HOME: -					case $.ui.keyCode.END: -					case $.ui.keyCode.PAGE_UP: -					case $.ui.keyCode.PAGE_DOWN: -					case $.ui.keyCode.UP: -					case $.ui.keyCode.RIGHT: -					case $.ui.keyCode.DOWN: -					case $.ui.keyCode.LEFT: -						event.preventDefault(); -						if ( !this._keySliding ) { -							this._keySliding = true; -							$( event.target ).addClass( "ui-state-active" ); -							allowed = this._start( event, index ); -							if ( allowed === false ) { -								return; -							} -						} -						break; -				} +	_createRange: function() { +		var options = this.options, +			classes = ""; -				step = this.options.step; -				if ( this.options.values && this.options.values.length ) { -					curVal = newVal = this.values( index ); -				} else { -					curVal = newVal = this.value(); -				} - -				switch ( event.keyCode ) { -					case $.ui.keyCode.HOME: -						newVal = this._valueMin(); -						break; -					case $.ui.keyCode.END: -						newVal = this._valueMax(); -						break; -					case $.ui.keyCode.PAGE_UP: -						newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) ); -						break; -					case $.ui.keyCode.PAGE_DOWN: -						newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) ); -						break; -					case $.ui.keyCode.UP: -					case $.ui.keyCode.RIGHT: -						if ( curVal === this._valueMax() ) { -							return; -						} -						newVal = this._trimAlignValue( curVal + step ); -						break; -					case $.ui.keyCode.DOWN: -					case $.ui.keyCode.LEFT: -						if ( curVal === this._valueMin() ) { -							return; -						} -						newVal = this._trimAlignValue( curVal - step ); -						break; +		if ( options.range ) { +			if ( options.range === true ) { +				if ( !options.values ) { +					options.values = [ this._valueMin(), this._valueMin() ]; +				} else if ( options.values.length && options.values.length !== 2 ) { +					options.values = [ options.values[0], options.values[0] ]; +				} else if ( $.isArray( options.values ) ) { +					options.values = options.values.slice(0);  				} +			} -				this._slide( event, index, newVal ); -			}, -			keyup: function( event ) { -				var index = $( event.target ).data( "ui-slider-handle-index" ); +			if ( !this.range || !this.range.length ) { +				this.range = $( "<div></div>" ) +					.appendTo( this.element ); -				if ( this._keySliding ) { -					this._keySliding = false; -					this._stop( event, index ); -					this._change( event, index ); -					$( event.target ).removeClass( "ui-state-active" ); -				} +				classes = "ui-slider-range" + +				// note: this isn't the most fittingly semantic framework class for this element, +				// but worked best visually with a variety of themes +				" ui-widget-header ui-corner-all"; +			} else { +				this.range.removeClass( "ui-slider-range-min ui-slider-range-max" ) +					// Handle range switching from true to min/max +					.css({ +						"left": "", +						"bottom": "" +					});  			} -		}); -		this._refreshValue(); +			this.range.addClass( classes + +				( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) ); +		} else { +			if ( this.range ) { +				this.range.remove(); +			} +			this.range = null; +		} +	}, -		this._animateOff = false; +	_setupEvents: function() { +		var elements = this.handles.add( this.range ).filter( "a" ); +		this._off( elements ); +		this._on( elements, this._handleEvents ); +		this._hoverable( elements ); +		this._focusable( elements );  	},  	_destroy: function() {  		this.handles.remove(); -		this.range.remove(); +		if ( this.range ) { +			this.range.remove(); +		}  		this.element  			.removeClass( "ui-slider" +  				" ui-slider-horizontal" +  				" ui-slider-vertical" + -				" ui-slider-disabled" +  				" ui-widget" +  				" ui-widget-content" +  				" ui-corner-all" ); @@ -10027,21 +12840,15 @@ $.widget( "ui.slider", $.ui.mouse, {  		distance = this._valueMax() - this._valueMin() + 1;  		this.handles.each(function( i ) {  			var thisDistance = Math.abs( normValue - that.values(i) ); -			if ( distance > thisDistance ) { +			if (( distance > thisDistance ) || +				( distance === thisDistance && +					(i === that._lastChangedValue || that.values(i) === o.min ))) {  				distance = thisDistance;  				closestHandle = $( this );  				index = i;  			}  		}); -		// workaround for bug #3736 (if both handles of a range are at 0, -		// the first is always used as the one with least distance, -		// and moving it is obviously prevented by preventing negative ranges) -		if( o.range === true && this.values(1) === o.min ) { -			index += 1; -			closestHandle = $( this.handles[index] ); -		} -  		allowed = this._start( event, index );  		if ( allowed === false ) {  			return false; @@ -10055,7 +12862,7 @@ $.widget( "ui.slider", $.ui.mouse, {  			.focus();  		offset = closestHandle.offset(); -		mouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" ); +		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );  		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {  			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),  			top: event.pageY - offset.top - @@ -10172,7 +12979,7 @@ $.widget( "ui.slider", $.ui.mouse, {  				} );  				otherVal = this.values( index ? 0 : 1 );  				if ( allowed !== false ) { -					this.values( index, newVal, true ); +					this.values( index, newVal );  				}  			}  		} else { @@ -10213,6 +13020,9 @@ $.widget( "ui.slider", $.ui.mouse, {  				uiHash.values = this.values();  			} +			//store the last changed value index for reference when handles overlap +			this._lastChangedValue = index; +  			this._trigger( "change", event, uiHash );  		}  	}, @@ -10265,6 +13075,16 @@ $.widget( "ui.slider", $.ui.mouse, {  		var i,  			valsLength = 0; +		if ( key === "range" && this.options.range === true ) { +			if ( value === "min" ) { +				this.options.value = this._values( 0 ); +				this.options.values = null; +			} else if ( value === "max" ) { +				this.options.value = this._values( this.options.values.length-1 ); +				this.options.values = null; +			} +		} +  		if ( $.isArray( this.options.values ) ) {  			valsLength = this.options.values.length;  		} @@ -10272,17 +13092,6 @@ $.widget( "ui.slider", $.ui.mouse, {  		$.Widget.prototype._setOption.apply( this, arguments );  		switch ( key ) { -			case "disabled": -				if ( value ) { -					this.handles.filter( ".ui-state-focus" ).blur(); -					this.handles.removeClass( "ui-state-hover" ); -					this.handles.prop( "disabled", true ); -					this.element.addClass( "ui-disabled" ); -				} else { -					this.handles.prop( "disabled", false ); -					this.element.removeClass( "ui-disabled" ); -				} -				break;  			case "orientation":  				this._detectOrientation();  				this.element @@ -10310,6 +13119,11 @@ $.widget( "ui.slider", $.ui.mouse, {  				this._refreshValue();  				this._animateOff = false;  				break; +			case "range": +				this._animateOff = true; +				this._refresh(); +				this._animateOff = false; +				break;  		}  	}, @@ -10335,7 +13149,7 @@ $.widget( "ui.slider", $.ui.mouse, {  			val = this._trimAlignValue( val );  			return val; -		} else { +		} else if ( this.options.values && this.options.values.length ) {  			// .slice() creates a copy of the array  			// this copy gets trimmed by min and max and then returned  			vals = this.options.values.slice(); @@ -10344,6 +13158,8 @@ $.widget( "ui.slider", $.ui.mouse, {  			}  			return vals; +		} else { +			return [];  		}  	}, @@ -10431,11 +13247,91 @@ $.widget( "ui.slider", $.ui.mouse, {  				this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );  			}  		} +	}, + +	_handleEvents: { +		keydown: function( event ) { +			var allowed, curVal, newVal, step, +				index = $( event.target ).data( "ui-slider-handle-index" ); + +			switch ( event.keyCode ) { +				case $.ui.keyCode.HOME: +				case $.ui.keyCode.END: +				case $.ui.keyCode.PAGE_UP: +				case $.ui.keyCode.PAGE_DOWN: +				case $.ui.keyCode.UP: +				case $.ui.keyCode.RIGHT: +				case $.ui.keyCode.DOWN: +				case $.ui.keyCode.LEFT: +					event.preventDefault(); +					if ( !this._keySliding ) { +						this._keySliding = true; +						$( event.target ).addClass( "ui-state-active" ); +						allowed = this._start( event, index ); +						if ( allowed === false ) { +							return; +						} +					} +					break; +			} + +			step = this.options.step; +			if ( this.options.values && this.options.values.length ) { +				curVal = newVal = this.values( index ); +			} else { +				curVal = newVal = this.value(); +			} + +			switch ( event.keyCode ) { +				case $.ui.keyCode.HOME: +					newVal = this._valueMin(); +					break; +				case $.ui.keyCode.END: +					newVal = this._valueMax(); +					break; +				case $.ui.keyCode.PAGE_UP: +					newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) ); +					break; +				case $.ui.keyCode.PAGE_DOWN: +					newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) ); +					break; +				case $.ui.keyCode.UP: +				case $.ui.keyCode.RIGHT: +					if ( curVal === this._valueMax() ) { +						return; +					} +					newVal = this._trimAlignValue( curVal + step ); +					break; +				case $.ui.keyCode.DOWN: +				case $.ui.keyCode.LEFT: +					if ( curVal === this._valueMin() ) { +						return; +					} +					newVal = this._trimAlignValue( curVal - step ); +					break; +			} + +			this._slide( event, index, newVal ); +		}, +		click: function( event ) { +			event.preventDefault(); +		}, +		keyup: function( event ) { +			var index = $( event.target ).data( "ui-slider-handle-index" ); + +			if ( this._keySliding ) { +				this._keySliding = false; +				this._stop( event, index ); +				this._change( event, index ); +				$( event.target ).removeClass( "ui-state-active" ); +			} +		}  	}  });  }(jQuery)); +  (function( $ ) {  function modifier( fn ) { @@ -10450,7 +13346,7 @@ function modifier( fn ) {  }  $.widget( "ui.spinner", { -	version: "1.9.2", +	version: "1.10.4",  	defaultElement: "<input>",  	widgetEventPrefix: "spin",  	options: { @@ -10478,8 +13374,12 @@ $.widget( "ui.spinner", {  		this._setOption( "min", this.options.min );  		this._setOption( "step", this.options.step ); -		// format the value, but don't constrain -		this._value( this.element.val(), true ); +		// Only format if there is a value, prevents the field from being marked +		// as invalid in Firefox, see #9573. +		if ( this.value() !== "" ) { +			// Format the value, but don't constrain. +			this._value( this.element.val(), true ); +		}  		this._draw();  		this._on( this._events ); @@ -10525,6 +13425,7 @@ $.widget( "ui.spinner", {  				return;  			} +			this._stop();  			this._refresh();  			if ( this.previous !== this.element.val() ) {  				this._trigger( "change", event ); @@ -10791,6 +13692,14 @@ $.widget( "ui.spinner", {  				value = this._parse( value );  			}  		} +		if ( key === "icons" ) { +			this.buttons.first().find( ".ui-icon" ) +				.removeClass( this.options.icons.up ) +				.addClass( value.up ); +			this.buttons.last().find( ".ui-icon" ) +				.removeClass( this.options.icons.down ) +				.addClass( value.down ); +		}  		this._super( key, value ); @@ -10868,14 +13777,20 @@ $.widget( "ui.spinner", {  		this._stepUp( steps );  	}),  	_stepUp: function( steps ) { -		this._spin( (steps || 1) * this.options.step ); +		if ( this._start() ) { +			this._spin( (steps || 1) * this.options.step ); +			this._stop(); +		}  	},  	stepDown: modifier(function( steps ) {  		this._stepDown( steps );  	}),  	_stepDown: function( steps ) { -		this._spin( (steps || 1) * -this.options.step ); +		if ( this._start() ) { +			this._spin( (steps || 1) * -this.options.step ); +			this._stop(); +		}  	},  	pageUp: modifier(function( pages ) { @@ -10899,6 +13814,7 @@ $.widget( "ui.spinner", {  });  }( jQuery ) ); +  (function( $, undefined ) {  var tabId = 0, @@ -10909,17 +13825,17 @@ function getNextTabId() {  }  function isLocal( anchor ) { +	// support: IE7 +	// IE7 doesn't normalize the href property when set via script (#9317) +	anchor = anchor.cloneNode( false ); +  	return anchor.hash.length > 1 && -		anchor.href.replace( rhash, "" ) === -			location.href.replace( rhash, "" ) -				// support: Safari 5.1 -				// Safari 5.1 doesn't encode spaces in window.location -				// but it does encode spaces from anchors (#8777) -				.replace( /\s/g, "%20" ); +		decodeURIComponent( anchor.href.replace( rhash, "" ) ) === +			decodeURIComponent( location.href.replace( rhash, "" ) );  }  $.widget( "ui.tabs", { -	version: "1.9.2", +	version: "1.10.4",  	delay: 300,  	options: {  		active: null, @@ -10938,9 +13854,7 @@ $.widget( "ui.tabs", {  	_create: function() {  		var that = this, -			options = this.options, -			active = options.active, -			locationHash = location.hash.substring( 1 ); +			options = this.options;  		this.running = false; @@ -10966,6 +13880,36 @@ $.widget( "ui.tabs", {  			});  		this._processTabs(); +		options.active = this._initialActive(); + +		// Take disabling tabs via class attribute from HTML +		// into account and update option properly. +		if ( $.isArray( options.disabled ) ) { +			options.disabled = $.unique( options.disabled.concat( +				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { +					return that.tabs.index( li ); +				}) +			) ).sort(); +		} + +		// check for length avoids error when initializing empty list +		if ( this.options.active !== false && this.anchors.length ) { +			this.active = this._findActive( options.active ); +		} else { +			this.active = $(); +		} + +		this._refresh(); + +		if ( this.active.length ) { +			this.load( options.active ); +		} +	}, + +	_initialActive: function() { +		var active = this.options.active, +			collapsible = this.options.collapsible, +			locationHash = location.hash.substring( 1 );  		if ( active === null ) {  			// check the fragment identifier in the URL @@ -10993,38 +13937,16 @@ $.widget( "ui.tabs", {  		if ( active !== false ) {  			active = this.tabs.index( this.tabs.eq( active ) );  			if ( active === -1 ) { -				active = options.collapsible ? false : 0; +				active = collapsible ? false : 0;  			}  		} -		options.active = active;  		// don't allow collapsible: false and active: false -		if ( !options.collapsible && options.active === false && this.anchors.length ) { -			options.active = 0; -		} - -		// Take disabling tabs via class attribute from HTML -		// into account and update option properly. -		if ( $.isArray( options.disabled ) ) { -			options.disabled = $.unique( options.disabled.concat( -				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { -					return that.tabs.index( li ); -				}) -			) ).sort(); -		} - -		// check for length avoids error when initializing empty list -		if ( this.options.active !== false && this.anchors.length ) { -			this.active = this._findActive( this.options.active ); -		} else { -			this.active = $(); +		if ( !collapsible && active === false && this.anchors.length ) { +			active = 0;  		} -		this._refresh(); - -		if ( this.active.length ) { -			this.load( options.active ); -		} +		return active;  	},  	_getCreateEventData: function() { @@ -11322,7 +14244,7 @@ $.widget( "ui.tabs", {  	// allow overriding how to find the list for rare usage scenarios (#7715)  	_getList: function() { -		return this.element.find( "ol,ul" ).eq( 0 ); +		return this.tablist || this.element.find( "ol,ul" ).eq( 0 );  	},  	_createPanel: function( id ) { @@ -11379,19 +14301,13 @@ $.widget( "ui.tabs", {  	},  	_setupHeightStyle: function( heightStyle ) { -		var maxHeight, overflow, +		var maxHeight,  			parent = this.element.parent();  		if ( heightStyle === "fill" ) { -			// IE 6 treats height like minHeight, so we need to turn off overflow -			// in order to get a reliable height -			// we use the minHeight support test because we assume that only -			// browsers that don't support minHeight will treat height as minHeight -			if ( !$.support.minHeight ) { -				overflow = parent.css( "overflow" ); -				parent.css( "overflow", "hidden"); -			}  			maxHeight = parent.height(); +			maxHeight -= this.element.outerHeight() - this.element.height(); +  			this.element.siblings( ":visible" ).each(function() {  				var elem = $( this ),  					position = elem.css( "position" ); @@ -11401,9 +14317,6 @@ $.widget( "ui.tabs", {  				}  				maxHeight -= elem.outerHeight( true );  			}); -			if ( overflow ) { -				parent.css( "overflow", overflow ); -			}  			this.element.children().not( this.panels ).each(function() {  				maxHeight -= $( this ).outerHeight( true ); @@ -11582,8 +14495,6 @@ $.widget( "ui.tabs", {  			.removeClass( "ui-tabs-anchor" )  			.removeAttr( "role" )  			.removeAttr( "tabIndex" ) -			.removeData( "href.tabs" ) -			.removeData( "load.tabs" )  			.removeUniqueId();  		this.tabs.add( this.panels ).each(function() { @@ -11608,7 +14519,9 @@ $.widget( "ui.tabs", {  			var li = $( this ),  				prev = li.data( "ui-tabs-aria-controls" );  			if ( prev ) { -				li.attr( "aria-controls", prev ); +				li +					.attr( "aria-controls", prev ) +					.removeData( "ui-tabs-aria-controls" );  			} else {  				li.removeAttr( "aria-controls" );  			} @@ -11719,7 +14632,6 @@ $.widget( "ui.tabs", {  		}  	}, -	// TODO: Remove this function in 1.10 when ajaxOptions is removed  	_ajaxSettings: function( anchor, event, eventData ) {  		var that = this;  		return { @@ -11737,520 +14649,8 @@ $.widget( "ui.tabs", {  	}  }); -// DEPRECATED -if ( $.uiBackCompat !== false ) { - -	// helper method for a lot of the back compat extensions -	$.ui.tabs.prototype._ui = function( tab, panel ) { -		return { -			tab: tab, -			panel: panel, -			index: this.anchors.index( tab ) -		}; -	}; - -	// url method -	$.widget( "ui.tabs", $.ui.tabs, { -		url: function( index, url ) { -			this.anchors.eq( index ).attr( "href", url ); -		} -	}); - -	// TODO: Remove _ajaxSettings() method when removing this extension -	// ajaxOptions and cache options -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			ajaxOptions: null, -			cache: false -		}, - -		_create: function() { -			this._super(); - -			var that = this; - -			this._on({ tabsbeforeload: function( event, ui ) { -				// tab is already cached -				if ( $.data( ui.tab[ 0 ], "cache.tabs" ) ) { -					event.preventDefault(); -					return; -				} - -				ui.jqXHR.success(function() { -					if ( that.options.cache ) { -						$.data( ui.tab[ 0 ], "cache.tabs", true ); -					} -				}); -			}}); -		}, - -		_ajaxSettings: function( anchor, event, ui ) { -			var ajaxOptions = this.options.ajaxOptions; -			return $.extend( {}, ajaxOptions, { -				error: function( xhr, status ) { -					try { -						// Passing index avoid a race condition when this method is -						// called after the user has selected another tab. -						// Pass the anchor that initiated this request allows -						// loadError to manipulate the tab content panel via $(a.hash) -						ajaxOptions.error( -							xhr, status, ui.tab.closest( "li" ).index(), ui.tab[ 0 ] ); -					} -					catch ( error ) {} -				} -			}, this._superApply( arguments ) ); -		}, - -		_setOption: function( key, value ) { -			// reset cache if switching from cached to not cached -			if ( key === "cache" && value === false ) { -				this.anchors.removeData( "cache.tabs" ); -			} -			this._super( key, value ); -		}, - -		_destroy: function() { -			this.anchors.removeData( "cache.tabs" ); -			this._super(); -		}, - -		url: function( index ){ -			this.anchors.eq( index ).removeData( "cache.tabs" ); -			this._superApply( arguments ); -		} -	}); - -	// abort method -	$.widget( "ui.tabs", $.ui.tabs, { -		abort: function() { -			if ( this.xhr ) { -				this.xhr.abort(); -			} -		} -	}); - -	// spinner -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			spinner: "<em>Loading…</em>" -		}, -		_create: function() { -			this._super(); -			this._on({ -				tabsbeforeload: function( event, ui ) { -					// Don't react to nested tabs or tabs that don't use a spinner -					if ( event.target !== this.element[ 0 ] || -							!this.options.spinner ) { -						return; -					} - -					var span = ui.tab.find( "span" ), -						html = span.html(); -					span.html( this.options.spinner ); -					ui.jqXHR.complete(function() { -						span.html( html ); -					}); -				} -			}); -		} -	}); - -	// enable/disable events -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			enable: null, -			disable: null -		}, - -		enable: function( index ) { -			var options = this.options, -				trigger; - -			if ( index && options.disabled === true || -					( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) { -				trigger = true; -			} - -			this._superApply( arguments ); - -			if ( trigger ) { -				this._trigger( "enable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); -			} -		}, - -		disable: function( index ) { -			var options = this.options, -				trigger; - -			if ( index && options.disabled === false || -					( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) { -				trigger = true; -			} - -			this._superApply( arguments ); - -			if ( trigger ) { -				this._trigger( "disable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); -			} -		} -	}); - -	// add/remove methods and events -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			add: null, -			remove: null, -			tabTemplate: "<li><a href='#{href}'><span>#{label}</span></a></li>" -		}, - -		add: function( url, label, index ) { -			if ( index === undefined ) { -				index = this.anchors.length; -			} - -			var doInsertAfter, panel, -				options = this.options, -				li = $( options.tabTemplate -					.replace( /#\{href\}/g, url ) -					.replace( /#\{label\}/g, label ) ), -				id = !url.indexOf( "#" ) ? -					url.replace( "#", "" ) : -					this._tabId( li ); - -			li.addClass( "ui-state-default ui-corner-top" ).data( "ui-tabs-destroy", true ); -			li.attr( "aria-controls", id ); - -			doInsertAfter = index >= this.tabs.length; - -			// try to find an existing element before creating a new one -			panel = this.element.find( "#" + id ); -			if ( !panel.length ) { -				panel = this._createPanel( id ); -				if ( doInsertAfter ) { -					if ( index > 0 ) { -						panel.insertAfter( this.panels.eq( -1 ) ); -					} else { -						panel.appendTo( this.element ); -					} -				} else { -					panel.insertBefore( this.panels[ index ] ); -				} -			} -			panel.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ).hide(); - -			if ( doInsertAfter ) { -				li.appendTo( this.tablist ); -			} else { -				li.insertBefore( this.tabs[ index ] ); -			} - -			options.disabled = $.map( options.disabled, function( n ) { -				return n >= index ? ++n : n; -			}); - -			this.refresh(); -			if ( this.tabs.length === 1 && options.active === false ) { -				this.option( "active", 0 ); -			} - -			this._trigger( "add", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); -			return this; -		}, - -		remove: function( index ) { -			index = this._getIndex( index ); -			var options = this.options, -				tab = this.tabs.eq( index ).remove(), -				panel = this._getPanelForTab( tab ).remove(); - -			// If selected tab was removed focus tab to the right or -			// in case the last tab was removed the tab to the left. -			// We check for more than 2 tabs, because if there are only 2, -			// then when we remove this tab, there will only be one tab left -			// so we don't need to detect which tab to activate. -			if ( tab.hasClass( "ui-tabs-active" ) && this.anchors.length > 2 ) { -				this._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) ); -			} - -			options.disabled = $.map( -				$.grep( options.disabled, function( n ) { -					return n !== index; -				}), -				function( n ) { -					return n >= index ? --n : n; -				}); - -			this.refresh(); - -			this._trigger( "remove", null, this._ui( tab.find( "a" )[ 0 ], panel[ 0 ] ) ); -			return this; -		} -	}); - -	// length method -	$.widget( "ui.tabs", $.ui.tabs, { -		length: function() { -			return this.anchors.length; -		} -	}); - -	// panel ids (idPrefix option + title attribute) -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			idPrefix: "ui-tabs-" -		}, - -		_tabId: function( tab ) { -			var a = tab.is( "li" ) ? tab.find( "a[href]" ) : tab; -			a = a[0]; -			return $( a ).closest( "li" ).attr( "aria-controls" ) || -				a.title && a.title.replace( /\s/g, "_" ).replace( /[^\w\u00c0-\uFFFF\-]/g, "" ) || -				this.options.idPrefix + getNextTabId(); -		} -	}); - -	// _createPanel method -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			panelTemplate: "<div></div>" -		}, - -		_createPanel: function( id ) { -			return $( this.options.panelTemplate ) -				.attr( "id", id ) -				.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) -				.data( "ui-tabs-destroy", true ); -		} -	}); - -	// selected option -	$.widget( "ui.tabs", $.ui.tabs, { -		_create: function() { -			var options = this.options; -			if ( options.active === null && options.selected !== undefined ) { -				options.active = options.selected === -1 ? false : options.selected; -			} -			this._super(); -			options.selected = options.active; -			if ( options.selected === false ) { -				options.selected = -1; -			} -		}, - -		_setOption: function( key, value ) { -			if ( key !== "selected" ) { -				return this._super( key, value ); -			} - -			var options = this.options; -			this._super( "active", value === -1 ? false : value ); -			options.selected = options.active; -			if ( options.selected === false ) { -				options.selected = -1; -			} -		}, - -		_eventHandler: function() { -			this._superApply( arguments ); -			this.options.selected = this.options.active; -			if ( this.options.selected === false ) { -				this.options.selected = -1; -			} -		} -	}); - -	// show and select event -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			show: null, -			select: null -		}, -		_create: function() { -			this._super(); -			if ( this.options.active !== false ) { -				this._trigger( "show", null, this._ui( -					this.active.find( ".ui-tabs-anchor" )[ 0 ], -					this._getPanelForTab( this.active )[ 0 ] ) ); -			} -		}, -		_trigger: function( type, event, data ) { -			var tab, panel, -				ret = this._superApply( arguments ); - -			if ( !ret ) { -				return false; -			} - -			if ( type === "beforeActivate" ) { -				tab = data.newTab.length ? data.newTab : data.oldTab; -				panel = data.newPanel.length ? data.newPanel : data.oldPanel; -				ret = this._super( "select", event, { -					tab: tab.find( ".ui-tabs-anchor" )[ 0], -					panel: panel[ 0 ], -					index: tab.closest( "li" ).index() -				}); -			} else if ( type === "activate" && data.newTab.length ) { -				ret = this._super( "show", event, { -					tab: data.newTab.find( ".ui-tabs-anchor" )[ 0 ], -					panel: data.newPanel[ 0 ], -					index: data.newTab.closest( "li" ).index() -				}); -			} -			return ret; -		} -	}); - -	// select method -	$.widget( "ui.tabs", $.ui.tabs, { -		select: function( index ) { -			index = this._getIndex( index ); -			if ( index === -1 ) { -				if ( this.options.collapsible && this.options.selected !== -1 ) { -					index = this.options.selected; -				} else { -					return; -				} -			} -			this.anchors.eq( index ).trigger( this.options.event + this.eventNamespace ); -		} -	}); - -	// cookie option -	(function() { - -	var listId = 0; - -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			cookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true } -		}, -		_create: function() { -			var options = this.options, -				active; -			if ( options.active == null && options.cookie ) { -				active = parseInt( this._cookie(), 10 ); -				if ( active === -1 ) { -					active = false; -				} -				options.active = active; -			} -			this._super(); -		}, -		_cookie: function( active ) { -			var cookie = [ this.cookie || -				( this.cookie = this.options.cookie.name || "ui-tabs-" + (++listId) ) ]; -			if ( arguments.length ) { -				cookie.push( active === false ? -1 : active ); -				cookie.push( this.options.cookie ); -			} -			return $.cookie.apply( null, cookie ); -		}, -		_refresh: function() { -			this._super(); -			if ( this.options.cookie ) { -				this._cookie( this.options.active, this.options.cookie ); -			} -		}, -		_eventHandler: function() { -			this._superApply( arguments ); -			if ( this.options.cookie ) { -				this._cookie( this.options.active, this.options.cookie ); -			} -		}, -		_destroy: function() { -			this._super(); -			if ( this.options.cookie ) { -				this._cookie( null, this.options.cookie ); -			} -		} -	}); - -	})(); - -	// load event -	$.widget( "ui.tabs", $.ui.tabs, { -		_trigger: function( type, event, data ) { -			var _data = $.extend( {}, data ); -			if ( type === "load" ) { -				_data.panel = _data.panel[ 0 ]; -				_data.tab = _data.tab.find( ".ui-tabs-anchor" )[ 0 ]; -			} -			return this._super( type, event, _data ); -		} -	}); - -	// fx option -	// The new animation options (show, hide) conflict with the old show callback. -	// The old fx option wins over show/hide anyway (always favor back-compat). -	// If a user wants to use the new animation API, they must give up the old API. -	$.widget( "ui.tabs", $.ui.tabs, { -		options: { -			fx: null // e.g. { height: "toggle", opacity: "toggle", duration: 200 } -		}, - -		_getFx: function() { -			var hide, show, -				fx = this.options.fx; - -			if ( fx ) { -				if ( $.isArray( fx ) ) { -					hide = fx[ 0 ]; -					show = fx[ 1 ]; -				} else { -					hide = show = fx; -				} -			} - -			return fx ? { show: show, hide: hide } : null; -		}, - -		_toggle: function( event, eventData ) { -			var that = this, -				toShow = eventData.newPanel, -				toHide = eventData.oldPanel, -				fx = this._getFx(); - -			if ( !fx ) { -				return this._super( event, eventData ); -			} - -			that.running = true; - -			function complete() { -				that.running = false; -				that._trigger( "activate", event, eventData ); -			} - -			function show() { -				eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" ); - -				if ( toShow.length && fx.show ) { -					toShow -						.animate( fx.show, fx.show.duration, function() { -							complete(); -						}); -				} else { -					toShow.show(); -					complete(); -				} -			} - -			// start out by hiding, then showing, then completing -			if ( toHide.length && fx.hide ) { -				toHide.animate( fx.hide, fx.hide.duration, function() { -					eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); -					show(); -				}); -			} else { -				eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); -				toHide.hide(); -				show(); -			} -		} -	}); -} -  })( jQuery ); +  (function( $ ) {  var increments = 0; @@ -12281,10 +14681,14 @@ function removeDescribedBy( elem ) {  }  $.widget( "ui.tooltip", { -	version: "1.9.2", +	version: "1.10.4",  	options: {  		content: function() { -			return $( this ).attr( "title" ); +			// support: IE<9, Opera in jQuery <1.7 +			// .text() can't accept undefined, so coerce to a string +			var title = $( this ).attr( "title" ) || ""; +			// Escape title, since we're going from an attribute to raw HTML +			return $( "<a>" ).text( title ).html();  		},  		hide: true,  		// Disabled elements have inconsistent behavior across browsers (#8661) @@ -12349,7 +14753,7 @@ $.widget( "ui.tooltip", {  		});  		// remove title attributes to prevent native tooltips -		this.element.find( this.options.items ).andSelf().each(function() { +		this.element.find( this.options.items ).addBack().each(function() {  			var element = $( this );  			if ( element.is( "[title]" ) ) {  				element @@ -12361,7 +14765,7 @@ $.widget( "ui.tooltip", {  	_enable: function() {  		// restore title attributes -		this.element.find( this.options.items ).andSelf().each(function() { +		this.element.find( this.options.items ).addBack().each(function() {  			var element = $( this );  			if ( element.data( "ui-tooltip-title" ) ) {  				element.attr( "title", element.data( "ui-tooltip-title" ) ); @@ -12506,7 +14910,7 @@ $.widget( "ui.tooltip", {  		// as the tooltip is visible, position the tooltip using the most recent  		// event.  		if ( this.options.show && this.options.show.delay ) { -			delayedShow = setInterval(function() { +			delayedShow = this.delayedShow = setInterval(function() {  				if ( tooltip.is( ":visible" ) ) {  					position( positionOption.of );  					clearInterval( delayedShow ); @@ -12548,6 +14952,9 @@ $.widget( "ui.tooltip", {  			return;  		} +		// Clear the interval for delayed tracking tooltips +		clearInterval( this.delayedShow ); +  		// only set title if we had one before (see comment in _open())  		if ( target.data( "ui-tooltip-title" ) ) {  			target.attr( "title", target.data( "ui-tooltip-title" ) ); @@ -12593,9 +15000,6 @@ $.widget( "ui.tooltip", {  			.addClass( "ui-tooltip-content" )  			.appendTo( tooltip );  		tooltip.appendTo( this.document[0].body ); -		if ( $.fn.bgiframe ) { -			tooltip.bgiframe(); -		}  		this.tooltips[ id ] = element;  		return tooltip;  	}, @@ -12634,2246 +15038,3 @@ $.widget( "ui.tooltip", {  });  }( jQuery ) ); -;(jQuery.effects || (function($, undefined) { - -var backCompat = $.uiBackCompat !== false, -	// prefix used for storing data on .data() -	dataSpace = "ui-effects-"; - -$.effects = { -	effect: {} -}; - -/*! - * jQuery Color Animations v2.0.0 - * http://jquery.com/ - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * Date: Mon Aug 13 13:41:02 2012 -0500 - */ -(function( jQuery, undefined ) { - -	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "), - -	// plusequals test for += 100 -= 100 -	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, -	// a set of RE's that can match strings and generate color tuples. -	stringParsers = [{ -			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, -			parse: function( execResult ) { -				return [ -					execResult[ 1 ], -					execResult[ 2 ], -					execResult[ 3 ], -					execResult[ 4 ] -				]; -			} -		}, { -			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, -			parse: function( execResult ) { -				return [ -					execResult[ 1 ] * 2.55, -					execResult[ 2 ] * 2.55, -					execResult[ 3 ] * 2.55, -					execResult[ 4 ] -				]; -			} -		}, { -			// this regex ignores A-F because it's compared against an already lowercased string -			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, -			parse: function( execResult ) { -				return [ -					parseInt( execResult[ 1 ], 16 ), -					parseInt( execResult[ 2 ], 16 ), -					parseInt( execResult[ 3 ], 16 ) -				]; -			} -		}, { -			// this regex ignores A-F because it's compared against an already lowercased string -			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, -			parse: function( execResult ) { -				return [ -					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), -					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), -					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) -				]; -			} -		}, { -			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, -			space: "hsla", -			parse: function( execResult ) { -				return [ -					execResult[ 1 ], -					execResult[ 2 ] / 100, -					execResult[ 3 ] / 100, -					execResult[ 4 ] -				]; -			} -		}], - -	// jQuery.Color( ) -	color = jQuery.Color = function( color, green, blue, alpha ) { -		return new jQuery.Color.fn.parse( color, green, blue, alpha ); -	}, -	spaces = { -		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" -				} -			} -		} -	}, -	propTypes = { -		"byte": { -			floor: true, -			max: 255 -		}, -		"percent": { -			max: 1 -		}, -		"degrees": { -			mod: 360, -			floor: true -		} -	}, -	support = color.support = {}, - -	// element for support tests -	supportElem = jQuery( "<p>" )[ 0 ], - -	// colors = jQuery.Color.names -	colors, - -	// local aliases of functions called often -	each = jQuery.each; - -// determine rgba support immediately -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; - -// define cache name and alpha properties -// for rgba and hsla spaces -each( spaces, function( spaceName, space ) { -	space.cache = "_" + spaceName; -	space.props.alpha = { -		idx: 3, -		type: "percent", -		def: 1 -	}; -}); - -function clamp( value, prop, allowEmpty ) { -	var type = propTypes[ prop.type ] || {}; - -	if ( value == null ) { -		return (allowEmpty || !prop.def) ? null : prop.def; -	} - -	// ~~ is an short way of doing floor for positive numbers -	value = type.floor ? ~~value : parseFloat( value ); - -	// IE will pass in empty strings as value for alpha, -	// which will hit this case -	if ( isNaN( value ) ) { -		return prop.def; -	} - -	if ( type.mod ) { -		// we add mod before modding to make sure that negatives values -		// get converted properly: -10 -> 350 -		return (value + type.mod) % type.mod; -	} - -	// for now all property types without mod have min and max -	return 0 > value ? 0 : type.max < value ? type.max : value; -} - -function stringParse( string ) { -	var inst = color(), -		rgba = inst._rgba = []; - -	string = string.toLowerCase(); - -	each( stringParsers, function( i, parser ) { -		var parsed, -			match = parser.re.exec( string ), -			values = match && parser.parse( match ), -			spaceName = parser.space || "rgba"; - -		if ( values ) { -			parsed = inst[ spaceName ]( values ); - -			// if this was an rgba parse the assignment might happen twice -			// oh well.... -			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; -			rgba = inst._rgba = parsed._rgba; - -			// exit each( stringParsers ) here because we matched -			return false; -		} -	}); - -	// Found a stringParser that handled it -	if ( rgba.length ) { - -		// if this came from a parsed string, force "transparent" when alpha is 0 -		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) -		if ( rgba.join() === "0,0,0,0" ) { -			jQuery.extend( rgba, colors.transparent ); -		} -		return inst; -	} - -	// named colors -	return colors[ string ]; -} - -color.fn = jQuery.extend( color.prototype, { -	parse: function( red, green, blue, alpha ) { -		if ( red === undefined ) { -			this._rgba = [ null, null, null, null ]; -			return this; -		} -		if ( red.jquery || red.nodeType ) { -			red = jQuery( red ).css( green ); -			green = undefined; -		} - -		var inst = this, -			type = jQuery.type( red ), -			rgba = this._rgba = []; - -		// more than 1 argument specified - assume ( red, green, blue, alpha ) -		if ( green !== undefined ) { -			red = [ red, green, blue, alpha ]; -			type = "array"; -		} - -		if ( type === "string" ) { -			return this.parse( stringParse( red ) || colors._default ); -		} - -		if ( type === "array" ) { -			each( spaces.rgba.props, function( key, prop ) { -				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); -			}); -			return this; -		} - -		if ( type === "object" ) { -			if ( red instanceof color ) { -				each( spaces, function( spaceName, space ) { -					if ( red[ space.cache ] ) { -						inst[ space.cache ] = red[ space.cache ].slice(); -					} -				}); -			} else { -				each( spaces, function( spaceName, space ) { -					var cache = space.cache; -					each( space.props, function( key, prop ) { - -						// if the cache doesn't exist, and we know how to convert -						if ( !inst[ cache ] && space.to ) { - -							// if the value was null, we don't need to copy it -							// if the key was alpha, we don't need to copy it either -							if ( key === "alpha" || red[ key ] == null ) { -								return; -							} -							inst[ cache ] = space.to( inst._rgba ); -						} - -						// this is the only case where we allow nulls for ALL properties. -						// call clamp with alwaysAllowEmpty -						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); -					}); - -					// everything defined but alpha? -					if ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { -						// use the default of 1 -						inst[ cache ][ 3 ] = 1; -						if ( space.from ) { -							inst._rgba = space.from( inst[ cache ] ); -						} -					} -				}); -			} -			return this; -		} -	}, -	is: function( compare ) { -		var is = color( compare ), -			same = true, -			inst = this; - -		each( spaces, function( _, space ) { -			var localCache, -				isCache = is[ space.cache ]; -			if (isCache) { -				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; -				each( space.props, function( _, prop ) { -					if ( isCache[ prop.idx ] != null ) { -						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); -						return same; -					} -				}); -			} -			return same; -		}); -		return same; -	}, -	_space: function() { -		var used = [], -			inst = this; -		each( spaces, function( spaceName, space ) { -			if ( inst[ space.cache ] ) { -				used.push( spaceName ); -			} -		}); -		return used.pop(); -	}, -	transition: function( other, distance ) { -		var end = color( other ), -			spaceName = end._space(), -			space = spaces[ spaceName ], -			startColor = this.alpha() === 0 ? color( "transparent" ) : this, -			start = startColor[ space.cache ] || space.to( startColor._rgba ), -			result = start.slice(); - -		end = end[ space.cache ]; -		each( space.props, function( key, prop ) { -			var index = prop.idx, -				startValue = start[ index ], -				endValue = end[ index ], -				type = propTypes[ prop.type ] || {}; - -			// if null, don't override start value -			if ( endValue === null ) { -				return; -			} -			// if null - use end -			if ( startValue === null ) { -				result[ index ] = endValue; -			} else { -				if ( type.mod ) { -					if ( endValue - startValue > type.mod / 2 ) { -						startValue += type.mod; -					} else if ( startValue - endValue > type.mod / 2 ) { -						startValue -= type.mod; -					} -				} -				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); -			} -		}); -		return this[ spaceName ]( result ); -	}, -	blend: function( opaque ) { -		// if we are already opaque - return ourself -		if ( this._rgba[ 3 ] === 1 ) { -			return this; -		} - -		var rgb = this._rgba.slice(), -			a = rgb.pop(), -			blend = color( opaque )._rgba; - -		return color( jQuery.map( rgb, function( v, i ) { -			return ( 1 - a ) * blend[ i ] + a * v; -		})); -	}, -	toRgbaString: function() { -		var prefix = "rgba(", -			rgba = jQuery.map( this._rgba, function( v, i ) { -				return v == null ? ( i > 2 ? 1 : 0 ) : v; -			}); - -		if ( rgba[ 3 ] === 1 ) { -			rgba.pop(); -			prefix = "rgb("; -		} - -		return prefix + rgba.join() + ")"; -	}, -	toHslaString: function() { -		var prefix = "hsla(", -			hsla = jQuery.map( this.hsla(), function( v, i ) { -				if ( v == null ) { -					v = i > 2 ? 1 : 0; -				} - -				// catch 1 and 2 -				if ( i && i < 3 ) { -					v = Math.round( v * 100 ) + "%"; -				} -				return v; -			}); - -		if ( hsla[ 3 ] === 1 ) { -			hsla.pop(); -			prefix = "hsl("; -		} -		return prefix + hsla.join() + ")"; -	}, -	toHexString: function( includeAlpha ) { -		var rgba = this._rgba.slice(), -			alpha = rgba.pop(); - -		if ( includeAlpha ) { -			rgba.push( ~~( alpha * 255 ) ); -		} - -		return "#" + jQuery.map( rgba, function( v ) { - -			// default to 0 when nulls exist -			v = ( v || 0 ).toString( 16 ); -			return v.length === 1 ? "0" + v : v; -		}).join(""); -	}, -	toString: function() { -		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); -	} -}); -color.fn.parse.prototype = color.fn; - -// hsla conversions adapted from: -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 - -function hue2rgb( p, q, h ) { -	h = ( h + 1 ) % 1; -	if ( h * 6 < 1 ) { -		return p + (q - p) * h * 6; -	} -	if ( h * 2 < 1) { -		return q; -	} -	if ( h * 3 < 2 ) { -		return p + (q - p) * ((2/3) - h) * 6; -	} -	return p; -} - -spaces.hsla.to = function ( rgba ) { -	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { -		return [ null, null, null, rgba[ 3 ] ]; -	} -	var r = rgba[ 0 ] / 255, -		g = rgba[ 1 ] / 255, -		b = rgba[ 2 ] / 255, -		a = rgba[ 3 ], -		max = Math.max( r, g, b ), -		min = Math.min( r, g, b ), -		diff = max - min, -		add = max + min, -		l = add * 0.5, -		h, s; - -	if ( min === max ) { -		h = 0; -	} else if ( r === max ) { -		h = ( 60 * ( g - b ) / diff ) + 360; -	} else if ( g === max ) { -		h = ( 60 * ( b - r ) / diff ) + 120; -	} else { -		h = ( 60 * ( r - g ) / diff ) + 240; -	} - -	if ( l === 0 || l === 1 ) { -		s = l; -	} else if ( l <= 0.5 ) { -		s = diff / add; -	} else { -		s = diff / ( 2 - add ); -	} -	return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; -}; - -spaces.hsla.from = function ( hsla ) { -	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { -		return [ null, null, null, hsla[ 3 ] ]; -	} -	var h = hsla[ 0 ] / 360, -		s = hsla[ 1 ], -		l = hsla[ 2 ], -		a = hsla[ 3 ], -		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, -		p = 2 * l - q; - -	return [ -		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), -		Math.round( hue2rgb( p, q, h ) * 255 ), -		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), -		a -	]; -}; - - -each( spaces, function( spaceName, space ) { -	var props = space.props, -		cache = space.cache, -		to = space.to, -		from = space.from; - -	// makes rgba() and hsla() -	color.fn[ spaceName ] = function( value ) { - -		// generate a cache for this space if it doesn't exist -		if ( to && !this[ cache ] ) { -			this[ cache ] = to( this._rgba ); -		} -		if ( value === undefined ) { -			return this[ cache ].slice(); -		} - -		var ret, -			type = jQuery.type( value ), -			arr = ( type === "array" || type === "object" ) ? value : arguments, -			local = this[ cache ].slice(); - -		each( props, function( key, prop ) { -			var val = arr[ type === "object" ? key : prop.idx ]; -			if ( val == null ) { -				val = local[ prop.idx ]; -			} -			local[ prop.idx ] = clamp( val, prop ); -		}); - -		if ( from ) { -			ret = color( from( local ) ); -			ret[ cache ] = local; -			return ret; -		} else { -			return color( local ); -		} -	}; - -	// makes red() green() blue() alpha() hue() saturation() lightness() -	each( props, function( key, prop ) { -		// alpha is included in more than one space -		if ( color.fn[ key ] ) { -			return; -		} -		color.fn[ key ] = function( value ) { -			var vtype = jQuery.type( value ), -				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), -				local = this[ fn ](), -				cur = local[ prop.idx ], -				match; - -			if ( vtype === "undefined" ) { -				return cur; -			} - -			if ( vtype === "function" ) { -				value = value.call( this, cur ); -				vtype = jQuery.type( value ); -			} -			if ( value == null && prop.empty ) { -				return this; -			} -			if ( vtype === "string" ) { -				match = rplusequals.exec( value ); -				if ( match ) { -					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); -				} -			} -			local[ prop.idx ] = value; -			return this[ fn ]( local ); -		}; -	}); -}); - -// add .fx.step functions -each( stepHooks, function( i, hook ) { -	jQuery.cssHooks[ hook ] = { -		set: function( elem, value ) { -			var parsed, curElem, -				backgroundColor = ""; - -			if ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) { -				value = color( parsed || value ); -				if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { -					curElem = hook === "backgroundColor" ? elem.parentNode : elem; -					while ( -						(backgroundColor === "" || backgroundColor === "transparent") && -						curElem && curElem.style -					) { -						try { -							backgroundColor = jQuery.css( curElem, "backgroundColor" ); -							curElem = curElem.parentNode; -						} catch ( e ) { -						} -					} - -					value = value.blend( backgroundColor && backgroundColor !== "transparent" ? -						backgroundColor : -						"_default" ); -				} - -				value = value.toRgbaString(); -			} -			try { -				elem.style[ hook ] = value; -			} catch( error ) { -				// wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' -			} -		} -	}; -	jQuery.fx.step[ hook ] = function( fx ) { -		if ( !fx.colorInit ) { -			fx.start = color( fx.elem, hook ); -			fx.end = color( fx.end ); -			fx.colorInit = true; -		} -		jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); -	}; -}); - -jQuery.cssHooks.borderColor = { -	expand: function( value ) { -		var expanded = {}; - -		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { -			expanded[ "border" + part + "Color" ] = value; -		}); -		return expanded; -	} -}; - -// Basic color names only. -// Usage of any of the other color names requires adding yourself or including -// jquery.color.svg-names.js. -colors = jQuery.Color.names = { -	// 4.1. Basic color keywords -	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", - -	// 4.2.3. "transparent" color keyword -	transparent: [ null, null, null, 0 ], - -	_default: "#ffffff" -}; - -})( jQuery ); - - - -/******************************************************************************/ -/****************************** CLASS ANIMATIONS ******************************/ -/******************************************************************************/ -(function() { - -var classAnimationActions = [ "add", "remove", "toggle" ], -	shorthandStyles = { -		border: 1, -		borderBottom: 1, -		borderColor: 1, -		borderLeft: 1, -		borderRight: 1, -		borderTop: 1, -		borderWidth: 1, -		margin: 1, -		padding: 1 -	}; - -$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { -	$.fx.step[ prop ] = function( fx ) { -		if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { -			jQuery.style( fx.elem, prop, fx.end ); -			fx.setAttr = true; -		} -	}; -}); - -function getElementStyles() { -	var style = this.ownerDocument.defaultView ? -			this.ownerDocument.defaultView.getComputedStyle( this, null ) : -			this.currentStyle, -		newStyle = {}, -		key, -		len; - -	// webkit enumerates style porperties -	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { -		len = style.length; -		while ( len-- ) { -			key = style[ len ]; -			if ( typeof style[ key ] === "string" ) { -				newStyle[ $.camelCase( key ) ] = style[ key ]; -			} -		} -	} else { -		for ( key in style ) { -			if ( typeof style[ key ] === "string" ) { -				newStyle[ key ] = style[ key ]; -			} -		} -	} - -	return newStyle; -} - - -function styleDifference( oldStyle, newStyle ) { -	var diff = {}, -		name, value; - -	for ( name in newStyle ) { -		value = newStyle[ name ]; -		if ( oldStyle[ name ] !== value ) { -			if ( !shorthandStyles[ name ] ) { -				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { -					diff[ name ] = value; -				} -			} -		} -	} - -	return diff; -} - -$.effects.animateClass = function( value, duration, easing, callback ) { -	var o = $.speed( duration, easing, callback ); - -	return this.queue( function() { -		var animated = $( this ), -			baseClass = animated.attr( "class" ) || "", -			applyClassChange, -			allAnimations = o.children ? animated.find( "*" ).andSelf() : animated; - -		// map the animated objects to store the original styles. -		allAnimations = allAnimations.map(function() { -			var el = $( this ); -			return { -				el: el, -				start: getElementStyles.call( this ) -			}; -		}); - -		// apply class change -		applyClassChange = function() { -			$.each( classAnimationActions, function(i, action) { -				if ( value[ action ] ) { -					animated[ action + "Class" ]( value[ action ] ); -				} -			}); -		}; -		applyClassChange(); - -		// map all animated objects again - calculate new styles and diff -		allAnimations = allAnimations.map(function() { -			this.end = getElementStyles.call( this.el[ 0 ] ); -			this.diff = styleDifference( this.start, this.end ); -			return this; -		}); - -		// apply original class -		animated.attr( "class", baseClass ); - -		// map all animated objects again - this time collecting a promise -		allAnimations = allAnimations.map(function() { -			var styleInfo = this, -				dfd = $.Deferred(), -				opts = jQuery.extend({}, o, { -					queue: false, -					complete: function() { -						dfd.resolve( styleInfo ); -					} -				}); - -			this.el.animate( this.diff, opts ); -			return dfd.promise(); -		}); - -		// once all animations have completed: -		$.when.apply( $, allAnimations.get() ).done(function() { - -			// set the final class -			applyClassChange(); - -			// for each animated element, -			// clear all css properties that were animated -			$.each( arguments, function() { -				var el = this.el; -				$.each( this.diff, function(key) { -					el.css( key, '' ); -				}); -			}); - -			// this is guarnteed to be there if you use jQuery.speed() -			// it also handles dequeuing the next anim... -			o.complete.call( animated[ 0 ] ); -		}); -	}); -}; - -$.fn.extend({ -	_addClass: $.fn.addClass, -	addClass: function( classNames, speed, easing, callback ) { -		return speed ? -			$.effects.animateClass.call( this, -				{ add: classNames }, speed, easing, callback ) : -			this._addClass( classNames ); -	}, - -	_removeClass: $.fn.removeClass, -	removeClass: function( classNames, speed, easing, callback ) { -		return speed ? -			$.effects.animateClass.call( this, -				{ remove: classNames }, speed, easing, callback ) : -			this._removeClass( classNames ); -	}, - -	_toggleClass: $.fn.toggleClass, -	toggleClass: function( classNames, force, speed, easing, callback ) { -		if ( typeof force === "boolean" || force === undefined ) { -			if ( !speed ) { -				// without speed parameter -				return this._toggleClass( classNames, force ); -			} else { -				return $.effects.animateClass.call( this, -					(force ? { add: classNames } : { remove: classNames }), -					speed, easing, callback ); -			} -		} else { -			// without force parameter -			return $.effects.animateClass.call( this, -				{ toggle: classNames }, force, speed, easing ); -		} -	}, - -	switchClass: function( remove, add, speed, easing, callback) { -		return $.effects.animateClass.call( this, { -			add: add, -			remove: remove -		}, speed, easing, callback ); -	} -}); - -})(); - -/******************************************************************************/ -/*********************************** EFFECTS **********************************/ -/******************************************************************************/ - -(function() { - -$.extend( $.effects, { -	version: "1.9.2", - -	// Saves a set of properties in a data storage -	save: function( element, set ) { -		for( var i=0; i < set.length; i++ ) { -			if ( set[ i ] !== null ) { -				element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); -			} -		} -	}, - -	// Restores a set of previously saved properties from a data storage -	restore: function( element, set ) { -		var val, i; -		for( i=0; i < set.length; i++ ) { -			if ( set[ i ] !== null ) { -				val = element.data( dataSpace + set[ i ] ); -				// support: jQuery 1.6.2 -				// http://bugs.jquery.com/ticket/9917 -				// jQuery 1.6.2 incorrectly returns undefined for any falsy value. -				// We can't differentiate between "" and 0 here, so we just assume -				// empty string since it's likely to be a more common value... -				if ( val === undefined ) { -					val = ""; -				} -				element.css( set[ i ], val ); -			} -		} -	}, - -	setMode: function( el, mode ) { -		if (mode === "toggle") { -			mode = el.is( ":hidden" ) ? "show" : "hide"; -		} -		return mode; -	}, - -	// Translates a [top,left] array into a baseline value -	// this should be a little more flexible in the future to handle a string & hash -	getBaseline: function( origin, original ) { -		var y, x; -		switch ( origin[ 0 ] ) { -			case "top": y = 0; break; -			case "middle": y = 0.5; break; -			case "bottom": y = 1; break; -			default: y = origin[ 0 ] / original.height; -		} -		switch ( origin[ 1 ] ) { -			case "left": x = 0; break; -			case "center": x = 0.5; break; -			case "right": x = 1; break; -			default: x = origin[ 1 ] / original.width; -		} -		return { -			x: x, -			y: y -		}; -	}, - -	// Wraps the element around a wrapper that copies position properties -	createWrapper: function( element ) { - -		// if the element is already wrapped, return it -		if ( element.parent().is( ".ui-effects-wrapper" )) { -			return element.parent(); -		} - -		// wrap the element -		var props = { -				width: element.outerWidth(true), -				height: element.outerHeight(true), -				"float": element.css( "float" ) -			}, -			wrapper = $( "<div></div>" ) -				.addClass( "ui-effects-wrapper" ) -				.css({ -					fontSize: "100%", -					background: "transparent", -					border: "none", -					margin: 0, -					padding: 0 -				}), -			// Store the size in case width/height are defined in % - Fixes #5245 -			size = { -				width: element.width(), -				height: element.height() -			}, -			active = document.activeElement; - -		// support: Firefox -		// Firefox incorrectly exposes anonymous content -		// https://bugzilla.mozilla.org/show_bug.cgi?id=561664 -		try { -			active.id; -		} catch( e ) { -			active = document.body; -		} - -		element.wrap( wrapper ); - -		// Fixes #7595 - Elements lose focus when wrapped. -		if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { -			$( active ).focus(); -		} - -		wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element - -		// transfer positioning properties to the wrapper -		if ( element.css( "position" ) === "static" ) { -			wrapper.css({ position: "relative" }); -			element.css({ position: "relative" }); -		} else { -			$.extend( props, { -				position: element.css( "position" ), -				zIndex: element.css( "z-index" ) -			}); -			$.each([ "top", "left", "bottom", "right" ], function(i, pos) { -				props[ pos ] = element.css( pos ); -				if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { -					props[ pos ] = "auto"; -				} -			}); -			element.css({ -				position: "relative", -				top: 0, -				left: 0, -				right: "auto", -				bottom: "auto" -			}); -		} -		element.css(size); - -		return wrapper.css( props ).show(); -	}, - -	removeWrapper: function( element ) { -		var active = document.activeElement; - -		if ( element.parent().is( ".ui-effects-wrapper" ) ) { -			element.parent().replaceWith( element ); - -			// Fixes #7595 - Elements lose focus when wrapped. -			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { -				$( active ).focus(); -			} -		} - - -		return element; -	}, - -	setTransition: function( element, list, factor, value ) { -		value = value || {}; -		$.each( list, function( i, x ) { -			var unit = element.cssUnit( x ); -			if ( unit[ 0 ] > 0 ) { -				value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; -			} -		}); -		return value; -	} -}); - -// return an effect options object for the given parameters: -function _normalizeArguments( effect, options, speed, callback ) { - -	// allow passing all options as the first parameter -	if ( $.isPlainObject( effect ) ) { -		options = effect; -		effect = effect.effect; -	} - -	// convert to an object -	effect = { effect: effect }; - -	// catch (effect, null, ...) -	if ( options == null ) { -		options = {}; -	} - -	// catch (effect, callback) -	if ( $.isFunction( options ) ) { -		callback = options; -		speed = null; -		options = {}; -	} - -	// catch (effect, speed, ?) -	if ( typeof options === "number" || $.fx.speeds[ options ] ) { -		callback = speed; -		speed = options; -		options = {}; -	} - -	// catch (effect, options, callback) -	if ( $.isFunction( speed ) ) { -		callback = speed; -		speed = null; -	} - -	// add options to effect -	if ( options ) { -		$.extend( effect, options ); -	} - -	speed = speed || options.duration; -	effect.duration = $.fx.off ? 0 : -		typeof speed === "number" ? speed : -		speed in $.fx.speeds ? $.fx.speeds[ speed ] : -		$.fx.speeds._default; - -	effect.complete = callback || options.complete; - -	return effect; -} - -function standardSpeed( speed ) { -	// valid standard speeds -	if ( !speed || typeof speed === "number" || $.fx.speeds[ speed ] ) { -		return true; -	} - -	// invalid strings - treat as "normal" speed -	if ( typeof speed === "string" && !$.effects.effect[ speed ] ) { -		// TODO: remove in 2.0 (#7115) -		if ( backCompat && $.effects[ speed ] ) { -			return false; -		} -		return true; -	} - -	return false; -} - -$.fn.extend({ -	effect: function( /* effect, options, speed, callback */ ) { -		var args = _normalizeArguments.apply( this, arguments ), -			mode = args.mode, -			queue = args.queue, -			effectMethod = $.effects.effect[ args.effect ], - -			// DEPRECATED: remove in 2.0 (#7115) -			oldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ]; - -		if ( $.fx.off || !( effectMethod || oldEffectMethod ) ) { -			// delegate to the original method (e.g., .show()) if possible -			if ( mode ) { -				return this[ mode ]( args.duration, args.complete ); -			} else { -				return this.each( function() { -					if ( args.complete ) { -						args.complete.call( this ); -					} -				}); -			} -		} - -		function run( next ) { -			var elem = $( this ), -				complete = args.complete, -				mode = args.mode; - -			function done() { -				if ( $.isFunction( complete ) ) { -					complete.call( elem[0] ); -				} -				if ( $.isFunction( next ) ) { -					next(); -				} -			} - -			// if the element is hiddden and mode is hide, -			// or element is visible and mode is show -			if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { -				done(); -			} else { -				effectMethod.call( elem[0], args, done ); -			} -		} - -		// TODO: remove this check in 2.0, effectMethod will always be true -		if ( effectMethod ) { -			return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); -		} else { -			// DEPRECATED: remove in 2.0 (#7115) -			return oldEffectMethod.call(this, { -				options: args, -				duration: args.duration, -				callback: args.complete, -				mode: args.mode -			}); -		} -	}, - -	_show: $.fn.show, -	show: function( speed ) { -		if ( standardSpeed( speed ) ) { -			return this._show.apply( this, arguments ); -		} else { -			var args = _normalizeArguments.apply( this, arguments ); -			args.mode = "show"; -			return this.effect.call( this, args ); -		} -	}, - -	_hide: $.fn.hide, -	hide: function( speed ) { -		if ( standardSpeed( speed ) ) { -			return this._hide.apply( this, arguments ); -		} else { -			var args = _normalizeArguments.apply( this, arguments ); -			args.mode = "hide"; -			return this.effect.call( this, args ); -		} -	}, - -	// jQuery core overloads toggle and creates _toggle -	__toggle: $.fn.toggle, -	toggle: function( speed ) { -		if ( standardSpeed( speed ) || typeof speed === "boolean" || $.isFunction( speed ) ) { -			return this.__toggle.apply( this, arguments ); -		} else { -			var args = _normalizeArguments.apply( this, arguments ); -			args.mode = "toggle"; -			return this.effect.call( this, args ); -		} -	}, - -	// helper functions -	cssUnit: function(key) { -		var style = this.css( key ), -			val = []; - -		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) { -			if ( style.indexOf( unit ) > 0 ) { -				val = [ parseFloat( style ), unit ]; -			} -		}); -		return val; -	} -}); - -})(); - -/******************************************************************************/ -/*********************************** EASING ***********************************/ -/******************************************************************************/ - -(function() { - -// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) - -var baseEasings = {}; - -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { -	baseEasings[ name ] = function( p ) { -		return Math.pow( p, i + 2 ); -	}; -}); - -$.extend( baseEasings, { -	Sine: function ( p ) { -		return 1 - Math.cos( p * Math.PI / 2 ); -	}, -	Circ: function ( p ) { -		return 1 - Math.sqrt( 1 - p * p ); -	}, -	Elastic: function( p ) { -		return p === 0 || p === 1 ? p : -			-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); -	}, -	Back: function( p ) { -		return p * p * ( 3 * p - 2 ); -	}, -	Bounce: function ( p ) { -		var pow2, -			bounce = 4; - -		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} -		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); -	} -}); - -$.each( baseEasings, function( name, easeIn ) { -	$.easing[ "easeIn" + name ] = easeIn; -	$.easing[ "easeOut" + name ] = function( p ) { -		return 1 - easeIn( 1 - p ); -	}; -	$.easing[ "easeInOut" + name ] = function( p ) { -		return p < 0.5 ? -			easeIn( p * 2 ) / 2 : -			1 - easeIn( p * -2 + 2 ) / 2; -	}; -}); - -})(); - -})(jQuery)); -(function( $, undefined ) { - -var rvertical = /up|down|vertical/, -	rpositivemotion = /up|left|vertical|horizontal/; - -$.effects.effect.blind = function( o, done ) { -	// Create element -	var el = $( this ), -		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], -		mode = $.effects.setMode( el, o.mode || "hide" ), -		direction = o.direction || "up", -		vertical = rvertical.test( direction ), -		ref = vertical ? "height" : "width", -		ref2 = vertical ? "top" : "left", -		motion = rpositivemotion.test( direction ), -		animation = {}, -		show = mode === "show", -		wrapper, distance, margin; - -	// if already wrapped, the wrapper's properties are my property. #6245 -	if ( el.parent().is( ".ui-effects-wrapper" ) ) { -		$.effects.save( el.parent(), props ); -	} else { -		$.effects.save( el, props ); -	} -	el.show(); -	wrapper = $.effects.createWrapper( el ).css({ -		overflow: "hidden" -	}); - -	distance = wrapper[ ref ](); -	margin = parseFloat( wrapper.css( ref2 ) ) || 0; - -	animation[ ref ] = show ? distance : 0; -	if ( !motion ) { -		el -			.css( vertical ? "bottom" : "right", 0 ) -			.css( vertical ? "top" : "left", "auto" ) -			.css({ position: "absolute" }); - -		animation[ ref2 ] = show ? margin : distance + margin; -	} - -	// start at 0 if we are showing -	if ( show ) { -		wrapper.css( ref, 0 ); -		if ( ! motion ) { -			wrapper.css( ref2, margin + distance ); -		} -	} - -	// Animate -	wrapper.animate( animation, { -		duration: o.duration, -		easing: o.easing, -		queue: false, -		complete: function() { -			if ( mode === "hide" ) { -				el.hide(); -			} -			$.effects.restore( el, props ); -			$.effects.removeWrapper( el ); -			done(); -		} -	}); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.bounce = function( o, done ) { -	var el = $( this ), -		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - -		// defaults: -		mode = $.effects.setMode( el, o.mode || "effect" ), -		hide = mode === "hide", -		show = mode === "show", -		direction = o.direction || "up", -		distance = o.distance, -		times = o.times || 5, - -		// number of internal animations -		anims = times * 2 + ( show || hide ? 1 : 0 ), -		speed = o.duration / anims, -		easing = o.easing, - -		// utility: -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left", -		motion = ( direction === "up" || direction === "left" ), -		i, -		upAnim, -		downAnim, - -		// we will need to re-assemble the queue to stack our animations in place -		queue = el.queue(), -		queuelen = queue.length; - -	// Avoid touching opacity to prevent clearType and PNG issues in IE -	if ( show || hide ) { -		props.push( "opacity" ); -	} - -	$.effects.save( el, props ); -	el.show(); -	$.effects.createWrapper( el ); // Create Wrapper - -	// default distance for the BIGGEST bounce is the outer Distance / 3 -	if ( !distance ) { -		distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; -	} - -	if ( show ) { -		downAnim = { opacity: 1 }; -		downAnim[ ref ] = 0; - -		// if we are showing, force opacity 0 and set the initial position -		// then do the "first" animation -		el.css( "opacity", 0 ) -			.css( ref, motion ? -distance * 2 : distance * 2 ) -			.animate( downAnim, speed, easing ); -	} - -	// start at the smallest distance if we are hiding -	if ( hide ) { -		distance = distance / Math.pow( 2, times - 1 ); -	} - -	downAnim = {}; -	downAnim[ ref ] = 0; -	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here -	for ( i = 0; i < times; i++ ) { -		upAnim = {}; -		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - -		el.animate( upAnim, speed, easing ) -			.animate( downAnim, speed, easing ); - -		distance = hide ? distance * 2 : distance / 2; -	} - -	// Last Bounce when Hiding -	if ( hide ) { -		upAnim = { opacity: 0 }; -		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - -		el.animate( upAnim, speed, easing ); -	} - -	el.queue(function() { -		if ( hide ) { -			el.hide(); -		} -		$.effects.restore( el, props ); -		$.effects.removeWrapper( el ); -		done(); -	}); - -	// inject all the animations we just queued to be first in line (after "inprogress") -	if ( queuelen > 1) { -		queue.splice.apply( queue, -			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); -	} -	el.dequeue(); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.clip = function( o, done ) { -	// Create element -	var el = $( this ), -		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], -		mode = $.effects.setMode( el, o.mode || "hide" ), -		show = mode === "show", -		direction = o.direction || "vertical", -		vert = direction === "vertical", -		size = vert ? "height" : "width", -		position = vert ? "top" : "left", -		animation = {}, -		wrapper, animate, distance; - -	// Save & Show -	$.effects.save( el, props ); -	el.show(); - -	// Create Wrapper -	wrapper = $.effects.createWrapper( el ).css({ -		overflow: "hidden" -	}); -	animate = ( el[0].tagName === "IMG" ) ? wrapper : el; -	distance = animate[ size ](); - -	// Shift -	if ( show ) { -		animate.css( size, 0 ); -		animate.css( position, distance / 2 ); -	} - -	// Create Animation Object: -	animation[ size ] = show ? distance : 0; -	animation[ position ] = show ? 0 : distance / 2; - -	// Animate -	animate.animate( animation, { -		queue: false, -		duration: o.duration, -		easing: o.easing, -		complete: function() { -			if ( !show ) { -				el.hide(); -			} -			$.effects.restore( el, props ); -			$.effects.removeWrapper( el ); -			done(); -		} -	}); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.drop = function( o, done ) { - -	var el = $( this ), -		props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ], -		mode = $.effects.setMode( el, o.mode || "hide" ), -		show = mode === "show", -		direction = o.direction || "left", -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left", -		motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg", -		animation = { -			opacity: show ? 1 : 0 -		}, -		distance; - -	// Adjust -	$.effects.save( el, props ); -	el.show(); -	$.effects.createWrapper( el ); - -	distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2; - -	if ( show ) { -		el -			.css( "opacity", 0 ) -			.css( ref, motion === "pos" ? -distance : distance ); -	} - -	// Animation -	animation[ ref ] = ( show ? -		( motion === "pos" ? "+=" : "-=" ) : -		( motion === "pos" ? "-=" : "+=" ) ) + -		distance; - -	// Animate -	el.animate( animation, { -		queue: false, -		duration: o.duration, -		easing: o.easing, -		complete: function() { -			if ( mode === "hide" ) { -				el.hide(); -			} -			$.effects.restore( el, props ); -			$.effects.removeWrapper( el ); -			done(); -		} -	}); -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.explode = function( o, done ) { - -	var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3, -		cells = rows, -		el = $( this ), -		mode = $.effects.setMode( el, o.mode || "hide" ), -		show = mode === "show", - -		// show and then visibility:hidden the element before calculating offset -		offset = el.show().css( "visibility", "hidden" ).offset(), - -		// width and height of a piece -		width = Math.ceil( el.outerWidth() / cells ), -		height = Math.ceil( el.outerHeight() / rows ), -		pieces = [], - -		// loop -		i, j, left, top, mx, my; - -	// children animate complete: -	function childComplete() { -		pieces.push( this ); -		if ( pieces.length === rows * cells ) { -			animComplete(); -		} -	} - -	// clone the element for each row and cell. -	for( i = 0; i < rows ; i++ ) { // ===> -		top = offset.top + i * height; -		my = i - ( rows - 1 ) / 2 ; - -		for( j = 0; j < cells ; j++ ) { // ||| -			left = offset.left + j * width; -			mx = j - ( cells - 1 ) / 2 ; - -			// Create a clone of the now hidden main element that will be absolute positioned -			// within a wrapper div off the -left and -top equal to size of our pieces -			el -				.clone() -				.appendTo( "body" ) -				.wrap( "<div></div>" ) -				.css({ -					position: "absolute", -					visibility: "visible", -					left: -j * width, -					top: -i * height -				}) - -			// select the wrapper - make it overflow: hidden and absolute positioned based on -			// where the original was located +left and +top equal to the size of pieces -				.parent() -				.addClass( "ui-effects-explode" ) -				.css({ -					position: "absolute", -					overflow: "hidden", -					width: width, -					height: height, -					left: left + ( show ? mx * width : 0 ), -					top: top + ( show ? my * height : 0 ), -					opacity: show ? 0 : 1 -				}).animate({ -					left: left + ( show ? 0 : mx * width ), -					top: top + ( show ? 0 : my * height ), -					opacity: show ? 1 : 0 -				}, o.duration || 500, o.easing, childComplete ); -		} -	} - -	function animComplete() { -		el.css({ -			visibility: "visible" -		}); -		$( pieces ).remove(); -		if ( !show ) { -			el.hide(); -		} -		done(); -	} -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.fade = function( o, done ) { -	var el = $( this ), -		mode = $.effects.setMode( el, o.mode || "toggle" ); - -	el.animate({ -		opacity: mode -	}, { -		queue: false, -		duration: o.duration, -		easing: o.easing, -		complete: done -	}); -}; - -})( jQuery ); -(function( $, undefined ) { - -$.effects.effect.fold = function( o, done ) { - -	// Create element -	var el = $( this ), -		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], -		mode = $.effects.setMode( el, o.mode || "hide" ), -		show = mode === "show", -		hide = mode === "hide", -		size = o.size || 15, -		percent = /([0-9]+)%/.exec( size ), -		horizFirst = !!o.horizFirst, -		widthFirst = show !== horizFirst, -		ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], -		duration = o.duration / 2, -		wrapper, distance, -		animation1 = {}, -		animation2 = {}; - -	$.effects.save( el, props ); -	el.show(); - -	// Create Wrapper -	wrapper = $.effects.createWrapper( el ).css({ -		overflow: "hidden" -	}); -	distance = widthFirst ? -		[ wrapper.width(), wrapper.height() ] : -		[ wrapper.height(), wrapper.width() ]; - -	if ( percent ) { -		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; -	} -	if ( show ) { -		wrapper.css( horizFirst ? { -			height: 0, -			width: size -		} : { -			height: size, -			width: 0 -		}); -	} - -	// Animation -	animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; -	animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; - -	// Animate -	wrapper -		.animate( animation1, duration, o.easing ) -		.animate( animation2, duration, o.easing, function() { -			if ( hide ) { -				el.hide(); -			} -			$.effects.restore( el, props ); -			$.effects.removeWrapper( el ); -			done(); -		}); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.highlight = function( o, done ) { -	var elem = $( this ), -		props = [ "backgroundImage", "backgroundColor", "opacity" ], -		mode = $.effects.setMode( elem, o.mode || "show" ), -		animation = { -			backgroundColor: elem.css( "backgroundColor" ) -		}; - -	if (mode === "hide") { -		animation.opacity = 0; -	} - -	$.effects.save( elem, props ); - -	elem -		.show() -		.css({ -			backgroundImage: "none", -			backgroundColor: o.color || "#ffff99" -		}) -		.animate( animation, { -			queue: false, -			duration: o.duration, -			easing: o.easing, -			complete: function() { -				if ( mode === "hide" ) { -					elem.hide(); -				} -				$.effects.restore( elem, props ); -				done(); -			} -		}); -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.pulsate = function( o, done ) { -	var elem = $( this ), -		mode = $.effects.setMode( elem, o.mode || "show" ), -		show = mode === "show", -		hide = mode === "hide", -		showhide = ( show || mode === "hide" ), - -		// showing or hiding leaves of the "last" animation -		anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), -		duration = o.duration / anims, -		animateTo = 0, -		queue = elem.queue(), -		queuelen = queue.length, -		i; - -	if ( show || !elem.is(":visible")) { -		elem.css( "opacity", 0 ).show(); -		animateTo = 1; -	} - -	// anims - 1 opacity "toggles" -	for ( i = 1; i < anims; i++ ) { -		elem.animate({ -			opacity: animateTo -		}, duration, o.easing ); -		animateTo = 1 - animateTo; -	} - -	elem.animate({ -		opacity: animateTo -	}, duration, o.easing); - -	elem.queue(function() { -		if ( hide ) { -			elem.hide(); -		} -		done(); -	}); - -	// We just queued up "anims" animations, we need to put them next in the queue -	if ( queuelen > 1 ) { -		queue.splice.apply( queue, -			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); -	} -	elem.dequeue(); -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.puff = function( o, done ) { -	var elem = $( this ), -		mode = $.effects.setMode( elem, o.mode || "hide" ), -		hide = mode === "hide", -		percent = parseInt( o.percent, 10 ) || 150, -		factor = percent / 100, -		original = { -			height: elem.height(), -			width: elem.width(), -			outerHeight: elem.outerHeight(), -			outerWidth: elem.outerWidth() -		}; - -	$.extend( o, { -		effect: "scale", -		queue: false, -		fade: true, -		mode: mode, -		complete: done, -		percent: hide ? percent : 100, -		from: hide ? -			original : -			{ -				height: original.height * factor, -				width: original.width * factor, -				outerHeight: original.outerHeight * factor, -				outerWidth: original.outerWidth * factor -			} -	}); - -	elem.effect( o ); -}; - -$.effects.effect.scale = function( o, done ) { - -	// Create element -	var el = $( this ), -		options = $.extend( true, {}, o ), -		mode = $.effects.setMode( el, o.mode || "effect" ), -		percent = parseInt( o.percent, 10 ) || -			( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), -		direction = o.direction || "both", -		origin = o.origin, -		original = { -			height: el.height(), -			width: el.width(), -			outerHeight: el.outerHeight(), -			outerWidth: el.outerWidth() -		}, -		factor = { -			y: direction !== "horizontal" ? (percent / 100) : 1, -			x: direction !== "vertical" ? (percent / 100) : 1 -		}; - -	// We are going to pass this effect to the size effect: -	options.effect = "size"; -	options.queue = false; -	options.complete = done; - -	// Set default origin and restore for show/hide -	if ( mode !== "effect" ) { -		options.origin = origin || ["middle","center"]; -		options.restore = true; -	} - -	options.from = o.from || ( mode === "show" ? { -		height: 0, -		width: 0, -		outerHeight: 0, -		outerWidth: 0 -	} : original ); -	options.to = { -		height: original.height * factor.y, -		width: original.width * factor.x, -		outerHeight: original.outerHeight * factor.y, -		outerWidth: original.outerWidth * factor.x -	}; - -	// Fade option to support puff -	if ( options.fade ) { -		if ( mode === "show" ) { -			options.from.opacity = 0; -			options.to.opacity = 1; -		} -		if ( mode === "hide" ) { -			options.from.opacity = 1; -			options.to.opacity = 0; -		} -	} - -	// Animate -	el.effect( options ); - -}; - -$.effects.effect.size = function( o, done ) { - -	// Create element -	var original, baseline, factor, -		el = $( this ), -		props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], - -		// Always restore -		props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], - -		// Copy for children -		props2 = [ "width", "height", "overflow" ], -		cProps = [ "fontSize" ], -		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], -		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], - -		// Set options -		mode = $.effects.setMode( el, o.mode || "effect" ), -		restore = o.restore || mode !== "effect", -		scale = o.scale || "both", -		origin = o.origin || [ "middle", "center" ], -		position = el.css( "position" ), -		props = restore ? props0 : props1, -		zero = { -			height: 0, -			width: 0, -			outerHeight: 0, -			outerWidth: 0 -		}; - -	if ( mode === "show" ) { -		el.show(); -	} -	original = { -		height: el.height(), -		width: el.width(), -		outerHeight: el.outerHeight(), -		outerWidth: el.outerWidth() -	}; - -	if ( o.mode === "toggle" && mode === "show" ) { -		el.from = o.to || zero; -		el.to = o.from || original; -	} else { -		el.from = o.from || ( mode === "show" ? zero : original ); -		el.to = o.to || ( mode === "hide" ? zero : original ); -	} - -	// Set scaling factor -	factor = { -		from: { -			y: el.from.height / original.height, -			x: el.from.width / original.width -		}, -		to: { -			y: el.to.height / original.height, -			x: el.to.width / original.width -		} -	}; - -	// Scale the css box -	if ( scale === "box" || scale === "both" ) { - -		// Vertical props scaling -		if ( factor.from.y !== factor.to.y ) { -			props = props.concat( vProps ); -			el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); -			el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); -		} - -		// Horizontal props scaling -		if ( factor.from.x !== factor.to.x ) { -			props = props.concat( hProps ); -			el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); -			el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); -		} -	} - -	// Scale the content -	if ( scale === "content" || scale === "both" ) { - -		// Vertical props scaling -		if ( factor.from.y !== factor.to.y ) { -			props = props.concat( cProps ).concat( props2 ); -			el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); -			el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); -		} -	} - -	$.effects.save( el, props ); -	el.show(); -	$.effects.createWrapper( el ); -	el.css( "overflow", "hidden" ).css( el.from ); - -	// Adjust -	if (origin) { // Calculate baseline shifts -		baseline = $.effects.getBaseline( origin, original ); -		el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; -		el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; -		el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; -		el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; -	} -	el.css( el.from ); // set top & left - -	// Animate -	if ( scale === "content" || scale === "both" ) { // Scale the children - -		// Add margins/font-size -		vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); -		hProps = hProps.concat([ "marginLeft", "marginRight" ]); -		props2 = props0.concat(vProps).concat(hProps); - -		el.find( "*[width]" ).each( function(){ -			var child = $( this ), -				c_original = { -					height: child.height(), -					width: child.width(), -					outerHeight: child.outerHeight(), -					outerWidth: child.outerWidth() -				}; -			if (restore) { -				$.effects.save(child, props2); -			} - -			child.from = { -				height: c_original.height * factor.from.y, -				width: c_original.width * factor.from.x, -				outerHeight: c_original.outerHeight * factor.from.y, -				outerWidth: c_original.outerWidth * factor.from.x -			}; -			child.to = { -				height: c_original.height * factor.to.y, -				width: c_original.width * factor.to.x, -				outerHeight: c_original.height * factor.to.y, -				outerWidth: c_original.width * factor.to.x -			}; - -			// Vertical props scaling -			if ( factor.from.y !== factor.to.y ) { -				child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); -				child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); -			} - -			// Horizontal props scaling -			if ( factor.from.x !== factor.to.x ) { -				child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); -				child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); -			} - -			// Animate children -			child.css( child.from ); -			child.animate( child.to, o.duration, o.easing, function() { - -				// Restore children -				if ( restore ) { -					$.effects.restore( child, props2 ); -				} -			}); -		}); -	} - -	// Animate -	el.animate( el.to, { -		queue: false, -		duration: o.duration, -		easing: o.easing, -		complete: function() { -			if ( el.to.opacity === 0 ) { -				el.css( "opacity", el.from.opacity ); -			} -			if( mode === "hide" ) { -				el.hide(); -			} -			$.effects.restore( el, props ); -			if ( !restore ) { - -				// we need to calculate our new positioning based on the scaling -				if ( position === "static" ) { -					el.css({ -						position: "relative", -						top: el.to.top, -						left: el.to.left -					}); -				} else { -					$.each([ "top", "left" ], function( idx, pos ) { -						el.css( pos, function( _, str ) { -							var val = parseInt( str, 10 ), -								toRef = idx ? el.to.left : el.to.top; - -							// if original was "auto", recalculate the new value from wrapper -							if ( str === "auto" ) { -								return toRef + "px"; -							} - -							return val + toRef + "px"; -						}); -					}); -				} -			} - -			$.effects.removeWrapper( el ); -			done(); -		} -	}); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.shake = function( o, done ) { - -	var el = $( this ), -		props = [ "position", "top", "bottom", "left", "right", "height", "width" ], -		mode = $.effects.setMode( el, o.mode || "effect" ), -		direction = o.direction || "left", -		distance = o.distance || 20, -		times = o.times || 3, -		anims = times * 2 + 1, -		speed = Math.round(o.duration/anims), -		ref = (direction === "up" || direction === "down") ? "top" : "left", -		positiveMotion = (direction === "up" || direction === "left"), -		animation = {}, -		animation1 = {}, -		animation2 = {}, -		i, - -		// we will need to re-assemble the queue to stack our animations in place -		queue = el.queue(), -		queuelen = queue.length; - -	$.effects.save( el, props ); -	el.show(); -	$.effects.createWrapper( el ); - -	// Animation -	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; -	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; -	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; - -	// Animate -	el.animate( animation, speed, o.easing ); - -	// Shakes -	for ( i = 1; i < times; i++ ) { -		el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing ); -	} -	el -		.animate( animation1, speed, o.easing ) -		.animate( animation, speed / 2, o.easing ) -		.queue(function() { -			if ( mode === "hide" ) { -				el.hide(); -			} -			$.effects.restore( el, props ); -			$.effects.removeWrapper( el ); -			done(); -		}); - -	// inject all the animations we just queued to be first in line (after "inprogress") -	if ( queuelen > 1) { -		queue.splice.apply( queue, -			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); -	} -	el.dequeue(); - -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.slide = function( o, done ) { - -	// Create element -	var el = $( this ), -		props = [ "position", "top", "bottom", "left", "right", "width", "height" ], -		mode = $.effects.setMode( el, o.mode || "show" ), -		show = mode === "show", -		direction = o.direction || "left", -		ref = (direction === "up" || direction === "down") ? "top" : "left", -		positiveMotion = (direction === "up" || direction === "left"), -		distance, -		animation = {}; - -	// Adjust -	$.effects.save( el, props ); -	el.show(); -	distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); - -	$.effects.createWrapper( el ).css({ -		overflow: "hidden" -	}); - -	if ( show ) { -		el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); -	} - -	// Animation -	animation[ ref ] = ( show ? -		( positiveMotion ? "+=" : "-=") : -		( positiveMotion ? "-=" : "+=")) + -		distance; - -	// Animate -	el.animate( animation, { -		queue: false, -		duration: o.duration, -		easing: o.easing, -		complete: function() { -			if ( mode === "hide" ) { -				el.hide(); -			} -			$.effects.restore( el, props ); -			$.effects.removeWrapper( el ); -			done(); -		} -	}); -}; - -})(jQuery); -(function( $, undefined ) { - -$.effects.effect.transfer = function( o, done ) { -	var elem = $( this ), -		target = $( o.to ), -		targetFixed = target.css( "position" ) === "fixed", -		body = $("body"), -		fixTop = targetFixed ? body.scrollTop() : 0, -		fixLeft = targetFixed ? body.scrollLeft() : 0, -		endPosition = target.offset(), -		animation = { -			top: endPosition.top - fixTop , -			left: endPosition.left - fixLeft , -			height: target.innerHeight(), -			width: target.innerWidth() -		}, -		startPosition = elem.offset(), -		transfer = $( '<div class="ui-effects-transfer"></div>' ) -			.appendTo( document.body ) -			.addClass( o.className ) -			.css({ -				top: startPosition.top - fixTop , -				left: startPosition.left - fixLeft , -				height: elem.innerHeight(), -				width: elem.innerWidth(), -				position: targetFixed ? "fixed" : "absolute" -			}) -			.animate( animation, o.duration, o.easing, function() { -				transfer.remove(); -				done(); -			}); -}; - -})(jQuery); diff --git a/framework/Web/Javascripts/source/jquery/jquery-ui.min.js b/framework/Web/Javascripts/source/jquery/jquery-ui.min.js index 9b3b84de..6afd6154 100755..100644 --- a/framework/Web/Javascripts/source/jquery/jquery-ui.min.js +++ b/framework/Web/Javascripts/source/jquery/jquery-ui.min.js @@ -1,6 +1,12 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 +/*! jQuery UI - v1.10.4 - 2014-01-17  * http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.slider.js, jquery.ui.sortable.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js -* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */ - -(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},contains:e.contains,hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e<t+n},isOver:function(t,n,r,i,s,o){return e.ui.isOverAxis(t,r,s)&&e.ui.isOverAxis(n,i,o)}})})(jQuery);(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a=t.split(".")[0];t=t.split(".")[1],i=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[a]=e[a]||{},s=e[a][t],o=e[a][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,i){e.isFunction(i)&&(r[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},r=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=r,s=i.apply(this,arguments),this._super=t,this._superApply=n,s}}())}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},r,{constructor:o,namespace:a,widgetName:t,widgetBaseClass:i,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),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.widgetName).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(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),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,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\w+)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,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,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&(e.effects.effect[u]||e.uiBackCompat!==!1&&e.effects[u])?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);(function(e,t){var n=!1;e(document).mouseup(function(e){n=!1}),e.widget("ui.mouse",{version:"1.9.2",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(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return!e.ui.ie||document.documentMode>=9||!!t.button?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):this._mouseUp(t)},_mouseUp:function(t){return e(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)),!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(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,d,v,m,g=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=g[0],E=(t.collision||"flip").split(" "),S={};return w.nodeType===9?(l=g.width(),d=g.height(),v={top:0,left:0}):e.isWindow(w)?(l=g.width(),d=g.height(),v={top:g.scrollTop(),left:g.scrollLeft()}):w.preventDefault?(t.at="left top",l=d=0,v={top:w.pageY,left:w.pageX}):(l=g.outerWidth(),d=g.outerHeight(),v=g.offset()),m=e.extend({},v),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),S[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),E.length===1&&(E[1]=E[0]),t.at[0]==="right"?m.left+=l:t.at[0]==="center"&&(m.left+=l/2),t.at[1]==="bottom"?m.top+=d:t.at[1]==="center"&&(m.top+=d/2),n=h(S.at,l,d),m.left+=n[0],m.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),w=p(this,"marginLeft"),x=p(this,"marginTop"),T=f+w+p(this,"marginRight")+b.width,N=c+x+p(this,"marginBottom")+b.height,C=e.extend({},m),k=h(S.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:w,marginTop:x},e.each(["left","top"],function(r,i){e.ui.position[E[r]]&&e.ui.position[E[r]][i](C,{targetWidth:l,targetHeight:d,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:y,elem:a})}),e.fn.bgiframe&&a.bgiframe(),t.using&&(u=function(e){var n=v.left-C.left,s=n+l-f,o=v.top-C.top,u=o+d-c,h={target:{element:g,left:v.left,top:v.top,width:l,height:d},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),d<c&&i(o+u)<d&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},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,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.9.2",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},_create:function(){var t=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n),r=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset"),this.headers=this.element.find(r.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this._hoverable(this.headers),this._focusable(this.headers),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(),!r.collapsible&&(r.active===!1||r.active==null)&&(r.active=0),r.active<0&&(r.active+=this.headers.length),this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this._createIcons(),this.refresh(),this.element.attr("role","tablist"),this.headers.attr("role","tab").each(function(n){var r=e(this),i=r.attr("id"),s=r.next(),o=s.attr("id");i||(i=t+"-header-"+n,r.attr("id",i)),o||(o=t+"-panel-"+n,s.attr("id",o)),r.attr("aria-controls",o),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._on(this.headers,{keydown:"_keydown"}),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._setupEvents(r.event)},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").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-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t,n,r=this.options.heightStyle,i=this.element.parent();r==="fill"?(e.support.minHeight||(n=i.css("overflow"),i.css("overflow","hidden")),t=i.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),n&&i.css("overflow",n),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")):r==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={};if(!t)return;e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._on(this.headers,n)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.uiBackCompat!==!1&&(function(e,t){e.extend(t.options,{navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}});var n=t._create;t._create=function(){if(this.options.navigation){var t=this,r=this.element.find(this.options.header),i=r.next(),s=r.add(i).find("a").filter(this.options.navigationFilter)[0];s&&r.add(i).each(function(n){if(e.contains(this,s))return t.options.active=Math.floor(n/2),!1})}n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{heightStyle:null,autoHeight:!0,clearStyle:!1,fillSpace:!1});var n=t._create,r=t._setOption;e.extend(t,{_create:function(){this.options.heightStyle=this.options.heightStyle||this._mergeHeightStyle(),n.call(this)},_setOption:function(e){if(e==="autoHeight"||e==="clearStyle"||e==="fillSpace")this.options.heightStyle=this._mergeHeightStyle();r.apply(this,arguments)},_mergeHeightStyle:function(){var e=this.options;if(e.fillSpace)return"fill";if(e.clearStyle)return"content";if(e.autoHeight)return"auto"}})}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options.icons,{activeHeader:null,headerSelected:"ui-icon-triangle-1-s"});var n=t._createIcons;t._createIcons=function(){this.options.icons&&(this.options.icons.activeHeader=this.options.icons.activeHeader||this.options.icons.headerSelected),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){t.activate=t._activate;var n=t._findActive;t._findActive=function(e){return e===-1&&(e=!1),e&&typeof e!="number"&&(e=this.headers.index(this.headers.filter(e)),e===-1&&(e=!1)),n.call(this,e)}}(jQuery,jQuery.ui.accordion.prototype),jQuery.ui.accordion.prototype.resize=jQuery.ui.accordion.prototype.refresh,function(e,t){e.extend(t.options,{change:null,changestart:null});var n=t._trigger;t._trigger=function(e,t,r){var i=n.apply(this,arguments);return i?(e==="beforeActivate"?i=n.call(this,"changestart",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel}):e==="activate"&&(i=n.call(this,"change",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel})),i):!1}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{animate:null,animated:"slide"});var n=t._create;t._create=function(){var e=this.options;e.animate===null&&(e.animated?e.animated==="slide"?e.animate=300:e.animated==="bounceslide"?e.animate={duration:200,down:{easing:"easeOutBounce",duration:1e3}}:e.animate=e.animated:e.animate=!1),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype))})(jQuery);(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.9.2",defaultElement:"<input>",options:{appendTo:"body",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},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item")||n.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this.document.find(t||"body")[0]),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(r?i=e(r).find("[name='"+n+"']"):i=e("[name='"+n+"']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.9.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c=a?"":"ui-state-active",h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).toggleClass("ui-state-active"),t.buttonElement.attr("aria-pressed",t.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+r.primary+"'></span>"),r.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+r.secondary+"'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.9.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var n in t)if(t[n]==null||t[n]==undefined)e[n]=t[n];return e}$.extend($.ui,{datepicker:{version:"1.9.2"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var n=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(e,t){var n=$(e);t.append=$([]),t.trigger=$([]);if(n.hasClass(this.markerClassName))return;this._attachments(n,t),n.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e)},_attachments:function(e,t){var n=this._get(t,"appendText"),r=this._get(t,"isRTL");t.append&&t.append.remove(),n&&(t.append=$('<span class="'+this._appendClass+'">'+n+"</span>"),e[r?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var i=this._get(t,"showOn");(i=="focus"||i=="both")&&e.focus(this._showDatepicker);if(i=="button"||i=="both"){var s=this._get(t,"buttonText"),o=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:o,alt:s,title:s}):$('<button type="button"></button>').addClass(this._triggerClass).html(o==""?s:$("<img/>").attr({src:o,alt:s,title:s}))),e[r?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),n=this._get(e,"dateFormat");if(n.match(/[DM]/)){var r=function(e){var t=0,n=0;for(var r=0;r<e.length;r++)e[r].length>t&&(t=e[r].length,n=r);return n};t.setMonth(r(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(r(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var n=$(e);if(n.hasClass(this.markerClassName))return;n.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block")},_dialogDatepicker:function(e,t,n,r,i){var s=this._dialogInst;if(!s){this.uuid+=1;var o="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+o+'" style="position: absolute; top: -100px; width: 0px;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),s=this._dialogInst=this._newInst(this._dialogInput,!1),s.settings={},$.data(this._dialogInput[0],PROP_NAME,s)}extendRemove(s.settings,r||{}),t=t&&t.constructor==Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=i?i.length?i:[i.pageX,i.pageY]:null;if(!this._pos){var u=document.documentElement.clientWidth,a=document.documentElement.clientHeight,f=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[u/2-100+f,a/2-150+l]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,s),this},_destroyDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),r=="input"?(n.append.remove(),n.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r=="div"||r=="span")&&t.removeClass(this.markerClassName).empty()},_enableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})},_disableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,n){var r=this._getInst(e);if(arguments.length==2&&typeof t=="string")return t=="defaults"?$.extend({},$.datepicker._defaults):r?t=="all"?$.extend({},r.settings):this._get(r,t):null;var i=t||{};typeof t=="string"&&(i={},i[t]=n);if(r){this._curInst==r&&this._hideDatepicker();var s=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(r,"min"),u=this._getMinMaxDate(r,"max");extendRemove(r.settings,i),o!==null&&i.dateFormat!==undefined&&i.minDate===undefined&&(r.settings.minDate=this._formatDate(r,o)),u!==null&&i.dateFormat!==undefined&&i.maxDate===undefined&&(r.settings.maxDate=this._formatDate(r,u)),this._attachments($(e),r),this._autoSize(r),this._setDate(r,s),this._updateAlternate(r),this._updateDatepicker(r)}},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),n=!0,r=t.dpDiv.is(".ui-datepicker-rtl");t._keyEvent=!0;if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),n=!1;break;case 13:var i=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);i[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,i[0]);var s=$.datepicker._get(t,"onSelect");if(s){var o=$.datepicker._formatDate(t);s.apply(t.input?t.input[0]:null,[o,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else e.keyCode==36&&e.ctrlKey?$.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||r<" "||!n||n.indexOf(r)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var n=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));n&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(r){$.datepicker.log(r)}return!0},_showDatepicker:function(e){e=e.target||e,e.nodeName.toLowerCase()!="input"&&(e=$("input",e.parentNode)[0]);if($.datepicker._isDisabledDatepicker(e)||$.datepicker._lastInput==e)return;var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var n=$.datepicker._get(t,"beforeShow"),r=n?n.apply(e,[e,t]):{};if(r===!1)return;extendRemove(t.settings,r),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var i=!1;$(e).parents().each(function(){return i|=$(this).css("position")=="fixed",!i});var s={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),s=$.datepicker._checkOffset(t,s,i),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"});if(!t.inline){var o=$.datepicker._get(t,"showAnim"),u=$.datepicker._get(t,"duration"),a=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(!!e.length){var n=$.datepicker._getBorders(t.dpDiv);e.css({left:-n[0],top:-n[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[o]||$.effects[o])?t.dpDiv.show(o,$.datepicker._get(t,"showOptions"),u,a):t.dpDiv[o||"show"](o?u:null,a),(!o||!u)&&a(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var n=e.dpDiv.find("iframe.ui-datepicker-cover");!n.length||n.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var r=this._getNumberOfMonths(e),i=r[1],s=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",s*i+"em"),e.dpDiv[(r[0]!=1||r[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus();if(e.yearshtml){var o=e.yearshtml;setTimeout(function(){o===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),o=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,n){var r=e.dpDiv.outerWidth(),i=e.dpDiv.outerHeight(),s=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,u=document.documentElement.clientWidth+(n?0:$(document).scrollLeft()),a=document.documentElement.clientHeight+(n?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?r-s:0,t.left-=n&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=n&&t.top==e.input.offset().top+o?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+r>u&&u>r?Math.abs(t.left+r-u):0),t.top-=Math.min(t.top,t.top+i>a&&a>i?Math.abs(i+o):0),t},_findPos:function(e){var t=this._getInst(e),n=this._get(t,"isRTL");while(e&&(e.type=="hidden"||e.nodeType!=1||$.expr.filters.hidden(e)))e=e[n?"previousSibling":"nextSibling"];var r=$(e).offset();return[r.left,r.top]},_hideDatepicker:function(e){var t=this._curInst;if(!t||e&&t!=$.data(e,PROP_NAME))return;if(this._datepickerShowing){var n=this._get(t,"showAnim"),r=this._get(t,"duration"),i=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[n]||$.effects[n])?t.dpDiv.hide(n,$.datepicker._get(t,"showOptions"),r,i):t.dpDiv[n=="slideDown"?"slideUp":n=="fadeIn"?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1;var s=this._get(t,"onClose");s&&s.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(!$.datepicker._curInst)return;var t=$(e.target),n=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&t.parents("#"+$.datepicker._mainDivId).length==0&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=n)&&$.datepicker._hideDatepicker()},_adjustDate:function(e,t,n){var r=$(e),i=this._getInst(r[0]);if(this._isDisabledDatepicker(r[0]))return;this._adjustInstDate(i,t+(n=="M"?this._get(i,"showCurrentAtPos"):0),n),this._updateDatepicker(i)},_gotoToday:function(e){var t=$(e),n=this._getInst(t[0]);if(this._get(n,"gotoCurrent")&&n.currentDay)n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear;else{var r=new Date;n.selectedDay=r.getDate(),n.drawMonth=n.selectedMonth=r.getMonth(),n.drawYear=n.selectedYear=r.getFullYear()}this._notifyChange(n),this._adjustDate(t)},_selectMonthYear:function(e,t,n){var r=$(e),i=this._getInst(r[0]);i["selected"+(n=="M"?"Month":"Year")]=i["draw"+(n=="M"?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(r)},_selectDay:function(e,t,n,r){var i=$(e);if($(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(i[0]))return;var s=this._getInst(i[0]);s.selectedDay=s.currentDay=$("a",r).html(),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=n,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(e){var t=$(e),n=this._getInst(t[0]);this._selectDate(t,"")},_selectDate:function(e,t){var n=$(e),r=this._getInst(n[0]);t=t!=null?t:this._formatDate(r),r.input&&r.input.val(t),this._updateAlternate(r);var i=this._get(r,"onSelect");i?i.apply(r.input?r.input[0]:null,[t,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],typeof r.input[0]!="object"&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var n=this._get(e,"altFormat")||this._get(e,"dateFormat"),r=this._getDate(e),i=this.formatDate(n,r,this._getFormatConfig(e));$(t).each(function(){$(this).val(i)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1},parseDate:function(e,t,n){if(e==null||t==null)throw"Invalid arguments";t=typeof t=="object"?t.toString():t+"";if(t=="")return null;var r=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff;r=typeof r!="string"?r:(new Date).getFullYear()%100+parseInt(r,10);var i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=-1,f=-1,l=-1,c=-1,h=!1,p=function(t){var n=y+1<e.length&&e.charAt(y+1)==t;return n&&y++,n},d=function(e){var n=p(e),r=e=="@"?14:e=="!"?20:e=="y"&&n?4:e=="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=t.substring(g).match(i);if(!s)throw"Missing number at position "+g;return g+=s[0].length,parseInt(s[0],10)},v=function(e,n,r){var i=$.map(p(e)?r:n,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),s=-1;$.each(i,function(e,n){var r=n[1];if(t.substr(g,r.length).toLowerCase()==r.toLowerCase())return s=n[0],g+=r.length,!1});if(s!=-1)return s+1;throw"Unknown name at position "+g},m=function(){if(t.charAt(g)!=e.charAt(y))throw"Unexpected literal at position "+g;g++},g=0;for(var y=0;y<e.length;y++)if(h)e.charAt(y)=="'"&&!p("'")?h=!1:m();else switch(e.charAt(y)){case"d":l=d("d");break;case"D":v("D",i,s);break;case"o":c=d("o");break;case"m":f=d("m");break;case"M":f=v("M",o,u);break;case"y":a=d("y");break;case"@":var b=new Date(d("@"));a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"!":var b=new Date((d("!")-this._ticksTo1970)/1e4);a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"'":p("'")?m():h=!0;break;default:m()}if(g<t.length){var w=t.substr(g);if(!/^\s+/.test(w))throw"Extra/unparsed characters found in date: "+w}a==-1?a=(new Date).getFullYear():a<100&&(a+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a<=r?0:-100));if(c>-1){f=1,l=c;do{var E=this._getDaysInMonth(a,f-1);if(l<=E)break;f++,l-=E}while(!0)}var b=this._daylightSavingAdjust(new Date(a,f-1,l));if(b.getFullYear()!=a||b.getMonth()+1!=f||b.getDate()!=l)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,i=(n?n.dayNames:null)||this._defaults.dayNames,s=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,u=function(t){var n=h+1<e.length&&e.charAt(h+1)==t;return n&&h++,n},a=function(e,t,n){var r=""+t;if(u(e))while(r.length<n)r="0"+r;return r},f=function(e,t,n,r){return u(e)?r[t]:n[t]},l="",c=!1;if(t)for(var h=0;h<e.length;h++)if(c)e.charAt(h)=="'"&&!u("'")?c=!1:l+=e.charAt(h);else switch(e.charAt(h)){case"d":l+=a("d",t.getDate(),2);break;case"D":l+=f("D",t.getDay(),r,i);break;case"o":l+=a("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":l+=a("m",t.getMonth()+1,2);break;case"M":l+=f("M",t.getMonth(),s,o);break;case"y":l+=u("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=t.getTime()*1e4+this._ticksTo1970;break;case"'":u("'")?l+="'":c=!0;break;default:l+=e.charAt(h)}return l},_possibleChars:function(e){var t="",n=!1,r=function(t){var n=i+1<e.length&&e.charAt(i+1)==t;return n&&i++,n};for(var i=0;i<e.length;i++)if(n)e.charAt(i)=="'"&&!r("'")?n=!1:t+=e.charAt(i);else switch(e.charAt(i)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":r("'")?t+="'":n=!0;break;default:t+=e.charAt(i)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()==e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i,s;i=s=this._getDefaultDate(e);var o=this._getFormatConfig(e);try{i=this.parseDate(n,r,o)||s}catch(u){this.log(u),r=t?"":r}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=r?i.getDate():0,e.currentMonth=r?i.getMonth():0,e.currentYear=r?i.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,n){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},i=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(n){}var r=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,i=r.getFullYear(),s=r.getMonth(),o=r.getDate(),u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=u.exec(t);while(a){switch(a[2]||"d"){case"d":case"D":o+=parseInt(a[1],10);break;case"w":case"W":o+=parseInt(a[1],10)*7;break;case"m":case"M":s+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s))}a=u.exec(t)}return new Date(i,s,o)},s=t==null||t===""?n:typeof t=="string"?i(t):typeof t=="number"?isNaN(t)?n:r(t):new Date(t.getTime());return s=s&&s.toString()=="Invalid Date"?n:s,s&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!=e.selectedMonth||s!=e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()==""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(n)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var n=this._get(e,"isRTL"),r=this._get(e,"showButtonPanel"),i=this._get(e,"hideIfNoPrevNext"),s=this._get(e,"navigationAsDateFormat"),o=this._getNumberOfMonths(e),u=this._get(e,"showCurrentAtPos"),a=this._get(e,"stepMonths"),f=o[0]!=1||o[1]!=1,l=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),c=this._getMinMaxDate(e,"min"),h=this._getMinMaxDate(e,"max"),p=e.drawMonth-u,d=e.drawYear;p<0&&(p+=12,d--);if(h){var v=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth()-o[0]*o[1]+1,h.getDate()));v=c&&v<c?c:v;while(this._daylightSavingAdjust(new Date(d,p,1))>v)p--,p<0&&(p=11,d--)}e.drawMonth=p,e.drawYear=d;var m=this._get(e,"prevText");m=s?this.formatDate(m,this._daylightSavingAdjust(new Date(d,p-a,1)),this._getFormatConfig(e)):m;var g=this._canAdjustMonth(e,-1,d,p)?'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>":i?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>",y=this._get(e,"nextText");y=s?this.formatDate(y,this._daylightSavingAdjust(new Date(d,p+a,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,d,p)?'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>":i?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>",w=this._get(e,"currentText"),E=this._get(e,"gotoCurrent")&&e.currentDay?l:t;w=s?this.formatDate(w,E,this._getFormatConfig(e)):w;var S=e.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">'+this._get(e,"closeText")+"</button>",x=r?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(n?S:"")+(this._isInRange(e,E)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">'+w+"</button>":"")+(n?"":S)+"</div>":"",T=parseInt(this._get(e,"firstDay"),10);T=isNaN(T)?0:T;var N=this._get(e,"showWeek"),C=this._get(e,"dayNames"),k=this._get(e,"dayNamesShort"),L=this._get(e,"dayNamesMin"),A=this._get(e,"monthNames"),O=this._get(e,"monthNamesShort"),M=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),D=this._get(e,"selectOtherMonths"),P=this._get(e,"calculateWeek")||this.iso8601Week,H=this._getDefaultDate(e),B="";for(var j=0;j<o[0];j++){var F="";this.maxRows=4;for(var I=0;I<o[1];I++){var q=this._daylightSavingAdjust(new Date(d,p,e.selectedDay)),R=" ui-corner-all",U="";if(f){U+='<div class="ui-datepicker-group';if(o[1]>1)switch(I){case 0:U+=" ui-datepicker-group-first",R=" ui-corner-"+(n?"right":"left");break;case o[1]-1:U+=" ui-datepicker-group-last",R=" ui-corner-"+(n?"left":"right");break;default:U+=" ui-datepicker-group-middle",R=""}U+='">'}U+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+R+'">'+(/all|left/.test(R)&&j==0?n?b:g:"")+(/all|right/.test(R)&&j==0?n?g:b:"")+this._generateMonthYearHeader(e,p,d,c,h,j>0||I>0,A,O)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var z=N?'<th class="ui-datepicker-week-col">'+this._get(e,"weekHeader")+"</th>":"";for(var W=0;W<7;W++){var X=(W+T)%7;z+="<th"+((W+T+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+C[X]+'">'+L[X]+"</span></th>"}U+=z+"</tr></thead><tbody>";var V=this._getDaysInMonth(d,p);d==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,V));var J=(this._getFirstDayOfMonth(d,p)-T+7)%7,K=Math.ceil((J+V)/7),Q=f?this.maxRows>K?this.maxRows:K:K;this.maxRows=Q;var G=this._daylightSavingAdjust(new Date(d,p,1-J));for(var Y=0;Y<Q;Y++){U+="<tr>";var Z=N?'<td class="ui-datepicker-week-col">'+this._get(e,"calculateWeek")(G)+"</td>":"";for(var W=0;W<7;W++){var et=M?M.apply(e.input?e.input[0]:null,[G]):[!0,""],tt=G.getMonth()!=p,nt=tt&&!D||!et[0]||c&&G<c||h&&G>h;Z+='<td class="'+((W+T+6)%7>=5?" ui-datepicker-week-end":"")+(tt?" ui-datepicker-other-month":"")+(G.getTime()==q.getTime()&&p==e.selectedMonth&&e._keyEvent||H.getTime()==G.getTime()&&H.getTime()==q.getTime()?" "+this._dayOverClass:"")+(nt?" "+this._unselectableClass+" ui-state-disabled":"")+(tt&&!_?"":" "+et[1]+(G.getTime()==l.getTime()?" "+this._currentClass:"")+(G.getTime()==t.getTime()?" ui-datepicker-today":""))+'"'+((!tt||_)&&et[2]?' title="'+et[2]+'"':"")+(nt?"":' data-handler="selectDay" data-event="click" data-month="'+G.getMonth()+'" data-year="'+G.getFullYear()+'"')+">"+(tt&&!_?" ":nt?'<span class="ui-state-default">'+G.getDate()+"</span>":'<a class="ui-state-default'+(G.getTime()==t.getTime()?" ui-state-highlight":"")+(G.getTime()==l.getTime()?" ui-state-active":"")+(tt?" ui-priority-secondary":"")+'" href="#">'+G.getDate()+"</a>")+"</td>",G.setDate(G.getDate()+1),G=this._daylightSavingAdjust(G)}U+=Z+"</tr>"}p++,p>11&&(p=0,d++),U+="</tbody></table>"+(f?"</div>"+(o[0]>0&&I==o[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),F+=U}B+=F}return B+=x+($.ui.ie6&&!e.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c='<div class="ui-datepicker-title">',h="";if(s||!a)h+='<span class="ui-datepicker-month">'+o[t]+"</span>";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';for(var v=0;v<12;v++)(!p||v>=r.getMonth())&&(!d||v<=i.getMonth())&&(h+='<option value="'+v+'"'+(v==t?' selected="selected"':"")+">"+u[v]+"</option>");h+="</select>"}l||(c+=h+(s||!a||!f?" ":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+='<span class="ui-datepicker-year">'+n+"</span>";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+='<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';for(;b<=w;b++)e.yearshtml+='<option value="'+b+'"'+(b==n?' selected="selected"':"")+">"+b+"</option>";e.yearshtml+="</select>",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?" ":"")+h),c+="</div>",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return i=r&&i>r?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.2",window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(e,t){var n="ui-dialog ui-widget ui-widget-content ui-corner-all ",r={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.9.2",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var t=this,r=this.options,i=r.title||" ",s,o,u,a,f;s=(this.uiDialog=e("<div>")).addClass(n+r.dialogClass).css({display:"none",outline:0,zIndex:r.zIndex}).attr("tabIndex",-1).keydown(function(n){r.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===e.ui.keyCode.ESCAPE&&(t.close(n),n.preventDefault())}).mousedown(function(e){t.moveToTop(!1,e)}).appendTo("body"),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(s),o=(this.uiDialogTitlebar=e("<div>")).addClass("ui-dialog-titlebar  ui-widget-header  ui-corner-all  ui-helper-clearfix").bind("mousedown",function(){s.focus()}).prependTo(s),u=e("<a href='#'></a>").addClass("ui-dialog-titlebar-close  ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),t.close(e)}).appendTo(o),(this.uiDialogTitlebarCloseText=e("<span>")).addClass("ui-icon ui-icon-closethick").text(r.closeText).appendTo(u),a=e("<span>").uniqueId().addClass("ui-dialog-title").html(i).prependTo(o),f=(this.uiDialogButtonPane=e("<div>")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),(this.uiButtonSet=e("<div>")).addClass("ui-dialog-buttonset").appendTo(f),s.attr({role:"dialog","aria-labelledby":a.attr("id")}),o.find("*").add(o).disableSelection(),this._hoverable(u),this._focusable(u),r.draggable&&e.fn.draggable&&this._makeDraggable(),r.resizable&&e.fn.resizable&&this._makeResizable(),this._createButtons(r.buttons),this._isOpen=!1,e.fn.bgiframe&&s.bgiframe(),this._on(s,{keydown:function(t){if(!r.modal||t.keyCode!==e.ui.keyCode.TAB)return;var n=e(":tabbable",s),i=n.filter(":first"),o=n.filter(":last");if(t.target===o[0]&&!t.shiftKey)return i.focus(1),!1;if(t.target===i[0]&&t.shiftKey)return o.focus(1),!1}})},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var e,t=this.oldPosition;this.overlay&&this.overlay.destroy(),this.uiDialog.hide(),this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},close:function(t){var n=this,r,i;if(!this._isOpen)return;if(!1===this._trigger("beforeClose",t))return;return this._isOpen=!1,this.overlay&&this.overlay.destroy(),this.options.hide?this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)}):(this.uiDialog.hide(),this._trigger("close",t)),e.ui.dialog.overlay.resize(),this.options.modal&&(r=0,e(".ui-dialog").each(function(){this!==n.uiDialog[0]&&(i=e(this).css("z-index"),isNaN(i)||(r=Math.max(r,i)))}),e.ui.dialog.maxZ=r),this},isOpen:function(){return this._isOpen},moveToTop:function(t,n){var r=this.options,i;return r.modal&&!t||!r.stack&&!r.modal?this._trigger("focus",n):(r.zIndex>e.ui.dialog.maxZ&&(e.ui.dialog.maxZ=r.zIndex),this.overlay&&(e.ui.dialog.maxZ+=1,e.ui.dialog.overlay.maxZ=e.ui.dialog.maxZ,this.overlay.$el.css("z-index",e.ui.dialog.overlay.maxZ)),i={scrollTop:this.element.scrollTop(),scrollLeft:this.element.scrollLeft()},e.ui.dialog.maxZ+=1,this.uiDialog.css("z-index",e.ui.dialog.maxZ),this.element.attr(i),this._trigger("focus",n),this)},open:function(){if(this._isOpen)return;var t,n=this.options,r=this.uiDialog;return this._size(),this._position(n.position),r.show(n.show),this.overlay=n.modal?new e.ui.dialog.overlay(this):null,this.moveToTop(!0),t=this.element.find(":tabbable"),t.length||(t=this.uiDialogButtonPane.find(":tabbable"),t.length||(t=r)),t.eq(0).focus(),this._isOpen=!0,this._trigger("open"),this},_createButtons:function(t){var n=this,r=!1;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),typeof t=="object"&&t!==null&&e.each(t,function(){return!(r=!0)}),r?(e.each(t,function(t,r){var i,s;r=e.isFunction(r)?{click:r,text:t}:r,r=e.extend({type:"button"},r),s=r.click,r.click=function(){s.apply(n.element[0],arguments)},i=e("<button></button>",r).appendTo(n.uiButtonSet),e.fn.button&&i.button()}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)):this.uiDialog.removeClass("ui-dialog-buttons")},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._trigger("dragStop",i,r(s)),e.ui.dialog.overlay.resize()}})},_makeResizable:function(n){function u(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}n=n===t?this.options.resizable:n;var r=this,i=this.options,s=this.uiDialog.css("position"),o=typeof n=="string"?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:o,start:function(t,n){e(this).addClass("ui-dialog-resizing"),r._trigger("resizeStart",t,u(n))},resize:function(e,t){r._trigger("resize",e,u(t))},stop:function(t,n){e(this).removeClass("ui-dialog-resizing"),i.height=e(this).height(),i.width=e(this).width(),r._trigger("resizeStop",t,u(n)),e.ui.dialog.overlay.resize()}}).css("position",s).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(t){var n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n[0]+(r[0]<0?r[0]:"+"+r[0])+" "+n[1]+(r[1]<0?r[1]:"+"+r[1]),at:n.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()},_setOptions:function(t){var n=this,s={},o=!1;e.each(t,function(e,t){n._setOption(e,t),e in r&&(o=!0),e in i&&(s[e]=t)}),o&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(t,r){var i,s,o=this.uiDialog;switch(t){case"buttons":this._createButtons(r);break;case"closeText":this.uiDialogTitlebarCloseText.text(""+r);break;case"dialogClass":o.removeClass(this.options.dialogClass).addClass(n+r);break;case"disabled":r?o.addClass("ui-dialog-disabled"):o.removeClass("ui-dialog-disabled");break;case"draggable":i=o.is(":data(draggable)"),i&&!r&&o.draggable("destroy"),!i&&r&&this._makeDraggable();break;case"position":this._position(r);break;case"resizable":s=o.is(":data(resizable)"),s&&!r&&o.resizable("destroy"),s&&typeof r=="string"&&o.resizable("option","handles",r),!s&&r!==!1&&this._makeResizable(r);break;case"title":e(".ui-dialog-title",this.uiDialogTitlebar).html(""+(r||" "))}this._super(t,r)},_size:function(){var t,n,r,i=this.options,s=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),i.minWidth>i.width&&(i.width=i.minWidth),t=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),n=Math.max(0,i.minHeight-t),i.height==="auto"?e.support.minHeight?this.element.css({minHeight:n,height:"auto"}):(this.uiDialog.show(),r=this.element.css("height","auto").height(),s||this.uiDialog.hide(),this.element.height(Math.max(r,n))):this.element.height(Math.max(i.height-t,0)),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),e.extend(e.ui.dialog,{uuid:0,maxZ:0,getTitleId:function(e){var t=e.attr("id");return t||(this.uuid+=1,t=this.uuid),"ui-dialog-title-"+t},overlay:function(t){this.$el=e.ui.dialog.overlay.create(t)}}),e.extend(e.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:e.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(e){return e+".dialog-overlay"}).join(" "),create:function(t){this.instances.length===0&&(setTimeout(function(){e.ui.dialog.overlay.instances.length&&e(document).bind(e.ui.dialog.overlay.events,function(t){if(e(t.target).zIndex()<e.ui.dialog.overlay.maxZ)return!1})},1),e(window).bind("resize.dialog-overlay",e.ui.dialog.overlay.resize));var n=this.oldInstances.pop()||e("<div>").addClass("ui-widget-overlay");return e(document).bind("keydown.dialog-overlay",function(r){var i=e.ui.dialog.overlay.instances;i.length!==0&&i[i.length-1]===n&&t.options.closeOnEscape&&!r.isDefaultPrevented()&&r.keyCode&&r.keyCode===e.ui.keyCode.ESCAPE&&(t.close(r),r.preventDefault())}),n.appendTo(document.body).css({width:this.width(),height:this.height()}),e.fn.bgiframe&&n.bgiframe(),this.instances.push(n),n},destroy:function(t){var n=e.inArray(t,this.instances),r=0;n!==-1&&this.oldInstances.push(this.instances.splice(n,1)[0]),this.instances.length===0&&e([document,window]).unbind(".dialog-overlay"),t.height(0).width(0).remove(),e.each(this.instances,function(){r=Math.max(r,this.css("z-index"))}),this.maxZ=r},height:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),n=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),t<n?e(window).height()+"px":t+"px"):e(document).height()+"px"},width:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),n=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),t<n?e(window).width()+"px":t+"px"):e(document).width()+"px"},resize:function(){var t=e([]);e.each(e.ui.dialog.overlay.instances,function(){t=t.add(this)}),t.css({width:0,height:0}).css({width:e.ui.dialog.overlay.width(),height:e.ui.dialog.overlay.height()})}}),e.extend(e.ui.dialog.overlay.prototype,{destroy:function(){e.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(n=e.ui.ddmanager.drop(this,t)),this.dropped&&(n=this.dropped,this.dropped=!1);var r=this.element[0],i=!1;while(r&&(r=r.parentNode))r==document&&(i=!0);if(!i&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!n||this.options.revert=="valid"&&n||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,n)){var s=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo=="parent"?this.element[0].parentNode:n.appendTo),r[0]!=this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[t.containment=="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t.containment=="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(t.containment=="document"?0:e(window).scrollLeft())+e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(t.containment=="document"?0:e(window).scrollTop())+(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)&&t.containment.constructor!=Array){var n=e(t.containment),r=n[0];if(!r)return;var i=n.offset(),s=e(r).css("overflow")!="hidden";this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(s?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else t.containment.constructor==Array&&(this.containment=t.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName),s=t.pageX,o=t.pageY;if(this.originalPosition){var u;if(this.containment){if(this.relative_container){var a=this.relative_container.offset();u=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]}else u=this.containment;t.pageX-this.offset.click.left<u[0]&&(s=u[0]+this.offset.click.left),t.pageY-this.offset.click.top<u[1]&&(o=u[1]+this.offset.click.top),t.pageX-this.offset.click.left>u[2]&&(s=u[2]+this.offset.click.left),t.pageY-this.offset.click.top>u[3]&&(o=u[3]+this.offset.click.top)}if(n.grid){var f=n.grid[1]?this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY;o=u?f-this.offset.click.top<u[1]||f-this.offset.click.top>u[3]?f-this.offset.click.top<u[1]?f+n.grid[1]:f-n.grid[1]:f:f;var l=n.grid[0]?this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0]:this.originalPageX;s=u?l-this.offset.click.left<u[0]||l-this.offset.click.left>u[2]?l-this.offset.click.left<u[0]?l+n.grid[0]:l-n.grid[0]:l:l}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(e){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("draggable"),i=this,s=function(t){var n=this.offset.click.top,r=this.offset.click.left,i=this.positionAbs.top,s=this.positionAbs.left,o=t.height,u=t.width,a=t.top,f=t.left;return e.ui.isOver(i+n,s+r,a,f,o,u)};e.each(r.sortables,function(s){var o=!1,u=this;this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,e.each(r.sortables,function(){return this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this!=u&&this.instance._intersectsWith(this.instance.containerCache)&&e.ui.contains(u.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,n){var r=e("body"),i=e(this).data("draggable").options;r.css("cursor")&&(i._cursor=r.css("cursor")),r.css("cursor",i.cursor)},stop:function(t,n){var r=e(this).data("draggable").options;r._cursor&&e("body").css("cursor",r._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(t,n){var r=e(this).data("draggable");r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"&&(r.overflowOffset=r.scrollParent.offset())},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=!1;if(r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"){if(!i.axis||i.axis!="x")r.overflowOffset.top+r.scrollParent[0].offsetHeight-t.pageY<i.scrollSensitivity?r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop+i.scrollSpeed:t.pageY-r.overflowOffset.top<i.scrollSensitivity&&(r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop-i.scrollSpeed);if(!i.axis||i.axis!="y")r.overflowOffset.left+r.scrollParent[0].offsetWidth-t.pageX<i.scrollSensitivity?r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft+i.scrollSpeed:t.pageX-r.overflowOffset.left<i.scrollSensitivity&&(r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft-i.scrollSpeed)}else{if(!i.axis||i.axis!="x")t.pageY-e(document).scrollTop()<i.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-i.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<i.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+i.scrollSpeed));if(!i.axis||i.axis!="y")t.pageX-e(document).scrollLeft()<i.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-i.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<i.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+i.scrollSpeed))}s!==!1&&e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(r,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,n){var r=e(this).data("draggable"),i=r.options;r.snapElements=[],e(i.snap.constructor!=String?i.snap.items||":data(draggable)":i.snap).each(function(){var t=e(this),n=t.offset();this!=r.element[0]&&r.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:n.top,left:n.left})})},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=i.snapTolerance,o=n.offset.left,u=o+r.helperProportions.width,a=n.offset.top,f=a+r.helperProportions.height;for(var l=r.snapElements.length-1;l>=0;l--){var c=r.snapElements[l].left,h=c+r.snapElements[l].width,p=r.snapElements[l].top,d=p+r.snapElements[l].height;if(!(c-s<o&&o<h+s&&p-s<a&&a<d+s||c-s<o&&o<h+s&&p-s<f&&f<d+s||c-s<u&&u<h+s&&p-s<a&&a<d+s||c-s<u&&u<h+s&&p-s<f&&f<d+s)){r.snapElements[l].snapping&&r.options.snap.release&&r.options.snap.release.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=!1;continue}if(i.snapMode!="inner"){var v=Math.abs(p-f)<=s,m=Math.abs(d-a)<=s,g=Math.abs(c-u)<=s,y=Math.abs(h-o)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p-r.helperProportions.height,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c-r.helperProportions.width}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h}).left-r.margins.left)}var b=v||m||g||y;if(i.snapMode!="outer"){var v=Math.abs(p-a)<=s,m=Math.abs(d-f)<=s,g=Math.abs(c-o)<=s,y=Math.abs(h-u)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d-r.helperProportions.height,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h-r.helperProportions.width}).left-r.margins.left)}!r.snapElements[l].snapping&&(v||m||g||y||b)&&r.options.snap.snap&&r.options.snap.snap.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=v||m||g||y||b}}}),e.ui.plugin.add("draggable","stack",{start:function(t,n){var r=e(this).data("draggable").options,i=e.makeArray(e(r.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!i.length)return;var s=parseInt(i[0].style.zIndex)||0;e(i).each(function(e){this.style.zIndex=s+e}),this[0].style.zIndex=s+i.length}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})})(jQuery);(function(e,t){e.widget("ui.droppable",{version:"1.9.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var t=this.options,n=t.accept;this.isover=0,this.isout=1,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];for(var n=0;n<t.length;n++)t[n]==this&&t.splice(n,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t=="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current;if(!r||(r.currentItem||r.element)[0]==this.element[0])return!1;var i=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope==r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(t,n,r){if(!n.offset)return!1;var i=(t.positionAbs||t.position.absolute).left,s=i+t.helperProportions.width,o=(t.positionAbs||t.position.absolute).top,u=o+t.helperProportions.height,a=n.offset.left,f=a+n.proportions.width,l=n.offset.top,c=l+n.proportions.height;switch(r){case"fit":return a<=i&&s<=f&&l<=o&&u<=c;case"intersect":return a<i+t.helperProportions.width/2&&s-t.helperProportions.width/2<f&&l<o+t.helperProportions.height/2&&u-t.helperProportions.height/2<c;case"pointer":var h=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,p=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,d=e.ui.isOver(p,h,l,a,n.proportions.height,n.proportions.width);return d;case"touch":return(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c)&&(i>=a&&i<=f||s>=a&&s<=f||i<a&&s>f);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r=e.ui.ddmanager.droppables[t.options.scope]||[],i=n?n.type:null,s=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var o=0;o<r.length;o++){if(r[o].options.disabled||t&&!r[o].accept.call(r[o].element[0],t.currentItem||t.element))continue;for(var u=0;u<s.length;u++)if(s[u]==r[o].element[0]){r[o].proportions.height=0;continue e}r[o].visible=r[o].element.css("display")!="none";if(!r[o].visible)continue;i=="mousedown"&&r[o]._activate.call(r[o],n),r[o].offset=r[o].element.offset(),r[o].proportions={width:r[o].element[0].offsetWidth,height:r[o].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r=e.ui.intersect(t,this,this.options.tolerance),i=!r&&this.isover==1?"isout":r&&this.isover==0?"isover":null;if(!i)return;var s;if(this.options.greedy){var o=this.options.scope,u=this.element.parents(":data(droppable)").filter(function(){return e.data(this,"droppable").options.scope===o});u.length&&(s=e.data(u[0],"droppable"),s.greedyChild=i=="isover"?1:0)}s&&i=="isover"&&(s.isover=0,s.isout=1,s._out.call(s,n)),this[i]=1,this[i=="isout"?"isover":"isout"]=0,this[i=="isover"?"_over":"_out"].call(this,n),s&&i=="isout"&&(s.isout=0,s.isover=1,s._over.call(s,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}})(jQuery);jQuery.effects||function(e,t){var n=e.uiBackCompat!==!1,r="ui-effects-";e.effects={effect:{}},function(t,n){function p(e,t,n){var r=a[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function d(e){var n=o(),r=n._rgba=[];return e=e.toLowerCase(),h(s,function(t,i){var s,o=i.re.exec(e),a=o&&i.parse(o),f=i.space||"rgba";if(a)return s=n[f](a),n[u[f].cache]=s[u[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&t.extend(r,c.transparent),n):c[e]}function v(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),i=/^([\-+])=\s*(\d+\.?\d*)/,s=[{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[e[1]*2.55,e[2]*2.55,e[3]*2.55,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]]}}],o=t.Color=function(e,n,r,i){return new t.Color.fn.parse(e,n,r,i)},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"}}}},a={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},f=o.support={},l=t("<p>")[0],c,h=t.each;l.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=l.style.backgroundColor.indexOf("rgba")>-1,h(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),o.fn=t.extend(o.prototype,{parse:function(r,i,s,a){if(r===n)return this._rgba=[null,null,null,null],this;if(r.jquery||r.nodeType)r=t(r).css(i),i=n;var f=this,l=t.type(r),v=this._rgba=[];i!==n&&(r=[r,i,s,a],l="array");if(l==="string")return this.parse(d(r)||c._default);if(l==="array")return h(u.rgba.props,function(e,t){v[t.idx]=p(r[t.idx],t)}),this;if(l==="object")return r instanceof o?h(u,function(e,t){r[t.cache]&&(f[t.cache]=r[t.cache].slice())}):h(u,function(t,n){var i=n.cache;h(n.props,function(e,t){if(!f[i]&&n.to){if(e==="alpha"||r[e]==null)return;f[i]=n.to(f._rgba)}f[i][t.idx]=p(r[e],t,!0)}),f[i]&&e.inArray(null,f[i].slice(0,3))<0&&(f[i][3]=1,n.from&&(f._rgba=n.from(f[i])))}),this},is:function(e){var t=o(e),n=!0,r=this;return h(u,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],h(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return h(u,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=o(e),r=n._space(),i=u[r],s=this.alpha()===0?o("transparent"):this,f=s[i.cache]||i.to(s._rgba),l=f.slice();return n=n[i.cache],h(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],u=a[r.type]||{};if(o===null)return;s===null?l[i]=o:(u.mod&&(o-s>u.mod/2?s+=u.mod:s-o>u.mod/2&&(s-=u.mod)),l[i]=p((o-s)*t+s,r))}),this[r](l)},blend:function(e){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=o(e)._rgba;return o(t.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var e="rgba(",n=t.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),e="rgb("),e+n.join()+")"},toHslaString:function(){var e="hsla(",n=t.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),e="hsl("),e+n.join()+")"},toHexString:function(e){var n=this._rgba.slice(),r=n.pop();return e&&n.push(~~(r*255)),"#"+t.map(n,function(e){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),o.fn.parse.prototype=o.fn,u.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,f===0||f===1?c=f:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},u.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;return[Math.round(v(o,s,t+1/3)*255),Math.round(v(o,s,t)*255),Math.round(v(o,s,t-1/3)*255),i]},h(u,function(e,r){var s=r.props,u=r.cache,a=r.to,f=r.from;o.fn[e]=function(e){a&&!this[u]&&(this[u]=a(this._rgba));if(e===n)return this[u].slice();var r,i=t.type(e),l=i==="array"||i==="object"?e:arguments,c=this[u].slice();return h(s,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=c[t.idx]),c[t.idx]=p(n,t)}),f?(r=o(f(c)),r[u]=c,r):o(c)},h(s,function(n,r){if(o.fn[n])return;o.fn[n]=function(s){var o=t.type(s),u=n==="alpha"?this._hsla?"hsla":"rgba":e,a=this[u](),f=a[r.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=t.type(s)),s==null&&r.empty?this:(o==="string"&&(l=i.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[r.idx]=s,this[u](a)))}})}),h(r,function(e,n){t.cssHooks[n]={set:function(e,r){var i,s,u="";if(t.type(r)!=="string"||(i=d(r))){r=o(i||r);if(!f.rgba&&r._rgba[3]!==1){s=n==="backgroundColor"?e.parentNode:e;while((u===""||u==="transparent")&&s&&s.style)try{u=t.css(s,"backgroundColor"),s=s.parentNode}catch(a){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{e.style[n]=r}catch(l){}}},t.fx.step[n]=function(e){e.colorInit||(e.start=o(e.elem,n),e.end=o(e.end),e.colorInit=!0),t.cssHooks[n].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return h(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},c=t.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"}}(jQuery),function(){function i(){var t=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,n={},r,i;if(t&&t.length&&t[0]&&t[t[0]]){i=t.length;while(i--)r=t[i],typeof t[r]=="string"&&(n[e.camelCase(r)]=t[r])}else for(r in t)typeof t[r]=="string"&&(n[r]=t[r]);return n}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={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,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").andSelf():r;f=f.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i.call(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=jQuery.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function i(t,n,r,i){e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},n==null&&(n={}),e.isFunction(n)&&(i=n,r=null,n={});if(typeof n=="number"||e.fx.speeds[n])i=r,r=n,n={};return e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:typeof r=="number"?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function s(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]?n&&e.effects[t]?!1:!0:!1}e.extend(e.effects,{version:"1.9.2",save:function(e,t){for(var n=0;n<t.length;n++)t[n]!==null&&e.data(r+t[n],e[0].style[t[n]])},restore:function(e,n){var i,s;for(s=0;s<n.length;s++)n[s]!==null&&(i=e.data(r+n[s]),i===t&&(i=""),e.css(n[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function a(n){function u(){e.isFunction(i)&&i.call(r[0]),e.isFunction(n)&&n()}var r=e(this),i=t.complete,s=t.mode;(r.is(":hidden")?s==="hide":s==="show")?u():o.call(r[0],t,u)}var t=i.apply(this,arguments),r=t.mode,s=t.queue,o=e.effects.effect[t.effect],u=!o&&n&&e.effects[t.effect];return e.fx.off||!o&&!u?r?this[r](t.duration,t.complete):this.each(function(){t.complete&&t.complete.call(this)}):o?s===!1?this.each(a):this.queue(s||"fx",a):u.call(this,{options:t,duration:t.duration,callback:t.complete,mode:t.mode})},_show:e.fn.show,show:function(e){if(s(e))return this._show.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(s(e))return this._hide.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(s(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=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 e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u,outerHeight:a.outerHeight*u,outerWidth:a.outerWidth*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0,outerHeight:0,outerWidth:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r,i,s,o=e(this),u=["position","top","bottom","left","right","width","height","overflow","opacity"],a=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],l=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),d=t.restore||p!=="effect",v=t.scale||"both",m=t.origin||["middle","center"],g=o.css("position"),y=d?u:a,b={height:0,width:0,outerHeight:0,outerWidth:0};p==="show"&&o.show(),r={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},t.mode==="toggle"&&p==="show"?(o.from=t.to||b,o.to=t.from||r):(o.from=t.from||(p==="show"?b:r),o.to=t.to||(p==="hide"?b:r)),s={from:{y:o.from.height/r.height,x:o.from.width/r.width},to:{y:o.to.height/r.height,x:o.to.width/r.width}};if(v==="box"||v==="both")s.from.y!==s.to.y&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,s.from.y,o.from),o.to=e.effects.setTransition(o,c,s.to.y,o.to)),s.from.x!==s.to.x&&(y=y.concat(h),o.from=e.effects.setTransition(o,h,s.from.x,o.from),o.to=e.effects.setTransition(o,h,s.to.x,o.to));(v==="content"||v==="both")&&s.from.y!==s.to.y&&(y=y.concat(l).concat(f),o.from=e.effects.setTransition(o,l,s.from.y,o.from),o.to=e.effects.setTransition(o,l,s.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(i=e.effects.getBaseline(m,r),o.from.top=(r.outerHeight-o.outerHeight())*i.y,o.from.left=(r.outerWidth-o.outerWidth())*i.x,o.to.top=(r.outerHeight-o.to.outerHeight)*i.y,o.to.left=(r.outerWidth-o.to.outerWidth)*i.x),o.css(o.from);if(v==="content"||v==="both")c=c.concat(["marginTop","marginBottom"]).concat(l),h=h.concat(["marginLeft","marginRight"]),f=u.concat(c).concat(h),o.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x,outerHeight:r.outerHeight*s.from.y,outerWidth:r.outerWidth*s.from.x},n.to={height:r.height*s.to.y,width:r.width*s.to.x,outerHeight:r.height*s.to.y,outerWidth:r.width*s.to.x},s.from.y!==s.to.y&&(n.from=e.effects.setTransition(n,c,s.from.y,n.from),n.to=e.effects.setTransition(n,c,s.to.y,n.to)),s.from.x!==s.to.x&&(n.from=e.effects.setTransition(n,h,s.from.x,n.from),n.to=e.effects.setTransition(n,h,s.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){d&&e.effects.restore(n,f)})});o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o.to.opacity===0&&o.css("opacity",o.from.opacity),p==="hide"&&o.hide(),e.effects.restore(o,y),d||(g==="static"?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,n){var r=parseInt(n,10),i=e?o.to.left:o.to.top;return n==="auto"?i+"px":r+i+"px"})})),e.effects.removeWrapper(o),n()}})}})(jQuery);(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery);(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},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(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").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").children("a").removeUniqueId().removeClass("ui-corner-all 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){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!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:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".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]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=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(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},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("a.ui-state-active").removeClass("ui-state-active")},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 ").children(".ui-menu-item").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,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);(function(e,t){e.widget("ui.progressbar",{version:"1.9.2",options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return e===t?this._value():(this._setOption("value",e),this)},_setOption:function(e,t){e==="value"&&(this.options.value=t,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),this._super(e,t)},_value:function(){var e=this.options.value;return typeof e!="number"&&(e=0),Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage();this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.attr("aria-valuenow",e)}})})(jQuery);(function(e,t){e.widget("ui.resizable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var t=this,n=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=n.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var r=this.handles.split(",");this.handles={};for(var i=0;i<r.length;i++){var s=e.trim(r[i]),o="ui-resizable-"+s,u=e('<div class="ui-resizable-handle '+o+'"></div>');u.css({zIndex:n.zIndex}),"se"==s&&u.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(u)}}this._renderAxis=function(t){t=t||this.element;for(var n in this.handles){this.handles[n].constructor==String&&(this.handles[n]=e(this.handles[n],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var r=e(this.handles[n],this.element),i=0;i=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth();var s=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");t.css(s,i),this._proportionallyResize()}if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!t.resizing){if(this.className)var e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);t.axis=e&&e[1]?e[1]:"se"}}),n.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(n.disabled)return;e(this).removeClass("ui-resizable-autohide"),t._handles.show()}).mouseleave(function(){if(n.disabled)return;t.resizing||(e(this).addClass("ui-resizable-autohide"),t._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){t(this.element);var n=this.element;this.originalElement.css({position:n.css("position"),width:n.outerWidth(),height:n.outerHeight(),top:n.css("top"),left:n.css("left")}).insertAfter(n),n.remove()}return this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_mouseCapture:function(t){var n=!1;for(var r in this.handles)e(this.handles[r])[0]==t.target&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var r=this.options,i=this.element.position(),s=this.element;this.resizing=!0,this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()},(s.is(".ui-draggable")||/absolute/.test(s.css("position")))&&s.css({position:"absolute",top:i.top,left:i.left}),this._renderProxy();var o=n(this.helper.css("left")),u=n(this.helper.css("top"));r.containment&&(o+=e(r.containment).scrollLeft()||0,u+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:u},this.size=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalPosition={left:o,top:u},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof r.aspectRatio=="number"?r.aspectRatio:this.originalSize.width/this.originalSize.height||1;var a=e(".ui-resizable-"+this.axis).css("cursor");return e("body").css("cursor",a=="auto"?this.axis+"-resize":a),s.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(e){var t=this.helper,n=this.options,r={},i=this,s=this.originalMousePosition,o=this.axis,u=e.pageX-s.left||0,a=e.pageY-s.top||0,f=this._change[o];if(!f)return!1;var l=f.apply(this,[e,u,a]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)l=this._updateRatio(l,e);return l=this._respectSize(l,e),this._propagate("resize",e),t.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",e,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n=this.options,r=this;if(this._helper){var i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:r.sizeDiff.height,u=s?0:r.sizeDiff.width,a={width:r.helper.width()-u,height:r.helper.height()-o},f=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,l=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;n.animate||this.element.css(e.extend(a,{top:l,left:f})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!n.animate&&this._proportionallyResize()}return e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t=this.options,n,i,s,o,u;u={minWidth:r(t.minWidth)?t.minWidth:0,maxWidth:r(t.maxWidth)?t.maxWidth:Infinity,minHeight:r(t.minHeight)?t.minHeight:0,maxHeight:r(t.maxHeight)?t.maxHeight:Infinity};if(this._aspectRatio||e)n=u.minHeight*this.aspectRatio,s=u.minWidth/this.aspectRatio,i=u.maxHeight*this.aspectRatio,o=u.maxWidth/this.aspectRatio,n>u.minWidth&&(u.minWidth=n),s>u.minHeight&&(u.minHeight=s),i<u.maxWidth&&(u.maxWidth=i),o<u.maxHeight&&(u.maxHeight=o);this._vBoundaries=u},_updateCache:function(e){var t=this.options;this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e,t){var n=this.options,i=this.position,s=this.size,o=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),o=="sw"&&(e.left=i.left+(s.width-e.width),e.top=null),o=="nw"&&(e.top=i.top+(s.height-e.height),e.left=i.left+(s.width-e.width)),e},_respectSize:function(e,t){var n=this.helper,i=this._vBoundaries,s=this._aspectRatio||t.shiftKey,o=this.axis,u=r(e.width)&&i.maxWidth&&i.maxWidth<e.width,a=r(e.height)&&i.maxHeight&&i.maxHeight<e.height,f=r(e.width)&&i.minWidth&&i.minWidth>e.width,l=r(e.height)&&i.minHeight&&i.minHeight>e.height;f&&(e.width=i.minWidth),l&&(e.height=i.minHeight),u&&(e.width=i.maxWidth),a&&(e.height=i.maxHeight);var c=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,p=/sw|nw|w/.test(o),d=/nw|ne|n/.test(o);f&&p&&(e.left=c-i.minWidth),u&&p&&(e.left=c-i.maxWidth),l&&d&&(e.top=h-i.minHeight),a&&d&&(e.top=h-i.maxHeight);var v=!e.width&&!e.height;return v&&!e.left&&e.top?e.top=null:v&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){var t=this.options;if(!this._proportionallyResizeElements.length)return;var n=this.helper||this.element;for(var r=0;r<this._proportionallyResizeElements.length;r++){var i=this._proportionallyResizeElements[r];if(!this.borderDif){var s=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],o=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];this.borderDif=e.map(s,function(e,t){var n=parseInt(e,10)||0,r=parseInt(o[t],10)||0;return n+r})}i.css({height:n.height()-this.borderDif[0]-this.borderDif[2]||0,width:n.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var r=e.ui.ie6?1:0,i=e.ui.ie6?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+i,height:this.element.outerHeight()+i,position:"absolute",left:this.elementOffset.left-r+"px",top:this.elementOffset.top-r+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,t,n){return{width:this.originalSize.width+t}},w:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{top:s.top+n,height:i.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!="resize"&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","alsoResize",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=function(t){e(t).each(function(){var t=e(this);t.data("resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof i.alsoResize=="object"&&!i.alsoResize.parentNode?i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)}):s(i.alsoResize)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(t,n){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","animate",{stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r._proportionallyResizeElements,o=s.length&&/textarea/i.test(s[0].nodeName),u=o&&e.ui.hasScroll(s[0],"left")?0:r.sizeDiff.height,a=o?0:r.sizeDiff.width,f={width:r.size.width-a,height:r.size.height-u},l=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,c=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;r.element.animate(e.extend(f,c&&l?{top:c,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var n={width:parseInt(r.element.css("width"),10),height:parseInt(r.element.css("height"),10),top:parseInt(r.element.css("top"),10),left:parseInt(r.element.css("left"),10)};s&&s.length&&e(s[0]).css({width:n.width,height:n.height}),r._updateCache(n),r._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(t,r){var i=e(this).data("resizable"),s=i.options,o=i.element,u=s.containment,a=u instanceof e?u.get(0):/parent/.test(u)?o.parent().get(0):u;if(!a)return;i.containerElement=e(a);if(/document/.test(u)||u==document)i.containerOffset={left:0,top:0},i.containerPosition={left:0,top:0},i.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight};else{var f=e(a),l=[];e(["Top","Right","Left","Bottom"]).each(function(e,t){l[e]=n(f.css("padding"+t))}),i.containerOffset=f.offset(),i.containerPosition=f.position(),i.containerSize={height:f.innerHeight()-l[3],width:f.innerWidth()-l[1]};var c=i.containerOffset,h=i.containerSize.height,p=i.containerSize.width,d=e.ui.hasScroll(a,"left")?a.scrollWidth:p,v=e.ui.hasScroll(a)?a.scrollHeight:h;i.parentData={element:a,left:c.left,top:c.top,width:d,height:v}}},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.containerSize,o=r.containerOffset,u=r.size,a=r.position,f=r._aspectRatio||t.shiftKey,l={top:0,left:0},c=r.containerElement;c[0]!=document&&/static/.test(c.css("position"))&&(l=o),a.left<(r._helper?o.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-o.left:r.position.left-l.left),f&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=i.helper?o.left:0),a.top<(r._helper?o.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-o.top:r.position.top),f&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?o.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top;var h=Math.abs((r._helper?r.offset.left-l.left:r.offset.left-l.left)+r.sizeDiff.width),p=Math.abs((r._helper?r.offset.top-l.top:r.offset.top-o.top)+r.sizeDiff.height),d=r.containerElement.get(0)==r.element.parent().get(0),v=/relative|absolute/.test(r.containerElement.css("position"));d&&v&&(h-=r.parentData.left),h+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-h,f&&(r.size.height=r.size.width/r.aspectRatio)),p+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-p,f&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.position,o=r.containerOffset,u=r.containerPosition,a=r.containerElement,f=e(r.helper),l=f.offset(),c=f.outerWidth()-r.sizeDiff.width,h=f.outerHeight()-r.sizeDiff.height;r._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h}),r._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h})}}),e.ui.plugin.add("resizable","ghost",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size;r.ghost=r.originalElement.clone(),r.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:""),r.ghost.appendTo(r.helper)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.ghost.css({position:"relative",height:r.size.height,width:r.size.width})},stop:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.helper&&r.helper.get(0).removeChild(r.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size,o=r.originalSize,u=r.originalPosition,a=r.axis,f=i._aspectRatio||t.shiftKey;i.grid=typeof i.grid=="number"?[i.grid,i.grid]:i.grid;var l=Math.round((s.width-o.width)/(i.grid[0]||1))*(i.grid[0]||1),c=Math.round((s.height-o.height)/(i.grid[1]||1))*(i.grid[1]||1);/^(se|s|e)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c):/^(ne)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c):/^(sw)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.left=u.left-l):(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c,r.position.left=u.left-l)}});var n=function(e){return parseInt(e,10)||0},r=function(e){return!isNaN(parseInt(e,10))}})(jQuery);(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.9.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var t=this;this.element.addClass("ui-selectable"),this.dragged=!1;var n;this.refresh=function(){n=e(t.options.filter,t.element[0]),n.addClass("ui-selectee"),n.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=n.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;var r=this.options;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().andSelf().each(function(){var r=e.data(this,"selectable-item");if(r){var i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected");return r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?n._trigger("selecting",t,{selecting:r.element}):n._trigger("unselecting",t,{unselecting:r.element}),!1}})},_mouseDrag:function(t){var n=this;this.dragged=!0;if(this.options.disabled)return;var r=this.options,i=this.opos[0],s=this.opos[1],o=t.pageX,u=t.pageY;if(i>o){var a=o;o=i,i=a}if(s>u){var a=u;u=s,s=a}return this.helper.css({left:i,top:s,width:o-i,height:u-s}),this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!a||a.element==n.element[0])return;var f=!1;r.tolerance=="touch"?f=!(a.left>o||a.right<i||a.top>u||a.bottom<s):r.tolerance=="fit"&&(f=a.left>i&&a.right<o&&a.top>s&&a.bottom<u),f?(a.selected&&(a.$element.removeClass("ui-selected"),a.selected=!1),a.unselecting&&(a.$element.removeClass("ui-unselecting"),a.unselecting=!1),a.selecting||(a.$element.addClass("ui-selecting"),a.selecting=!0,n._trigger("selecting",t,{selecting:a.element}))):(a.selecting&&((t.metaKey||t.ctrlKey)&&a.startselected?(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.$element.addClass("ui-selected"),a.selected=!0):(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.startselected&&(a.$element.addClass("ui-unselecting"),a.unselecting=!0),n._trigger("unselecting",t,{unselecting:a.element}))),a.selected&&!t.metaKey&&!t.ctrlKey&&!a.startselected&&(a.$element.removeClass("ui-selected"),a.selected=!1,a.$element.addClass("ui-unselecting"),a.unselecting=!0,n._trigger("unselecting",t,{unselecting:a.element})))}),!1},_mouseStop:function(t){var n=this;this.dragged=!1;var r=this.options;return e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var t,r,i=this.options,s=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",u=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(i.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),i.range&&(i.range===!0&&(i.values||(i.values=[this._valueMin(),this._valueMin()]),i.values.length&&i.values.length!==2&&(i.values=[i.values[0],i.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(i.range==="min"||i.range==="max"?" ui-slider-range-"+i.range:""))),r=i.values&&i.values.length||1;for(t=s.length;t<r;t++)u.push(o);this.handles=s.add(e(u.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){i.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){i.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));i>n&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var i=this.items.length-1;i>=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var n=this.options.axis==="x"||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),r=this.options.axis==="y"||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),i=n&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o=="right"||s=="down"?2:1:s&&(s=="down"?2:1):!1},_intersectsWithSides:function(t){var n=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),r=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s=="right"&&r||s=="left"&&!r:i&&(i=="down"&&n||i=="up"&&!n)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!=0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]==e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n=this.items,r=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],i=this._connectWith();if(i&&this.ready)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u<c;u++){var h=e(l[u]);h.data(this.widgetName+"-item",f),n.push({item:h,instance:f,width:0,height:0,left:0,top:0})}}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var n=this.items.length-1;n>=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else{var s=1e4,o=null,u=this.containers[r].floating?"left":"top",a=this.containers[r].floating?"width":"height",f=this.positionAbs[u]+this.offset.click[u];for(var l=this.items.length-1;l>=0;l--){if(!e.contains(this.containers[r].element[0],this.items[l].item[0]))continue;if(this.items[l].item[0]==this.currentItem[0])continue;var c=this.items[l].item.offset()[u],h=!1;Math.abs(c-f)>Math.abs(c+this.items[l][a]-f)&&(h=!0,c+=this.items[l][a]),Math.abs(c-f)<s&&(s=Math.abs(c-f),o=this.items[l],this.direction=h?"up":"down")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.top<this.containment[1]||u-this.offset.click.top>this.containment[3]?u-this.offset.click.top<this.containment[1]?u+n.grid[1]:u-n.grid[1]:u:u;var a=this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0];s=this.containment?a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2]?a-this.offset.click.left<this.containment[0]?a+n.grid[0]:a-n.grid[0]:a:a}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i==this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var i in this._storedCSS)if(this._storedCSS[i]=="auto"||this._storedCSS[i]=="static")this._storedCSS[i]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!n&&r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var i=this.containers.length-1;i>=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.9.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._spin((e||1)*this.options.step)},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._spin((e||1)*-this.options.step)},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})})(jQuery);(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&e.href.replace(r,"")===location.href.replace(r,"").replace(/\s/g,"%20")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options,r=n.active,i=location.hash.substring(1);this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(r===null){i&&this.tabs.each(function(t,n){if(e(n).attr("aria-controls")===i)return r=t,!1}),r===null&&(r=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(r===null||r===-1)r=this.tabs.length?0:!1}r!==!1&&(r=this.tabs.index(this.tabs.eq(r)),r===-1&&(r=n.collapsible?!1:0)),n.active=r,!n.collapsible&&n.active===!1&&this.anchors.length&&(n.active=0),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading…</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\{href\}/g,n).replace(/#\{label\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1<this.anchors.length?1:-1)),n.disabled=e.map(e.grep(n.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r,i,s=this._superApply(arguments);return s?(e==="beforeActivate"?(r=n.newTab.length?n.newTab:n.oldTab,i=n.newPanel.length?n.newPanel:n.oldPanel,s=this._super("select",t,{tab:r.find(".ui-tabs-anchor")[0],panel:i[0],index:r.closest("li").index()})):e==="activate"&&n.newTab.length&&(s=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),s):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.2",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);
\ No newline at end of file +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ +(function(t,e){function i(e,i){var n,o,a,r=e.nodeName.toLowerCase();return"area"===r?(n=e.parentNode,o=n.name,e.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap=#"+o+"]")[0],!!a&&s(a)):!1):(/input|select|textarea|button|object/.test(r)?!e.disabled:"a"===r?e.href||i:i)&&s(e)}function s(e){return t.expr.filters.visible(e)&&!t(e).parents().addBack().filter(function(){return"hidden"===t.css(this,"visibility")}).length}var n=0,o=/^ui-id-\d+$/;t.ui=t.ui||{},t.extend(t.ui,{version:"1.10.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),t.fn.extend({focus:function(e){return function(i,s){return"number"==typeof i?this.each(function(){var e=this;setTimeout(function(){t(e).focus(),s&&s.call(e)},i)}):e.apply(this,arguments)}}(t.fn.focus),scrollParent:function(){var e;return e=t.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(t.css(this,"position"))&&/(auto|scroll)/.test(t.css(this,"overflow")+t.css(this,"overflow-y")+t.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(t.css(this,"overflow")+t.css(this,"overflow-y")+t.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!e.length?t(document):e},zIndex:function(i){if(i!==e)return this.css("zIndex",i);if(this.length)for(var s,n,o=t(this[0]);o.length&&o[0]!==document;){if(s=o.css("position"),("absolute"===s||"relative"===s||"fixed"===s)&&(n=parseInt(o.css("zIndex"),10),!isNaN(n)&&0!==n))return n;o=o.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){o.test(this.id)&&t(this).removeAttr("id")})}}),t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])},focusable:function(e){return i(e,!isNaN(t.attr(e,"tabindex")))},tabbable:function(e){var s=t.attr(e,"tabindex"),n=isNaN(s);return(n||s>=0)&&i(e,!n)}}),t("<a>").outerWidth(1).jquery||t.each(["Width","Height"],function(i,s){function n(e,i,s,n){return t.each(o,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),n&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var o="Width"===s?["Left","Right"]:["Top","Bottom"],a=s.toLowerCase(),r={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+s]=function(i){return i===e?r["inner"+s].call(this):this.each(function(){t(this).css(a,n(this,i)+"px")})},t.fn["outer"+s]=function(e,i){return"number"!=typeof e?r["outer"+s].call(this,e):this.each(function(){t(this).css(a,n(this,e,!0,i)+"px")})}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(t.fn.removeData=function(e){return function(i){return arguments.length?e.call(this,t.camelCase(i)):e.call(this)}}(t.fn.removeData)),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),t.support.selectstart="onselectstart"in document.createElement("div"),t.fn.extend({disableSelection:function(){return this.bind((t.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(t){t.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),t.extend(t.ui,{plugin:{add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i){var s,n=t.plugins[e];if(n&&t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType)for(s=0;n.length>s;s++)t.options[n[s][0]]&&n[s][1].apply(t.element,i)}},hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)}})})(jQuery),function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(o){}n(e)},t.widget=function(i,s,n){var o,a,r,h,l={},c=i.split(".")[0];i=i.split(".")[1],o=c+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][o.toLowerCase()]=function(e){return!!t.data(e,o)},t[c]=t[c]||{},a=t[c][i],r=t[c][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,a,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,o=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=o,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:a?h.widgetEventPrefix||i:i},l,{constructor:r,namespace:c,widgetName:i,widgetFullName:o}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete a._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,o,a=s.call(arguments,1),r=0,h=a.length;h>r;r++)for(n in a[r])o=a[r][n],a[r].hasOwnProperty(n)&&o!==e&&(i[n]=t.isPlainObject(o)?t.isPlainObject(i[n])?t.widget.extend({},i[n],o):t.widget.extend({},o):o);return i},t.widget.bridge=function(i,n){var o=n.prototype.widgetFullName||i;t.fn[i]=function(a){var r="string"==typeof a,h=s.call(arguments,1),l=this;return a=!r&&h.length?t.widget.extend.apply(null,[a].concat(h)):a,r?this.each(function(){var s,n=t.data(this,o);return n?t.isFunction(n[a])&&"_"!==a.charAt(0)?(s=n[a].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+a+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var e=t.data(this,o);e?e.option(a||{})._init():t.data(this,o,new n(a,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.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:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),1===arguments.length)return o[i]===e?null:o[i];o[i]=s}else{if(1===arguments.length)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})}(jQuery),function(t){var e=!1;t(document).mouseup(function(){e=!1}),t.widget("ui.mouse",{version:"1.10.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).bind("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!e){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,o="string"==typeof this.options.cancel&&i.target.nodeName?t(i.target).closest(this.options.cancel).length:!1;return n&&!o&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===t.data(i.target,this.widgetName+".preventClickEvent")&&t.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return s._mouseMove(t)},this._mouseUpDelegate=function(t){return s._mouseUp(t)},t(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),e=!0,!0)):!0}},_mouseMove:function(e){return t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button?this._mouseUp(e):this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}(jQuery),function(t){t.widget("ui.draggable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(t(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){t("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(t(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_mouseDrag:function(e,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"original"!==this.options.helper||t.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1):!1},_mouseUp:function(e){return t("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.element.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;return n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):"document"===n.containment?(this.containment=[0,0,t(document).width()-this.helperProportions.width-this.margins.left,(t(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):n.containment.constructor===Array?(this.containment=n.containment,undefined):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i),undefined):(this.containment=null,undefined)},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:n.scrollTop(),left:n.scrollLeft()}),{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*s}},_generatePosition:function(e){var i,s,n,o,a=this.options,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=e.pageX,l=e.pageY;return this.offset.scroll||(this.offset.scroll={top:r.scrollTop(),left:r.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(s=this.relative_container.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s]),"drag"===e&&(this.positionAbs=this._convertPositionTo("absolute")),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i){var s=t(this).data("ui-draggable"),n=s.options,o=t.extend({},i,{item:s.element});s.sortables=[],t(n.connectToSortable).each(function(){var i=t.data(this,"ui-sortable");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",e,o))})},stop:function(e,i){var s=t(this).data("ui-draggable"),n=t.extend({},i,{item:s.element});t.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(e),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",e,n))})},drag:function(e,i){var s=t(this).data("ui-draggable"),n=this;t.each(s.sortables,function(){var o=!1,a=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,t.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==a&&this.instance._intersectsWith(this.instance.containerCache)&&t.contains(a.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=t(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},e.target=this.instance.currentItem[0],this.instance._mouseCapture(e,!0),this.instance._mouseStart(e,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",e),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(e)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",e,this.instance._uiHash(this.instance)),this.instance._mouseStop(e,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",e),s.dropped=!1)})}}),t.ui.plugin.add("draggable","cursor",{start:function(){var e=t("body"),i=t(this).data("ui-draggable").options;e.css("cursor")&&(i._cursor=e.css("cursor")),e.css("cursor",i.cursor)},stop:function(){var e=t(this).data("ui-draggable").options;e._cursor&&t("body").css("cursor",e._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._opacity&&t(i.helper).css("opacity",s._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(){var e=t(this).data("ui-draggable");e.scrollParent[0]!==document&&"HTML"!==e.scrollParent[0].tagName&&(e.overflowOffset=e.scrollParent.offset())},drag:function(e){var i=t(this).data("ui-draggable"),s=i.options,n=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-e.pageY<s.scrollSensitivity?i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop+s.scrollSpeed:e.pageY-i.overflowOffset.top<s.scrollSensitivity&&(i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-e.pageX<s.scrollSensitivity?i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft+s.scrollSpeed:e.pageX-i.overflowOffset.left<s.scrollSensitivity&&(i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(e.pageY-t(document).scrollTop()<s.scrollSensitivity?n=t(document).scrollTop(t(document).scrollTop()-s.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<s.scrollSensitivity&&(n=t(document).scrollTop(t(document).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(e.pageX-t(document).scrollLeft()<s.scrollSensitivity?n=t(document).scrollLeft(t(document).scrollLeft()-s.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<s.scrollSensitivity&&(n=t(document).scrollLeft(t(document).scrollLeft()+s.scrollSpeed)))),n!==!1&&t.ui.ddmanager&&!s.dropBehaviour&&t.ui.ddmanager.prepareOffsets(i,e)}}),t.ui.plugin.add("draggable","snap",{start:function(){var e=t(this).data("ui-draggable"),i=e.options;e.snapElements=[],t(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var i=t(this),s=i.offset();this!==e.element[0]&&e.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:s.top,left:s.left})})},drag:function(e,i){var s,n,o,a,r,h,l,c,u,d,p=t(this).data("ui-draggable"),f=p.options,g=f.snapTolerance,m=i.offset.left,v=m+p.helperProportions.width,_=i.offset.top,b=_+p.helperProportions.height;for(u=p.snapElements.length-1;u>=0;u--)r=p.snapElements[u].left,h=r+p.snapElements[u].width,l=p.snapElements[u].top,c=l+p.snapElements[u].height,r-g>v||m>h+g||l-g>b||_>c+g||!t.contains(p.snapElements[u].item.ownerDocument,p.snapElements[u].item)?(p.snapElements[u].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=!1):("inner"!==f.snapMode&&(s=g>=Math.abs(l-b),n=g>=Math.abs(c-_),o=g>=Math.abs(r-v),a=g>=Math.abs(h-m),s&&(i.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c,left:0}).top-p.margins.top),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r-p.helperProportions.width}).left-p.margins.left),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h}).left-p.margins.left)),d=s||n||o||a,"outer"!==f.snapMode&&(s=g>=Math.abs(l-_),n=g>=Math.abs(c-b),o=g>=Math.abs(r-m),a=g>=Math.abs(h-v),s&&(i.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c-p.helperProportions.height,left:0}).top-p.margins.top),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r}).left-p.margins.left),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[u].snapping&&(s||n||o||a||d)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=s||n||o||a||d)}}),t.ui.plugin.add("draggable","stack",{start:function(){var e,i=this.data("ui-draggable").options,s=t.makeArray(t(i.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});s.length&&(e=parseInt(t(s[0]).css("zIndex"),10)||0,t(s).each(function(i){t(this).css("zIndex",e+i)}),this.css("zIndex",e+s.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._zIndex&&t(i.helper).css("zIndex",s._zIndex)}})}(jQuery),function(t){function e(t,e,i){return t>e&&e+i>t}t.widget("ui.droppable",{version:"1.10.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept; +this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],undefined):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},t.ui.ddmanager.droppables[i.scope]=t.ui.ddmanager.droppables[i.scope]||[],t.ui.ddmanager.droppables[i.scope].push(this),i.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var e=0,i=t.ui.ddmanager.droppables[this.options.scope];i.length>e;e++)i[e]===this&&i.splice(e,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(e,i){"accept"===e&&(this.accept=t.isFunction(i)?i:function(t){return t.is(i)}),t.Widget.prototype._setOption.apply(this,arguments)},_activate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var e=t.data(this,"ui-droppable");return e.options.greedy&&!e.options.disabled&&e.options.scope===s.options.scope&&e.accept.call(e.element[0],s.currentItem||s.element)&&t.ui.intersect(s,t.extend(e,{offset:e.element.offset()}),e.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}}}),t.ui.intersect=function(t,i,s){if(!i.offset)return!1;var n,o,a=(t.positionAbs||t.position.absolute).left,r=(t.positionAbs||t.position.absolute).top,h=a+t.helperProportions.width,l=r+t.helperProportions.height,c=i.offset.left,u=i.offset.top,d=c+i.proportions().width,p=u+i.proportions().height;switch(s){case"fit":return a>=c&&d>=h&&r>=u&&p>=l;case"intersect":return a+t.helperProportions.width/2>c&&d>h-t.helperProportions.width/2&&r+t.helperProportions.height/2>u&&p>l-t.helperProportions.height/2;case"pointer":return n=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,o=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,e(o,u,i.proportions().height)&&e(n,c,i.proportions().width);case"touch":return(r>=u&&p>=r||l>=u&&p>=l||u>r&&l>p)&&(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d);default:return!1}},t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&t.ui.intersect(e,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").bind("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=t.ui.intersect(e,this,this.options.tolerance),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t.data(this,"ui-droppable").options.scope===n}),o.length&&(s=t.data(o[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").unbind("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}}}(jQuery),function(t){function e(t){return parseInt(t,10)||0}function i(t){return!isNaN(parseInt(t,10))}t.widget("ui.resizable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var e,i,s,n,o,a=this,r=this.options;if(this.element.addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},i=0;e.length>i;i++)s=t.trim(e[i]),o="ui-resizable-"+s,n=t("<div class='ui-resizable-handle "+o+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=t(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),t(this.handles[i]).length},this._renderAxis(this.element),this._handles=t(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),t(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(t(this).removeClass("ui-resizable-autohide"),a._handles.show())}).mouseleave(function(){r.disabled||a.resizing||(t(this).addClass("ui-resizable-autohide"),a._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,o,a=this.options,r=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=e(this.helper.css("left")),n=e(this.helper.css("top")),a.containment&&(s+=t(a.containment).scrollLeft()||0,n+=t(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,o=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===o?this.axis+"-resize":o),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(e){var i,s=this.helper,n={},o=this.originalMousePosition,a=this.axis,r=this.position.top,h=this.position.left,l=this.size.width,c=this.size.height,u=e.pageX-o.left||0,d=e.pageY-o.top||0,p=this._change[a];return p?(i=p.apply(this,[e,u,d]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==h&&(n.left=this.position.left+"px"),this.size.width!==l&&(n.width=this.size.width+"px"),this.size.height!==c&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(n)||this._trigger("resize",e,this.ui()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&t.ui.hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null,h=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(t){var e,s,n,o,a,r=this.options;a={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||t)&&(e=a.minHeight*this.aspectRatio,n=a.minWidth/this.aspectRatio,s=a.maxHeight*this.aspectRatio,o=a.maxWidth/this.aspectRatio,e>a.minWidth&&(a.minWidth=e),n>a.minHeight&&(a.minHeight=n),a.maxWidth>s&&(a.maxWidth=s),a.maxHeight>o&&(a.maxHeight=o)),this._vBoundaries=a},_updateCache:function(t){this.offset=this.helper.offset(),i(t.left)&&(this.position.left=t.left),i(t.top)&&(this.position.top=t.top),i(t.height)&&(this.size.height=t.height),i(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,s=this.size,n=this.axis;return i(t.height)?t.width=t.height*this.aspectRatio:i(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===n&&(t.left=e.left+(s.width-t.width),t.top=null),"nw"===n&&(t.top=e.top+(s.height-t.height),t.left=e.left+(s.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,s=this.axis,n=i(t.width)&&e.maxWidth&&e.maxWidth<t.width,o=i(t.height)&&e.maxHeight&&e.maxHeight<t.height,a=i(t.width)&&e.minWidth&&e.minWidth>t.width,r=i(t.height)&&e.minHeight&&e.minHeight>t.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,c=/sw|nw|w/.test(s),u=/nw|ne|n/.test(s);return a&&(t.width=e.minWidth),r&&(t.height=e.minHeight),n&&(t.width=e.maxWidth),o&&(t.height=e.maxHeight),a&&c&&(t.left=h-e.minWidth),n&&c&&(t.left=h-e.maxWidth),r&&u&&(t.top=l-e.minHeight),o&&u&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var t,e,i,s,n,o=this.helper||this.element;for(t=0;this._proportionallyResizeElements.length>t;t++){if(n=this._proportionallyResizeElements[t],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],e=0;i.length>e;e++)this.borderDif[e]=(parseInt(i[e],10)||0)+(parseInt(s[e],10)||0);n.css({height:o.height()-this.borderDif[0]-this.borderDif[2]||0,width:o.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&t.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,c=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,o,a,r,h,l=t(this).data("ui-resizable"),c=l.options,u=l.element,d=c.containment,p=d instanceof t?d.get(0):/parent/.test(d)?u.parent().get(0):d;p&&(l.containerElement=t(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(i=t(p),s=[],t(["Top","Right","Left","Bottom"]).each(function(t,n){s[t]=e(i.css("padding"+n))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=l.containerOffset,o=l.containerSize.height,a=l.containerSize.width,r=t.ui.hasScroll(p,"left")?p.scrollWidth:a,h=t.ui.hasScroll(p)?p.scrollHeight:o,l.parentData={element:p,left:n.left,top:n.top,width:r,height:h}))},resize:function(e){var i,s,n,o,a=t(this).data("ui-resizable"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio),a.position.top=a._helper?h.top:0),a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top,i=Math.abs((a._helper?a.offset.left-u.left:a.offset.left-u.left)+a.sizeDiff.width),s=Math.abs((a._helper?a.offset.top-u.top:a.offset.top-h.top)+a.sizeDiff.height),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o&&(i-=Math.abs(a.parentData.left)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=function(e){t(e).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css("left"),10),top:parseInt(e.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):t.each(i.alsoResize,function(t){s(t)})},resize:function(e,i){var s=t(this).data("ui-resizable"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0},h=function(e,s){t(e).each(function(){var e=t(this),n=t(this).data("ui-resizable-alsoresize"),o={},a=s&&s.length?s:e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(a,function(t,e){var i=(n[e]||0)+(r[e]||0);i&&i>=0&&(o[e]=i||null)}),e.css(o)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):t.each(n.alsoResize,function(t,e){h(t,e)})},stop:function(){t(this).removeData("resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).data("ui-resizable");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).data("ui-resizable");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,u=Math.round((s.height-n.height)/l)*l,d=n.width+c,p=n.height+u,f=i.maxWidth&&d>i.maxWidth,g=i.maxHeight&&p>i.maxHeight,m=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=h),v&&(p+=l),f&&(d-=h),g&&(p-=l),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):(p-l>0?(e.size.height=p,e.position.top=o.top-u):(e.size.height=l,e.position.top=o.top+n.height-l),d-h>0?(e.size.width=d,e.position.left=o.left-c):(e.size.width=h,e.position.left=o.left+n.width-h))}})}(jQuery),function(t){t.widget("ui.selectable",t.ui.mouse,{version:"1.10.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e=t(i.options.filter,i.element[0]),e.addClass("ui-selectee"),e.each(function(){var e=t(this),i=e.offset();t.data(this,"selectable-item",{element:this,$element:e,left:i.left,top:i.top,right:i.left+e.outerWidth(),bottom:i.top+e.outerHeight(),startselected:!1,selected:e.hasClass("ui-selected"),selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=e.addClass("ui-selectee"),this._mouseInit(),this.helper=t("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):undefined}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||o>i.right||i.top>h||a>i.bottom):"fit"===n.tolerance&&(l=i.left>o&&r>i.right&&i.top>a&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}})}(jQuery),function(t){function e(t,e,i){return t>e&&e+i>t}function i(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))}t.widget("ui.sortable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var t=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===t.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_setOption:function(e,i){"disabled"===e?(this.options[e]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):t.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):undefined}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-t(document).scrollTop()<a.scrollSensitivity?r=t(document).scrollTop(t(document).scrollTop()-a.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<a.scrollSensitivity&&(r=t(document).scrollTop(t(document).scrollTop()+a.scrollSpeed)),e.pageX-t(document).scrollLeft()<a.scrollSensitivity?r=t(document).scrollLeft(t(document).scrollLeft()-a.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<a.scrollSensitivity&&(r=t(document).scrollLeft(t(document).scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break; +this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e(this.positionAbs.left+this.offset.click.left,t.left,t.width),n=i&&s,o=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return n?this.floating?a&&"right"===a||"down"===o?2:1:o&&("down"===o?2:1):!1},_intersectsWithSides:function(t){var i=e(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return this.floating&&o?"right"===o&&s||"left"===o&&!s:n&&("down"===n&&i||"up"===n&&!i)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?e.currentItem.children().each(function(){t("<td> </td>",e.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_contactContainers:function(s){var n,o,a,r,h,l,c,u,d,p,f=null,g=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(f&&t.contains(this.containers[n].element[0],f.element[0]))continue;f=this.containers[n],g=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",s,this._uiHash(this)),this.containers[n].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[g].containerCache.over||(this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1);else{for(a=1e4,r=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",c=this.positionAbs[h]+this.offset.click[h],o=this.items.length-1;o>=0;o--)t.contains(this.containers[g].element[0],this.items[o].item[0])&&this.items[o].item[0]!==this.currentItem[0]&&(!p||e(this.positionAbs.top+this.offset.click.top,this.items[o].top,this.items[o].height))&&(u=this.items[o].item.offset()[h],d=!1,Math.abs(u-c)>Math.abs(u+this.items[o][l]-c)&&(d=!0,u+=this.items[o][l]),a>Math.abs(u-c)&&(a=Math.abs(u-c),r=this.items[o],this.direction=d?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[g])return;r?this._rearrange(s,r,null,!0):this._rearrange(s,null,this.containers[g].element,!0),this._trigger("change",s,this._uiHash()),this.containers[g]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[g],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!e){for(this._trigger("beforeStop",t,this._uiHash()),s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})}(jQuery),function(t,e){var i="ui-effects-";t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\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(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={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"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.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"}}(jQuery),function(){function i(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function s(e,i){var s,n,a={};for(s in i)n=i[s],e[s]!==n&&(o[s]||(t.fx.step[s]||!isNaN(parseFloat(n)))&&(a[s]=n));return a}var n=["add","remove","toggle"],o={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var e=t(this);return{el:e,start:i(this)}}),o=function(){t.each(n,function(t,i){e[i]&&a[i+"Class"](e[i])})},o(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(i){return function(s,n,o,a,r){return"boolean"==typeof n||n===e?o?t.effects.animateClass.call(this,n?{add:s}:{remove:s},o,a,r):i.apply(this,arguments):t.effects.animateClass.call(this,{toggle:s},n,o,a)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function s(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function n(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.10.4",save:function(t,e){for(var s=0;e.length>s;s++)null!==e[s]&&t.data(i+e[s],t[0].style[e[s]])},restore:function(t,s){var n,o;for(o=0;s.length>o;o++)null!==s[o]&&(n=t.data(i+s[o]),n===e&&(n=""),t.css(s[o],n))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function e(e){function s(){t.isFunction(o)&&o.call(n[0]),t.isFunction(e)&&e()}var n=t(this),o=i.complete,r=i.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),s()):a.call(n[0],i,s)}var i=s.apply(this,arguments),n=i.mode,o=i.queue,a=t.effects.effect[i.effect];return t.fx.off||!a?n?this[n](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):o===!1?this.each(e):this.queue(o||"fx",e)},show:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(t.fn.show),hide:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(t.fn.hide),toggle:function(t){return function(e){if(n(e)||"boolean"==typeof e)return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}()}(jQuery),function(t){var e=0,i={},s={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",s.height=s.paddingTop=s.paddingBottom=s.borderTopWidth=s.borderBottomWidth="show",t.widget("ui.accordion",{version:"1.10.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},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t(),content:this.active.length?this.active.next():t()}},_createIcons:function(){var e=this.options.icons;e&&(t("<span>").addClass("ui-accordion-header-icon ui-icon "+e.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass("ui-accordion-icons")) +},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset 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").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),undefined):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),"disabled"===t&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!e),undefined)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),o.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,s=this.options,n=s.heightStyle,o=this.element.parent(),a=this.accordionId="ui-accordion-"+(this.element.attr("id")||++e);this.active=this._findActive(s.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(e){var i=t(this),s=i.attr("id"),n=i.next(),o=n.attr("id");s||(s=a+"-header-"+e,i.attr("id",s)),o||(o=a+"-panel-"+e,n.attr("id",o)),i.attr("aria-controls",o),n.attr("aria-labelledby",s)}).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(s.event),"fill"===n?(i=o.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.headers.each(function(){i-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===n&&(i=0,this.headers.next().each(function(){i=Math.max(i,t(this).css("height","").height())}).height(i))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_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(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n[0]===s[0],a=o&&i.collapsible,r=a?t():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:a?t():n,newPanel:r};e.preventDefault(),o&&!i.collapsible||this._trigger("beforeActivate",e,l)===!1||(i.active=a?!1:this.headers.index(n),this.active=o?t():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),o||(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(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(t,e,n){var o,a,r,h=this,l=0,c=t.length&&(!e.length||t.index()<e.index()),u=this.options.animate||{},d=c&&u.down||u,p=function(){h._toggleComplete(n)};return"number"==typeof d&&(r=d),"string"==typeof d&&(a=d),a=a||d.easing||u.easing,r=r||d.duration||u.duration,e.length?t.length?(o=t.show().outerHeight(),e.animate(i,{duration:r,easing:a,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(s,{duration:r,easing:a,complete:p,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?l+=i.now:"content"!==h.options.heightStyle&&(i.now=Math.round(o-e.outerHeight()-l),l=0)}}),undefined):e.animate(i,r,a,p):t.animate(s,r,a,p)},_toggleComplete:function(t){var e=t.oldPanel;e.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}})}(jQuery),function(t){t.widget("ui.autocomplete",{version:"1.10.4",defaultElement:"<input>",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 e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o?!0:a?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[o||a?"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 e=!0,s=!0,i=!0,undefined;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:case o.NUMPAD_ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=t.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(t){return s?(s=!1,t.preventDefault(),undefined):(this._searchTimeout(t),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(t),this._change(t),undefined)}}),this._initSource(),this.menu=t("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];t(e.target).closest(".ui-menu-item").length||this._delay(function(){var e=this;this.document.one("mousedown",function(s){s.target===e.element[0]||s.target===i||t.contains(i,s.target)||e.close()})})},menufocus:function(e,i){if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",e,{item:s})?e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=t("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e||(e=this.element.closest(".ui-front")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):undefined},_search:function(t){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({label:e.label||e.value,value:e.value||e.label},e)})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<a>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[t](e),undefined):(this.search(null,e),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.text(e))}})}(jQuery),function(t){var e,i="ui-button ui-widget ui-state-default ui-corner-all",s="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",n=function(){var e=t(this);setTimeout(function(){e.find(":ui-button").button("refresh")},1)},o=function(e){var i=e.name,s=e.form,n=t([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?t(s).find("[name='"+i+"']"):t("[name='"+i+"']",e.ownerDocument).filter(function(){return!this.form})),n};t.widget("ui.button",{version:"1.10.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,n),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var s=this,a=this.options,r="checkbox"===this.type||"radio"===this.type,h=r?"":"ui-state-active";null===a.label&&(a.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(i).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){a.disabled||this===e&&t(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){a.disabled||t(this).removeClass(h)}).bind("click"+this.eventNamespace,function(t){a.disabled&&(t.preventDefault(),t.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),r&&this.element.bind("change"+this.eventNamespace,function(){s.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return a.disabled?!1:undefined}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(a.disabled)return!1;t(this).addClass("ui-state-active"),s.buttonElement.attr("aria-pressed","true");var e=s.element[0];o(e).not(e).map(function(){return t(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return a.disabled?!1:(t(this).addClass("ui-state-active"),e=this,s.document.one("mouseup",function(){e=null}),undefined)}).bind("mouseup"+this.eventNamespace,function(){return a.disabled?!1:(t(this).removeClass("ui-state-active"),undefined)}).bind("keydown"+this.eventNamespace,function(e){return a.disabled?!1:((e.keyCode===t.ui.keyCode.SPACE||e.keyCode===t.ui.keyCode.ENTER)&&t(this).addClass("ui-state-active"),undefined)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){t(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(e){e.keyCode===t.ui.keyCode.SPACE&&t(this).click()})),this._setOption("disabled",a.disabled),this._resetButton()},_determineButtonType:function(){var t,e,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(t=this.element.parents().last(),e="label[for='"+this.element.attr("id")+"']",this.buttonElement=t.find(e),this.buttonElement.length||(t=t.length?t.siblings():this.element.siblings(),this.buttonElement=t.filter(e),this.buttonElement.length||(this.buttonElement=t.find(e))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(i+" ui-state-active "+s).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(t,e){return this._super(t,e),"disabled"===t?(this.element.prop("disabled",!!e),e&&this.buttonElement.removeClass("ui-state-focus"),undefined):(this._resetButton(),undefined)},refresh:function(){var e=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");e!==this.options.disabled&&this._setOption("disabled",e),"radio"===this.type?o(this.element[0]).each(function(){t(this).is(":checked")?t(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):t(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),undefined;var e=this.buttonElement.removeClass(s),i=t("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(e.empty()).text(),n=this.options.icons,o=n.primary&&n.secondary,a=[];n.primary||n.secondary?(this.options.text&&a.push("ui-button-text-icon"+(o?"s":n.primary?"-primary":"-secondary")),n.primary&&e.prepend("<span class='ui-button-icon-primary ui-icon "+n.primary+"'></span>"),n.secondary&&e.append("<span class='ui-button-icon-secondary ui-icon "+n.secondary+"'></span>"),this.options.text||(a.push(o?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||e.attr("title",t.trim(i)))):a.push("ui-button-text-only"),e.addClass(a.join(" "))}}),t.widget("ui.buttonset",{version:"1.10.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(t,e){"disabled"===t&&this.buttons.button("option",t,e),this._super(t,e)},refresh:function(){var e="rtl"===this.element.css("direction");this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return t(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(e?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(e?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return t(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})}(jQuery),function(t,e){function i(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.dpDiv=s(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function s(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(i,"mouseout",function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",function(){t.datepicker._isDisabledDatepicker(o.inline?e.parent()[0]:o.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))})}function n(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}t.extend(t.ui,{datepicker:{version:"1.10.4"}});var o,a="datepicker";t.extend(i.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return n(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var n=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?s(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),t.data(e,a,i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.click(function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,a,i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,o,r){var h,l,c,u,d,p=this._dialogInst;return p||(this.uuid+=1,h="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+h+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),t("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},t.data(this._dialogInput[0],a,p)),n(p.settings,o||{}),i=i&&i.constructor===Date?this._formatDate(p,i):i,this._dialogInput.val(i),this._pos=r?r.length?r:[r.pageX,r.pageY]:null,this._pos||(l=document.documentElement.clientWidth,c=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+u,c/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],a,p),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,a);s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,a),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty())},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,a);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,a);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,a)}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(i,s,o){var a,r,h,l,c=this._getInst(i);return 2===arguments.length&&"string"==typeof s?"defaults"===s?t.extend({},t.datepicker._defaults):c?"all"===s?t.extend({},c.settings):this._get(c,s):null:(a=s||{},"string"==typeof s&&(a={},a[s]=o),c&&(this._curInst===c&&this._hideDatepicker(),r=this._getDateDatepicker(i,!0),h=this._getMinMaxDate(c,"min"),l=this._getMinMaxDate(c,"max"),n(c.settings,a),null!==h&&a.dateFormat!==e&&a.minDate===e&&(c.settings.minDate=this._formatDate(c,h)),null!==l&&a.dateFormat!==e&&a.maxDate===e&&(c.settings.maxDate=this._formatDate(c,l)),"disabled"in a&&(a.disabled?this._disableDatepicker(i):this._enableDatepicker(i)),this._attachments(t(i),c),this._autoSize(c),this._setDate(c,r),this._updateAlternate(c),this._updateDatepicker(c)),e)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M"); +break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(i){var s,n,o=t.datepicker._getInst(i.target);return t.datepicker._get(o,"constrainInput")?(s=t.datepicker._possibleChars(t.datepicker._get(o,"dateFormat")),n=String.fromCharCode(null==i.charCode?i.keyCode:i.charCode),i.ctrlKey||i.metaKey||" ">n||!s||s.indexOf(n)>-1):e},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var i,s,o,a,r,h,l;i=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==i&&(t.datepicker._curInst.dpDiv.stop(!0,!0),i&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),s=t.datepicker._get(i,"beforeShow"),o=s?s.apply(e,[e,i]):{},o!==!1&&(n(i.settings,o),i.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(i),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),a=!1,t(e).parents().each(function(){return a|="fixed"===t(this).css("position"),!a}),r={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(i),r=t.datepicker._checkOffset(i,r,a),i.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":a?"fixed":"absolute",display:"none",left:r.left+"px",top:r.top+"px"}),i.inline||(h=t.datepicker._get(i,"showAnim"),l=t.datepicker._get(i,"duration"),i.dpDiv.zIndex(t(e).zIndex()+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[h]?i.dpDiv.show(h,t.datepicker._get(i,"showOptions"),l):i.dpDiv[h||"show"](h?l:null),t.datepicker._shouldFocusInput(i)&&i.input.focus(),t.datepicker._curInst=i))}},_updateDatepicker:function(e){this.maxRows=4,o=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var i,s=this._getNumberOfMonths(e),n=s[1],a=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.focus(),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,r=this._curInst;!r||e&&r!==t.data(e,a)||this._datepickerShowing&&(i=this._get(r,"showAnim"),s=this._get(r,"duration"),n=function(){t.datepicker._tidyDialog(r)},t.effects&&(t.effects.effect[i]||t.effects[i])?r.dpDiv.hide(i,t.datepicker._get(r,"showOptions"),s,n):r.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(r,"onClose"),o&&o.apply(r.input?r.input[0]:null,[r.input?r.input.val():"",r]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).each(function(){t(this).val(n)}))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(i,s,n){if(null==i||null==s)throw"Invalid arguments";if(s="object"==typeof s?""+s:s+"",""===s)return null;var o,a,r,h,l=0,c=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof c?c:(new Date).getFullYear()%100+parseInt(c,10),d=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,p=(n?n.dayNames:null)||this._defaults.dayNames,f=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,g=(n?n.monthNames:null)||this._defaults.monthNames,m=-1,v=-1,_=-1,b=-1,y=!1,w=function(t){var e=i.length>o+1&&i.charAt(o+1)===t;return e&&o++,e},x=function(t){var e=w(t),i="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n=RegExp("^\\d{1,"+i+"}"),o=s.substring(l).match(n);if(!o)throw"Missing number at position "+l;return l+=o[0].length,parseInt(o[0],10)},k=function(i,n,o){var a=-1,r=t.map(w(i)?o:n,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(r,function(t,i){var n=i[1];return s.substr(l,n.length).toLowerCase()===n.toLowerCase()?(a=i[0],l+=n.length,!1):e}),-1!==a)return a+1;throw"Unknown name at position "+l},D=function(){if(s.charAt(l)!==i.charAt(o))throw"Unexpected literal at position "+l;l++};for(o=0;i.length>o;o++)if(y)"'"!==i.charAt(o)||w("'")?D():y=!1;else switch(i.charAt(o)){case"d":_=x("d");break;case"D":k("D",d,p);break;case"o":b=x("o");break;case"m":v=x("m");break;case"M":v=k("M",f,g);break;case"y":m=x("y");break;case"@":h=new Date(x("@")),m=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"!":h=new Date((x("!")-this._ticksTo1970)/1e4),m=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"'":w("'")?D():y=!0;break;default:D()}if(s.length>l&&(r=s.substr(l),!/^\s+/.test(r)))throw"Extra/unparsed characters found in date: "+r;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),b>-1)for(v=1,_=b;;){if(a=this._getDaysInMonth(m,v-1),a>=_)break;v++,_-=a}if(h=this._daylightSavingAdjust(new Date(m,v-1,_)),h.getFullYear()!==m||h.getMonth()+1!==v||h.getDate()!==_)throw"Invalid date";return h},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getYear()%100?"0":"")+e.getYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,i){return t.settings[i]!==e?t.settings[i]:this._defaults[i]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,v,_,b,y,w,x,k,D,C,I,P,T,M,S,z,A,E,H,N,W,O,F,R,L=new Date,j=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(t,"isRTL"),B=this._get(t,"showButtonPanel"),V=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),q=this._getNumberOfMonths(t),U=this._get(t,"showCurrentAtPos"),Q=this._get(t,"stepMonths"),X=1!==q[0]||1!==q[1],$=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-U,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-q[0]*q[1]+1,J.getDate())),e=G&&G>e?G:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-Q,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":V?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+Q,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":V?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?$:j,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),v=this._get(t,"showOtherMonths"),_=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",x=0;q[0]>x;x++){for(k="",this.maxRows=4,D=0;q[1]>D;D++){if(C=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",P="",X){if(P+="<div class='ui-datepicker-group",q[1]>1)switch(D){case 0:P+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case q[1]-1:P+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:P+=" ui-datepicker-group-middle",I=""}P+="'>"}for(P+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===x?Y?o:s:"")+(/all|right/.test(I)&&0===x?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,G,J,x>0||D>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",T=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,T+="<th"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(P+=T+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),z=(this._getFirstDayOfMonth(te,Z)-c+7)%7,A=Math.ceil((z+S)/7),E=X?this.maxRows>A?this.maxRows:A:A,this.maxRows=E,H=this._daylightSavingAdjust(new Date(te,Z,1-z)),N=0;E>N;N++){for(P+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(H)+"</td>":"",w=0;7>w;w++)O=m?m.apply(t.input?t.input[0]:null,[H]):[!0,""],F=H.getMonth()!==Z,R=F&&!_||!O[0]||G&&G>H||J&&H>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(H.getTime()===C.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===H.getTime()&&b.getTime()===C.getTime()?" "+this._dayOverClass:"")+(R?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!v?"":" "+O[1]+(H.getTime()===$.getTime()?" "+this._currentClass:"")+(H.getTime()===j.getTime()?" ui-datepicker-today":""))+"'"+(F&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"'")+"'")+(R?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(F&&!v?" ":R?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===j.getTime()?" ui-state-highlight":"")+(H.getTime()===$.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);P+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),P+="</tbody></table>"+(X?"</div>"+(q[0]>0&&D===q[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=P}y+=k}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),v=this._get(t,"changeYear"),_=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(_||(b+=y+(!o&&m&&v?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),_&&(b+=(!o&&m&&v?"":" ")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.drawYear+("Y"===i?e:0),n=t.drawMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).mousedown(t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new i,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.10.4"}(jQuery),function(t){var e={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};t.widget("ui.dialog",{version:"1.10.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",e)!==!1){if(this._isOpen=!1,this._destroyOverlay(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&t(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",e)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return i&&!e&&this._trigger("focus",t),i},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),undefined):(this._isOpen=!0,this.opener=t(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._trigger("open"),undefined)},_focusTabbable:function(){var t=this.element.find("[autofocus]");t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).focus()},_keepFocus:function(e){function i(){var e=this.document[0].activeElement,i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),undefined;if(e.keyCode===t.ui.keyCode.TAB){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(n.focus(1),e.preventDefault()):(s.focus(1),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(e),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title||t.html(" "),t.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),undefined):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(e.element[0],arguments)},o={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,t("<button></button>",s).button(o).appendTo(e.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),undefined)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){t(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){s.position=[o.position.left-i.document.scrollLeft(),o.position.top-i.document.scrollTop()],t(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw"; +this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){t(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){s.height=t(this).height(),s.width=t(this).width(),t(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(s){var n=this,o=!1,a={};t.each(s,function(t,s){n._setOption(t,s),t in e&&(o=!0),t in i&&(a[t]=s)}),o&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",a)},_setOption:function(t,e){var i,s,n=this.uiDialog;"dialogClass"===t&&n.removeClass(this.options.dialogClass).addClass(e),"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:""+e}),"draggable"===t&&(i=n.is(":data(ui-draggable)"),i&&!e&&n.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&(s=n.is(":data(ui-resizable)"),s&&!e&&n.resizable("destroy"),s&&"string"==typeof e&&n.resizable("option","handles",e),s||e===!1||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=this,i=this.widgetFullName;t.ui.dialog.overlayInstances||this._delay(function(){t.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(s){e._allowInteraction(s)||(s.preventDefault(),t(".ui-dialog:visible:last .ui-dialog-content").data(i)._focusTabbable())})}),this.overlay=t("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),t.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(t.ui.dialog.overlayInstances--,t.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),t.ui.dialog.overlayInstances=0,t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{_position:function(){var e,i=this.options.position,s=[],n=[0,0];i?(("string"==typeof i||"object"==typeof i&&"0"in i)&&(s=i.split?i.split(" "):[i[0],i[1]],1===s.length&&(s[1]=s[0]),t.each(["left","top"],function(t,e){+s[t]===s[t]&&(n[t]=s[t],s[t]=e)}),i={my:s[0]+(0>n[0]?n[0]:"+"+n[0])+" "+s[1]+(0>n[1]?n[1]:"+"+n[1]),at:s.join(" ")}),i=t.extend({},t.ui.dialog.prototype.options.position,i)):i=t.ui.dialog.prototype.options.position,e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.position(i),e||this.uiDialog.hide()}})}(jQuery),function(t){var e=/up|down|vertical/,i=/up|left|vertical|horizontal/;t.effects.effect.blind=function(s,n){var o,a,r,h=t(this),l=["position","top","bottom","left","right","height","width"],c=t.effects.setMode(h,s.mode||"hide"),u=s.direction||"up",d=e.test(u),p=d?"height":"width",f=d?"top":"left",g=i.test(u),m={},v="show"===c;h.parent().is(".ui-effects-wrapper")?t.effects.save(h.parent(),l):t.effects.save(h,l),h.show(),o=t.effects.createWrapper(h).css({overflow:"hidden"}),a=o[p](),r=parseFloat(o.css(f))||0,m[p]=v?a:0,g||(h.css(d?"bottom":"right",0).css(d?"top":"left","auto").css({position:"absolute"}),m[f]=v?r:a+r),v&&(o.css(p,0),g||o.css(f,r+a)),o.animate(m,{duration:s.duration,easing:s.easing,queue:!1,complete:function(){"hide"===c&&h.hide(),t.effects.restore(h,l),t.effects.removeWrapper(h),n()}})}}(jQuery),function(t){t.effects.effect.bounce=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(a,e.mode||"effect"),l="hide"===h,c="show"===h,u=e.direction||"up",d=e.distance,p=e.times||5,f=2*p+(c||l?1:0),g=e.duration/f,m=e.easing,v="up"===u||"down"===u?"top":"left",_="up"===u||"left"===u,b=a.queue(),y=b.length;for((c||l)&&r.push("opacity"),t.effects.save(a,r),a.show(),t.effects.createWrapper(a),d||(d=a["top"===v?"outerHeight":"outerWidth"]()/3),c&&(o={opacity:1},o[v]=0,a.css("opacity",0).css(v,_?2*-d:2*d).animate(o,g,m)),l&&(d/=Math.pow(2,p-1)),o={},o[v]=0,s=0;p>s;s++)n={},n[v]=(_?"-=":"+=")+d,a.animate(n,g,m).animate(o,g,m),d=l?2*d:d/2;l&&(n={opacity:0},n[v]=(_?"-=":"+=")+d,a.animate(n,g,m)),a.queue(function(){l&&a.hide(),t.effects.restore(a,r),t.effects.removeWrapper(a),i()}),y>1&&b.splice.apply(b,[1,0].concat(b.splice(y,f+1))),a.dequeue()}}(jQuery),function(t){t.effects.effect.clip=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(a,e.mode||"hide"),l="show"===h,c=e.direction||"vertical",u="vertical"===c,d=u?"height":"width",p=u?"top":"left",f={};t.effects.save(a,r),a.show(),s=t.effects.createWrapper(a).css({overflow:"hidden"}),n="IMG"===a[0].tagName?s:a,o=n[d](),l&&(n.css(d,0),n.css(p,o/2)),f[d]=l?o:0,f[p]=l?0:o/2,n.animate(f,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){l||a.hide(),t.effects.restore(a,r),t.effects.removeWrapper(a),i()}})}}(jQuery),function(t){t.effects.effect.drop=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","opacity","height","width"],a=t.effects.setMode(n,e.mode||"hide"),r="show"===a,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h?"pos":"neg",u={opacity:r?1:0};t.effects.save(n,o),n.show(),t.effects.createWrapper(n),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===c?-s:s),u[l]=(r?"pos"===c?"+=":"-=":"pos"===c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}(jQuery),function(t){t.effects.effect.explode=function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),g||p.hide(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=t.effects.setMode(p,e.mode||"hide"),g="show"===f,m=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/d),_=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*_,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*v,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*v,top:-o*_}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:_,left:r+(g?l*v:0),top:h+(g?c*_:0),opacity:g?0:1}).animate({left:r+(g?0:l*v),top:h+(g?0:c*_),opacity:g?1:0},e.duration||500,e.easing,s)}}(jQuery),function(t){t.effects.effect.fade=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}}(jQuery),function(t){t.effects.effect.fold=function(e,i){var s,n,o=t(this),a=["position","top","bottom","left","right","height","width"],r=t.effects.setMode(o,e.mode||"hide"),h="show"===r,l="hide"===r,c=e.size||15,u=/([0-9]+)%/.exec(c),d=!!e.horizFirst,p=h!==d,f=p?["width","height"]:["height","width"],g=e.duration/2,m={},v={};t.effects.save(o,a),o.show(),s=t.effects.createWrapper(o).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],u&&(c=parseInt(u[1],10)/100*n[l?0:1]),h&&s.css(d?{height:0,width:c}:{height:c,width:0}),m[f[0]]=h?n[0]:c,v[f[1]]=h?n[1]:0,s.animate(m,g,e.easing).animate(v,g,e.easing,function(){l&&o.hide(),t.effects.restore(o,a),t.effects.removeWrapper(o),i()})}}(jQuery),function(t){t.effects.effect.highlight=function(e,i){var s=t(this),n=["backgroundImage","backgroundColor","opacity"],o=t.effects.setMode(s,e.mode||"show"),a={backgroundColor:s.css("backgroundColor")};"hide"===o&&(a.opacity=0),t.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(a,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&s.hide(),t.effects.restore(s,n),i()}})}}(jQuery),function(t){t.effects.effect.pulsate=function(e,i){var s,n=t(this),o=t.effects.setMode(n,e.mode||"show"),a="show"===o,r="hide"===o,h=a||"hide"===o,l=2*(e.times||5)+(h?1:0),c=e.duration/l,u=0,d=n.queue(),p=d.length;for((a||!n.is(":visible"))&&(n.css("opacity",0).show(),u=1),s=1;l>s;s++)n.animate({opacity:u},c,e.easing),u=1-u;n.animate({opacity:u},c,e.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&d.splice.apply(d,[1,0].concat(d.splice(p,l+1))),n.dequeue()}}(jQuery),function(t){t.effects.effect.puff=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"hide"),o="hide"===n,a=parseInt(e.percent,10)||150,r=a/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};t.extend(e,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:o?a:100,from:o?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(e)},t.effects.effect.scale=function(e,i){var s=t(this),n=t.extend(!0,{},e),o=t.effects.setMode(s,e.mode||"effect"),a=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"hide"===o?0:100),r=e.direction||"both",h=e.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},c={y:"horizontal"!==r?a/100:1,x:"vertical"!==r?a/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==o&&(n.origin=h||["middle","center"],n.restore=!0),n.from=e.from||("show"===o?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*c.y,width:l.width*c.x,outerHeight:l.outerHeight*c.y,outerWidth:l.outerWidth*c.x},n.fade&&("show"===o&&(n.from.opacity=0,n.to.opacity=1),"hide"===o&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},t.effects.effect.size=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],c=["fontSize"],u=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],d=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=t.effects.setMode(a,e.mode||"effect"),f=e.restore||"effect"!==p,g=e.scale||"both",m=e.origin||["middle","center"],v=a.css("position"),_=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&a.show(),s={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()},"toggle"===e.mode&&"show"===p?(a.from=e.to||b,a.to=e.from||s):(a.from=e.from||("show"===p?b:s),a.to=e.to||("hide"===p?b:s)),o={from:{y:a.from.height/s.height,x:a.from.width/s.width},to:{y:a.to.height/s.height,x:a.to.width/s.width}},("box"===g||"both"===g)&&(o.from.y!==o.to.y&&(_=_.concat(u),a.from=t.effects.setTransition(a,u,o.from.y,a.from),a.to=t.effects.setTransition(a,u,o.to.y,a.to)),o.from.x!==o.to.x&&(_=_.concat(d),a.from=t.effects.setTransition(a,d,o.from.x,a.from),a.to=t.effects.setTransition(a,d,o.to.x,a.to))),("content"===g||"both"===g)&&o.from.y!==o.to.y&&(_=_.concat(c).concat(l),a.from=t.effects.setTransition(a,c,o.from.y,a.from),a.to=t.effects.setTransition(a,c,o.to.y,a.to)),t.effects.save(a,_),a.show(),t.effects.createWrapper(a),a.css("overflow","hidden").css(a.from),m&&(n=t.effects.getBaseline(m,s),a.from.top=(s.outerHeight-a.outerHeight())*n.y,a.from.left=(s.outerWidth-a.outerWidth())*n.x,a.to.top=(s.outerHeight-a.to.outerHeight)*n.y,a.to.left=(s.outerWidth-a.to.outerWidth)*n.x),a.css(a.from),("content"===g||"both"===g)&&(u=u.concat(["marginTop","marginBottom"]).concat(c),d=d.concat(["marginLeft","marginRight"]),l=r.concat(u).concat(d),a.find("*[width]").each(function(){var i=t(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&t.effects.save(i,l),i.from={height:s.height*o.from.y,width:s.width*o.from.x,outerHeight:s.outerHeight*o.from.y,outerWidth:s.outerWidth*o.from.x},i.to={height:s.height*o.to.y,width:s.width*o.to.x,outerHeight:s.height*o.to.y,outerWidth:s.width*o.to.x},o.from.y!==o.to.y&&(i.from=t.effects.setTransition(i,u,o.from.y,i.from),i.to=t.effects.setTransition(i,u,o.to.y,i.to)),o.from.x!==o.to.x&&(i.from=t.effects.setTransition(i,d,o.from.x,i.from),i.to=t.effects.setTransition(i,d,o.to.x,i.to)),i.css(i.from),i.animate(i.to,e.duration,e.easing,function(){f&&t.effects.restore(i,l)})})),a.animate(a.to,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){0===a.to.opacity&&a.css("opacity",a.from.opacity),"hide"===p&&a.hide(),t.effects.restore(a,_),f||("static"===v?a.css({position:"relative",top:a.to.top,left:a.to.left}):t.each(["top","left"],function(t,e){a.css(e,function(e,i){var s=parseInt(i,10),n=t?a.to.left:a.to.top;return"auto"===i?n+"px":s+n+"px"})})),t.effects.removeWrapper(a),i()}})}}(jQuery),function(t){t.effects.effect.shake=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","height","width"],a=t.effects.setMode(n,e.mode||"effect"),r=e.direction||"left",h=e.distance||20,l=e.times||3,c=2*l+1,u=Math.round(e.duration/c),d="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},g={},m={},v=n.queue(),_=v.length;for(t.effects.save(n,o),n.show(),t.effects.createWrapper(n),f[d]=(p?"-=":"+=")+h,g[d]=(p?"+=":"-=")+2*h,m[d]=(p?"-=":"+=")+2*h,n.animate(f,u,e.easing),s=1;l>s;s++)n.animate(g,u,e.easing).animate(m,u,e.easing);n.animate(g,u,e.easing).animate(f,u/2,e.easing).queue(function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}),_>1&&v.splice.apply(v,[1,0].concat(v.splice(_,c+1))),n.dequeue()}}(jQuery),function(t){t.effects.effect.slide=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","width","height"],a=t.effects.setMode(n,e.mode||"show"),r="show"===a,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u={};t.effects.save(n,o),n.show(),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0),t.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,c?isNaN(s)?"-"+s:-s:s),u[l]=(r?c?"+=":"-=":c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}(jQuery),function(t){t.effects.effect.transfer=function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),i()})}}(jQuery),function(t){t.widget("ui.menu",{version:"1.10.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left 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 ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&t(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(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||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-corner-all ui-menu-icons").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").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,o,a,r,h=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:h=!1,n=this.previousFilter||"",o=String.fromCharCode(e.keyCode),a=!1,clearTimeout(this.filterTimer),o===n?a=!0:o=n+o,r=RegExp("^"+i(o),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=a&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(o=String.fromCharCode(e.keyCode),r=RegExp("^"+i(o),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=o,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},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(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){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=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){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=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)}})}(jQuery),function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var o,a=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(o!==e)return o;var i,s,n=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=n.children()[0];return t("body").append(n),i=a.offsetWidth,n.css("overflow","scroll"),s=a.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),o=i-s},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return f.apply(this,arguments);e=t.extend({},e);var o,p,g,m,v,_,b=t(e.of),y=t.position.getWithinInfo(e.within),w=t.position.getScrollInfo(y),x=(e.collision||"flip").split(" "),k={};return _=n(b),b[0].preventDefault&&(e.at="left top"),p=_.width,g=_.height,m=_.offset,v=t.extend({},m),t.each(["my","at"],function(){var t,i,s=(e[this]||"").split(" ");1===s.length&&(s=l.test(s[0])?s.concat(["center"]):c.test(s[0])?["center"].concat(s):["center","center"]),s[0]=l.test(s[0])?s[0]:"center",s[1]=c.test(s[1])?s[1]:"center",t=u.exec(s[0]),i=u.exec(s[1]),k[this]=[t?t[0]:0,i?i[0]:0],e[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===x.length&&(x[1]=x[0]),"right"===e.at[0]?v.left+=p:"center"===e.at[0]&&(v.left+=p/2),"bottom"===e.at[1]?v.top+=g:"center"===e.at[1]&&(v.top+=g/2),o=i(k.at,p,g),v.left+=o[0],v.top+=o[1],this.each(function(){var n,l,c=t(this),u=c.outerWidth(),d=c.outerHeight(),f=s(this,"marginLeft"),_=s(this,"marginTop"),D=u+f+s(this,"marginRight")+w.width,C=d+_+s(this,"marginBottom")+w.height,I=t.extend({},v),P=i(k.my,c.outerWidth(),c.outerHeight());"right"===e.my[0]?I.left-=u:"center"===e.my[0]&&(I.left-=u/2),"bottom"===e.my[1]?I.top-=d:"center"===e.my[1]&&(I.top-=d/2),I.left+=P[0],I.top+=P[1],t.support.offsetFractions||(I.left=h(I.left),I.top=h(I.top)),n={marginLeft:f,marginTop:_},t.each(["left","top"],function(i,s){t.ui.position[x[i]]&&t.ui.position[x[i]][s](I,{targetWidth:p,targetHeight:g,elemWidth:u,elemHeight:d,collisionPosition:n,collisionWidth:D,collisionHeight:C,offset:[o[0]+P[0],o[1]+P[1]],my:e.my,at:e.at,within:y,elem:c})}),e.using&&(l=function(t){var i=m.left-I.left,s=i+p-u,n=m.top-I.top,o=n+g-d,h={target:{element:b,left:m.left,top:m.top,width:p,height:g},element:{element:c,left:I.left,top:I.top,width:u,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>o?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(h.horizontal="center"),d>g&&g>r(n+o)&&(h.vertical="middle"),h.important=a(r(i),r(s))>a(r(n),r(o))?"horizontal":"vertical",e.using.call(this,t,h)}),c.offset(t.extend(I,{using:l}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,o=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-o-n;e.collisionWidth>o?h>0&&0>=l?(i=t.left+h+e.collisionWidth-o-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+o-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=a(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,o=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-o-n;e.collisionHeight>o?h>0&&0>=l?(i=t.top+h+e.collisionHeight-o-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+o-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=a(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,a=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-a-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-a-o,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,a=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-a-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-a-o,t.top+p+f+g>c&&(0>s||r(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,t.top+p+f+g>u&&(i>0||u>r(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,o,a=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(a?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},a&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)e.style[o]=s[o];e.appendChild(r),i=a||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()}(jQuery),function(t,e){t.widget("ui.progressbar",{version:"1.10.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=t("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue() +},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(t){return t===e?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),e)},_constrainedValue:function(t){return t===e&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})}(jQuery),function(t){var e=5;t.widget("ui.slider",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){var t=this.handles.add(this.range).filter("a");this._off(t),this._on(t,this._handleEvents),this._hoverable(t),this._focusable(t)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,o.addClass("ui-state-active").focus(),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,o;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,o=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),o!==!1&&this.values(e,i))):i!==this.value()&&(o=this._trigger("slide",t,{handle:this.handles[e],value:i}),o!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),undefined;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),t.Widget.prototype._setOption.apply(this,arguments),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(i){var s,n,o,a,r=t(i.target).data("ui-slider-handle-index");switch(i.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(i.target).addClass("ui-state-active"),s=this._start(i,r),s===!1))return}switch(a=this.options.step,n=o=this.options.values&&this.options.values.length?this.values(r):this.value(),i.keyCode){case t.ui.keyCode.HOME:o=this._valueMin();break;case t.ui.keyCode.END:o=this._valueMax();break;case t.ui.keyCode.PAGE_UP:o=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.PAGE_DOWN:o=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;o=this._trimAlignValue(n+a);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;o=this._trimAlignValue(n-a)}this._slide(i,r,o)},click:function(t){t.preventDefault()},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}})}(jQuery),function(t){function e(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.widget("ui.spinner",{version:"1.10.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e={},i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);void 0!==n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var t=this.element[0]===this.document[0].activeElement;t||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var t=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=t.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*t.height())&&t.height()>0&&t.height(t.height()),this.options.disabled&&this.disable()},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){if("culture"===t||"numberFormat"===t){var i=this._parse(this.element.val());return this.options[t]=e,this.element.val(this._format(i)),void 0}("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(e.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(e.down)),this._super(t,e),"disabled"===t&&(e?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:e(function(t){this._super(t),this._value(this.element.val())}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:e(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:e(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:e(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:e(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(e(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}})}(jQuery),function(t,e){function i(){return++n}function s(t){return t=t.cloneNode(!1),t.hash.length>1&&decodeURIComponent(t.href.replace(o,""))===decodeURIComponent(location.href.replace(o,""))}var n=0,o=/#.*$/;t.widget("ui.tabs",{version:"1.10.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var e=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var i=this.options.active,s=this.options.collapsible,n=location.hash.substring(1);return null===i&&(n&&this.tabs.each(function(s,o){return t(o).attr("aria-controls")===n?(i=s,!1):e}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===i||-1===i)&&(i=this.tabs.length?0:!1)),i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),-1===i&&(i=s?!1:0)),!s&&i===!1&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(i){var s=t(this.document[0].activeElement).closest("li"),n=this.tabs.index(s),o=!0;if(!this._handlePageNav(i)){switch(i.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:n++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:o=!1,n--;break;case t.ui.keyCode.END:n=this.anchors.length-1;break;case t.ui.keyCode.HOME:n=0;break;case t.ui.keyCode.SPACE:return i.preventDefault(),clearTimeout(this.activating),this._activate(n),e;case t.ui.keyCode.ENTER:return i.preventDefault(),clearTimeout(this.activating),this._activate(n===this.options.active?!1:n),e;default:return}i.preventDefault(),clearTimeout(this.activating),n=this._focusNextTab(n,o),i.ctrlKey||(s.attr("aria-selected","false"),this.tabs.eq(n).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",n)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(i){return i.altKey&&i.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):i.altKey&&i.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):e},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).focus(),t},_setOption:function(t,i){return"active"===t?(this._activate(i),e):"disabled"===t?(this._setupDisabled(i),e):(this._super(t,i),"collapsible"===t&&(this.element.toggleClass("ui-tabs-collapsible",i),i||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(i),"heightStyle"===t&&this._setupHeightStyle(i),e)},_tabId:function(t){return t.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=t(),this.anchors.each(function(i,n){var o,a,r,h=t(n).uniqueId().attr("id"),l=t(n).closest("li"),c=l.attr("aria-controls");s(n)?(o=n.hash,a=e.element.find(e._sanitizeSelector(o))):(r=e._tabId(l),o="#"+r,a=e.element.find(o),a.length||(a=e._createPanel(r),a.insertAfter(e.panels[i-1]||e.tablist)),a.attr("aria-live","polite")),a.length&&(e.panels=e.panels.add(a)),c&&l.data("ui-tabs-aria-controls",c),l.attr({"aria-controls":o.substring(1),"aria-labelledby":h}),a.attr("aria-labelledby",h)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(e){t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var i,s=0;i=this.tabs[s];s++)e===!0||-1!==t.inArray(s,e)?t(i).addClass("ui-state-disabled").attr("aria-disabled","true"):t(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=e},_setupEvents:function(e){var i={click:function(t){t.preventDefault()}};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr({"aria-expanded":"false","aria-hidden":"true"}),i.oldTab.attr("aria-selected","false"),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr({"aria-expanded":"true","aria-hidden":"false"}),i.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+t+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var s=this.options.disabled;s!==!1&&(i===e?s=!1:(i=this._getIndex(i),s=t.isArray(s)?t.map(s,function(t){return t!==i?t:null}):t.map(this.tabs,function(t,e){return e!==i?e:null})),this._setupDisabled(s))},disable:function(i){var s=this.options.disabled;if(s!==!0){if(i===e)s=!0;else{if(i=this._getIndex(i),-1!==t.inArray(i,s))return;s=t.isArray(s)?t.merge([i],s).sort():[i]}this._setupDisabled(s)}},load:function(e,i){e=this._getIndex(e);var n=this,o=this.tabs.eq(e),a=o.find(".ui-tabs-anchor"),r=this._getPanelForTab(o),h={tab:o,panel:r};s(a[0])||(this.xhr=t.ajax(this._ajaxSettings(a,i,h)),this.xhr&&"canceled"!==this.xhr.statusText&&(o.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.success(function(t){setTimeout(function(){r.html(t),n._trigger("load",i,h)},1)}).complete(function(t,e){setTimeout(function(){"abort"===e&&n.panels.stop(!1,!0),o.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href"),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}})}(jQuery),function(t){function e(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))}function i(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")}var s=0;t.widget("ui.tooltip",{version:"1.10.4",options:{content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(e,i){var s=this;return"disabled"===e?(this[i?"_disable":"_enable"](),this.options[e]=i,void 0):(this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e)}),void 0)},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.is("[title]")&&e.data("ui-tooltip-title",e.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null; +return"string"==typeof s?this._open(e,t,s):(i=s.call(t[0],function(i){t.data("ui-tooltip-open")&&n._delay(function(){e&&(e.type=o),this._open(e,t,i)})}),i&&this._open(e,t,i),void 0)},_open:function(i,s,n){function o(t){l.of=t,a.is(":hidden")||a.position(l)}var a,r,h,l=t.extend({},this.options.position);if(n){if(a=this._find(s),a.length)return a.find(".ui-tooltip-content").html(n),void 0;s.is("[title]")&&(i&&"mouseover"===i.type?s.attr("title",""):s.removeAttr("title")),a=this._tooltip(s),e(s,a.attr("id")),a.find(".ui-tooltip-content").html(n),this.options.track&&i&&/^mouse/.test(i.type)?(this._on(this.document,{mousemove:o}),o(i)):a.position(t.extend({of:s},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){a.is(":visible")&&(o(l.of),clearInterval(h))},t.fx.interval)),this._trigger("open",i,{tooltip:a}),r={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=s[0],this.close(i,!0)}},remove:function(){this._removeTooltip(a)}},i&&"mouseover"!==i.type||(r.mouseleave="close"),i&&"focusin"!==i.type||(r.focusout="close"),this._on(!0,s,r)}},close:function(e){var s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);this.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&n.attr("title",n.data("ui-tooltip-title")),i(n),o.stop(!0),this._hide(o,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),this.closing=!0,this._trigger("close",e,{tooltip:o}),this.closing=!1)},_tooltip:function(e){var i="ui-tooltip-"+s++,n=t("<div>").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return t("<div>").addClass("ui-tooltip-content").appendTo(n),n.appendTo(this.document[0].body),this.tooltips[i]=e,n},_find:function(e){var i=e.data("ui-tooltip-id");return i?t("#"+i):t()},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0),t("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})}(jQuery);
\ No newline at end of file diff --git a/framework/Web/Javascripts/source/jquery/jquery.js b/framework/Web/Javascripts/source/jquery/jquery.js index 8c24ffc6..3c88fa8b 100755..100644 --- a/framework/Web/Javascripts/source/jquery/jquery.js +++ b/framework/Web/Javascripts/source/jquery/jquery.js @@ -1,235 +1,131 @@  /*! - * jQuery JavaScript Library v1.8.3 + * jQuery JavaScript Library v1.11.0   * http://jquery.com/   *   * Includes Sizzle.js   * http://sizzlejs.com/   * - * Copyright 2012 jQuery Foundation and other contributors + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors   * Released under the MIT license   * http://jquery.org/license   * - * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time) + * Date: 2014-01-23T21:02Z   */ -(function( window, undefined ) { -var -	// A central reference to the root jQuery(document) -	rootjQuery, - -	// The deferred used on DOM ready -	readyList, -	// Use the correct document accordingly with window argument (sandbox) -	document = window.document, -	location = window.location, -	navigator = window.navigator, +(function( global, factory ) { -	// Map over jQuery in case of overwrite -	_jQuery = window.jQuery, +	if ( typeof module === "object" && typeof module.exports === "object" ) { +		// For CommonJS and CommonJS-like environments where a proper window is present, +		// execute the factory and get jQuery +		// For environments that do not inherently posses a window with a document +		// (such as Node.js), expose a jQuery-making factory as module.exports +		// This accentuates the need for the creation of a real window +		// e.g. var jQuery = require("jquery")(window); +		// See ticket #14549 for more info +		module.exports = global.document ? +			factory( global, true ) : +			function( w ) { +				if ( !w.document ) { +					throw new Error( "jQuery requires a window with a document" ); +				} +				return factory( w ); +			}; +	} else { +		factory( global ); +	} -	// Map over the $ in case of overwrite -	_$ = window.$, +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { -	// Save a reference to some core methods -	core_push = Array.prototype.push, -	core_slice = Array.prototype.slice, -	core_indexOf = Array.prototype.indexOf, -	core_toString = Object.prototype.toString, -	core_hasOwn = Object.prototype.hasOwnProperty, -	core_trim = String.prototype.trim, +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// -	// Define a local copy of jQuery -	jQuery = function( selector, context ) { -		// The jQuery object is actually just the init constructor 'enhanced' -		return new jQuery.fn.init( selector, context, rootjQuery ); -	}, +var deletedIds = []; -	// Used for matching numbers -	core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, +var slice = deletedIds.slice; -	// Used for detecting and trimming whitespace -	core_rnotwhite = /\S/, -	core_rspace = /\s+/, +var concat = deletedIds.concat; -	// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) -	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, +var push = deletedIds.push; -	// A simple way to check for HTML strings -	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521) -	rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, +var indexOf = deletedIds.indexOf; -	// Match a standalone tag -	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, +var class2type = {}; -	// JSON RegExp -	rvalidchars = /^[\],:{}\s]*$/, -	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, -	rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, -	rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g, +var toString = class2type.toString; -	// Matches dashed string for camelizing -	rmsPrefix = /^-ms-/, -	rdashAlpha = /-([\da-z])/gi, +var hasOwn = class2type.hasOwnProperty; -	// Used by jQuery.camelCase as callback to replace() -	fcamelCase = function( all, letter ) { -		return ( letter + "" ).toUpperCase(); -	}, +var trim = "".trim; -	// The ready event handler and self cleanup method -	DOMContentLoaded = function() { -		if ( document.addEventListener ) { -			document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); -			jQuery.ready(); -		} else if ( document.readyState === "complete" ) { -			// we're here because readyState === "complete" in oldIE -			// which is good enough for us to call the dom ready! -			document.detachEvent( "onreadystatechange", DOMContentLoaded ); -			jQuery.ready(); -		} -	}, +var support = {}; -	// [[Class]] -> type pairs -	class2type = {}; -jQuery.fn = jQuery.prototype = { -	constructor: jQuery, -	init: function( selector, context, rootjQuery ) { -		var match, elem, ret, doc; -		// Handle $(""), $(null), $(undefined), $(false) -		if ( !selector ) { -			return this; -		} - -		// Handle $(DOMElement) -		if ( selector.nodeType ) { -			this.context = this[0] = selector; -			this.length = 1; -			return this; -		} - -		// Handle HTML strings -		if ( typeof selector === "string" ) { -			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { -				// Assume that strings that start and end with <> are HTML and skip the regex check -				match = [ null, selector, null ]; - -			} else { -				match = rquickExpr.exec( selector ); -			} - -			// Match html or make sure no context is specified for #id -			if ( match && (match[1] || !context) ) { - -				// HANDLE: $(html) -> $(array) -				if ( match[1] ) { -					context = context instanceof jQuery ? context[0] : context; -					doc = ( context && context.nodeType ? context.ownerDocument || context : document ); - -					// scripts is true for back-compat -					selector = jQuery.parseHTML( match[1], doc, true ); -					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { -						this.attr.call( selector, context, true ); -					} - -					return jQuery.merge( this, selector ); - -				// HANDLE: $(#id) -				} else { -					elem = document.getElementById( match[2] ); - -					// Check parentNode to catch when Blackberry 4.6 returns -					// nodes that are no longer in the document #6963 -					if ( elem && elem.parentNode ) { -						// Handle the case where IE and Opera return items -						// by name instead of ID -						if ( elem.id !== match[2] ) { -							return rootjQuery.find( selector ); -						} - -						// Otherwise, we inject the element directly into the jQuery object -						this.length = 1; -						this[0] = elem; -					} +var +	version = "1.11.0", -					this.context = document; -					this.selector = selector; -					return this; -				} +	// Define a local copy of jQuery +	jQuery = function( selector, context ) { +		// The jQuery object is actually just the init constructor 'enhanced' +		// Need init if jQuery is called (just allow error to be thrown if not included) +		return new jQuery.fn.init( selector, context ); +	}, -			// HANDLE: $(expr, $(...)) -			} else if ( !context || context.jquery ) { -				return ( context || rootjQuery ).find( selector ); +	// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) +	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, -			// HANDLE: $(expr, context) -			// (which is just equivalent to: $(context).find(expr) -			} else { -				return this.constructor( context ).find( selector ); -			} +	// Matches dashed string for camelizing +	rmsPrefix = /^-ms-/, +	rdashAlpha = /-([\da-z])/gi, -		// HANDLE: $(function) -		// Shortcut for document ready -		} else if ( jQuery.isFunction( selector ) ) { -			return rootjQuery.ready( selector ); -		} +	// Used by jQuery.camelCase as callback to replace() +	fcamelCase = function( all, letter ) { +		return letter.toUpperCase(); +	}; -		if ( selector.selector !== undefined ) { -			this.selector = selector.selector; -			this.context = selector.context; -		} +jQuery.fn = jQuery.prototype = { +	// The current version of jQuery being used +	jquery: version, -		return jQuery.makeArray( selector, this ); -	}, +	constructor: jQuery,  	// Start with an empty selector  	selector: "", -	// The current version of jQuery being used -	jquery: "1.8.3", -  	// The default length of a jQuery object is 0  	length: 0, -	// The number of elements contained in the matched element set -	size: function() { -		return this.length; -	}, -  	toArray: function() { -		return core_slice.call( this ); +		return slice.call( this );  	},  	// Get the Nth element in the matched element set OR  	// Get the whole matched element set as a clean array  	get: function( num ) { -		return num == null ? +		return num != null ?  			// Return a 'clean' array -			this.toArray() : +			( num < 0 ? this[ num + this.length ] : this[ num ] ) :  			// Return just the object -			( num < 0 ? this[ this.length + num ] : this[ num ] ); +			slice.call( this );  	},  	// Take an array of elements and push it onto the stack  	// (returning the new matched element set) -	pushStack: function( elems, name, selector ) { +	pushStack: function( elems ) {  		// Build a new jQuery matched element set  		var ret = jQuery.merge( this.constructor(), elems );  		// Add the old object onto the stack (as a reference)  		ret.prevObject = this; -  		ret.context = this.context; -		if ( name === "find" ) { -			ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; -		} else if ( name ) { -			ret.selector = this.selector + "." + name + "(" + selector + ")"; -		} -  		// Return the newly-formed element set  		return ret;  	}, @@ -241,18 +137,14 @@ jQuery.fn = jQuery.prototype = {  		return jQuery.each( this, callback, args );  	}, -	ready: function( fn ) { -		// Add the callback -		jQuery.ready.promise().done( fn ); - -		return this; +	map: function( callback ) { +		return this.pushStack( jQuery.map(this, function( elem, i ) { +			return callback.call( elem, i, elem ); +		}));  	}, -	eq: function( i ) { -		i = +i; -		return i === -1 ? -			this.slice( i ) : -			this.slice( i, i + 1 ); +	slice: function() { +		return this.pushStack( slice.apply( this, arguments ) );  	},  	first: function() { @@ -263,15 +155,10 @@ jQuery.fn = jQuery.prototype = {  		return this.eq( -1 );  	}, -	slice: function() { -		return this.pushStack( core_slice.apply( this, arguments ), -			"slice", core_slice.call(arguments).join(",") ); -	}, - -	map: function( callback ) { -		return this.pushStack( jQuery.map(this, function( elem, i ) { -			return callback.call( elem, i, elem ); -		})); +	eq: function( i ) { +		var len = this.length, +			j = +i + ( i < 0 ? len : 0 ); +		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );  	},  	end: function() { @@ -280,16 +167,13 @@ jQuery.fn = jQuery.prototype = {  	// For internal use only.  	// Behaves like an Array's method, not like a jQuery method. -	push: core_push, -	sort: [].sort, -	splice: [].splice +	push: push, +	sort: deletedIds.sort, +	splice: deletedIds.splice  }; -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; -  jQuery.extend = jQuery.fn.extend = function() { -	var options, name, src, copy, copyIsArray, clone, +	var src, copyIsArray, copy, name, options, clone,  		target = arguments[0] || {},  		i = 1,  		length = arguments.length, @@ -298,9 +182,10 @@ jQuery.extend = jQuery.fn.extend = function() {  	// Handle a deep copy situation  	if ( typeof target === "boolean" ) {  		deep = target; -		target = arguments[1] || {}; +  		// skip the boolean and the target -		i = 2; +		target = arguments[ i ] || {}; +		i++;  	}  	// Handle case when target is a string or something (possible in deep copy) @@ -309,9 +194,9 @@ jQuery.extend = jQuery.fn.extend = function() {  	}  	// extend jQuery itself if only one argument is passed -	if ( length === i ) { +	if ( i === length ) {  		target = this; -		--i; +		i--;  	}  	for ( ; i < length; i++ ) { @@ -353,63 +238,17 @@ jQuery.extend = jQuery.fn.extend = function() {  };  jQuery.extend({ -	noConflict: function( deep ) { -		if ( window.$ === jQuery ) { -			window.$ = _$; -		} - -		if ( deep && window.jQuery === jQuery ) { -			window.jQuery = _jQuery; -		} - -		return jQuery; -	}, - -	// Is the DOM ready to be used? Set to true once it occurs. -	isReady: false, +	// Unique for each copy of jQuery on the page +	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), -	// A counter to track how many items to wait for before -	// the ready event fires. See #6781 -	readyWait: 1, +	// Assume jQuery is ready without the ready module +	isReady: true, -	// Hold (or release) the ready event -	holdReady: function( hold ) { -		if ( hold ) { -			jQuery.readyWait++; -		} else { -			jQuery.ready( true ); -		} +	error: function( msg ) { +		throw new Error( msg );  	}, -	// Handle when the DOM is ready -	ready: function( wait ) { - -		// Abort if there are pending holds or we're already ready -		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { -			return; -		} - -		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). -		if ( !document.body ) { -			return setTimeout( jQuery.ready, 1 ); -		} - -		// Remember that the DOM is ready -		jQuery.isReady = true; - -		// If a normal DOM Ready event fired, decrement, and wait if need be -		if ( wait !== true && --jQuery.readyWait > 0 ) { -			return; -		} - -		// If there are functions bound, to execute -		readyList.resolveWith( document, [ jQuery ] ); - -		// Trigger any bound ready events -		if ( jQuery.fn.trigger ) { -			jQuery( document ).trigger("ready").off("ready"); -		} -	}, +	noop: function() {},  	// See test/unit/core.js for details concerning isFunction.  	// Since version 1.3, DOM methods and functions like alert @@ -423,20 +262,28 @@ jQuery.extend({  	},  	isWindow: function( obj ) { +		/* jshint eqeqeq: false */  		return obj != null && obj == obj.window;  	},  	isNumeric: function( obj ) { -		return !isNaN( parseFloat(obj) ) && isFinite( obj ); +		// parseFloat NaNs numeric-cast false positives (null|true|false|"") +		// ...but misinterprets leading-number strings, particularly hex literals ("0x...") +		// subtraction forces infinities to NaN +		return obj - parseFloat( obj ) >= 0;  	}, -	type: function( obj ) { -		return obj == null ? -			String( obj ) : -			class2type[ core_toString.call(obj) ] || "object"; +	isEmptyObject: function( obj ) { +		var name; +		for ( name in obj ) { +			return false; +		} +		return true;  	},  	isPlainObject: function( obj ) { +		var key; +  		// Must be an Object.  		// Because of IE, we also have to check the presence of the constructor property.  		// Make sure that DOM nodes and window objects don't pass through, as well @@ -447,8 +294,8 @@ jQuery.extend({  		try {  			// Not own constructor property must be Object  			if ( obj.constructor && -				!core_hasOwn.call(obj, "constructor") && -				!core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { +				!hasOwn.call(obj, "constructor") && +				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {  				return false;  			}  		} catch ( e ) { @@ -456,107 +303,35 @@ jQuery.extend({  			return false;  		} +		// Support: IE<9 +		// Handle iteration over inherited properties before own properties. +		if ( support.ownLast ) { +			for ( key in obj ) { +				return hasOwn.call( obj, key ); +			} +		} +  		// Own properties are enumerated firstly, so to speed up,  		// if last one is own, then all properties are own. - -		var key;  		for ( key in obj ) {} -		return key === undefined || core_hasOwn.call( obj, key ); -	}, - -	isEmptyObject: function( obj ) { -		var name; -		for ( name in obj ) { -			return false; -		} -		return true; -	}, - -	error: function( msg ) { -		throw new Error( msg ); -	}, - -	// data: string of html -	// context (optional): If specified, the fragment will be created in this context, defaults to document -	// scripts (optional): If true, will include scripts passed in the html string -	parseHTML: function( data, context, scripts ) { -		var parsed; -		if ( !data || typeof data !== "string" ) { -			return null; -		} -		if ( typeof context === "boolean" ) { -			scripts = context; -			context = 0; -		} -		context = context || document; - -		// Single tag -		if ( (parsed = rsingleTag.exec( data )) ) { -			return [ context.createElement( parsed[1] ) ]; -		} - -		parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] ); -		return jQuery.merge( [], -			(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes ); +		return key === undefined || hasOwn.call( obj, key );  	}, -	parseJSON: function( data ) { -		if ( !data || typeof data !== "string") { -			return null; -		} - -		// Make sure leading/trailing whitespace is removed (IE can't handle it) -		data = jQuery.trim( data ); - -		// Attempt to parse using the native JSON parser first -		if ( window.JSON && window.JSON.parse ) { -			return window.JSON.parse( data ); -		} - -		// Make sure the incoming data is actual JSON -		// Logic borrowed from http://json.org/json2.js -		if ( rvalidchars.test( data.replace( rvalidescape, "@" ) -			.replace( rvalidtokens, "]" ) -			.replace( rvalidbraces, "")) ) { - -			return ( new Function( "return " + data ) )(); - -		} -		jQuery.error( "Invalid JSON: " + data ); -	}, - -	// Cross-browser xml parsing -	parseXML: function( data ) { -		var xml, tmp; -		if ( !data || typeof data !== "string" ) { -			return null; -		} -		try { -			if ( window.DOMParser ) { // Standard -				tmp = new DOMParser(); -				xml = tmp.parseFromString( data , "text/xml" ); -			} else { // IE -				xml = new ActiveXObject( "Microsoft.XMLDOM" ); -				xml.async = "false"; -				xml.loadXML( data ); -			} -		} catch( e ) { -			xml = undefined; -		} -		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { -			jQuery.error( "Invalid XML: " + data ); +	type: function( obj ) { +		if ( obj == null ) { +			return obj + "";  		} -		return xml; +		return typeof obj === "object" || typeof obj === "function" ? +			class2type[ toString.call(obj) ] || "object" : +			typeof obj;  	}, -	noop: function() {}, -  	// Evaluates a script in a global context  	// Workarounds based on findings by Jim Driscoll  	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context  	globalEval: function( data ) { -		if ( data && core_rnotwhite.test( data ) ) { +		if ( data && jQuery.trim( data ) ) {  			// We use execScript on Internet Explorer  			// We use an anonymous function so that context is window  			// rather than jQuery in Firefox @@ -578,21 +353,25 @@ jQuery.extend({  	// args is for internal usage only  	each: function( obj, callback, args ) { -		var name, +		var value,  			i = 0,  			length = obj.length, -			isObj = length === undefined || jQuery.isFunction( obj ); +			isArray = isArraylike( obj );  		if ( args ) { -			if ( isObj ) { -				for ( name in obj ) { -					if ( callback.apply( obj[ name ], args ) === false ) { +			if ( isArray ) { +				for ( ; i < length; i++ ) { +					value = callback.apply( obj[ i ], args ); + +					if ( value === false ) {  						break;  					}  				}  			} else { -				for ( ; i < length; ) { -					if ( callback.apply( obj[ i++ ], args ) === false ) { +				for ( i in obj ) { +					value = callback.apply( obj[ i ], args ); + +					if ( value === false ) {  						break;  					}  				} @@ -600,15 +379,19 @@ jQuery.extend({  		// A special, fast, case for the most common use of each  		} else { -			if ( isObj ) { -				for ( name in obj ) { -					if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) { +			if ( isArray ) { +				for ( ; i < length; i++ ) { +					value = callback.call( obj[ i ], i, obj[ i ] ); + +					if ( value === false ) {  						break;  					}  				}  			} else { -				for ( ; i < length; ) { -					if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) { +				for ( i in obj ) { +					value = callback.call( obj[ i ], i, obj[ i ] ); + +					if ( value === false ) {  						break;  					}  				} @@ -619,11 +402,11 @@ jQuery.extend({  	},  	// Use native String.trim function wherever possible -	trim: core_trim && !core_trim.call("\uFEFF\xA0") ? +	trim: trim && !trim.call("\uFEFF\xA0") ?  		function( text ) {  			return text == null ?  				"" : -				core_trim.call( text ); +				trim.call( text );  		} :  		// Otherwise use our own trimming functionality @@ -635,18 +418,16 @@ jQuery.extend({  	// results is for internal usage only  	makeArray: function( arr, results ) { -		var type, -			ret = results || []; +		var ret = results || [];  		if ( arr != null ) { -			// The window, strings (and functions) also have 'length' -			// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 -			type = jQuery.type( arr ); - -			if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) { -				core_push.call( ret, arr ); +			if ( isArraylike( Object(arr) ) ) { +				jQuery.merge( ret, +					typeof arr === "string" ? +					[ arr ] : arr +				);  			} else { -				jQuery.merge( ret, arr ); +				push.call( ret, arr );  			}  		} @@ -657,8 +438,8 @@ jQuery.extend({  		var len;  		if ( arr ) { -			if ( core_indexOf ) { -				return core_indexOf.call( arr, elem, i ); +			if ( indexOf ) { +				return indexOf.call( arr, elem, i );  			}  			len = arr.length; @@ -676,16 +457,17 @@ jQuery.extend({  	},  	merge: function( first, second ) { -		var l = second.length, -			i = first.length, -			j = 0; +		var len = +second.length, +			j = 0, +			i = first.length; -		if ( typeof l === "number" ) { -			for ( ; j < l; j++ ) { -				first[ i++ ] = second[ j ]; -			} +		while ( j < len ) { +			first[ i++ ] = second[ j++ ]; +		} -		} else { +		// Support: IE<9 +		// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) +		if ( len !== len ) {  			while ( second[j] !== undefined ) {  				first[ i++ ] = second[ j++ ];  			} @@ -696,57 +478,56 @@ jQuery.extend({  		return first;  	}, -	grep: function( elems, callback, inv ) { -		var retVal, -			ret = [], +	grep: function( elems, callback, invert ) { +		var callbackInverse, +			matches = [],  			i = 0, -			length = elems.length; -		inv = !!inv; +			length = elems.length, +			callbackExpect = !invert;  		// Go through the array, only saving the items  		// that pass the validator function  		for ( ; i < length; i++ ) { -			retVal = !!callback( elems[ i ], i ); -			if ( inv !== retVal ) { -				ret.push( elems[ i ] ); +			callbackInverse = !callback( elems[ i ], i ); +			if ( callbackInverse !== callbackExpect ) { +				matches.push( elems[ i ] );  			}  		} -		return ret; +		return matches;  	},  	// arg is for internal usage only  	map: function( elems, callback, arg ) { -		var value, key, -			ret = [], +		var value,  			i = 0,  			length = elems.length, -			// jquery objects are treated as arrays -			isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; +			isArray = isArraylike( elems ), +			ret = []; -		// Go through the array, translating each of the items to their +		// Go through the array, translating each of the items to their new values  		if ( isArray ) {  			for ( ; i < length; i++ ) {  				value = callback( elems[ i ], i, arg );  				if ( value != null ) { -					ret[ ret.length ] = value; +					ret.push( value );  				}  			}  		// Go through every key on the object,  		} else { -			for ( key in elems ) { -				value = callback( elems[ key ], key, arg ); +			for ( i in elems ) { +				value = callback( elems[ i ], i, arg );  				if ( value != null ) { -					ret[ ret.length ] = value; +					ret.push( value );  				}  			}  		}  		// Flatten any nested arrays -		return ret.concat.apply( [], ret ); +		return concat.apply( [], ret );  	},  	// A global GUID counter for objects @@ -755,7 +536,7 @@ jQuery.extend({  	// Bind a function to a context, optionally partially applying any  	// arguments.  	proxy: function( fn, context ) { -		var tmp, args, proxy; +		var args, proxy, tmp;  		if ( typeof context === "string" ) {  			tmp = fn[ context ]; @@ -770,9 +551,9 @@ jQuery.extend({  		}  		// Simulated bind -		args = core_slice.call( arguments, 2 ); +		args = slice.call( arguments, 2 );  		proxy = function() { -			return fn.apply( context, args.concat( core_slice.call( arguments ) ) ); +			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );  		};  		// Set the guid of unique handler to the same of original handler, so it can be removed @@ -781,136 +562,2480 @@ jQuery.extend({  		return proxy;  	}, -	// Multifunctional method to get and set values of a collection -	// The value/s can optionally be executed if it's a function -	access: function( elems, fn, key, value, chainable, emptyGet, pass ) { -		var exec, -			bulk = key == null, -			i = 0, -			length = elems.length; +	now: function() { +		return +( new Date() ); +	}, + +	// jQuery.support is not used in Core but other projects attach their +	// properties to it so it needs to exist. +	support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { +	class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { +	var length = obj.length, +		type = jQuery.type( obj ); -		// Sets many values -		if ( key && typeof key === "object" ) { -			for ( i in key ) { -				jQuery.access( elems, fn, i, key[i], 1, emptyGet, value ); +	if ( type === "function" || jQuery.isWindow( obj ) ) { +		return false; +	} + +	if ( obj.nodeType === 1 && length ) { +		return true; +	} + +	return type === "array" || length === 0 || +		typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.16 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-01-13 + */ +(function( window ) { + +var i, +	support, +	Expr, +	getText, +	isXML, +	compile, +	outermostContext, +	sortInput, +	hasDuplicate, + +	// Local document vars +	setDocument, +	document, +	docElem, +	documentIsHTML, +	rbuggyQSA, +	rbuggyMatches, +	matches, +	contains, + +	// Instance-specific data +	expando = "sizzle" + -(new Date()), +	preferredDoc = window.document, +	dirruns = 0, +	done = 0, +	classCache = createCache(), +	tokenCache = createCache(), +	compilerCache = createCache(), +	sortOrder = function( a, b ) { +		if ( a === b ) { +			hasDuplicate = true; +		} +		return 0; +	}, + +	// General-purpose constants +	strundefined = typeof undefined, +	MAX_NEGATIVE = 1 << 31, + +	// Instance methods +	hasOwn = ({}).hasOwnProperty, +	arr = [], +	pop = arr.pop, +	push_native = arr.push, +	push = arr.push, +	slice = arr.slice, +	// Use a stripped-down indexOf if we can't use a native one +	indexOf = arr.indexOf || function( elem ) { +		var i = 0, +			len = this.length; +		for ( ; i < len; i++ ) { +			if ( this[i] === elem ) { +				return i;  			} -			chainable = 1; +		} +		return -1; +	}, -		// Sets one value -		} else if ( value !== undefined ) { -			// Optionally, function values get executed if exec is true -			exec = pass === undefined && jQuery.isFunction( value ); +	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", -			if ( bulk ) { -				// Bulk operations only iterate when executing function values -				if ( exec ) { -					exec = fn; -					fn = function( elem, key, value ) { -						return exec.call( jQuery( elem ), value ); -					}; +	// Regular expressions + +	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace +	whitespace = "[\\x20\\t\\r\\n\\f]", +	// http://www.w3.org/TR/css3-syntax/#characters +	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + +	// Loosely modeled on CSS identifier characters +	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors +	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier +	identifier = characterEncoding.replace( "w", "w#" ), + +	// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors +	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + +		"*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + +	// Prefer arguments quoted, +	//   then not containing pseudos/brackets, +	//   then attribute selectors/non-parenthetical expressions, +	//   then anything else +	// These preferences are here to reduce the number of selectors +	//   needing tokenize in the PSEUDO preFilter +	pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + +	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter +	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + +	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), +	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + +	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + +	rpseudo = new RegExp( pseudos ), +	ridentifier = new RegExp( "^" + identifier + "$" ), + +	matchExpr = { +		"ID": new RegExp( "^#(" + characterEncoding + ")" ), +		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), +		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), +		"ATTR": new RegExp( "^" + attributes ), +		"PSEUDO": new RegExp( "^" + pseudos ), +		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + +			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + +			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ), +		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ), +		// For use in libraries implementing .is() +		// We use this for POS matching in `select` +		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + +			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) +	}, -				// Otherwise they run against the entire set +	rinputs = /^(?:input|select|textarea|button)$/i, +	rheader = /^h\d$/i, + +	rnative = /^[^{]+\{\s*\[native \w/, + +	// Easily-parseable/retrievable ID or TAG or CLASS selectors +	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + +	rsibling = /[+~]/, +	rescape = /'|\\/g, + +	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters +	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), +	funescape = function( _, escaped, escapedWhitespace ) { +		var high = "0x" + escaped - 0x10000; +		// NaN means non-codepoint +		// Support: Firefox +		// Workaround erroneous numeric interpretation of +"0x" +		return high !== high || escapedWhitespace ? +			escaped : +			high < 0 ? +				// BMP codepoint +				String.fromCharCode( high + 0x10000 ) : +				// Supplemental Plane codepoint (surrogate pair) +				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); +	}; + +// Optimize for push.apply( _, NodeList ) +try { +	push.apply( +		(arr = slice.call( preferredDoc.childNodes )), +		preferredDoc.childNodes +	); +	// Support: Android<4.0 +	// Detect silently failing push.apply +	arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { +	push = { apply: arr.length ? + +		// Leverage slice if possible +		function( target, els ) { +			push_native.apply( target, slice.call(els) ); +		} : + +		// Support: IE<9 +		// Otherwise append directly +		function( target, els ) { +			var j = target.length, +				i = 0; +			// Can't trust NodeList.length +			while ( (target[j++] = els[i++]) ) {} +			target.length = j - 1; +		} +	}; +} + +function Sizzle( selector, context, results, seed ) { +	var match, elem, m, nodeType, +		// QSA vars +		i, groups, old, nid, newContext, newSelector; + +	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { +		setDocument( context ); +	} + +	context = context || document; +	results = results || []; + +	if ( !selector || typeof selector !== "string" ) { +		return results; +	} + +	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { +		return []; +	} + +	if ( documentIsHTML && !seed ) { + +		// Shortcuts +		if ( (match = rquickExpr.exec( selector )) ) { +			// Speed-up: Sizzle("#ID") +			if ( (m = match[1]) ) { +				if ( nodeType === 9 ) { +					elem = context.getElementById( m ); +					// Check parentNode to catch when Blackberry 4.6 returns +					// nodes that are no longer in the document (jQuery #6963) +					if ( elem && elem.parentNode ) { +						// Handle the case where IE, Opera, and Webkit return items +						// by name instead of ID +						if ( elem.id === m ) { +							results.push( elem ); +							return results; +						} +					} else { +						return results; +					} +				} else { +					// Context is not a document +					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && +						contains( context, elem ) && elem.id === m ) { +						results.push( elem ); +						return results; +					} +				} + +			// Speed-up: Sizzle("TAG") +			} else if ( match[2] ) { +				push.apply( results, context.getElementsByTagName( selector ) ); +				return results; + +			// Speed-up: Sizzle(".CLASS") +			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { +				push.apply( results, context.getElementsByClassName( m ) ); +				return results; +			} +		} + +		// QSA path +		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { +			nid = old = expando; +			newContext = context; +			newSelector = nodeType === 9 && selector; + +			// qSA works strangely on Element-rooted queries +			// We can work around this by specifying an extra ID on the root +			// and working up from there (Thanks to Andrew Dupont for the technique) +			// IE 8 doesn't work on object elements +			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { +				groups = tokenize( selector ); + +				if ( (old = context.getAttribute("id")) ) { +					nid = old.replace( rescape, "\\$&" );  				} else { -					fn.call( elems, value ); -					fn = null; +					context.setAttribute( "id", nid );  				} +				nid = "[id='" + nid + "'] "; + +				i = groups.length; +				while ( i-- ) { +					groups[i] = nid + toSelector( groups[i] ); +				} +				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; +				newSelector = groups.join(",");  			} -			if ( fn ) { -				for (; i < length; i++ ) { -					fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); +			if ( newSelector ) { +				try { +					push.apply( results, +						newContext.querySelectorAll( newSelector ) +					); +					return results; +				} catch(qsaError) { +				} finally { +					if ( !old ) { +						context.removeAttribute("id"); +					}  				}  			} +		} +	} + +	// All others +	return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + *	deleting the oldest entry + */ +function createCache() { +	var keys = []; + +	function cache( key, value ) { +		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157) +		if ( keys.push( key + " " ) > Expr.cacheLength ) { +			// Only keep the most recent entries +			delete cache[ keys.shift() ]; +		} +		return (cache[ key + " " ] = value); +	} +	return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { +	fn[ expando ] = true; +	return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { +	var div = document.createElement("div"); -			chainable = 1; +	try { +		return !!fn( div ); +	} catch (e) { +		return false; +	} finally { +		// Remove from its parent by default +		if ( div.parentNode ) { +			div.parentNode.removeChild( div );  		} +		// release memory in IE +		div = null; +	} +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { +	var arr = attrs.split("|"), +		i = attrs.length; + +	while ( i-- ) { +		Expr.attrHandle[ arr[i] ] = handler; +	} +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { +	var cur = b && a, +		diff = cur && a.nodeType === 1 && b.nodeType === 1 && +			( ~b.sourceIndex || MAX_NEGATIVE ) - +			( ~a.sourceIndex || MAX_NEGATIVE ); + +	// Use IE sourceIndex if available on both nodes +	if ( diff ) { +		return diff; +	} + +	// Check if b follows a +	if ( cur ) { +		while ( (cur = cur.nextSibling) ) { +			if ( cur === b ) { +				return -1; +			} +		} +	} + +	return a ? 1 : -1; +} -		return chainable ? -			elems : +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { +	return function( elem ) { +		var name = elem.nodeName.toLowerCase(); +		return name === "input" && elem.type === type; +	}; +} -			// Gets -			bulk ? -				fn.call( elems ) : -				length ? fn( elems[0], key ) : emptyGet; +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { +	return function( elem ) { +		var name = elem.nodeName.toLowerCase(); +		return (name === "input" || name === "button") && elem.type === type; +	}; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { +	return markFunction(function( argument ) { +		argument = +argument; +		return markFunction(function( seed, matches ) { +			var j, +				matchIndexes = fn( [], seed.length, argument ), +				i = matchIndexes.length; + +			// Match elements found at the specified indexes +			while ( i-- ) { +				if ( seed[ (j = matchIndexes[i]) ] ) { +					seed[j] = !(matches[j] = seed[j]); +				} +			} +		}); +	}); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { +	return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { +	// documentElement is verified for cases where it doesn't yet exist +	// (such as loading iframes in IE - #4833) +	var documentElement = elem && (elem.ownerDocument || elem).documentElement; +	return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { +	var hasCompare, +		doc = node ? node.ownerDocument || node : preferredDoc, +		parent = doc.defaultView; + +	// If no document and documentElement is available, return +	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { +		return document; +	} + +	// Set our document +	document = doc; +	docElem = doc.documentElement; + +	// Support tests +	documentIsHTML = !isXML( doc ); + +	// Support: IE>8 +	// If iframe document is assigned to "document" variable and if iframe has been reloaded, +	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 +	// IE6-8 do not support the defaultView property so parent will be undefined +	if ( parent && parent !== parent.top ) { +		// IE11 does not have attachEvent, so all must suffer +		if ( parent.addEventListener ) { +			parent.addEventListener( "unload", function() { +				setDocument(); +			}, false ); +		} else if ( parent.attachEvent ) { +			parent.attachEvent( "onunload", function() { +				setDocument(); +			}); +		} +	} + +	/* Attributes +	---------------------------------------------------------------------- */ + +	// Support: IE<8 +	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) +	support.attributes = assert(function( div ) { +		div.className = "i"; +		return !div.getAttribute("className"); +	}); + +	/* getElement(s)By* +	---------------------------------------------------------------------- */ + +	// Check if getElementsByTagName("*") returns only elements +	support.getElementsByTagName = assert(function( div ) { +		div.appendChild( doc.createComment("") ); +		return !div.getElementsByTagName("*").length; +	}); + +	// Check if getElementsByClassName can be trusted +	support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { +		div.innerHTML = "<div class='a'></div><div class='a i'></div>"; + +		// Support: Safari<4 +		// Catch class over-caching +		div.firstChild.className = "i"; +		// Support: Opera<10 +		// Catch gEBCN failure to find non-leading classes +		return div.getElementsByClassName("i").length === 2; +	}); + +	// Support: IE<10 +	// Check if getElementById returns elements by name +	// The broken getElementById methods don't pick up programatically-set names, +	// so use a roundabout getElementsByName test +	support.getById = assert(function( div ) { +		docElem.appendChild( div ).id = expando; +		return !doc.getElementsByName || !doc.getElementsByName( expando ).length; +	}); + +	// ID find and filter +	if ( support.getById ) { +		Expr.find["ID"] = function( id, context ) { +			if ( typeof context.getElementById !== strundefined && documentIsHTML ) { +				var m = context.getElementById( id ); +				// Check parentNode to catch when Blackberry 4.6 returns +				// nodes that are no longer in the document #6963 +				return m && m.parentNode ? [m] : []; +			} +		}; +		Expr.filter["ID"] = function( id ) { +			var attrId = id.replace( runescape, funescape ); +			return function( elem ) { +				return elem.getAttribute("id") === attrId; +			}; +		}; +	} else { +		// Support: IE6/7 +		// getElementById is not reliable as a find shortcut +		delete Expr.find["ID"]; + +		Expr.filter["ID"] =  function( id ) { +			var attrId = id.replace( runescape, funescape ); +			return function( elem ) { +				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); +				return node && node.value === attrId; +			}; +		}; +	} + +	// Tag +	Expr.find["TAG"] = support.getElementsByTagName ? +		function( tag, context ) { +			if ( typeof context.getElementsByTagName !== strundefined ) { +				return context.getElementsByTagName( tag ); +			} +		} : +		function( tag, context ) { +			var elem, +				tmp = [], +				i = 0, +				results = context.getElementsByTagName( tag ); + +			// Filter out possible comments +			if ( tag === "*" ) { +				while ( (elem = results[i++]) ) { +					if ( elem.nodeType === 1 ) { +						tmp.push( elem ); +					} +				} + +				return tmp; +			} +			return results; +		}; + +	// Class +	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { +		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { +			return context.getElementsByClassName( className ); +		} +	}; + +	/* QSA/matchesSelector +	---------------------------------------------------------------------- */ + +	// QSA and matchesSelector support + +	// matchesSelector(:active) reports false when true (IE9/Opera 11.5) +	rbuggyMatches = []; + +	// qSa(:focus) reports false when true (Chrome 21) +	// We allow this because of a bug in IE8/9 that throws an error +	// whenever `document.activeElement` is accessed on an iframe +	// So, we allow :focus to pass through QSA all the time to avoid the IE error +	// See http://bugs.jquery.com/ticket/13378 +	rbuggyQSA = []; + +	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { +		// Build QSA regex +		// Regex strategy adopted from Diego Perini +		assert(function( div ) { +			// Select is set to empty string on purpose +			// This is to test IE's treatment of not explicitly +			// setting a boolean content attribute, +			// since its presence should be enough +			// http://bugs.jquery.com/ticket/12359 +			div.innerHTML = "<select t=''><option selected=''></option></select>"; + +			// Support: IE8, Opera 10-12 +			// Nothing should be selected when empty strings follow ^= or $= or *= +			if ( div.querySelectorAll("[t^='']").length ) { +				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); +			} + +			// Support: IE8 +			// Boolean attributes and "value" are not treated correctly +			if ( !div.querySelectorAll("[selected]").length ) { +				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); +			} + +			// Webkit/Opera - :checked should return selected option elements +			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked +			// IE8 throws error here and will not see later tests +			if ( !div.querySelectorAll(":checked").length ) { +				rbuggyQSA.push(":checked"); +			} +		}); + +		assert(function( div ) { +			// Support: Windows 8 Native Apps +			// The type and name attributes are restricted during .innerHTML assignment +			var input = doc.createElement("input"); +			input.setAttribute( "type", "hidden" ); +			div.appendChild( input ).setAttribute( "name", "D" ); + +			// Support: IE8 +			// Enforce case-sensitivity of name attribute +			if ( div.querySelectorAll("[name=d]").length ) { +				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); +			} + +			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) +			// IE8 throws error here and will not see later tests +			if ( !div.querySelectorAll(":enabled").length ) { +				rbuggyQSA.push( ":enabled", ":disabled" ); +			} + +			// Opera 10-11 does not throw on post-comma invalid pseudos +			div.querySelectorAll("*,:x"); +			rbuggyQSA.push(",.*:"); +		}); +	} + +	if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || +		docElem.mozMatchesSelector || +		docElem.oMatchesSelector || +		docElem.msMatchesSelector) )) ) { + +		assert(function( div ) { +			// Check to see if it's possible to do matchesSelector +			// on a disconnected node (IE 9) +			support.disconnectedMatch = matches.call( div, "div" ); + +			// This should fail with an exception +			// Gecko does not error, returns false instead +			matches.call( div, "[s!='']:x" ); +			rbuggyMatches.push( "!=", pseudos ); +		}); +	} + +	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); +	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + +	/* Contains +	---------------------------------------------------------------------- */ +	hasCompare = rnative.test( docElem.compareDocumentPosition ); + +	// Element contains another +	// Purposefully does not implement inclusive descendent +	// As in, an element does not contain itself +	contains = hasCompare || rnative.test( docElem.contains ) ? +		function( a, b ) { +			var adown = a.nodeType === 9 ? a.documentElement : a, +				bup = b && b.parentNode; +			return a === bup || !!( bup && bup.nodeType === 1 && ( +				adown.contains ? +					adown.contains( bup ) : +					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 +			)); +		} : +		function( a, b ) { +			if ( b ) { +				while ( (b = b.parentNode) ) { +					if ( b === a ) { +						return true; +					} +				} +			} +			return false; +		}; + +	/* Sorting +	---------------------------------------------------------------------- */ + +	// Document order sorting +	sortOrder = hasCompare ? +	function( a, b ) { + +		// Flag for duplicate removal +		if ( a === b ) { +			hasDuplicate = true; +			return 0; +		} + +		// Sort on method existence if only one input has compareDocumentPosition +		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; +		if ( compare ) { +			return compare; +		} + +		// Calculate position if both inputs belong to the same document +		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? +			a.compareDocumentPosition( b ) : + +			// Otherwise we know they are disconnected +			1; + +		// Disconnected nodes +		if ( compare & 1 || +			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + +			// Choose the first element that is related to our preferred document +			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { +				return -1; +			} +			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { +				return 1; +			} + +			// Maintain original order +			return sortInput ? +				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : +				0; +		} + +		return compare & 4 ? -1 : 1; +	} : +	function( a, b ) { +		// Exit early if the nodes are identical +		if ( a === b ) { +			hasDuplicate = true; +			return 0; +		} + +		var cur, +			i = 0, +			aup = a.parentNode, +			bup = b.parentNode, +			ap = [ a ], +			bp = [ b ]; + +		// Parentless nodes are either documents or disconnected +		if ( !aup || !bup ) { +			return a === doc ? -1 : +				b === doc ? 1 : +				aup ? -1 : +				bup ? 1 : +				sortInput ? +				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : +				0; + +		// If the nodes are siblings, we can do a quick check +		} else if ( aup === bup ) { +			return siblingCheck( a, b ); +		} + +		// Otherwise we need full lists of their ancestors for comparison +		cur = a; +		while ( (cur = cur.parentNode) ) { +			ap.unshift( cur ); +		} +		cur = b; +		while ( (cur = cur.parentNode) ) { +			bp.unshift( cur ); +		} + +		// Walk down the tree looking for a discrepancy +		while ( ap[i] === bp[i] ) { +			i++; +		} + +		return i ? +			// Do a sibling check if the nodes have a common ancestor +			siblingCheck( ap[i], bp[i] ) : + +			// Otherwise nodes in our document sort first +			ap[i] === preferredDoc ? -1 : +			bp[i] === preferredDoc ? 1 : +			0; +	}; + +	return doc; +}; + +Sizzle.matches = function( expr, elements ) { +	return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { +	// Set document vars if needed +	if ( ( elem.ownerDocument || elem ) !== document ) { +		setDocument( elem ); +	} + +	// Make sure that attribute selectors are quoted +	expr = expr.replace( rattributeQuotes, "='$1']" ); + +	if ( support.matchesSelector && documentIsHTML && +		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && +		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) { + +		try { +			var ret = matches.call( elem, expr ); + +			// IE 9's matchesSelector returns false on disconnected nodes +			if ( ret || support.disconnectedMatch || +					// As well, disconnected nodes are said to be in a document +					// fragment in IE 9 +					elem.document && elem.document.nodeType !== 11 ) { +				return ret; +			} +		} catch(e) {} +	} + +	return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { +	// Set document vars if needed +	if ( ( context.ownerDocument || context ) !== document ) { +		setDocument( context ); +	} +	return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { +	// Set document vars if needed +	if ( ( elem.ownerDocument || elem ) !== document ) { +		setDocument( elem ); +	} + +	var fn = Expr.attrHandle[ name.toLowerCase() ], +		// Don't get fooled by Object.prototype properties (jQuery #13807) +		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? +			fn( elem, name, !documentIsHTML ) : +			undefined; + +	return val !== undefined ? +		val : +		support.attributes || !documentIsHTML ? +			elem.getAttribute( name ) : +			(val = elem.getAttributeNode(name)) && val.specified ? +				val.value : +				null; +}; + +Sizzle.error = function( msg ) { +	throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { +	var elem, +		duplicates = [], +		j = 0, +		i = 0; + +	// Unless we *know* we can detect duplicates, assume their presence +	hasDuplicate = !support.detectDuplicates; +	sortInput = !support.sortStable && results.slice( 0 ); +	results.sort( sortOrder ); + +	if ( hasDuplicate ) { +		while ( (elem = results[i++]) ) { +			if ( elem === results[ i ] ) { +				j = duplicates.push( i ); +			} +		} +		while ( j-- ) { +			results.splice( duplicates[ j ], 1 ); +		} +	} + +	// Clear input after sorting to release objects +	// See https://github.com/jquery/sizzle/pull/225 +	sortInput = null; + +	return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { +	var node, +		ret = "", +		i = 0, +		nodeType = elem.nodeType; + +	if ( !nodeType ) { +		// If no nodeType, this is expected to be an array +		while ( (node = elem[i++]) ) { +			// Do not traverse comment nodes +			ret += getText( node ); +		} +	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { +		// Use textContent for elements +		// innerText usage removed for consistency of new lines (jQuery #11153) +		if ( typeof elem.textContent === "string" ) { +			return elem.textContent; +		} else { +			// Traverse its children +			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { +				ret += getText( elem ); +			} +		} +	} else if ( nodeType === 3 || nodeType === 4 ) { +		return elem.nodeValue; +	} +	// Do not include comment or processing instruction nodes + +	return ret; +}; + +Expr = Sizzle.selectors = { + +	// Can be adjusted by the user +	cacheLength: 50, + +	createPseudo: markFunction, + +	match: matchExpr, + +	attrHandle: {}, + +	find: {}, + +	relative: { +		">": { dir: "parentNode", first: true }, +		" ": { dir: "parentNode" }, +		"+": { dir: "previousSibling", first: true }, +		"~": { dir: "previousSibling" }  	}, -	now: function() { -		return ( new Date() ).getTime(); +	preFilter: { +		"ATTR": function( match ) { +			match[1] = match[1].replace( runescape, funescape ); + +			// Move the given value to match[3] whether quoted or unquoted +			match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + +			if ( match[2] === "~=" ) { +				match[3] = " " + match[3] + " "; +			} + +			return match.slice( 0, 4 ); +		}, + +		"CHILD": function( match ) { +			/* matches from matchExpr["CHILD"] +				1 type (only|nth|...) +				2 what (child|of-type) +				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) +				4 xn-component of xn+y argument ([+-]?\d*n|) +				5 sign of xn-component +				6 x of xn-component +				7 sign of y-component +				8 y of y-component +			*/ +			match[1] = match[1].toLowerCase(); + +			if ( match[1].slice( 0, 3 ) === "nth" ) { +				// nth-* requires argument +				if ( !match[3] ) { +					Sizzle.error( match[0] ); +				} + +				// numeric x and y parameters for Expr.filter.CHILD +				// remember that false/true cast respectively to 0/1 +				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); +				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + +			// other types prohibit arguments +			} else if ( match[3] ) { +				Sizzle.error( match[0] ); +			} + +			return match; +		}, + +		"PSEUDO": function( match ) { +			var excess, +				unquoted = !match[5] && match[2]; + +			if ( matchExpr["CHILD"].test( match[0] ) ) { +				return null; +			} + +			// Accept quoted arguments as-is +			if ( match[3] && match[4] !== undefined ) { +				match[2] = match[4]; + +			// Strip excess characters from unquoted arguments +			} else if ( unquoted && rpseudo.test( unquoted ) && +				// Get excess from tokenize (recursively) +				(excess = tokenize( unquoted, true )) && +				// advance to the next closing parenthesis +				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + +				// excess is a negative index +				match[0] = match[0].slice( 0, excess ); +				match[2] = unquoted.slice( 0, excess ); +			} + +			// Return only captures needed by the pseudo filter method (type and argument) +			return match.slice( 0, 3 ); +		} +	}, + +	filter: { + +		"TAG": function( nodeNameSelector ) { +			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); +			return nodeNameSelector === "*" ? +				function() { return true; } : +				function( elem ) { +					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; +				}; +		}, + +		"CLASS": function( className ) { +			var pattern = classCache[ className + " " ]; + +			return pattern || +				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && +				classCache( className, function( elem ) { +					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); +				}); +		}, + +		"ATTR": function( name, operator, check ) { +			return function( elem ) { +				var result = Sizzle.attr( elem, name ); + +				if ( result == null ) { +					return operator === "!="; +				} +				if ( !operator ) { +					return true; +				} + +				result += ""; + +				return operator === "=" ? result === check : +					operator === "!=" ? result !== check : +					operator === "^=" ? check && result.indexOf( check ) === 0 : +					operator === "*=" ? check && result.indexOf( check ) > -1 : +					operator === "$=" ? check && result.slice( -check.length ) === check : +					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : +					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : +					false; +			}; +		}, + +		"CHILD": function( type, what, argument, first, last ) { +			var simple = type.slice( 0, 3 ) !== "nth", +				forward = type.slice( -4 ) !== "last", +				ofType = what === "of-type"; + +			return first === 1 && last === 0 ? + +				// Shortcut for :nth-*(n) +				function( elem ) { +					return !!elem.parentNode; +				} : + +				function( elem, context, xml ) { +					var cache, outerCache, node, diff, nodeIndex, start, +						dir = simple !== forward ? "nextSibling" : "previousSibling", +						parent = elem.parentNode, +						name = ofType && elem.nodeName.toLowerCase(), +						useCache = !xml && !ofType; + +					if ( parent ) { + +						// :(first|last|only)-(child|of-type) +						if ( simple ) { +							while ( dir ) { +								node = elem; +								while ( (node = node[ dir ]) ) { +									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { +										return false; +									} +								} +								// Reverse direction for :only-* (if we haven't yet done so) +								start = dir = type === "only" && !start && "nextSibling"; +							} +							return true; +						} + +						start = [ forward ? parent.firstChild : parent.lastChild ]; + +						// non-xml :nth-child(...) stores cache data on `parent` +						if ( forward && useCache ) { +							// Seek `elem` from a previously-cached index +							outerCache = parent[ expando ] || (parent[ expando ] = {}); +							cache = outerCache[ type ] || []; +							nodeIndex = cache[0] === dirruns && cache[1]; +							diff = cache[0] === dirruns && cache[2]; +							node = nodeIndex && parent.childNodes[ nodeIndex ]; + +							while ( (node = ++nodeIndex && node && node[ dir ] || + +								// Fallback to seeking `elem` from the start +								(diff = nodeIndex = 0) || start.pop()) ) { + +								// When found, cache indexes on `parent` and break +								if ( node.nodeType === 1 && ++diff && node === elem ) { +									outerCache[ type ] = [ dirruns, nodeIndex, diff ]; +									break; +								} +							} + +						// Use previously-cached element index if available +						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { +							diff = cache[1]; + +						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) +						} else { +							// Use the same loop as above to seek `elem` from the start +							while ( (node = ++nodeIndex && node && node[ dir ] || +								(diff = nodeIndex = 0) || start.pop()) ) { + +								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { +									// Cache the index of each encountered element +									if ( useCache ) { +										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; +									} + +									if ( node === elem ) { +										break; +									} +								} +							} +						} + +						// Incorporate the offset, then check against cycle size +						diff -= last; +						return diff === first || ( diff % first === 0 && diff / first >= 0 ); +					} +				}; +		}, + +		"PSEUDO": function( pseudo, argument ) { +			// pseudo-class names are case-insensitive +			// http://www.w3.org/TR/selectors/#pseudo-classes +			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters +			// Remember that setFilters inherits from pseudos +			var args, +				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || +					Sizzle.error( "unsupported pseudo: " + pseudo ); + +			// The user may use createPseudo to indicate that +			// arguments are needed to create the filter function +			// just as Sizzle does +			if ( fn[ expando ] ) { +				return fn( argument ); +			} + +			// But maintain support for old signatures +			if ( fn.length > 1 ) { +				args = [ pseudo, pseudo, "", argument ]; +				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? +					markFunction(function( seed, matches ) { +						var idx, +							matched = fn( seed, argument ), +							i = matched.length; +						while ( i-- ) { +							idx = indexOf.call( seed, matched[i] ); +							seed[ idx ] = !( matches[ idx ] = matched[i] ); +						} +					}) : +					function( elem ) { +						return fn( elem, 0, args ); +					}; +			} + +			return fn; +		} +	}, + +	pseudos: { +		// Potentially complex pseudos +		"not": markFunction(function( selector ) { +			// Trim the selector passed to compile +			// to avoid treating leading and trailing +			// spaces as combinators +			var input = [], +				results = [], +				matcher = compile( selector.replace( rtrim, "$1" ) ); + +			return matcher[ expando ] ? +				markFunction(function( seed, matches, context, xml ) { +					var elem, +						unmatched = matcher( seed, null, xml, [] ), +						i = seed.length; + +					// Match elements unmatched by `matcher` +					while ( i-- ) { +						if ( (elem = unmatched[i]) ) { +							seed[i] = !(matches[i] = elem); +						} +					} +				}) : +				function( elem, context, xml ) { +					input[0] = elem; +					matcher( input, null, xml, results ); +					return !results.pop(); +				}; +		}), + +		"has": markFunction(function( selector ) { +			return function( elem ) { +				return Sizzle( selector, elem ).length > 0; +			}; +		}), + +		"contains": markFunction(function( text ) { +			return function( elem ) { +				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; +			}; +		}), + +		// "Whether an element is represented by a :lang() selector +		// is based solely on the element's language value +		// being equal to the identifier C, +		// or beginning with the identifier C immediately followed by "-". +		// The matching of C against the element's language value is performed case-insensitively. +		// The identifier C does not have to be a valid language name." +		// http://www.w3.org/TR/selectors/#lang-pseudo +		"lang": markFunction( function( lang ) { +			// lang value must be a valid identifier +			if ( !ridentifier.test(lang || "") ) { +				Sizzle.error( "unsupported lang: " + lang ); +			} +			lang = lang.replace( runescape, funescape ).toLowerCase(); +			return function( elem ) { +				var elemLang; +				do { +					if ( (elemLang = documentIsHTML ? +						elem.lang : +						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + +						elemLang = elemLang.toLowerCase(); +						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; +					} +				} while ( (elem = elem.parentNode) && elem.nodeType === 1 ); +				return false; +			}; +		}), + +		// Miscellaneous +		"target": function( elem ) { +			var hash = window.location && window.location.hash; +			return hash && hash.slice( 1 ) === elem.id; +		}, + +		"root": function( elem ) { +			return elem === docElem; +		}, + +		"focus": function( elem ) { +			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); +		}, + +		// Boolean properties +		"enabled": function( elem ) { +			return elem.disabled === false; +		}, + +		"disabled": function( elem ) { +			return elem.disabled === true; +		}, + +		"checked": function( elem ) { +			// In CSS3, :checked should return both checked and selected elements +			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked +			var nodeName = elem.nodeName.toLowerCase(); +			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); +		}, + +		"selected": function( elem ) { +			// Accessing this property makes selected-by-default +			// options in Safari work properly +			if ( elem.parentNode ) { +				elem.parentNode.selectedIndex; +			} + +			return elem.selected === true; +		}, + +		// Contents +		"empty": function( elem ) { +			// http://www.w3.org/TR/selectors/#empty-pseudo +			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), +			//   but not by others (comment: 8; processing instruction: 7; etc.) +			// nodeType < 6 works because attributes (2) do not appear as children +			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { +				if ( elem.nodeType < 6 ) { +					return false; +				} +			} +			return true; +		}, + +		"parent": function( elem ) { +			return !Expr.pseudos["empty"]( elem ); +		}, + +		// Element/input types +		"header": function( elem ) { +			return rheader.test( elem.nodeName ); +		}, + +		"input": function( elem ) { +			return rinputs.test( elem.nodeName ); +		}, + +		"button": function( elem ) { +			var name = elem.nodeName.toLowerCase(); +			return name === "input" && elem.type === "button" || name === "button"; +		}, + +		"text": function( elem ) { +			var attr; +			return elem.nodeName.toLowerCase() === "input" && +				elem.type === "text" && + +				// Support: IE<8 +				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text" +				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); +		}, + +		// Position-in-collection +		"first": createPositionalPseudo(function() { +			return [ 0 ]; +		}), + +		"last": createPositionalPseudo(function( matchIndexes, length ) { +			return [ length - 1 ]; +		}), + +		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) { +			return [ argument < 0 ? argument + length : argument ]; +		}), + +		"even": createPositionalPseudo(function( matchIndexes, length ) { +			var i = 0; +			for ( ; i < length; i += 2 ) { +				matchIndexes.push( i ); +			} +			return matchIndexes; +		}), + +		"odd": createPositionalPseudo(function( matchIndexes, length ) { +			var i = 1; +			for ( ; i < length; i += 2 ) { +				matchIndexes.push( i ); +			} +			return matchIndexes; +		}), + +		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) { +			var i = argument < 0 ? argument + length : argument; +			for ( ; --i >= 0; ) { +				matchIndexes.push( i ); +			} +			return matchIndexes; +		}), + +		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) { +			var i = argument < 0 ? argument + length : argument; +			for ( ; ++i < length; ) { +				matchIndexes.push( i ); +			} +			return matchIndexes; +		})  	} -}); +}; -jQuery.ready.promise = function( obj ) { -	if ( !readyList ) { +Expr.pseudos["nth"] = Expr.pseudos["eq"]; -		readyList = jQuery.Deferred(); +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { +	Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { +	Expr.pseudos[ i ] = createButtonPseudo( i ); +} -		// Catch cases where $(document).ready() is called after the browser event has already occurred. -		// we once tried to use readyState "interactive" here, but it caused issues like the one -		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 -		if ( document.readyState === "complete" ) { -			// Handle it asynchronously to allow scripts the opportunity to delay ready -			setTimeout( jQuery.ready, 1 ); +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); -		// Standards-based browsers support DOMContentLoaded -		} else if ( document.addEventListener ) { -			// Use the handy event callback -			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); +function tokenize( selector, parseOnly ) { +	var matched, match, tokens, type, +		soFar, groups, preFilters, +		cached = tokenCache[ selector + " " ]; -			// A fallback to window.onload, that will always work -			window.addEventListener( "load", jQuery.ready, false ); +	if ( cached ) { +		return parseOnly ? 0 : cached.slice( 0 ); +	} -		// If IE event model is used +	soFar = selector; +	groups = []; +	preFilters = Expr.preFilter; + +	while ( soFar ) { + +		// Comma and first run +		if ( !matched || (match = rcomma.exec( soFar )) ) { +			if ( match ) { +				// Don't consume trailing commas as valid +				soFar = soFar.slice( match[0].length ) || soFar; +			} +			groups.push( (tokens = []) ); +		} + +		matched = false; + +		// Combinators +		if ( (match = rcombinators.exec( soFar )) ) { +			matched = match.shift(); +			tokens.push({ +				value: matched, +				// Cast descendant combinators to space +				type: match[0].replace( rtrim, " " ) +			}); +			soFar = soFar.slice( matched.length ); +		} + +		// Filters +		for ( type in Expr.filter ) { +			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || +				(match = preFilters[ type ]( match ))) ) { +				matched = match.shift(); +				tokens.push({ +					value: matched, +					type: type, +					matches: match +				}); +				soFar = soFar.slice( matched.length ); +			} +		} + +		if ( !matched ) { +			break; +		} +	} + +	// Return the length of the invalid excess +	// if we're just parsing +	// Otherwise, throw an error or return tokens +	return parseOnly ? +		soFar.length : +		soFar ? +			Sizzle.error( selector ) : +			// Cache the tokens +			tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { +	var i = 0, +		len = tokens.length, +		selector = ""; +	for ( ; i < len; i++ ) { +		selector += tokens[i].value; +	} +	return selector; +} + +function addCombinator( matcher, combinator, base ) { +	var dir = combinator.dir, +		checkNonElements = base && dir === "parentNode", +		doneName = done++; + +	return combinator.first ? +		// Check against closest ancestor/preceding element +		function( elem, context, xml ) { +			while ( (elem = elem[ dir ]) ) { +				if ( elem.nodeType === 1 || checkNonElements ) { +					return matcher( elem, context, xml ); +				} +			} +		} : + +		// Check against all ancestor/preceding elements +		function( elem, context, xml ) { +			var oldCache, outerCache, +				newCache = [ dirruns, doneName ]; + +			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching +			if ( xml ) { +				while ( (elem = elem[ dir ]) ) { +					if ( elem.nodeType === 1 || checkNonElements ) { +						if ( matcher( elem, context, xml ) ) { +							return true; +						} +					} +				} +			} else { +				while ( (elem = elem[ dir ]) ) { +					if ( elem.nodeType === 1 || checkNonElements ) { +						outerCache = elem[ expando ] || (elem[ expando ] = {}); +						if ( (oldCache = outerCache[ dir ]) && +							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + +							// Assign to newCache so results back-propagate to previous elements +							return (newCache[ 2 ] = oldCache[ 2 ]); +						} else { +							// Reuse newcache so results back-propagate to previous elements +							outerCache[ dir ] = newCache; + +							// A match means we're done; a fail means we have to keep checking +							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { +								return true; +							} +						} +					} +				} +			} +		}; +} + +function elementMatcher( matchers ) { +	return matchers.length > 1 ? +		function( elem, context, xml ) { +			var i = matchers.length; +			while ( i-- ) { +				if ( !matchers[i]( elem, context, xml ) ) { +					return false; +				} +			} +			return true; +		} : +		matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { +	var elem, +		newUnmatched = [], +		i = 0, +		len = unmatched.length, +		mapped = map != null; + +	for ( ; i < len; i++ ) { +		if ( (elem = unmatched[i]) ) { +			if ( !filter || filter( elem, context, xml ) ) { +				newUnmatched.push( elem ); +				if ( mapped ) { +					map.push( i ); +				} +			} +		} +	} + +	return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { +	if ( postFilter && !postFilter[ expando ] ) { +		postFilter = setMatcher( postFilter ); +	} +	if ( postFinder && !postFinder[ expando ] ) { +		postFinder = setMatcher( postFinder, postSelector ); +	} +	return markFunction(function( seed, results, context, xml ) { +		var temp, i, elem, +			preMap = [], +			postMap = [], +			preexisting = results.length, + +			// Get initial elements from seed or context +			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + +			// Prefilter to get matcher input, preserving a map for seed-results synchronization +			matcherIn = preFilter && ( seed || !selector ) ? +				condense( elems, preMap, preFilter, context, xml ) : +				elems, + +			matcherOut = matcher ? +				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, +				postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + +					// ...intermediate processing is necessary +					[] : + +					// ...otherwise use results directly +					results : +				matcherIn; + +		// Find primary matches +		if ( matcher ) { +			matcher( matcherIn, matcherOut, context, xml ); +		} + +		// Apply postFilter +		if ( postFilter ) { +			temp = condense( matcherOut, postMap ); +			postFilter( temp, [], context, xml ); + +			// Un-match failing elements by moving them back to matcherIn +			i = temp.length; +			while ( i-- ) { +				if ( (elem = temp[i]) ) { +					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); +				} +			} +		} + +		if ( seed ) { +			if ( postFinder || preFilter ) { +				if ( postFinder ) { +					// Get the final matcherOut by condensing this intermediate into postFinder contexts +					temp = []; +					i = matcherOut.length; +					while ( i-- ) { +						if ( (elem = matcherOut[i]) ) { +							// Restore matcherIn since elem is not yet a final match +							temp.push( (matcherIn[i] = elem) ); +						} +					} +					postFinder( null, (matcherOut = []), temp, xml ); +				} + +				// Move matched elements from seed to results to keep them synchronized +				i = matcherOut.length; +				while ( i-- ) { +					if ( (elem = matcherOut[i]) && +						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + +						seed[temp] = !(results[temp] = elem); +					} +				} +			} + +		// Add elements to results, through postFinder if defined  		} else { -			// Ensure firing before onload, maybe late but safe also for iframes -			document.attachEvent( "onreadystatechange", DOMContentLoaded ); +			matcherOut = condense( +				matcherOut === results ? +					matcherOut.splice( preexisting, matcherOut.length ) : +					matcherOut +			); +			if ( postFinder ) { +				postFinder( null, results, matcherOut, xml ); +			} else { +				push.apply( results, matcherOut ); +			} +		} +	}); +} -			// A fallback to window.onload, that will always work -			window.attachEvent( "onload", jQuery.ready ); +function matcherFromTokens( tokens ) { +	var checkContext, matcher, j, +		len = tokens.length, +		leadingRelative = Expr.relative[ tokens[0].type ], +		implicitRelative = leadingRelative || Expr.relative[" "], +		i = leadingRelative ? 1 : 0, -			// If IE and not a frame -			// continually check to see if the document is ready -			var top = false; +		// The foundational matcher ensures that elements are reachable from top-level context(s) +		matchContext = addCombinator( function( elem ) { +			return elem === checkContext; +		}, implicitRelative, true ), +		matchAnyContext = addCombinator( function( elem ) { +			return indexOf.call( checkContext, elem ) > -1; +		}, implicitRelative, true ), +		matchers = [ function( elem, context, xml ) { +			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( +				(checkContext = context).nodeType ? +					matchContext( elem, context, xml ) : +					matchAnyContext( elem, context, xml ) ); +		} ]; -			try { -				top = window.frameElement == null && document.documentElement; -			} catch(e) {} +	for ( ; i < len; i++ ) { +		if ( (matcher = Expr.relative[ tokens[i].type ]) ) { +			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; +		} else { +			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); -			if ( top && top.doScroll ) { -				(function doScrollCheck() { -					if ( !jQuery.isReady ) { +			// Return special upon seeing a positional matcher +			if ( matcher[ expando ] ) { +				// Find the next relative operator (if any) for proper handling +				j = ++i; +				for ( ; j < len; j++ ) { +					if ( Expr.relative[ tokens[j].type ] ) { +						break; +					} +				} +				return setMatcher( +					i > 1 && elementMatcher( matchers ), +					i > 1 && toSelector( +						// If the preceding token was a descendant combinator, insert an implicit any-element `*` +						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) +					).replace( rtrim, "$1" ), +					matcher, +					i < j && matcherFromTokens( tokens.slice( i, j ) ), +					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), +					j < len && toSelector( tokens ) +				); +			} +			matchers.push( matcher ); +		} +	} -						try { -							// Use the trick by Diego Perini -							// http://javascript.nwbox.com/IEContentLoaded/ -							top.doScroll("left"); -						} catch(e) { -							return setTimeout( doScrollCheck, 50 ); +	return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { +	var bySet = setMatchers.length > 0, +		byElement = elementMatchers.length > 0, +		superMatcher = function( seed, context, xml, results, outermost ) { +			var elem, j, matcher, +				matchedCount = 0, +				i = "0", +				unmatched = seed && [], +				setMatched = [], +				contextBackup = outermostContext, +				// We must always have either seed elements or outermost context +				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), +				// Use integer dirruns iff this is the outermost matcher +				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), +				len = elems.length; + +			if ( outermost ) { +				outermostContext = context !== document && context; +			} + +			// Add elements passing elementMatchers directly to results +			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below +			// Support: IE<9, Safari +			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id +			for ( ; i !== len && (elem = elems[i]) != null; i++ ) { +				if ( byElement && elem ) { +					j = 0; +					while ( (matcher = elementMatchers[j++]) ) { +						if ( matcher( elem, context, xml ) ) { +							results.push( elem ); +							break;  						} +					} +					if ( outermost ) { +						dirruns = dirrunsUnique; +					} +				} -						// and execute any waiting functions -						jQuery.ready(); +				// Track unmatched elements for set filters +				if ( bySet ) { +					// They will have gone through all possible matchers +					if ( (elem = !matcher && elem) ) { +						matchedCount--;  					} -				})(); + +					// Lengthen the array for every element, matched or not +					if ( seed ) { +						unmatched.push( elem ); +					} +				} +			} + +			// Apply set filters to unmatched elements +			matchedCount += i; +			if ( bySet && i !== matchedCount ) { +				j = 0; +				while ( (matcher = setMatchers[j++]) ) { +					matcher( unmatched, setMatched, context, xml ); +				} + +				if ( seed ) { +					// Reintegrate element matches to eliminate the need for sorting +					if ( matchedCount > 0 ) { +						while ( i-- ) { +							if ( !(unmatched[i] || setMatched[i]) ) { +								setMatched[i] = pop.call( results ); +							} +						} +					} + +					// Discard index placeholder values to get only actual matches +					setMatched = condense( setMatched ); +				} + +				// Add matches to results +				push.apply( results, setMatched ); + +				// Seedless set matches succeeding multiple successful matchers stipulate sorting +				if ( outermost && !seed && setMatched.length > 0 && +					( matchedCount + setMatchers.length ) > 1 ) { + +					Sizzle.uniqueSort( results ); +				} +			} + +			// Override manipulation of globals by nested matchers +			if ( outermost ) { +				dirruns = dirrunsUnique; +				outermostContext = contextBackup; +			} + +			return unmatched; +		}; + +	return bySet ? +		markFunction( superMatcher ) : +		superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { +	var i, +		setMatchers = [], +		elementMatchers = [], +		cached = compilerCache[ selector + " " ]; + +	if ( !cached ) { +		// Generate a function of recursive functions that can be used to check each element +		if ( !group ) { +			group = tokenize( selector ); +		} +		i = group.length; +		while ( i-- ) { +			cached = matcherFromTokens( group[i] ); +			if ( cached[ expando ] ) { +				setMatchers.push( cached ); +			} else { +				elementMatchers.push( cached );  			}  		} + +		// Cache the compiled function +		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );  	} -	return readyList.promise( obj ); +	return cached;  }; -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { -	class2type[ "[object " + name + "]" ] = name.toLowerCase(); +function multipleContexts( selector, contexts, results ) { +	var i = 0, +		len = contexts.length; +	for ( ; i < len; i++ ) { +		Sizzle( selector, contexts[i], results ); +	} +	return results; +} + +function select( selector, context, results, seed ) { +	var i, tokens, token, type, find, +		match = tokenize( selector ); + +	if ( !seed ) { +		// Try to minimize operations if there is only one group +		if ( match.length === 1 ) { + +			// Take a shortcut and set the context if the root selector is an ID +			tokens = match[0] = match[0].slice( 0 ); +			if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && +					support.getById && context.nodeType === 9 && documentIsHTML && +					Expr.relative[ tokens[1].type ] ) { + +				context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; +				if ( !context ) { +					return results; +				} +				selector = selector.slice( tokens.shift().value.length ); +			} + +			// Fetch a seed set for right-to-left matching +			i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; +			while ( i-- ) { +				token = tokens[i]; + +				// Abort if we hit a combinator +				if ( Expr.relative[ (type = token.type) ] ) { +					break; +				} +				if ( (find = Expr.find[ type ]) ) { +					// Search, expanding context for leading sibling combinators +					if ( (seed = find( +						token.matches[0].replace( runescape, funescape ), +						rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context +					)) ) { + +						// If seed is empty or no tokens remain, we can return early +						tokens.splice( i, 1 ); +						selector = seed.length && toSelector( tokens ); +						if ( !selector ) { +							push.apply( results, seed ); +							return results; +						} + +						break; +					} +				} +			} +		} +	} + +	// Compile and execute a filtering function +	// Provide `match` to avoid retokenization if we modified the selector above +	compile( selector, match )( +		seed, +		context, +		!documentIsHTML, +		results, +		rsibling.test( selector ) && testContext( context.parentNode ) || context +	); +	return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { +	// Should return 1, but returns 4 (following) +	return div1.compareDocumentPosition( document.createElement("div") ) & 1;  }); -// All jQuery objects should point back to these -rootjQuery = jQuery(document); +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { +	div.innerHTML = "<a href='#'></a>"; +	return div.firstChild.getAttribute("href") === "#" ; +}) ) { +	addHandle( "type|href|height|width", function( elem, name, isXML ) { +		if ( !isXML ) { +			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); +		} +	}); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { +	div.innerHTML = "<input/>"; +	div.firstChild.setAttribute( "value", "" ); +	return div.firstChild.getAttribute( "value" ) === ""; +}) ) { +	addHandle( "value", function( elem, name, isXML ) { +		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { +			return elem.defaultValue; +		} +	}); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { +	return div.getAttribute("disabled") == null; +}) ) { +	addHandle( booleans, function( elem, name, isXML ) { +		var val; +		if ( !isXML ) { +			return elem[ name ] === true ? name.toLowerCase() : +					(val = elem.getAttributeNode( name )) && val.specified ? +					val.value : +				null; +		} +	}); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { +	if ( jQuery.isFunction( qualifier ) ) { +		return jQuery.grep( elements, function( elem, i ) { +			/* jshint -W018 */ +			return !!qualifier.call( elem, i, elem ) !== not; +		}); + +	} + +	if ( qualifier.nodeType ) { +		return jQuery.grep( elements, function( elem ) { +			return ( elem === qualifier ) !== not; +		}); + +	} + +	if ( typeof qualifier === "string" ) { +		if ( risSimple.test( qualifier ) ) { +			return jQuery.filter( qualifier, elements, not ); +		} + +		qualifier = jQuery.filter( qualifier, elements ); +	} + +	return jQuery.grep( elements, function( elem ) { +		return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; +	}); +} + +jQuery.filter = function( expr, elems, not ) { +	var elem = elems[ 0 ]; + +	if ( not ) { +		expr = ":not(" + expr + ")"; +	} + +	return elems.length === 1 && elem.nodeType === 1 ? +		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : +		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { +			return elem.nodeType === 1; +		})); +}; + +jQuery.fn.extend({ +	find: function( selector ) { +		var i, +			ret = [], +			self = this, +			len = self.length; + +		if ( typeof selector !== "string" ) { +			return this.pushStack( jQuery( selector ).filter(function() { +				for ( i = 0; i < len; i++ ) { +					if ( jQuery.contains( self[ i ], this ) ) { +						return true; +					} +				} +			}) ); +		} + +		for ( i = 0; i < len; i++ ) { +			jQuery.find( selector, self[ i ], ret ); +		} + +		// Needed because $( selector, context ) becomes $( context ).find( selector ) +		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); +		ret.selector = this.selector ? this.selector + " " + selector : selector; +		return ret; +	}, +	filter: function( selector ) { +		return this.pushStack( winnow(this, selector || [], false) ); +	}, +	not: function( selector ) { +		return this.pushStack( winnow(this, selector || [], true) ); +	}, +	is: function( selector ) { +		return !!winnow( +			this, + +			// If this is a positional/relative selector, check membership in the returned set +			// so $("p:first").is("p:last") won't return true for a doc with two "p". +			typeof selector === "string" && rneedsContext.test( selector ) ? +				jQuery( selector ) : +				selector || [], +			false +		).length; +	} +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + +	// Use the correct document accordingly with window argument (sandbox) +	document = window.document, + +	// A simple way to check for HTML strings +	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521) +	// Strict HTML recognition (#11290: must start with <) +	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + +	init = jQuery.fn.init = function( selector, context ) { +		var match, elem; + +		// HANDLE: $(""), $(null), $(undefined), $(false) +		if ( !selector ) { +			return this; +		} + +		// Handle HTML strings +		if ( typeof selector === "string" ) { +			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { +				// Assume that strings that start and end with <> are HTML and skip the regex check +				match = [ null, selector, null ]; + +			} else { +				match = rquickExpr.exec( selector ); +			} + +			// Match html or make sure no context is specified for #id +			if ( match && (match[1] || !context) ) { + +				// HANDLE: $(html) -> $(array) +				if ( match[1] ) { +					context = context instanceof jQuery ? context[0] : context; + +					// scripts is true for back-compat +					// Intentionally let the error be thrown if parseHTML is not present +					jQuery.merge( this, jQuery.parseHTML( +						match[1], +						context && context.nodeType ? context.ownerDocument || context : document, +						true +					) ); + +					// HANDLE: $(html, props) +					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { +						for ( match in context ) { +							// Properties of context are called as methods if possible +							if ( jQuery.isFunction( this[ match ] ) ) { +								this[ match ]( context[ match ] ); + +							// ...and otherwise set as attributes +							} else { +								this.attr( match, context[ match ] ); +							} +						} +					} + +					return this; + +				// HANDLE: $(#id) +				} else { +					elem = document.getElementById( match[2] ); + +					// Check parentNode to catch when Blackberry 4.6 returns +					// nodes that are no longer in the document #6963 +					if ( elem && elem.parentNode ) { +						// Handle the case where IE and Opera return items +						// by name instead of ID +						if ( elem.id !== match[2] ) { +							return rootjQuery.find( selector ); +						} + +						// Otherwise, we inject the element directly into the jQuery object +						this.length = 1; +						this[0] = elem; +					} + +					this.context = document; +					this.selector = selector; +					return this; +				} + +			// HANDLE: $(expr, $(...)) +			} else if ( !context || context.jquery ) { +				return ( context || rootjQuery ).find( selector ); + +			// HANDLE: $(expr, context) +			// (which is just equivalent to: $(context).find(expr) +			} else { +				return this.constructor( context ).find( selector ); +			} + +		// HANDLE: $(DOMElement) +		} else if ( selector.nodeType ) { +			this.context = this[0] = selector; +			this.length = 1; +			return this; + +		// HANDLE: $(function) +		// Shortcut for document ready +		} else if ( jQuery.isFunction( selector ) ) { +			return typeof rootjQuery.ready !== "undefined" ? +				rootjQuery.ready( selector ) : +				// Execute immediately if ready is not present +				selector( jQuery ); +		} + +		if ( selector.selector !== undefined ) { +			this.selector = selector.selector; +			this.context = selector.context; +		} + +		return jQuery.makeArray( selector, this ); +	}; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, +	// methods guaranteed to produce a unique set when starting from a unique set +	guaranteedUnique = { +		children: true, +		contents: true, +		next: true, +		prev: true +	}; + +jQuery.extend({ +	dir: function( elem, dir, until ) { +		var matched = [], +			cur = elem[ dir ]; + +		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { +			if ( cur.nodeType === 1 ) { +				matched.push( cur ); +			} +			cur = cur[dir]; +		} +		return matched; +	}, + +	sibling: function( n, elem ) { +		var r = []; + +		for ( ; n; n = n.nextSibling ) { +			if ( n.nodeType === 1 && n !== elem ) { +				r.push( n ); +			} +		} + +		return r; +	} +}); + +jQuery.fn.extend({ +	has: function( target ) { +		var i, +			targets = jQuery( target, this ), +			len = targets.length; + +		return this.filter(function() { +			for ( i = 0; i < len; i++ ) { +				if ( jQuery.contains( this, targets[i] ) ) { +					return true; +				} +			} +		}); +	}, + +	closest: function( selectors, context ) { +		var cur, +			i = 0, +			l = this.length, +			matched = [], +			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? +				jQuery( selectors, context || this.context ) : +				0; + +		for ( ; i < l; i++ ) { +			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { +				// Always skip document fragments +				if ( cur.nodeType < 11 && (pos ? +					pos.index(cur) > -1 : + +					// Don't pass non-elements to Sizzle +					cur.nodeType === 1 && +						jQuery.find.matchesSelector(cur, selectors)) ) { + +					matched.push( cur ); +					break; +				} +			} +		} + +		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); +	}, + +	// Determine the position of an element within +	// the matched set of elements +	index: function( elem ) { + +		// No argument, return index in parent +		if ( !elem ) { +			return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; +		} + +		// index in selector +		if ( typeof elem === "string" ) { +			return jQuery.inArray( this[0], jQuery( elem ) ); +		} + +		// Locate the position of the desired element +		return jQuery.inArray( +			// If it receives a jQuery object, the first element is used +			elem.jquery ? elem[0] : elem, this ); +	}, + +	add: function( selector, context ) { +		return this.pushStack( +			jQuery.unique( +				jQuery.merge( this.get(), jQuery( selector, context ) ) +			) +		); +	}, + +	addBack: function( selector ) { +		return this.add( selector == null ? +			this.prevObject : this.prevObject.filter(selector) +		); +	} +}); + +function sibling( cur, dir ) { +	do { +		cur = cur[ dir ]; +	} while ( cur && cur.nodeType !== 1 ); + +	return cur; +} + +jQuery.each({ +	parent: function( elem ) { +		var parent = elem.parentNode; +		return parent && parent.nodeType !== 11 ? parent : null; +	}, +	parents: function( elem ) { +		return jQuery.dir( elem, "parentNode" ); +	}, +	parentsUntil: function( elem, i, until ) { +		return jQuery.dir( elem, "parentNode", until ); +	}, +	next: function( elem ) { +		return sibling( elem, "nextSibling" ); +	}, +	prev: function( elem ) { +		return sibling( elem, "previousSibling" ); +	}, +	nextAll: function( elem ) { +		return jQuery.dir( elem, "nextSibling" ); +	}, +	prevAll: function( elem ) { +		return jQuery.dir( elem, "previousSibling" ); +	}, +	nextUntil: function( elem, i, until ) { +		return jQuery.dir( elem, "nextSibling", until ); +	}, +	prevUntil: function( elem, i, until ) { +		return jQuery.dir( elem, "previousSibling", until ); +	}, +	siblings: function( elem ) { +		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); +	}, +	children: function( elem ) { +		return jQuery.sibling( elem.firstChild ); +	}, +	contents: function( elem ) { +		return jQuery.nodeName( elem, "iframe" ) ? +			elem.contentDocument || elem.contentWindow.document : +			jQuery.merge( [], elem.childNodes ); +	} +}, function( name, fn ) { +	jQuery.fn[ name ] = function( until, selector ) { +		var ret = jQuery.map( this, fn, until ); + +		if ( name.slice( -5 ) !== "Until" ) { +			selector = until; +		} + +		if ( selector && typeof selector === "string" ) { +			ret = jQuery.filter( selector, ret ); +		} + +		if ( this.length > 1 ) { +			// Remove duplicates +			if ( !guaranteedUnique[ name ] ) { +				ret = jQuery.unique( ret ); +			} + +			// Reverse order for parents* and prev-derivatives +			if ( rparentsprev.test( name ) ) { +				ret = ret.reverse(); +			} +		} + +		return this.pushStack( ret ); +	}; +}); +var rnotwhite = (/\S+/g); + + +  // String to Object options format cache  var optionsCache = {};  // Convert String-formatted options into Object-formatted ones and store in cache  function createOptions( options ) {  	var object = optionsCache[ options ] = {}; -	jQuery.each( options.split( core_rspace ), function( _, flag ) { +	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {  		object[ flag ] = true;  	});  	return object; @@ -946,18 +3071,18 @@ jQuery.Callbacks = function( options ) {  		( optionsCache[ options ] || createOptions( options ) ) :  		jQuery.extend( {}, options ); -	var // Last fire value (for non-forgettable lists) +	var // Flag to know if list is currently firing +		firing, +		// Last fire value (for non-forgettable lists)  		memory,  		// Flag to know if list was already fired  		fired, -		// Flag to know if list is currently firing -		firing, -		// First callback to fire (used internally by add and fireWith) -		firingStart,  		// End of the loop when firing  		firingLength,  		// Index of currently firing callback (modified by remove if needed)  		firingIndex, +		// First callback to fire (used internally by add and fireWith) +		firingStart,  		// Actual callback list  		list = [],  		// Stack of fire calls for repeatable lists @@ -1027,7 +3152,7 @@ jQuery.Callbacks = function( options ) {  				if ( list ) {  					jQuery.each( arguments, function( _, arg ) {  						var index; -						while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { +						while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {  							list.splice( index, 1 );  							// Handle firing indexes  							if ( firing ) { @@ -1043,13 +3168,15 @@ jQuery.Callbacks = function( options ) {  				}  				return this;  			}, -			// Control if a given callback is in the list +			// Check if a given callback is in the list. +			// If no argument is given, return whether or not list has callbacks attached.  			has: function( fn ) { -				return jQuery.inArray( fn, list ) > -1; +				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );  			},  			// Remove all callbacks from the list  			empty: function() {  				list = []; +				firingLength = 0;  				return this;  			},  			// Have the list do nothing anymore @@ -1075,9 +3202,9 @@ jQuery.Callbacks = function( options ) {  			},  			// Call all callbacks with the given context and arguments  			fireWith: function( context, args ) { -				args = args || []; -				args = [ context, args.slice ? args.slice() : args ];  				if ( list && ( !fired || stack ) ) { +					args = args || []; +					args = [ context, args.slice ? args.slice() : args ];  					if ( firing ) {  						stack.push( args );  					} else { @@ -1099,6 +3226,8 @@ jQuery.Callbacks = function( options ) {  	return self;  }; + +  jQuery.extend({  	Deferred: function( func ) { @@ -1121,23 +3250,19 @@ jQuery.extend({  					var fns = arguments;  					return jQuery.Deferred(function( newDefer ) {  						jQuery.each( tuples, function( i, tuple ) { -							var action = tuple[ 0 ], -								fn = fns[ i ]; +							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];  							// deferred[ done | fail | progress ] for forwarding actions to newDefer -							deferred[ tuple[1] ]( jQuery.isFunction( fn ) ? -								function() { -									var returned = fn.apply( this, arguments ); -									if ( returned && jQuery.isFunction( returned.promise ) ) { -										returned.promise() -											.done( newDefer.resolve ) -											.fail( newDefer.reject ) -											.progress( newDefer.notify ); -									} else { -										newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); -									} -								} : -								newDefer[ action ] -							); +							deferred[ tuple[1] ](function() { +								var returned = fn && fn.apply( this, arguments ); +								if ( returned && jQuery.isFunction( returned.promise ) ) { +									returned.promise() +										.done( newDefer.resolve ) +										.fail( newDefer.reject ) +										.progress( newDefer.notify ); +								} else { +									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); +								} +							});  						});  						fns = null;  					}).promise(); @@ -1171,8 +3296,11 @@ jQuery.extend({  				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );  			} -			// deferred[ resolve | reject | notify ] = list.fire -			deferred[ tuple[0] ] = list.fire; +			// deferred[ resolve | reject | notify ] +			deferred[ tuple[0] ] = function() { +				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); +				return this; +			};  			deferred[ tuple[0] + "With" ] = list.fireWith;  		}); @@ -1191,7 +3319,7 @@ jQuery.extend({  	// Deferred helper  	when: function( subordinate /* , ..., subordinateN */ ) {  		var i = 0, -			resolveValues = core_slice.call( arguments ), +			resolveValues = slice.call( arguments ),  			length = resolveValues.length,  			// the count of uncompleted subordinates @@ -1204,10 +3332,11 @@ jQuery.extend({  			updateFunc = function( i, contexts, values ) {  				return function( value ) {  					contexts[ i ] = this; -					values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; -					if( values === progressValues ) { +					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; +					if ( values === progressValues ) {  						deferred.notifyWith( contexts, values ); -					} else if ( !( --remaining ) ) { + +					} else if ( !(--remaining) ) {  						deferred.resolveWith( contexts, values );  					}  				}; @@ -1240,495 +3369,520 @@ jQuery.extend({  		return deferred.promise();  	}  }); -jQuery.support = (function() { -	var support, -		all, -		a, -		select, -		opt, -		input, -		fragment, -		eventName, -		i, -		isSupported, -		clickFn, -		div = document.createElement("div"); -	// Setup -	div.setAttribute( "className", "t" ); -	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; +// The deferred used on DOM ready +var readyList; -	// Support tests won't run in some limited or non-browser environments -	all = div.getElementsByTagName("*"); -	a = div.getElementsByTagName("a")[ 0 ]; -	if ( !all || !a || !all.length ) { -		return {}; -	} +jQuery.fn.ready = function( fn ) { +	// Add the callback +	jQuery.ready.promise().done( fn ); -	// First batch of tests -	select = document.createElement("select"); -	opt = select.appendChild( document.createElement("option") ); -	input = div.getElementsByTagName("input")[ 0 ]; +	return this; +}; -	a.style.cssText = "top:1px;float:left;opacity:.5"; -	support = { -		// IE strips leading whitespace when .innerHTML is used -		leadingWhitespace: ( div.firstChild.nodeType === 3 ), +jQuery.extend({ +	// Is the DOM ready to be used? Set to true once it occurs. +	isReady: false, -		// Make sure that tbody elements aren't automatically inserted -		// IE will insert them into empty tables -		tbody: !div.getElementsByTagName("tbody").length, +	// A counter to track how many items to wait for before +	// the ready event fires. See #6781 +	readyWait: 1, -		// Make sure that link elements get serialized correctly by innerHTML -		// This requires a wrapper element in IE -		htmlSerialize: !!div.getElementsByTagName("link").length, +	// Hold (or release) the ready event +	holdReady: function( hold ) { +		if ( hold ) { +			jQuery.readyWait++; +		} else { +			jQuery.ready( true ); +		} +	}, -		// Get the style information from getAttribute -		// (IE uses .cssText instead) -		style: /top/.test( a.getAttribute("style") ), +	// Handle when the DOM is ready +	ready: function( wait ) { -		// Make sure that URLs aren't manipulated -		// (IE normalizes it by default) -		hrefNormalized: ( a.getAttribute("href") === "/a" ), +		// Abort if there are pending holds or we're already ready +		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { +			return; +		} -		// Make sure that element opacity exists -		// (IE uses filter instead) -		// Use a regex to work around a WebKit issue. See #5145 -		opacity: /^0.5/.test( a.style.opacity ), +		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). +		if ( !document.body ) { +			return setTimeout( jQuery.ready ); +		} -		// Verify style float existence -		// (IE uses styleFloat instead of cssFloat) -		cssFloat: !!a.style.cssFloat, +		// Remember that the DOM is ready +		jQuery.isReady = true; -		// Make sure that if no value is specified for a checkbox -		// that it defaults to "on". -		// (WebKit defaults to "" instead) -		checkOn: ( input.value === "on" ), +		// If a normal DOM Ready event fired, decrement, and wait if need be +		if ( wait !== true && --jQuery.readyWait > 0 ) { +			return; +		} -		// Make sure that a selected-by-default option has a working selected property. -		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup) -		optSelected: opt.selected, +		// If there are functions bound, to execute +		readyList.resolveWith( document, [ jQuery ] ); -		// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) -		getSetAttribute: div.className !== "t", +		// Trigger any bound ready events +		if ( jQuery.fn.trigger ) { +			jQuery( document ).trigger("ready").off("ready"); +		} +	} +}); -		// Tests for enctype support on a form (#6743) -		enctype: !!document.createElement("form").enctype, +/** + * Clean-up method for dom ready events + */ +function detach() { +	if ( document.addEventListener ) { +		document.removeEventListener( "DOMContentLoaded", completed, false ); +		window.removeEventListener( "load", completed, false ); -		// Makes sure cloning an html5 element does not cause problems -		// Where outerHTML is undefined, this still works -		html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>", +	} else { +		document.detachEvent( "onreadystatechange", completed ); +		window.detachEvent( "onload", completed ); +	} +} -		// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode -		boxModel: ( document.compatMode === "CSS1Compat" ), +/** + * The ready event handler and self cleanup method + */ +function completed() { +	// readyState === "complete" is good enough for us to call the dom ready in oldIE +	if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { +		detach(); +		jQuery.ready(); +	} +} -		// Will be defined later -		submitBubbles: true, -		changeBubbles: true, -		focusinBubbles: false, -		deleteExpando: true, -		noCloneEvent: true, -		inlineBlockNeedsLayout: false, -		shrinkWrapBlocks: false, -		reliableMarginRight: true, -		boxSizingReliable: true, -		pixelPosition: false -	}; +jQuery.ready.promise = function( obj ) { +	if ( !readyList ) { -	// Make sure checked status is properly cloned -	input.checked = true; -	support.noCloneChecked = input.cloneNode( true ).checked; +		readyList = jQuery.Deferred(); -	// Make sure that the options inside disabled selects aren't marked as disabled -	// (WebKit marks them as disabled) -	select.disabled = true; -	support.optDisabled = !opt.disabled; +		// Catch cases where $(document).ready() is called after the browser event has already occurred. +		// we once tried to use readyState "interactive" here, but it caused issues like the one +		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 +		if ( document.readyState === "complete" ) { +			// Handle it asynchronously to allow scripts the opportunity to delay ready +			setTimeout( jQuery.ready ); -	// Test to see if it's possible to delete an expando from an element -	// Fails in Internet Explorer -	try { -		delete div.test; -	} catch( e ) { -		support.deleteExpando = false; -	} +		// Standards-based browsers support DOMContentLoaded +		} else if ( document.addEventListener ) { +			// Use the handy event callback +			document.addEventListener( "DOMContentLoaded", completed, false ); -	if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { -		div.attachEvent( "onclick", clickFn = function() { -			// Cloning a node shouldn't copy over any -			// bound event handlers (IE does this) -			support.noCloneEvent = false; -		}); -		div.cloneNode( true ).fireEvent("onclick"); -		div.detachEvent( "onclick", clickFn ); -	} +			// A fallback to window.onload, that will always work +			window.addEventListener( "load", completed, false ); -	// Check if a radio maintains its value -	// after being appended to the DOM -	input = document.createElement("input"); -	input.value = "t"; -	input.setAttribute( "type", "radio" ); -	support.radioValue = input.value === "t"; +		// If IE event model is used +		} else { +			// Ensure firing before onload, maybe late but safe also for iframes +			document.attachEvent( "onreadystatechange", completed ); -	input.setAttribute( "checked", "checked" ); +			// A fallback to window.onload, that will always work +			window.attachEvent( "onload", completed ); -	// #11217 - WebKit loses check when the name is after the checked attribute -	input.setAttribute( "name", "t" ); +			// If IE and not a frame +			// continually check to see if the document is ready +			var top = false; -	div.appendChild( input ); -	fragment = document.createDocumentFragment(); -	fragment.appendChild( div.lastChild ); +			try { +				top = window.frameElement == null && document.documentElement; +			} catch(e) {} -	// WebKit doesn't clone checked state correctly in fragments -	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; +			if ( top && top.doScroll ) { +				(function doScrollCheck() { +					if ( !jQuery.isReady ) { -	// Check if a disconnected checkbox will retain its checked -	// value of true after appended to the DOM (IE6/7) -	support.appendChecked = input.checked; +						try { +							// Use the trick by Diego Perini +							// http://javascript.nwbox.com/IEContentLoaded/ +							top.doScroll("left"); +						} catch(e) { +							return setTimeout( doScrollCheck, 50 ); +						} -	fragment.removeChild( input ); -	fragment.appendChild( div ); +						// detach all dom ready events +						detach(); -	// Technique from Juriy Zaytsev -	// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ -	// We only care about the case where non-standard event systems -	// are used, namely in IE. Short-circuiting here helps us to -	// avoid an eval call (in setAttribute) which can cause CSP -	// to go haywire. See: https://developer.mozilla.org/en/Security/CSP -	if ( div.attachEvent ) { -		for ( i in { -			submit: true, -			change: true, -			focusin: true -		}) { -			eventName = "on" + i; -			isSupported = ( eventName in div ); -			if ( !isSupported ) { -				div.setAttribute( eventName, "return;" ); -				isSupported = ( typeof div[ eventName ] === "function" ); +						// and execute any waiting functions +						jQuery.ready(); +					} +				})();  			} -			support[ i + "Bubbles" ] = isSupported;  		}  	} +	return readyList.promise( obj ); +}; -	// Run tests that need a body at doc ready -	jQuery(function() { -		var container, div, tds, marginDiv, -			divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;", -			body = document.getElementsByTagName("body")[0]; -		if ( !body ) { -			// Return for frameset docs that don't have a body -			return; -		} +var strundefined = typeof undefined; -		container = document.createElement("div"); -		container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px"; -		body.insertBefore( container, body.firstChild ); -		// Construct the test element -		div = document.createElement("div"); -		container.appendChild( div ); -		// Check if table cells still have offsetWidth/Height when they are set -		// to display:none and there are still other visible table cells in a -		// table row; if so, offsetWidth/Height are not reliable for use when -		// determining if an element has been hidden directly using -		// display:none (it is still safe to use offsets if a parent element is -		// hidden; don safety goggles and see bug #4512 for more information). -		// (only IE 8 fails this test) -		div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>"; -		tds = div.getElementsByTagName("td"); -		tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; -		isSupported = ( tds[ 0 ].offsetHeight === 0 ); +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { +	break; +} +support.ownLast = i !== "0"; -		tds[ 0 ].style.display = ""; -		tds[ 1 ].style.display = "none"; +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; -		// Check if empty table cells still have offsetWidth/Height -		// (IE <= 8 fail this test) -		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); +jQuery(function() { +	// We need to execute this one support test ASAP because we need to know +	// if body.style.zoom needs to be set. -		// Check box-sizing and margin behavior -		div.innerHTML = ""; -		div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; -		support.boxSizing = ( div.offsetWidth === 4 ); -		support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); +	var container, div, +		body = document.getElementsByTagName("body")[0]; -		// NOTE: To any future maintainer, we've window.getComputedStyle -		// because jsdom on node.js will break without it. -		if ( window.getComputedStyle ) { -			support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; -			support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; +	if ( !body ) { +		// Return for frameset docs that don't have a body +		return; +	} -			// Check if div with explicit width and no margin-right incorrectly -			// gets computed margin-right based on width of container. For more -			// info see bug #3333 -			// Fails in WebKit before Feb 2011 nightlies -			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right -			marginDiv = document.createElement("div"); -			marginDiv.style.cssText = div.style.cssText = divReset; -			marginDiv.style.marginRight = marginDiv.style.width = "0"; -			div.style.width = "1px"; -			div.appendChild( marginDiv ); -			support.reliableMarginRight = -				!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); -		} +	// Setup +	container = document.createElement( "div" ); +	container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; -		if ( typeof div.style.zoom !== "undefined" ) { -			// Check if natively block-level elements act like inline-block -			// elements when setting their display to 'inline' and giving -			// them layout -			// (IE < 8 does this) -			div.innerHTML = ""; -			div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; -			support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); +	div = document.createElement( "div" ); +	body.appendChild( container ).appendChild( div ); -			// Check if elements with layout shrink-wrap their children -			// (IE 6 does this) -			div.style.display = "block"; -			div.style.overflow = "visible"; -			div.innerHTML = "<div></div>"; -			div.firstChild.style.width = "5px"; -			support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); +	if ( typeof div.style.zoom !== strundefined ) { +		// Support: IE<8 +		// Check if natively block-level elements act like inline-block +		// elements when setting their display to 'inline' and giving +		// them layout +		div.style.cssText = "border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1"; -			container.style.zoom = 1; +		if ( (support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 )) ) { +			// Prevent IE 6 from affecting layout for positioned elements #11048 +			// Prevent IE from shrinking the body in IE 7 mode #12869 +			// Support: IE<8 +			body.style.zoom = 1;  		} +	} -		// Null elements to avoid leaks in IE -		body.removeChild( container ); -		container = div = tds = marginDiv = null; -	}); +	body.removeChild( container );  	// Null elements to avoid leaks in IE -	fragment.removeChild( div ); -	all = a = select = opt = input = fragment = div = null; +	container = div = null; +}); -	return support; + + + +(function() { +	var div = document.createElement( "div" ); + +	// Execute the test only if not already executed in another module. +	if (support.deleteExpando == null) { +		// Support: IE<9 +		support.deleteExpando = true; +		try { +			delete div.test; +		} catch( e ) { +			support.deleteExpando = false; +		} +	} + +	// Null elements to avoid leaks in IE. +	div = null;  })(); -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, -	rmultiDash = /([A-Z])/g; -jQuery.extend({ -	cache: {}, -	deletedIds: [], +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( elem ) { +	var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], +		nodeType = +elem.nodeType || 1; -	// Remove at next major release (1.9/2.0) -	uuid: 0, +	// Do not set data on non-element DOM nodes because it will not be cleared (#8335). +	return nodeType !== 1 && nodeType !== 9 ? +		false : -	// Unique for each copy of jQuery on the page -	// Non-digits removed to match rinlinejQuery -	expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), +		// Nodes accept data unless otherwise specified; rejection can be conditional +		!noData || noData !== true && elem.getAttribute("classid") === noData; +}; -	// The following elements throw uncatchable exceptions if you -	// attempt to add expando properties to them. -	noData: { -		"embed": true, -		// Ban all objects except for Flash (which handle expandos) -		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", -		"applet": true -	}, -	hasData: function( elem ) { -		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; -		return !!elem && !isEmptyDataObject( elem ); -	}, +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, +	rmultiDash = /([A-Z])/g; -	data: function( elem, name, data, pvt /* Internal Use Only */ ) { -		if ( !jQuery.acceptData( elem ) ) { -			return; -		} +function dataAttr( elem, key, data ) { +	// If nothing was found internally, try to fetch any +	// data from the HTML5 data-* attribute +	if ( data === undefined && elem.nodeType === 1 ) { -		var thisCache, ret, -			internalKey = jQuery.expando, -			getByName = typeof name === "string", +		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); -			// We have to handle DOM nodes and JS objects differently because IE6-7 -			// can't GC object references properly across the DOM-JS boundary -			isNode = elem.nodeType, +		data = elem.getAttribute( name ); -			// Only DOM nodes need the global jQuery cache; JS object data is -			// attached directly to the object so GC can occur automatically -			cache = isNode ? jQuery.cache : elem, +		if ( typeof data === "string" ) { +			try { +				data = data === "true" ? true : +					data === "false" ? false : +					data === "null" ? null : +					// Only convert to a number if it doesn't change the string +					+data + "" === data ? +data : +					rbrace.test( data ) ? jQuery.parseJSON( data ) : +					data; +			} catch( e ) {} -			// Only defining an ID for JS objects if its cache already exists allows -			// the code to shortcut on the same path as a DOM node with no cache -			id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; +			// Make sure we set the data so it isn't changed later +			jQuery.data( elem, key, data ); -		// Avoid doing any more work than we need to when trying to get data on an -		// object that has no data at all -		if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { -			return; +		} else { +			data = undefined;  		} +	} -		if ( !id ) { -			// Only DOM nodes need a new unique ID for each element since their data -			// ends up in the global cache -			if ( isNode ) { -				elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++; -			} else { -				id = internalKey; -			} -		} +	return data; +} -		if ( !cache[ id ] ) { -			cache[ id ] = {}; +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { +	var name; +	for ( name in obj ) { -			// Avoids exposing jQuery metadata on plain JS objects when the object -			// is serialized using JSON.stringify -			if ( !isNode ) { -				cache[ id ].toJSON = jQuery.noop; -			} +		// if the public data object is empty, the private is still empty +		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { +			continue;  		} - -		// An object can be passed to jQuery.data instead of a key/value pair; this gets -		// shallow copied over onto the existing cache -		if ( typeof name === "object" || typeof name === "function" ) { -			if ( pvt ) { -				cache[ id ] = jQuery.extend( cache[ id ], name ); -			} else { -				cache[ id ].data = jQuery.extend( cache[ id ].data, name ); -			} +		if ( name !== "toJSON" ) { +			return false;  		} +	} -		thisCache = cache[ id ]; +	return true; +} -		// jQuery data() is stored in a separate object inside the object's internal data -		// cache in order to avoid key collisions between internal data and user-defined -		// data. -		if ( !pvt ) { -			if ( !thisCache.data ) { -				thisCache.data = {}; -			} +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { +	if ( !jQuery.acceptData( elem ) ) { +		return; +	} -			thisCache = thisCache.data; -		} +	var ret, thisCache, +		internalKey = jQuery.expando, -		if ( data !== undefined ) { -			thisCache[ jQuery.camelCase( name ) ] = data; -		} +		// We have to handle DOM nodes and JS objects differently because IE6-7 +		// can't GC object references properly across the DOM-JS boundary +		isNode = elem.nodeType, -		// Check for both converted-to-camel and non-converted data property names -		// If a data property was specified -		if ( getByName ) { +		// Only DOM nodes need the global jQuery cache; JS object data is +		// attached directly to the object so GC can occur automatically +		cache = isNode ? jQuery.cache : elem, -			// First Try to find as-is property data -			ret = thisCache[ name ]; +		// Only defining an ID for JS objects if its cache already exists allows +		// the code to shortcut on the same path as a DOM node with no cache +		id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; -			// Test for null|undefined property data -			if ( ret == null ) { +	// Avoid doing any more work than we need to when trying to get data on an +	// object that has no data at all +	if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { +		return; +	} -				// Try to find the camelCased property -				ret = thisCache[ jQuery.camelCase( name ) ]; -			} +	if ( !id ) { +		// Only DOM nodes need a new unique ID for each element since their data +		// ends up in the global cache +		if ( isNode ) { +			id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;  		} else { -			ret = thisCache; +			id = internalKey;  		} +	} -		return ret; -	}, +	if ( !cache[ id ] ) { +		// Avoid exposing jQuery metadata on plain JS objects when the object +		// is serialized using JSON.stringify +		cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; +	} -	removeData: function( elem, name, pvt /* Internal Use Only */ ) { -		if ( !jQuery.acceptData( elem ) ) { -			return; +	// An object can be passed to jQuery.data instead of a key/value pair; this gets +	// shallow copied over onto the existing cache +	if ( typeof name === "object" || typeof name === "function" ) { +		if ( pvt ) { +			cache[ id ] = jQuery.extend( cache[ id ], name ); +		} else { +			cache[ id ].data = jQuery.extend( cache[ id ].data, name );  		} +	} -		var thisCache, i, l, +	thisCache = cache[ id ]; -			isNode = elem.nodeType, +	// jQuery data() is stored in a separate object inside the object's internal data +	// cache in order to avoid key collisions between internal data and user-defined +	// data. +	if ( !pvt ) { +		if ( !thisCache.data ) { +			thisCache.data = {}; +		} -			// See jQuery.data for more information -			cache = isNode ? jQuery.cache : elem, -			id = isNode ? elem[ jQuery.expando ] : jQuery.expando; +		thisCache = thisCache.data; +	} -		// If there is already no cache entry for this object, there is no -		// purpose in continuing -		if ( !cache[ id ] ) { -			return; +	if ( data !== undefined ) { +		thisCache[ jQuery.camelCase( name ) ] = data; +	} + +	// Check for both converted-to-camel and non-converted data property names +	// If a data property was specified +	if ( typeof name === "string" ) { + +		// First Try to find as-is property data +		ret = thisCache[ name ]; + +		// Test for null|undefined property data +		if ( ret == null ) { + +			// Try to find the camelCased property +			ret = thisCache[ jQuery.camelCase( name ) ];  		} +	} else { +		ret = thisCache; +	} + +	return ret; +} + +function internalRemoveData( elem, name, pvt ) { +	if ( !jQuery.acceptData( elem ) ) { +		return; +	} -		if ( name ) { +	var thisCache, i, +		isNode = elem.nodeType, -			thisCache = pvt ? cache[ id ] : cache[ id ].data; +		// See jQuery.data for more information +		cache = isNode ? jQuery.cache : elem, +		id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + +	// If there is already no cache entry for this object, there is no +	// purpose in continuing +	if ( !cache[ id ] ) { +		return; +	} -			if ( thisCache ) { +	if ( name ) { -				// Support array or space separated string names for data keys -				if ( !jQuery.isArray( name ) ) { +		thisCache = pvt ? cache[ id ] : cache[ id ].data; -					// try the string as a key before any manipulation +		if ( thisCache ) { + +			// Support array or space separated string names for data keys +			if ( !jQuery.isArray( name ) ) { + +				// try the string as a key before any manipulation +				if ( name in thisCache ) { +					name = [ name ]; +				} else { + +					// split the camel cased version by spaces unless a key with the spaces exists +					name = jQuery.camelCase( name );  					if ( name in thisCache ) {  						name = [ name ];  					} else { - -						// split the camel cased version by spaces unless a key with the spaces exists -						name = jQuery.camelCase( name ); -						if ( name in thisCache ) { -							name = [ name ]; -						} else { -							name = name.split(" "); -						} +						name = name.split(" ");  					}  				} +			} else { +				// If "name" is an array of keys... +				// When data is initially created, via ("key", "val") signature, +				// keys will be converted to camelCase. +				// Since there is no way to tell _how_ a key was added, remove +				// both plain key and camelCase key. #12786 +				// This will only penalize the array argument path. +				name = name.concat( jQuery.map( name, jQuery.camelCase ) ); +			} -				for ( i = 0, l = name.length; i < l; i++ ) { -					delete thisCache[ name[i] ]; -				} +			i = name.length; +			while ( i-- ) { +				delete thisCache[ name[i] ]; +			} -				// If there is no data left in the cache, we want to continue -				// and let the cache object itself get destroyed -				if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { -					return; -				} +			// If there is no data left in the cache, we want to continue +			// and let the cache object itself get destroyed +			if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { +				return;  			}  		} +	} -		// See jQuery.data for more information -		if ( !pvt ) { -			delete cache[ id ].data; +	// See jQuery.data for more information +	if ( !pvt ) { +		delete cache[ id ].data; -			// Don't destroy the parent cache unless the internal data object -			// had been the only thing left in it -			if ( !isEmptyDataObject( cache[ id ] ) ) { -				return; -			} +		// Don't destroy the parent cache unless the internal data object +		// had been the only thing left in it +		if ( !isEmptyDataObject( cache[ id ] ) ) { +			return;  		} +	} -		// Destroy the cache -		if ( isNode ) { -			jQuery.cleanData( [ elem ], true ); +	// Destroy the cache +	if ( isNode ) { +		jQuery.cleanData( [ elem ], true ); -		// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) -		} else if ( jQuery.support.deleteExpando || cache != cache.window ) { -			delete cache[ id ]; +	// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) +	/* jshint eqeqeq: false */ +	} else if ( support.deleteExpando || cache != cache.window ) { +		/* jshint eqeqeq: true */ +		delete cache[ id ]; -		// When all else fails, null -		} else { -			cache[ id ] = null; -		} +	// When all else fails, null +	} else { +		cache[ id ] = null; +	} +} + +jQuery.extend({ +	cache: {}, + +	// The following elements (space-suffixed to avoid Object.prototype collisions) +	// throw uncatchable exceptions if you attempt to set expando properties +	noData: { +		"applet ": true, +		"embed ": true, +		// ...but Flash objects (which have this classid) *can* handle expandos +		"object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" +	}, + +	hasData: function( elem ) { +		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; +		return !!elem && !isEmptyDataObject( elem ); +	}, + +	data: function( elem, name, data ) { +		return internalData( elem, name, data ); +	}, + +	removeData: function( elem, name ) { +		return internalRemoveData( elem, name );  	},  	// For internal use only.  	_data: function( elem, name, data ) { -		return jQuery.data( elem, name, data, true ); +		return internalData( elem, name, data, true );  	}, -	// A method for determining if a DOM node can handle the data expando -	acceptData: function( elem ) { -		var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; - -		// nodes accept data unless otherwise specified; rejection can be conditional -		return !noData || noData !== true && elem.getAttribute("classid") === noData; +	_removeData: function( elem, name ) { +		return internalRemoveData( elem, name, true );  	}  });  jQuery.fn.extend({  	data: function( key, value ) { -		var parts, part, attr, name, l, +		var i, name, data,  			elem = this[0], -			i = 0, -			data = null; +			attrs = elem && elem.attributes; + +		// Special expections of .data basically thwart jQuery.access, +		// so implement the relevant behavior ourselves  		// Gets all values  		if ( key === undefined ) { @@ -1736,12 +3890,12 @@ jQuery.fn.extend({  				data = jQuery.data( elem );  				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { -					attr = elem.attributes; -					for ( l = attr.length; i < l; i++ ) { -						name = attr[i].name; +					i = attrs.length; +					while ( i-- ) { +						name = attrs[i].name; -						if ( !name.indexOf( "data-" ) ) { -							name = jQuery.camelCase( name.substring(5) ); +						if ( name.indexOf("data-") === 0 ) { +							name = jQuery.camelCase( name.slice(5) );  							dataAttr( elem, name, data[ name ] );  						} @@ -1760,35 +3914,16 @@ jQuery.fn.extend({  			});  		} -		parts = key.split( ".", 2 ); -		parts[1] = parts[1] ? "." + parts[1] : ""; -		part = parts[1] + "!"; - -		return jQuery.access( this, function( value ) { +		return arguments.length > 1 ? -			if ( value === undefined ) { -				data = this.triggerHandler( "getData" + part, [ parts[0] ] ); - -				// Try to fetch any internally stored data first -				if ( data === undefined && elem ) { -					data = jQuery.data( elem, key ); -					data = dataAttr( elem, key, data ); -				} - -				return data === undefined && parts[1] ? -					this.data( parts[0] ) : -					data; -			} - -			parts[1] = value; +			// Sets one value  			this.each(function() { -				var self = jQuery( this ); - -				self.triggerHandler( "setData" + part, parts );  				jQuery.data( this, key, value ); -				self.triggerHandler( "changeData" + part, parts ); -			}); -		}, null, value, arguments.length > 1, null, false ); +			}) : + +			// Gets one value +			// Try to fetch any internally stored data first +			elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;  	},  	removeData: function( key ) { @@ -1798,53 +3933,7 @@ jQuery.fn.extend({  	}  }); -function dataAttr( elem, key, data ) { -	// If nothing was found internally, try to fetch any -	// data from the HTML5 data-* attribute -	if ( data === undefined && elem.nodeType === 1 ) { - -		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - -		data = elem.getAttribute( name ); - -		if ( typeof data === "string" ) { -			try { -				data = data === "true" ? true : -				data === "false" ? false : -				data === "null" ? null : -				// Only convert to a number if it doesn't change the string -				+data + "" === data ? +data : -				rbrace.test( data ) ? jQuery.parseJSON( data ) : -					data; -			} catch( e ) {} - -			// Make sure we set the data so it isn't changed later -			jQuery.data( elem, key, data ); - -		} else { -			data = undefined; -		} -	} - -	return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { -	var name; -	for ( name in obj ) { -		// if the public data object is empty, the private is still empty -		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { -			continue; -		} -		if ( name !== "toJSON" ) { -			return false; -		} -	} - -	return true; -}  jQuery.extend({  	queue: function( elem, type, data ) {  		var queue; @@ -1905,8 +3994,8 @@ jQuery.extend({  		var key = type + "queueHooks";  		return jQuery._data( elem, key ) || jQuery._data( elem, key, {  			empty: jQuery.Callbacks("once memory").add(function() { -				jQuery.removeData( elem, type + "queue", true ); -				jQuery.removeData( elem, key, true ); +				jQuery._removeData( elem, type + "queue" ); +				jQuery._removeData( elem, key );  			})  		});  	} @@ -1944,19 +4033,6 @@ jQuery.fn.extend({  			jQuery.dequeue( this, type );  		});  	}, -	// Based off of the plugin by Clint Helfers, with permission. -	// http://blindsignals.com/index.php/2009/07/jquery-delay/ -	delay: function( time, type ) { -		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; -		type = type || "fx"; - -		return this.queue( type, function( next, hooks ) { -			var timeout = setTimeout( next, time ); -			hooks.stop = function() { -				clearTimeout( timeout ); -			}; -		}); -	},  	clearQueue: function( type ) {  		return this.queue( type || "fx", [] );  	}, @@ -1980,7 +4056,7 @@ jQuery.fn.extend({  		}  		type = type || "fx"; -		while( i-- ) { +		while ( i-- ) {  			tmp = jQuery._data( elements[ i ], type + "queueHooks" );  			if ( tmp && tmp.empty ) {  				count++; @@ -1991,647 +4067,187 @@ jQuery.fn.extend({  		return defer.promise( obj );  	}  }); -var nodeHook, boolHook, fixSpecified, -	rclass = /[\t\r\n]/g, -	rreturn = /\r/g, -	rtype = /^(?:button|input)$/i, -	rfocusable = /^(?:button|input|object|select|textarea)$/i, -	rclickable = /^a(?:rea|)$/i, -	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, -	getSetAttribute = jQuery.support.getSetAttribute; +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; -jQuery.fn.extend({ -	attr: function( name, value ) { -		return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); -	}, +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; -	removeAttr: function( name ) { -		return this.each(function() { -			jQuery.removeAttr( this, name ); -		}); -	}, - -	prop: function( name, value ) { -		return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); -	}, - -	removeProp: function( name ) { -		name = jQuery.propFix[ name ] || name; -		return this.each(function() { -			// try/catch handles cases where IE balks (such as removing a property on window) -			try { -				this[ name ] = undefined; -				delete this[ name ]; -			} catch( e ) {} -		}); -	}, - -	addClass: function( value ) { -		var classNames, i, l, elem, -			setClass, c, cl; - -		if ( jQuery.isFunction( value ) ) { -			return this.each(function( j ) { -				jQuery( this ).addClass( value.call(this, j, this.className) ); -			}); -		} - -		if ( value && typeof value === "string" ) { -			classNames = value.split( core_rspace ); - -			for ( i = 0, l = this.length; i < l; i++ ) { -				elem = this[ i ]; - -				if ( elem.nodeType === 1 ) { -					if ( !elem.className && classNames.length === 1 ) { -						elem.className = value; - -					} else { -						setClass = " " + elem.className + " "; - -						for ( c = 0, cl = classNames.length; c < cl; c++ ) { -							if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) { -								setClass += classNames[ c ] + " "; -							} -						} -						elem.className = jQuery.trim( setClass ); -					} -				} -			} -		} - -		return this; -	}, - -	removeClass: function( value ) { -		var removes, className, elem, c, cl, i, l; - -		if ( jQuery.isFunction( value ) ) { -			return this.each(function( j ) { -				jQuery( this ).removeClass( value.call(this, j, this.className) ); -			}); -		} -		if ( (value && typeof value === "string") || value === undefined ) { -			removes = ( value || "" ).split( core_rspace ); - -			for ( i = 0, l = this.length; i < l; i++ ) { -				elem = this[ i ]; -				if ( elem.nodeType === 1 && elem.className ) { - -					className = (" " + elem.className + " ").replace( rclass, " " ); - -					// loop over each item in the removal list -					for ( c = 0, cl = removes.length; c < cl; c++ ) { -						// Remove until there is nothing to remove, -						while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) { -							className = className.replace( " " + removes[ c ] + " " , " " ); -						} -					} -					elem.className = value ? jQuery.trim( className ) : ""; -				} -			} -		} - -		return this; -	}, - -	toggleClass: function( value, stateVal ) { -		var type = typeof value, -			isBool = typeof stateVal === "boolean"; - -		if ( jQuery.isFunction( value ) ) { -			return this.each(function( i ) { -				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); -			}); -		} +var isHidden = function( elem, el ) { +		// isHidden might be called from jQuery#filter function; +		// in that case, element will be second argument +		elem = el || elem; +		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +	}; -		return this.each(function() { -			if ( type === "string" ) { -				// toggle individual class names -				var className, -					i = 0, -					self = jQuery( this ), -					state = stateVal, -					classNames = value.split( core_rspace ); -				while ( (className = classNames[ i++ ]) ) { -					// check each className given, space separated list -					state = isBool ? state : !self.hasClass( className ); -					self[ state ? "addClass" : "removeClass" ]( className ); -				} -			} else if ( type === "undefined" || type === "boolean" ) { -				if ( this.className ) { -					// store className if set -					jQuery._data( this, "__className__", this.className ); -				} - -				// toggle whole className -				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; -			} -		}); -	}, +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { +	var i = 0, +		length = elems.length, +		bulk = key == null; -	hasClass: function( selector ) { -		var className = " " + selector + " ", -			i = 0, -			l = this.length; -		for ( ; i < l; i++ ) { -			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { -				return true; -			} +	// Sets many values +	if ( jQuery.type( key ) === "object" ) { +		chainable = true; +		for ( i in key ) { +			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );  		} -		return false; -	}, - -	val: function( value ) { -		var hooks, ret, isFunction, -			elem = this[0]; - -		if ( !arguments.length ) { -			if ( elem ) { -				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - -				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { -					return ret; -				} +	// Sets one value +	} else if ( value !== undefined ) { +		chainable = true; -				ret = elem.value; - -				return typeof ret === "string" ? -					// handle most common string cases -					ret.replace(rreturn, "") : -					// handle cases where value is null/undef or number -					ret == null ? "" : ret; -			} - -			return; +		if ( !jQuery.isFunction( value ) ) { +			raw = true;  		} -		isFunction = jQuery.isFunction( value ); - -		return this.each(function( i ) { -			var val, -				self = jQuery(this); - -			if ( this.nodeType !== 1 ) { -				return; -			} +		if ( bulk ) { +			// Bulk operations run against the entire set +			if ( raw ) { +				fn.call( elems, value ); +				fn = null; -			if ( isFunction ) { -				val = value.call( this, i, self.val() ); +			// ...except when executing function values  			} else { -				val = value; -			} - -			// Treat null/undefined as ""; convert numbers to string -			if ( val == null ) { -				val = ""; -			} else if ( typeof val === "number" ) { -				val += ""; -			} else if ( jQuery.isArray( val ) ) { -				val = jQuery.map(val, function ( value ) { -					return value == null ? "" : value + ""; -				}); -			} - -			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - -			// If set returns undefined, fall back to normal setting -			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { -				this.value = val; -			} -		}); -	} -}); - -jQuery.extend({ -	valHooks: { -		option: { -			get: function( elem ) { -				// attributes.value is undefined in Blackberry 4.7 but -				// uses .value. See #6932 -				var val = elem.attributes.value; -				return !val || val.specified ? elem.value : elem.text; -			} -		}, -		select: { -			get: function( elem ) { -				var value, option, -					options = elem.options, -					index = elem.selectedIndex, -					one = elem.type === "select-one" || index < 0, -					values = one ? null : [], -					max = one ? index + 1 : options.length, -					i = index < 0 ? -						max : -						one ? index : 0; - -				// Loop through all the selected options -				for ( ; i < max; i++ ) { -					option = options[ i ]; - -					// oldIE doesn't update selected after form reset (#2551) -					if ( ( option.selected || i === index ) && -							// Don't return options that are disabled or in a disabled optgroup -							( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && -							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - -						// Get the specific value for the option -						value = jQuery( option ).val(); - -						// We don't need an array for one selects -						if ( one ) { -							return value; -						} - -						// Multi-Selects return an array -						values.push( value ); -					} -				} - -				return values; -			}, - -			set: function( elem, value ) { -				var values = jQuery.makeArray( value ); - -				jQuery(elem).find("option").each(function() { -					this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; -				}); - -				if ( !values.length ) { -					elem.selectedIndex = -1; -				} -				return values; +				bulk = fn; +				fn = function( elem, key, value ) { +					return bulk.call( jQuery( elem ), value ); +				};  			}  		} -	}, - -	// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9 -	attrFn: {}, - -	attr: function( elem, name, value, pass ) { -		var ret, hooks, notxml, -			nType = elem.nodeType; - -		// don't get/set attributes on text, comment and attribute nodes -		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { -			return; -		} - -		if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) { -			return jQuery( elem )[ name ]( value ); -		} - -		// Fallback to prop when attributes are not supported -		if ( typeof elem.getAttribute === "undefined" ) { -			return jQuery.prop( elem, name, value ); -		} -		notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - -		// All attributes are lowercase -		// Grab necessary hook if one is defined -		if ( notxml ) { -			name = name.toLowerCase(); -			hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); -		} - -		if ( value !== undefined ) { - -			if ( value === null ) { -				jQuery.removeAttr( elem, name ); -				return; - -			} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { -				return ret; - -			} else { -				elem.setAttribute( name, value + "" ); -				return value; +		if ( fn ) { +			for ( ; i < length; i++ ) { +				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );  			} - -		} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { -			return ret; - -		} else { - -			ret = elem.getAttribute( name ); - -			// Non-existent attributes return null, we normalize to undefined -			return ret === null ? -				undefined : -				ret;  		} -	}, - -	removeAttr: function( elem, value ) { -		var propName, attrNames, name, isBool, -			i = 0; - -		if ( value && elem.nodeType === 1 ) { - -			attrNames = value.split( core_rspace ); +	} -			for ( ; i < attrNames.length; i++ ) { -				name = attrNames[ i ]; +	return chainable ? +		elems : -				if ( name ) { -					propName = jQuery.propFix[ name ] || name; -					isBool = rboolean.test( name ); +		// Gets +		bulk ? +			fn.call( elems ) : +			length ? fn( elems[0], key ) : emptyGet; +}; +var rcheckableType = (/^(?:checkbox|radio)$/i); -					// See #9699 for explanation of this approach (setting first, then removal) -					// Do not do this for boolean attributes (see #10870) -					if ( !isBool ) { -						jQuery.attr( elem, name, "" ); -					} -					elem.removeAttribute( getSetAttribute ? name : propName ); -					// Set corresponding property to false for boolean attributes -					if ( isBool && propName in elem ) { -						elem[ propName ] = false; -					} -				} -			} -		} -	}, -	attrHooks: { -		type: { -			set: function( elem, value ) { -				// We can't allow the type property to be changed (since it causes problems in IE) -				if ( rtype.test( elem.nodeName ) && elem.parentNode ) { -					jQuery.error( "type property can't be changed" ); -				} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { -					// Setting the type on a radio button after the value resets the value in IE6-9 -					// Reset value to it's default in case type is set after value -					// This is for element creation -					var val = elem.value; -					elem.setAttribute( "type", value ); -					if ( val ) { -						elem.value = val; -					} -					return value; -				} -			} -		}, -		// Use the value property for back compat -		// Use the nodeHook for button elements in IE6/7 (#1954) -		value: { -			get: function( elem, name ) { -				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { -					return nodeHook.get( elem, name ); -				} -				return name in elem ? -					elem.value : -					null; -			}, -			set: function( elem, value, name ) { -				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { -					return nodeHook.set( elem, value, name ); -				} -				// Does not return so that setAttribute is also used -				elem.value = value; -			} -		} -	}, +(function() { +	var fragment = document.createDocumentFragment(), +		div = document.createElement("div"), +		input = document.createElement("input"); -	propFix: { -		tabindex: "tabIndex", -		readonly: "readOnly", -		"for": "htmlFor", -		"class": "className", -		maxlength: "maxLength", -		cellspacing: "cellSpacing", -		cellpadding: "cellPadding", -		rowspan: "rowSpan", -		colspan: "colSpan", -		usemap: "useMap", -		frameborder: "frameBorder", -		contenteditable: "contentEditable" -	}, +	// Setup +	div.setAttribute( "className", "t" ); +	div.innerHTML = "  <link/><table></table><a href='/a'>a</a>"; -	prop: function( elem, name, value ) { -		var ret, hooks, notxml, -			nType = elem.nodeType; +	// IE strips leading whitespace when .innerHTML is used +	support.leadingWhitespace = div.firstChild.nodeType === 3; -		// don't get/set properties on text, comment and attribute nodes -		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { -			return; -		} +	// Make sure that tbody elements aren't automatically inserted +	// IE will insert them into empty tables +	support.tbody = !div.getElementsByTagName( "tbody" ).length; -		notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); +	// Make sure that link elements get serialized correctly by innerHTML +	// This requires a wrapper element in IE +	support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; -		if ( notxml ) { -			// Fix name and attach hooks -			name = jQuery.propFix[ name ] || name; -			hooks = jQuery.propHooks[ name ]; -		} +	// Makes sure cloning an html5 element does not cause problems +	// Where outerHTML is undefined, this still works +	support.html5Clone = +		document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav></:nav>"; -		if ( value !== undefined ) { -			if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { -				return ret; +	// Check if a disconnected checkbox will retain its checked +	// value of true after appended to the DOM (IE6/7) +	input.type = "checkbox"; +	input.checked = true; +	fragment.appendChild( input ); +	support.appendChecked = input.checked; -			} else { -				return ( elem[ name ] = value ); -			} +	// Make sure textarea (and checkbox) defaultValue is properly cloned +	// Support: IE6-IE11+ +	div.innerHTML = "<textarea>x</textarea>"; +	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -		} else { -			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { -				return ret; +	// #11217 - WebKit loses check when the name is after the checked attribute +	fragment.appendChild( div ); +	div.innerHTML = "<input type='radio' checked='checked' name='t'/>"; -			} else { -				return elem[ name ]; -			} -		} -	}, +	// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 +	// old WebKit doesn't clone checked state correctly in fragments +	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; -	propHooks: { -		tabIndex: { -			get: function( elem ) { -				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set -				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ -				var attributeNode = elem.getAttributeNode("tabindex"); +	// Support: IE<9 +	// Opera does not clone events (and typeof div.attachEvent === undefined). +	// IE9-10 clones events bound via attachEvent, but they don't trigger with .click() +	support.noCloneEvent = true; +	if ( div.attachEvent ) { +		div.attachEvent( "onclick", function() { +			support.noCloneEvent = false; +		}); -				return attributeNode && attributeNode.specified ? -					parseInt( attributeNode.value, 10 ) : -					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? -						0 : -						undefined; -			} -		} +		div.cloneNode( true ).click();  	} -}); - -// Hook for boolean attributes -boolHook = { -	get: function( elem, name ) { -		// Align boolean attributes with corresponding properties -		// Fall back to attribute presence where some booleans are not supported -		var attrNode, -			property = jQuery.prop( elem, name ); -		return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? -			name.toLowerCase() : -			undefined; -	}, -	set: function( elem, value, name ) { -		var propName; -		if ( value === false ) { -			// Remove boolean attributes when set to false -			jQuery.removeAttr( elem, name ); -		} else { -			// value is true since we know at this point it's type boolean and not false -			// Set boolean attributes to the same name and set the DOM property -			propName = jQuery.propFix[ name ] || name; -			if ( propName in elem ) { -				// Only set the IDL specifically if it already exists on the element -				elem[ propName ] = true; -			} -			elem.setAttribute( name, name.toLowerCase() ); +	// Execute the test only if not already executed in another module. +	if (support.deleteExpando == null) { +		// Support: IE<9 +		support.deleteExpando = true; +		try { +			delete div.test; +		} catch( e ) { +			support.deleteExpando = false;  		} -		return name;  	} -}; -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !getSetAttribute ) { +	// Null elements to avoid leaks in IE. +	fragment = div = input = null; +})(); -	fixSpecified = { -		name: true, -		id: true, -		coords: true -	}; -	// Use this for any attribute in IE6/7 -	// This fixes almost every IE6/7 issue -	nodeHook = jQuery.valHooks.button = { -		get: function( elem, name ) { -			var ret; -			ret = elem.getAttributeNode( name ); -			return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ? -				ret.value : -				undefined; -		}, -		set: function( elem, value, name ) { -			// Set the existing or create a new attribute node -			var ret = elem.getAttributeNode( name ); -			if ( !ret ) { -				ret = document.createAttribute( name ); -				elem.setAttributeNode( ret ); -			} -			return ( ret.value = value + "" ); -		} -	}; +(function() { +	var i, eventName, +		div = document.createElement( "div" ); -	// Set width and height to auto instead of 0 on empty string( Bug #8150 ) -	// This is for removals -	jQuery.each([ "width", "height" ], function( i, name ) { -		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { -			set: function( elem, value ) { -				if ( value === "" ) { -					elem.setAttribute( name, "auto" ); -					return value; -				} -			} -		}); -	}); +	// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) +	for ( i in { submit: true, change: true, focusin: true }) { +		eventName = "on" + i; -	// Set contenteditable to false on removals(#10429) -	// Setting to empty string throws an error as an invalid value -	jQuery.attrHooks.contenteditable = { -		get: nodeHook.get, -		set: function( elem, value, name ) { -			if ( value === "" ) { -				value = "false"; -			} -			nodeHook.set( elem, value, name ); +		if ( !(support[ i + "Bubbles" ] = eventName in window) ) { +			// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) +			div.setAttribute( eventName, "t" ); +			support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false;  		} -	}; -} - - -// Some attributes require a special call on IE -if ( !jQuery.support.hrefNormalized ) { -	jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { -		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { -			get: function( elem ) { -				var ret = elem.getAttribute( name, 2 ); -				return ret === null ? undefined : ret; -			} -		}); -	}); -} +	} -if ( !jQuery.support.style ) { -	jQuery.attrHooks.style = { -		get: function( elem ) { -			// Return undefined in the case of empty string -			// Normalize to lowercase since IE uppercases css property names -			return elem.style.cssText.toLowerCase() || undefined; -		}, -		set: function( elem, value ) { -			return ( elem.style.cssText = value + "" ); -		} -	}; -} +	// Null elements to avoid leaks in IE. +	div = null; +})(); -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { -	jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { -		get: function( elem ) { -			var parent = elem.parentNode; -			if ( parent ) { -				parent.selectedIndex; +var rformElems = /^(?:input|select|textarea)$/i, +	rkeyEvent = /^key/, +	rmouseEvent = /^(?:mouse|contextmenu)|click/, +	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, +	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; -				// Make sure that it also works with optgroups, see #5701 -				if ( parent.parentNode ) { -					parent.parentNode.selectedIndex; -				} -			} -			return null; -		} -	}); +function returnTrue() { +	return true;  } -// IE6/7 call enctype encoding -if ( !jQuery.support.enctype ) { -	jQuery.propFix.enctype = "encoding"; +function returnFalse() { +	return false;  } -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { -	jQuery.each([ "radio", "checkbox" ], function() { -		jQuery.valHooks[ this ] = { -			get: function( elem ) { -				// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified -				return elem.getAttribute("value") === null ? "on" : elem.value; -			} -		}; -	}); +function safeActiveElement() { +	try { +		return document.activeElement; +	} catch ( err ) { }  } -jQuery.each([ "radio", "checkbox" ], function() { -	jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { -		set: function( elem, value ) { -			if ( jQuery.isArray( value ) ) { -				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); -			} -		} -	}); -}); -var rformElems = /^(?:textarea|input|select)$/i, -	rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/, -	rhoverHack = /(?:^|\s)hover(\.\S+|)\b/, -	rkeyEvent = /^key/, -	rmouseEvent = /^(?:mouse|contextmenu)|click/, -	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, -	hoverHack = function( events ) { -		return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); -	};  /*   * Helper functions for managing events -- not part of the public interface. @@ -2639,14 +4255,16 @@ var rformElems = /^(?:textarea|input|select)$/i,   */  jQuery.event = { -	add: function( elem, types, handler, data, selector ) { +	global: {}, -		var elemData, eventHandle, events, -			t, tns, type, namespaces, handleObj, -			handleObjIn, handlers, special; +	add: function( elem, types, handler, data, selector ) { +		var tmp, events, t, handleObjIn, +			special, eventHandle, handleObj, +			handlers, type, namespaces, origType, +			elemData = jQuery._data( elem ); -		// Don't attach events to noData or text/comment nodes (allow plain objects tho) -		if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { +		// Don't attach events to noData or text/comment nodes (but allow plain objects) +		if ( !elemData ) {  			return;  		} @@ -2663,16 +4281,14 @@ jQuery.event = {  		}  		// Init the element's event structure and main handler, if this is the first -		events = elemData.events; -		if ( !events ) { -			elemData.events = events = {}; +		if ( !(events = elemData.events) ) { +			events = elemData.events = {};  		} -		eventHandle = elemData.handle; -		if ( !eventHandle ) { -			elemData.handle = eventHandle = function( e ) { +		if ( !(eventHandle = elemData.handle) ) { +			eventHandle = elemData.handle = function( e ) {  				// Discard the second event of a jQuery.event.trigger() and  				// when an event is called after a page has unloaded -				return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? +				return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ?  					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :  					undefined;  			}; @@ -2681,13 +4297,17 @@ jQuery.event = {  		}  		// Handle multiple events separated by a space -		// jQuery(...).bind("mouseover mouseout", fn); -		types = jQuery.trim( hoverHack(types) ).split( " " ); -		for ( t = 0; t < types.length; t++ ) { +		types = ( types || "" ).match( rnotwhite ) || [ "" ]; +		t = types.length; +		while ( t-- ) { +			tmp = rtypenamespace.exec( types[t] ) || []; +			type = origType = tmp[1]; +			namespaces = ( tmp[2] || "" ).split( "." ).sort(); -			tns = rtypenamespace.exec( types[t] ) || []; -			type = tns[1]; -			namespaces = ( tns[2] || "" ).split( "." ).sort(); +			// There *must* be a type, no attaching namespace-only handlers +			if ( !type ) { +				continue; +			}  			// If event changes its type, use the special event handlers for the changed type  			special = jQuery.event.special[ type ] || {}; @@ -2701,7 +4321,7 @@ jQuery.event = {  			// handleObj is passed to all event handlers  			handleObj = jQuery.extend({  				type: type, -				origType: tns[1], +				origType: origType,  				data: data,  				handler: handler,  				guid: handler.guid, @@ -2711,8 +4331,7 @@ jQuery.event = {  			}, handleObjIn );  			// Init the event handler queue if we're the first -			handlers = events[ type ]; -			if ( !handlers ) { +			if ( !(handlers = events[ type ]) ) {  				handlers = events[ type ] = [];  				handlers.delegateCount = 0; @@ -2751,13 +4370,12 @@ jQuery.event = {  		elem = null;  	}, -	global: {}, -  	// Detach an event or set of events from an element  	remove: function( elem, types, handler, selector, mappedTypes ) { - -		var t, tns, type, origType, namespaces, origCount, -			j, events, special, eventType, handleObj, +		var j, handleObj, tmp, +			origCount, t, events, +			special, handlers, type, +			namespaces, origType,  			elemData = jQuery.hasData( elem ) && jQuery._data( elem );  		if ( !elemData || !(events = elemData.events) ) { @@ -2765,11 +4383,12 @@ jQuery.event = {  		}  		// Once for each type.namespace in types; type may be omitted -		types = jQuery.trim( hoverHack( types || "" ) ).split(" "); -		for ( t = 0; t < types.length; t++ ) { -			tns = rtypenamespace.exec( types[t] ) || []; -			type = origType = tns[1]; -			namespaces = tns[2]; +		types = ( types || "" ).match( rnotwhite ) || [ "" ]; +		t = types.length; +		while ( t-- ) { +			tmp = rtypenamespace.exec( types[t] ) || []; +			type = origType = tmp[1]; +			namespaces = ( tmp[2] || "" ).split( "." ).sort();  			// Unbind all events (on this namespace, if provided) for the element  			if ( !type ) { @@ -2780,23 +4399,23 @@ jQuery.event = {  			}  			special = jQuery.event.special[ type ] || {}; -			type = ( selector? special.delegateType : special.bindType ) || type; -			eventType = events[ type ] || []; -			origCount = eventType.length; -			namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null; +			type = ( selector ? special.delegateType : special.bindType ) || type; +			handlers = events[ type ] || []; +			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );  			// Remove matching events -			for ( j = 0; j < eventType.length; j++ ) { -				handleObj = eventType[ j ]; +			origCount = j = handlers.length; +			while ( j-- ) { +				handleObj = handlers[ j ];  				if ( ( mappedTypes || origType === handleObj.origType ) && -					 ( !handler || handler.guid === handleObj.guid ) && -					 ( !namespaces || namespaces.test( handleObj.namespace ) ) && -					 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { -					eventType.splice( j--, 1 ); +					( !handler || handler.guid === handleObj.guid ) && +					( !tmp || tmp.test( handleObj.namespace ) ) && +					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { +					handlers.splice( j, 1 );  					if ( handleObj.selector ) { -						eventType.delegateCount--; +						handlers.delegateCount--;  					}  					if ( special.remove ) {  						special.remove.call( elem, handleObj ); @@ -2806,7 +4425,7 @@ jQuery.event = {  			// Remove generic event handler if we removed something and no more handlers exist  			// (avoids potential for endless recursion during removal of special event handlers) -			if ( eventType.length === 0 && origCount !== eventType.length ) { +			if ( origCount && !handlers.length ) {  				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {  					jQuery.removeEvent( elem, type, elemData.handle );  				} @@ -2821,80 +4440,48 @@ jQuery.event = {  			// removeData also checks for emptiness and clears the expando if empty  			// so use it instead of delete -			jQuery.removeData( elem, "events", true ); +			jQuery._removeData( elem, "events" );  		}  	}, -	// Events that are safe to short-circuit if no handlers are attached. -	// Native DOM events should not be added, they may have inline handlers. -	customEvent: { -		"getData": true, -		"setData": true, -		"changeData": true -	}, -  	trigger: function( event, data, elem, onlyHandlers ) { +		var handle, ontype, cur, +			bubbleType, special, tmp, i, +			eventPath = [ elem || document ], +			type = hasOwn.call( event, "type" ) ? event.type : event, +			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + +		cur = tmp = elem = elem || document; +  		// Don't do events on text and comment nodes -		if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { +		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {  			return;  		} -		// Event object or event type -		var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType, -			type = event.type || event, -			namespaces = []; -  		// focus/blur morphs to focusin/out; ensure we're not firing them right now  		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {  			return;  		} -		if ( type.indexOf( "!" ) >= 0 ) { -			// Exclusive events trigger only for the exact event (no namespaces) -			type = type.slice(0, -1); -			exclusive = true; -		} - -		if ( type.indexOf( "." ) >= 0 ) { +		if ( type.indexOf(".") >= 0 ) {  			// Namespaced trigger; create a regexp to match event type in handle()  			namespaces = type.split(".");  			type = namespaces.shift();  			namespaces.sort();  		} +		ontype = type.indexOf(":") < 0 && "on" + type; -		if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { -			// No jQuery handlers for this event type, and it can't have inline handlers -			return; -		} +		// Caller can pass in a jQuery.Event object, Object, or just an event type string +		event = event[ jQuery.expando ] ? +			event : +			new jQuery.Event( type, typeof event === "object" && event ); -		// Caller can pass in an Event, Object, or just an event type string -		event = typeof event === "object" ? -			// jQuery.Event object -			event[ jQuery.expando ] ? event : -			// Object literal -			new jQuery.Event( type, event ) : -			// Just the event type (string) -			new jQuery.Event( type ); - -		event.type = type; -		event.isTrigger = true; -		event.exclusive = exclusive; -		event.namespace = namespaces.join( "." ); -		event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; -		ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; - -		// Handle a global trigger -		if ( !elem ) { - -			// TODO: Stop taunting the data cache; remove global events and always attach to document -			cache = jQuery.cache; -			for ( i in cache ) { -				if ( cache[ i ].events && cache[ i ].events[ type ] ) { -					jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); -				} -			} -			return; -		} +		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) +		event.isTrigger = onlyHandlers ? 2 : 3; +		event.namespace = namespaces.join("."); +		event.namespace_re = event.namespace ? +			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : +			null;  		// Clean up the event in case it is being reused  		event.result = undefined; @@ -2903,47 +4490,56 @@ jQuery.event = {  		}  		// Clone any incoming data and prepend the event, creating the handler arg list -		data = data != null ? jQuery.makeArray( data ) : []; -		data.unshift( event ); +		data = data == null ? +			[ event ] : +			jQuery.makeArray( data, [ event ] );  		// Allow special events to draw outside the lines  		special = jQuery.event.special[ type ] || {}; -		if ( special.trigger && special.trigger.apply( elem, data ) === false ) { +		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {  			return;  		}  		// Determine event propagation path in advance, per W3C events spec (#9951)  		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724) -		eventPath = [[ elem, special.bindType || type ]];  		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {  			bubbleType = special.delegateType || type; -			cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; -			for ( old = elem; cur; cur = cur.parentNode ) { -				eventPath.push([ cur, bubbleType ]); -				old = cur; +			if ( !rfocusMorph.test( bubbleType + type ) ) { +				cur = cur.parentNode; +			} +			for ( ; cur; cur = cur.parentNode ) { +				eventPath.push( cur ); +				tmp = cur;  			}  			// Only add window if we got to document (e.g., not plain obj or detached DOM) -			if ( old === (elem.ownerDocument || document) ) { -				eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); +			if ( tmp === (elem.ownerDocument || document) ) { +				eventPath.push( tmp.defaultView || tmp.parentWindow || window );  			}  		}  		// Fire handlers on the event path -		for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { +		i = 0; +		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { -			cur = eventPath[i][0]; -			event.type = eventPath[i][1]; +			event.type = i > 1 ? +				bubbleType : +				special.bindType || type; +			// jQuery handler  			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );  			if ( handle ) {  				handle.apply( cur, data );  			} -			// Note that this is a bare JS function and not a jQuery handler + +			// Native handler  			handle = ontype && cur[ ontype ]; -			if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { -				event.preventDefault(); +			if ( handle && handle.apply && jQuery.acceptData( cur ) ) { +				event.result = handle.apply( cur, data ); +				if ( event.result === false ) { +					event.preventDefault(); +				}  			}  		}  		event.type = type; @@ -2951,29 +4547,33 @@ jQuery.event = {  		// If nobody prevented the default action, do it now  		if ( !onlyHandlers && !event.isDefaultPrevented() ) { -			if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && -				!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { +			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && +				jQuery.acceptData( elem ) ) {  				// Call a native DOM method on the target with the same name name as the event.  				// Can't use an .isFunction() check here because IE6/7 fails that test.  				// Don't do default actions on window, that's where global variables be (#6170) -				// IE<9 dies on focus/blur to hidden element (#1486) -				if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { +				if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {  					// Don't re-trigger an onFOO event when we call its FOO() method -					old = elem[ ontype ]; +					tmp = elem[ ontype ]; -					if ( old ) { +					if ( tmp ) {  						elem[ ontype ] = null;  					}  					// Prevent re-triggering of the same event, since we already bubbled it above  					jQuery.event.triggered = type; -					elem[ type ](); +					try { +						elem[ type ](); +					} catch ( e ) { +						// IE<9 dies on focus/blur to hidden element (#1486,#12518) +						// only reproducible on winXP IE8 native, not IE9 in IE8 mode +					}  					jQuery.event.triggered = undefined; -					if ( old ) { -						elem[ ontype ] = old; +					if ( tmp ) { +						elem[ ontype ] = tmp;  					}  				}  			} @@ -2985,15 +4585,13 @@ jQuery.event = {  	dispatch: function( event ) {  		// Make a writable jQuery.Event from the native event object -		event = jQuery.event.fix( event || window.event ); +		event = jQuery.event.fix( event ); -		var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related, -			handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), -			delegateCount = handlers.delegateCount, -			args = core_slice.call( arguments ), -			run_all = !event.exclusive && !event.namespace, -			special = jQuery.event.special[ event.type ] || {}, -			handlerQueue = []; +		var i, ret, handleObj, matched, j, +			handlerQueue = [], +			args = slice.call( arguments ), +			handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], +			special = jQuery.event.special[ event.type ] || {};  		// Use the fix-ed jQuery.Event rather than the (read-only) native event  		args[0] = event; @@ -3004,81 +4602,142 @@ jQuery.event = {  			return;  		} -		// Determine handlers that should run if there are delegated events +		// Determine handlers +		handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + +		// Run delegates first; they may want to stop propagation beneath us +		i = 0; +		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { +			event.currentTarget = matched.elem; + +			j = 0; +			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + +				// Triggered event must either 1) have no namespace, or +				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). +				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + +					event.handleObj = handleObj; +					event.data = handleObj.data; + +					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) +							.apply( matched.elem, args ); + +					if ( ret !== undefined ) { +						if ( (event.result = ret) === false ) { +							event.preventDefault(); +							event.stopPropagation(); +						} +					} +				} +			} +		} + +		// Call the postDispatch hook for the mapped type +		if ( special.postDispatch ) { +			special.postDispatch.call( this, event ); +		} + +		return event.result; +	}, + +	handlers: function( event, handlers ) { +		var sel, handleObj, matches, i, +			handlerQueue = [], +			delegateCount = handlers.delegateCount, +			cur = event.target; + +		// Find delegate handlers +		// Black-hole SVG <use> instance trees (#13180)  		// Avoid non-left-click bubbling in Firefox (#3861) -		if ( delegateCount && !(event.button && event.type === "click") ) { +		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { -			for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { +			/* jshint eqeqeq: false */ +			for ( ; cur != this; cur = cur.parentNode || this ) { +				/* jshint eqeqeq: true */ -				// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764) -				if ( cur.disabled !== true || event.type !== "click" ) { -					selMatch = {}; +				// Don't check non-elements (#13208) +				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) +				if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {  					matches = [];  					for ( i = 0; i < delegateCount; i++ ) {  						handleObj = handlers[ i ]; -						sel = handleObj.selector; -						if ( selMatch[ sel ] === undefined ) { -							selMatch[ sel ] = handleObj.needsContext ? +						// Don't conflict with Object.prototype properties (#13203) +						sel = handleObj.selector + " "; + +						if ( matches[ sel ] === undefined ) { +							matches[ sel ] = handleObj.needsContext ?  								jQuery( sel, this ).index( cur ) >= 0 :  								jQuery.find( sel, this, null, [ cur ] ).length;  						} -						if ( selMatch[ sel ] ) { +						if ( matches[ sel ] ) {  							matches.push( handleObj );  						}  					}  					if ( matches.length ) { -						handlerQueue.push({ elem: cur, matches: matches }); +						handlerQueue.push({ elem: cur, handlers: matches });  					}  				}  			}  		}  		// Add the remaining (directly-bound) handlers -		if ( handlers.length > delegateCount ) { -			handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); +		if ( delegateCount < handlers.length ) { +			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });  		} -		// Run delegates first; they may want to stop propagation beneath us -		for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { -			matched = handlerQueue[ i ]; -			event.currentTarget = matched.elem; +		return handlerQueue; +	}, -			for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { -				handleObj = matched.matches[ j ]; +	fix: function( event ) { +		if ( event[ jQuery.expando ] ) { +			return event; +		} -				// Triggered event must either 1) be non-exclusive and have no namespace, or -				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). -				if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { +		// Create a writable copy of the event object and normalize some properties +		var i, prop, copy, +			type = event.type, +			originalEvent = event, +			fixHook = this.fixHooks[ type ]; -					event.data = handleObj.data; -					event.handleObj = handleObj; +		if ( !fixHook ) { +			this.fixHooks[ type ] = fixHook = +				rmouseEvent.test( type ) ? this.mouseHooks : +				rkeyEvent.test( type ) ? this.keyHooks : +				{}; +		} +		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; -					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) -							.apply( matched.elem, args ); +		event = new jQuery.Event( originalEvent ); -					if ( ret !== undefined ) { -						event.result = ret; -						if ( ret === false ) { -							event.preventDefault(); -							event.stopPropagation(); -						} -					} -				} -			} +		i = copy.length; +		while ( i-- ) { +			prop = copy[ i ]; +			event[ prop ] = originalEvent[ prop ];  		} -		// Call the postDispatch hook for the mapped type -		if ( special.postDispatch ) { -			special.postDispatch.call( this, event ); +		// Support: IE<9 +		// Fix target property (#1925) +		if ( !event.target ) { +			event.target = originalEvent.srcElement || document;  		} -		return event.result; +		// Support: Chrome 23+, Safari? +		// Target should not be a text node (#504, #13143) +		if ( event.target.nodeType === 3 ) { +			event.target = event.target.parentNode; +		} + +		// Support: IE<9 +		// For mouse/key events, metaKey==false if it's undefined (#3368, #11328) +		event.metaKey = !!event.metaKey; + +		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;  	},  	// Includes some event props shared by KeyEvent and MouseEvent -	// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 *** -	props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), +	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),  	fixHooks: {}, @@ -3098,7 +4757,7 @@ jQuery.event = {  	mouseHooks: {  		props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),  		filter: function( event, original ) { -			var eventDoc, doc, body, +			var body, eventDoc, doc,  				button = original.button,  				fromElement = original.fromElement; @@ -3127,64 +4786,57 @@ jQuery.event = {  		}  	}, -	fix: function( event ) { -		if ( event[ jQuery.expando ] ) { -			return event; -		} - -		// Create a writable copy of the event object and normalize some properties -		var i, prop, -			originalEvent = event, -			fixHook = jQuery.event.fixHooks[ event.type ] || {}, -			copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - -		event = jQuery.Event( originalEvent ); - -		for ( i = copy.length; i; ) { -			prop = copy[ --i ]; -			event[ prop ] = originalEvent[ prop ]; -		} - -		// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) -		if ( !event.target ) { -			event.target = originalEvent.srcElement || document; -		} - -		// Target should not be a text node (#504, Safari) -		if ( event.target.nodeType === 3 ) { -			event.target = event.target.parentNode; -		} - -		// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8) -		event.metaKey = !!event.metaKey; - -		return fixHook.filter? fixHook.filter( event, originalEvent ) : event; -	}, -  	special: {  		load: {  			// Prevent triggered image.load events from bubbling to window.load  			noBubble: true  		}, -  		focus: { +			// Fire native event if possible so blur/focus sequence is correct +			trigger: function() { +				if ( this !== safeActiveElement() && this.focus ) { +					try { +						this.focus(); +						return false; +					} catch ( e ) { +						// Support: IE<9 +						// If we error on focus to hidden element (#1486, #12518), +						// let .trigger() run the handlers +					} +				} +			},  			delegateType: "focusin"  		},  		blur: { +			trigger: function() { +				if ( this === safeActiveElement() && this.blur ) { +					this.blur(); +					return false; +				} +			},  			delegateType: "focusout"  		}, - -		beforeunload: { -			setup: function( data, namespaces, eventHandle ) { -				// We only want to do this special case on windows -				if ( jQuery.isWindow( this ) ) { -					this.onbeforeunload = eventHandle; +		click: { +			// For checkbox, fire native event so checked state will be right +			trigger: function() { +				if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { +					this.click(); +					return false;  				}  			}, -			teardown: function( namespaces, eventHandle ) { -				if ( this.onbeforeunload === eventHandle ) { -					this.onbeforeunload = null; +			// For cross-browser consistency, don't fire native .click() on links +			_default: function( event ) { +				return jQuery.nodeName( event.target, "a" ); +			} +		}, + +		beforeunload: { +			postDispatch: function( event ) { + +				// Even when returnValue equals to undefined Firefox will still show alert +				if ( event.result !== undefined ) { +					event.originalEvent.returnValue = event.result;  				}  			}  		} @@ -3197,7 +4849,8 @@ jQuery.event = {  		var e = jQuery.extend(  			new jQuery.Event(),  			event, -			{ type: type, +			{ +				type: type,  				isSimulated: true,  				originalEvent: {}  			} @@ -3213,10 +4866,6 @@ jQuery.event = {  	}  }; -// Some plugins are using, but it's undocumented/deprecated and will be removed. -// The 1.7 special event interface should provide all the hooks needed now. -jQuery.event.handle = jQuery.event.dispatch; -  jQuery.removeEvent = document.removeEventListener ?  	function( elem, type, handle ) {  		if ( elem.removeEventListener ) { @@ -3230,7 +4879,7 @@ jQuery.removeEvent = document.removeEventListener ?  			// #8545, #7054, preventing memory leaks for custom events in IE6-8  			// detachEvent needed property on element, by name of that event, to properly expose it to GC -			if ( typeof elem[ name ] === "undefined" ) { +			if ( typeof elem[ name ] === strundefined ) {  				elem[ name ] = null;  			} @@ -3251,8 +4900,14 @@ jQuery.Event = function( src, props ) {  		// Events bubbling up the document may have been marked as prevented  		// by a handler lower down the tree; reflect the correct value. -		this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || -			src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; +		this.isDefaultPrevented = src.defaultPrevented || +				src.defaultPrevented === undefined && ( +				// Support: IE < 9 +				src.returnValue === false || +				// Support: Android < 4.0 +				src.getPreventDefault && src.getPreventDefault() ) ? +			returnTrue : +			returnFalse;  	// Event type  	} else { @@ -3271,54 +4926,51 @@ jQuery.Event = function( src, props ) {  	this[ jQuery.expando ] = true;  }; -function returnFalse() { -	return false; -} -function returnTrue() { -	return true; -} -  // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding  // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html  jQuery.Event.prototype = { -	preventDefault: function() { -		this.isDefaultPrevented = returnTrue; +	isDefaultPrevented: returnFalse, +	isPropagationStopped: returnFalse, +	isImmediatePropagationStopped: returnFalse, +	preventDefault: function() {  		var e = this.originalEvent; + +		this.isDefaultPrevented = returnTrue;  		if ( !e ) {  			return;  		} -		// if preventDefault exists run it on the original event +		// If preventDefault exists, run it on the original event  		if ( e.preventDefault ) {  			e.preventDefault(); -		// otherwise set the returnValue property of the original event to false (IE) +		// Support: IE +		// Otherwise set the returnValue property of the original event to false  		} else {  			e.returnValue = false;  		}  	},  	stopPropagation: function() { -		this.isPropagationStopped = returnTrue; -  		var e = this.originalEvent; + +		this.isPropagationStopped = returnTrue;  		if ( !e ) {  			return;  		} -		// if stopPropagation exists run it on the original event +		// If stopPropagation exists, run it on the original event  		if ( e.stopPropagation ) {  			e.stopPropagation();  		} -		// otherwise set the cancelBubble property of the original event to true (IE) + +		// Support: IE +		// Set the cancelBubble property of the original event to true  		e.cancelBubble = true;  	},  	stopImmediatePropagation: function() {  		this.isImmediatePropagationStopped = returnTrue;  		this.stopPropagation(); -	}, -	isDefaultPrevented: returnFalse, -	isPropagationStopped: returnFalse, -	isImmediatePropagationStopped: returnFalse +	}  };  // Create mouseenter/leave events using mouseover/out and event-time checks @@ -3334,8 +4986,7 @@ jQuery.each({  			var ret,  				target = this,  				related = event.relatedTarget, -				handleObj = event.handleObj, -				selector = handleObj.selector; +				handleObj = event.handleObj;  			// For mousenter/leave call the handler if related is outside the target.  			// NB: No relatedTarget if the mouse left/entered the browser window @@ -3350,7 +5001,7 @@ jQuery.each({  });  // IE submit delegation -if ( !jQuery.support.submitBubbles ) { +if ( !support.submitBubbles ) {  	jQuery.event.special.submit = {  		setup: function() { @@ -3364,11 +5015,11 @@ if ( !jQuery.support.submitBubbles ) {  				// Node name check avoids a VML-related crash in IE (#9807)  				var elem = e.target,  					form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; -				if ( form && !jQuery._data( form, "_submit_attached" ) ) { +				if ( form && !jQuery._data( form, "submitBubbles" ) ) {  					jQuery.event.add( form, "submit._submit", function( event ) {  						event._submit_bubble = true;  					}); -					jQuery._data( form, "_submit_attached", true ); +					jQuery._data( form, "submitBubbles", true );  				}  			});  			// return undefined since we don't need an event listener @@ -3397,7 +5048,7 @@ if ( !jQuery.support.submitBubbles ) {  }  // IE change delegation and checkbox/radio fix -if ( !jQuery.support.changeBubbles ) { +if ( !support.changeBubbles ) {  	jQuery.event.special.change = { @@ -3427,13 +5078,13 @@ if ( !jQuery.support.changeBubbles ) {  			jQuery.event.add( this, "beforeactivate._change", function( e ) {  				var elem = e.target; -				if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) { +				if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {  					jQuery.event.add( elem, "change._change", function( event ) {  						if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {  							jQuery.event.simulate( "change", this.parentNode, event, true );  						}  					}); -					jQuery._data( elem, "_change_attached", true ); +					jQuery._data( elem, "changeBubbles", true );  				}  			});  		}, @@ -3456,24 +5107,33 @@ if ( !jQuery.support.changeBubbles ) {  }  // Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { +if ( !support.focusinBubbles ) {  	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { -		// Attach a single capturing handler while someone wants focusin/focusout -		var attaches = 0, -			handler = function( event ) { +		// Attach a single capturing handler on the document while someone wants focusin/focusout +		var handler = function( event ) {  				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );  			};  		jQuery.event.special[ fix ] = {  			setup: function() { -				if ( attaches++ === 0 ) { -					document.addEventListener( orig, handler, true ); +				var doc = this.ownerDocument || this, +					attaches = jQuery._data( doc, fix ); + +				if ( !attaches ) { +					doc.addEventListener( orig, handler, true );  				} +				jQuery._data( doc, fix, ( attaches || 0 ) + 1 );  			},  			teardown: function() { -				if ( --attaches === 0 ) { -					document.removeEventListener( orig, handler, true ); +				var doc = this.ownerDocument || this, +					attaches = jQuery._data( doc, fix ) - 1; + +				if ( !attaches ) { +					doc.removeEventListener( orig, handler, true ); +					jQuery._removeData( doc, fix ); +				} else { +					jQuery._data( doc, fix, attaches );  				}  			}  		}; @@ -3483,12 +5143,12 @@ if ( !jQuery.support.focusinBubbles ) {  jQuery.fn.extend({  	on: function( types, selector, data, fn, /*INTERNAL*/ one ) { -		var origFn, type; +		var type, origFn;  		// Types can be a map of types/handlers  		if ( typeof types === "object" ) {  			// ( types-Object, selector, data ) -			if ( typeof selector !== "string" ) { // && selector != null +			if ( typeof selector !== "string" ) {  				// ( types-Object, data )  				data = data || selector;  				selector = undefined; @@ -3570,2266 +5230,526 @@ jQuery.fn.extend({  		});  	}, -	bind: function( types, data, fn ) { -		return this.on( types, null, data, fn ); -	}, -	unbind: function( types, fn ) { -		return this.off( types, null, fn ); -	}, - -	live: function( types, data, fn ) { -		jQuery( this.context ).on( types, this.selector, data, fn ); -		return this; -	}, -	die: function( types, fn ) { -		jQuery( this.context ).off( types, this.selector || "**", fn ); -		return this; -	}, - -	delegate: function( selector, types, data, fn ) { -		return this.on( types, selector, data, fn ); -	}, -	undelegate: function( selector, types, fn ) { -		// ( namespace ) or ( selector, types [, fn] ) -		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); -	}, -  	trigger: function( type, data ) {  		return this.each(function() {  			jQuery.event.trigger( type, data, this );  		});  	},  	triggerHandler: function( type, data ) { -		if ( this[0] ) { -			return jQuery.event.trigger( type, data, this[0], true ); -		} -	}, - -	toggle: function( fn ) { -		// Save reference to arguments for access in closure -		var args = arguments, -			guid = fn.guid || jQuery.guid++, -			i = 0, -			toggler = function( event ) { -				// Figure out which function to execute -				var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; -				jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - -				// Make sure that clicks stop -				event.preventDefault(); - -				// and execute the function -				return args[ lastToggle ].apply( this, arguments ) || false; -			}; - -		// link all the functions, so any of them can unbind this click handler -		toggler.guid = guid; -		while ( i < args.length ) { -			args[ i++ ].guid = guid; +		var elem = this[0]; +		if ( elem ) { +			return jQuery.event.trigger( type, data, elem, true );  		} - -		return this.click( toggler ); -	}, - -	hover: function( fnOver, fnOut ) { -		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );  	}  }); -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + -	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + -	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { - -	// Handle event binding -	jQuery.fn[ name ] = function( data, fn ) { -		if ( fn == null ) { -			fn = data; -			data = null; -		} - -		return arguments.length > 0 ? -			this.on( name, null, data, fn ) : -			this.trigger( name ); -	}; -	if ( rkeyEvent.test( name ) ) { -		jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; -	} +function createSafeFragment( document ) { +	var list = nodeNames.split( "|" ), +		safeFrag = document.createDocumentFragment(); -	if ( rmouseEvent.test( name ) ) { -		jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; +	if ( safeFrag.createElement ) { +		while ( list.length ) { +			safeFrag.createElement( +				list.pop() +			); +		}  	} -}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license - * http://sizzlejs.com/ - */ -(function( window, undefined ) { - -var cachedruns, -	assertGetIdNotName, -	Expr, -	getText, -	isXML, -	contains, -	compile, -	sortOrder, -	hasDuplicate, -	outermostContext, +	return safeFrag; +} -	baseHasDuplicate = true, -	strundefined = "undefined", +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + +		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", +	rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, +	rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), +	rleadingWhitespace = /^\s+/, +	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, +	rtagName = /<([\w:]+)/, +	rtbody = /<tbody/i, +	rhtml = /<|&#?\w+;/, +	rnoInnerhtml = /<(?:script|style|link)/i, +	// checked="checked" or checked +	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, +	rscriptType = /^$|\/(?:java|ecma)script/i, +	rscriptTypeMasked = /^true\/(.*)/, +	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, -	expando = ( "sizcache" + Math.random() ).replace( ".", "" ), +	// We have to close these tags to support XHTML (#13200) +	wrapMap = { +		option: [ 1, "<select multiple='multiple'>", "</select>" ], +		legend: [ 1, "<fieldset>", "</fieldset>" ], +		area: [ 1, "<map>", "</map>" ], +		param: [ 1, "<object>", "</object>" ], +		thead: [ 1, "<table>", "</table>" ], +		tr: [ 2, "<table><tbody>", "</tbody></table>" ], +		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ], +		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], -	Token = String, -	document = window.document, -	docElem = document.documentElement, -	dirruns = 0, -	done = 0, -	pop = [].pop, -	push = [].push, -	slice = [].slice, -	// Use a stripped-down indexOf if a native one is unavailable -	indexOf = [].indexOf || function( elem ) { -		var i = 0, -			len = this.length; -		for ( ; i < len; i++ ) { -			if ( this[i] === elem ) { -				return i; -			} -		} -		return -1; +		// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, +		// unless wrapped in a div with non-breaking characters in front of it. +		_default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]  	}, +	safeFragment = createSafeFragment( document ), +	fragmentDiv = safeFragment.appendChild( document.createElement("div") ); -	// Augment a function for special use by Sizzle -	markFunction = function( fn, value ) { -		fn[ expando ] = value == null || value; -		return fn; -	}, +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; -	createCache = function() { -		var cache = {}, -			keys = []; +function getAll( context, tag ) { +	var elems, elem, +		i = 0, +		found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : +			typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : +			undefined; -		return markFunction(function( key, value ) { -			// Only keep the most recent entries -			if ( keys.push( key ) > Expr.cacheLength ) { -				delete cache[ keys.shift() ]; +	if ( !found ) { +		for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { +			if ( !tag || jQuery.nodeName( elem, tag ) ) { +				found.push( elem ); +			} else { +				jQuery.merge( found, getAll( elem, tag ) );  			} - -			// Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157) -			return (cache[ key + " " ] = value); -		}, cache ); -	}, - -	classCache = createCache(), -	tokenCache = createCache(), -	compilerCache = createCache(), - -	// Regex - -	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace -	whitespace = "[\\x20\\t\\r\\n\\f]", -	// http://www.w3.org/TR/css3-syntax/#characters -	characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", - -	// Loosely modeled on CSS identifier characters -	// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors) -	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier -	identifier = characterEncoding.replace( "w", "w#" ), - -	// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors -	operators = "([*^$|!~]?=)", -	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + -		"*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", - -	// Prefer arguments not in parens/brackets, -	//   then attribute selectors and non-pseudos (denoted by :), -	//   then anything else -	// These preferences are here to reduce the number of selectors -	//   needing tokenize in the PSEUDO preFilter -	pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)", - -	// For matchExpr.POS and matchExpr.needsContext -	pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + -		"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", - -	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter -	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - -	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), -	rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), -	rpseudo = new RegExp( pseudos ), - -	// Easily-parseable/retrievable ID or TAG or CLASS selectors -	rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, - -	rnot = /^:not/, -	rsibling = /[\x20\t\r\n\f]*[+~]/, -	rendsWithNot = /:not\($/, - -	rheader = /h\d/i, -	rinputs = /input|select|textarea|button/i, - -	rbackslash = /\\(?!\\)/g, - -	matchExpr = { -		"ID": new RegExp( "^#(" + characterEncoding + ")" ), -		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), -		"NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), -		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), -		"ATTR": new RegExp( "^" + attributes ), -		"PSEUDO": new RegExp( "^" + pseudos ), -		"POS": new RegExp( pos, "i" ), -		"CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace + -			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + -			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ), -		// For use in libraries implementing .is() -		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" ) -	}, - -	// Support - -	// Used for testing something on an element -	assert = function( fn ) { -		var div = document.createElement("div"); - -		try { -			return fn( div ); -		} catch (e) { -			return false; -		} finally { -			// release memory in IE -			div = null;  		} -	}, - -	// Check if getElementsByTagName("*") returns only elements -	assertTagNameNoComments = assert(function( div ) { -		div.appendChild( document.createComment("") ); -		return !div.getElementsByTagName("*").length; -	}), - -	// Check if getAttribute returns normalized href attributes -	assertHrefNotNormalized = assert(function( div ) { -		div.innerHTML = "<a href='#'></a>"; -		return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && -			div.firstChild.getAttribute("href") === "#"; -	}), - -	// Check if attributes should be retrieved by attribute nodes -	assertAttributes = assert(function( div ) { -		div.innerHTML = "<select></select>"; -		var type = typeof div.lastChild.getAttribute("multiple"); -		// IE8 returns a string for some attributes even when not present -		return type !== "boolean" && type !== "string"; -	}), - -	// Check if getElementsByClassName can be trusted -	assertUsableClassName = assert(function( div ) { -		// Opera can't find a second classname (in 9.6) -		div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>"; -		if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { -			return false; -		} - -		// Safari 3.2 caches class attributes and doesn't catch changes -		div.lastChild.className = "e"; -		return div.getElementsByClassName("e").length === 2; -	}), - -	// Check if getElementById returns elements by name -	// Check if getElementsByName privileges form controls or returns elements by ID -	assertUsableName = assert(function( div ) { -		// Inject content -		div.id = expando + 0; -		div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>"; -		docElem.insertBefore( div, docElem.firstChild ); - -		// Test -		var pass = document.getElementsByName && -			// buggy browsers will return fewer than the correct 2 -			document.getElementsByName( expando ).length === 2 + -			// buggy browsers will return more than the correct 0 -			document.getElementsByName( expando + 0 ).length; -		assertGetIdNotName = !document.getElementById( expando ); - -		// Cleanup -		docElem.removeChild( div ); - -		return pass; -	}); - -// If slice is not available, provide a backup -try { -	slice.call( docElem.childNodes, 0 )[0].nodeType; -} catch ( e ) { -	slice = function( i ) { -		var elem, -			results = []; -		for ( ; (elem = this[i]); i++ ) { -			results.push( elem ); -		} -		return results; -	}; -} - -function Sizzle( selector, context, results, seed ) { -	results = results || []; -	context = context || document; -	var match, elem, xml, m, -		nodeType = context.nodeType; - -	if ( !selector || typeof selector !== "string" ) { -		return results; -	} - -	if ( nodeType !== 1 && nodeType !== 9 ) { -		return [];  	} -	xml = isXML( context ); - -	if ( !xml && !seed ) { -		if ( (match = rquickExpr.exec( selector )) ) { -			// Speed-up: Sizzle("#ID") -			if ( (m = match[1]) ) { -				if ( nodeType === 9 ) { -					elem = context.getElementById( m ); -					// Check parentNode to catch when Blackberry 4.6 returns -					// nodes that are no longer in the document #6963 -					if ( elem && elem.parentNode ) { -						// Handle the case where IE, Opera, and Webkit return items -						// by name instead of ID -						if ( elem.id === m ) { -							results.push( elem ); -							return results; -						} -					} else { -						return results; -					} -				} else { -					// Context is not a document -					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && -						contains( context, elem ) && elem.id === m ) { -						results.push( elem ); -						return results; -					} -				} - -			// Speed-up: Sizzle("TAG") -			} else if ( match[2] ) { -				push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); -				return results; +	return tag === undefined || tag && jQuery.nodeName( context, tag ) ? +		jQuery.merge( [ context ], found ) : +		found; +} -			// Speed-up: Sizzle(".CLASS") -			} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) { -				push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); -				return results; -			} -		} +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { +	if ( rcheckableType.test( elem.type ) ) { +		elem.defaultChecked = elem.checked;  	} - -	// All others -	return select( selector.replace( rtrim, "$1" ), context, results, seed, xml );  } -Sizzle.matches = function( expr, elements ) { -	return Sizzle( expr, null, null, elements ); -}; +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { +	return jQuery.nodeName( elem, "table" ) && +		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? -Sizzle.matchesSelector = function( elem, expr ) { -	return Sizzle( expr, null, null, [ elem ] ).length > 0; -}; - -// Returns a function to use in pseudos for input types -function createInputPseudo( type ) { -	return function( elem ) { -		var name = elem.nodeName.toLowerCase(); -		return name === "input" && elem.type === type; -	}; +		elem.getElementsByTagName("tbody")[0] || +			elem.appendChild( elem.ownerDocument.createElement("tbody") ) : +		elem;  } -// Returns a function to use in pseudos for buttons -function createButtonPseudo( type ) { -	return function( elem ) { -		var name = elem.nodeName.toLowerCase(); -		return (name === "input" || name === "button") && elem.type === type; -	}; +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { +	elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; +	return elem;  } - -// Returns a function to use in pseudos for positionals -function createPositionalPseudo( fn ) { -	return markFunction(function( argument ) { -		argument = +argument; -		return markFunction(function( seed, matches ) { -			var j, -				matchIndexes = fn( [], seed.length, argument ), -				i = matchIndexes.length; - -			// Match elements found at the specified indexes -			while ( i-- ) { -				if ( seed[ (j = matchIndexes[i]) ] ) { -					seed[j] = !(matches[j] = seed[j]); -				} -			} -		}); -	}); -} - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { -	var node, -		ret = "", -		i = 0, -		nodeType = elem.nodeType; - -	if ( nodeType ) { -		if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { -			// Use textContent for elements -			// innerText usage removed for consistency of new lines (see #11153) -			if ( typeof elem.textContent === "string" ) { -				return elem.textContent; -			} else { -				// Traverse its children -				for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { -					ret += getText( elem ); -				} -			} -		} else if ( nodeType === 3 || nodeType === 4 ) { -			return elem.nodeValue; -		} -		// Do not include comment or processing instruction nodes +function restoreScript( elem ) { +	var match = rscriptTypeMasked.exec( elem.type ); +	if ( match ) { +		elem.type = match[1];  	} else { - -		// If no nodeType, this is expected to be an array -		for ( ; (node = elem[i]); i++ ) { -			// Do not traverse comment nodes -			ret += getText( node ); -		} +		elem.removeAttribute("type");  	} -	return ret; -}; - -isXML = Sizzle.isXML = function( elem ) { -	// documentElement is verified for cases where it doesn't yet exist -	// (such as loading iframes in IE - #4833) -	var documentElement = elem && (elem.ownerDocument || elem).documentElement; -	return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -// Element contains another -contains = Sizzle.contains = docElem.contains ? -	function( a, b ) { -		var adown = a.nodeType === 9 ? a.documentElement : a, -			bup = b && b.parentNode; -		return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) ); -	} : -	docElem.compareDocumentPosition ? -	function( a, b ) { -		return b && !!( a.compareDocumentPosition( b ) & 16 ); -	} : -	function( a, b ) { -		while ( (b = b.parentNode) ) { -			if ( b === a ) { -				return true; -			} -		} -		return false; -	}; - -Sizzle.attr = function( elem, name ) { -	var val, -		xml = isXML( elem ); +	return elem; +} -	if ( !xml ) { -		name = name.toLowerCase(); -	} -	if ( (val = Expr.attrHandle[ name ]) ) { -		return val( elem ); -	} -	if ( xml || assertAttributes ) { -		return elem.getAttribute( name ); +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { +	var elem, +		i = 0; +	for ( ; (elem = elems[i]) != null; i++ ) { +		jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );  	} -	val = elem.getAttributeNode( name ); -	return val ? -		typeof elem[ name ] === "boolean" ? -			elem[ name ] ? name : null : -			val.specified ? val.value : null : -		null; -}; - -Expr = Sizzle.selectors = { - -	// Can be adjusted by the user -	cacheLength: 50, - -	createPseudo: markFunction, - -	match: matchExpr, - -	// IE6/7 return a modified href -	attrHandle: assertHrefNotNormalized ? -		{} : -		{ -			"href": function( elem ) { -				return elem.getAttribute( "href", 2 ); -			}, -			"type": function( elem ) { -				return elem.getAttribute("type"); -			} -		}, - -	find: { -		"ID": assertGetIdNotName ? -			function( id, context, xml ) { -				if ( typeof context.getElementById !== strundefined && !xml ) { -					var m = context.getElementById( id ); -					// Check parentNode to catch when Blackberry 4.6 returns -					// nodes that are no longer in the document #6963 -					return m && m.parentNode ? [m] : []; -				} -			} : -			function( id, context, xml ) { -				if ( typeof context.getElementById !== strundefined && !xml ) { -					var m = context.getElementById( id ); - -					return m ? -						m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? -							[m] : -							undefined : -						[]; -				} -			}, - -		"TAG": assertTagNameNoComments ? -			function( tag, context ) { -				if ( typeof context.getElementsByTagName !== strundefined ) { -					return context.getElementsByTagName( tag ); -				} -			} : -			function( tag, context ) { -				var results = context.getElementsByTagName( tag ); - -				// Filter out possible comments -				if ( tag === "*" ) { -					var elem, -						tmp = [], -						i = 0; - -					for ( ; (elem = results[i]); i++ ) { -						if ( elem.nodeType === 1 ) { -							tmp.push( elem ); -						} -					} - -					return tmp; -				} -				return results; -			}, - -		"NAME": assertUsableName && function( tag, context ) { -			if ( typeof context.getElementsByName !== strundefined ) { -				return context.getElementsByName( name ); -			} -		}, - -		"CLASS": assertUsableClassName && function( className, context, xml ) { -			if ( typeof context.getElementsByClassName !== strundefined && !xml ) { -				return context.getElementsByClassName( className ); -			} -		} -	}, - -	relative: { -		">": { dir: "parentNode", first: true }, -		" ": { dir: "parentNode" }, -		"+": { dir: "previousSibling", first: true }, -		"~": { dir: "previousSibling" } -	}, - -	preFilter: { -		"ATTR": function( match ) { -			match[1] = match[1].replace( rbackslash, "" ); - -			// Move the given value to match[3] whether quoted or unquoted -			match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" ); - -			if ( match[2] === "~=" ) { -				match[3] = " " + match[3] + " "; -			} - -			return match.slice( 0, 4 ); -		}, - -		"CHILD": function( match ) { -			/* matches from matchExpr["CHILD"] -				1 type (only|nth|...) -				2 argument (even|odd|\d*|\d*n([+-]\d+)?|...) -				3 xn-component of xn+y argument ([+-]?\d*n|) -				4 sign of xn-component -				5 x of xn-component -				6 sign of y-component -				7 y of y-component -			*/ -			match[1] = match[1].toLowerCase(); - -			if ( match[1] === "nth" ) { -				// nth-child requires argument -				if ( !match[2] ) { -					Sizzle.error( match[0] ); -				} - -				// numeric x and y parameters for Expr.filter.CHILD -				// remember that false/true cast respectively to 0/1 -				match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) ); -				match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" ); - -			// other types prohibit arguments -			} else if ( match[2] ) { -				Sizzle.error( match[0] ); -			} - -			return match; -		}, - -		"PSEUDO": function( match ) { -			var unquoted, excess; -			if ( matchExpr["CHILD"].test( match[0] ) ) { -				return null; -			} - -			if ( match[3] ) { -				match[2] = match[3]; -			} else if ( (unquoted = match[4]) ) { -				// Only check arguments that contain a pseudo -				if ( rpseudo.test(unquoted) && -					// Get excess from tokenize (recursively) -					(excess = tokenize( unquoted, true )) && -					// advance to the next closing parenthesis -					(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - -					// excess is a negative index -					unquoted = unquoted.slice( 0, excess ); -					match[0] = match[0].slice( 0, excess ); -				} -				match[2] = unquoted; -			} - -			// Return only captures needed by the pseudo filter method (type and argument) -			return match.slice( 0, 3 ); -		} -	}, - -	filter: { -		"ID": assertGetIdNotName ? -			function( id ) { -				id = id.replace( rbackslash, "" ); -				return function( elem ) { -					return elem.getAttribute("id") === id; -				}; -			} : -			function( id ) { -				id = id.replace( rbackslash, "" ); -				return function( elem ) { -					var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); -					return node && node.value === id; -				}; -			}, - -		"TAG": function( nodeName ) { -			if ( nodeName === "*" ) { -				return function() { return true; }; -			} -			nodeName = nodeName.replace( rbackslash, "" ).toLowerCase(); - -			return function( elem ) { -				return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; -			}; -		}, - -		"CLASS": function( className ) { -			var pattern = classCache[ expando ][ className + " " ]; - -			return pattern || -				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && -				classCache( className, function( elem ) { -					return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); -				}); -		}, - -		"ATTR": function( name, operator, check ) { -			return function( elem, context ) { -				var result = Sizzle.attr( elem, name ); - -				if ( result == null ) { -					return operator === "!="; -				} -				if ( !operator ) { -					return true; -				} - -				result += ""; - -				return operator === "=" ? result === check : -					operator === "!=" ? result !== check : -					operator === "^=" ? check && result.indexOf( check ) === 0 : -					operator === "*=" ? check && result.indexOf( check ) > -1 : -					operator === "$=" ? check && result.substr( result.length - check.length ) === check : -					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : -					operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" : -					false; -			}; -		}, - -		"CHILD": function( type, argument, first, last ) { - -			if ( type === "nth" ) { -				return function( elem ) { -					var node, diff, -						parent = elem.parentNode; - -					if ( first === 1 && last === 0 ) { -						return true; -					} - -					if ( parent ) { -						diff = 0; -						for ( node = parent.firstChild; node; node = node.nextSibling ) { -							if ( node.nodeType === 1 ) { -								diff++; -								if ( elem === node ) { -									break; -								} -							} -						} -					} - -					// Incorporate the offset (or cast to NaN), then check against cycle size -					diff -= last; -					return diff === first || ( diff % first === 0 && diff / first >= 0 ); -				}; -			} - -			return function( elem ) { -				var node = elem; - -				switch ( type ) { -					case "only": -					case "first": -						while ( (node = node.previousSibling) ) { -							if ( node.nodeType === 1 ) { -								return false; -							} -						} - -						if ( type === "first" ) { -							return true; -						} - -						node = elem; +} -						/* falls through */ -					case "last": -						while ( (node = node.nextSibling) ) { -							if ( node.nodeType === 1 ) { -								return false; -							} -						} +function cloneCopyEvent( src, dest ) { -						return true; -				} -			}; -		}, +	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { +		return; +	} -		"PSEUDO": function( pseudo, argument ) { -			// pseudo-class names are case-insensitive -			// http://www.w3.org/TR/selectors/#pseudo-classes -			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters -			// Remember that setFilters inherits from pseudos -			var args, -				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || -					Sizzle.error( "unsupported pseudo: " + pseudo ); +	var type, i, l, +		oldData = jQuery._data( src ), +		curData = jQuery._data( dest, oldData ), +		events = oldData.events; -			// The user may use createPseudo to indicate that -			// arguments are needed to create the filter function -			// just as Sizzle does -			if ( fn[ expando ] ) { -				return fn( argument ); -			} +	if ( events ) { +		delete curData.handle; +		curData.events = {}; -			// But maintain support for old signatures -			if ( fn.length > 1 ) { -				args = [ pseudo, pseudo, "", argument ]; -				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? -					markFunction(function( seed, matches ) { -						var idx, -							matched = fn( seed, argument ), -							i = matched.length; -						while ( i-- ) { -							idx = indexOf.call( seed, matched[i] ); -							seed[ idx ] = !( matches[ idx ] = matched[i] ); -						} -					}) : -					function( elem ) { -						return fn( elem, 0, args ); -					}; +		for ( type in events ) { +			for ( i = 0, l = events[ type ].length; i < l; i++ ) { +				jQuery.event.add( dest, type, events[ type ][ i ] );  			} - -			return fn;  		} -	}, - -	pseudos: { -		"not": markFunction(function( selector ) { -			// Trim the selector passed to compile -			// to avoid treating leading and trailing -			// spaces as combinators -			var input = [], -				results = [], -				matcher = compile( selector.replace( rtrim, "$1" ) ); - -			return matcher[ expando ] ? -				markFunction(function( seed, matches, context, xml ) { -					var elem, -						unmatched = matcher( seed, null, xml, [] ), -						i = seed.length; - -					// Match elements unmatched by `matcher` -					while ( i-- ) { -						if ( (elem = unmatched[i]) ) { -							seed[i] = !(matches[i] = elem); -						} -					} -				}) : -				function( elem, context, xml ) { -					input[0] = elem; -					matcher( input, null, xml, results ); -					return !results.pop(); -				}; -		}), - -		"has": markFunction(function( selector ) { -			return function( elem ) { -				return Sizzle( selector, elem ).length > 0; -			}; -		}), - -		"contains": markFunction(function( text ) { -			return function( elem ) { -				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; -			}; -		}), - -		"enabled": function( elem ) { -			return elem.disabled === false; -		}, - -		"disabled": function( elem ) { -			return elem.disabled === true; -		}, - -		"checked": function( elem ) { -			// In CSS3, :checked should return both checked and selected elements -			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked -			var nodeName = elem.nodeName.toLowerCase(); -			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); -		}, - -		"selected": function( elem ) { -			// Accessing this property makes selected-by-default -			// options in Safari work properly -			if ( elem.parentNode ) { -				elem.parentNode.selectedIndex; -			} - -			return elem.selected === true; -		}, - -		"parent": function( elem ) { -			return !Expr.pseudos["empty"]( elem ); -		}, - -		"empty": function( elem ) { -			// http://www.w3.org/TR/selectors/#empty-pseudo -			// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), -			//   not comment, processing instructions, or others -			// Thanks to Diego Perini for the nodeName shortcut -			//   Greater than "@" means alpha characters (specifically not starting with "#" or "?") -			var nodeType; -			elem = elem.firstChild; -			while ( elem ) { -				if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) { -					return false; -				} -				elem = elem.nextSibling; -			} -			return true; -		}, - -		"header": function( elem ) { -			return rheader.test( elem.nodeName ); -		}, - -		"text": function( elem ) { -			var type, attr; -			// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) -			// use getAttribute instead to test this case -			return elem.nodeName.toLowerCase() === "input" && -				(type = elem.type) === "text" && -				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type ); -		}, - -		// Input types -		"radio": createInputPseudo("radio"), -		"checkbox": createInputPseudo("checkbox"), -		"file": createInputPseudo("file"), -		"password": createInputPseudo("password"), -		"image": createInputPseudo("image"), - -		"submit": createButtonPseudo("submit"), -		"reset": createButtonPseudo("reset"), - -		"button": function( elem ) { -			var name = elem.nodeName.toLowerCase(); -			return name === "input" && elem.type === "button" || name === "button"; -		}, - -		"input": function( elem ) { -			return rinputs.test( elem.nodeName ); -		}, - -		"focus": function( elem ) { -			var doc = elem.ownerDocument; -			return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); -		}, - -		"active": function( elem ) { -			return elem === elem.ownerDocument.activeElement; -		}, - -		// Positional types -		"first": createPositionalPseudo(function() { -			return [ 0 ]; -		}), - -		"last": createPositionalPseudo(function( matchIndexes, length ) { -			return [ length - 1 ]; -		}), - -		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) { -			return [ argument < 0 ? argument + length : argument ]; -		}), - -		"even": createPositionalPseudo(function( matchIndexes, length ) { -			for ( var i = 0; i < length; i += 2 ) { -				matchIndexes.push( i ); -			} -			return matchIndexes; -		}), - -		"odd": createPositionalPseudo(function( matchIndexes, length ) { -			for ( var i = 1; i < length; i += 2 ) { -				matchIndexes.push( i ); -			} -			return matchIndexes; -		}), - -		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) { -			for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) { -				matchIndexes.push( i ); -			} -			return matchIndexes; -		}), - -		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) { -			for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) { -				matchIndexes.push( i ); -			} -			return matchIndexes; -		}) -	} -}; - -function siblingCheck( a, b, ret ) { -	if ( a === b ) { -		return ret;  	} -	var cur = a.nextSibling; - -	while ( cur ) { -		if ( cur === b ) { -			return -1; -		} - -		cur = cur.nextSibling; +	// make the cloned public data object a copy from the original +	if ( curData.data ) { +		curData.data = jQuery.extend( {}, curData.data );  	} - -	return 1;  } -sortOrder = docElem.compareDocumentPosition ? -	function( a, b ) { -		if ( a === b ) { -			hasDuplicate = true; -			return 0; -		} +function fixCloneNodeIssues( src, dest ) { +	var nodeName, e, data; -		return ( !a.compareDocumentPosition || !b.compareDocumentPosition ? -			a.compareDocumentPosition : -			a.compareDocumentPosition(b) & 4 -		) ? -1 : 1; -	} : -	function( a, b ) { -		// The nodes are identical, we can exit early -		if ( a === b ) { -			hasDuplicate = true; -			return 0; - -		// Fallback to using sourceIndex (in IE) if it's available on both nodes -		} else if ( a.sourceIndex && b.sourceIndex ) { -			return a.sourceIndex - b.sourceIndex; -		} - -		var al, bl, -			ap = [], -			bp = [], -			aup = a.parentNode, -			bup = b.parentNode, -			cur = aup; +	// We do not need to do anything for non-Elements +	if ( dest.nodeType !== 1 ) { +		return; +	} -		// If the nodes are siblings (or identical) we can do a quick check -		if ( aup === bup ) { -			return siblingCheck( a, b ); +	nodeName = dest.nodeName.toLowerCase(); -		// If no parents were found then the nodes are disconnected -		} else if ( !aup ) { -			return -1; +	// IE6-8 copies events bound via attachEvent when using cloneNode. +	if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { +		data = jQuery._data( dest ); -		} else if ( !bup ) { -			return 1; +		for ( e in data.events ) { +			jQuery.removeEvent( dest, e, data.handle );  		} -		// Otherwise they're somewhere else in the tree so we need -		// to build up a full list of the parentNodes for comparison -		while ( cur ) { -			ap.unshift( cur ); -			cur = cur.parentNode; -		} +		// Event data gets referenced instead of copied if the expando gets copied too +		dest.removeAttribute( jQuery.expando ); +	} -		cur = bup; +	// IE blanks contents when cloning scripts, and tries to evaluate newly-set text +	if ( nodeName === "script" && dest.text !== src.text ) { +		disableScript( dest ).text = src.text; +		restoreScript( dest ); -		while ( cur ) { -			bp.unshift( cur ); -			cur = cur.parentNode; +	// IE6-10 improperly clones children of object elements using classid. +	// IE10 throws NoModificationAllowedError if parent is null, #12132. +	} else if ( nodeName === "object" ) { +		if ( dest.parentNode ) { +			dest.outerHTML = src.outerHTML;  		} -		al = ap.length; -		bl = bp.length; - -		// Start walking down the tree looking for a discrepancy -		for ( var i = 0; i < al && i < bl; i++ ) { -			if ( ap[i] !== bp[i] ) { -				return siblingCheck( ap[i], bp[i] ); -			} +		// This path appears unavoidable for IE9. When cloning an object +		// element in IE9, the outerHTML strategy above is not sufficient. +		// If the src has innerHTML and the destination does not, +		// copy the src.innerHTML into the dest.innerHTML. #10324 +		if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { +			dest.innerHTML = src.innerHTML;  		} -		// We ended someplace up the tree so do a sibling check -		return i === al ? -			siblingCheck( a, bp[i], -1 ) : -			siblingCheck( ap[i], b, 1 ); -	}; - -// Always assume the presence of duplicates if sort doesn't -// pass them to our comparison function (as in Google Chrome). -[0, 0].sort( sortOrder ); -baseHasDuplicate = !hasDuplicate; - -// Document sorting and removing duplicates -Sizzle.uniqueSort = function( results ) { -	var elem, -		duplicates = [], -		i = 1, -		j = 0; +	} else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { +		// IE6-8 fails to persist the checked state of a cloned checkbox +		// or radio button. Worse, IE6-7 fail to give the cloned element +		// a checked appearance if the defaultChecked value isn't also set -	hasDuplicate = baseHasDuplicate; -	results.sort( sortOrder ); +		dest.defaultChecked = dest.checked = src.checked; -	if ( hasDuplicate ) { -		for ( ; (elem = results[i]); i++ ) { -			if ( elem === results[ i - 1 ] ) { -				j = duplicates.push( i ); -			} -		} -		while ( j-- ) { -			results.splice( duplicates[ j ], 1 ); +		// IE6-7 get confused and end up setting the value of a cloned +		// checkbox/radio button to an empty string instead of "on" +		if ( dest.value !== src.value ) { +			dest.value = src.value;  		} -	} -	return results; -}; - -Sizzle.error = function( msg ) { -	throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -function tokenize( selector, parseOnly ) { -	var matched, match, tokens, type, -		soFar, groups, preFilters, -		cached = tokenCache[ expando ][ selector + " " ]; +	// IE6-8 fails to return the selected option to the default selected +	// state when cloning options +	} else if ( nodeName === "option" ) { +		dest.defaultSelected = dest.selected = src.defaultSelected; -	if ( cached ) { -		return parseOnly ? 0 : cached.slice( 0 ); +	// IE6-8 fails to set the defaultValue to the correct value when +	// cloning other types of input fields +	} else if ( nodeName === "input" || nodeName === "textarea" ) { +		dest.defaultValue = src.defaultValue;  	} +} -	soFar = selector; -	groups = []; -	preFilters = Expr.preFilter; +jQuery.extend({ +	clone: function( elem, dataAndEvents, deepDataAndEvents ) { +		var destElements, node, clone, i, srcElements, +			inPage = jQuery.contains( elem.ownerDocument, elem ); -	while ( soFar ) { +		if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { +			clone = elem.cloneNode( true ); -		// Comma and first run -		if ( !matched || (match = rcomma.exec( soFar )) ) { -			if ( match ) { -				// Don't consume trailing commas as valid -				soFar = soFar.slice( match[0].length ) || soFar; -			} -			groups.push( tokens = [] ); +		// IE<=8 does not properly clone detached, unknown element nodes +		} else { +			fragmentDiv.innerHTML = elem.outerHTML; +			fragmentDiv.removeChild( clone = fragmentDiv.firstChild );  		} -		matched = false; - -		// Combinators -		if ( (match = rcombinators.exec( soFar )) ) { -			tokens.push( matched = new Token( match.shift() ) ); -			soFar = soFar.slice( matched.length ); - -			// Cast descendant combinators to space -			matched.type = match[0].replace( rtrim, " " ); -		} +		if ( (!support.noCloneEvent || !support.noCloneChecked) && +				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { -		// Filters -		for ( type in Expr.filter ) { -			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || -				(match = preFilters[ type ]( match ))) ) { +			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 +			destElements = getAll( clone ); +			srcElements = getAll( elem ); -				tokens.push( matched = new Token( match.shift() ) ); -				soFar = soFar.slice( matched.length ); -				matched.type = type; -				matched.matches = match; +			// Fix all IE cloning issues +			for ( i = 0; (node = srcElements[i]) != null; ++i ) { +				// Ensure that the destination node is not null; Fixes #9587 +				if ( destElements[i] ) { +					fixCloneNodeIssues( node, destElements[i] ); +				}  			}  		} -		if ( !matched ) { -			break; -		} -	} - -	// Return the length of the invalid excess -	// if we're just parsing -	// Otherwise, throw an error or return tokens -	return parseOnly ? -		soFar.length : -		soFar ? -			Sizzle.error( selector ) : -			// Cache the tokens -			tokenCache( selector, groups ).slice( 0 ); -} - -function addCombinator( matcher, combinator, base ) { -	var dir = combinator.dir, -		checkNonElements = base && combinator.dir === "parentNode", -		doneName = done++; - -	return combinator.first ? -		// Check against closest ancestor/preceding element -		function( elem, context, xml ) { -			while ( (elem = elem[ dir ]) ) { -				if ( checkNonElements || elem.nodeType === 1  ) { -					return matcher( elem, context, xml ); -				} -			} -		} : +		// Copy the events from the original to the clone +		if ( dataAndEvents ) { +			if ( deepDataAndEvents ) { +				srcElements = srcElements || getAll( elem ); +				destElements = destElements || getAll( clone ); -		// Check against all ancestor/preceding elements -		function( elem, context, xml ) { -			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching -			if ( !xml ) { -				var cache, -					dirkey = dirruns + " " + doneName + " ", -					cachedkey = dirkey + cachedruns; -				while ( (elem = elem[ dir ]) ) { -					if ( checkNonElements || elem.nodeType === 1 ) { -						if ( (cache = elem[ expando ]) === cachedkey ) { -							return elem.sizset; -						} else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) { -							if ( elem.sizset ) { -								return elem; -							} -						} else { -							elem[ expando ] = cachedkey; -							if ( matcher( elem, context, xml ) ) { -								elem.sizset = true; -								return elem; -							} -							elem.sizset = false; -						} -					} +				for ( i = 0; (node = srcElements[i]) != null; i++ ) { +					cloneCopyEvent( node, destElements[i] );  				}  			} else { -				while ( (elem = elem[ dir ]) ) { -					if ( checkNonElements || elem.nodeType === 1 ) { -						if ( matcher( elem, context, xml ) ) { -							return elem; -						} -					} -				} -			} -		}; -} - -function elementMatcher( matchers ) { -	return matchers.length > 1 ? -		function( elem, context, xml ) { -			var i = matchers.length; -			while ( i-- ) { -				if ( !matchers[i]( elem, context, xml ) ) { -					return false; -				} -			} -			return true; -		} : -		matchers[0]; -} - -function condense( unmatched, map, filter, context, xml ) { -	var elem, -		newUnmatched = [], -		i = 0, -		len = unmatched.length, -		mapped = map != null; - -	for ( ; i < len; i++ ) { -		if ( (elem = unmatched[i]) ) { -			if ( !filter || filter( elem, context, xml ) ) { -				newUnmatched.push( elem ); -				if ( mapped ) { -					map.push( i ); -				} +				cloneCopyEvent( elem, clone );  			}  		} -	} -	return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { -	if ( postFilter && !postFilter[ expando ] ) { -		postFilter = setMatcher( postFilter ); -	} -	if ( postFinder && !postFinder[ expando ] ) { -		postFinder = setMatcher( postFinder, postSelector ); -	} -	return markFunction(function( seed, results, context, xml ) { -		var temp, i, elem, -			preMap = [], -			postMap = [], -			preexisting = results.length, - -			// Get initial elements from seed or context -			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - -			// Prefilter to get matcher input, preserving a map for seed-results synchronization -			matcherIn = preFilter && ( seed || !selector ) ? -				condense( elems, preMap, preFilter, context, xml ) : -				elems, - -			matcherOut = matcher ? -				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, -				postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - -					// ...intermediate processing is necessary -					[] : - -					// ...otherwise use results directly -					results : -				matcherIn; - -		// Find primary matches -		if ( matcher ) { -			matcher( matcherIn, matcherOut, context, xml ); +		// Preserve script evaluation history +		destElements = getAll( clone, "script" ); +		if ( destElements.length > 0 ) { +			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );  		} -		// Apply postFilter -		if ( postFilter ) { -			temp = condense( matcherOut, postMap ); -			postFilter( temp, [], context, xml ); - -			// Un-match failing elements by moving them back to matcherIn -			i = temp.length; -			while ( i-- ) { -				if ( (elem = temp[i]) ) { -					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); -				} -			} -		} +		destElements = srcElements = node = null; -		if ( seed ) { -			if ( postFinder || preFilter ) { -				if ( postFinder ) { -					// Get the final matcherOut by condensing this intermediate into postFinder contexts -					temp = []; -					i = matcherOut.length; -					while ( i-- ) { -						if ( (elem = matcherOut[i]) ) { -							// Restore matcherIn since elem is not yet a final match -							temp.push( (matcherIn[i] = elem) ); -						} -					} -					postFinder( null, (matcherOut = []), temp, xml ); -				} +		// Return the cloned set +		return clone; +	}, -				// Move matched elements from seed to results to keep them synchronized -				i = matcherOut.length; -				while ( i-- ) { -					if ( (elem = matcherOut[i]) && -						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { +	buildFragment: function( elems, context, scripts, selection ) { +		var j, elem, contains, +			tmp, tag, tbody, wrap, +			l = elems.length, -						seed[temp] = !(results[temp] = elem); -					} -				} -			} +			// Ensure a safe fragment +			safe = createSafeFragment( context ), -		// Add elements to results, through postFinder if defined -		} else { -			matcherOut = condense( -				matcherOut === results ? -					matcherOut.splice( preexisting, matcherOut.length ) : -					matcherOut -			); -			if ( postFinder ) { -				postFinder( null, results, matcherOut, xml ); -			} else { -				push.apply( results, matcherOut ); -			} -		} -	}); -} +			nodes = [], +			i = 0; -function matcherFromTokens( tokens ) { -	var checkContext, matcher, j, -		len = tokens.length, -		leadingRelative = Expr.relative[ tokens[0].type ], -		implicitRelative = leadingRelative || Expr.relative[" "], -		i = leadingRelative ? 1 : 0, +		for ( ; i < l; i++ ) { +			elem = elems[ i ]; -		// The foundational matcher ensures that elements are reachable from top-level context(s) -		matchContext = addCombinator( function( elem ) { -			return elem === checkContext; -		}, implicitRelative, true ), -		matchAnyContext = addCombinator( function( elem ) { -			return indexOf.call( checkContext, elem ) > -1; -		}, implicitRelative, true ), -		matchers = [ function( elem, context, xml ) { -			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( -				(checkContext = context).nodeType ? -					matchContext( elem, context, xml ) : -					matchAnyContext( elem, context, xml ) ); -		} ]; +			if ( elem || elem === 0 ) { -	for ( ; i < len; i++ ) { -		if ( (matcher = Expr.relative[ tokens[i].type ]) ) { -			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; -		} else { -			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); +				// Add nodes directly +				if ( jQuery.type( elem ) === "object" ) { +					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); -			// Return special upon seeing a positional matcher -			if ( matcher[ expando ] ) { -				// Find the next relative operator (if any) for proper handling -				j = ++i; -				for ( ; j < len; j++ ) { -					if ( Expr.relative[ tokens[j].type ] ) { -						break; -					} -				} -				return setMatcher( -					i > 1 && elementMatcher( matchers ), -					i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ), -					matcher, -					i < j && matcherFromTokens( tokens.slice( i, j ) ), -					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), -					j < len && tokens.join("") -				); -			} -			matchers.push( matcher ); -		} -	} +				// Convert non-html into a text node +				} else if ( !rhtml.test( elem ) ) { +					nodes.push( context.createTextNode( elem ) ); -	return elementMatcher( matchers ); -} +				// Convert html into DOM nodes +				} else { +					tmp = tmp || safe.appendChild( context.createElement("div") ); -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { -	var bySet = setMatchers.length > 0, -		byElement = elementMatchers.length > 0, -		superMatcher = function( seed, context, xml, results, expandContext ) { -			var elem, j, matcher, -				setMatched = [], -				matchedCount = 0, -				i = "0", -				unmatched = seed && [], -				outermost = expandContext != null, -				contextBackup = outermostContext, -				// We must always have either seed elements or context -				elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), -				// Nested matchers should use non-integer dirruns -				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E); +					// Deserialize a standard representation +					tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); +					wrap = wrapMap[ tag ] || wrapMap._default; -			if ( outermost ) { -				outermostContext = context !== document && context; -				cachedruns = superMatcher.el; -			} +					tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2]; -			// Add elements passing elementMatchers directly to results -			for ( ; (elem = elems[i]) != null; i++ ) { -				if ( byElement && elem ) { -					for ( j = 0; (matcher = elementMatchers[j]); j++ ) { -						if ( matcher( elem, context, xml ) ) { -							results.push( elem ); -							break; -						} +					// Descend through wrappers to the right content +					j = wrap[0]; +					while ( j-- ) { +						tmp = tmp.lastChild;  					} -					if ( outermost ) { -						dirruns = dirrunsUnique; -						cachedruns = ++superMatcher.el; -					} -				} -				// Track unmatched elements for set filters -				if ( bySet ) { -					// They will have gone through all possible matchers -					if ( (elem = !matcher && elem) ) { -						matchedCount--; +					// Manually add leading whitespace removed by IE +					if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { +						nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );  					} -					// Lengthen the array for every element, matched or not -					if ( seed ) { -						unmatched.push( elem ); -					} -				} -			} +					// Remove IE's autoinserted <tbody> from table fragments +					if ( !support.tbody ) { -			// Apply set filters to unmatched elements -			matchedCount += i; -			if ( bySet && i !== matchedCount ) { -				for ( j = 0; (matcher = setMatchers[j]); j++ ) { -					matcher( unmatched, setMatched, context, xml ); -				} +						// String was a <table>, *may* have spurious <tbody> +						elem = tag === "table" && !rtbody.test( elem ) ? +							tmp.firstChild : -				if ( seed ) { -					// Reintegrate element matches to eliminate the need for sorting -					if ( matchedCount > 0 ) { -						while ( i-- ) { -							if ( !(unmatched[i] || setMatched[i]) ) { -								setMatched[i] = pop.call( results ); +							// String was a bare <thead> or <tfoot> +							wrap[1] === "<table>" && !rtbody.test( elem ) ? +								tmp : +								0; + +						j = elem && elem.childNodes.length; +						while ( j-- ) { +							if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { +								elem.removeChild( tbody );  							}  						}  					} -					// Discard index placeholder values to get only actual matches -					setMatched = condense( setMatched ); -				} +					jQuery.merge( nodes, tmp.childNodes ); -				// Add matches to results -				push.apply( results, setMatched ); +					// Fix #12392 for WebKit and IE > 9 +					tmp.textContent = ""; -				// Seedless set matches succeeding multiple successful matchers stipulate sorting -				if ( outermost && !seed && setMatched.length > 0 && -					( matchedCount + setMatchers.length ) > 1 ) { +					// Fix #12392 for oldIE +					while ( tmp.firstChild ) { +						tmp.removeChild( tmp.firstChild ); +					} -					Sizzle.uniqueSort( results ); +					// Remember the top-level container for proper cleanup +					tmp = safe.lastChild;  				}  			} - -			// Override manipulation of globals by nested matchers -			if ( outermost ) { -				dirruns = dirrunsUnique; -				outermostContext = contextBackup; -			} - -			return unmatched; -		}; - -	superMatcher.el = 0; -	return bySet ? -		markFunction( superMatcher ) : -		superMatcher; -} - -compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { -	var i, -		setMatchers = [], -		elementMatchers = [], -		cached = compilerCache[ expando ][ selector + " " ]; - -	if ( !cached ) { -		// Generate a function of recursive functions that can be used to check each element -		if ( !group ) { -			group = tokenize( selector ); -		} -		i = group.length; -		while ( i-- ) { -			cached = matcherFromTokens( group[i] ); -			if ( cached[ expando ] ) { -				setMatchers.push( cached ); -			} else { -				elementMatchers.push( cached ); -			}  		} -		// Cache the compiled function -		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); -	} -	return cached; -}; - -function multipleContexts( selector, contexts, results ) { -	var i = 0, -		len = contexts.length; -	for ( ; i < len; i++ ) { -		Sizzle( selector, contexts[i], results ); -	} -	return results; -} - -function select( selector, context, results, seed, xml ) { -	var i, tokens, token, type, find, -		match = tokenize( selector ), -		j = match.length; - -	if ( !seed ) { -		// Try to minimize operations if there is only one group -		if ( match.length === 1 ) { - -			// Take a shortcut and set the context if the root selector is an ID -			tokens = match[0] = match[0].slice( 0 ); -			if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && -					context.nodeType === 9 && !xml && -					Expr.relative[ tokens[1].type ] ) { - -				context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0]; -				if ( !context ) { -					return results; -				} - -				selector = selector.slice( tokens.shift().length ); -			} - -			// Fetch a seed set for right-to-left matching -			for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) { -				token = tokens[i]; - -				// Abort if we hit a combinator -				if ( Expr.relative[ (type = token.type) ] ) { -					break; -				} -				if ( (find = Expr.find[ type ]) ) { -					// Search, expanding context for leading sibling combinators -					if ( (seed = find( -						token.matches[0].replace( rbackslash, "" ), -						rsibling.test( tokens[0].type ) && context.parentNode || context, -						xml -					)) ) { - -						// If seed is empty or no tokens remain, we can return early -						tokens.splice( i, 1 ); -						selector = seed.length && tokens.join(""); -						if ( !selector ) { -							push.apply( results, slice.call( seed, 0 ) ); -							return results; -						} - -						break; -					} -				} -			} +		// Fix #11356: Clear elements from fragment +		if ( tmp ) { +			safe.removeChild( tmp );  		} -	} -	// Compile and execute a filtering function -	// Provide `match` to avoid retokenization if we modified the selector above -	compile( selector, match )( -		seed, -		context, -		xml, -		results, -		rsibling.test( selector ) -	); -	return results; -} - -if ( document.querySelectorAll ) { -	(function() { -		var disconnectedMatch, -			oldSelect = select, -			rescape = /'|\\/g, -			rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, - -			// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA -			// A support test would require too much code (would include document ready) -			rbuggyQSA = [ ":focus" ], - -			// matchesSelector(:active) reports false when true (IE9/Opera 11.5) -			// A support test would require too much code (would include document ready) -			// just skip matchesSelector for :active -			rbuggyMatches = [ ":active" ], -			matches = docElem.matchesSelector || -				docElem.mozMatchesSelector || -				docElem.webkitMatchesSelector || -				docElem.oMatchesSelector || -				docElem.msMatchesSelector; +		// Reset defaultChecked for any radios and checkboxes +		// about to be appended to the DOM in IE 6/7 (#8060) +		if ( !support.appendChecked ) { +			jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); +		} -		// Build QSA regex -		// Regex strategy adopted from Diego Perini -		assert(function( div ) { -			// Select is set to empty string on purpose -			// This is to test IE's treatment of not explictly -			// setting a boolean content attribute, -			// since its presence should be enough -			// http://bugs.jquery.com/ticket/12359 -			div.innerHTML = "<select><option selected=''></option></select>"; +		i = 0; +		while ( (elem = nodes[ i++ ]) ) { -			// IE8 - Some boolean attributes are not treated correctly -			if ( !div.querySelectorAll("[selected]").length ) { -				rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); +			// #4087 - If origin and destination elements are the same, and this is +			// that element, do not do anything +			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { +				continue;  			} -			// Webkit/Opera - :checked should return selected option elements -			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked -			// IE8 throws error here (do not put tests after this one) -			if ( !div.querySelectorAll(":checked").length ) { -				rbuggyQSA.push(":checked"); -			} -		}); +			contains = jQuery.contains( elem.ownerDocument, elem ); -		assert(function( div ) { +			// Append to fragment +			tmp = getAll( safe.appendChild( elem ), "script" ); -			// Opera 10-12/IE9 - ^= $= *= and empty values -			// Should not select anything -			div.innerHTML = "<p test=''></p>"; -			if ( div.querySelectorAll("[test^='']").length ) { -				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); +			// Preserve script evaluation history +			if ( contains ) { +				setGlobalEval( tmp );  			} -			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) -			// IE8 throws error here (do not put tests after this one) -			div.innerHTML = "<input type='hidden'/>"; -			if ( !div.querySelectorAll(":enabled").length ) { -				rbuggyQSA.push(":enabled", ":disabled"); -			} -		}); - -		// rbuggyQSA always contains :focus, so no need for a length check -		rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") ); - -		select = function( selector, context, results, seed, xml ) { -			// Only use querySelectorAll when not filtering, -			// when this is not xml, -			// and when no QSA bugs apply -			if ( !seed && !xml && !rbuggyQSA.test( selector ) ) { -				var groups, i, -					old = true, -					nid = expando, -					newContext = context, -					newSelector = context.nodeType === 9 && selector; - -				// qSA works strangely on Element-rooted queries -				// We can work around this by specifying an extra ID on the root -				// and working up from there (Thanks to Andrew Dupont for the technique) -				// IE 8 doesn't work on object elements -				if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { -					groups = tokenize( selector ); - -					if ( (old = context.getAttribute("id")) ) { -						nid = old.replace( rescape, "\\$&" ); -					} else { -						context.setAttribute( "id", nid ); -					} -					nid = "[id='" + nid + "'] "; - -					i = groups.length; -					while ( i-- ) { -						groups[i] = nid + groups[i].join(""); -					} -					newContext = rsibling.test( selector ) && context.parentNode || context; -					newSelector = groups.join(","); -				} - -				if ( newSelector ) { -					try { -						push.apply( results, slice.call( newContext.querySelectorAll( -							newSelector -						), 0 ) ); -						return results; -					} catch(qsaError) { -					} finally { -						if ( !old ) { -							context.removeAttribute("id"); -						} +			// Capture executables +			if ( scripts ) { +				j = 0; +				while ( (elem = tmp[ j++ ]) ) { +					if ( rscriptType.test( elem.type || "" ) ) { +						scripts.push( elem );  					}  				}  			} - -			return oldSelect( selector, context, results, seed, xml ); -		}; - -		if ( matches ) { -			assert(function( div ) { -				// Check to see if it's possible to do matchesSelector -				// on a disconnected node (IE 9) -				disconnectedMatch = matches.call( div, "div" ); - -				// This should fail with an exception -				// Gecko does not error, returns false instead -				try { -					matches.call( div, "[test!='']:sizzle" ); -					rbuggyMatches.push( "!=", pseudos ); -				} catch ( e ) {} -			}); - -			// rbuggyMatches always contains :active and :focus, so no need for a length check -			rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") ); - -			Sizzle.matchesSelector = function( elem, expr ) { -				// Make sure that attribute selectors are quoted -				expr = expr.replace( rattributeQuotes, "='$1']" ); - -				// rbuggyMatches always contains :active, so no need for an existence check -				if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) { -					try { -						var ret = matches.call( elem, expr ); - -						// IE 9's matchesSelector returns false on disconnected nodes -						if ( ret || disconnectedMatch || -								// As well, disconnected nodes are said to be in a document -								// fragment in IE 9 -								elem.document && elem.document.nodeType !== 11 ) { -							return ret; -						} -					} catch(e) {} -				} - -				return Sizzle( expr, null, null, [ elem ] ).length > 0; -			};  		} -	})(); -} - -// Deprecated -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Back-compat -function setFilters() {} -Expr.filters = setFilters.prototype = Expr.pseudos; -Expr.setFilters = new setFilters(); - -// Override sizzle attribute retrieval -Sizzle.attr = jQuery.attr; -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; +		tmp = null; -})( window ); -var runtil = /Until$/, -	rparentsprev = /^(?:parents|prev(?:Until|All))/, -	isSimple = /^.[^:#\[\.,]*$/, -	rneedsContext = jQuery.expr.match.needsContext, -	// methods guaranteed to produce a unique set when starting from a unique set -	guaranteedUnique = { -		children: true, -		contents: true, -		next: true, -		prev: true -	}; +		return safe; +	}, -jQuery.fn.extend({ -	find: function( selector ) { -		var i, l, length, n, r, ret, -			self = this; +	cleanData: function( elems, /* internal */ acceptData ) { +		var elem, type, id, data, +			i = 0, +			internalKey = jQuery.expando, +			cache = jQuery.cache, +			deleteExpando = support.deleteExpando, +			special = jQuery.event.special; -		if ( typeof selector !== "string" ) { -			return jQuery( selector ).filter(function() { -				for ( i = 0, l = self.length; i < l; i++ ) { -					if ( jQuery.contains( self[ i ], this ) ) { -						return true; -					} -				} -			}); -		} +		for ( ; (elem = elems[i]) != null; i++ ) { +			if ( acceptData || jQuery.acceptData( elem ) ) { -		ret = this.pushStack( "", "find", selector ); +				id = elem[ internalKey ]; +				data = id && cache[ id ]; -		for ( i = 0, l = this.length; i < l; i++ ) { -			length = ret.length; -			jQuery.find( selector, this[i], ret ); +				if ( data ) { +					if ( data.events ) { +						for ( type in data.events ) { +							if ( special[ type ] ) { +								jQuery.event.remove( elem, type ); -			if ( i > 0 ) { -				// Make sure that the results are unique -				for ( n = length; n < ret.length; n++ ) { -					for ( r = 0; r < length; r++ ) { -						if ( ret[r] === ret[n] ) { -							ret.splice(n--, 1); -							break; +							// This is a shortcut to avoid jQuery.event.remove's overhead +							} else { +								jQuery.removeEvent( elem, type, data.handle ); +							}  						}  					} -				} -			} -		} - -		return ret; -	}, - -	has: function( target ) { -		var i, -			targets = jQuery( target, this ), -			len = targets.length; - -		return this.filter(function() { -			for ( i = 0; i < len; i++ ) { -				if ( jQuery.contains( this, targets[i] ) ) { -					return true; -				} -			} -		}); -	}, -	not: function( selector ) { -		return this.pushStack( winnow(this, selector, false), "not", selector); -	}, +					// Remove cache only if it was not already removed by jQuery.event.remove +					if ( cache[ id ] ) { -	filter: function( selector ) { -		return this.pushStack( winnow(this, selector, true), "filter", selector ); -	}, +						delete cache[ id ]; -	is: function( selector ) { -		return !!selector && ( -			typeof selector === "string" ? -				// If this is a positional/relative selector, check membership in the returned set -				// so $("p:first").is("p:last") won't return true for a doc with two "p". -				rneedsContext.test( selector ) ? -					jQuery( selector, this.context ).index( this[0] ) >= 0 : -					jQuery.filter( selector, this ).length > 0 : -				this.filter( selector ).length > 0 ); -	}, +						// IE does not allow us to delete expando properties from nodes, +						// nor does it have a removeAttribute function on Document nodes; +						// we must handle all of these cases +						if ( deleteExpando ) { +							delete elem[ internalKey ]; -	closest: function( selectors, context ) { -		var cur, -			i = 0, -			l = this.length, -			ret = [], -			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? -				jQuery( selectors, context || this.context ) : -				0; +						} else if ( typeof elem.removeAttribute !== strundefined ) { +							elem.removeAttribute( internalKey ); -		for ( ; i < l; i++ ) { -			cur = this[i]; +						} else { +							elem[ internalKey ] = null; +						} -			while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { -				if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { -					ret.push( cur ); -					break; +						deletedIds.push( id ); +					}  				} -				cur = cur.parentNode; -			} -		} - -		ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - -		return this.pushStack( ret, "closest", selectors ); -	}, - -	// Determine the position of an element within -	// the matched set of elements -	index: function( elem ) { - -		// No argument, return index in parent -		if ( !elem ) { -			return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; -		} - -		// index in selector -		if ( typeof elem === "string" ) { -			return jQuery.inArray( this[0], jQuery( elem ) ); -		} - -		// Locate the position of the desired element -		return jQuery.inArray( -			// If it receives a jQuery object, the first element is used -			elem.jquery ? elem[0] : elem, this ); -	}, - -	add: function( selector, context ) { -		var set = typeof selector === "string" ? -				jQuery( selector, context ) : -				jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), -			all = jQuery.merge( this.get(), set ); - -		return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? -			all : -			jQuery.unique( all ) ); -	}, - -	addBack: function( selector ) { -		return this.add( selector == null ? -			this.prevObject : this.prevObject.filter(selector) -		); -	} -}); - -jQuery.fn.andSelf = jQuery.fn.addBack; - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { -	return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -function sibling( cur, dir ) { -	do { -		cur = cur[ dir ]; -	} while ( cur && cur.nodeType !== 1 ); - -	return cur; -} - -jQuery.each({ -	parent: function( elem ) { -		var parent = elem.parentNode; -		return parent && parent.nodeType !== 11 ? parent : null; -	}, -	parents: function( elem ) { -		return jQuery.dir( elem, "parentNode" ); -	}, -	parentsUntil: function( elem, i, until ) { -		return jQuery.dir( elem, "parentNode", until ); -	}, -	next: function( elem ) { -		return sibling( elem, "nextSibling" ); -	}, -	prev: function( elem ) { -		return sibling( elem, "previousSibling" ); -	}, -	nextAll: function( elem ) { -		return jQuery.dir( elem, "nextSibling" ); -	}, -	prevAll: function( elem ) { -		return jQuery.dir( elem, "previousSibling" ); -	}, -	nextUntil: function( elem, i, until ) { -		return jQuery.dir( elem, "nextSibling", until ); -	}, -	prevUntil: function( elem, i, until ) { -		return jQuery.dir( elem, "previousSibling", until ); -	}, -	siblings: function( elem ) { -		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); -	}, -	children: function( elem ) { -		return jQuery.sibling( elem.firstChild ); -	}, -	contents: function( elem ) { -		return jQuery.nodeName( elem, "iframe" ) ? -			elem.contentDocument || elem.contentWindow.document : -			jQuery.merge( [], elem.childNodes ); -	} -}, function( name, fn ) { -	jQuery.fn[ name ] = function( until, selector ) { -		var ret = jQuery.map( this, fn, until ); - -		if ( !runtil.test( name ) ) { -			selector = until; -		} - -		if ( selector && typeof selector === "string" ) { -			ret = jQuery.filter( selector, ret ); -		} - -		ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - -		if ( this.length > 1 && rparentsprev.test( name ) ) { -			ret = ret.reverse(); -		} - -		return this.pushStack( ret, name, core_slice.call( arguments ).join(",") ); -	}; -}); - -jQuery.extend({ -	filter: function( expr, elems, not ) { -		if ( not ) { -			expr = ":not(" + expr + ")"; -		} - -		return elems.length === 1 ? -			jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : -			jQuery.find.matches(expr, elems); -	}, - -	dir: function( elem, dir, until ) { -		var matched = [], -			cur = elem[ dir ]; - -		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { -			if ( cur.nodeType === 1 ) { -				matched.push( cur ); -			} -			cur = cur[dir]; -		} -		return matched; -	}, - -	sibling: function( n, elem ) { -		var r = []; - -		for ( ; n; n = n.nextSibling ) { -			if ( n.nodeType === 1 && n !== elem ) { -				r.push( n );  			}  		} - -		return r;  	}  }); -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - -	// Can't pass null or undefined to indexOf in Firefox 4 -	// Set to 0 to skip string check -	qualifier = qualifier || 0; - -	if ( jQuery.isFunction( qualifier ) ) { -		return jQuery.grep(elements, function( elem, i ) { -			var retVal = !!qualifier.call( elem, i, elem ); -			return retVal === keep; -		}); - -	} else if ( qualifier.nodeType ) { -		return jQuery.grep(elements, function( elem, i ) { -			return ( elem === qualifier ) === keep; -		}); - -	} else if ( typeof qualifier === "string" ) { -		var filtered = jQuery.grep(elements, function( elem ) { -			return elem.nodeType === 1; -		}); - -		if ( isSimple.test( qualifier ) ) { -			return jQuery.filter(qualifier, filtered, !keep); -		} else { -			qualifier = jQuery.filter( qualifier, filtered ); -		} -	} - -	return jQuery.grep(elements, function( elem, i ) { -		return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; -	}); -} -function createSafeFragment( document ) { -	var list = nodeNames.split( "|" ), -	safeFrag = document.createDocumentFragment(); - -	if ( safeFrag.createElement ) { -		while ( list.length ) { -			safeFrag.createElement( -				list.pop() -			); -		} -	} -	return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + -		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", -	rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, -	rleadingWhitespace = /^\s+/, -	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, -	rtagName = /<([\w:]+)/, -	rtbody = /<tbody/i, -	rhtml = /<|&#?\w+;/, -	rnoInnerhtml = /<(?:script|style|link)/i, -	rnocache = /<(?:script|object|embed|option|style)/i, -	rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), -	rcheckableType = /^(?:checkbox|radio)$/, -	// checked="checked" or checked -	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, -	rscriptType = /\/(java|ecma)script/i, -	rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g, -	wrapMap = { -		option: [ 1, "<select multiple='multiple'>", "</select>" ], -		legend: [ 1, "<fieldset>", "</fieldset>" ], -		thead: [ 1, "<table>", "</table>" ], -		tr: [ 2, "<table><tbody>", "</tbody></table>" ], -		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], -		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ], -		area: [ 1, "<map>", "</map>" ], -		_default: [ 0, "", "" ] -	}, -	safeFragment = createSafeFragment( document ), -	fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, -// unless wrapped in a div with non-breaking characters in front of it. -if ( !jQuery.support.htmlSerialize ) { -	wrapMap._default = [ 1, "X<div>", "</div>" ]; -} -  jQuery.fn.extend({  	text: function( value ) { -		return jQuery.access( this, function( value ) { +		return access( this, function( value ) {  			return value === undefined ?  				jQuery.text( this ) :  				this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );  		}, null, value, arguments.length );  	}, -	wrapAll: function( html ) { -		if ( jQuery.isFunction( html ) ) { -			return this.each(function(i) { -				jQuery(this).wrapAll( html.call(this, i) ); -			}); -		} - -		if ( this[0] ) { -			// The elements to wrap the target around -			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); - -			if ( this[0].parentNode ) { -				wrap.insertBefore( this[0] ); -			} - -			wrap.map(function() { -				var elem = this; - -				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { -					elem = elem.firstChild; -				} - -				return elem; -			}).append( this ); -		} - -		return this; -	}, - -	wrapInner: function( html ) { -		if ( jQuery.isFunction( html ) ) { -			return this.each(function(i) { -				jQuery(this).wrapInner( html.call(this, i) ); -			}); -		} - -		return this.each(function() { -			var self = jQuery( this ), -				contents = self.contents(); - -			if ( contents.length ) { -				contents.wrapAll( html ); - -			} else { -				self.append( html ); -			} -		}); -	}, - -	wrap: function( html ) { -		var isFunction = jQuery.isFunction( html ); - -		return this.each(function(i) { -			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); -		}); -	}, - -	unwrap: function() { -		return this.parent().each(function() { -			if ( !jQuery.nodeName( this, "body" ) ) { -				jQuery( this ).replaceWith( this.childNodes ); -			} -		}).end(); -	}, -  	append: function() { -		return this.domManip(arguments, true, function( elem ) { -			if ( this.nodeType === 1 || this.nodeType === 11 ) { -				this.appendChild( elem ); +		return this.domManip( arguments, function( elem ) { +			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { +				var target = manipulationTarget( this, elem ); +				target.appendChild( elem );  			}  		});  	},  	prepend: function() { -		return this.domManip(arguments, true, function( elem ) { -			if ( this.nodeType === 1 || this.nodeType === 11 ) { -				this.insertBefore( elem, this.firstChild ); +		return this.domManip( arguments, function( elem ) { +			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { +				var target = manipulationTarget( this, elem ); +				target.insertBefore( elem, target.firstChild );  			}  		});  	},  	before: function() { -		if ( !isDisconnected( this[0] ) ) { -			return this.domManip(arguments, false, function( elem ) { +		return this.domManip( arguments, function( elem ) { +			if ( this.parentNode ) {  				this.parentNode.insertBefore( elem, this ); -			}); -		} - -		if ( arguments.length ) { -			var set = jQuery.clean( arguments ); -			return this.pushStack( jQuery.merge( set, this ), "before", this.selector ); -		} +			} +		});  	},  	after: function() { -		if ( !isDisconnected( this[0] ) ) { -			return this.domManip(arguments, false, function( elem ) { +		return this.domManip( arguments, function( elem ) { +			if ( this.parentNode ) {  				this.parentNode.insertBefore( elem, this.nextSibling ); -			}); -		} - -		if ( arguments.length ) { -			var set = jQuery.clean( arguments ); -			return this.pushStack( jQuery.merge( this, set ), "after", this.selector ); -		} +			} +		});  	}, -	// keepData is for internal use only--do not document -	remove: function( selector, keepData ) { +	remove: function( selector, keepData /* Internal Use Only */ ) {  		var elem, +			elems = selector ? jQuery.filter( selector, this ) : this,  			i = 0; -		for ( ; (elem = this[i]) != null; i++ ) { -			if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { -				if ( !keepData && elem.nodeType === 1 ) { -					jQuery.cleanData( elem.getElementsByTagName("*") ); -					jQuery.cleanData( [ elem ] ); -				} +		for ( ; (elem = elems[i]) != null; i++ ) { + +			if ( !keepData && elem.nodeType === 1 ) { +				jQuery.cleanData( getAll( elem ) ); +			} -				if ( elem.parentNode ) { -					elem.parentNode.removeChild( elem ); +			if ( elem.parentNode ) { +				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { +					setGlobalEval( getAll( elem, "script" ) );  				} +				elem.parentNode.removeChild( elem );  			}  		} @@ -5843,13 +5763,19 @@ jQuery.fn.extend({  		for ( ; (elem = this[i]) != null; i++ ) {  			// Remove element nodes and prevent memory leaks  			if ( elem.nodeType === 1 ) { -				jQuery.cleanData( elem.getElementsByTagName("*") ); +				jQuery.cleanData( getAll( elem, false ) );  			}  			// Remove any remaining nodes  			while ( elem.firstChild ) {  				elem.removeChild( elem.firstChild );  			} + +			// If this is a select, ensure that it displays empty (#12336) +			// Support: IE<9 +			if ( elem.options && jQuery.nodeName( elem, "select" ) ) { +				elem.options.length = 0; +			}  		}  		return this; @@ -5859,14 +5785,14 @@ jQuery.fn.extend({  		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;  		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; -		return this.map( function () { +		return this.map(function() {  			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );  		});  	},  	html: function( value ) { -		return jQuery.access( this, function( value ) { -			var elem = this[0] || {}, +		return access( this, function( value ) { +			var elem = this[ 0 ] || {},  				i = 0,  				l = this.length; @@ -5878,9 +5804,9 @@ jQuery.fn.extend({  			// See if we can take a shortcut and just use innerHTML  			if ( typeof value === "string" && !rnoInnerhtml.test( value ) && -				( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) && -				( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && -				!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { +				( support.htmlSerialize || !rnoshimcache.test( value )  ) && +				( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && +				!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) {  				value = value.replace( rxhtmlTag, "<$1></$2>" ); @@ -5889,7 +5815,7 @@ jQuery.fn.extend({  						// Remove element nodes and prevent memory leaks  						elem = this[i] || {};  						if ( elem.nodeType === 1 ) { -							jQuery.cleanData( elem.getElementsByTagName( "*" ) ); +							jQuery.cleanData( getAll( elem, false ) );  							elem.innerHTML = value;  						}  					} @@ -5906,73 +5832,57 @@ jQuery.fn.extend({  		}, null, value, arguments.length );  	}, -	replaceWith: function( value ) { -		if ( !isDisconnected( this[0] ) ) { -			// Make sure that the elements are removed from the DOM before they are inserted -			// this can help fix replacing a parent with child elements -			if ( jQuery.isFunction( value ) ) { -				return this.each(function(i) { -					var self = jQuery(this), old = self.html(); -					self.replaceWith( value.call( this, i, old ) ); -				}); -			} - -			if ( typeof value !== "string" ) { -				value = jQuery( value ).detach(); -			} +	replaceWith: function() { +		var arg = arguments[ 0 ]; -			return this.each(function() { -				var next = this.nextSibling, -					parent = this.parentNode; +		// Make the changes, replacing each context element with the new content +		this.domManip( arguments, function( elem ) { +			arg = this.parentNode; -				jQuery( this ).remove(); +			jQuery.cleanData( getAll( this ) ); -				if ( next ) { -					jQuery(next).before( value ); -				} else { -					jQuery(parent).append( value ); -				} -			}); -		} +			if ( arg ) { +				arg.replaceChild( elem, this ); +			} +		}); -		return this.length ? -			this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : -			this; +		// Force removal if there was no new content (e.g., from empty arguments) +		return arg && (arg.length || arg.nodeType) ? this : this.remove();  	},  	detach: function( selector ) {  		return this.remove( selector, true );  	}, -	domManip: function( args, table, callback ) { +	domManip: function( args, callback ) {  		// Flatten any nested arrays -		args = [].concat.apply( [], args ); +		args = concat.apply( [], args ); -		var results, first, fragment, iNoClone, +		var first, node, hasScripts, +			scripts, doc, fragment,  			i = 0, +			l = this.length, +			set = this, +			iNoClone = l - 1,  			value = args[0], -			scripts = [], -			l = this.length; +			isFunction = jQuery.isFunction( value );  		// We can't cloneNode fragments that contain checked, in WebKit -		if ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) { -			return this.each(function() { -				jQuery(this).domManip( args, table, callback ); -			}); -		} - -		if ( jQuery.isFunction(value) ) { -			return this.each(function(i) { -				var self = jQuery(this); -				args[0] = value.call( this, i, table ? self.html() : undefined ); -				self.domManip( args, table, callback ); +		if ( isFunction || +				( l > 1 && typeof value === "string" && +					!support.checkClone && rchecked.test( value ) ) ) { +			return this.each(function( index ) { +				var self = set.eq( index ); +				if ( isFunction ) { +					args[0] = value.call( this, index, self.html() ); +				} +				self.domManip( args, callback );  			});  		} -		if ( this[0] ) { -			results = jQuery.buildFragment( args, this, scripts ); -			fragment = results.fragment; +		if ( l ) { +			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );  			first = fragment.firstChild;  			if ( fragment.childNodes.length === 1 ) { @@ -5980,49 +5890,52 @@ jQuery.fn.extend({  			}  			if ( first ) { -				table = table && jQuery.nodeName( first, "tr" ); +				scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); +				hasScripts = scripts.length;  				// Use the original fragment for the last item instead of the first because it can end up  				// being emptied incorrectly in certain situations (#8070). -				// Fragments from the fragment cache must always be cloned and never used in place. -				for ( iNoClone = results.cacheable || l - 1; i < l; i++ ) { -					callback.call( -						table && jQuery.nodeName( this[i], "table" ) ? -							findOrAppend( this[i], "tbody" ) : -							this[i], -						i === iNoClone ? -							fragment : -							jQuery.clone( fragment, true, true ) -					); -				} -			} +				for ( ; i < l; i++ ) { +					node = fragment; -			// Fix #11809: Avoid leaking memory -			fragment = first = null; +					if ( i !== iNoClone ) { +						node = jQuery.clone( node, true, true ); -			if ( scripts.length ) { -				jQuery.each( scripts, function( i, elem ) { -					if ( elem.src ) { -						if ( jQuery.ajax ) { -							jQuery.ajax({ -								url: elem.src, -								type: "GET", -								dataType: "script", -								async: false, -								global: false, -								"throws": true -							}); -						} else { -							jQuery.error("no ajax"); +						// Keep references to cloned scripts for later restoration +						if ( hasScripts ) { +							jQuery.merge( scripts, getAll( node, "script" ) );  						} -					} else { -						jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) );  					} -					if ( elem.parentNode ) { -						elem.parentNode.removeChild( elem ); +					callback.call( this[i], node, i ); +				} + +				if ( hasScripts ) { +					doc = scripts[ scripts.length - 1 ].ownerDocument; + +					// Reenable scripts +					jQuery.map( scripts, restoreScript ); + +					// Evaluate executable scripts on first document insertion +					for ( i = 0; i < hasScripts; i++ ) { +						node = scripts[ i ]; +						if ( rscriptType.test( node.type || "" ) && +							!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + +							if ( node.src ) { +								// Optional AJAX dependency, but won't run scripts if not present +								if ( jQuery._evalUrl ) { +									jQuery._evalUrl( node.src ); +								} +							} else { +								jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); +							} +						}  					} -				}); +				} + +				// Fix #11809: Avoid leaking memory +				fragment = first = null;  			}  		} @@ -6030,523 +5943,521 @@ jQuery.fn.extend({  	}  }); -function findOrAppend( elem, tag ) { -	return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); -} +jQuery.each({ +	appendTo: "append", +	prependTo: "prepend", +	insertBefore: "before", +	insertAfter: "after", +	replaceAll: "replaceWith" +}, function( name, original ) { +	jQuery.fn[ name ] = function( selector ) { +		var elems, +			i = 0, +			ret = [], +			insert = jQuery( selector ), +			last = insert.length - 1; -function cloneCopyEvent( src, dest ) { +		for ( ; i <= last; i++ ) { +			elems = i === last ? this : this.clone(true); +			jQuery( insert[i] )[ original ]( elems ); -	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { -		return; -	} +			// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() +			push.apply( ret, elems.get() ); +		} -	var type, i, l, -		oldData = jQuery._data( src ), -		curData = jQuery._data( dest, oldData ), -		events = oldData.events; +		return this.pushStack( ret ); +	}; +}); -	if ( events ) { -		delete curData.handle; -		curData.events = {}; -		for ( type in events ) { -			for ( i = 0, l = events[ type ].length; i < l; i++ ) { -				jQuery.event.add( dest, type, events[ type ][ i ] ); -			} -		} -	} +var iframe, +	elemdisplay = {}; -	// make the cloned public data object a copy from the original -	if ( curData.data ) { -		curData.data = jQuery.extend( {}, curData.data ); -	} -} +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { +	var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), -function cloneFixAttributes( src, dest ) { -	var nodeName; +		// getDefaultComputedStyle might be reliably used only on attached element +		display = window.getDefaultComputedStyle ? -	// We do not need to do anything for non-Elements -	if ( dest.nodeType !== 1 ) { -		return; -	} +			// Use of this method is a temporary fix (more like optmization) until something better comes along, +			// since it was removed from specification and supported only in FF +			window.getDefaultComputedStyle( elem[ 0 ] ).display : jQuery.css( elem[ 0 ], "display" ); -	// clearAttributes removes the attributes, which we don't want, -	// but also removes the attachEvent events, which we *do* want -	if ( dest.clearAttributes ) { -		dest.clearAttributes(); -	} +	// We don't have any data stored on the element, +	// so use "detach" method as fast way to get rid of the element +	elem.detach(); -	// mergeAttributes, in contrast, only merges back on the -	// original attributes, not the events -	if ( dest.mergeAttributes ) { -		dest.mergeAttributes( src ); -	} - -	nodeName = dest.nodeName.toLowerCase(); +	return display; +} -	if ( nodeName === "object" ) { -		// IE6-10 improperly clones children of object elements using classid. -		// IE10 throws NoModificationAllowedError if parent is null, #12132. -		if ( dest.parentNode ) { -			dest.outerHTML = src.outerHTML; -		} +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { +	var doc = document, +		display = elemdisplay[ nodeName ]; -		// This path appears unavoidable for IE9. When cloning an object -		// element in IE9, the outerHTML strategy above is not sufficient. -		// If the src has innerHTML and the destination does not, -		// copy the src.innerHTML into the dest.innerHTML. #10324 -		if ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) { -			dest.innerHTML = src.innerHTML; -		} +	if ( !display ) { +		display = actualDisplay( nodeName, doc ); -	} else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { -		// IE6-8 fails to persist the checked state of a cloned checkbox -		// or radio button. Worse, IE6-7 fail to give the cloned element -		// a checked appearance if the defaultChecked value isn't also set +		// If the simple way fails, read from inside an iframe +		if ( display === "none" || !display ) { -		dest.defaultChecked = dest.checked = src.checked; +			// Use the already-created iframe if possible +			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement ); -		// IE6-7 get confused and end up setting the value of a cloned -		// checkbox/radio button to an empty string instead of "on" -		if ( dest.value !== src.value ) { -			dest.value = src.value; -		} +			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse +			doc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document; -	// IE6-8 fails to return the selected option to the default selected -	// state when cloning options -	} else if ( nodeName === "option" ) { -		dest.selected = src.defaultSelected; +			// Support: IE +			doc.write(); +			doc.close(); -	// IE6-8 fails to set the defaultValue to the correct value when -	// cloning other types of input fields -	} else if ( nodeName === "input" || nodeName === "textarea" ) { -		dest.defaultValue = src.defaultValue; +			display = actualDisplay( nodeName, doc ); +			iframe.detach(); +		} -	// IE blanks contents when cloning scripts -	} else if ( nodeName === "script" && dest.text !== src.text ) { -		dest.text = src.text; +		// Store the correct default display +		elemdisplay[ nodeName ] = display;  	} -	// Event data gets referenced instead of copied if the expando -	// gets copied too -	dest.removeAttribute( jQuery.expando ); +	return display;  } -jQuery.buildFragment = function( args, context, scripts ) { -	var fragment, cacheable, cachehit, -		first = args[ 0 ]; -	// Set context from what may come in as undefined or a jQuery collection or a node -	// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 & -	// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception -	context = context || document; -	context = !context.nodeType && context[0] || context; -	context = context.ownerDocument || context; +(function() { +	var a, shrinkWrapBlocksVal, +		div = document.createElement( "div" ), +		divReset = +			"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;" + +			"display:block;padding:0;margin:0;border:0"; -	// Only cache "small" (1/2 KB) HTML strings that are associated with the main document -	// Cloning options loses the selected state, so don't cache them -	// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment -	// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache -	// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501 -	if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document && -		first.charAt(0) === "<" && !rnocache.test( first ) && -		(jQuery.support.checkClone || !rchecked.test( first )) && -		(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) { +	// Setup +	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; +	a = div.getElementsByTagName( "a" )[ 0 ]; -		// Mark cacheable and look for a hit -		cacheable = true; -		fragment = jQuery.fragments[ first ]; -		cachehit = fragment !== undefined; -	} +	a.style.cssText = "float:left;opacity:.5"; -	if ( !fragment ) { -		fragment = context.createDocumentFragment(); -		jQuery.clean( args, context, fragment, scripts ); +	// Make sure that element opacity exists +	// (IE uses filter instead) +	// Use a regex to work around a WebKit issue. See #5145 +	support.opacity = /^0.5/.test( a.style.opacity ); -		// Update the cache, but only store false -		// unless this is a second parsing of the same content -		if ( cacheable ) { -			jQuery.fragments[ first ] = cachehit && fragment; -		} -	} +	// Verify style float existence +	// (IE uses styleFloat instead of cssFloat) +	support.cssFloat = !!a.style.cssFloat; -	return { fragment: fragment, cacheable: cacheable }; -}; +	div.style.backgroundClip = "content-box"; +	div.cloneNode( true ).style.backgroundClip = ""; +	support.clearCloneStyle = div.style.backgroundClip === "content-box"; -jQuery.fragments = {}; +	// Null elements to avoid leaks in IE. +	a = div = null; -jQuery.each({ -	appendTo: "append", -	prependTo: "prepend", -	insertBefore: "before", -	insertAfter: "after", -	replaceAll: "replaceWith" -}, function( name, original ) { -	jQuery.fn[ name ] = function( selector ) { -		var elems, -			i = 0, -			ret = [], -			insert = jQuery( selector ), -			l = insert.length, -			parent = this.length === 1 && this[0].parentNode; +	support.shrinkWrapBlocks = function() { +		var body, container, div, containerStyles; -		if ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) { -			insert[ original ]( this[0] ); -			return this; -		} else { -			for ( ; i < l; i++ ) { -				elems = ( i > 0 ? this.clone(true) : this ).get(); -				jQuery( insert[i] )[ original ]( elems ); -				ret = ret.concat( elems ); +		if ( shrinkWrapBlocksVal == null ) { +			body = document.getElementsByTagName( "body" )[ 0 ]; +			if ( !body ) { +				// Test fired too early or in an unsupported environment, exit. +				return;  			} -			return this.pushStack( ret, name, insert.selector ); +			containerStyles = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px"; +			container = document.createElement( "div" ); +			div = document.createElement( "div" ); + +			body.appendChild( container ).appendChild( div ); + +			// Will be changed later if needed. +			shrinkWrapBlocksVal = false; + +			if ( typeof div.style.zoom !== strundefined ) { +				// Support: IE6 +				// Check if elements with layout shrink-wrap their children +				div.style.cssText = divReset + ";width:1px;padding:1px;zoom:1"; +				div.innerHTML = "<div></div>"; +				div.firstChild.style.width = "5px"; +				shrinkWrapBlocksVal = div.offsetWidth !== 3; +			} + +			body.removeChild( container ); + +			// Null elements to avoid leaks in IE. +			body = container = div = null;  		} + +		return shrinkWrapBlocksVal;  	}; -}); -function getAll( elem ) { -	if ( typeof elem.getElementsByTagName !== "undefined" ) { -		return elem.getElementsByTagName( "*" ); +})(); +var rmargin = (/^margin/); -	} else if ( typeof elem.querySelectorAll !== "undefined" ) { -		return elem.querySelectorAll( "*" ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); -	} else { -		return []; -	} -} -// Used in clean, fixes the defaultChecked property -function fixDefaultChecked( elem ) { -	if ( rcheckableType.test( elem.type ) ) { -		elem.defaultChecked = elem.checked; -	} -} -jQuery.extend({ -	clone: function( elem, dataAndEvents, deepDataAndEvents ) { -		var srcElements, -			destElements, -			i, -			clone; +var getStyles, curCSS, +	rposition = /^(top|right|bottom|left)$/; -		if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { -			clone = elem.cloneNode( true ); +if ( window.getComputedStyle ) { +	getStyles = function( elem ) { +		return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); +	}; -		// IE<=8 does not properly clone detached, unknown element nodes -		} else { -			fragmentDiv.innerHTML = elem.outerHTML; -			fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); -		} +	curCSS = function( elem, name, computed ) { +		var width, minWidth, maxWidth, ret, +			style = elem.style; -		if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && -				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { -			// IE copies events bound via attachEvent when using cloneNode. -			// Calling detachEvent on the clone will also remove the events -			// from the original. In order to get around this, we use some -			// proprietary methods to clear the events. Thanks to MooTools -			// guys for this hotness. +		computed = computed || getStyles( elem ); -			cloneFixAttributes( elem, clone ); +		// getPropertyValue is only needed for .css('filter') in IE9, see #12537 +		ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined; -			// Using Sizzle here is crazy slow, so we use getElementsByTagName instead -			srcElements = getAll( elem ); -			destElements = getAll( clone ); +		if ( computed ) { -			// Weird iteration because IE will replace the length property -			// with an element if you are cloning the body and one of the -			// elements on the page has a name or id of "length" -			for ( i = 0; srcElements[i]; ++i ) { -				// Ensure that the destination node is not null; Fixes #9587 -				if ( destElements[i] ) { -					cloneFixAttributes( srcElements[i], destElements[i] ); -				} +			if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { +				ret = jQuery.style( elem, name );  			} -		} -		// Copy the events from the original to the clone -		if ( dataAndEvents ) { -			cloneCopyEvent( elem, clone ); +			// A tribute to the "awesome hack by Dean Edwards" +			// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right +			// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels +			// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values +			if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { -			if ( deepDataAndEvents ) { -				srcElements = getAll( elem ); -				destElements = getAll( clone ); +				// Remember the original values +				width = style.width; +				minWidth = style.minWidth; +				maxWidth = style.maxWidth; -				for ( i = 0; srcElements[i]; ++i ) { -					cloneCopyEvent( srcElements[i], destElements[i] ); -				} +				// Put in the new values to get a computed value out +				style.minWidth = style.maxWidth = style.width = ret; +				ret = computed.width; + +				// Revert the changed values +				style.width = width; +				style.minWidth = minWidth; +				style.maxWidth = maxWidth;  			}  		} -		srcElements = destElements = null; +		// Support: IE +		// IE returns zIndex value as an integer. +		return ret === undefined ? +			ret : +			ret + ""; +	}; +} else if ( document.documentElement.currentStyle ) { +	getStyles = function( elem ) { +		return elem.currentStyle; +	}; -		// Return the cloned set -		return clone; -	}, +	curCSS = function( elem, name, computed ) { +		var left, rs, rsLeft, ret, +			style = elem.style; -	clean: function( elems, context, fragment, scripts ) { -		var i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags, -			safe = context === document && safeFragment, -			ret = []; +		computed = computed || getStyles( elem ); +		ret = computed ? computed[ name ] : undefined; -		// Ensure that context is a document -		if ( !context || typeof context.createDocumentFragment === "undefined" ) { -			context = document; +		// Avoid setting ret to empty string here +		// so we don't default to auto +		if ( ret == null && style && style[ name ] ) { +			ret = style[ name ];  		} -		// Use the already-created safe fragment if context permits -		for ( i = 0; (elem = elems[i]) != null; i++ ) { -			if ( typeof elem === "number" ) { -				elem += ""; +		// From the awesome hack by Dean Edwards +		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + +		// If we're not dealing with a regular pixel number +		// but a number that has a weird ending, we need to convert it to pixels +		// but not position css attributes, as those are proportional to the parent element instead +		// and we can't measure the parent instead because it might trigger a "stacking dolls" problem +		if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + +			// Remember the original values +			left = style.left; +			rs = elem.runtimeStyle; +			rsLeft = rs && rs.left; + +			// Put in the new values to get a computed value out +			if ( rsLeft ) { +				rs.left = elem.currentStyle.left;  			} +			style.left = name === "fontSize" ? "1em" : ret; +			ret = style.pixelLeft + "px"; -			if ( !elem ) { -				continue; +			// Revert the changed values +			style.left = left; +			if ( rsLeft ) { +				rs.left = rsLeft;  			} +		} -			// Convert html string into DOM nodes -			if ( typeof elem === "string" ) { -				if ( !rhtml.test( elem ) ) { -					elem = context.createTextNode( elem ); -				} else { -					// Ensure a safe container in which to render the html -					safe = safe || createSafeFragment( context ); -					div = context.createElement("div"); -					safe.appendChild( div ); +		// Support: IE +		// IE returns zIndex value as an integer. +		return ret === undefined ? +			ret : +			ret + "" || "auto"; +	}; +} -					// Fix "XHTML"-style tags in all browsers -					elem = elem.replace(rxhtmlTag, "<$1></$2>"); -					// Go to html and back, then peel off extra wrappers -					tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); -					wrap = wrapMap[ tag ] || wrapMap._default; -					depth = wrap[0]; -					div.innerHTML = wrap[1] + elem + wrap[2]; -					// Move to the right depth -					while ( depth-- ) { -						div = div.lastChild; -					} -					// Remove IE's autoinserted <tbody> from table fragments -					if ( !jQuery.support.tbody ) { +function addGetHookIf( conditionFn, hookFn ) { +	// Define the hook, we'll check on the first run if it's really needed. +	return { +		get: function() { +			var condition = conditionFn(); -						// String was a <table>, *may* have spurious <tbody> -						hasBody = rtbody.test(elem); -							tbody = tag === "table" && !hasBody ? -								div.firstChild && div.firstChild.childNodes : +			if ( condition == null ) { +				// The test was not ready at this point; screw the hook this time +				// but check again when needed next time. +				return; +			} -								// String was a bare <thead> or <tfoot> -								wrap[1] === "<table>" && !hasBody ? -									div.childNodes : -									[]; +			if ( condition ) { +				// Hook not needed (or it's not possible to use it due to missing dependency), +				// remove it. +				// Since there are no other hooks for marginRight, remove the whole object. +				delete this.get; +				return; +			} -						for ( j = tbody.length - 1; j >= 0 ; --j ) { -							if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { -								tbody[ j ].parentNode.removeChild( tbody[ j ] ); -							} -						} -					} +			// Hook needed; redefine it so that the support test is not executed again. -					// IE completely kills leading whitespace when innerHTML is used -					if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { -						div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); -					} +			return (this.get = hookFn).apply( this, arguments ); +		} +	}; +} -					elem = div.childNodes; -					// Take out of fragment container (we need a fresh div each time) -					div.parentNode.removeChild( div ); -				} -			} +(function() { +	var a, reliableHiddenOffsetsVal, boxSizingVal, boxSizingReliableVal, +		pixelPositionVal, reliableMarginRightVal, +		div = document.createElement( "div" ), +		containerStyles = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px", +		divReset = +			"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;" + +			"display:block;padding:0;margin:0;border:0"; -			if ( elem.nodeType ) { -				ret.push( elem ); -			} else { -				jQuery.merge( ret, elem ); -			} -		} +	// Setup +	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; +	a = div.getElementsByTagName( "a" )[ 0 ]; -		// Fix #11356: Clear elements from safeFragment -		if ( div ) { -			elem = div = safe = null; -		} +	a.style.cssText = "float:left;opacity:.5"; -		// Reset defaultChecked for any radios and checkboxes -		// about to be appended to the DOM in IE 6/7 (#8060) -		if ( !jQuery.support.appendChecked ) { -			for ( i = 0; (elem = ret[i]) != null; i++ ) { -				if ( jQuery.nodeName( elem, "input" ) ) { -					fixDefaultChecked( elem ); -				} else if ( typeof elem.getElementsByTagName !== "undefined" ) { -					jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); -				} -			} -		} +	// Make sure that element opacity exists +	// (IE uses filter instead) +	// Use a regex to work around a WebKit issue. See #5145 +	support.opacity = /^0.5/.test( a.style.opacity ); -		// Append elements to a provided document fragment -		if ( fragment ) { -			// Special handling of each script element -			handleScript = function( elem ) { -				// Check if we consider it executable -				if ( !elem.type || rscriptType.test( elem.type ) ) { -					// Detach the script and store it in the scripts array (if provided) or the fragment -					// Return truthy to indicate that it has been handled -					return scripts ? -						scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) : -						fragment.appendChild( elem ); -				} -			}; +	// Verify style float existence +	// (IE uses styleFloat instead of cssFloat) +	support.cssFloat = !!a.style.cssFloat; -			for ( i = 0; (elem = ret[i]) != null; i++ ) { -				// Check if we're done after handling an executable script -				if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) { -					// Append to fragment and handle embedded scripts -					fragment.appendChild( elem ); -					if ( typeof elem.getElementsByTagName !== "undefined" ) { -						// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration -						jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript ); +	div.style.backgroundClip = "content-box"; +	div.cloneNode( true ).style.backgroundClip = ""; +	support.clearCloneStyle = div.style.backgroundClip === "content-box"; -						// Splice the scripts into ret after their former ancestor and advance our index beyond them -						ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); -						i += jsTags.length; -					} -				} +	// Null elements to avoid leaks in IE. +	a = div = null; + +	jQuery.extend(support, { +		reliableHiddenOffsets: function() { +			if ( reliableHiddenOffsetsVal != null ) { +				return reliableHiddenOffsetsVal;  			} -		} -		return ret; -	}, +			var container, tds, isSupported, +				div = document.createElement( "div" ), +				body = document.getElementsByTagName( "body" )[ 0 ]; -	cleanData: function( elems, /* internal */ acceptData ) { -		var data, id, elem, type, -			i = 0, -			internalKey = jQuery.expando, -			cache = jQuery.cache, -			deleteExpando = jQuery.support.deleteExpando, -			special = jQuery.event.special; +			if ( !body ) { +				// Return for frameset docs that don't have a body +				return; +			} -		for ( ; (elem = elems[i]) != null; i++ ) { +			// Setup +			div.setAttribute( "className", "t" ); +			div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; -			if ( acceptData || jQuery.acceptData( elem ) ) { +			container = document.createElement( "div" ); +			container.style.cssText = containerStyles; -				id = elem[ internalKey ]; -				data = id && cache[ id ]; +			body.appendChild( container ).appendChild( div ); -				if ( data ) { -					if ( data.events ) { -						for ( type in data.events ) { -							if ( special[ type ] ) { -								jQuery.event.remove( elem, type ); +			// Support: IE8 +			// Check if table cells still have offsetWidth/Height when they are set +			// to display:none and there are still other visible table cells in a +			// table row; if so, offsetWidth/Height are not reliable for use when +			// determining if an element has been hidden directly using +			// display:none (it is still safe to use offsets if a parent element is +			// hidden; don safety goggles and see bug #4512 for more information). +			div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>"; +			tds = div.getElementsByTagName( "td" ); +			tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; +			isSupported = ( tds[ 0 ].offsetHeight === 0 ); -							// This is a shortcut to avoid jQuery.event.remove's overhead -							} else { -								jQuery.removeEvent( elem, type, data.handle ); -							} -						} -					} +			tds[ 0 ].style.display = ""; +			tds[ 1 ].style.display = "none"; -					// Remove cache only if it was not already removed by jQuery.event.remove -					if ( cache[ id ] ) { +			// Support: IE8 +			// Check if empty table cells still have offsetWidth/Height +			reliableHiddenOffsetsVal = isSupported && ( tds[ 0 ].offsetHeight === 0 ); -						delete cache[ id ]; +			body.removeChild( container ); -						// IE does not allow us to delete expando properties from nodes, -						// nor does it have a removeAttribute function on Document nodes; -						// we must handle all of these cases -						if ( deleteExpando ) { -							delete elem[ internalKey ]; +			// Null elements to avoid leaks in IE. +			div = body = null; -						} else if ( elem.removeAttribute ) { -							elem.removeAttribute( internalKey ); +			return reliableHiddenOffsetsVal; +		}, -						} else { -							elem[ internalKey ] = null; -						} +		boxSizing: function() { +			if ( boxSizingVal == null ) { +				computeStyleTests(); +			} +			return boxSizingVal; +		}, -						jQuery.deletedIds.push( id ); -					} +		boxSizingReliable: function() { +			if ( boxSizingReliableVal == null ) { +				computeStyleTests(); +			} +			return boxSizingReliableVal; +		}, + +		pixelPosition: function() { +			if ( pixelPositionVal == null ) { +				computeStyleTests(); +			} +			return pixelPositionVal; +		}, + +		reliableMarginRight: function() { +			var body, container, div, marginDiv; + +			// Use window.getComputedStyle because jsdom on node.js will break without it. +			if ( reliableMarginRightVal == null && window.getComputedStyle ) { +				body = document.getElementsByTagName( "body" )[ 0 ]; +				if ( !body ) { +					// Test fired too early or in an unsupported environment, exit. +					return;  				} + +				container = document.createElement( "div" ); +				div = document.createElement( "div" ); +				container.style.cssText = containerStyles; + +				body.appendChild( container ).appendChild( div ); + +				// Check if div with explicit width and no margin-right incorrectly +				// gets computed margin-right based on width of container. (#3333) +				// Fails in WebKit before Feb 2011 nightlies +				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right +				marginDiv = div.appendChild( document.createElement( "div" ) ); +				marginDiv.style.cssText = div.style.cssText = divReset; +				marginDiv.style.marginRight = marginDiv.style.width = "0"; +				div.style.width = "1px"; + +				reliableMarginRightVal = +					!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + +				body.removeChild( container );  			} + +			return reliableMarginRightVal;  		} -	} -}); -// Limit scope pollution from any deprecated API -(function() { +	}); -var matched, browser; +	function computeStyleTests() { +		var container, div, +			body = document.getElementsByTagName( "body" )[ 0 ]; -// Use of jQuery.browser is frowned upon. -// More details: http://api.jquery.com/jQuery.browser -// jQuery.uaMatch maintained for back-compat -jQuery.uaMatch = function( ua ) { -	ua = ua.toLowerCase(); +		if ( !body ) { +			// Test fired too early or in an unsupported environment, exit. +			return; +		} -	var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || -		/(webkit)[ \/]([\w.]+)/.exec( ua ) || -		/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || -		/(msie) ([\w.]+)/.exec( ua ) || -		ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || -		[]; +		container = document.createElement( "div" ); +		div = document.createElement( "div" ); +		container.style.cssText = containerStyles; -	return { -		browser: match[ 1 ] || "", -		version: match[ 2 ] || "0" -	}; -}; +		body.appendChild( container ).appendChild( div ); -matched = jQuery.uaMatch( navigator.userAgent ); -browser = {}; +		div.style.cssText = +			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" + +				"position:absolute;display:block;padding:1px;border:1px;width:4px;" + +				"margin-top:1%;top:1%"; -if ( matched.browser ) { -	browser[ matched.browser ] = true; -	browser.version = matched.version; -} +		// Workaround failing boxSizing test due to offsetWidth returning wrong value +		// with some non-1 values of body zoom, ticket #13543 +		jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { +			boxSizingVal = div.offsetWidth === 4; +		}); -// Chrome is Webkit, but Webkit is also Safari. -if ( browser.chrome ) { -	browser.webkit = true; -} else if ( browser.webkit ) { -	browser.safari = true; -} +		// Will be changed later if needed. +		boxSizingReliableVal = true; +		pixelPositionVal = false; +		reliableMarginRightVal = true; + +		// Use window.getComputedStyle because jsdom on node.js will break without it. +		if ( window.getComputedStyle ) { +			pixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; +			boxSizingReliableVal = +				( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; +		} -jQuery.browser = browser; +		body.removeChild( container ); -jQuery.sub = function() { -	function jQuerySub( selector, context ) { -		return new jQuerySub.fn.init( selector, context ); +		// Null elements to avoid leaks in IE. +		div = body = null;  	} -	jQuery.extend( true, jQuerySub, this ); -	jQuerySub.superclass = this; -	jQuerySub.fn = jQuerySub.prototype = this(); -	jQuerySub.fn.constructor = jQuerySub; -	jQuerySub.sub = this.sub; -	jQuerySub.fn.init = function init( selector, context ) { -		if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { -			context = jQuerySub( context ); -		} -		return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); -	}; -	jQuerySub.fn.init.prototype = jQuerySub.fn; -	var rootjQuerySub = jQuerySub(document); -	return jQuerySub; +})(); + + +// A method for quickly swapping in/out CSS properties to get correct calculations. +jQuery.swap = function( elem, options, callback, args ) { +	var ret, name, +		old = {}; + +	// Remember the old values, and insert the new ones +	for ( name in options ) { +		old[ name ] = elem.style[ name ]; +		elem.style[ name ] = options[ name ]; +	} + +	ret = callback.apply( elem, args || [] ); + +	// Revert the old values +	for ( name in options ) { +		elem.style[ name ] = old[ name ]; +	} + +	return ret;  }; -})(); -var curCSS, iframe, iframeDoc, -	ralpha = /alpha\([^)]*\)/i, -	ropacity = /opacity=([^)]*)/, -	rposition = /^(top|right|bottom|left)$/, + +var +		ralpha = /alpha\([^)]*\)/i, +	ropacity = /opacity\s*=\s*([^)]*)/, +  	// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"  	// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display  	rdisplayswap = /^(none|table(?!-c[ea]).+)/, -	rmargin = /^margin/, -	rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), -	rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), -	rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ), -	elemdisplay = { BODY: "block" }, +	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ), +	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),  	cssShow = { position: "absolute", visibility: "hidden", display: "block" },  	cssNormalTransform = { @@ -6554,10 +6465,8 @@ var curCSS, iframe, iframeDoc,  		fontWeight: 400  	}, -	cssExpand = [ "Top", "Right", "Bottom", "Left" ], -	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], +	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; -	eventsToggle = jQuery.fn.toggle;  // return a css property mapped to a potentially vendor prefixed property  function vendorPropName( style, name ) { @@ -6582,13 +6491,8 @@ function vendorPropName( style, name ) {  	return origName;  } -function isHidden( elem, el ) { -	elem = el || elem; -	return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); -} -  function showHide( elements, show ) { -	var elem, display, +	var display, elem, hidden,  		values = [],  		index = 0,  		length = elements.length; @@ -6598,11 +6502,13 @@ function showHide( elements, show ) {  		if ( !elem.style ) {  			continue;  		} +  		values[ index ] = jQuery._data( elem, "olddisplay" ); +		display = elem.style.display;  		if ( show ) {  			// Reset the inline display of this element to learn if it is  			// being hidden by cascaded rules or not -			if ( !values[ index ] && elem.style.display === "none" ) { +			if ( !values[ index ] && display === "none" ) {  				elem.style.display = "";  			} @@ -6610,13 +6516,16 @@ function showHide( elements, show ) {  			// in a stylesheet to whatever the default browser style is  			// for such an element  			if ( elem.style.display === "" && isHidden( elem ) ) { -				values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); +				values[ index ] = jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );  			}  		} else { -			display = curCSS( elem, "display" ); -			if ( !values[ index ] && display !== "none" ) { -				jQuery._data( elem, "olddisplay", display ); +			if ( !values[ index ] ) { +				hidden = isHidden( elem ); + +				if ( display && display !== "none" || !hidden ) { +					jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); +				}  			}  		}  	} @@ -6636,36 +6545,95 @@ function showHide( elements, show ) {  	return elements;  } -jQuery.fn.extend({ -	css: function( name, value ) { -		return jQuery.access( this, function( elem, name, value ) { -			return value !== undefined ? -				jQuery.style( elem, name, value ) : -				jQuery.css( elem, name ); -		}, name, value, arguments.length > 1 ); -	}, -	show: function() { -		return showHide( this, true ); -	}, -	hide: function() { -		return showHide( this ); -	}, -	toggle: function( state, fn2 ) { -		var bool = typeof state === "boolean"; +function setPositiveNumber( elem, value, subtract ) { +	var matches = rnumsplit.exec( value ); +	return matches ? +		// Guard against undefined "subtract", e.g., when used as in cssHooks +		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : +		value; +} -		if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) { -			return eventsToggle.apply( this, arguments ); +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { +	var i = extra === ( isBorderBox ? "border" : "content" ) ? +		// If we already have the right measurement, avoid augmentation +		4 : +		// Otherwise initialize for horizontal or vertical properties +		name === "width" ? 1 : 0, + +		val = 0; + +	for ( ; i < 4; i += 2 ) { +		// both box models exclude margin, so add it if we want it +		if ( extra === "margin" ) { +			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );  		} -		return this.each(function() { -			if ( bool ? state : isHidden( this ) ) { -				jQuery( this ).show(); -			} else { -				jQuery( this ).hide(); +		if ( isBorderBox ) { +			// border-box includes padding, so remove it if we want content +			if ( extra === "content" ) { +				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );  			} -		}); + +			// at this point, extra isn't border nor margin, so remove border +			if ( extra !== "margin" ) { +				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); +			} +		} else { +			// at this point, extra isn't content, so add padding +			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + +			// at this point, extra isn't content nor padding, so add border +			if ( extra !== "padding" ) { +				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); +			} +		} +	} + +	return val; +} + +function getWidthOrHeight( elem, name, extra ) { + +	// Start with offset property, which is equivalent to the border-box value +	var valueIsBorderBox = true, +		val = name === "width" ? elem.offsetWidth : elem.offsetHeight, +		styles = getStyles( elem ), +		isBorderBox = support.boxSizing() && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + +	// some non-html elements return undefined for offsetWidth, so check for null/undefined +	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 +	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 +	if ( val <= 0 || val == null ) { +		// Fall back to computed then uncomputed css if necessary +		val = curCSS( elem, name, styles ); +		if ( val < 0 || val == null ) { +			val = elem.style[ name ]; +		} + +		// Computed unit is not pixels. Stop here and return. +		if ( rnumnonpx.test(val) ) { +			return val; +		} + +		// we need the check for style in case a browser which returns unreliable values +		// for getComputedStyle silently falls back to the reliable elem.style +		valueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] ); + +		// Normalize "", auto, and prepare for extra +		val = parseFloat( val ) || 0;  	} -}); + +	// use the active box-sizing model to add/subtract irrelevant styles +	return ( val + +		augmentWidthOrHeight( +			elem, +			name, +			extra || ( isBorderBox ? "border" : "content" ), +			valueIsBorderBox, +			styles +		) +	) + "px"; +}  jQuery.extend({  	// Add in style property hooks for overriding the default @@ -6677,18 +6645,19 @@ jQuery.extend({  					// We should always get a number back from opacity  					var ret = curCSS( elem, "opacity" );  					return ret === "" ? "1" : ret; -  				}  			}  		}  	}, -	// Exclude the following css properties to add px +	// Don't automatically add "px" to these possibly-unitless properties  	cssNumber: { +		"columnCount": true,  		"fillOpacity": true,  		"fontWeight": true,  		"lineHeight": true,  		"opacity": true, +		"order": true,  		"orphans": true,  		"widows": true,  		"zIndex": true, @@ -6699,7 +6668,7 @@ jQuery.extend({  	// setting or getting the value  	cssProps: {  		// normalize float css property -		"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" +		"float": support.cssFloat ? "cssFloat" : "styleFloat"  	},  	// Get and set the style property on a DOM Node @@ -6731,8 +6700,8 @@ jQuery.extend({  				type = "number";  			} -			// Make sure that NaN and null values aren't set. See: #7116 -			if ( value == null || type === "number" && isNaN( value ) ) { +			// Make sure that null and NaN values aren't set. See: #7116 +			if ( value == null || value !== value ) {  				return;  			} @@ -6741,11 +6710,21 @@ jQuery.extend({  				value += "px";  			} +			// Fixes #8908, it can be done more correctly by specifing setters in cssHooks, +			// but it would mean to define eight (for every problematic property) identical functions +			if ( !support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { +				style[ name ] = "inherit"; +			} +  			// If a hook was provided, use that value, otherwise just set the specified value  			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { -				// Wrapped to prevent IE from throwing errors when 'invalid' values are provided -				// Fixes bug #5509 + +				// Support: IE +				// Swallow errors from 'invalid' CSS values (#5509)  				try { +					// Support: Chrome, Safari +					// Setting style to blank string required to delete "style: x !important;" +					style[ name ] = "";  					style[ name ] = value;  				} catch(e) {}  			} @@ -6761,8 +6740,8 @@ jQuery.extend({  		}  	}, -	css: function( elem, name, numeric, extra ) { -		var val, num, hooks, +	css: function( elem, name, extra, styles ) { +		var num, val, hooks,  			origName = jQuery.camelCase( name );  		// Make sure that we're working with the right name @@ -6779,7 +6758,7 @@ jQuery.extend({  		// Otherwise, if a way to get the computed value exists, use that  		if ( val === undefined ) { -			val = curCSS( elem, name ); +			val = curCSS( elem, name, styles );  		}  		//convert "normal" to computed value @@ -6788,512 +6767,1829 @@ jQuery.extend({  		}  		// Return, converting to number if forced or a qualifier was provided and val looks numeric -		if ( numeric || extra !== undefined ) { +		if ( extra === "" || extra ) {  			num = parseFloat( val ); -			return numeric || jQuery.isNumeric( num ) ? num || 0 : val; +			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;  		}  		return val; -	}, +	} +}); -	// A method for quickly swapping in/out CSS properties to get correct calculations -	swap: function( elem, options, callback ) { -		var ret, name, -			old = {}; +jQuery.each([ "height", "width" ], function( i, name ) { +	jQuery.cssHooks[ name ] = { +		get: function( elem, computed, extra ) { +			if ( computed ) { +				// certain elements can have dimension info if we invisibly show them +				// however, it must have a current display style that would benefit from this +				return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ? +					jQuery.swap( elem, cssShow, function() { +						return getWidthOrHeight( elem, name, extra ); +					}) : +					getWidthOrHeight( elem, name, extra ); +			} +		}, -		// Remember the old values, and insert the new ones -		for ( name in options ) { -			old[ name ] = elem.style[ name ]; -			elem.style[ name ] = options[ name ]; +		set: function( elem, value, extra ) { +			var styles = extra && getStyles( elem ); +			return setPositiveNumber( elem, value, extra ? +				augmentWidthOrHeight( +					elem, +					name, +					extra, +					support.boxSizing() && jQuery.css( elem, "boxSizing", false, styles ) === "border-box", +					styles +				) : 0 +			);  		} +	}; +}); + +if ( !support.opacity ) { +	jQuery.cssHooks.opacity = { +		get: function( elem, computed ) { +			// IE uses filters for opacity +			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? +				( 0.01 * parseFloat( RegExp.$1 ) ) + "" : +				computed ? "1" : ""; +		}, + +		set: function( elem, value ) { +			var style = elem.style, +				currentStyle = elem.currentStyle, +				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", +				filter = currentStyle && currentStyle.filter || style.filter || ""; + +			// IE has trouble with opacity if it does not have layout +			// Force it by setting the zoom level +			style.zoom = 1; + +			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 +			// if value === "", then remove inline opacity #12685 +			if ( ( value >= 1 || value === "" ) && +					jQuery.trim( filter.replace( ralpha, "" ) ) === "" && +					style.removeAttribute ) { -		ret = callback.call( elem ); +				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText +				// if "filter:" is present at all, clearType is disabled, we want to avoid this +				// style.removeAttribute is IE Only, but so apparently is this code path... +				style.removeAttribute( "filter" ); + +				// if there is no filter style applied in a css rule or unset inline opacity, we are done +				if ( value === "" || currentStyle && !currentStyle.filter ) { +					return; +				} +			} -		// Revert the old values -		for ( name in options ) { -			elem.style[ name ] = old[ name ]; +			// otherwise, set new filter values +			style.filter = ralpha.test( filter ) ? +				filter.replace( ralpha, opacity ) : +				filter + " " + opacity;  		} +	}; +} -		return ret; +jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, +	function( elem, computed ) { +		if ( computed ) { +			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right +			// Work around by temporarily setting element display to inline-block +			return jQuery.swap( elem, { "display": "inline-block" }, +				curCSS, [ elem, "marginRight" ] ); +		} +	} +); + +// These hooks are used by animate to expand properties +jQuery.each({ +	margin: "", +	padding: "", +	border: "Width" +}, function( prefix, suffix ) { +	jQuery.cssHooks[ prefix + suffix ] = { +		expand: function( value ) { +			var i = 0, +				expanded = {}, + +				// assumes a single number if not a string +				parts = typeof value === "string" ? value.split(" ") : [ value ]; + +			for ( ; i < 4; i++ ) { +				expanded[ prefix + cssExpand[ i ] + suffix ] = +					parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; +			} + +			return expanded; +		} +	}; + +	if ( !rmargin.test( prefix ) ) { +		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;  	}  }); -// NOTE: To any future maintainer, we've window.getComputedStyle -// because jsdom on node.js will break without it. -if ( window.getComputedStyle ) { -	curCSS = function( elem, name ) { -		var ret, width, minWidth, maxWidth, -			computed = window.getComputedStyle( elem, null ), -			style = elem.style; +jQuery.fn.extend({ +	css: function( name, value ) { +		return access( this, function( elem, name, value ) { +			var styles, len, +				map = {}, +				i = 0; -		if ( computed ) { +			if ( jQuery.isArray( name ) ) { +				styles = getStyles( elem ); +				len = name.length; -			// getPropertyValue is only needed for .css('filter') in IE9, see #12537 -			ret = computed.getPropertyValue( name ) || computed[ name ]; +				for ( ; i < len; i++ ) { +					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); +				} -			if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { -				ret = jQuery.style( elem, name ); +				return map;  			} -			// A tribute to the "awesome hack by Dean Edwards" -			// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right -			// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels -			// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values -			if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { -				width = style.width; -				minWidth = style.minWidth; -				maxWidth = style.maxWidth; +			return value !== undefined ? +				jQuery.style( elem, name, value ) : +				jQuery.css( elem, name ); +		}, name, value, arguments.length > 1 ); +	}, +	show: function() { +		return showHide( this, true ); +	}, +	hide: function() { +		return showHide( this ); +	}, +	toggle: function( state ) { +		if ( typeof state === "boolean" ) { +			return state ? this.show() : this.hide(); +		} -				style.minWidth = style.maxWidth = style.width = ret; -				ret = computed.width; +		return this.each(function() { +			if ( isHidden( this ) ) { +				jQuery( this ).show(); +			} else { +				jQuery( this ).hide(); +			} +		}); +	} +}); -				style.width = width; -				style.minWidth = minWidth; -				style.maxWidth = maxWidth; + +function Tween( elem, options, prop, end, easing ) { +	return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { +	constructor: Tween, +	init: function( elem, options, prop, end, easing, unit ) { +		this.elem = elem; +		this.prop = prop; +		this.easing = easing || "swing"; +		this.options = options; +		this.start = this.now = this.cur(); +		this.end = end; +		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); +	}, +	cur: function() { +		var hooks = Tween.propHooks[ this.prop ]; + +		return hooks && hooks.get ? +			hooks.get( this ) : +			Tween.propHooks._default.get( this ); +	}, +	run: function( percent ) { +		var eased, +			hooks = Tween.propHooks[ this.prop ]; + +		if ( this.options.duration ) { +			this.pos = eased = jQuery.easing[ this.easing ]( +				percent, this.options.duration * percent, 0, 1, this.options.duration +			); +		} else { +			this.pos = eased = percent; +		} +		this.now = ( this.end - this.start ) * eased + this.start; + +		if ( this.options.step ) { +			this.options.step.call( this.elem, this.now, this ); +		} + +		if ( hooks && hooks.set ) { +			hooks.set( this ); +		} else { +			Tween.propHooks._default.set( this ); +		} +		return this; +	} +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { +	_default: { +		get: function( tween ) { +			var result; + +			if ( tween.elem[ tween.prop ] != null && +				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { +				return tween.elem[ tween.prop ]; +			} + +			// passing an empty string as a 3rd parameter to .css will automatically +			// attempt a parseFloat and fallback to a string if the parse fails +			// so, simple values such as "10px" are parsed to Float. +			// complex values such as "rotate(1rad)" are returned as is. +			result = jQuery.css( tween.elem, tween.prop, "" ); +			// Empty strings, null, undefined and "auto" are converted to 0. +			return !result || result === "auto" ? 0 : result; +		}, +		set: function( tween ) { +			// use step hook for back compat - use cssHook if its there - use .style if its +			// available and use plain properties where available +			if ( jQuery.fx.step[ tween.prop ] ) { +				jQuery.fx.step[ tween.prop ]( tween ); +			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { +				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); +			} else { +				tween.elem[ tween.prop ] = tween.now;  			}  		} +	} +}; -		return ret; -	}; -} else if ( document.documentElement.currentStyle ) { -	curCSS = function( elem, name ) { -		var left, rsLeft, -			ret = elem.currentStyle && elem.currentStyle[ name ], -			style = elem.style; +// Support: IE <=9 +// Panic based approach to setting things on disconnected nodes -		// Avoid setting ret to empty string here -		// so we don't default to auto -		if ( ret == null && style && style[ name ] ) { -			ret = style[ name ]; +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { +	set: function( tween ) { +		if ( tween.elem.nodeType && tween.elem.parentNode ) { +			tween.elem[ tween.prop ] = tween.now;  		} +	} +}; -		// From the awesome hack by Dean Edwards -		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 +jQuery.easing = { +	linear: function( p ) { +		return p; +	}, +	swing: function( p ) { +		return 0.5 - Math.cos( p * Math.PI ) / 2; +	} +}; -		// If we're not dealing with a regular pixel number -		// but a number that has a weird ending, we need to convert it to pixels -		// but not position css attributes, as those are proportional to the parent element instead -		// and we can't measure the parent instead because it might trigger a "stacking dolls" problem -		if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { +jQuery.fx = Tween.prototype.init; -			// Remember the original values -			left = style.left; -			rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; +// Back Compat <1.8 extension point +jQuery.fx.step = {}; -			// Put in the new values to get a computed value out -			if ( rsLeft ) { -				elem.runtimeStyle.left = elem.currentStyle.left; + + + +var +	fxNow, timerId, +	rfxtypes = /^(?:toggle|show|hide)$/, +	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ), +	rrun = /queueHooks$/, +	animationPrefilters = [ defaultPrefilter ], +	tweeners = { +		"*": [ function( prop, value ) { +			var tween = this.createTween( prop, value ), +				target = tween.cur(), +				parts = rfxnum.exec( value ), +				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + +				// Starting value computation is required for potential unit mismatches +				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) && +					rfxnum.exec( jQuery.css( tween.elem, prop ) ), +				scale = 1, +				maxIterations = 20; + +			if ( start && start[ 3 ] !== unit ) { +				// Trust units reported by jQuery.css +				unit = unit || start[ 3 ]; + +				// Make sure we update the tween properties later on +				parts = parts || []; + +				// Iteratively approximate from a nonzero starting point +				start = +target || 1; + +				do { +					// If previous iteration zeroed out, double until we get *something* +					// Use a string for doubling factor so we don't accidentally see scale as unchanged below +					scale = scale || ".5"; + +					// Adjust and apply +					start = start / scale; +					jQuery.style( tween.elem, prop, start + unit ); + +				// Update scale, tolerating zero or NaN from tween.cur() +				// And breaking the loop if scale is unchanged or perfect, or if we've just had enough +				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );  			} -			style.left = name === "fontSize" ? "1em" : ret; -			ret = style.pixelLeft + "px"; -			// Revert the changed values -			style.left = left; -			if ( rsLeft ) { -				elem.runtimeStyle.left = rsLeft; +			// Update tween properties +			if ( parts ) { +				start = tween.start = +start || +target || 0; +				tween.unit = unit; +				// If a +=/-= token was provided, we're doing a relative animation +				tween.end = parts[ 1 ] ? +					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : +					+parts[ 2 ];  			} -		} -		return ret === "" ? "auto" : ret; +			return tween; +		} ]  	}; + +// Animations created synchronously will run synchronously +function createFxNow() { +	setTimeout(function() { +		fxNow = undefined; +	}); +	return ( fxNow = jQuery.now() );  } -function setPositiveNumber( elem, value, subtract ) { -	var matches = rnumsplit.exec( value ); -	return matches ? -			Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : -			value; +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { +	var which, +		attrs = { height: type }, +		i = 0; + +	// if we include width, step value is 1 to do all cssExpand values, +	// if we don't include width, step value is 2 to skip over Left and Right +	includeWidth = includeWidth ? 1 : 0; +	for ( ; i < 4 ; i += 2 - includeWidth ) { +		which = cssExpand[ i ]; +		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; +	} + +	if ( includeWidth ) { +		attrs.opacity = attrs.width = type; +	} + +	return attrs;  } -function augmentWidthOrHeight( elem, name, extra, isBorderBox ) { -	var i = extra === ( isBorderBox ? "border" : "content" ) ? -		// If we already have the right measurement, avoid augmentation -		4 : -		// Otherwise initialize for horizontal or vertical properties -		name === "width" ? 1 : 0, +function createTween( value, prop, animation ) { +	var tween, +		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), +		index = 0, +		length = collection.length; +	for ( ; index < length; index++ ) { +		if ( (tween = collection[ index ].call( animation, prop, value )) ) { -		val = 0; +			// we're done with this property +			return tween; +		} +	} +} -	for ( ; i < 4; i += 2 ) { -		// both box models exclude margin, so add it if we want it -		if ( extra === "margin" ) { -			// we use jQuery.css instead of curCSS here -			// because of the reliableMarginRight CSS hook! -			val += jQuery.css( elem, extra + cssExpand[ i ], true ); +function defaultPrefilter( elem, props, opts ) { +	/* jshint validthis: true */ +	var prop, value, toggle, tween, hooks, oldfire, display, dDisplay, +		anim = this, +		orig = {}, +		style = elem.style, +		hidden = elem.nodeType && isHidden( elem ), +		dataShow = jQuery._data( elem, "fxshow" ); + +	// handle queue: false promises +	if ( !opts.queue ) { +		hooks = jQuery._queueHooks( elem, "fx" ); +		if ( hooks.unqueued == null ) { +			hooks.unqueued = 0; +			oldfire = hooks.empty.fire; +			hooks.empty.fire = function() { +				if ( !hooks.unqueued ) { +					oldfire(); +				} +			};  		} +		hooks.unqueued++; -		// From this point on we use curCSS for maximum performance (relevant in animations) -		if ( isBorderBox ) { -			// border-box includes padding, so remove it if we want content -			if ( extra === "content" ) { -				val -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; +		anim.always(function() { +			// doing this makes sure that the complete handler will be called +			// before this completes +			anim.always(function() { +				hooks.unqueued--; +				if ( !jQuery.queue( elem, "fx" ).length ) { +					hooks.empty.fire(); +				} +			}); +		}); +	} + +	// height/width overflow pass +	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { +		// Make sure that nothing sneaks out +		// Record all 3 overflow attributes because IE does not +		// change the overflow attribute when overflowX and +		// overflowY are set to the same value +		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + +		// Set display property to inline-block for height/width +		// animations on inline elements that are having width/height animated +		display = jQuery.css( elem, "display" ); +		dDisplay = defaultDisplay( elem.nodeName ); +		if ( display === "none" ) { +			display = dDisplay; +		} +		if ( display === "inline" && +				jQuery.css( elem, "float" ) === "none" ) { + +			// inline-level elements accept inline-block; +			// block-level elements need to be inline with layout +			if ( !support.inlineBlockNeedsLayout || dDisplay === "inline" ) { +				style.display = "inline-block"; +			} else { +				style.zoom = 1;  			} +		} +	} -			// at this point, extra isn't border nor margin, so remove border -			if ( extra !== "margin" ) { -				val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; +	if ( opts.overflow ) { +		style.overflow = "hidden"; +		if ( !support.shrinkWrapBlocks() ) { +			anim.always(function() { +				style.overflow = opts.overflow[ 0 ]; +				style.overflowX = opts.overflow[ 1 ]; +				style.overflowY = opts.overflow[ 2 ]; +			}); +		} +	} + +	// show/hide pass +	for ( prop in props ) { +		value = props[ prop ]; +		if ( rfxtypes.exec( value ) ) { +			delete props[ prop ]; +			toggle = toggle || value === "toggle"; +			if ( value === ( hidden ? "hide" : "show" ) ) { + +				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden +				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { +					hidden = true; +				} else { +					continue; +				} +			} +			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); +		} +	} + +	if ( !jQuery.isEmptyObject( orig ) ) { +		if ( dataShow ) { +			if ( "hidden" in dataShow ) { +				hidden = dataShow.hidden;  			}  		} else { -			// at this point, extra isn't content, so add padding -			val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; +			dataShow = jQuery._data( elem, "fxshow", {} ); +		} -			// at this point, extra isn't content nor padding, so add border -			if ( extra !== "padding" ) { -				val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; +		// store state if its toggle - enables .stop().toggle() to "reverse" +		if ( toggle ) { +			dataShow.hidden = !hidden; +		} +		if ( hidden ) { +			jQuery( elem ).show(); +		} else { +			anim.done(function() { +				jQuery( elem ).hide(); +			}); +		} +		anim.done(function() { +			var prop; +			jQuery._removeData( elem, "fxshow" ); +			for ( prop in orig ) { +				jQuery.style( elem, prop, orig[ prop ] ); +			} +		}); +		for ( prop in orig ) { +			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + +			if ( !( prop in dataShow ) ) { +				dataShow[ prop ] = tween.start; +				if ( hidden ) { +					tween.end = tween.start; +					tween.start = prop === "width" || prop === "height" ? 1 : 0; +				}  			}  		}  	} - -	return val;  } -function getWidthOrHeight( elem, name, extra ) { +function propFilter( props, specialEasing ) { +	var index, name, easing, value, hooks; -	// Start with offset property, which is equivalent to the border-box value -	var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, -		valueIsBorderBox = true, -		isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"; +	// camelCase, specialEasing and expand cssHook pass +	for ( index in props ) { +		name = jQuery.camelCase( index ); +		easing = specialEasing[ name ]; +		value = props[ index ]; +		if ( jQuery.isArray( value ) ) { +			easing = value[ 1 ]; +			value = props[ index ] = value[ 0 ]; +		} -	// some non-html elements return undefined for offsetWidth, so check for null/undefined -	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 -	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 -	if ( val <= 0 || val == null ) { -		// Fall back to computed then uncomputed css if necessary -		val = curCSS( elem, name ); -		if ( val < 0 || val == null ) { -			val = elem.style[ name ]; +		if ( index !== name ) { +			props[ name ] = value; +			delete props[ index ];  		} -		// Computed unit is not pixels. Stop here and return. -		if ( rnumnonpx.test(val) ) { -			return val; +		hooks = jQuery.cssHooks[ name ]; +		if ( hooks && "expand" in hooks ) { +			value = hooks.expand( value ); +			delete props[ name ]; + +			// not quite $.extend, this wont overwrite keys already present. +			// also - reusing 'index' from above because we have the correct "name" +			for ( index in value ) { +				if ( !( index in props ) ) { +					props[ index ] = value[ index ]; +					specialEasing[ index ] = easing; +				} +			} +		} else { +			specialEasing[ name ] = easing;  		} +	} +} -		// we need the check for style in case a browser which returns unreliable values -		// for getComputedStyle silently falls back to the reliable elem.style -		valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); +function Animation( elem, properties, options ) { +	var result, +		stopped, +		index = 0, +		length = animationPrefilters.length, +		deferred = jQuery.Deferred().always( function() { +			// don't match elem in the :animated selector +			delete tick.elem; +		}), +		tick = function() { +			if ( stopped ) { +				return false; +			} +			var currentTime = fxNow || createFxNow(), +				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), +				// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497) +				temp = remaining / animation.duration || 0, +				percent = 1 - temp, +				index = 0, +				length = animation.tweens.length; -		// Normalize "", auto, and prepare for extra -		val = parseFloat( val ) || 0; +			for ( ; index < length ; index++ ) { +				animation.tweens[ index ].run( percent ); +			} + +			deferred.notifyWith( elem, [ animation, percent, remaining ]); + +			if ( percent < 1 && length ) { +				return remaining; +			} else { +				deferred.resolveWith( elem, [ animation ] ); +				return false; +			} +		}, +		animation = deferred.promise({ +			elem: elem, +			props: jQuery.extend( {}, properties ), +			opts: jQuery.extend( true, { specialEasing: {} }, options ), +			originalProperties: properties, +			originalOptions: options, +			startTime: fxNow || createFxNow(), +			duration: options.duration, +			tweens: [], +			createTween: function( prop, end ) { +				var tween = jQuery.Tween( elem, animation.opts, prop, end, +						animation.opts.specialEasing[ prop ] || animation.opts.easing ); +				animation.tweens.push( tween ); +				return tween; +			}, +			stop: function( gotoEnd ) { +				var index = 0, +					// if we are going to the end, we want to run all the tweens +					// otherwise we skip this part +					length = gotoEnd ? animation.tweens.length : 0; +				if ( stopped ) { +					return this; +				} +				stopped = true; +				for ( ; index < length ; index++ ) { +					animation.tweens[ index ].run( 1 ); +				} + +				// resolve when we played the last frame +				// otherwise, reject +				if ( gotoEnd ) { +					deferred.resolveWith( elem, [ animation, gotoEnd ] ); +				} else { +					deferred.rejectWith( elem, [ animation, gotoEnd ] ); +				} +				return this; +			} +		}), +		props = animation.props; + +	propFilter( props, animation.opts.specialEasing ); + +	for ( ; index < length ; index++ ) { +		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); +		if ( result ) { +			return result; +		}  	} -	// use the active box-sizing model to add/subtract irrelevant styles -	return ( val + -		augmentWidthOrHeight( -			elem, -			name, -			extra || ( isBorderBox ? "border" : "content" ), -			valueIsBorderBox -		) -	) + "px"; +	jQuery.map( props, createTween, animation ); + +	if ( jQuery.isFunction( animation.opts.start ) ) { +		animation.opts.start.call( elem, animation ); +	} + +	jQuery.fx.timer( +		jQuery.extend( tick, { +			elem: elem, +			anim: animation, +			queue: animation.opts.queue +		}) +	); + +	// attach callbacks from options +	return animation.progress( animation.opts.progress ) +		.done( animation.opts.done, animation.opts.complete ) +		.fail( animation.opts.fail ) +		.always( animation.opts.always );  } +jQuery.Animation = jQuery.extend( Animation, { +	tweener: function( props, callback ) { +		if ( jQuery.isFunction( props ) ) { +			callback = props; +			props = [ "*" ]; +		} else { +			props = props.split(" "); +		} + +		var prop, +			index = 0, +			length = props.length; + +		for ( ; index < length ; index++ ) { +			prop = props[ index ]; +			tweeners[ prop ] = tweeners[ prop ] || []; +			tweeners[ prop ].unshift( callback ); +		} +	}, -// Try to determine the default display value of an element -function css_defaultDisplay( nodeName ) { -	if ( elemdisplay[ nodeName ] ) { -		return elemdisplay[ nodeName ]; +	prefilter: function( callback, prepend ) { +		if ( prepend ) { +			animationPrefilters.unshift( callback ); +		} else { +			animationPrefilters.push( callback ); +		}  	} +}); -	var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ), -		display = elem.css("display"); -	elem.remove(); +jQuery.speed = function( speed, easing, fn ) { +	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { +		complete: fn || !fn && easing || +			jQuery.isFunction( speed ) && speed, +		duration: speed, +		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing +	}; -	// If the simple way fails, -	// get element's real default display by attaching it to a temp iframe -	if ( display === "none" || display === "" ) { -		// Use the already-created iframe if possible -		iframe = document.body.appendChild( -			iframe || jQuery.extend( document.createElement("iframe"), { -				frameBorder: 0, -				width: 0, -				height: 0 -			}) -		); +	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : +		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; + +	// normalize opt.queue - true/undefined/null -> "fx" +	if ( opt.queue == null || opt.queue === true ) { +		opt.queue = "fx"; +	} + +	// Queueing +	opt.old = opt.complete; -		// Create a cacheable copy of the iframe document on first call. -		// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML -		// document to it; WebKit & Firefox won't allow reusing the iframe document. -		if ( !iframeDoc || !iframe.createElement ) { -			iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; -			iframeDoc.write("<!doctype html><html><body>"); -			iframeDoc.close(); +	opt.complete = function() { +		if ( jQuery.isFunction( opt.old ) ) { +			opt.old.call( this );  		} -		elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) ); +		if ( opt.queue ) { +			jQuery.dequeue( this, opt.queue ); +		} +	}; -		display = curCSS( elem, "display" ); -		document.body.removeChild( iframe ); -	} +	return opt; +}; -	// Store the correct default display -	elemdisplay[ nodeName ] = display; +jQuery.fn.extend({ +	fadeTo: function( speed, to, easing, callback ) { -	return display; -} +		// show any hidden elements after setting opacity to 0 +		return this.filter( isHidden ).css( "opacity", 0 ).show() -jQuery.each([ "height", "width" ], function( i, name ) { -	jQuery.cssHooks[ name ] = { -		get: function( elem, computed, extra ) { -			if ( computed ) { -				// certain elements can have dimension info if we invisibly show them -				// however, it must have a current display style that would benefit from this -				if ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, "display" ) ) ) { -					return jQuery.swap( elem, cssShow, function() { -						return getWidthOrHeight( elem, name, extra ); -					}); -				} else { -					return getWidthOrHeight( elem, name, extra ); +			// animate to the value specified +			.end().animate({ opacity: to }, speed, easing, callback ); +	}, +	animate: function( prop, speed, easing, callback ) { +		var empty = jQuery.isEmptyObject( prop ), +			optall = jQuery.speed( speed, easing, callback ), +			doAnimation = function() { +				// Operate on a copy of prop so per-property easing won't be lost +				var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + +				// Empty animations, or finishing resolves immediately +				if ( empty || jQuery._data( this, "finish" ) ) { +					anim.stop( true ); +				} +			}; +			doAnimation.finish = doAnimation; + +		return empty || optall.queue === false ? +			this.each( doAnimation ) : +			this.queue( optall.queue, doAnimation ); +	}, +	stop: function( type, clearQueue, gotoEnd ) { +		var stopQueue = function( hooks ) { +			var stop = hooks.stop; +			delete hooks.stop; +			stop( gotoEnd ); +		}; + +		if ( typeof type !== "string" ) { +			gotoEnd = clearQueue; +			clearQueue = type; +			type = undefined; +		} +		if ( clearQueue && type !== false ) { +			this.queue( type || "fx", [] ); +		} + +		return this.each(function() { +			var dequeue = true, +				index = type != null && type + "queueHooks", +				timers = jQuery.timers, +				data = jQuery._data( this ); + +			if ( index ) { +				if ( data[ index ] && data[ index ].stop ) { +					stopQueue( data[ index ] ); +				} +			} else { +				for ( index in data ) { +					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { +						stopQueue( data[ index ] ); +					}  				}  			} -		}, -		set: function( elem, value, extra ) { -			return setPositiveNumber( elem, value, extra ? -				augmentWidthOrHeight( -					elem, -					name, -					extra, -					jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box" -				) : 0 -			); +			for ( index = timers.length; index--; ) { +				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { +					timers[ index ].anim.stop( gotoEnd ); +					dequeue = false; +					timers.splice( index, 1 ); +				} +			} + +			// start the next in the queue if the last step wasn't forced +			// timers currently will call their complete callbacks, which will dequeue +			// but only if they were gotoEnd +			if ( dequeue || !gotoEnd ) { +				jQuery.dequeue( this, type ); +			} +		}); +	}, +	finish: function( type ) { +		if ( type !== false ) { +			type = type || "fx";  		} +		return this.each(function() { +			var index, +				data = jQuery._data( this ), +				queue = data[ type + "queue" ], +				hooks = data[ type + "queueHooks" ], +				timers = jQuery.timers, +				length = queue ? queue.length : 0; + +			// enable finishing flag on private data +			data.finish = true; + +			// empty the queue first +			jQuery.queue( this, type, [] ); + +			if ( hooks && hooks.stop ) { +				hooks.stop.call( this, true ); +			} + +			// look for any active animations, and finish them +			for ( index = timers.length; index--; ) { +				if ( timers[ index ].elem === this && timers[ index ].queue === type ) { +					timers[ index ].anim.stop( true ); +					timers.splice( index, 1 ); +				} +			} + +			// look for any animations in the old queue and finish them +			for ( index = 0; index < length; index++ ) { +				if ( queue[ index ] && queue[ index ].finish ) { +					queue[ index ].finish.call( this ); +				} +			} + +			// turn off finishing flag +			delete data.finish; +		}); +	} +}); + +jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { +	var cssFn = jQuery.fn[ name ]; +	jQuery.fn[ name ] = function( speed, easing, callback ) { +		return speed == null || typeof speed === "boolean" ? +			cssFn.apply( this, arguments ) : +			this.animate( genFx( name, true ), speed, easing, callback );  	};  }); -if ( !jQuery.support.opacity ) { -	jQuery.cssHooks.opacity = { -		get: function( elem, computed ) { -			// IE uses filters for opacity -			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? -				( 0.01 * parseFloat( RegExp.$1 ) ) + "" : -				computed ? "1" : ""; -		}, +// Generate shortcuts for custom animations +jQuery.each({ +	slideDown: genFx("show"), +	slideUp: genFx("hide"), +	slideToggle: genFx("toggle"), +	fadeIn: { opacity: "show" }, +	fadeOut: { opacity: "hide" }, +	fadeToggle: { opacity: "toggle" } +}, function( name, props ) { +	jQuery.fn[ name ] = function( speed, easing, callback ) { +		return this.animate( props, speed, easing, callback ); +	}; +}); -		set: function( elem, value ) { -			var style = elem.style, -				currentStyle = elem.currentStyle, -				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", -				filter = currentStyle && currentStyle.filter || style.filter || ""; +jQuery.timers = []; +jQuery.fx.tick = function() { +	var timer, +		timers = jQuery.timers, +		i = 0; -			// IE has trouble with opacity if it does not have layout -			// Force it by setting the zoom level -			style.zoom = 1; +	fxNow = jQuery.now(); -			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 -			if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" && -				style.removeAttribute ) { +	for ( ; i < timers.length; i++ ) { +		timer = timers[ i ]; +		// Checks the timer has not already been removed +		if ( !timer() && timers[ i ] === timer ) { +			timers.splice( i--, 1 ); +		} +	} -				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText -				// if "filter:" is present at all, clearType is disabled, we want to avoid this -				// style.removeAttribute is IE Only, but so apparently is this code path... -				style.removeAttribute( "filter" ); +	if ( !timers.length ) { +		jQuery.fx.stop(); +	} +	fxNow = undefined; +}; -				// if there there is no filter style applied in a css rule, we are done -				if ( currentStyle && !currentStyle.filter ) { -					return; +jQuery.fx.timer = function( timer ) { +	jQuery.timers.push( timer ); +	if ( timer() ) { +		jQuery.fx.start(); +	} else { +		jQuery.timers.pop(); +	} +}; + +jQuery.fx.interval = 13; + +jQuery.fx.start = function() { +	if ( !timerId ) { +		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); +	} +}; + +jQuery.fx.stop = function() { +	clearInterval( timerId ); +	timerId = null; +}; + +jQuery.fx.speeds = { +	slow: 600, +	fast: 200, +	// Default speed +	_default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { +	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; +	type = type || "fx"; + +	return this.queue( type, function( next, hooks ) { +		var timeout = setTimeout( next, time ); +		hooks.stop = function() { +			clearTimeout( timeout ); +		}; +	}); +}; + + +(function() { +	var a, input, select, opt, +		div = document.createElement("div" ); + +	// Setup +	div.setAttribute( "className", "t" ); +	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; +	a = div.getElementsByTagName("a")[ 0 ]; + +	// First batch of tests. +	select = document.createElement("select"); +	opt = select.appendChild( document.createElement("option") ); +	input = div.getElementsByTagName("input")[ 0 ]; + +	a.style.cssText = "top:1px"; + +	// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) +	support.getSetAttribute = div.className !== "t"; + +	// Get the style information from getAttribute +	// (IE uses .cssText instead) +	support.style = /top/.test( a.getAttribute("style") ); + +	// Make sure that URLs aren't manipulated +	// (IE normalizes it by default) +	support.hrefNormalized = a.getAttribute("href") === "/a"; + +	// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) +	support.checkOn = !!input.value; + +	// Make sure that a selected-by-default option has a working selected property. +	// (WebKit defaults to false instead of true, IE too, if it's in an optgroup) +	support.optSelected = opt.selected; + +	// Tests for enctype support on a form (#6743) +	support.enctype = !!document.createElement("form").enctype; + +	// Make sure that the options inside disabled selects aren't marked as disabled +	// (WebKit marks them as disabled) +	select.disabled = true; +	support.optDisabled = !opt.disabled; + +	// Support: IE8 only +	// Check if we can trust getAttribute("value") +	input = document.createElement( "input" ); +	input.setAttribute( "value", "" ); +	support.input = input.getAttribute( "value" ) === ""; + +	// Check if an input maintains its value after becoming a radio +	input.value = "t"; +	input.setAttribute( "type", "radio" ); +	support.radioValue = input.value === "t"; + +	// Null elements to avoid leaks in IE. +	a = input = select = opt = div = null; +})(); + + +var rreturn = /\r/g; + +jQuery.fn.extend({ +	val: function( value ) { +		var hooks, ret, isFunction, +			elem = this[0]; + +		if ( !arguments.length ) { +			if ( elem ) { +				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + +				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { +					return ret;  				} + +				ret = elem.value; + +				return typeof ret === "string" ? +					// handle most common string cases +					ret.replace(rreturn, "") : +					// handle cases where value is null/undef or number +					ret == null ? "" : ret;  			} -			// otherwise, set new filter values -			style.filter = ralpha.test( filter ) ? -				filter.replace( ralpha, opacity ) : -				filter + " " + opacity; +			return;  		} -	}; -} -// These hooks cannot be added until DOM ready because the support test -// for it is not run until after DOM ready -jQuery(function() { -	if ( !jQuery.support.reliableMarginRight ) { -		jQuery.cssHooks.marginRight = { -			get: function( elem, computed ) { -				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right -				// Work around by temporarily setting element display to inline-block -				return jQuery.swap( elem, { "display": "inline-block" }, function() { -					if ( computed ) { -						return curCSS( elem, "marginRight" ); -					} +		isFunction = jQuery.isFunction( value ); + +		return this.each(function( i ) { +			var val; + +			if ( this.nodeType !== 1 ) { +				return; +			} + +			if ( isFunction ) { +				val = value.call( this, i, jQuery( this ).val() ); +			} else { +				val = value; +			} + +			// Treat null/undefined as ""; convert numbers to string +			if ( val == null ) { +				val = ""; +			} else if ( typeof val === "number" ) { +				val += ""; +			} else if ( jQuery.isArray( val ) ) { +				val = jQuery.map( val, function( value ) { +					return value == null ? "" : value + "";  				});  			} -		}; + +			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + +			// If set returns undefined, fall back to normal setting +			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { +				this.value = val; +			} +		});  	} +}); + +jQuery.extend({ +	valHooks: { +		option: { +			get: function( elem ) { +				var val = jQuery.find.attr( elem, "value" ); +				return val != null ? +					val : +					jQuery.text( elem ); +			} +		}, +		select: { +			get: function( elem ) { +				var value, option, +					options = elem.options, +					index = elem.selectedIndex, +					one = elem.type === "select-one" || index < 0, +					values = one ? null : [], +					max = one ? index + 1 : options.length, +					i = index < 0 ? +						max : +						one ? index : 0; + +				// Loop through all the selected options +				for ( ; i < max; i++ ) { +					option = options[ i ]; + +					// oldIE doesn't update selected after form reset (#2551) +					if ( ( option.selected || i === index ) && +							// Don't return options that are disabled or in a disabled optgroup +							( support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && +							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + +						// Get the specific value for the option +						value = jQuery( option ).val(); + +						// We don't need an array for one selects +						if ( one ) { +							return value; +						} -	// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -	// getComputedStyle returns percent when specified for top/left/bottom/right -	// rather than make the css module depend on the offset module, we just check for it here -	if ( !jQuery.support.pixelPosition && jQuery.fn.position ) { -		jQuery.each( [ "top", "left" ], function( i, prop ) { -			jQuery.cssHooks[ prop ] = { -				get: function( elem, computed ) { -					if ( computed ) { -						var ret = curCSS( elem, prop ); -						// if curCSS returns percentage, fallback to offset -						return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret; +						// Multi-Selects return an array +						values.push( value );  					}  				} -			}; + +				return values; +			}, + +			set: function( elem, value ) { +				var optionSet, option, +					options = elem.options, +					values = jQuery.makeArray( value ), +					i = options.length; + +				while ( i-- ) { +					option = options[ i ]; + +					if ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) { + +						// Support: IE6 +						// When new option element is added to select box we need to +						// force reflow of newly added node in order to workaround delay +						// of initialization properties +						try { +							option.selected = optionSet = true; + +						} catch ( _ ) { + +							// Will be executed only in IE6 +							option.scrollHeight; +						} + +					} else { +						option.selected = false; +					} +				} + +				// Force browsers to behave consistently when non-matching value is set +				if ( !optionSet ) { +					elem.selectedIndex = -1; +				} + +				return options; +			} +		} +	} +}); + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { +	jQuery.valHooks[ this ] = { +		set: function( elem, value ) { +			if ( jQuery.isArray( value ) ) { +				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); +			} +		} +	}; +	if ( !support.checkOn ) { +		jQuery.valHooks[ this ].get = function( elem ) { +			// Support: Webkit +			// "" is returned instead of "on" if a value isn't specified +			return elem.getAttribute("value") === null ? "on" : elem.value; +		}; +	} +}); + + + + +var nodeHook, boolHook, +	attrHandle = jQuery.expr.attrHandle, +	ruseDefault = /^(?:checked|selected)$/i, +	getSetAttribute = support.getSetAttribute, +	getSetInput = support.input; + +jQuery.fn.extend({ +	attr: function( name, value ) { +		return access( this, jQuery.attr, name, value, arguments.length > 1 ); +	}, + +	removeAttr: function( name ) { +		return this.each(function() { +			jQuery.removeAttr( this, name );  		});  	} +}); + +jQuery.extend({ +	attr: function( elem, name, value ) { +		var hooks, ret, +			nType = elem.nodeType; +		// don't get/set attributes on text, comment and attribute nodes +		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { +			return; +		} + +		// Fallback to prop when attributes are not supported +		if ( typeof elem.getAttribute === strundefined ) { +			return jQuery.prop( elem, name, value ); +		} + +		// All attributes are lowercase +		// Grab necessary hook if one is defined +		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { +			name = name.toLowerCase(); +			hooks = jQuery.attrHooks[ name ] || +				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); +		} + +		if ( value !== undefined ) { + +			if ( value === null ) { +				jQuery.removeAttr( elem, name ); + +			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { +				return ret; + +			} else { +				elem.setAttribute( name, value + "" ); +				return value; +			} + +		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { +			return ret; + +		} else { +			ret = jQuery.find.attr( elem, name ); + +			// Non-existent attributes return null, we normalize to undefined +			return ret == null ? +				undefined : +				ret; +		} +	}, + +	removeAttr: function( elem, value ) { +		var name, propName, +			i = 0, +			attrNames = value && value.match( rnotwhite ); + +		if ( attrNames && elem.nodeType === 1 ) { +			while ( (name = attrNames[i++]) ) { +				propName = jQuery.propFix[ name ] || name; + +				// Boolean attributes get special treatment (#10870) +				if ( jQuery.expr.match.bool.test( name ) ) { +					// Set corresponding property to false +					if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { +						elem[ propName ] = false; +					// Support: IE<9 +					// Also clear defaultChecked/defaultSelected (if appropriate) +					} else { +						elem[ jQuery.camelCase( "default-" + name ) ] = +							elem[ propName ] = false; +					} + +				// See #9699 for explanation of this approach (setting first, then removal) +				} else { +					jQuery.attr( elem, name, "" ); +				} + +				elem.removeAttribute( getSetAttribute ? name : propName ); +			} +		} +	}, + +	attrHooks: { +		type: { +			set: function( elem, value ) { +				if ( !support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { +					// Setting the type on a radio button after the value resets the value in IE6-9 +					// Reset value to default in case type is set after value during creation +					var val = elem.value; +					elem.setAttribute( "type", value ); +					if ( val ) { +						elem.value = val; +					} +					return value; +				} +			} +		} +	}  }); -if ( jQuery.expr && jQuery.expr.filters ) { -	jQuery.expr.filters.hidden = function( elem ) { -		return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none"); -	}; +// Hook for boolean attributes +boolHook = { +	set: function( elem, value, name ) { +		if ( value === false ) { +			// Remove boolean attributes when set to false +			jQuery.removeAttr( elem, name ); +		} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { +			// IE<8 needs the *property* name +			elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + +		// Use defaultChecked and defaultSelected for oldIE +		} else { +			elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; +		} + +		return name; +	} +}; + +// Retrieve booleans specially +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + +	var getter = attrHandle[ name ] || jQuery.find.attr; + +	attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? +		function( elem, name, isXML ) { +			var ret, handle; +			if ( !isXML ) { +				// Avoid an infinite loop by temporarily removing this function from the getter +				handle = attrHandle[ name ]; +				attrHandle[ name ] = ret; +				ret = getter( elem, name, isXML ) != null ? +					name.toLowerCase() : +					null; +				attrHandle[ name ] = handle; +			} +			return ret; +		} : +		function( elem, name, isXML ) { +			if ( !isXML ) { +				return elem[ jQuery.camelCase( "default-" + name ) ] ? +					name.toLowerCase() : +					null; +			} +		}; +}); -	jQuery.expr.filters.visible = function( elem ) { -		return !jQuery.expr.filters.hidden( elem ); +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { +	jQuery.attrHooks.value = { +		set: function( elem, value, name ) { +			if ( jQuery.nodeName( elem, "input" ) ) { +				// Does not return so that setAttribute is also used +				elem.defaultValue = value; +			} else { +				// Use nodeHook if defined (#1954); otherwise setAttribute is fine +				return nodeHook && nodeHook.set( elem, value, name ); +			} +		}  	};  } -// These hooks are used by animate to expand properties -jQuery.each({ -	margin: "", -	padding: "", -	border: "Width" -}, function( prefix, suffix ) { -	jQuery.cssHooks[ prefix + suffix ] = { -		expand: function( value ) { -			var i, +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { -				// assumes a single number if not a string -				parts = typeof value === "string" ? value.split(" ") : [ value ], -				expanded = {}; +	// Use this for any attribute in IE6/7 +	// This fixes almost every IE6/7 issue +	nodeHook = { +		set: function( elem, value, name ) { +			// Set the existing or create a new attribute node +			var ret = elem.getAttributeNode( name ); +			if ( !ret ) { +				elem.setAttributeNode( +					(ret = elem.ownerDocument.createAttribute( name )) +				); +			} -			for ( i = 0; i < 4; i++ ) { -				expanded[ prefix + cssExpand[ i ] + suffix ] = -					parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; +			ret.value = value += ""; + +			// Break association with cloned elements by also using setAttribute (#9646) +			if ( name === "value" || value === elem.getAttribute( name ) ) { +				return value;  			} +		} +	}; -			return expanded; +	// Some attributes are constructed with empty-string values when not defined +	attrHandle.id = attrHandle.name = attrHandle.coords = +		function( elem, name, isXML ) { +			var ret; +			if ( !isXML ) { +				return (ret = elem.getAttributeNode( name )) && ret.value !== "" ? +					ret.value : +					null; +			} +		}; + +	// Fixing value retrieval on a button requires this module +	jQuery.valHooks.button = { +		get: function( elem, name ) { +			var ret = elem.getAttributeNode( name ); +			if ( ret && ret.specified ) { +				return ret.value; +			} +		}, +		set: nodeHook.set +	}; + +	// Set contenteditable to false on removals(#10429) +	// Setting to empty string throws an error as an invalid value +	jQuery.attrHooks.contenteditable = { +		set: function( elem, value, name ) { +			nodeHook.set( elem, value === "" ? false : value, name );  		}  	}; -	if ( !rmargin.test( prefix ) ) { -		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; +	// Set width and height to auto instead of 0 on empty string( Bug #8150 ) +	// This is for removals +	jQuery.each([ "width", "height" ], function( i, name ) { +		jQuery.attrHooks[ name ] = { +			set: function( elem, value ) { +				if ( value === "" ) { +					elem.setAttribute( name, "auto" ); +					return value; +				} +			} +		}; +	}); +} + +if ( !support.style ) { +	jQuery.attrHooks.style = { +		get: function( elem ) { +			// Return undefined in the case of empty string +			// Note: IE uppercases css property names, but if we were to .toLowerCase() +			// .cssText, that would destroy case senstitivity in URL's, like in "background" +			return elem.style.cssText || undefined; +		}, +		set: function( elem, value ) { +			return ( elem.style.cssText = value + "" ); +		} +	}; +} + + + + +var rfocusable = /^(?:input|select|textarea|button|object)$/i, +	rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend({ +	prop: function( name, value ) { +		return access( this, jQuery.prop, name, value, arguments.length > 1 ); +	}, + +	removeProp: function( name ) { +		name = jQuery.propFix[ name ] || name; +		return this.each(function() { +			// try/catch handles cases where IE balks (such as removing a property on window) +			try { +				this[ name ] = undefined; +				delete this[ name ]; +			} catch( e ) {} +		});  	}  }); -var r20 = /%20/g, -	rbracket = /\[\]$/, -	rCRLF = /\r?\n/g, -	rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, -	rselectTextarea = /^(?:select|textarea)/i; -jQuery.fn.extend({ -	serialize: function() { -		return jQuery.param( this.serializeArray() ); +jQuery.extend({ +	propFix: { +		"for": "htmlFor", +		"class": "className"  	}, -	serializeArray: function() { -		return this.map(function(){ -			return this.elements ? jQuery.makeArray( this.elements ) : this; -		}) -		.filter(function(){ -			return this.name && !this.disabled && -				( this.checked || rselectTextarea.test( this.nodeName ) || -					rinput.test( this.type ) ); -		}) -		.map(function( i, elem ){ -			var val = jQuery( this ).val(); -			return val == null ? -				null : -				jQuery.isArray( val ) ? -					jQuery.map( val, function( val, i ){ -						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; -					}) : -					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; -		}).get(); +	prop: function( elem, name, value ) { +		var ret, hooks, notxml, +			nType = elem.nodeType; + +		// don't get/set properties on text, comment and attribute nodes +		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { +			return; +		} + +		notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + +		if ( notxml ) { +			// Fix name and attach hooks +			name = jQuery.propFix[ name ] || name; +			hooks = jQuery.propHooks[ name ]; +		} + +		if ( value !== undefined ) { +			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? +				ret : +				( elem[ name ] = value ); + +		} else { +			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? +				ret : +				elem[ name ]; +		} +	}, + +	propHooks: { +		tabIndex: { +			get: function( elem ) { +				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set +				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ +				// Use proper attribute retrieval(#12072) +				var tabindex = jQuery.find.attr( elem, "tabindex" ); + +				return tabindex ? +					parseInt( tabindex, 10 ) : +					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? +						0 : +						-1; +			} +		}  	}  }); -//Serialize an array of form elements or a set of -//key/values into a query string -jQuery.param = function( a, traditional ) { -	var prefix, -		s = [], -		add = function( key, value ) { -			// If value is a function, invoke it and return its value -			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); -			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !support.hrefNormalized ) { +	// href/src property should get the full normalized URL (#10299/#12915) +	jQuery.each([ "href", "src" ], function( i, name ) { +		jQuery.propHooks[ name ] = { +			get: function( elem ) { +				return elem.getAttribute( name, 4 ); +			}  		}; +	}); +} -	// Set traditional to true for jQuery <= 1.3.2 behavior. -	if ( traditional === undefined ) { -		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; -	} +// Support: Safari, IE9+ +// mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !support.optSelected ) { +	jQuery.propHooks.selected = { +		get: function( elem ) { +			var parent = elem.parentNode; -	// If an array was passed in, assume that it is an array of form elements. -	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { -		// Serialize the form elements -		jQuery.each( a, function() { -			add( this.name, this.value ); -		}); +			if ( parent ) { +				parent.selectedIndex; -	} else { -		// If traditional, encode the "old" way (the way 1.3.2 or older -		// did it), otherwise encode params recursively. -		for ( prefix in a ) { -			buildParams( prefix, a[ prefix ], traditional, add ); +				// Make sure that it also works with optgroups, see #5701 +				if ( parent.parentNode ) { +					parent.parentNode.selectedIndex; +				} +			} +			return null;  		} -	} +	}; +} -	// Return the resulting serialization -	return s.join( "&" ).replace( r20, "+" ); -}; +jQuery.each([ +	"tabIndex", +	"readOnly", +	"maxLength", +	"cellSpacing", +	"cellPadding", +	"rowSpan", +	"colSpan", +	"useMap", +	"frameBorder", +	"contentEditable" +], function() { +	jQuery.propFix[ this.toLowerCase() ] = this; +}); -function buildParams( prefix, obj, traditional, add ) { -	var name; +// IE6/7 call enctype encoding +if ( !support.enctype ) { +	jQuery.propFix.enctype = "encoding"; +} -	if ( jQuery.isArray( obj ) ) { -		// Serialize array item. -		jQuery.each( obj, function( i, v ) { -			if ( traditional || rbracket.test( prefix ) ) { -				// Treat each array item as a scalar. -				add( prefix, v ); -			} else { -				// If array item is non-scalar (array or object), encode its -				// numeric index to resolve deserialization ambiguity issues. -				// Note that rack (as of 1.0.0) can't currently deserialize -				// nested arrays properly, and attempting to do so may cause -				// a server error. Possible fixes are to modify rack's -				// deserialization algorithm or to provide an option or flag -				// to force array serialization to be shallow. -				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); + + +var rclass = /[\t\r\n\f]/g; + +jQuery.fn.extend({ +	addClass: function( value ) { +		var classes, elem, cur, clazz, j, finalValue, +			i = 0, +			len = this.length, +			proceed = typeof value === "string" && value; + +		if ( jQuery.isFunction( value ) ) { +			return this.each(function( j ) { +				jQuery( this ).addClass( value.call( this, j, this.className ) ); +			}); +		} + +		if ( proceed ) { +			// The disjunction here is for better compressibility (see removeClass) +			classes = ( value || "" ).match( rnotwhite ) || []; + +			for ( ; i < len; i++ ) { +				elem = this[ i ]; +				cur = elem.nodeType === 1 && ( elem.className ? +					( " " + elem.className + " " ).replace( rclass, " " ) : +					" " +				); + +				if ( cur ) { +					j = 0; +					while ( (clazz = classes[j++]) ) { +						if ( cur.indexOf( " " + clazz + " " ) < 0 ) { +							cur += clazz + " "; +						} +					} + +					// only assign if different to avoid unneeded rendering. +					finalValue = jQuery.trim( cur ); +					if ( elem.className !== finalValue ) { +						elem.className = finalValue; +					} +				} +			} +		} + +		return this; +	}, + +	removeClass: function( value ) { +		var classes, elem, cur, clazz, j, finalValue, +			i = 0, +			len = this.length, +			proceed = arguments.length === 0 || typeof value === "string" && value; + +		if ( jQuery.isFunction( value ) ) { +			return this.each(function( j ) { +				jQuery( this ).removeClass( value.call( this, j, this.className ) ); +			}); +		} +		if ( proceed ) { +			classes = ( value || "" ).match( rnotwhite ) || []; + +			for ( ; i < len; i++ ) { +				elem = this[ i ]; +				// This expression is here for better compressibility (see addClass) +				cur = elem.nodeType === 1 && ( elem.className ? +					( " " + elem.className + " " ).replace( rclass, " " ) : +					"" +				); + +				if ( cur ) { +					j = 0; +					while ( (clazz = classes[j++]) ) { +						// Remove *all* instances +						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { +							cur = cur.replace( " " + clazz + " ", " " ); +						} +					} + +					// only assign if different to avoid unneeded rendering. +					finalValue = value ? jQuery.trim( cur ) : ""; +					if ( elem.className !== finalValue ) { +						elem.className = finalValue; +					} +				} +			} +		} + +		return this; +	}, + +	toggleClass: function( value, stateVal ) { +		var type = typeof value; + +		if ( typeof stateVal === "boolean" && type === "string" ) { +			return stateVal ? this.addClass( value ) : this.removeClass( value ); +		} + +		if ( jQuery.isFunction( value ) ) { +			return this.each(function( i ) { +				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); +			}); +		} + +		return this.each(function() { +			if ( type === "string" ) { +				// toggle individual class names +				var className, +					i = 0, +					self = jQuery( this ), +					classNames = value.match( rnotwhite ) || []; + +				while ( (className = classNames[ i++ ]) ) { +					// check each className given, space separated list +					if ( self.hasClass( className ) ) { +						self.removeClass( className ); +					} else { +						self.addClass( className ); +					} +				} + +			// Toggle whole class name +			} else if ( type === strundefined || type === "boolean" ) { +				if ( this.className ) { +					// store className if set +					jQuery._data( this, "__className__", this.className ); +				} + +				// If the element has a class name or if we're passed "false", +				// then remove the whole classname (if there was one, the above saved it). +				// Otherwise bring back whatever was previously saved (if anything), +				// falling back to the empty string if nothing was stored. +				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";  			}  		}); +	}, -	} else if ( !traditional && jQuery.type( obj ) === "object" ) { -		// Serialize object item. -		for ( name in obj ) { -			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); +	hasClass: function( selector ) { +		var className = " " + selector + " ", +			i = 0, +			l = this.length; +		for ( ; i < l; i++ ) { +			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { +				return true; +			}  		} -	} else { -		// Serialize scalar item. -		add( prefix, obj ); +		return false;  	} -} +}); + + + + +// Return jQuery for attributes-only inclusion + + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + +	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + +	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + +	// Handle event binding +	jQuery.fn[ name ] = function( data, fn ) { +		return arguments.length > 0 ? +			this.on( name, null, data, fn ) : +			this.trigger( name ); +	}; +}); + +jQuery.fn.extend({ +	hover: function( fnOver, fnOut ) { +		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); +	}, + +	bind: function( types, data, fn ) { +		return this.on( types, null, data, fn ); +	}, +	unbind: function( types, fn ) { +		return this.off( types, null, fn ); +	}, + +	delegate: function( selector, types, data, fn ) { +		return this.on( types, selector, data, fn ); +	}, +	undelegate: function( selector, types, fn ) { +		// ( namespace ) or ( selector, types [, fn] ) +		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); +	} +}); + + +var nonce = jQuery.now(); + +var rquery = (/\?/); + + + +var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g; + +jQuery.parseJSON = function( data ) { +	// Attempt to parse using the native JSON parser first +	if ( window.JSON && window.JSON.parse ) { +		// Support: Android 2.3 +		// Workaround failure to string-cast null input +		return window.JSON.parse( data + "" ); +	} + +	var requireNonComma, +		depth = null, +		str = jQuery.trim( data + "" ); + +	// Guard against invalid (and possibly dangerous) input by ensuring that nothing remains +	// after removing valid tokens +	return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) { + +		// Force termination if we see a misplaced comma +		if ( requireNonComma && comma ) { +			depth = 0; +		} + +		// Perform no more replacements after returning to outermost depth +		if ( depth === 0 ) { +			return token; +		} + +		// Commas must not follow "[", "{", or "," +		requireNonComma = open || comma; + +		// Determine new depth +		// array/object open ("[" or "{"): depth += true - false (increment) +		// array/object close ("]" or "}"): depth += false - true (decrement) +		// other cases ("," or primitive): depth += true - true (numeric cast) +		depth += !close - !open; + +		// Remove this token +		return ""; +	}) ) ? +		( Function( "return " + str ) )() : +		jQuery.error( "Invalid JSON: " + data ); +}; + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { +	var xml, tmp; +	if ( !data || typeof data !== "string" ) { +		return null; +	} +	try { +		if ( window.DOMParser ) { // Standard +			tmp = new DOMParser(); +			xml = tmp.parseFromString( data, "text/xml" ); +		} else { // IE +			xml = new ActiveXObject( "Microsoft.XMLDOM" ); +			xml.async = "false"; +			xml.loadXML( data ); +		} +	} catch( e ) { +		xml = undefined; +	} +	if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { +		jQuery.error( "Invalid XML: " + data ); +	} +	return xml; +}; + +  var  	// Document location  	ajaxLocParts,  	ajaxLocation,  	rhash = /#.*$/, +	rts = /([?&])_=[^&]*/,  	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL  	// #7653, #8125, #8152: local protocol detection -	rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, +	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,  	rnoContent = /^(?:GET|HEAD)$/,  	rprotocol = /^\/\//, -	rquery = /\?/, -	rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, -	rts = /([?&])_=[^&]*/, -	rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, - -	// Keep a copy of the old load method -	_load = jQuery.fn.load, +	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,  	/* Prefilters  	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) @@ -7314,7 +8610,7 @@ var  	transports = {},  	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression -	allTypes = ["*/"] + ["*"]; +	allTypes = "*/".concat("*");  // #8138, IE may throw an exception when accessing  // a field from window.location if document.domain has been set @@ -7342,215 +8638,238 @@ function addToPrefiltersOrTransports( structure ) {  			dataTypeExpression = "*";  		} -		var dataType, list, placeBefore, -			dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ), +		var dataType,  			i = 0, -			length = dataTypes.length; +			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];  		if ( jQuery.isFunction( func ) ) {  			// For each dataType in the dataTypeExpression -			for ( ; i < length; i++ ) { -				dataType = dataTypes[ i ]; -				// We control if we're asked to add before -				// any existing element -				placeBefore = /^\+/.test( dataType ); -				if ( placeBefore ) { -					dataType = dataType.substr( 1 ) || "*"; +			while ( (dataType = dataTypes[i++]) ) { +				// Prepend if requested +				if ( dataType.charAt( 0 ) === "+" ) { +					dataType = dataType.slice( 1 ) || "*"; +					(structure[ dataType ] = structure[ dataType ] || []).unshift( func ); + +				// Otherwise append +				} else { +					(structure[ dataType ] = structure[ dataType ] || []).push( func );  				} -				list = structure[ dataType ] = structure[ dataType ] || []; -				// then we add to the structure accordingly -				list[ placeBefore ? "unshift" : "push" ]( func );  			}  		}  	};  }  // Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, -		dataType /* internal */, inspected /* internal */ ) { - -	dataType = dataType || options.dataTypes[ 0 ]; -	inspected = inspected || {}; +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { -	inspected[ dataType ] = true; +	var inspected = {}, +		seekingTransport = ( structure === transports ); -	var selection, -		list = structure[ dataType ], -		i = 0, -		length = list ? list.length : 0, -		executeOnly = ( structure === prefilters ); - -	for ( ; i < length && ( executeOnly || !selection ); i++ ) { -		selection = list[ i ]( options, originalOptions, jqXHR ); -		// If we got redirected to another dataType -		// we try there if executing only and not done already -		if ( typeof selection === "string" ) { -			if ( !executeOnly || inspected[ selection ] ) { -				selection = undefined; -			} else { -				options.dataTypes.unshift( selection ); -				selection = inspectPrefiltersOrTransports( -						structure, options, originalOptions, jqXHR, selection, inspected ); +	function inspect( dataType ) { +		var selected; +		inspected[ dataType ] = true; +		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { +			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); +			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { +				options.dataTypes.unshift( dataTypeOrTransport ); +				inspect( dataTypeOrTransport ); +				return false; +			} else if ( seekingTransport ) { +				return !( selected = dataTypeOrTransport );  			} -		} -	} -	// If we're only executing or nothing was selected -	// we try the catchall dataType if not done already -	if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { -		selection = inspectPrefiltersOrTransports( -				structure, options, originalOptions, jqXHR, "*", inspected ); +		}); +		return selected;  	} -	// unnecessary when only executing (prefilters) -	// but it'll be ignored by the caller in that case -	return selection; + +	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );  }  // A special extend for ajax options  // that takes "flat" options (not to be deep extended)  // Fixes #9887  function ajaxExtend( target, src ) { -	var key, deep, +	var deep, key,  		flatOptions = jQuery.ajaxSettings.flatOptions || {}; +  	for ( key in src ) {  		if ( src[ key ] !== undefined ) { -			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; +			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];  		}  	}  	if ( deep ) {  		jQuery.extend( true, target, deep );  	} + +	return target;  } -jQuery.fn.load = function( url, params, callback ) { -	if ( typeof url !== "string" && _load ) { -		return _load.apply( this, arguments ); -	} +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { +	var firstDataType, ct, finalDataType, type, +		contents = s.contents, +		dataTypes = s.dataTypes; -	// Don't do a request if no elements are being requested -	if ( !this.length ) { -		return this; +	// Remove auto dataType and get content-type in the process +	while ( dataTypes[ 0 ] === "*" ) { +		dataTypes.shift(); +		if ( ct === undefined ) { +			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); +		}  	} -	var selector, type, response, -		self = this, -		off = url.indexOf(" "); +	// Check if we're dealing with a known content-type +	if ( ct ) { +		for ( type in contents ) { +			if ( contents[ type ] && contents[ type ].test( ct ) ) { +				dataTypes.unshift( type ); +				break; +			} +		} +	} -	if ( off >= 0 ) { -		selector = url.slice( off, url.length ); -		url = url.slice( 0, off ); +	// Check to see if we have a response for the expected dataType +	if ( dataTypes[ 0 ] in responses ) { +		finalDataType = dataTypes[ 0 ]; +	} else { +		// Try convertible dataTypes +		for ( type in responses ) { +			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { +				finalDataType = type; +				break; +			} +			if ( !firstDataType ) { +				firstDataType = type; +			} +		} +		// Or just use first one +		finalDataType = finalDataType || firstDataType;  	} -	// If it's a function -	if ( jQuery.isFunction( params ) ) { +	// If we found a dataType +	// We add the dataType to the list if needed +	// and return the corresponding response +	if ( finalDataType ) { +		if ( finalDataType !== dataTypes[ 0 ] ) { +			dataTypes.unshift( finalDataType ); +		} +		return responses[ finalDataType ]; +	} +} -		// We assume that it's the callback -		callback = params; -		params = undefined; +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { +	var conv2, current, conv, tmp, prev, +		converters = {}, +		// Work with a copy of dataTypes in case we need to modify it for conversion +		dataTypes = s.dataTypes.slice(); -	// Otherwise, build a param string -	} else if ( params && typeof params === "object" ) { -		type = "POST"; +	// Create converters map with lowercased keys +	if ( dataTypes[ 1 ] ) { +		for ( conv in s.converters ) { +			converters[ conv.toLowerCase() ] = s.converters[ conv ]; +		}  	} -	// Request the remote document -	jQuery.ajax({ -		url: url, +	current = dataTypes.shift(); -		// if "type" variable is undefined, then "GET" method will be used -		type: type, -		dataType: "html", -		data: params, -		complete: function( jqXHR, status ) { -			if ( callback ) { -				self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); -			} +	// Convert to each sequential dataType +	while ( current ) { + +		if ( s.responseFields[ current ] ) { +			jqXHR[ s.responseFields[ current ] ] = response;  		} -	}).done(function( responseText ) { -		// Save response for use in complete callback -		response = arguments; +		// Apply the dataFilter if provided +		if ( !prev && isSuccess && s.dataFilter ) { +			response = s.dataFilter( response, s.dataType ); +		} -		// See if a selector was specified -		self.html( selector ? +		prev = current; +		current = dataTypes.shift(); -			// Create a dummy div to hold the results -			jQuery("<div>") +		if ( current ) { -				// inject the contents of the document in, removing the scripts -				// to avoid any 'Permission Denied' errors in IE -				.append( responseText.replace( rscript, "" ) ) +			// There's only work to do if current dataType is non-auto +			if ( current === "*" ) { -				// Locate the specified elements -				.find( selector ) : +				current = prev; -			// If not, just inject the full result -			responseText ); +			// Convert response if prev dataType is non-auto and differs from current +			} else if ( prev !== "*" && prev !== current ) { -	}); +				// Seek a direct converter +				conv = converters[ prev + " " + current ] || converters[ "* " + current ]; -	return this; -}; +				// If none found, seek a pair +				if ( !conv ) { +					for ( conv2 in converters ) { -// Attach a bunch of functions for handling common AJAX events -jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){ -	jQuery.fn[ o ] = function( f ){ -		return this.on( o, f ); -	}; -}); +						// If conv2 outputs current +						tmp = conv2.split( " " ); +						if ( tmp[ 1 ] === current ) { -jQuery.each( [ "get", "post" ], function( i, method ) { -	jQuery[ method ] = function( url, data, callback, type ) { -		// shift arguments if data argument was omitted -		if ( jQuery.isFunction( data ) ) { -			type = type || callback; -			callback = data; -			data = undefined; +							// If prev can be converted to accepted input +							conv = converters[ prev + " " + tmp[ 0 ] ] || +								converters[ "* " + tmp[ 0 ] ]; +							if ( conv ) { +								// Condense equivalence converters +								if ( conv === true ) { +									conv = converters[ conv2 ]; + +								// Otherwise, insert the intermediate dataType +								} else if ( converters[ conv2 ] !== true ) { +									current = tmp[ 0 ]; +									dataTypes.unshift( tmp[ 1 ] ); +								} +								break; +							} +						} +					} +				} + +				// Apply converter (if not an equivalence) +				if ( conv !== true ) { + +					// Unless errors are allowed to bubble, catch and return them +					if ( conv && s[ "throws" ] ) { +						response = conv( response ); +					} else { +						try { +							response = conv( response ); +						} catch ( e ) { +							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; +						} +					} +				} +			}  		} +	} -		return jQuery.ajax({ -			type: method, -			url: url, -			data: data, -			success: callback, -			dataType: type -		}); -	}; -}); +	return { state: "success", data: response }; +}  jQuery.extend({ -	getScript: function( url, callback ) { -		return jQuery.get( url, undefined, callback, "script" ); -	}, - -	getJSON: function( url, data, callback ) { -		return jQuery.get( url, data, callback, "json" ); -	}, +	// Counter for holding the number of active queries +	active: 0, -	// Creates a full fledged settings object into target -	// with both ajaxSettings and settings fields. -	// If target is omitted, writes into ajaxSettings. -	ajaxSetup: function( target, settings ) { -		if ( settings ) { -			// Building a settings object -			ajaxExtend( target, jQuery.ajaxSettings ); -		} else { -			// Extending ajaxSettings -			settings = target; -			target = jQuery.ajaxSettings; -		} -		ajaxExtend( target, settings ); -		return target; -	}, +	// Last-Modified header cache for next request +	lastModified: {}, +	etag: {},  	ajaxSettings: {  		url: ajaxLocation, +		type: "GET",  		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),  		global: true, -		type: "GET", -		contentType: "application/x-www-form-urlencoded; charset=UTF-8",  		processData: true,  		async: true, +		contentType: "application/x-www-form-urlencoded; charset=UTF-8",  		/*  		timeout: 0,  		data: null, @@ -7564,11 +8883,11 @@ jQuery.extend({  		*/  		accepts: { -			xml: "application/xml, text/xml", -			html: "text/html", +			"*": allTypes,  			text: "text/plain", -			json: "application/json, text/javascript", -			"*": allTypes +			html: "text/html", +			xml: "application/xml, text/xml", +			json: "application/json, text/javascript"  		},  		contents: { @@ -7579,16 +8898,16 @@ jQuery.extend({  		responseFields: {  			xml: "responseXML", -			text: "responseText" +			text: "responseText", +			json: "responseJSON"  		}, -		// List of data converters -		// 1) key format is "source_type destination_type" (a single space in-between) -		// 2) the catchall symbol "*" can be used for source_type +		// Data converters +		// Keys separate source (or catchall "*") and destination types with a single space  		converters: {  			// Convert anything to text -			"* text": window.String, +			"* text": String,  			// Text to html (true = no transformation)  			"text html": true, @@ -7605,11 +8924,24 @@ jQuery.extend({  		// and when you create one that shouldn't be  		// deep extended (see ajaxExtend)  		flatOptions: { -			context: true, -			url: true +			url: true, +			context: true  		}  	}, +	// Creates a full fledged settings object into target +	// with both ajaxSettings and settings fields. +	// If target is omitted, writes into ajaxSettings. +	ajaxSetup: function( target, settings ) { +		return settings ? + +			// Building a settings object +			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + +			// Extending ajaxSettings +			ajaxExtend( jQuery.ajaxSettings, target ); +	}, +  	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),  	ajaxTransport: addToPrefiltersOrTransports( transports ), @@ -7625,34 +8957,34 @@ jQuery.extend({  		// Force options to be an object  		options = options || {}; -		var // ifModified key -			ifModifiedKey, -			// Response headers +		var // Cross-domain detection vars +			parts, +			// Loop variable +			i, +			// URL without anti-cache param +			cacheURL, +			// Response headers as string  			responseHeadersString, -			responseHeaders, -			// transport -			transport,  			// timeout handle  			timeoutTimer, -			// Cross-domain detection vars -			parts, +  			// To know if global events are to be dispatched  			fireGlobals, -			// Loop variable -			i, + +			transport, +			// Response headers +			responseHeaders,  			// Create the final options object  			s = jQuery.ajaxSetup( {}, options ),  			// Callbacks context  			callbackContext = s.context || s, -			// Context for global events -			// It's the callbackContext if one was provided in the options -			// and if it's a DOM node or a jQuery collection -			globalEventContext = callbackContext !== s && -				( callbackContext.nodeType || callbackContext instanceof jQuery ) ? -						jQuery( callbackContext ) : jQuery.event, +			// Context for global events is callbackContext if it is a DOM node or jQuery collection +			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? +				jQuery( callbackContext ) : +				jQuery.event,  			// Deferreds  			deferred = jQuery.Deferred(), -			completeDeferred = jQuery.Callbacks( "once memory" ), +			completeDeferred = jQuery.Callbacks("once memory"),  			// Status-dependent callbacks  			statusCode = s.statusCode || {},  			// Headers (they are sent all at once) @@ -7664,37 +8996,36 @@ jQuery.extend({  			strAbort = "canceled",  			// Fake xhr  			jqXHR = { -  				readyState: 0, -				// Caches the header -				setRequestHeader: function( name, value ) { -					if ( !state ) { -						var lname = name.toLowerCase(); -						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; -						requestHeaders[ name ] = value; -					} -					return this; -				}, - -				// Raw string -				getAllResponseHeaders: function() { -					return state === 2 ? responseHeadersString : null; -				}, -  				// Builds headers hashtable if needed  				getResponseHeader: function( key ) {  					var match;  					if ( state === 2 ) {  						if ( !responseHeaders ) {  							responseHeaders = {}; -							while( ( match = rheaders.exec( responseHeadersString ) ) ) { +							while ( (match = rheaders.exec( responseHeadersString )) ) {  								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];  							}  						}  						match = responseHeaders[ key.toLowerCase() ];  					} -					return match === undefined ? null : match; +					return match == null ? null : match; +				}, + +				// Raw string +				getAllResponseHeaders: function() { +					return state === 2 ? responseHeadersString : null; +				}, + +				// Caches the header +				setRequestHeader: function( name, value ) { +					var lname = name.toLowerCase(); +					if ( !state ) { +						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; +						requestHeaders[ name ] = value; +					} +					return this;  				},  				// Overrides response content-type header @@ -7705,164 +9036,58 @@ jQuery.extend({  					return this;  				}, +				// Status-dependent callbacks +				statusCode: function( map ) { +					var code; +					if ( map ) { +						if ( state < 2 ) { +							for ( code in map ) { +								// Lazy-add the new callback in a way that preserves old ones +								statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; +							} +						} else { +							// Execute the appropriate callbacks +							jqXHR.always( map[ jqXHR.status ] ); +						} +					} +					return this; +				}, +  				// Cancel the request  				abort: function( statusText ) { -					statusText = statusText || strAbort; +					var finalText = statusText || strAbort;  					if ( transport ) { -						transport.abort( statusText ); +						transport.abort( finalText );  					} -					done( 0, statusText ); +					done( 0, finalText );  					return this;  				}  			}; -		// Callback for when everything is done -		// It is defined here because jslint complains if it is declared -		// at the end of the function (which would be more logical and readable) -		function done( status, nativeStatusText, responses, headers ) { -			var isSuccess, success, error, response, modified, -				statusText = nativeStatusText; - -			// Called once -			if ( state === 2 ) { -				return; -			} - -			// State is "done" now -			state = 2; - -			// Clear timeout if it exists -			if ( timeoutTimer ) { -				clearTimeout( timeoutTimer ); -			} - -			// Dereference transport for early garbage collection -			// (no matter how long the jqXHR object will be used) -			transport = undefined; - -			// Cache response headers -			responseHeadersString = headers || ""; - -			// Set readyState -			jqXHR.readyState = status > 0 ? 4 : 0; - -			// Get response data -			if ( responses ) { -				response = ajaxHandleResponses( s, jqXHR, responses ); -			} - -			// If successful, handle type chaining -			if ( status >= 200 && status < 300 || status === 304 ) { - -				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. -				if ( s.ifModified ) { - -					modified = jqXHR.getResponseHeader("Last-Modified"); -					if ( modified ) { -						jQuery.lastModified[ ifModifiedKey ] = modified; -					} -					modified = jqXHR.getResponseHeader("Etag"); -					if ( modified ) { -						jQuery.etag[ ifModifiedKey ] = modified; -					} -				} - -				// If not modified -				if ( status === 304 ) { - -					statusText = "notmodified"; -					isSuccess = true; - -				// If we have data -				} else { - -					isSuccess = ajaxConvert( s, response ); -					statusText = isSuccess.state; -					success = isSuccess.data; -					error = isSuccess.error; -					isSuccess = !error; -				} -			} else { -				// We extract error from statusText -				// then normalize statusText and status for non-aborts -				error = statusText; -				if ( !statusText || status ) { -					statusText = "error"; -					if ( status < 0 ) { -						status = 0; -					} -				} -			} - -			// Set data for the fake xhr object -			jqXHR.status = status; -			jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - -			// Success/Error -			if ( isSuccess ) { -				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); -			} else { -				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); -			} - -			// Status-dependent callbacks -			jqXHR.statusCode( statusCode ); -			statusCode = undefined; - -			if ( fireGlobals ) { -				globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), -						[ jqXHR, s, isSuccess ? success : error ] ); -			} - -			// Complete -			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - -			if ( fireGlobals ) { -				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); -				// Handle the global AJAX counter -				if ( !( --jQuery.active ) ) { -					jQuery.event.trigger( "ajaxStop" ); -				} -			} -		} -  		// Attach deferreds -		deferred.promise( jqXHR ); +		deferred.promise( jqXHR ).complete = completeDeferred.add;  		jqXHR.success = jqXHR.done;  		jqXHR.error = jqXHR.fail; -		jqXHR.complete = completeDeferred.add; - -		// Status-dependent callbacks -		jqXHR.statusCode = function( map ) { -			if ( map ) { -				var tmp; -				if ( state < 2 ) { -					for ( tmp in map ) { -						statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; -					} -				} else { -					tmp = map[ jqXHR.status ]; -					jqXHR.always( tmp ); -				} -			} -			return this; -		};  		// Remove hash character (#7531: and string promotion)  		// Add protocol if not provided (#5866: IE7 issue with protocol-less urls) +		// Handle falsy url in the settings object (#10093: consistency with old signature)  		// We also use the url parameter if available -		s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); +		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); + +		// Alias method option to type as per ticket #12004 +		s.type = options.method || options.type || s.method || s.type;  		// Extract dataTypes list -		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace ); +		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];  		// A cross-domain request is in order when we have a protocol:host:port mismatch  		if ( s.crossDomain == null ) {  			parts = rurl.exec( s.url.toLowerCase() );  			s.crossDomain = !!( parts &&  				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || -					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != -						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) +					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== +						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )  			);  		} @@ -7882,58 +9107,58 @@ jQuery.extend({  		// We can fire global events as of now if asked to  		fireGlobals = s.global; +		// Watch for a new set of requests +		if ( fireGlobals && jQuery.active++ === 0 ) { +			jQuery.event.trigger("ajaxStart"); +		} +  		// Uppercase the type  		s.type = s.type.toUpperCase();  		// Determine if request has content  		s.hasContent = !rnoContent.test( s.type ); -		// Watch for a new set of requests -		if ( fireGlobals && jQuery.active++ === 0 ) { -			jQuery.event.trigger( "ajaxStart" ); -		} +		// Save the URL in case we're toying with the If-Modified-Since +		// and/or If-None-Match header later on +		cacheURL = s.url;  		// More options handling for requests with no content  		if ( !s.hasContent ) {  			// If data is available, append data to url  			if ( s.data ) { -				s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; +				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );  				// #9682: remove data so that it's not used in an eventual retry  				delete s.data;  			} -			// Get ifModifiedKey before adding the anti-cache parameter -			ifModifiedKey = s.url; -  			// Add anti-cache in url if needed  			if ( s.cache === false ) { +				s.url = rts.test( cacheURL ) ? -				var ts = jQuery.now(), -					// try replacing _= if it is there -					ret = s.url.replace( rts, "$1_=" + ts ); +					// If there is already a '_' parameter, set its value +					cacheURL.replace( rts, "$1_=" + nonce++ ) : -				// if nothing was replaced, add timestamp to the end -				s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); +					// Otherwise add one to the end +					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;  			}  		} -		// Set the correct header, if data is being sent -		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { -			jqXHR.setRequestHeader( "Content-Type", s.contentType ); -		} -  		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.  		if ( s.ifModified ) { -			ifModifiedKey = ifModifiedKey || s.url; -			if ( jQuery.lastModified[ ifModifiedKey ] ) { -				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); +			if ( jQuery.lastModified[ cacheURL ] ) { +				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );  			} -			if ( jQuery.etag[ ifModifiedKey ] ) { -				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); +			if ( jQuery.etag[ cacheURL ] ) { +				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );  			}  		} +		// Set the correct header, if data is being sent +		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { +			jqXHR.setRequestHeader( "Content-Type", s.contentType ); +		} +  		// Set the Accepts header for the server, depending on the dataType  		jqXHR.setRequestHeader(  			"Accept", @@ -7949,9 +9174,8 @@ jQuery.extend({  		// Allow custom headers/mimetypes and early abort  		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { -				// Abort if not done already and return -				return jqXHR.abort(); - +			// Abort if not done already and return +			return jqXHR.abort();  		}  		// aborting is no longer a cancellation @@ -7970,21 +9194,22 @@ jQuery.extend({  			done( -1, "No Transport" );  		} else {  			jqXHR.readyState = 1; +  			// Send global event  			if ( fireGlobals ) {  				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );  			}  			// Timeout  			if ( s.async && s.timeout > 0 ) { -				timeoutTimer = setTimeout( function(){ -					jqXHR.abort( "timeout" ); +				timeoutTimer = setTimeout(function() { +					jqXHR.abort("timeout");  				}, s.timeout );  			}  			try {  				state = 1;  				transport.send( requestHeaders, done ); -			} catch (e) { +			} catch ( e ) {  				// Propagate exception as error if not done  				if ( state < 2 ) {  					done( -1, e ); @@ -7995,421 +9220,422 @@ jQuery.extend({  			}  		} -		return jqXHR; -	}, - -	// Counter for holding the number of active queries -	active: 0, +		// Callback for when everything is done +		function done( status, nativeStatusText, responses, headers ) { +			var isSuccess, success, error, response, modified, +				statusText = nativeStatusText; -	// Last-Modified header cache for next request -	lastModified: {}, -	etag: {} +			// Called once +			if ( state === 2 ) { +				return; +			} -}); +			// State is "done" now +			state = 2; -/* Handles responses to an ajax request: - * - sets all responseXXX fields accordingly - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { +			// Clear timeout if it exists +			if ( timeoutTimer ) { +				clearTimeout( timeoutTimer ); +			} -	var ct, type, finalDataType, firstDataType, -		contents = s.contents, -		dataTypes = s.dataTypes, -		responseFields = s.responseFields; +			// Dereference transport for early garbage collection +			// (no matter how long the jqXHR object will be used) +			transport = undefined; -	// Fill responseXXX fields -	for ( type in responseFields ) { -		if ( type in responses ) { -			jqXHR[ responseFields[type] ] = responses[ type ]; -		} -	} +			// Cache response headers +			responseHeadersString = headers || ""; -	// Remove auto dataType and get content-type in the process -	while( dataTypes[ 0 ] === "*" ) { -		dataTypes.shift(); -		if ( ct === undefined ) { -			ct = s.mimeType || jqXHR.getResponseHeader( "content-type" ); -		} -	} +			// Set readyState +			jqXHR.readyState = status > 0 ? 4 : 0; -	// Check if we're dealing with a known content-type -	if ( ct ) { -		for ( type in contents ) { -			if ( contents[ type ] && contents[ type ].test( ct ) ) { -				dataTypes.unshift( type ); -				break; -			} -		} -	} +			// Determine if successful +			isSuccess = status >= 200 && status < 300 || status === 304; -	// Check to see if we have a response for the expected dataType -	if ( dataTypes[ 0 ] in responses ) { -		finalDataType = dataTypes[ 0 ]; -	} else { -		// Try convertible dataTypes -		for ( type in responses ) { -			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { -				finalDataType = type; -				break; -			} -			if ( !firstDataType ) { -				firstDataType = type; +			// Get response data +			if ( responses ) { +				response = ajaxHandleResponses( s, jqXHR, responses );  			} -		} -		// Or just use first one -		finalDataType = finalDataType || firstDataType; -	} - -	// If we found a dataType -	// We add the dataType to the list if needed -	// and return the corresponding response -	if ( finalDataType ) { -		if ( finalDataType !== dataTypes[ 0 ] ) { -			dataTypes.unshift( finalDataType ); -		} -		return responses[ finalDataType ]; -	} -} - -// Chain conversions given the request and the original response -function ajaxConvert( s, response ) { -	var conv, conv2, current, tmp, -		// Work with a copy of dataTypes in case we need to modify it for conversion -		dataTypes = s.dataTypes.slice(), -		prev = dataTypes[ 0 ], -		converters = {}, -		i = 0; +			// Convert no matter what (that way responseXXX fields are always set) +			response = ajaxConvert( s, response, jqXHR, isSuccess ); -	// Apply the dataFilter if provided -	if ( s.dataFilter ) { -		response = s.dataFilter( response, s.dataType ); -	} +			// If successful, handle type chaining +			if ( isSuccess ) { -	// Create converters map with lowercased keys -	if ( dataTypes[ 1 ] ) { -		for ( conv in s.converters ) { -			converters[ conv.toLowerCase() ] = s.converters[ conv ]; -		} -	} +				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. +				if ( s.ifModified ) { +					modified = jqXHR.getResponseHeader("Last-Modified"); +					if ( modified ) { +						jQuery.lastModified[ cacheURL ] = modified; +					} +					modified = jqXHR.getResponseHeader("etag"); +					if ( modified ) { +						jQuery.etag[ cacheURL ] = modified; +					} +				} -	// Convert to each sequential dataType, tolerating list modification -	for ( ; (current = dataTypes[++i]); ) { +				// if no content +				if ( status === 204 || s.type === "HEAD" ) { +					statusText = "nocontent"; -		// There's only work to do if current dataType is non-auto -		if ( current !== "*" ) { +				// if not modified +				} else if ( status === 304 ) { +					statusText = "notmodified"; -			// Convert response if prev dataType is non-auto and differs from current -			if ( prev !== "*" && prev !== current ) { +				// If we have data, let's convert it +				} else { +					statusText = response.state; +					success = response.data; +					error = response.error; +					isSuccess = !error; +				} +			} else { +				// We extract error from statusText +				// then normalize statusText and status for non-aborts +				error = statusText; +				if ( status || !statusText ) { +					statusText = "error"; +					if ( status < 0 ) { +						status = 0; +					} +				} +			} -				// Seek a direct converter -				conv = converters[ prev + " " + current ] || converters[ "* " + current ]; +			// Set data for the fake xhr object +			jqXHR.status = status; +			jqXHR.statusText = ( nativeStatusText || statusText ) + ""; -				// If none found, seek a pair -				if ( !conv ) { -					for ( conv2 in converters ) { +			// Success/Error +			if ( isSuccess ) { +				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); +			} else { +				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); +			} -						// If conv2 outputs current -						tmp = conv2.split(" "); -						if ( tmp[ 1 ] === current ) { +			// Status-dependent callbacks +			jqXHR.statusCode( statusCode ); +			statusCode = undefined; -							// If prev can be converted to accepted input -							conv = converters[ prev + " " + tmp[ 0 ] ] || -								converters[ "* " + tmp[ 0 ] ]; -							if ( conv ) { -								// Condense equivalence converters -								if ( conv === true ) { -									conv = converters[ conv2 ]; +			if ( fireGlobals ) { +				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", +					[ jqXHR, s, isSuccess ? success : error ] ); +			} -								// Otherwise, insert the intermediate dataType -								} else if ( converters[ conv2 ] !== true ) { -									current = tmp[ 0 ]; -									dataTypes.splice( i--, 0, current ); -								} +			// Complete +			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); -								break; -							} -						} -					} +			if ( fireGlobals ) { +				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); +				// Handle the global AJAX counter +				if ( !( --jQuery.active ) ) { +					jQuery.event.trigger("ajaxStop");  				} +			} +		} -				// Apply converter (if not an equivalence) -				if ( conv !== true ) { +		return jqXHR; +	}, -					// Unless errors are allowed to bubble, catch and return them -					if ( conv && s["throws"] ) { -						response = conv( response ); -					} else { -						try { -							response = conv( response ); -						} catch ( e ) { -							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; -						} -					} -				} -			} +	getJSON: function( url, data, callback ) { +		return jQuery.get( url, data, callback, "json" ); +	}, -			// Update prev for next iteration -			prev = current; -		} +	getScript: function( url, callback ) { +		return jQuery.get( url, undefined, callback, "script" );  	} +}); -	return { state: "success", data: response }; -} -var oldCallbacks = [], -	rquestion = /\?/, -	rjsonp = /(=)\?(?=&|$)|\?\?/, -	nonce = jQuery.now(); +jQuery.each( [ "get", "post" ], function( i, method ) { +	jQuery[ method ] = function( url, data, callback, type ) { +		// shift arguments if data argument was omitted +		if ( jQuery.isFunction( data ) ) { +			type = type || callback; +			callback = data; +			data = undefined; +		} -// Default jsonp settings -jQuery.ajaxSetup({ -	jsonp: "callback", -	jsonpCallback: function() { -		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); -		this[ callback ] = true; -		return callback; -	} +		return jQuery.ajax({ +			url: url, +			type: method, +			dataType: type, +			data: data, +			success: callback +		}); +	};  }); -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { +// Attach a bunch of functions for handling common AJAX events +jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { +	jQuery.fn[ type ] = function( fn ) { +		return this.on( type, fn ); +	}; +}); -	var callbackName, overwritten, responseContainer, -		data = s.data, -		url = s.url, -		hasCallback = s.jsonp !== false, -		replaceInUrl = hasCallback && rjsonp.test( url ), -		replaceInData = hasCallback && !replaceInUrl && typeof data === "string" && -			!( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && -			rjsonp.test( data ); -	// Handle iff the expected data type is "jsonp" or we have a parameter to set -	if ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) { +jQuery._evalUrl = function( url ) { +	return jQuery.ajax({ +		url: url, +		type: "GET", +		dataType: "script", +		async: false, +		global: false, +		"throws": true +	}); +}; -		// Get callback name, remembering preexisting value associated with it -		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? -			s.jsonpCallback() : -			s.jsonpCallback; -		overwritten = window[ callbackName ]; -		// Insert callback into url or form data -		if ( replaceInUrl ) { -			s.url = url.replace( rjsonp, "$1" + callbackName ); -		} else if ( replaceInData ) { -			s.data = data.replace( rjsonp, "$1" + callbackName ); -		} else if ( hasCallback ) { -			s.url += ( rquestion.test( url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; +jQuery.fn.extend({ +	wrapAll: function( html ) { +		if ( jQuery.isFunction( html ) ) { +			return this.each(function(i) { +				jQuery(this).wrapAll( html.call(this, i) ); +			});  		} -		// Use data converter to retrieve json after script execution -		s.converters["script json"] = function() { -			if ( !responseContainer ) { -				jQuery.error( callbackName + " was not called" ); +		if ( this[0] ) { +			// The elements to wrap the target around +			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + +			if ( this[0].parentNode ) { +				wrap.insertBefore( this[0] );  			} -			return responseContainer[ 0 ]; -		}; -		// force json dataType -		s.dataTypes[ 0 ] = "json"; +			wrap.map(function() { +				var elem = this; -		// Install callback -		window[ callbackName ] = function() { -			responseContainer = arguments; -		}; +				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { +					elem = elem.firstChild; +				} -		// Clean-up function (fires after converters) -		jqXHR.always(function() { -			// Restore preexisting value -			window[ callbackName ] = overwritten; +				return elem; +			}).append( this ); +		} -			// Save back as free -			if ( s[ callbackName ] ) { -				// make sure that re-using the options doesn't screw things around -				s.jsonpCallback = originalSettings.jsonpCallback; +		return this; +	}, -				// save the callback name for future use -				oldCallbacks.push( callbackName ); -			} +	wrapInner: function( html ) { +		if ( jQuery.isFunction( html ) ) { +			return this.each(function(i) { +				jQuery(this).wrapInner( html.call(this, i) ); +			}); +		} -			// Call if it was a function and we have a response -			if ( responseContainer && jQuery.isFunction( overwritten ) ) { -				overwritten( responseContainer[ 0 ] ); -			} +		return this.each(function() { +			var self = jQuery( this ), +				contents = self.contents(); -			responseContainer = overwritten = undefined; -		}); +			if ( contents.length ) { +				contents.wrapAll( html ); -		// Delegate to script -		return "script"; -	} -}); -// Install script dataType -jQuery.ajaxSetup({ -	accepts: { -		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" +			} else { +				self.append( html ); +			} +		});  	}, -	contents: { -		script: /javascript|ecmascript/ + +	wrap: function( html ) { +		var isFunction = jQuery.isFunction( html ); + +		return this.each(function(i) { +			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); +		});  	}, -	converters: { -		"text script": function( text ) { -			jQuery.globalEval( text ); -			return text; -		} -	} -}); -// Handle cache's special case and global -jQuery.ajaxPrefilter( "script", function( s ) { -	if ( s.cache === undefined ) { -		s.cache = false; -	} -	if ( s.crossDomain ) { -		s.type = "GET"; -		s.global = false; +	unwrap: function() { +		return this.parent().each(function() { +			if ( !jQuery.nodeName( this, "body" ) ) { +				jQuery( this ).replaceWith( this.childNodes ); +			} +		}).end();  	}  }); -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function(s) { -	// This transport only deals with cross domain requests -	if ( s.crossDomain ) { +jQuery.expr.filters.hidden = function( elem ) { +	// Support: Opera <= 12.12 +	// Opera reports offsetWidths and offsetHeights less than zero on some elements +	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || +		(!support.reliableHiddenOffsets() && +			((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none"); +}; -		var script, -			head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; +jQuery.expr.filters.visible = function( elem ) { +	return !jQuery.expr.filters.hidden( elem ); +}; -		return { -			send: function( _, callback ) { -				script = document.createElement( "script" ); -				script.async = "async"; +var r20 = /%20/g, +	rbracket = /\[\]$/, +	rCRLF = /\r?\n/g, +	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, +	rsubmittable = /^(?:input|select|textarea|keygen)/i; -				if ( s.scriptCharset ) { -					script.charset = s.scriptCharset; -				} +function buildParams( prefix, obj, traditional, add ) { +	var name; -				script.src = s.url; +	if ( jQuery.isArray( obj ) ) { +		// Serialize array item. +		jQuery.each( obj, function( i, v ) { +			if ( traditional || rbracket.test( prefix ) ) { +				// Treat each array item as a scalar. +				add( prefix, v ); -				// Attach handlers for all browsers -				script.onload = script.onreadystatechange = function( _, isAbort ) { +			} else { +				// Item is non-scalar (array or object), encode its numeric index. +				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); +			} +		}); -					if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { +	} else if ( !traditional && jQuery.type( obj ) === "object" ) { +		// Serialize object item. +		for ( name in obj ) { +			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); +		} -						// Handle memory leak in IE -						script.onload = script.onreadystatechange = null; +	} else { +		// Serialize scalar item. +		add( prefix, obj ); +	} +} -						// Remove the script -						if ( head && script.parentNode ) { -							head.removeChild( script ); -						} +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { +	var prefix, +		s = [], +		add = function( key, value ) { +			// If value is a function, invoke it and return its value +			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); +			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); +		}; -						// Dereference the script -						script = undefined; +	// Set traditional to true for jQuery <= 1.3.2 behavior. +	if ( traditional === undefined ) { +		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; +	} -						// Callback if not abort -						if ( !isAbort ) { -							callback( 200, "success" ); -						} -					} -				}; -				// Use insertBefore instead of appendChild  to circumvent an IE6 bug. -				// This arises when a base node is used (#2709 and #4378). -				head.insertBefore( script, head.firstChild ); -			}, +	// If an array was passed in, assume that it is an array of form elements. +	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { +		// Serialize the form elements +		jQuery.each( a, function() { +			add( this.name, this.value ); +		}); -			abort: function() { -				if ( script ) { -					script.onload( 0, 1 ); -				} -			} -		}; -	} -}); -var xhrCallbacks, -	// #5280: Internet Explorer will keep connections alive if we don't abort on unload -	xhrOnUnloadAbort = window.ActiveXObject ? function() { -		// Abort all pending requests -		for ( var key in xhrCallbacks ) { -			xhrCallbacks[ key ]( 0, 1 ); +	} else { +		// If traditional, encode the "old" way (the way 1.3.2 or older +		// did it), otherwise encode params recursively. +		for ( prefix in a ) { +			buildParams( prefix, a[ prefix ], traditional, add );  		} -	} : false, -	xhrId = 0; +	} -// Functions to create xhrs -function createStandardXHR() { -	try { -		return new window.XMLHttpRequest(); -	} catch( e ) {} -} +	// Return the resulting serialization +	return s.join( "&" ).replace( r20, "+" ); +}; + +jQuery.fn.extend({ +	serialize: function() { +		return jQuery.param( this.serializeArray() ); +	}, +	serializeArray: function() { +		return this.map(function() { +			// Can add propHook for "elements" to filter or add form elements +			var elements = jQuery.prop( this, "elements" ); +			return elements ? jQuery.makeArray( elements ) : this; +		}) +		.filter(function() { +			var type = this.type; +			// Use .is(":disabled") so that fieldset[disabled] works +			return this.name && !jQuery( this ).is( ":disabled" ) && +				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && +				( this.checked || !rcheckableType.test( type ) ); +		}) +		.map(function( i, elem ) { +			var val = jQuery( this ).val(); + +			return val == null ? +				null : +				jQuery.isArray( val ) ? +					jQuery.map( val, function( val ) { +						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; +					}) : +					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; +		}).get(); +	} +}); -function createActiveXHR() { -	try { -		return new window.ActiveXObject( "Microsoft.XMLHTTP" ); -	} catch( e ) {} -}  // Create the request object  // (This is still attached to ajaxSettings for backward compatibility) -jQuery.ajaxSettings.xhr = window.ActiveXObject ? -	/* Microsoft failed to properly -	 * implement the XMLHttpRequest in IE7 (can't request local files), -	 * so we use the ActiveXObject when it is available -	 * Additionally XMLHttpRequest can be disabled in IE7/IE8 so -	 * we need a fallback. -	 */ +jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ? +	// Support: IE6+  	function() { -		return !this.isLocal && createStandardXHR() || createActiveXHR(); + +		// XHR cannot access local files, always use ActiveX for that case +		return !this.isLocal && + +			// Support: IE7-8 +			// oldIE XHR does not support non-RFC2616 methods (#13240) +			// See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx +			// and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9 +			// Although this check for six methods instead of eight +			// since IE also does not support "trace" and "connect" +			/^(get|post|head|put|delete|options)$/i.test( this.type ) && + +			createStandardXHR() || createActiveXHR();  	} :  	// For all other browsers, use the standard XMLHttpRequest object  	createStandardXHR; -// Determine support properties -(function( xhr ) { -	jQuery.extend( jQuery.support, { -		ajax: !!xhr, -		cors: !!xhr && ( "withCredentials" in xhr ) +var xhrId = 0, +	xhrCallbacks = {}, +	xhrSupported = jQuery.ajaxSettings.xhr(); + +// Support: IE<10 +// Open requests must be manually aborted on unload (#5280) +if ( window.ActiveXObject ) { +	jQuery( window ).on( "unload", function() { +		for ( var key in xhrCallbacks ) { +			xhrCallbacks[ key ]( undefined, true ); +		}  	}); -})( jQuery.ajaxSettings.xhr() ); +} + +// Determine support properties +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +xhrSupported = support.ajax = !!xhrSupported;  // Create transport if the browser can provide an xhr -if ( jQuery.support.ajax ) { +if ( xhrSupported ) { -	jQuery.ajaxTransport(function( s ) { +	jQuery.ajaxTransport(function( options ) {  		// Cross domain only allowed if supported through XMLHttpRequest -		if ( !s.crossDomain || jQuery.support.cors ) { +		if ( !options.crossDomain || support.cors ) {  			var callback;  			return {  				send: function( headers, complete ) { - -					// Get a new xhr -					var handle, i, -						xhr = s.xhr(); +					var i, +						xhr = options.xhr(), +						id = ++xhrId;  					// Open the socket -					// Passing null username, generates a login popup on Opera (#2865) -					if ( s.username ) { -						xhr.open( s.type, s.url, s.async, s.username, s.password ); -					} else { -						xhr.open( s.type, s.url, s.async ); -					} +					xhr.open( options.type, options.url, options.async, options.username, options.password );  					// Apply custom fields if provided -					if ( s.xhrFields ) { -						for ( i in s.xhrFields ) { -							xhr[ i ] = s.xhrFields[ i ]; +					if ( options.xhrFields ) { +						for ( i in options.xhrFields ) { +							xhr[ i ] = options.xhrFields[ i ];  						}  					}  					// Override mime type if needed -					if ( s.mimeType && xhr.overrideMimeType ) { -						xhr.overrideMimeType( s.mimeType ); +					if ( options.mimeType && xhr.overrideMimeType ) { +						xhr.overrideMimeType( options.mimeType );  					}  					// X-Requested-With header @@ -8417,888 +9643,434 @@ if ( jQuery.support.ajax ) {  					// akin to a jigsaw puzzle, we simply never set it to be sure.  					// (it can always be set on a per-request basis or even using ajaxSetup)  					// For same-domain requests, won't change header if already provided. -					if ( !s.crossDomain && !headers["X-Requested-With"] ) { -						headers[ "X-Requested-With" ] = "XMLHttpRequest"; +					if ( !options.crossDomain && !headers["X-Requested-With"] ) { +						headers["X-Requested-With"] = "XMLHttpRequest";  					} -					// Need an extra try/catch for cross domain requests in Firefox 3 -					try { -						for ( i in headers ) { -							xhr.setRequestHeader( i, headers[ i ] ); +					// Set headers +					for ( i in headers ) { +						// Support: IE<9 +						// IE's ActiveXObject throws a 'Type Mismatch' exception when setting +						// request header to a null-value. +						// +						// To keep consistent with other XHR implementations, cast the value +						// to string and ignore `undefined`. +						if ( headers[ i ] !== undefined ) { +							xhr.setRequestHeader( i, headers[ i ] + "" );  						} -					} catch( _ ) {} +					}  					// Do send the request  					// This may raise an exception which is actually  					// handled in jQuery.ajax (so no try/catch here) -					xhr.send( ( s.hasContent && s.data ) || null ); +					xhr.send( ( options.hasContent && options.data ) || null );  					// Listener  					callback = function( _, isAbort ) { +						var status, statusText, responses; -						var status, -							statusText, -							responseHeaders, -							responses, -							xml; - -						// Firefox throws exceptions when accessing properties -						// of an xhr when a network error occurred -						// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) -						try { - -							// Was never called and is aborted or complete -							if ( callback && ( isAbort || xhr.readyState === 4 ) ) { +						// Was never called and is aborted or complete +						if ( callback && ( isAbort || xhr.readyState === 4 ) ) { +							// Clean up +							delete xhrCallbacks[ id ]; +							callback = undefined; +							xhr.onreadystatechange = jQuery.noop; -								// Only called once -								callback = undefined; - -								// Do not keep as active anymore -								if ( handle ) { -									xhr.onreadystatechange = jQuery.noop; -									if ( xhrOnUnloadAbort ) { -										delete xhrCallbacks[ handle ]; -									} +							// Abort manually if needed +							if ( isAbort ) { +								if ( xhr.readyState !== 4 ) { +									xhr.abort();  								} +							} else { +								responses = {}; +								status = xhr.status; -								// If it's an abort -								if ( isAbort ) { -									// Abort it manually if needed -									if ( xhr.readyState !== 4 ) { -										xhr.abort(); -									} -								} else { -									status = xhr.status; -									responseHeaders = xhr.getAllResponseHeaders(); -									responses = {}; -									xml = xhr.responseXML; - -									// Construct response list -									if ( xml && xml.documentElement /* #4958 */ ) { -										responses.xml = xml; -									} - -									// When requesting binary data, IE6-9 will throw an exception -									// on any attempt to access responseText (#11426) -									try { -										responses.text = xhr.responseText; -									} catch( e ) { -									} +								// Support: IE<10 +								// Accessing binary-data responseText throws an exception +								// (#11426) +								if ( typeof xhr.responseText === "string" ) { +									responses.text = xhr.responseText; +								} -									// Firefox throws an exception when accessing -									// statusText for faulty cross-domain requests -									try { -										statusText = xhr.statusText; -									} catch( e ) { -										// We normalize with Webkit giving an empty statusText -										statusText = ""; -									} +								// Firefox throws an exception when accessing +								// statusText for faulty cross-domain requests +								try { +									statusText = xhr.statusText; +								} catch( e ) { +									// We normalize with Webkit giving an empty statusText +									statusText = ""; +								} -									// Filter status for non standard behaviors +								// Filter status for non standard behaviors -									// If the request is local and we have data: assume a success -									// (success with no data won't get notified, that's the best we -									// can do given current implementations) -									if ( !status && s.isLocal && !s.crossDomain ) { -										status = responses.text ? 200 : 404; -									// IE - #1450: sometimes returns 1223 when it should be 204 -									} else if ( status === 1223 ) { -										status = 204; -									} +								// If the request is local and we have data: assume a success +								// (success with no data won't get notified, that's the best we +								// can do given current implementations) +								if ( !status && options.isLocal && !options.crossDomain ) { +									status = responses.text ? 200 : 404; +								// IE - #1450: sometimes returns 1223 when it should be 204 +								} else if ( status === 1223 ) { +									status = 204;  								}  							} -						} catch( firefoxAccessException ) { -							if ( !isAbort ) { -								complete( -1, firefoxAccessException ); -							}  						}  						// Call complete if needed  						if ( responses ) { -							complete( status, statusText, responses, responseHeaders ); +							complete( status, statusText, responses, xhr.getAllResponseHeaders() );  						}  					}; -					if ( !s.async ) { +					if ( !options.async ) {  						// if we're in sync mode we fire the callback  						callback();  					} else if ( xhr.readyState === 4 ) {  						// (IE6 & IE7) if it's in cache and has been  						// retrieved directly we need to fire the callback -						setTimeout( callback, 0 ); +						setTimeout( callback );  					} else { -						handle = ++xhrId; -						if ( xhrOnUnloadAbort ) { -							// Create the active xhrs callbacks list if needed -							// and attach the unload handler -							if ( !xhrCallbacks ) { -								xhrCallbacks = {}; -								jQuery( window ).unload( xhrOnUnloadAbort ); -							} -							// Add to list of active xhrs callbacks -							xhrCallbacks[ handle ] = callback; -						} -						xhr.onreadystatechange = callback; +						// Add to the list of active xhr callbacks +						xhr.onreadystatechange = xhrCallbacks[ id ] = callback;  					}  				},  				abort: function() {  					if ( callback ) { -						callback(0,1); +						callback( undefined, true );  					}  				}  			};  		}  	});  } -var fxNow, timerId, -	rfxtypes = /^(?:toggle|show|hide)$/, -	rfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ), -	rrun = /queueHooks$/, -	animationPrefilters = [ defaultPrefilter ], -	tweeners = { -		"*": [function( prop, value ) { -			var end, unit, -				tween = this.createTween( prop, value ), -				parts = rfxnum.exec( value ), -				target = tween.cur(), -				start = +target || 0, -				scale = 1, -				maxIterations = 20; - -			if ( parts ) { -				end = +parts[2]; -				unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - -				// We need to compute starting value -				if ( unit !== "px" && start ) { -					// Iteratively approximate from a nonzero starting point -					// Prefer the current property, because this process will be trivial if it uses the same units -					// Fallback to end or a simple constant -					start = jQuery.css( tween.elem, prop, true ) || end || 1; - -					do { -						// If previous iteration zeroed out, double until we get *something* -						// Use a string for doubling factor so we don't accidentally see scale as unchanged below -						scale = scale || ".5"; - -						// Adjust and apply -						start = start / scale; -						jQuery.style( tween.elem, prop, start + unit ); -					// Update scale, tolerating zero or NaN from tween.cur() -					// And breaking the loop if scale is unchanged or perfect, or if we've just had enough -					} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); -				} - -				tween.unit = unit; -				tween.start = start; -				// If a +=/-= token was provided, we're doing a relative animation -				tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end; -			} -			return tween; -		}] -	}; - -// Animations created synchronously will run synchronously -function createFxNow() { -	setTimeout(function() { -		fxNow = undefined; -	}, 0 ); -	return ( fxNow = jQuery.now() ); +// Functions to create xhrs +function createStandardXHR() { +	try { +		return new window.XMLHttpRequest(); +	} catch( e ) {}  } -function createTweens( animation, props ) { -	jQuery.each( props, function( prop, value ) { -		var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), -			index = 0, -			length = collection.length; -		for ( ; index < length; index++ ) { -			if ( collection[ index ].call( animation, prop, value ) ) { - -				// we're done with this property -				return; -			} -		} -	}); +function createActiveXHR() { +	try { +		return new window.ActiveXObject( "Microsoft.XMLHTTP" ); +	} catch( e ) {}  } -function Animation( elem, properties, options ) { -	var result, -		index = 0, -		tweenerIndex = 0, -		length = animationPrefilters.length, -		deferred = jQuery.Deferred().always( function() { -			// don't match elem in the :animated selector -			delete tick.elem; -		}), -		tick = function() { -			var currentTime = fxNow || createFxNow(), -				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), -				// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497) -				temp = remaining / animation.duration || 0, -				percent = 1 - temp, -				index = 0, -				length = animation.tweens.length; - -			for ( ; index < length ; index++ ) { -				animation.tweens[ index ].run( percent ); -			} - -			deferred.notifyWith( elem, [ animation, percent, remaining ]); - -			if ( percent < 1 && length ) { -				return remaining; -			} else { -				deferred.resolveWith( elem, [ animation ] ); -				return false; -			} -		}, -		animation = deferred.promise({ -			elem: elem, -			props: jQuery.extend( {}, properties ), -			opts: jQuery.extend( true, { specialEasing: {} }, options ), -			originalProperties: properties, -			originalOptions: options, -			startTime: fxNow || createFxNow(), -			duration: options.duration, -			tweens: [], -			createTween: function( prop, end, easing ) { -				var tween = jQuery.Tween( elem, animation.opts, prop, end, -						animation.opts.specialEasing[ prop ] || animation.opts.easing ); -				animation.tweens.push( tween ); -				return tween; -			}, -			stop: function( gotoEnd ) { -				var index = 0, -					// if we are going to the end, we want to run all the tweens -					// otherwise we skip this part -					length = gotoEnd ? animation.tweens.length : 0; - -				for ( ; index < length ; index++ ) { -					animation.tweens[ index ].run( 1 ); -				} -				// resolve when we played the last frame -				// otherwise, reject -				if ( gotoEnd ) { -					deferred.resolveWith( elem, [ animation, gotoEnd ] ); -				} else { -					deferred.rejectWith( elem, [ animation, gotoEnd ] ); -				} -				return this; -			} -		}), -		props = animation.props; -	propFilter( props, animation.opts.specialEasing ); -	for ( ; index < length ; index++ ) { -		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); -		if ( result ) { -			return result; +// Install script dataType +jQuery.ajaxSetup({ +	accepts: { +		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" +	}, +	contents: { +		script: /(?:java|ecma)script/ +	}, +	converters: { +		"text script": function( text ) { +			jQuery.globalEval( text ); +			return text;  		}  	} +}); -	createTweens( animation, props ); - -	if ( jQuery.isFunction( animation.opts.start ) ) { -		animation.opts.start.call( elem, animation ); +// Handle cache's special case and global +jQuery.ajaxPrefilter( "script", function( s ) { +	if ( s.cache === undefined ) { +		s.cache = false;  	} - -	jQuery.fx.timer( -		jQuery.extend( tick, { -			anim: animation, -			queue: animation.opts.queue, -			elem: elem -		}) -	); - -	// attach callbacks from options -	return animation.progress( animation.opts.progress ) -		.done( animation.opts.done, animation.opts.complete ) -		.fail( animation.opts.fail ) -		.always( animation.opts.always ); -} - -function propFilter( props, specialEasing ) { -	var index, name, easing, value, hooks; - -	// camelCase, specialEasing and expand cssHook pass -	for ( index in props ) { -		name = jQuery.camelCase( index ); -		easing = specialEasing[ name ]; -		value = props[ index ]; -		if ( jQuery.isArray( value ) ) { -			easing = value[ 1 ]; -			value = props[ index ] = value[ 0 ]; -		} - -		if ( index !== name ) { -			props[ name ] = value; -			delete props[ index ]; -		} - -		hooks = jQuery.cssHooks[ name ]; -		if ( hooks && "expand" in hooks ) { -			value = hooks.expand( value ); -			delete props[ name ]; - -			// not quite $.extend, this wont overwrite keys already present. -			// also - reusing 'index' from above because we have the correct "name" -			for ( index in value ) { -				if ( !( index in props ) ) { -					props[ index ] = value[ index ]; -					specialEasing[ index ] = easing; -				} -			} -		} else { -			specialEasing[ name ] = easing; -		} +	if ( s.crossDomain ) { +		s.type = "GET"; +		s.global = false;  	} -} +}); -jQuery.Animation = jQuery.extend( Animation, { +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function(s) { -	tweener: function( props, callback ) { -		if ( jQuery.isFunction( props ) ) { -			callback = props; -			props = [ "*" ]; -		} else { -			props = props.split(" "); -		} +	// This transport only deals with cross domain requests +	if ( s.crossDomain ) { -		var prop, -			index = 0, -			length = props.length; +		var script, +			head = document.head || jQuery("head")[0] || document.documentElement; -		for ( ; index < length ; index++ ) { -			prop = props[ index ]; -			tweeners[ prop ] = tweeners[ prop ] || []; -			tweeners[ prop ].unshift( callback ); -		} -	}, +		return { -	prefilter: function( callback, prepend ) { -		if ( prepend ) { -			animationPrefilters.unshift( callback ); -		} else { -			animationPrefilters.push( callback ); -		} -	} -}); +			send: function( _, callback ) { -function defaultPrefilter( elem, props, opts ) { -	var index, prop, value, length, dataShow, toggle, tween, hooks, oldfire, -		anim = this, -		style = elem.style, -		orig = {}, -		handled = [], -		hidden = elem.nodeType && isHidden( elem ); +				script = document.createElement("script"); -	// handle queue: false promises -	if ( !opts.queue ) { -		hooks = jQuery._queueHooks( elem, "fx" ); -		if ( hooks.unqueued == null ) { -			hooks.unqueued = 0; -			oldfire = hooks.empty.fire; -			hooks.empty.fire = function() { -				if ( !hooks.unqueued ) { -					oldfire(); -				} -			}; -		} -		hooks.unqueued++; +				script.async = true; -		anim.always(function() { -			// doing this makes sure that the complete handler will be called -			// before this completes -			anim.always(function() { -				hooks.unqueued--; -				if ( !jQuery.queue( elem, "fx" ).length ) { -					hooks.empty.fire(); +				if ( s.scriptCharset ) { +					script.charset = s.scriptCharset;  				} -			}); -		}); -	} - -	// height/width overflow pass -	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { -		// Make sure that nothing sneaks out -		// Record all 3 overflow attributes because IE does not -		// change the overflow attribute when overflowX and -		// overflowY are set to the same value -		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; -		// Set display property to inline-block for height/width -		// animations on inline elements that are having width/height animated -		if ( jQuery.css( elem, "display" ) === "inline" && -				jQuery.css( elem, "float" ) === "none" ) { +				script.src = s.url; -			// inline-level elements accept inline-block; -			// block-level elements need to be inline with layout -			if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) { -				style.display = "inline-block"; +				// Attach handlers for all browsers +				script.onload = script.onreadystatechange = function( _, isAbort ) { -			} else { -				style.zoom = 1; -			} -		} -	} +					if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { -	if ( opts.overflow ) { -		style.overflow = "hidden"; -		if ( !jQuery.support.shrinkWrapBlocks ) { -			anim.done(function() { -				style.overflow = opts.overflow[ 0 ]; -				style.overflowX = opts.overflow[ 1 ]; -				style.overflowY = opts.overflow[ 2 ]; -			}); -		} -	} +						// Handle memory leak in IE +						script.onload = script.onreadystatechange = null; +						// Remove the script +						if ( script.parentNode ) { +							script.parentNode.removeChild( script ); +						} -	// show/hide pass -	for ( index in props ) { -		value = props[ index ]; -		if ( rfxtypes.exec( value ) ) { -			delete props[ index ]; -			toggle = toggle || value === "toggle"; -			if ( value === ( hidden ? "hide" : "show" ) ) { -				continue; -			} -			handled.push( index ); -		} -	} +						// Dereference the script +						script = null; -	length = handled.length; -	if ( length ) { -		dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} ); -		if ( "hidden" in dataShow ) { -			hidden = dataShow.hidden; -		} +						// Callback if not abort +						if ( !isAbort ) { +							callback( 200, "success" ); +						} +					} +				}; -		// store state if its toggle - enables .stop().toggle() to "reverse" -		if ( toggle ) { -			dataShow.hidden = !hidden; -		} -		if ( hidden ) { -			jQuery( elem ).show(); -		} else { -			anim.done(function() { -				jQuery( elem ).hide(); -			}); -		} -		anim.done(function() { -			var prop; -			jQuery.removeData( elem, "fxshow", true ); -			for ( prop in orig ) { -				jQuery.style( elem, prop, orig[ prop ] ); -			} -		}); -		for ( index = 0 ; index < length ; index++ ) { -			prop = handled[ index ]; -			tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 ); -			orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop ); +				// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending +				// Use native DOM manipulation to avoid our domManip AJAX trickery +				head.insertBefore( script, head.firstChild ); +			}, -			if ( !( prop in dataShow ) ) { -				dataShow[ prop ] = tween.start; -				if ( hidden ) { -					tween.end = tween.start; -					tween.start = prop === "width" || prop === "height" ? 1 : 0; +			abort: function() { +				if ( script ) { +					script.onload( undefined, true );  				}  			} -		} +		};  	} -} - -function Tween( elem, options, prop, end, easing ) { -	return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; +}); -Tween.prototype = { -	constructor: Tween, -	init: function( elem, options, prop, end, easing, unit ) { -		this.elem = elem; -		this.prop = prop; -		this.easing = easing || "swing"; -		this.options = options; -		this.start = this.now = this.cur(); -		this.end = end; -		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); -	}, -	cur: function() { -		var hooks = Tween.propHooks[ this.prop ]; -		return hooks && hooks.get ? -			hooks.get( this ) : -			Tween.propHooks._default.get( this ); -	}, -	run: function( percent ) { -		var eased, -			hooks = Tween.propHooks[ this.prop ]; -		if ( this.options.duration ) { -			this.pos = eased = jQuery.easing[ this.easing ]( -				percent, this.options.duration * percent, 0, 1, this.options.duration -			); -		} else { -			this.pos = eased = percent; -		} -		this.now = ( this.end - this.start ) * eased + this.start; -		if ( this.options.step ) { -			this.options.step.call( this.elem, this.now, this ); -		} +var oldCallbacks = [], +	rjsonp = /(=)\?(?=&|$)|\?\?/; -		if ( hooks && hooks.set ) { -			hooks.set( this ); -		} else { -			Tween.propHooks._default.set( this ); -		} -		return this; +// Default jsonp settings +jQuery.ajaxSetup({ +	jsonp: "callback", +	jsonpCallback: function() { +		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); +		this[ callback ] = true; +		return callback;  	} -}; - -Tween.prototype.init.prototype = Tween.prototype; +}); -Tween.propHooks = { -	_default: { -		get: function( tween ) { -			var result; +// Detect, normalize options and install callbacks for jsonp requests +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { -			if ( tween.elem[ tween.prop ] != null && -				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { -				return tween.elem[ tween.prop ]; -			} +	var callbackName, overwritten, responseContainer, +		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? +			"url" : +			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" +		); -			// passing any value as a 4th parameter to .css will automatically -			// attempt a parseFloat and fallback to a string if the parse fails -			// so, simple values such as "10px" are parsed to Float. -			// complex values such as "rotate(1rad)" are returned as is. -			result = jQuery.css( tween.elem, tween.prop, false, "" ); -			// Empty strings, null, undefined and "auto" are converted to 0. -			return !result || result === "auto" ? 0 : result; -		}, -		set: function( tween ) { -			// use step hook for back compat - use cssHook if its there - use .style if its -			// available and use plain properties where available -			if ( jQuery.fx.step[ tween.prop ] ) { -				jQuery.fx.step[ tween.prop ]( tween ); -			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { -				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); -			} else { -				tween.elem[ tween.prop ] = tween.now; -			} -		} -	} -}; +	// Handle iff the expected data type is "jsonp" or we have a parameter to set +	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { -// Remove in 2.0 - this supports IE8's panic based approach -// to setting things on disconnected nodes +		// Get callback name, remembering preexisting value associated with it +		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? +			s.jsonpCallback() : +			s.jsonpCallback; -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { -	set: function( tween ) { -		if ( tween.elem.nodeType && tween.elem.parentNode ) { -			tween.elem[ tween.prop ] = tween.now; +		// Insert callback into url or form data +		if ( jsonProp ) { +			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); +		} else if ( s.jsonp !== false ) { +			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;  		} -	} -}; - -jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { -	var cssFn = jQuery.fn[ name ]; -	jQuery.fn[ name ] = function( speed, easing, callback ) { -		return speed == null || typeof speed === "boolean" || -			// special check for .toggle( handler, handler, ... ) -			( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ? -			cssFn.apply( this, arguments ) : -			this.animate( genFx( name, true ), speed, easing, callback ); -	}; -}); - -jQuery.fn.extend({ -	fadeTo: function( speed, to, easing, callback ) { -		// show any hidden elements after setting opacity to 0 -		return this.filter( isHidden ).css( "opacity", 0 ).show() - -			// animate to the value specified -			.end().animate({ opacity: to }, speed, easing, callback ); -	}, -	animate: function( prop, speed, easing, callback ) { -		var empty = jQuery.isEmptyObject( prop ), -			optall = jQuery.speed( speed, easing, callback ), -			doAnimation = function() { -				// Operate on a copy of prop so per-property easing won't be lost -				var anim = Animation( this, jQuery.extend( {}, prop ), optall ); +		// Use data converter to retrieve json after script execution +		s.converters["script json"] = function() { +			if ( !responseContainer ) { +				jQuery.error( callbackName + " was not called" ); +			} +			return responseContainer[ 0 ]; +		}; -				// Empty animations resolve immediately -				if ( empty ) { -					anim.stop( true ); -				} -			}; +		// force json dataType +		s.dataTypes[ 0 ] = "json"; -		return empty || optall.queue === false ? -			this.each( doAnimation ) : -			this.queue( optall.queue, doAnimation ); -	}, -	stop: function( type, clearQueue, gotoEnd ) { -		var stopQueue = function( hooks ) { -			var stop = hooks.stop; -			delete hooks.stop; -			stop( gotoEnd ); +		// Install callback +		overwritten = window[ callbackName ]; +		window[ callbackName ] = function() { +			responseContainer = arguments;  		}; -		if ( typeof type !== "string" ) { -			gotoEnd = clearQueue; -			clearQueue = type; -			type = undefined; -		} -		if ( clearQueue && type !== false ) { -			this.queue( type || "fx", [] ); -		} +		// Clean-up function (fires after converters) +		jqXHR.always(function() { +			// Restore preexisting value +			window[ callbackName ] = overwritten; -		return this.each(function() { -			var dequeue = true, -				index = type != null && type + "queueHooks", -				timers = jQuery.timers, -				data = jQuery._data( this ); +			// Save back as free +			if ( s[ callbackName ] ) { +				// make sure that re-using the options doesn't screw things around +				s.jsonpCallback = originalSettings.jsonpCallback; -			if ( index ) { -				if ( data[ index ] && data[ index ].stop ) { -					stopQueue( data[ index ] ); -				} -			} else { -				for ( index in data ) { -					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { -						stopQueue( data[ index ] ); -					} -				} +				// save the callback name for future use +				oldCallbacks.push( callbackName );  			} -			for ( index = timers.length; index--; ) { -				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { -					timers[ index ].anim.stop( gotoEnd ); -					dequeue = false; -					timers.splice( index, 1 ); -				} +			// Call if it was a function and we have a response +			if ( responseContainer && jQuery.isFunction( overwritten ) ) { +				overwritten( responseContainer[ 0 ] );  			} -			// start the next in the queue if the last step wasn't forced -			// timers currently will call their complete callbacks, which will dequeue -			// but only if they were gotoEnd -			if ( dequeue || !gotoEnd ) { -				jQuery.dequeue( this, type ); -			} +			responseContainer = overwritten = undefined;  		}); + +		// Delegate to script +		return "script";  	}  }); -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { -	var which, -		attrs = { height: type }, -		i = 0; -	// if we include width, step value is 1 to do all cssExpand values, -	// if we don't include width, step value is 2 to skip over Left and Right -	includeWidth = includeWidth? 1 : 0; -	for( ; i < 4 ; i += 2 - includeWidth ) { -		which = cssExpand[ i ]; -		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; -	} -	if ( includeWidth ) { -		attrs.opacity = attrs.width = type; + +// data: string of html +// context (optional): If specified, the fragment will be created in this context, defaults to document +// keepScripts (optional): If true, will include scripts passed in the html string +jQuery.parseHTML = function( data, context, keepScripts ) { +	if ( !data || typeof data !== "string" ) { +		return null; +	} +	if ( typeof context === "boolean" ) { +		keepScripts = context; +		context = false;  	} +	context = context || document; -	return attrs; -} +	var parsed = rsingleTag.exec( data ), +		scripts = !keepScripts && []; -// Generate shortcuts for custom animations -jQuery.each({ -	slideDown: genFx("show"), -	slideUp: genFx("hide"), -	slideToggle: genFx("toggle"), -	fadeIn: { opacity: "show" }, -	fadeOut: { opacity: "hide" }, -	fadeToggle: { opacity: "toggle" } -}, function( name, props ) { -	jQuery.fn[ name ] = function( speed, easing, callback ) { -		return this.animate( props, speed, easing, callback ); -	}; -}); - -jQuery.speed = function( speed, easing, fn ) { -	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { -		complete: fn || !fn && easing || -			jQuery.isFunction( speed ) && speed, -		duration: speed, -		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing -	}; +	// Single tag +	if ( parsed ) { +		return [ context.createElement( parsed[1] ) ]; +	} -	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : -		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; +	parsed = jQuery.buildFragment( [ data ], context, scripts ); -	// normalize opt.queue - true/undefined/null -> "fx" -	if ( opt.queue == null || opt.queue === true ) { -		opt.queue = "fx"; +	if ( scripts && scripts.length ) { +		jQuery( scripts ).remove();  	} -	// Queueing -	opt.old = opt.complete; - -	opt.complete = function() { -		if ( jQuery.isFunction( opt.old ) ) { -			opt.old.call( this ); -		} +	return jQuery.merge( [], parsed.childNodes ); +}; -		if ( opt.queue ) { -			jQuery.dequeue( this, opt.queue ); -		} -	}; -	return opt; -}; +// Keep a copy of the old load method +var _load = jQuery.fn.load; -jQuery.easing = { -	linear: function( p ) { -		return p; -	}, -	swing: function( p ) { -		return 0.5 - Math.cos( p*Math.PI ) / 2; +/** + * Load a url into a page + */ +jQuery.fn.load = function( url, params, callback ) { +	if ( typeof url !== "string" && _load ) { +		return _load.apply( this, arguments );  	} -}; - -jQuery.timers = []; -jQuery.fx = Tween.prototype.init; -jQuery.fx.tick = function() { -	var timer, -		timers = jQuery.timers, -		i = 0; -	fxNow = jQuery.now(); +	var selector, response, type, +		self = this, +		off = url.indexOf(" "); -	for ( ; i < timers.length; i++ ) { -		timer = timers[ i ]; -		// Checks the timer has not already been removed -		if ( !timer() && timers[ i ] === timer ) { -			timers.splice( i--, 1 ); -		} +	if ( off >= 0 ) { +		selector = url.slice( off, url.length ); +		url = url.slice( 0, off );  	} -	if ( !timers.length ) { -		jQuery.fx.stop(); -	} -	fxNow = undefined; -}; +	// If it's a function +	if ( jQuery.isFunction( params ) ) { -jQuery.fx.timer = function( timer ) { -	if ( timer() && jQuery.timers.push( timer ) && !timerId ) { -		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); +		// We assume that it's the callback +		callback = params; +		params = undefined; + +	// Otherwise, build a param string +	} else if ( params && typeof params === "object" ) { +		type = "POST";  	} -}; -jQuery.fx.interval = 13; +	// If we have elements to modify, make the request +	if ( self.length > 0 ) { +		jQuery.ajax({ +			url: url, -jQuery.fx.stop = function() { -	clearInterval( timerId ); -	timerId = null; -}; +			// if "type" variable is undefined, then "GET" method will be used +			type: type, +			dataType: "html", +			data: params +		}).done(function( responseText ) { -jQuery.fx.speeds = { -	slow: 600, -	fast: 200, -	// Default speed -	_default: 400 -}; +			// Save response for use in complete callback +			response = arguments; -// Back Compat <1.8 extension point -jQuery.fx.step = {}; +			self.html( selector ? -if ( jQuery.expr && jQuery.expr.filters ) { -	jQuery.expr.filters.animated = function( elem ) { -		return jQuery.grep(jQuery.timers, function( fn ) { -			return elem === fn.elem; -		}).length; -	}; -} -var rroot = /^(?:body|html)$/i; +				// If a selector was specified, locate the right elements in a dummy div +				// Exclude scripts to avoid IE 'Permission Denied' errors +				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : -jQuery.fn.offset = function( options ) { -	if ( arguments.length ) { -		return options === undefined ? -			this : -			this.each(function( i ) { -				jQuery.offset.setOffset( this, options, i ); -			}); -	} - -	var docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft, -		box = { top: 0, left: 0 }, -		elem = this[ 0 ], -		doc = elem && elem.ownerDocument; +				// Otherwise use the full result +				responseText ); -	if ( !doc ) { -		return; +		}).complete( callback && function( jqXHR, status ) { +			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); +		});  	} -	if ( (body = doc.body) === elem ) { -		return jQuery.offset.bodyOffset( elem ); -	} +	return this; +}; -	docElem = doc.documentElement; -	// Make sure it's not a disconnected DOM node -	if ( !jQuery.contains( docElem, elem ) ) { -		return box; -	} -	// If we don't have gBCR, just use 0,0 rather than error -	// BlackBerry 5, iOS 3 (original iPhone) -	if ( typeof elem.getBoundingClientRect !== "undefined" ) { -		box = elem.getBoundingClientRect(); -	} -	win = getWindow( doc ); -	clientTop  = docElem.clientTop  || body.clientTop  || 0; -	clientLeft = docElem.clientLeft || body.clientLeft || 0; -	scrollTop  = win.pageYOffset || docElem.scrollTop; -	scrollLeft = win.pageXOffset || docElem.scrollLeft; -	return { -		top: box.top  + scrollTop  - clientTop, -		left: box.left + scrollLeft - clientLeft -	}; + +jQuery.expr.filters.animated = function( elem ) { +	return jQuery.grep(jQuery.timers, function( fn ) { +		return elem === fn.elem; +	}).length;  }; -jQuery.offset = { -	bodyOffset: function( body ) { -		var top = body.offsetTop, -			left = body.offsetLeft; -		if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) { -			top  += parseFloat( jQuery.css(body, "marginTop") ) || 0; -			left += parseFloat( jQuery.css(body, "marginLeft") ) || 0; -		} -		return { top: top, left: left }; -	}, +var docElem = window.document.documentElement; + +/** + * Gets a window from an element + */ +function getWindow( elem ) { +	return jQuery.isWindow( elem ) ? +		elem : +		elem.nodeType === 9 ? +			elem.defaultView || elem.parentWindow : +			false; +} + +jQuery.offset = {  	setOffset: function( elem, options, i ) { -		var position = jQuery.css( elem, "position" ); +		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, +			position = jQuery.css( elem, "position" ), +			curElem = jQuery( elem ), +			props = {};  		// set position first, in-case top/left are set even on static elem  		if ( position === "static" ) {  			elem.style.position = "relative";  		} -		var curElem = jQuery( elem ), -			curOffset = curElem.offset(), -			curCSSTop = jQuery.css( elem, "top" ), -			curCSSLeft = jQuery.css( elem, "left" ), -			calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, -			props = {}, curPosition = {}, curTop, curLeft; +		curOffset = curElem.offset(); +		curCSSTop = jQuery.css( elem, "top" ); +		curCSSLeft = jQuery.css( elem, "left" ); +		calculatePosition = ( position === "absolute" || position === "fixed" ) && +			jQuery.inArray("auto", [ curCSSTop, curCSSLeft ] ) > -1;  		// need to be able to calculate position if either top or left is auto and position is either absolute or fixed  		if ( calculatePosition ) { @@ -9329,58 +10101,99 @@ jQuery.offset = {  	}  }; -  jQuery.fn.extend({ +	offset: function( options ) { +		if ( arguments.length ) { +			return options === undefined ? +				this : +				this.each(function( i ) { +					jQuery.offset.setOffset( this, options, i ); +				}); +		} + +		var docElem, win, +			box = { top: 0, left: 0 }, +			elem = this[ 0 ], +			doc = elem && elem.ownerDocument; + +		if ( !doc ) { +			return; +		} + +		docElem = doc.documentElement; + +		// Make sure it's not a disconnected DOM node +		if ( !jQuery.contains( docElem, elem ) ) { +			return box; +		} + +		// If we don't have gBCR, just use 0,0 rather than error +		// BlackBerry 5, iOS 3 (original iPhone) +		if ( typeof elem.getBoundingClientRect !== strundefined ) { +			box = elem.getBoundingClientRect(); +		} +		win = getWindow( doc ); +		return { +			top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ), +			left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 ) +		}; +	},  	position: function() { -		if ( !this[0] ) { +		if ( !this[ 0 ] ) {  			return;  		} -		var elem = this[0], +		var offsetParent, offset, +			parentOffset = { top: 0, left: 0 }, +			elem = this[ 0 ]; -		// Get *real* offsetParent -		offsetParent = this.offsetParent(), +		// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent +		if ( jQuery.css( elem, "position" ) === "fixed" ) { +			// we assume that getBoundingClientRect is available when computed position is fixed +			offset = elem.getBoundingClientRect(); +		} else { +			// Get *real* offsetParent +			offsetParent = this.offsetParent(); + +			// Get correct offsets +			offset = this.offset(); +			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { +				parentOffset = offsetParent.offset(); +			} -		// Get correct offsets -		offset       = this.offset(), -		parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); +			// Add offsetParent borders +			parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); +			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); +		} -		// Subtract element margins +		// Subtract parent offsets and element margins  		// note: when an element has margin: auto the offsetLeft and marginLeft  		// are the same in Safari causing offset.left to incorrectly be 0 -		offset.top  -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; -		offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; - -		// Add offsetParent borders -		parentOffset.top  += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; -		parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; - -		// Subtract the two offsets  		return { -			top:  offset.top  - parentOffset.top, -			left: offset.left - parentOffset.left +			top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ), +			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)  		};  	},  	offsetParent: function() {  		return this.map(function() { -			var offsetParent = this.offsetParent || document.body; -			while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { +			var offsetParent = this.offsetParent || docElem; + +			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {  				offsetParent = offsetParent.offsetParent;  			} -			return offsetParent || document.body; +			return offsetParent || docElem;  		});  	}  }); -  // Create scrollLeft and scrollTop methods -jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) { +jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {  	var top = /Y/.test( prop );  	jQuery.fn[ method ] = function( val ) { -		return jQuery.access( this, function( elem, method, val ) { +		return access( this, function( elem, method, val ) {  			var win = getWindow( elem );  			if ( val === undefined ) { @@ -9392,7 +10205,7 @@ jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( me  			if ( win ) {  				win.scrollTo(  					!top ? val : jQuery( win ).scrollLeft(), -					 top ? val : jQuery( win ).scrollTop() +					top ? val : jQuery( win ).scrollTop()  				);  			} else { @@ -9402,13 +10215,25 @@ jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( me  	};  }); -function getWindow( elem ) { -	return jQuery.isWindow( elem ) ? -		elem : -		elem.nodeType === 9 ? -			elem.defaultView || elem.parentWindow : -			false; -} +// Add the top/left cssHooks using jQuery.fn.position +// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 +// getComputedStyle returns percent when specified for top/left/bottom/right +// rather than make the css module depend on the offset module, we just check for it here +jQuery.each( [ "top", "left" ], function( i, prop ) { +	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, +		function( elem, computed ) { +			if ( computed ) { +				computed = curCSS( elem, prop ); +				// if curCSS returns percentage, fallback to offset +				return rnumnonpx.test( computed ) ? +					jQuery( elem ).position()[ prop ] + "px" : +					computed; +			} +		} +	); +}); + +  // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods  jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {  	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { @@ -9417,7 +10242,7 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {  			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),  				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); -			return jQuery.access( this, function( elem, type, value ) { +			return access( this, function( elem, type, value ) {  				var doc;  				if ( jQuery.isWindow( elem ) ) { @@ -9442,7 +10267,7 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {  				return value === undefined ?  					// Get width or height on the element, requesting but not forcing parseFloat -					jQuery.css( elem, type, value, extra ) : +					jQuery.css( elem, type, extra ) :  					// Set width or height on the element  					jQuery.style( elem, type, value, extra ); @@ -9450,23 +10275,63 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {  		};  	});  }); -// Expose jQuery to the global object -window.jQuery = window.$ = jQuery; -// Expose jQuery as an AMD module, but only for AMD loaders that -// understand the issues with loading multiple versions of jQuery -// in a page that all might call define(). The loader will indicate -// they have special allowances for multiple jQuery versions by -// specifying define.amd.jQuery = true. Register as a named module, -// since jQuery can be concatenated with other files that may use define, -// but not use a proper concatenation script that understands anonymous -// AMD modules. A named AMD is safest and most robust way to register. -// Lowercase jquery is used because AMD module names are derived from -// file names, and jQuery is normally delivered in a lowercase file name. -// Do this after creating the global so that if an AMD module wants to call -// noConflict to hide this version of jQuery, it will work. -if ( typeof define === "function" && define.amd && define.amd.jQuery ) { -	define( "jquery", [], function () { return jQuery; } ); + +// The number of elements contained in the matched element set +jQuery.fn.size = function() { +	return this.length; +}; + +jQuery.fn.andSelf = jQuery.fn.addBack; + + + + +// Register as a named AMD module, since jQuery can be concatenated with other +// files that may use define, but not via a proper concatenation script that +// understands anonymous AMD modules. A named AMD is safest and most robust +// way to register. Lowercase jquery is used because AMD module names are +// derived from file names, and jQuery is normally delivered in a lowercase +// file name. Do this after creating the global so that if an AMD module wants +// to call noConflict to hide this version of jQuery, it will work. +if ( typeof define === "function" && define.amd ) { +	define( "jquery", [], function() { +		return jQuery; +	});  } -})( window ); + + + +var +	// Map over jQuery in case of overwrite +	_jQuery = window.jQuery, + +	// Map over the $ in case of overwrite +	_$ = window.$; + +jQuery.noConflict = function( deep ) { +	if ( window.$ === jQuery ) { +		window.$ = _$; +	} + +	if ( deep && window.jQuery === jQuery ) { +		window.jQuery = _jQuery; +	} + +	return jQuery; +}; + +// Expose jQuery and $ identifiers, even in +// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557) +// and CommonJS for browser emulators (#13566) +if ( typeof noGlobal === strundefined ) { +	window.jQuery = window.$ = jQuery; +} + + + + +return jQuery; + +})); diff --git a/framework/Web/Javascripts/source/jquery/jquery.min.js b/framework/Web/Javascripts/source/jquery/jquery.min.js new file mode 100644 index 00000000..73f33fb3 --- /dev/null +++ b/framework/Web/Javascripts/source/jquery/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f +}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b) +},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});  | 
