From f9e21523406a966e1c9683565ca4dac904a1345f Mon Sep 17 00:00:00 2001 From: pahenning <> Date: Thu, 9 May 2013 05:17:20 +0000 Subject: [PATCH] git-svn-id: https://svn.fhem.de/fhem/trunk@3162 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/YAF/01_YAF.pm | 416 + fhem/contrib/YAF/Makefile | 19 + fhem/contrib/YAF/README | 26 + fhem/contrib/YAF/YAF/YAFConfig.pm | 507 + fhem/contrib/YAF/YAF/YAFWidgets.pm | 120 + .../YAF/widgets/fs20easylamp/fs20easylamp.pm | 228 + .../YAF/YAF/widgets/fs20easylamp/www/.gitkeep | 0 fhem/contrib/YAF/YAF/widgets/fs20st/fs20st.pm | 231 + .../YAF/YAF/widgets/fs20st/www/.gitkeep | 0 .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../css/smoothness/jquery-ui-1.9.1.custom.css | 461 + .../smoothness/jquery-ui-1.9.1.custom.min.css | 5 + fhem/contrib/YAF/YAF/www/css/yaf.css | 100 + fhem/contrib/YAF/YAF/www/img/1og.jpeg | Bin 0 -> 63488 bytes fhem/contrib/YAF/YAF/www/img/eg.jpeg | Bin 0 -> 73705 bytes fhem/contrib/YAF/YAF/www/img/lamp_off.png | Bin 0 -> 766 bytes fhem/contrib/YAF/YAF/www/img/lamp_on.png | Bin 0 -> 831 bytes fhem/contrib/YAF/YAF/www/img/loading.gif | Bin 0 -> 2608 bytes fhem/contrib/YAF/YAF/www/img/wetter.png | Bin 0 -> 19000 bytes fhem/contrib/YAF/YAF/www/js/combobox.js | 128 + fhem/contrib/YAF/YAF/www/js/jquery-1.8.2.js | 9440 ++++++++++ .../YAF/YAF/www/js/jquery-ui-1.9.1.custom.js | 14823 ++++++++++++++++ .../YAF/www/js/jquery-ui-1.9.1.custom.min.js | 6 + .../YAF/www/js/jquery.ui.touch-punch.min.js | 160 + fhem/contrib/YAF/YAF/www/js/yaf-basics.js | 438 + fhem/contrib/YAF/YAF/www/js/yaf-dialogs.js | 371 + fhem/contrib/YAF/YAF/www/yaf.htm | 181 + fhem/contrib/YAF/YAF/xml/xmlSchema.xsd | 98 + .../contrib/YAF/YAF/xml/yafConfig.xml.example | 54 + fhem/contrib/YAF/fhem.cfg | 88 + fhem/contrib/YAF/yaf-0.3.tar.gz | Bin 410091 -> 0 bytes fhem/contrib/YAF/yaf-0.4.tar.gz | Bin 410385 -> 0 bytes 44 files changed, 27900 insertions(+) create mode 100644 fhem/contrib/YAF/01_YAF.pm create mode 100755 fhem/contrib/YAF/Makefile create mode 100644 fhem/contrib/YAF/README create mode 100644 fhem/contrib/YAF/YAF/YAFConfig.pm create mode 100644 fhem/contrib/YAF/YAF/YAFWidgets.pm create mode 100644 fhem/contrib/YAF/YAF/widgets/fs20easylamp/fs20easylamp.pm create mode 100644 fhem/contrib/YAF/YAF/widgets/fs20easylamp/www/.gitkeep create mode 100644 fhem/contrib/YAF/YAF/widgets/fs20st/fs20st.pm create mode 100644 fhem/contrib/YAF/YAF/widgets/fs20st/www/.gitkeep create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_222222_256x240.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_454545_256x240.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_888888_256x240.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/jquery-ui-1.9.1.custom.css create mode 100755 fhem/contrib/YAF/YAF/www/css/smoothness/jquery-ui-1.9.1.custom.min.css create mode 100644 fhem/contrib/YAF/YAF/www/css/yaf.css create mode 100755 fhem/contrib/YAF/YAF/www/img/1og.jpeg create mode 100755 fhem/contrib/YAF/YAF/www/img/eg.jpeg create mode 100755 fhem/contrib/YAF/YAF/www/img/lamp_off.png create mode 100755 fhem/contrib/YAF/YAF/www/img/lamp_on.png create mode 100644 fhem/contrib/YAF/YAF/www/img/loading.gif create mode 100644 fhem/contrib/YAF/YAF/www/img/wetter.png create mode 100644 fhem/contrib/YAF/YAF/www/js/combobox.js create mode 100755 fhem/contrib/YAF/YAF/www/js/jquery-1.8.2.js create mode 100755 fhem/contrib/YAF/YAF/www/js/jquery-ui-1.9.1.custom.js create mode 100755 fhem/contrib/YAF/YAF/www/js/jquery-ui-1.9.1.custom.min.js create mode 100644 fhem/contrib/YAF/YAF/www/js/jquery.ui.touch-punch.min.js create mode 100644 fhem/contrib/YAF/YAF/www/js/yaf-basics.js create mode 100644 fhem/contrib/YAF/YAF/www/js/yaf-dialogs.js create mode 100755 fhem/contrib/YAF/YAF/www/yaf.htm create mode 100644 fhem/contrib/YAF/YAF/xml/xmlSchema.xsd create mode 100755 fhem/contrib/YAF/YAF/xml/yafConfig.xml.example create mode 100644 fhem/contrib/YAF/fhem.cfg delete mode 100644 fhem/contrib/YAF/yaf-0.3.tar.gz delete mode 100644 fhem/contrib/YAF/yaf-0.4.tar.gz diff --git a/fhem/contrib/YAF/01_YAF.pm b/fhem/contrib/YAF/01_YAF.pm new file mode 100644 index 000000000..24c9ad0f4 --- /dev/null +++ b/fhem/contrib/YAF/01_YAF.pm @@ -0,0 +1,416 @@ +######################################################################################## +# +# 01_YAF.pm +# +# YAF - Yet Another Floorplan +# FHEM Projektgruppe Hochschule Karlsruhe, 2013 +# Markus Mangei, Daniel Weisensee, Prof. Dr. Peter A. Henning +# +# $Id: 01_YAF.pm 2013-05 - pahenning $ +# +######################################################################################## +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +######################################################################################## +package main; + +use JSON::XS; +use strict; +use warnings; +use lib qw(YAF); +use YAF::YAFWidgets; +use YAF::YAFConfig; + +use vars qw(%data); +use vars qw(%_GET); +use vars qw(%defs); +use vars qw($FW_cname); +use vars qw($FW_RET); +use vars qw($FW_dir); + +sub YAF_Request($@); + +my $fhem_url; +my $yaf_version=0.41; +my $yafw_encoding = "UTF-8"; +my $mp = AttrVal("global", "modpath", "."); +my $yaf_www_directory = $mp."/FHEM/YAF/www"; + +YAF_Config(); + +######################################################################################## +# +# YAF_Initialize - register YAF with FHEM +# +# Parameter hash +# +######################################################################################## + +sub YAF_Initialize ($) { + my ($hash) = @_; + + $hash->{DefFn} = "YAF_define"; + + my $name = "YAF"; + $fhem_url = "/" . $name; + $data{FWEXT}{$fhem_url}{FUNC} = "YAF_Request"; + $data{FWEXT}{$fhem_url}{LINK} = "YAF/www/global/yaf.htm"; + $data{FWEXT}{$fhem_url}{NAME} = "YAF"; + + #-- load widgets + YAF_requireWidgets(); + +} + +######################################################################################## +# +# YAF_Print +# +# Parameter hash +# +######################################################################################## + +sub YAF_Print($@) { + if ($_[0]) { + $FW_RET .= $_[0]; + } +} + +######################################################################################## +# +# YAF_Clean - clear output buffer +# +# no parameter +# +######################################################################################## + +sub YAF_Clean() { + $FW_RET = ""; +} + +######################################################################################## +# +# YAF_LoadResource - Load a file from YAF directory +# +# Parameter hash +# +######################################################################################## + +sub YAF_LoadResource($@) { + my $absoluteFilePath = $_[0]; + + my $filebuffer = ""; + my $fh; + + # Filename + my @absoluteFilePathSplitted = split(/\//, $absoluteFilePath); + my $filename = $absoluteFilePathSplitted[scalar(@absoluteFilePathSplitted)-1]; + + # Extension + my @filenameSplitted = split(/\./, $filename); + my $extension = $filenameSplitted[scalar(@filenameSplitted)-1]; + #Log 1,"YAF_LoadResource absoluteFilePath $absoluteFilePath filename $filename extension $extension"; + + # Datei laden + if ((-f $absoluteFilePath) && open($fh, "<", $absoluteFilePath)) { + binmode $fh; + my ($data, $n); + while (($n = read $fh, $data, 4) != 0) { + $filebuffer .= $data; + } + } + else { + # Datei nicht gefunden + Log 1,"YAF_LoadResource: file $filename not found"; + return YAF_NotFound($absoluteFilePath); + } + close($fh); + + if ($extension eq "htm" || $extension eq "html") { + if ($filename eq "yaf.htm") { + # replace: + # ###widget_css### + # ###widget_js### + my $widget_css = YAF_getWidgetsCss(); + my $widget_js = YAF_getWidgetsJs(); + $filebuffer =~ s/###widget_css###/$widget_css/g; + $filebuffer =~ s/###widget_js###/$widget_js/g; + } + YAF_Print($filebuffer); + return ("text/html; charset=$yafw_encoding", $FW_RET); + } + elsif ($extension eq "gif") { + YAF_Print($filebuffer); + return ("image/gif; charset=$yafw_encoding", $FW_RET); + } + elsif ($extension eq "jpg" || $extension eq "jpeg") { + YAF_Print($filebuffer); + return ("image/jpeg; charset=$yafw_encoding", $FW_RET); + } + elsif ($extension eq "png") { + YAF_Print($filebuffer); + return ("image/png; charset=$yafw_encoding", $FW_RET); + } + elsif ($extension eq "css") { + YAF_Print($filebuffer); + return ("text/css; charset=$yafw_encoding", $FW_RET); + } + elsif ($extension eq "js") { + YAF_Print($filebuffer); + return ("text/javascript; charset=$yafw_encoding", $FW_RET); + } + else { + YAF_Print($filebuffer); + return ("text/plain; charset=$yafw_encoding", $FW_RET); + } +} + +######################################################################################## +# +# YAF_define +# +# Parameter hash +# +######################################################################################## + +sub YAF_define ($@) { + my ($hash, $def) = @_; + return; +} + +######################################################################################## +# +# YAF_LoadView +# +# Parameter hash +# +######################################################################################## + +sub YAF_LoadView($@) { + my ($view) = @_; + YAF_Print("ddd"); + return ("text/html; charset=$yafw_encoding", $FW_RET); +} + +######################################################################################## +# +# YAF_Request - http://fhemurl:fhemport/YAF is processed here +# +# Parameter hash, request-string +# +######################################################################################## + +sub YAF_Request ($@) { + my ($htmlarg) = @_; + # %20 durch Leerzeichen ersetzen + $htmlarg =~ s/%20/ /g; + + # GET Parameter + my @params = split(/\?/, $htmlarg); + + if (scalar(@params) > 1) { + my @attributesArray = split("&",$params[1]); + my @attributePair; + for (my $i = 0; $i < scalar(@attributesArray); $i++) { + @attributePair = split("=",$attributesArray[$i]); + $_GET{$attributePair[0]} = $attributePair[1]; + } + } + + @params = split(/\//, $params[0]); + + #-- clean output buffer + YAF_Clean(); + + #-- take URI apart + my $controler_count = scalar(@params); + #Log 1,"YAF_Request: arguments $htmlarg params ".join(' ',@params); + + #-- examples are + #/YAF/global/yaf.htm + #/YAF/global/js/yaf-dialogs.js + #/YAF/ajax/global/getRefreshTime + + my $control_1 = $params[1]; + my $control_2 = $params[2]; + my $control_3 = $params[3]; + + if ($controler_count > 3) { + #-- either global, widget or ajax + if ($control_2 eq "global") { + my $request_file = $yaf_www_directory; + my $pos = 3; + for (; $pos < scalar(@params); $pos++) { + $request_file .= "/"; + $request_file .= $params[$pos]; + } + # Resource aus dem global www Verzeichnis laden + return YAF_LoadResource($request_file); + } + elsif ($control_2 eq "widget") { + return ("text/plain; charset=$yafw_encoding", $FW_RET); + } + elsif ($control_2 eq "ajax") { + if ($control_3 eq "global") { + if ($controler_count > 4) { + my $function = ""; + $function = $params[4]; + if ($function eq "getViews") { + my $views = encode_json(YAF_getViews()); + YAF_Print($views); + } + #-- adds a View + elsif ($function eq "addView") { + if ($_GET{"name"} && (YAF_addView($_GET{"name"}) == 1)) { + YAF_Print("1"); + } + else { + YAF_Print("0"); + } + } + #-- deletes a View + elsif ($function eq "deleteView") { + if ($_GET{"id"} && (YAF_deleteView($_GET{"id"}) == 1)) { + YAF_Print("1"); + } + else { + YAF_Print("0"); + } + } + #-- returns all Widgets of a View + elsif ($function eq "getView") { + if ($_GET{"id"}) { + YAF_Print(encode_json(YAF_getView($_GET{"id"}))); + } + else { + YAF_Print("0"); + } + } + #-- changes the name of a View + elsif ($function eq "editView") { + if ($_GET{"id"} && $_GET{"name"}) { + YAF_Print(YAF_editView($_GET{"id"}, $_GET{"name"})); + } + else { + YAF_Print("0"); + } + } + #-- modify position of a Widget + elsif ($function eq "setWidgetPosition") { + if ($_GET{"view_id"} && $_GET{"widget_id"} && $_GET{"x_pos"} && $_GET{"y_pos"}) { + YAF_setWidgetPosition($_GET{"view_id"}, $_GET{"widget_id"}, $_GET{"x_pos"}, $_GET{"y_pos"}); + YAF_Print("1"); + } + else { + YAF_Print("0"); + } + } + #-- get Widgets + elsif ($function eq "getWidgets") { + my @widgets = YAF_getWidgetArray(); + YAF_Print(encode_json(\@widgets)); + } + #-- add Widget + elsif ($function eq "addWidget") { + if ($_GET{"view_id"} && $_GET{"widget"} && $_GET{"attributes"}) { + # %22 wieder durch " ersetzen! + # @TODO Probleme mit Sonderzeichen müssen noch behoben werden! + $_GET{"attributes"} =~ s/%22/"/g; + my @attributes_array = @{decode_json($_GET{"attributes"})}; + my $widgetId = YAF_addWidget($_GET{"view_id"},$_GET{"widget"}, 28, 69, \@attributes_array); + YAF_Print($widgetId); + } + else { + YAF_Print("0"); + } + } + #-- delete Widget + elsif($function eq "deleteWidget"){ + if ($_GET{"view_id"} && $_GET{"widget_id"} && (YAF_deleteWidget($_GET{"view_id"}, $_GET{"widget_id"}) == 1)) { + YAF_Print("1"); + } + else { + YAF_Print("0"); + } + } + #-- get RefreshTime + elsif($function eq "getRefreshTime"){ + my $refreshTime = YAF_getRefreshTime(); + YAF_Print($refreshTime); + } + #-- set RefreshTime + elsif($function eq "setRefreshTime"){ + if($_GET{"interval"}){ + my $newRefreshTime = $_GET{"interval"}; + YAF_setRefreshTime($newRefreshTime); + YAF_Print($newRefreshTime); + } else{ + YAF_Print("0"); + } + } + else { + YAF_Print("0"); + } + } + else { + YAF_Print("1"); + } + return ("text/plain; charset=$yafw_encoding", $FW_RET); + } + #-- evaluation of a widget function + elsif ($control_3 eq "widget") { + my $widget = $params[4]; + my $function = $params[5]; + if ($widget ne "") { + YAF_Print(eval($widget."_".$function."();")) or YAF_Print("0"); + } + else { + YAF_Print("0"); + } + #Log 1,"++++++++++++> Widget $widget called with function $function, length of return was ".length($FW_RET); + return ("text/plain; charset=$yafw_encoding", $FW_RET); + } + else { + Log 1,"YAF_Request: B response not found $control_1 $control_2"; + return YAF_NotFound($htmlarg); + } + } + else { + Log 1,"YAF_Request: C response not found $control_1 $control_2"; + return YAF_NotFound($htmlarg); + } + } + else { + Log 1,"YAF_Request: D response not found $control_1 $control_2"; + return YAF_NotFound($htmlarg); + } +} + +######################################################################################## +# +# YAF_NotFound - Return a 404 Error +# +# Parameter hash, request-string +# +######################################################################################## + +sub YAF_NotFound{ + my $file = $_[0]; + YAF_Print("Error 404: $file"); + YAF_Print("\n"); + return ("text/html; charset=$yafw_encoding", $FW_RET); +} + +1; diff --git a/fhem/contrib/YAF/Makefile b/fhem/contrib/YAF/Makefile new file mode 100755 index 000000000..1b66df17e --- /dev/null +++ b/fhem/contrib/YAF/Makefile @@ -0,0 +1,19 @@ +VERS=0.41 +DATE=2013-03-10 + +FHEMDIR=../../FHEM/fhem + +all: + @echo "Use make install to install YAF" + +install: + @echo "Installing YAF to FHEM installation in ${FHEMDIR}" + @echo "- copying files" + @cp 01_YAF.pm ${FHEMDIR}/FHEM + @cp -rp YAF ${FHEMDIR}/FHEM + @echo + @echo "Installation of YAF completed!" + @echo + @echo "Do not forget to configure YAF in fhem.cfg with" + @echo "define yaf YAF" + @echo diff --git a/fhem/contrib/YAF/README b/fhem/contrib/YAF/README new file mode 100644 index 000000000..d0e1c93e0 --- /dev/null +++ b/fhem/contrib/YAF/README @@ -0,0 +1,26 @@ +######################################################################################## +# +# README +# +# YAF - Yet Another Floorplan +# FHEM Projektgruppe Hochschule Karlsruhe, 2013 +# Markus Mangei, Daniel Weisensee +# +######################################################################################## +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +######################################################################################## + +Please notice the installation guide included in the documentation. \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/YAFConfig.pm b/fhem/contrib/YAF/YAF/YAFConfig.pm new file mode 100644 index 000000000..240556686 --- /dev/null +++ b/fhem/contrib/YAF/YAF/YAFConfig.pm @@ -0,0 +1,507 @@ +######################################################################################## +# +# YAFConfig.pm - sub-module to read and interpret the configuration file +# +# YAF - Yet Another Floorplan +# FHEM Projektgruppe Hochschule Karlsruhe, 2013 +# Markus Mangei, Daniel Weisensee, Prof. Dr. Peter A. Henning +# +######################################################################################## +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +######################################################################################## +package main; + +use strict; +use warnings; +use XML::LibXML; +use XML::LibXML::PrettyPrint; + +my $yaf_version=0.41; +my $mp = AttrVal("global", "modpath", "."); +my $configurationFilepath = $mp."/FHEM/YAF/xml/yafConfig.xml"; +my $schemaFilepath = $mp."/FHEM/YAF/xml/xmlSchema.xsd"; +my $xmlSchema; +my $prettyPrinter; +my $config; + +####################################################################################### +# +# YAF_Config - Initializes this module by creating the schema, pretty printer and +# loading the configuration from the filepath +# +# no parameter +# +######################################################################################## + +sub YAF_Config { + $xmlSchema = XML::LibXML::Schema->new(location => $schemaFilepath); + $prettyPrinter = XML::LibXML::PrettyPrint->new(indent_string => " "); + $config = XML::LibXML->load_xml(location => $configurationFilepath); + YAF_validate(); +} + +####################################################################################### +# +# YAF_validate - Validates the current state of the configuration instance +# +# no parameter +# Returns 1 if valid, otherwise 0. +# +######################################################################################## + +sub YAF_validate{ + eval{ $xmlSchema->validate($config); }; + + if($@){ + Log 1,"YAF: error validating configuration file"; + return 0; + } + return 1; +} + +####################################################################################### +# +# YAF_getViews - Assembles defined views from configuration file +# +# no parameter +# Returns pointer to array of views. +# +######################################################################################## + +sub YAF_getViews{ + my @views = $config->findnodes('//view'); + my @viewsArray; + my $index = 0; + + foreach my $view (@views){ + $viewsArray[$index][0] = $view->findvalue('@id'); + $viewsArray[$index][1] = $view->findvalue('@name'); + $index++; + } + + return \@viewsArray; +} + +####################################################################################### +# +# YAF_getView - Assembles parts of a view from configuration file +# +# viewId - The view id to search +# Returns Pointer to the view hash, hash may be empty +# +######################################################################################## + +sub YAF_getView{ + my $viewId = $_[0]; + + my %viewHash = (); + + #-- query view id + my $viewResult = $config->findnodes('//view[@id = '.$viewId.']'); + if($viewResult->size() == 1){ + my $view = $viewResult->get_node(0); + + #-- prepare view hash and add simple key/value pairs (name) + $viewHash{'name'} = $view->findvalue('@name'); + + #-- collect all widgets and add them to an array which is then connected to the view hash + my @widgetsArray = (); + my @widgets = $view->findnodes('widgets/widget'); + + foreach my $widget (@widgets){ + my @attributes = $widget->attributes(); + my %widgetHash = (); + + foreach my $attribute (@attributes){ + $widgetHash{$attribute->nodeName} = $attribute->getValue(); + } + + #-- collect attr nodes in a hash and add to widget + my %attrHash = (); + my @attrs = $widget->getChildrenByTagName('attr'); + + foreach my $attr (@attrs){ + my $key = $attr->findvalue('@name'); + my $value = $attr->findvalue('@value'); + $attrHash{$key} = $value; + } + $widgetHash{'attr'} = \%attrHash; + + + push(@widgetsArray, \%widgetHash); + } + $viewHash{'widgets'} = \@widgetsArray; + + #-- collect all backgrounds and add them to an array which is then connected to the view hash + my @backgroundsArray = (); + my @backgrounds = $view->findnodes('backgrounds/background'); + + foreach my $background (@backgrounds){ + my @attributes = $background->attributes(); + my %backgroundHash = (); + + foreach my $attribute (@attributes){ + $backgroundHash{$attribute->nodeName} = $attribute->getValue(); + } + + push(@backgroundsArray, \%backgroundHash); + } + $viewHash{'backgrounds'} = \@backgroundsArray; + } else{ + Log 1,"YAF_getView: view with id = ".$viewId." was not found"; + } + + return \%viewHash; +} + +####################################################################################### +# +# YAF_editView - Edits the view with the given id +# +# viewId - The view id to search +# viewName The view name to be set +# @return 1 if successful, otherwise 0 +# +######################################################################################## + +sub YAF_editView{ + my $viewId = $_[0]; + my $viewName = $_[1]; + + my $viewResult = $config->findnodes('//view[@id = '.$viewId.']'); + if($viewResult->size() == 1){ + my $view = $viewResult->get_node(0); + $view->setAttribute('name', $viewName); + YAF_saveConfiguration(); + return 1; + } else { + Log 1,"YAF_editView: view with id = ".$viewId." was not found"; + return 0; + } +} + +####################################################################################### +# +# YAF_deleteView - Deletes the view with the given id +# +# viewId - The view id to search +# @return 1 if successful, otherwise 0 +# +####################################################################################### + +sub YAF_deleteView{ + my $viewId = $_[0]; + + my $viewResult = $config->findnodes('//view[@id = '.$viewId.']'); + if($viewResult->size() == 1){ + my $view = $viewResult->get_node(0); + my $views = $view->parentNode; + $views->removeChild($view); + YAF_saveConfiguration(); + return 1; + } else{ + Log 1,"YAF_deleteView: view with id = ".$viewId." was not found"; + return 0; + } +} + +####################################################################################### +# +# YAF_addView - Add the view with the given id +# +# viewId - The view id to search +# @return 1 if successful, otherwise 0 +# +####################################################################################### + +sub YAF_addView{ + my $viewName = $_[0]; + + #-- determine id for new element + my $newId = 0; + my @views = $config->findnodes('//view'); + + foreach my $view (@views){ + my $tempId = $view->findvalue('@id'); + + if($newId < $tempId){ + $newId = $tempId; + } + } + $newId++; + + #-- initialize view and append to document + my $view = $config->createElement('view'); + $view->setAttribute('id', $newId); + $view->setAttribute('name', $viewName); + #-- set default background + my $backgrounds = $config->createElement('backgrounds'); + my $background = $config->createElement('background'); + $background->setAttribute('img_url', "./img/eg.jpeg"); + $background->setAttribute('x_pos', 1); + $background->setAttribute('y_pos', 1); + $backgrounds->appendChild($background); + $view->appendChild($backgrounds); + #-- initialize empty widgets node + my $widgets = $config->createElement('widgets'); + $view->appendChild($widgets); + + #-- add new view to configuration + my $parent = $config->findnodes('//views')->get_node(0); + $parent->appendChild($view); + + YAF_saveConfiguration(); + return 1; +} + +####################################################################################### +# +# YAF_addWidget - Add widget the the view with the given id +# +# Parameters: +# widgetName The name of the new widget +# xPos The x coordinate of the widget position +# yPos The y coordinate of the widget position +# attributesArray The array of attribute elements +# @return The widget id if successful, otherwise 0 +# +######################################################################################### + +sub YAF_addWidget{ + my $viewId = $_[0]; + my $widgetName = $_[1]; + my $xPos = $_[2]; + my $yPos = $_[3]; + my @attributesArray = @{$_[4]}; + + my $viewsResult = $config->findnodes('//view[@id = '.$viewId.']'); + if($viewsResult->size() == 1){ + my $view = $viewsResult->get_node(0); + + #-- create a new widget with given properties + my $widget = $config->createElement('widget'); + $widget->setAttribute('name', $widgetName); + $widget->setAttribute('x_pos', $xPos); + $widget->setAttribute('y_pos', $yPos); + my @widgets = $view->findnodes('widgets/widget'); + my $newId = 0; + + foreach my $currentWidget (@widgets){ + my $tempId = $currentWidget->findvalue('@id'); + + if($newId < $tempId){ + $newId = $tempId; + } + } + $newId++; + $widget->setAttribute('id', $newId); + + #-- add widgets attribute nodes + foreach my $attribute (@attributesArray){ + my $attr = $config->createElement('attr'); + $attr->setAttribute('name', @$attribute[0]); + $attr->setAttribute('value', @$attribute[1]); + $widget->appendChild($attr); + } + + #-- append the new widget to the configuration + my $widgetsNode = $view->findnodes('widgets')->get_node(0); + $widgetsNode->appendChild($widget); + + YAF_saveConfiguration(); + return $newId; + } else{ + Log 1,"YAF_addWidget: view with id = ".$viewId." was not found"; + return 0; + } +} + +####################################################################################### +# +# YAF_deleteWidget - Delete the Widget +# +# Parameters +# viewId - The view id to search +# widgetId - The widget id +# @return 1 if successful, otherwise 0 +# +####################################################################################### + +sub YAF_deleteWidget{ + my $viewId = $_[0]; + my $widgetId = $_[1]; + + my $widgetResult = $config->findnodes('//view[@id = '.$viewId.']/widgets/widget[@id = '.$widgetId.']'); + if($widgetResult->size() == 1){ + my $widget = $widgetResult->get_node(0); + my $widgets = $widget->parentNode; + $widgets->removeChild($widget); + + YAF_saveConfiguration(); + return 1; + } else{ + Log 1,"YAF_deleteWidget: widget with id = ".$widgetId." in view with id = ".$viewId." was not found"; + return 0; + } +} + +####################################################################################### +# +# YAF_isWidget - test, if a FHEM device name is already a widget +# +# viewId - The view id to search +# fhemname - the name of a FHEM device +# +######################################################################################## + +sub YAF_isWidget { + my $viewId = $_[0]; + my $fhemname = $_[1]; + my $ret = 0; + + my $widgetResult = $config->findnodes('//view[@id = '.$viewId.']/widgets/widget/attr[@value = "'.$fhemname.'"]'); + $ret = 1 + if($widgetResult->size() != 0); + #Log 1,"YAF_isWidget: Checking with XPath //view[\@id = ".$viewId."]/widgets/widget/attr[\@value = \"".$fhemname."\"] => $ret"; + + return $ret; +} + +####################################################################################### +# +# YAF_setWidgetPosition - Sets the position (x, y) of the widget to the given values +# +# Parameters +# viewId - The view id to search +# widgetId - The widget id +# @param xPos The new x coordinate of the widget position +# @param yPos The new y coordinate of the widget position +# @return 1 if successful, otherwise 0 +# +####################################################################################### + +sub YAF_setWidgetPosition{ + my $viewId = $_[0]; + my $widgetId = $_[1]; + my $xPos = $_[2]; + my $yPos = $_[3]; + + my $widgetResult = $config->findnodes('//view[@id = '.$viewId.']/widgets/widget[@id = '.$widgetId.']'); + if($widgetResult->size() == 1){ + my $widget = $widgetResult->get_node(0); + $widget->setAttribute('x_pos', $xPos); + $widget->setAttribute('y_pos', $yPos); + + YAF_saveConfiguration(); + return 1; + } else{ + Log 1,"YAF_setWidgetPosition: widget with id = ".$widgetId." in view with id = ".$viewId." was not found"; + return 0; + } +} + +####################################################################################### +# +# YAF_getWidgetAttribute - Searches the widget attribute properties of the specified widget +# +# Parameters +# viewId - The view id to search +# widgetId - The widget id +# attributeName - name of the attribute properties to search for +# +# @return The value property if successful, otherwise 0 +# +####################################################################################### + +sub YAF_getWidgetAttribute{ + my $viewId = $_[0]; + my $widgetId = $_[1]; + my $attributeName = $_[2]; + + my $attributes = $config->findnodes('//view[@id = '.$viewId.']/widgets/widget[@id = '.$widgetId.']/attr'); + + foreach my $attr (@{$attributes}){ + if ($attr->getAttribute('name') eq $attributeName) { + return $attr->getAttribute('value'); + } + } + Log 1,"YAF_getWidgetAttribute: attribute $attributeName was not found for widget with id = $widgetId"; + return 0; +} + +####################################################################################### +# +# YAF_getRefreshTime - Get refresh time interval +# +# @return time successful, otherwise 0 +# +####################################################################################### + +sub YAF_getRefreshTime{ + my $refreshNodeResult = $config->findnodes('configuration/settings/refresh'); + if($refreshNodeResult->size() == 1){ + my $refreshNode = $refreshNodeResult->get_node(0); + my $refreshTime = $refreshNode->getAttribute('interval'); + return $refreshTime; + } else{ + Log 1,"YAF_getRefreshTime: refresh node was not found"; + return 0; + } +} + +####################################################################################### +# +# YAF_setRefreshTime - Set refresh time interval to the given value +# @return 1 if successful, otherwise 0 +# +####################################################################################### + +sub YAF_setRefreshTime{ + my $newRefreshInterval = $_[0]; + + my $refreshNodeResult = $config->findnodes('configuration/settings/refresh'); + if(($newRefreshInterval =~ /^\d+$/) && ($refreshNodeResult->size() == 1)){ + my $refreshNode = $refreshNodeResult->get_node(0); + $refreshNode->setAttribute('interval', $newRefreshInterval); + + YAF_saveConfiguration(); + return 1; + } else{ + Log 1,"YAF_setRefreshTime: no valid refresh value or refresh node was not found"; + return 0; + } +} + +####################################################################################### +# +# YAF_saveConfiguration - Save XML configuration file +# +# no parameter +# @return 1 if successful, otherwise 0 +# +####################################################################################### + +sub YAF_saveConfiguration{ + my $state = 0; + + if(YAF_validate() == 1){ + $prettyPrinter->pretty_print($config); + $state = $config->toFile("$configurationFilepath"); + } + return $state; +} + +1; \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/YAFWidgets.pm b/fhem/contrib/YAF/YAF/YAFWidgets.pm new file mode 100644 index 000000000..d938cb7d6 --- /dev/null +++ b/fhem/contrib/YAF/YAF/YAFWidgets.pm @@ -0,0 +1,120 @@ +######################################################################################## +# +# YAFWidgets.pm +# +# YAF - Yet Another Floorplan +# FHEM Projektgruppe Hochschule Karlsruhe, 2013 +# Markus Mangei, Daniel Weisensee, Prof. Dr. Peter A. Henning +# +######################################################################################## +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +######################################################################################## +package main; + +use strict; +use warnings; + +my $yaf_version = 0.41; +my $mp = AttrVal("global", "modpath", "."); +my $yaf_dir = $mp."/FHEM/YAF/"; +my @yaf_widgets; + +####################################################################################### +# +# YAF_YAF_getWidgetArray +# +# no parameter +# +######################################################################################## + +sub YAF_getWidgetArray() { + @yaf_widgets = (); + my $widgets_directory = $yaf_dir."widgets/"; + #-- open directory with widgets + if( !opendir(DIR, $widgets_directory) ){ + Log 1,"YAF: directory with widgets not found"; + return undef; + } + my $is_dir = 0; + #-- loop through all subdirectories + while (my $entry = readdir DIR) { + #-- check if it is really a directory + if (-d $widgets_directory.$entry) { + $is_dir = 1; + #-- check for proper file widgetname.pm + if (-e $widgets_directory.$entry."/".$entry.".pm") { + $yaf_widgets[scalar(@yaf_widgets)] = $entry; + } + } + } + #-- close directory + closedir DIR; + return @yaf_widgets; +} + +####################################################################################### +# +# YAF_requireWidgets - load all widgets +# +# no parameter +# +######################################################################################## + +sub YAF_requireWidgets() { + YAF_getWidgetArray(); + foreach (@yaf_widgets){ + require($yaf_dir."widgets/".$_."/".$_.".pm"); + } + return 1; +} + +####################################################################################### +# +# YAF_getWidgetsCss - assemble the CSS code of all widgets +# +# no parameter +# +######################################################################################## + +sub YAF_getWidgetsCss() { + my $output_widget_css = ""; + foreach (@yaf_widgets){ + my $widget_css = ""; + $widget_css = eval($_."_get_widgetcss();"); + $output_widget_css .= $widget_css; + } + return $output_widget_css; +} + +####################################################################################### +# +# YAF_getWidgetsJs - assemble the JavaScript code of all widgets +# +# no parameter +# +######################################################################################## + +sub YAF_getWidgetsJs() { + my $output_widget_js = ""; + foreach (@yaf_widgets){ + my $widget_js = ""; + $widget_js = eval($_."_get_widgetjs();"); + $output_widget_js .= $widget_js; + } + return $output_widget_js; +} + +1; \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/widgets/fs20easylamp/fs20easylamp.pm b/fhem/contrib/YAF/YAF/widgets/fs20easylamp/fs20easylamp.pm new file mode 100644 index 000000000..95f8a5d04 --- /dev/null +++ b/fhem/contrib/YAF/YAF/widgets/fs20easylamp/fs20easylamp.pm @@ -0,0 +1,228 @@ +######################################################################################## +# +# fs20easylamp.pm +# +# YAF - Yet Another Floorplan +# FHEM Projektgruppe Hochschule Karlsruhe, 2013 +# Markus Mangei, Daniel Weisensee, Prof. Dr. Peter A. Henning +# +######################################################################################## +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +######################################################################################## +package main; + +use strict; +use warnings; + +my $yaf_version = 0.41; + +use vars qw(%_GET); +use vars qw(%defs); + +####################################################################################### +# +# fs20easylamp_get_widgetcss - Create the CSS code for this widget +# +# no parameter +# +######################################################################################## + +sub fs20easylamp_get_widgetcss() { + my $output = " + .widget_fs20easylamp { + width: 33px; + height: 33px; + background-repeat:no-repeat; + background-position:center center; + opacity:1 !important; + } + + .widget_fs20easylamp_on { + background-image:url(./img/lamp_on.png) !important; + } + + .widget_fs20easylamp_off { + background-image:url(./img/lamp_off.png) !important; + } + "; + return $output; +} + +######################################################################################## +# +# fs20easylamp_get_widgetjs - Create the javascript code for this widget +# +# no parameter +# +######################################################################################## + +sub fs20easylamp_get_widgetjs() { + + my $output = ' + function fs20easylamp_on_click(view_id, widget_id) { + var widget = $("#widget_"+view_id+"_"+widget_id); + var newState; + if (widget.hasClass("widget_fs20easylamp_on")) { + newState = "off"; + } else{ + newState = "on"; + } + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/widget/fs20easylamp/set_lamp_status", + data: "view_id="+view_id+"&widget_id="+widget_id+"&status="+newState, + context: document.body, + success: function(){ + fs20easylamp_update_widget(view_id, widget_id); + } + }); + } + + function fs20easylamp_update_widget(view_id, widget_id) { + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/widget/fs20easylamp/get_lamp_status", + data: "view_id="+view_id+"&widget_id="+widget_id, + context: document.body, + success: function(lamp_status) { + var widget = $("#widget_"+view_id+"_"+widget_id); + if (lamp_status == "off") { + if (widget.hasClass("widget_fs20easylamp_on")) { + widget.removeClass("widget_fs20easylamp_on"); + } + if (!widget.hasClass("widget_fs20easylamp_off")) { + widget.addClass("widget_fs20easylamp_off"); + } + } + else if (lamp_status == "on") { + if (!widget.hasClass("widget_fs20easylamp_on")) { + widget.addClass("widget_fs20easylamp_on"); + } + if (widget.hasClass("widget_fs20easylamp_off")) { + widget.removeClass("widget_fs20easylamp_off"); + } + } + } + }); + } + '; + return $output; +} + +######################################################################################## +# +# fs20easylamp_getwidgethtml - HTML code for this widget +# +# no parameter +# +######################################################################################## + +sub fs20easylamp_get_widgethtml() { + my $output = ""; + return $output; +} + +######################################################################################## +# +# fs20easylamp_get_addwidget_setup_html - Create the selection of devices for this widget +# +# no parameter +# +######################################################################################## + +sub fs20easylamp_get_addwidget_setup_html() { + my $output = " + "; + + return $output; +} + +######################################################################################## +# +# fs20easylamp_get_addwidget_prepare_attributes - +# +# no parameter +# +######################################################################################## + +sub fs20easylamp_get_addwidget_prepare_attributes() { + my $output = ' + var temp_array = new Array(); + temp_array[0] = "attribute"; + temp_array[1] = $("#combobox option:selected").val() + attributes_array[0] = temp_array; + '; + return $output; +} + +######################################################################################## +# +# fs20easylamp_getwidget_html - HTML code for this widget. DO WE NEED THIS ? SEE ABOVE +# +# no parameter +# +######################################################################################## + +sub fs20easylamp_getwidget_html() { + my $output = " "; + return $output; +} + +######################################################################################## +# +# fs20easylamp_get_lamp_status - return the state of the lamp +# +# no parameter +# +######################################################################################## + +sub fs20easylamp_get_lamp_status () { + my $attribute = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "attribute"); + my $d = $defs{$attribute}; + return $d->{STATE}; +} + +######################################################################################## +# +# fs20easylamp_set_lamp_status - set the state of the lamp +# +# no parameter +# +######################################################################################## + +sub fs20easylamp_set_lamp_status() { + my $attribute = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "attribute"); + my $d = $defs{$attribute}; + Log 3, "set ".$d->{NAME}." ".$_GET{"status"}; + fhem "set ".$d->{NAME}." ".$_GET{"status"}; +} + +1; \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/widgets/fs20easylamp/www/.gitkeep b/fhem/contrib/YAF/YAF/widgets/fs20easylamp/www/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/fhem/contrib/YAF/YAF/widgets/fs20st/fs20st.pm b/fhem/contrib/YAF/YAF/widgets/fs20st/fs20st.pm new file mode 100644 index 000000000..5fa68712d --- /dev/null +++ b/fhem/contrib/YAF/YAF/widgets/fs20st/fs20st.pm @@ -0,0 +1,231 @@ +######################################################################################## +# +# fs20st.pm - YAF widget for device FS20ST +# +# YAF - Yet Another Floorplan +# FHEM Projektgruppe Hochschule Karlsruhe, 2013 +# Markus Mangei, Daniel Weisensee, Prof. Dr. Peter A. Henning +# +######################################################################################## +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +######################################################################################## +package main; + +use strict; +use warnings; + +my $yaf_version = 0.41; + +use vars qw(%_GET); +use vars qw(%defs); + +####################################################################################### +# +# fs20st_get_widgetcss - Create the CSS code for this widget +# +# no parameter +# +######################################################################################## + +sub fs20st_get_widgetcss() { + my $output = " + .widget_fs20st { + width: 33px; + height: 33px; + background-repeat:no-repeat; + background-position:center center; + opacity:1 !important; + } + + .widget_fs20st_on { + background-image:url(./img/lamp_on.png) !important; + } + + .widget_fs20st_off { + background-image:url(./img/lamp_off.png) !important; + } + "; + return $output; +} + +######################################################################################## +# +# fs20st_get_widgetjs - Create the JavaScript code for this widget +# +# no parameter +# +######################################################################################## + +sub fs20st_get_widgetjs() { + + my $output = ' + function fs20st_on_click(view_id, widget_id) { + var widget = $("#widget_"+view_id+"_"+widget_id); + var newState; + if (widget.hasClass("widget_fs20st_on")) { + newState = "off"; + } else{ + newState = "on"; + } + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/widget/fs20st/set_state", + data: "view_id="+view_id+"&widget_id="+widget_id+"&state="+newState, + context: document.body, + success: function(){ + fs20st_update_widget(view_id, widget_id); + } + }); + } + + function fs20st_update_widget(view_id, widget_id) { + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/widget/fs20st/get_state", + data: "view_id="+view_id+"&widget_id="+widget_id, + context: document.body, + success: function(state) { + var widget = $("#widget_"+view_id+"_"+widget_id); + if (state == "off") { + if (widget.hasClass("widget_fs20st_on")) { + widget.removeClass("widget_fs20st_on"); + } + if (!widget.hasClass("widget_fs20st_off")) { + widget.addClass("widget_fs20st_off"); + } + } + else if (state == "on") { + if (!widget.hasClass("widget_fs20st_on")) { + widget.addClass("widget_fs20st_on"); + } + if (widget.hasClass("widget_fs20st_off")) { + widget.removeClass("widget_fs20st_off"); + } + } + } + }); + } + '; + return $output; +} + +######################################################################################## +# +# fs20st_getwidgethtml - HTML code for this widget +# +# no parameter +# +######################################################################################## + +sub fs20st_get_widgethtml() { + my $output = ""; + return $output; +} + +######################################################################################## +# +# fs20st_get_addwidget_setup_html - Create the selection of devices for this widget +# +# no parameter +# +######################################################################################## + +sub fs20st_get_addwidget_setup_html() { + my $output = " + "; + + return $output; +} + +######################################################################################## +# +# fs20st_get_addwidget_prepare_attributes - +# +# no parameter +# +######################################################################################## + +sub fs20st_get_addwidget_prepare_attributes() { + my $output = ' + var temp_array = new Array(); + temp_array[0] = "fhemname"; + temp_array[1] = $("#combobox option:selected").val() + attributes_array[0] = temp_array; + '; + return $output; +} + +######################################################################################## +# +# fs20st_getwidget_html - HTML code for this widget. DO WE NEED THIS ? SEE ABOVE +# +# no parameter +# +######################################################################################## + +sub fs20st_getwidget_html() { + my $output = " "; + return $output; +} + +######################################################################################## +# +# fs20st_get_state - return the state of the switch +# +# no parameter +# +######################################################################################## + +sub fs20st_get_state () { + my $name = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "fhemname"); + my $d = $defs{$name}; + return $d->{STATE}; +} + +######################################################################################## +# +# fs20st_set_state - set the state of the switch +# +# no parameter +# +######################################################################################## + +sub fs20st_set_state() { + my $name = YAF_getWidgetAttribute($_GET{"view_id"}, $_GET{"widget_id"}, "fhemname"); + Log 3, "set ".$name." ".$_GET{"state"}; + fhem "set ".$name." ".$_GET{"state"}; +} + +1; \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/widgets/fs20st/www/.gitkeep b/fhem/contrib/YAF/YAF/widgets/fs20st/www/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100755 index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30 GIT binary patch literal 101 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 literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_2e83ff_256x240.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_454545_256x240.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_454545_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105 GIT binary patch literal 4369 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 oBo%DI*Kv;w;*%(i9W@f3_WCF#rGn literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/fhem/contrib/YAF/YAF/www/css/smoothness/images/ui-icons_cd0a0a_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d GIT binary patch literal 4369 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. + * + * ######################################################################################## + */ +#menue { + width: 250px; + float: left; + height: 550px; + } + + #content { + float: left; + height: 550px; + } + + .tab { + height: 500px; + width: 600px; + } + + .menue_button { + width: 240px + } + + .menue_block { + margin-bottom: 10px; + } + + #menue_button_editview { + margin-top: 10px; + } + +#dialog_manageviews-table { + width: 100%; + } + +#dialog_manageviews-table col.col1 { } +#dialog_manageviews-table col.col2 { width:20px; } +#dialog_manageviews-table col.col3 { width:20px; } + + .loading_animation { + display: none; + position: fixed; + z-index: 1000; + top: 0; + left: 0; + height: 100%; + width: 100%; + background: rgba( 255, 255, 255, .8 ) + url('../img/loading.gif') + 50% 50% + no-repeat; +} + +.widgets { + padding: 0em; + position: absolute; + width: 33px; + height: 33px; + cursor: move; + opacity: 1; + border: 0px; +} + +#widget_menue { + padding: 0em; + position: absolute; + width: 100px; + height: 33px; + border: 1px; + z-index: 999; +} + +.widget_menue { + width: 33px; + height: 33px; + float: left; +} diff --git a/fhem/contrib/YAF/YAF/www/img/1og.jpeg b/fhem/contrib/YAF/YAF/www/img/1og.jpeg new file mode 100755 index 0000000000000000000000000000000000000000..35a972ff7128fee3e6c5a9a81a44187cbabc25a8 GIT binary patch literal 63488 zcmeFa2UHYI(=a+@6c7Ocl_*IiNDhL4iX;(`oCJhrfh8?D3Tp%f0m+gDBh9{Q?w;=IngZL89cQ>L>kcyq0A*!> z6952WfD{J+@W2obK0kQF`4+}Y2E({V;ls299KvsK02hQ)eh-5gaj3tCK`flJ0Ks87 z;O{jK-Oq3i&V^s{@*kD}(1X7c9D$?oDKPxW4+h|a&%?Zv;Da8d>+tXR!F>QYfAYuk zni<>_%6!`r?hJRbgxfRAXb3aw!0gQ6ZccyzAHRS&KfgF1KQq6mxS*)Gupj{7zW@Lt zuuObD0RjG3-`j@80>CTWANAp+y~6t$-T-kAFG3u=?=%zs+AbWcKiY-k_-ngxaekKJ ziTkr`x{u$A0~EmLVcU+L*naF1Kzh^`V;N-t7rP9cIEn#g_Yd)~L%?Hzl$eL3Z-QiIb;JoH%jn@OI+V zw=5L@odU3L0SaQ^72t=5!vf$^;NVfdn*NP|=o;2d2b!G{+f*jw-k2#JV~ z9Vfy0Ya$MSi}xe(B-qbz@Nn^Q35W=Z3Ghe-!9)r?{BxB21lQC|s8}2x2oRnMNh-X~ z%0{jJ&Qwsy@nMGy5qqe{*YQ<|lQ2zk(Ibuz42No&u2-tkqC&2-%HVW^A-HN;71m7VaA03r_I_njaSDYRy? zS|ZNSiJv6=I|b+eAOSlFkm4QHNdZU$o0_4D>=#YZ=JS_d^33Jd6=*uH8w6XI`7zz< z32`c08SdSmGabA$(hIkV+1tOAL`B>vN@_J>d=#bX3)e6)IT3 z8Vig|FIaiYEM9)z`mxa|FuVjXC?^sxT##IW$afT_?Egl#n0vL zYh)pY(-G0em@uWSbWJQ!VTT0-P-u>9OY)~$T=i{cc5N>A0b(bWf~Cgcp|dMq2-&KG zdRlsvd(l_@Hn(QYz+l zCwN`Pe3E#CZ{=&?7z!geaL{HciNIW&N9?F$fjvK#^IVL{kBB=yNj(fzhvVX z#0_DAvVjbS;83~o76!Up#8fHMJ`NT@&0c2U%`Wi8bf)zsdc7P?EH8aDxcIOg>0>dC z1$>damEN*QXzFVnUGjf`E*YemIFri?uoSXX z)*B4ZMDB6$ej306I0utL66A$pPq%qEoJU{jc5S_}W`DI8nAYSRJVS@P*fxj-UdL^G ze075~$2F1ZdMy)cXo+=h1fO>EAltlI=!DUB#aPXDMZ0GxJ!_GBu$$UH=w*ru zZS%!M$daZ$q~^evcso}%7Drd6=dnN_`m6{R$Qj$Uc!mWE$g#j=%sCWvZTED zs)c1+s?C02g9=~BmLWO zw>3R1kh~~g-`?0#)RIMhA_Et_^Z7K=eI0GEU!KAOLzl2XXG_%W zc|-U~lK5_i`P5}n2q6Ko%C%3gO|PeFWKQ~k7NczVFnjv*7YnU9GrZR^izYl?^av@W zH`AhSD`)Wm4?OprV0T6x-y9l}b-DT~)U3lk9XD>##(%ZV%Nt%MR5r*E?Pa%7Q`hL_ zXo&^nu>f&suu6Sne%9s{tAV+0PjlvTul*Q$H;vUW8B+PVkof9t_@=jNC);b3a&9gR z+wrZN-u1S^pLAwE(Y3GqVwO-^yKQl*ra-DRly{czZbG(h;)2@CQ7q7Vbx~7P-oTOT zL~3qqf}1qYTN*KY9w$Us?^uVJ>4_e>XiF((rZ*RwSY5APv+7e-w@vDW3bY{4n7<`e zT`5hh*iD?1evbtn$(T#)Q~RPs(sk(wCSKvVtt<^}xb90z?=542uQ%76dARupLW*K? zy=;Ej#>9$wZ&EbTHbRr1+;(rG1}jYyWx zUcEU_TkCgBN=^Yo8>pHFYF=vg8}vJw>nNvpVU$<$M?O{AwBz{Fvy(t>pY3ED&9U1+?qSips=?3`+xh zK1!KOe{`zOv4SaBJvVxN`mJYRkkhS-`a;yG&EV(0eQ&?cEiSRe%F0;7K8bT}=Qn~s zy-+PVy|qubh|$;TAL6nNe8DjAo}PH`R$*c^L@MyP2L0pE&_OQvt-LL=GR(7&?vxWG z(evy3i^GotY!}^>^BF>I(NuT(o$e9|_G~W=E#38`6v(}3<5>s_B7FUgPooNIutkxZ zcUMUQ3moeLTN@tgHp{w^i0%A7?O_1}>BL#4J=b(BaAhj*0XP@w&-Bgmafs*25#3MW zsb`mn!UFsjo2rv~qg#@*TfPIAV0isrPh^wNe)0hDwl7RyOI@YQ3w|Uk zG6v5!uo-NS`%J2c3~VCq_n=mD@$J0orB~ux{?%q=Lk8tRyc}&)gU2YqYs;QP7DDj) zDb1uU+2FLTp7b3{+CIPF$TKcF7I%vpX!h?kngLsqc~0AQ`u&V4MVDMu$WBCg4J!H> zc*Um8Z|!Sa^d{YPQ{AMeM_7KoX32vEO37B8x*A&#s&XW405@9Gj!skkHowZPI zG6xuQMc95#w@u8_rR4dmE-%YGb8|aNF@4(lZeDIkpS@5YL(-;wiD%?w)}yl$ry0G) zC9S0bjV-+nI}7-dtzY?=;c{>BW6GQhtDg!7WYsFQyxU+2>b|w?5*4iBy7>5=n{}Jb z99>RJ>%P(jA9e%NE&X#_19S$92MrJ`Fr2uranQF;ot#s}SJ@@DVDW6*4g3v(gA)Wq0w1V4o z!&23d^lNmzh{S0Z!79@?3b-DZ+;iV2Q+V5$yd6F;3vv7gLn3ZP7dIttiuRZGeOphE+C#LhiBRc zf`ckyOb5|9iCARR!K`yHr}uff>9o&wf2PavzC5wu1{u3;Yx=x$cv~+-Sqm*;eK3_{ zTY#%H3{c*R2d2oPZ7TAHT(=67R(d|2H7lKQoA#oQZBQ7v!X0`$Z$39s@!kI2m-tuR zK1qEZOD$FAcMKzXboOK)Wv^JUb%0N-?#kp67HB$eKioOM^FnTV_6EiY5gwg~6ukKI zTw6xhZN9hqy}jlrZC{Bwqm^mB!ro$%^+mL>b27oJ7_-_JL-GToXZO!N7K1H~+0AWB zZ1+m{lE!5h^4nV4_Vso1k#S$*wvL0t(;7$0+LdFxMrH>~97esZGoV3*<-wNOY?g)< zd1$)0rP18*;sM*Sac|X)(d3r-5e-_N{>|>ifSmNq36X{PU?&)Sps37D#UjawX3%zY z1e4#TLRhkTZFzoTLLkOat9^6CgSWNh>88bNPoSErq_#LU}0B?@I(yG8n@CA@lr@PuZ@AM)f?n;YgN>{-Z zF{#>AxV@j`3T(LHGD^1jlX$WLbMu@99W68Djn-92JU34M@)x-VB@;8go75DF?C9xbiz-aZYP)1zl;7->WdCwf+4umjtG-|F|_)T%v>~yTro_LUpmejrggMVMw z>~dM7*>IC9YyL(~>B`m~xS+amie_0-HJvfb7*@Smz~5UHMX@{BipoZ9pyq6f#yZbU zO@8U_{W9G3V*lO7*M7Xkf)jVRoL)9)wzs!bZ+z*(#OsRha=*z7gD}L$2Xs5}+rAOs z?o&%K@pf6tMWxqOf(xh(<2FxBJmU2R7Kl^0fV|*c@}+yYuMpY)#qh3J%^izRDZTEH zB0Fp8xT-FTOmLm8cgJUJV{@N3`>a!$Ng}vfRsttG?Y*kruSK(GJc9N$xEqq=Vn;L@ zQ=kz#cCs{uA0P(7;oIKny%0$WQ7mv7D%`i_ZR0vAndgwZlu@;bxXq;5$E3vJ6R_<~ zHkP*GEnVtUIG-$Qo&2CI7G<|6A=O$VMC5$SD;-mDFm^z@j(V-Hi|U+RjZ$qi(c&*I zSc{wfqR+!kSAwr}Y-mCK4&BysZ%lhh$2?>&ahz&uvg>(6<&5oEMWE#grxBj*J+0fV zdBt58bC-s6iV|nk>7Foze#Qb5RoUPU?F#u`O>$`F{XKcDd8GIt=HqhI<5l~DvuM8M z^gZJegy`HNxCPVLt$ucqR|x{H)UiEt>rO*{o9UU40wcoazuZmix#+U*S|zEf(P58s6bmzGtYpcE1p5f0kW)VKRC2gA1e7vvf>4&t==b7~r@b`KK4seM?rQ=X?~XR*fINa_Sn zbTph=P26FhDx!(l$&NBW=cFSM3-4%>WiBc#JCDjZR|gJZ3byK>$O4Gs?KK!JAa z-TZY_=*m>q^d6p7VPt`>r1Y(t-X+%+^=vNb*KX^vHs;`}-n9=4;3uXq=IkYE)y=u+ zm@AZGvg=)Xg7qpJDfM*GRMLXImHyx$N^fe+KHy~E>T|nQIUmQQRbD2AJV9cpG2B_S zJ_K2nvu)!+vI?f{*`Ba|;w&njSlm^aUJ>ja8z1pvZyS@al-LI8EIA=1t3BBvbFIF0 zbn8vXsR5Jc4UtS<3r%BNm1m66S^LJ>a~e=Z%k;QeNs+i-L+k9a1wEZxxiyip-L-~~ zf@Z|}o`v`iRgZ1fLquPHfpo~OG$QHghmR+4w>DJ-QbcZS>$oj&pG*^R-*yQcly+6KiARauoo z^agv9AKfauU+k$c5*TV^L39GObnWK)hcawUN+ZRWbE{lPEl1`B=e#79C{@tZ)yCM~ zc_)XOp3O%&8ayyDwAjOGKcu`1k=M&93$_(Rf35^)OHNs=b;tN7x%%Gd*atM@5UeyY z1>?ln-sv6N=j$zLOqV}B^~HHeaCL3A9%8K3ty9`fk5bFGQ;tAkx{KFu^YhmfK`ka@ z?c=**T{~0^BfG5U8m+lD`5m&7`b3v>ragBVt8+Ha>`7eO919G79?h(Hhd2#UY;RMs zfn;ekl!;l$Cf^oyA0EuX8!=S1MnxaA??`{j?kUjG;KDE0{?yE&cwZQCz*-aAW#-)a z_3NNLf3^G<#Vr2>g5XU_BqsLa2kWK6_I)j+nPJVMf3<=1&4O8Ejw$1lfY=8iPh5~) zay|x2NsCQh4n^@!##=T4`Ne(B@IgtXtb_JWj;|5D3>y(j4trrsg+0^97aTa!Y~qvY zND;`5Sff4^rV0xXCNCOg7_AL|2D_2S;t104!$?K$W*Kq=0nX$F8>G|M8|7U zN=*`tRU4>Q1iHdvCC3-7p3zuEWQf`h4BUN>@Hn@5Glg-H!4(UPiiplIpx#8BnC&Z0 z>d|d*oMzyEc1RcebS07Vsudq=GJ-xCG?a)DTM0tW^X10AgN->aZZh1~MWuxPaTfeA4 z1GvG`csgW@T*6pjI`s~=cX&%;7HY3`I{p;MwhVP17m#67u3M+k`pKm|zcU|WTq0q&zzszV zDP;N$uCf{|;MJAmY=>h3tGe$hujg2xne&XX?w(r1hfVPwJ)Y9^&R04}c%^qutg&rE zyJ@SWTe9j#8n~DP#W+Vz`tI2$%GTo&G0sKChS5>t$kHYMhUt^z=TL9DPsC#ZfBM8! zG#=gTODsU1I8CiOG(wA+LSlx%F0YW4v(VqY87shV9Biv?s-fm1v&KJE9Xa);2&v&0 zHZN_vxGB1aco|K>%9Tvp^x$lPQC^K6%X^Lr$}0>9sj@H8mZh(z0F&4|XU9ehFrj+O zds=8F)!oD$%@fgyy`Dj2XLfePt_M8sLy3Hy;BuNB!NVE*XfxVlhWLoXl=&Hk#Ppf@ zz(%k@#N48FPtbD8gFtAM&x3}5{w=S-v;e)xR?()ctmVr5>6eYw5s3FbfiX8)X7VL9 zs6-wZNpXm%$Zo{W*R@m*ai?zcS9s8FEbwKeHHgv=prqQbxA-IuqTZsC_&LNBGWZHY zv>sc^&|g~za*tQq9m{sx0SKi>$Q|0XGA!>&58guDvw=+z%+>{O}oYnS*?G+aeiPvz< zN+50$7A8wp^Df9456m{Dq;~`xsR(aL#jZHjI^<<@LA9jMR-#9P(>MBVKlO7tTS9gzGxwmGfn!i6K}+;)r}%=saL|w@Sw88YOiZkR~UoRO#R4g!_#zDT(VIK z;o*9bO*U&(_4TGvY(%$bjkyR^R83yFj@GR3ZEvG6TBTJKweHG4ni6Vgs;C{F-8+UI zz%H@T{Ba^Fc!>`XyRN8=e|VY+0Oa&I`T!msyF5L3>WND({Vk3CDDC8@(4ZHy6RLSQ zZ|L3~YqO3z$|ru576#r=g1^HvLjWMLcZAtFtGYPbyEucPc}nYQWqN(XYdt58;Qn-|B-ps+ib9 zHDz@*LC_)k5q%Pe2slOH?GO4Wf1yv+-WdkBa{|*T4>4uzo$Y=U3({cf_%otz;iUXC zBI9T$^GC$a`H#pgQyZtBDJmAuu0JEPwl+6@M!;tNQS^0)wS}sw6$GsR8v}oE20Ww& zxn#!7YzB8Ry$b()7(Ke=9qs-GyKeJ$yz7o;np$?wa;)k$hm!btUAHk~{wKJ)la2Ec z{IJq0|qKfI3r5CMRDM8W0}Q~}^MHwRN}z&m)t4qiClAxY6OKOq7~ zaDDLp14sA>!t)2@sLUNO4gmH5fc?h{Z}u?xACs{EJ84I}AU-Vn$5_C<3XXE{_nmKy zhoK|8fNx{x>|qq|P@>=3a~K71K$`=cG%!E}KmiNj5?}?k#t)4!2u|S-NN#F`cZ=joorwbsFSwMt;5cY^QU?Uj?zHz;VeOP6j8kKOW8ygj&K+IKY+B{tfvMa+soMYrzaY z{-16?o{OW+FViPj<013^3{iHn_;rc}i88Tq)-?bp8i)?H}Mjqm!6g$iQvj zj=wOM;#>LG<$orCSpXHd-65}!Im7M27nc+C*N$`C2JA?GgOZxUoxu+EH#i9>V#~jx zAC0{WhZO;&;15^&>rwdIIHNcUgQiSJSf`F+hqD*XQTz}epqoF8gFip;_X-TY1ZM~^ z2wLo%1}$)YTj>0@(D`klb70@(D`kl^V>q_w}sAc z3!UE^Rx5rL(iWI4`fA(S6Noj`nb{Ny zo@-08tW=>`m|TJU7 zZfj%bBXdEECY9hG7Degu#|`(76qlVthcC^t8^OKyUf z;Eoo&{Fg6ZJ}g5(fCt3jaq_TpHgV^%b7K8b!VRbs#1VF68N_^8B53vE;w;GmQhL+` zh@;cbV*kV|2xx%hXu{)Y;>H7>AUnhCES!#b_ameI4^I&Poc(9=pE7~$`)BkYlKD}( z8RRFPJ$RIV)KoJFFVqHV3$=4Tq=f&F+25pKYp<;Q6a7z(_))B_?N4kcXIWRU{r{(aZONARESSVR!;7^(2u+~;1HKXQT)hj2IiHM z6A}LJjJQTRN0?Y}t2!e`xc6P4~9~-7KMCaetQLpG5Nw%?WPq>}KK!y=DRO=f_0whneCpj#GXR1+g@- zvpDQeyez!`%dPmYCHH@}6}*SD%{Q^|{#9Z}X}`=&V55&f;BwWj z2?>cwNRJ;UIewh<{Cae6O&<9t|3u?VfEnR9LD z1Tn{>W5-XQc^ob)_qs&8OY6efwJ+<3e%qifPa?kgZu=M4ZDI<#mhMkqW|TMe&+c5j ztf&X`cov;m(L6A>%PD?S-^$ZJCabb#aDMNbk2gF50?_XqJ~1Ai?U6O-p_{pD1Zp6~ zgboiv1d&yD%@Yf}OCRy$me{;XOoBI>Z|AFMcxP?>UT-55%F4Qs2t2gwo zqINxuX3=bGcP<_$S!m+96~X^(Qejsk_cDdP4)t~L`@A>#SU@L$cTX_@V^wd6;ao$Z zjkr;B9K5^P)NVW3E#Q}m?%>z?uV133bF{`L^0~mT$|hPdp{7_Mrcej*|LOcn2erFT zrfg|tYI;Dz}67*J@ zt|Q^QNCKDYvFYN_#P+-CGeYTPIWf;VQB%HSm>Z2)Kuy_6@`1LIvVwZ~Pper!q)k=rB&OyNt=!ysY zsB}8cCYQ+P{{$VByi%}A8=sqfj1meIy&u){3YnQ#=ZVjlv$#JZeblM9eelH%qc}n` z13Jo56EN@SqfMLe`*j%pUFhFa5ugvZe-!=TB0&`lnbw2e&s%MVmwC;M90m-MB27!vS+cjN4l0hH-_^}-fAcQcx_H-rLGMv( zv5eK$r?)jBrGot0ZXuIFmzDUhgvee-zI!?NTs=Y~w#mt z=bd@u+tD|gV|Db6V*MF@Ok{s4;LlOeaoPWfiGsOA4RVn*mc5$nDVFVQ zRyyOZ``o!P2OeT%6$9t$F7kEVo0$&eRGNbpmGoQ^mI!xoPf#+aY$_bOkq~?A5zDIT zw$-$`q(VrR!};_i*Ns3bxqw^9yLZ~X?7fv18kp!iL#mhvn9POt`P1K4gnmgoolSO7 z_sPVXcAcQe0oBzP(V-?InS}-1gAW>na|)RTpkKBOi*ovRQl^Ij&L3O5tC$U2Yn>fz zfrB6Pd+VhPqeh55y)WklU1YrW@iNQh2rq+|dAVQ8ABWMWgsu^&J|UKPNUj#b5=e7( zbp9pfqLxh%rKlqbzIwfmqa{}vXXIRhS(gjV6Vpvo>i~G(yM=RCw+b=7Y7`NTS zTpv{w;%a9d$S z?&BK_)5scnhTi@7DiPvYNxM4c+fd89o6=u9%j~z^AmyDTMdkO$e2|k1CP-6 z;}NVu2+a{ivkoC==NR_sgI?5ef}IL*X3-@jR%7d9Y3~2OyHj=j&pMU1)rfyXc~GyH zL^GnIq^c|dGEVPw5&Tl#v=qK|*$z*G%;QO2b)ra6X@8c+bhFx((o917=e;ZVuZ|HK}Vk8H(1X*^_8iV0d6ww!!O7NBgP_KQ>J;{Tcv0XqL;G6d(*i-?KK z=Daz4%^Q*6EGY(l{2%IeeRmiObl-|DbxEBoPx|ZX>Cdyw_f%tS_y4$K1l-D+Z~832 z$JyeB&+t?%%WEoMygkLBG2O~R$t}GOSAXm}X|dcR6Z($epsSCdky5se`*rBD_WDeG z&5Ck8p_!Lv>OPQN+1ue&9&ygTTpokh?}>dydw8@mZY7>D{NO`=`BL`u!ntfVPgg%u zjXQemb^bYaNf#TG9vLgc=$blioGBOBdp^9g=g|04;l&wMil;>_bRP$))(i+^H62R1 znM22|vA`KMZwgGytxkZ&uC%V??wqJDy+IBSwvrdV?4};Lm}U1p5FN5Pn+#2fy;w9(B)LKMAE%w#5~8X z!OG5!;oE;-w*CX-^RYeubGCzv;oR<>i3|_4LS7EvE>jR{k~f@G_oH^{3a2BSik;<@dq^3t(=0 zyJ7C8Vu7bqFKb@ap6}E{{&@k>(;M~QUqJN!Gh3#Ocbm`UB(`CJ3uKf+Q92@!dH!Y< zGTvUMr*^WkQnn#4@!`#J$B4|xQ$RmvOrX=!Sf<@`pr?pp+V>4(UzA6K4<-?4eH+B2 zA6mQdeM61V2AbM=>aa;el(adTwjsmC6Vw5@ShHvEBTGGUKmmSm4&Z3;F(rdsOSjyEdrLDVUc#YR0Du zmJqiNFx|Gi8|j~NUl&&BF$*+&BD5T`yLqcN0}Gtz2@=C4D{WE!@Si^D3*8v?v^ zA8W)%#d!@QS(9W~AK`oB>=AKJPwNZRW|VY6Cz|)~ohkQ@d~Z(sgaLB}9JA>lZ`?rF zG@-^@8jtGyztSRtrDrZ;fq6sFPt{};I{eFotUC#+F>xJqD6@HK4%`JOeXnZlOZ#pM zVlN7GNwUk11)yR(Ax5|>t1|~v(rBeh#6c+N8YJ$XLOzb$PckuzhyfKTHl6!b2jFPA z4A!f@oCq#rQH$wJlw5Ds^o^EG*R5gLOyj^D%e)?V_LR> z?j@n7q-TRE<}Zv<6sl|dtGHij*ni>PKIky+TT9{p*et_eaKCXn_!;%*i(`{3)A`f9 zFA;pg##|nigPpy~B5i4*bj~R`$qL=L6N;yT1YDc(Y!uSV#$`aqK>xfD&i@#Uwv=vN z*{Mt1q~MUd7jR+SGr?5!hn7Gl&q`F(sdZ}Ue85;M1Ml)nNB@>%vX`aTRavlr1JS`o z*fzpSrkcRq&&wgT4L;ST8LY)hF(>-jL8&}hpMcpWO6?VT(s;QZy=YvL5x;%A$;$Df ziwfs_oK}xmc9w&V=EN^biR?mc_Gw!kweHQN$q^ceg&Q00f=>6IWN8@kxWS{XWe#cF z@}0Z;wyO@!IHj+)1$ek_c5TFqj45{|(QIjFP@aw|SXPuM=HH1Au4}s=t3dqb_`khE zZhN+E#P|ezBhDUUD?vs&2R_4jZmEkaw;}YNa9)=!G1f-CPt{gnV$7gNk4i4YB+|i@yqY4SPK>r)}EX%}?+=O!?dl zcW2ECcb=OEJvt5a!fsFbf_6SeDB}*y%UA$*^2PmxN%enXxu##6k-oRS zgjega`rwyBoo1b-$2GZ_kfbT-0XW|dG#DLopcG2@0@OZn?M4V^!%`CPAUXYFe%f91 zJ)a{Z2vnD9nRmv+y-Pp@%8S=j)-E2YvHoE_kVzXS92+R8tU=1z>}Yf`FHJ6V6n~?c zhclOJUZXQOOrBO0y;zv0LQ&KpmtZ_4v76A>in;UYpaH(AdP&wLTiIH;RYaJSnjbnh4w zlR6@&dCN3V+ADmLVy8GT{{Y;^^@gwKAG|{zsEnOIam%7@p8%)3VOr&`l^xb8= z*O>sm#$STV%4b8$i4Dr2PUl!j&JX&7zRZQ8u-8|nVsu8PB0jFLCZwbN55&S?uPv$P z9_UW>v^Bn5X7AeA)n}lj;kWXPlMhg7Egl>!U)mR?CD}q$25iU0Tz0&UfZM{Y;nbxi zN(66?v-+NHJat3uY8KH|fs6mjL7Y5maEYJVmN_rr>H6vZ1sn@E$c-Rjx;LSs@1K@m zEoG-LaS(0`tp3ou0u$=U3Ds}WY^LJNl;^y;X5{-atA;?M+=Ft^A|N>H>4&&^ofr82 zoxU%#+m}#+!g?DL0Xs`M(+LdBRv%blHyot-P}(m<>*~XcxkD2Df*Vj4=igP)-AY|| zEdw1wcI)1$b;~rEv$jum(ejY-ER{Q#O+}D2)u3Wr+{kz`RxfjRZLP)0R$yRI**cRW zG4swHA>R>5O#g7b<74V`?#IQY`{9FivNYK#yN&w2ipb&u|G_m9>Ac~9u=7NeN^GtR z)VN{>j~}f{Tvm1BWCr6#*is2ehgV@?Ig)pXHnbS=+&tB<~nQDD>fx=z8U*tq0iLwKR2uQ_Hq zDbJE(UT14{a9D}EdDAk0?;2??^=YKejuhuTF}4e@&mSsMe%Ts&SWM|)O48#I(`2X# z*WHK{%9PW4v>f%=e^VIzOSgL+Q&B}ckPh%&mQjBtiej(m16!=$C59SP#wB%F^`B8S-NE$3ds*#tVVe1yB8TQ=cnR<%A#yT$mpz zS3W;x{9P$JBOO^OJB6GXixzgfV6%B4FE|ih$6%T1OEGDb?KfQvFUSr_Z)OZvq@1XuQa&YGNbaK2OAb} zy%O(%czbaA*zI6E&$~+Wl@;ad40V;R@mw;=*Bf|LHJ(Pm23)-ibQn%AVatKDc3Dd;0j(tP9jvmqKpJr&)=|Hxy4>E83l^O}}yxs?dFk za_HGJ$o@UuCF6l+w{wAd9#tO#Ag|j!T!RL;URZRMzx5|fJ42L;Q5U$Gla09%%}HFM z+*>iD0PSHZieb3EpwgYYWKwFW&hJ1`Oe@F?-4|%`;O5!V8J~LiaKIQgBay4V_MYt0 zlKz-}b*O~LC_9-g9Bx(Ic1B|>&s%N-;ej5j|B57ahuQMI>B|diuG~t3WXgDXr#8B- z8ggIJG8!QbI8_+KE1Z5z3=8Cb{hZt7#eNnMFWfrRYJGu0f9y6&iCFlI2}LVit<^Sd zhDqL{uW%5Ni^`o{hY+0!jteE4Mm9Z@eT|VM$)lH>O;O2)8=)**~)ge)TqaoK1la zelj_}FV@>z_PAy}ui9Kv&T`UEp(m}N_vv$T{g1-(n_Y;J=Ce0*S%M#ZzIWsLpwm=7 zpOtuibZI}EGn(46tSyc6!eldl^jSH?;PfZQ-~->ca?J$cX6pU&EJ=z?+*&9V)hTIL z&JJycYfM+Pcx(DLc%)1SFe%nB{@W85r-MW|t?(R7$wX?EED@{0;fVQd6D**}cc`W9 zko9HA-t}u8)$1`|=LpEs8=i{_qWhqKMU+C2s%xRQiEe*`X{-)4*0_prui!g2K(j$6 ztya)&Gf~~O%vxCtZb{r<3h-^Qp1T!tnz}zrW+r&m|bE+pk7aJJ^w7)Ser;6 zep|zkV;=UVdIs;xlHFaejILXoqjE(Q*S4K=*I%p27Fk2~mP=^-c3@&a@~bj>ij*Gp&fbZhdH4b7&VDdx*HOUyw8- zu8Abe+4VhhGKb%a(vxkCbt37Ub*VIb9CNR+MbyrZt&h|E=zXTmJ_$dFc4Jyi)J1Eb z2?@-C8@K9@{i~YoU*2Mc(JWytMUwTELJ7Jd0VDdaxO+((a)mfWMIIk$Tt^KfJeZbu z)07gc>0=YNj0JCQ>ED?WI(0>uOq(XDTyiOw-lrY5th0y(TxeG=3&GjVM0$I-%2o{w zZWIh%O%^kGPH;o^)bUr&O{p5xiWX}@!IEuLwXrX@*BXTfbL+B#zTPkFxt4koM|S@* zmn`Stu7zw_aTgCI?$_CmY+aJtu(LG89S_e0v)*tu{HovCvsM$1TpPO>Z+E^@X-*+Q zh3AUH-pyg_hJ?g-wTr6_y|Ga(l~jIQwzExr7HU-2+vuOUw!TY~)A(AP*S^oY>SP>1 zr*E@stspKr9i%P;%{ZgK;h8^wvyZTtCiD%cRM^*S=nYp5E5T!Jo-L1*d#G_CqV`y> zMwh<}^MN2Y0#8BujjFGTt}RT{!$9^Vn>AI=Ge@}gqQaOiEw@<7Xs(A7^a|aU`#pO1 zyQQgqE&3D>?((6Mr3%bc)#kX2F6s?}s%y{AizA8XAUb{Rt}9iq=iJnX2jn`ge0pay z*Y@0$ON;Ax7FE5sFwaed2(E@=0)gJt*d@!DlzHUYC&_m{Ak&0BNGK`pK7B&BD0(^U z`EgkEh;Uf*s8V1DTLDtu>4r8Njnv!tHRsa{qFXw*})jW{*ivUV&b7k9X$=tD7Sl0L8rNzu zdY~eBjvbXIUw`p4S@3QnZ!2KE>D9h>6FwL0uXCUEp0D(~%HSQ`eQWT)GrlSIai!%e zri~nFSIv2=s=954U_1t|3@r0J0WKwUOfy^x3Uu`eN}t?yYM!8Yb$yf_Ru{*KnlCGH zn3Y#N#rEjo!ObcH+ZuL8B5Ih;VlT}T+X-Fcr8 zR@H-AdNsCYO5fbLQKA|nPhD6UKN-{6u!=$2CzwUDRdT@_Q3A1OUe zfS3>!Bl@K7QQXG3wW1%T`NmttPEe%p9pa>v@)sBJgkW`JgQDS~HS zw39tA9%`Ed+k2B!QIH*mZ|2Clx z9Y0O|SxtDH0ikeJwSB=2T-#DKnN7CPcX;@Z{-+uA-;{9hkGrAd?d|8?hvy6t!6p4wQCU<^5XLwxz`MI7if~l z(RvVHFY4XPyfsxwD#g&DzOazAt|hThz>E&zJ(m-y8%>F;SJ zNNT7WRNq`t?m7SEr1i6z(2v&(ub$Z=5$kt!Drjn zueH}UeWyUaXtlPv<4>Pv_)`kusGU;Ny7~$@ai26d%>4(SzK!62pA1%+BW*Qq zJ2>a#jx}{&tE16*GWj{_!71a>^}8)?n8pjuQh^1*nvEB2z9~N_*F-V5s)Bdgb9}N% zn;LpV^QUs*|E3ZI6&&s0KRAr9xdm!C&SQbF&`D@>xUtM!;%XbXrFafn)zrx;`kx1_ zjOyR?U;&1a^B6uOpK`~XH_>0FeLuL){B=K<;YG$#tG2HAf3f$TK~c3?yD$bsL`6Wd zoeE~3yy+qjHs~I>?W}xc26X+u=(Imlpo2aGMDSMH@%^+SUWVRo zR=_te%E(2OAOlw44hv+_2D?1KhM8K{VP8Sc9BDuTyB<+*3X*=ySeK{q zsg{|fKtT(P)A}!^IREPlG54teyu8s2Y8{_vN^BZ3-h*Qmp1qt82LY6-CJVZ%8Ey!Xlea*^1DCB;cWP!XQm^a2Ttw8uIN;l6<$z?%|I+x2d)#N9dn}qGr$M(*?{RGl&yriw z*ZU$Q*<5PyD;|E4U>=SK@^JNa{3p;Yk`+VF)vR-ptAl!dyAG12o=+E2LI%Og?9$VZ zJEF-|-2~TK#?jGR4N(Q6 z^&YQ0OUy+W1{;>E5cF^|BM{6Fy|gIM6V*Awf;BB4_Bjd|>jAC}DZ2_B|KS3-jEzUn zH5s`26XydfAbfzEr07PMmx7_oW!H`uf^w~4Y5F=Nr_$JipS~sC8N%hr@Gkj!Z_MvX zy!&xLejP#6a{yzdK|%p;7%1W+0IF|X-k%(D+ZhGKr@qC@3Kmpo8m7>=OVgL91y5|` z9TgWRNT!aY_5lgE7A;9_=Pq}CzdZ#_at9abZwf}-S+ErCJ|vHXz&_>>=dwqI(fu-#_J7c#zCHsGaO zJ+Vh9L{)OYIXhks4@@m497&FC;;EaC6u4l5d@3ifycPdS)EMfi=K(Kf89)89kmM#i zXhZjSh%!6L_cVekmK8rgnFX;XXx zZa2PqPY=9(MhXQKBqOGaXm!8NWZKzkyB+$M<7Is$LdM<6O>{+$iQd z4PNJKNG2oa>7*c}RNG;||y>1>##jHVZp&FNE$D$cK)>EF@&nw zLFPlE5+Mzjt9>z^!D8J6zk8?xNAN;k-nLTx{TCYy!=9G;t$D<+w0?v>jslKz+w6*( z^I`et5Lns?`2H}IZ~s3B;lI%I{2y6ZYhZ~HF@S9I%@MHH-=4aaO6tY&HxV19S^~u% zf7q3wu2)^BKFvA}+Ts9U;b)(LFFth{cW-ibC(StI+Wwt=;TRXG$=rT(;QZ#fHV!#+ zNFs~Vp@XlR&y1og9la3k2c-oAgl#~2h4sVtukUo2y~ae=2ywi-LmERGaiyzHbX6_U zrONc`1%&6{vv5N&PLZ!gdS0H$BFR*B8-cDF8BRk2$veW$*OKCuR_pfETRD2W1S}KW zbG6$33Rn2Q^$pkGNi-^!gbc#_rB^K$2Q&gVWgBCyymNg$ljE-KOFgj0Xq>Nwq2=Gh z4i$b$q<@7|;s1B--@XHGnqE%`WE{Lf=P{peIa)FvGZ@52N-!BzR)CdXA{^ZNVLBI* zg^&jh9Q*hBhW{f*BxX6GGVhubE8M%=H>FlhouX59eo6@W`YYzrqp<<8h-MRT)I2~? z7Lq$c;V<=J;{baOoKLy!2RPs&RvWX43Ax?_Aq&;;(Mu;C(ygs*SSZ_38332=NV!5V z)5Ac9&&5j(erYSRFdD<_Y;{JZ$ab(2Ses_!$6{!tKXi#7Tj~%j%eI<(P!2wbwEhg<0^c6@rnSosY zXeIK{AJ!L*Dh6^wFB&AdAZjw~QJgO={_4TnmAL!+R{hb8%Br;OxsCcJLg6E^r`gs_ za(v0kq)`G;0(!0~!fUIwiwMVFUfI{8niX{oCo@{N%Oy`NZYVThSF-^Gla_~K_Dn#x-fw6f1QAL#QyeJ^z7bWjF(Tw?Eq zcmhowk@NkSCK_iRhEckl*Eg|IbL7%+A-Jw4KR)g3;=K*i6dim1ZmT);O5eL? z1W`?RAV86QDaF|Nm&zd6x2de8 zUKrF+d*ij}gz-hB%@4fRJP=yf4gmDH?2tt?gmPb~PK99GD*z@T;|Lqnx`@=r+T10u z)mYo8uTSJR2`OcXR4QC0S$-7G-uafCXpo+k-r*l3iW*1G_?MDNn4+blh@}kZNzS)i&?#>EdufUVK5v#_ z5$3uMy^RHFw-0!Nj zP2@CRelabd;0UdM$A4KA0P$i8#=tlxF* z;vw#dpINN6%a~HH#jaer^3n4mnjrLWC;WZ;o=5^`%y`Y*6Fr^2DyU)+BQITH<&*r^ zo(NW#MbwJPgMZ54zHYCGk|CIf>S5JF}epZXc9_=<6CHG1gay-^seuk3KUHJ=jN(79CQ@(Wvfv z;6@pRyGlVv-nl2??aA&_%Dv?8Y>tv&QolPvqC#inH3WK<&q8-!K4)-K840x5RDu|f zN#gt5gZg2}GUm=OCFA7Etp3PSS8tD(Rcxp&+uMQSU=7TLY}m2n=~?ys#3~X23SI&hV%PNw z9$il(H2bM_Tgjm9z#T-0SJ4BvCpbZ5{UD@}zGCXxTL=Y$l6CJ#nsR-WfOFJ5O<~t@ zZhBPzc3CGb!&u&a3Lq`ytcN+#PqleYl2y->2y%Dw&6ITZR7puaDIV7AVYrYXR{DuW zL*pMeec{lYCim1)(u~)!LIZD=2GnMX94gu=5KgFpl+N^D!)udh)b7cVz9{sREP=)G z*ryca8tx?+cE`sB?5?9`3^VIe*o%@q2F;SkVzQ3n$}~W{>SR{`i4`=<=t?Uxi?Oe|DiZ_}QyH*Yf=CNl+kct! z$X4T<5pw1#Z*9sw;f~<$+EwqjGb2OaFTrT&9&Gj1uRgHq$gK*bu9eQz7(XQ?Yv(xu zc4tj>*%#=`?&TQm`U}wXK(a@o`5>7M7!;;wECci>QsQ6cMZF%Y1;XG)W}cn!2Og=8xd zfo8n!RAI*rHaeeAXv{Ryw<>e1V?=|m9%qyv1%SbXSmofToijnZ84UxGA-}y23*iKjXgzds1B`aX+VEE}mvI=0`Xb83~|aJGR#b4v{+64rA&6w#V)HeDq!(x>&h;?GN}xr~x| z#x(Aubk$7cSB0`)kp^PS0rCXVy^-rvyvPw|YM9qyqV>V@wrJy>>uOGRk6v@JDUdj> z+Owqamm#%CdsG!aKd+17Fv;MS(C5|bxyCS=@KFNusz=Ty;oi9$HNgI85FsPh_dvaq zq6WveG9z0Wb#-;5%dyQ_MX(Db*+l1*QyZRkof#=Sfg`)LW39pb12MRqC>2h(;R#9N zD}=TiJ-*d{F*8$z>^+|Ri&vI)XtCKpAeKI!H+q3NGiO00B_?#I_gcodSSp%dYI?sb z!zF2PJ9>A;BRNFr!5NrcF^AmHcxh%6^^(8~$m&#>SX>{y>FRn``FXK$(D8@`be?jg zR;Kd(-8{{}Gg<8}Pwl<3)a`8z9*D4C-NkxLAwqEA$Y5%@K|^059+~AxRr4FgDmL!} zBcBYRI=9nK@lE5Ft&%2q*6V%?+K}JC$X@V(`<|3?&9Fxdbslw^JyUb!i{qB3!fdh2 z{sFIRzDVO3`np!JJL>$0ed#?5}x#J`qMXc z2RoPHI-|;lzQIs+gs{;e)NmNtfj;2@(jYAvz@%&e2q`ZOnMKXL(9E=mfP;mAB6kkh zz7X)Sq=<2giyT?~IGEdG4_UGH9HxWF=?c4_KrhZvC_DTaSrzx*Ngr&@Aauv{fz5$- z@XWs$`n^+2C(l9xB9VpWV>i~2`! zL4_Cgdmt+`ICrZN%?@Vy}=t0(yB*~ji2%Hns8o*HXq8B~7GQ1keZ-j`4Y zl>Eh!GZQP`y5f)eC^AeX-r|40dmkt!kX_|BMeVSZ?#VvELdwLhZMNfE{3rYWg|l~f zOanT4$&jB|PvRDj*gc9s%mW@{$N#gL{zAu)c^La0%rh^SGRR00kVW)X1`n3Y+j<-z zKj!HmeN=0!!*nXX@8?vH*-*s_Cz%`R;2Nt*oO0HS=*A>U*##ikmdM)hx?UsYgF{nYN2hv&7lU^Xpv{G+|$&Rir6&SFJmM?A}-jHDdui3TJ ztjD3EJ%ZO>a+7H7t)A(Sd=fco_sYxtGICofFeb!Ww&F$v#yEbi-1~}^ zA0n;{?kmT|+xXNpNmnN&trTrGwlum1UM@^39jnzjJg%wcsz5|Og?^8GoeXz9nnhgQ zDY#0m3Z;f zF9**8o&>qiwXc+3Sv(`|YO%jxRwVX)>q%vQ&X$9B2|H_{o*vy#EbqEHJ0M=Q#GN;5 zuxH#^pJdgEOG0HiS-x9%{r#HE_o{iF%-FkRi1%uG^SUV2FK{Bk1K=2P84N}x#E*6) zHKcgfDz>%S;AR0t=Z@d9mb$cIRoBWgV6S?xzSW|T$HR8FhC6PI-H4FOZ@sbK37xH- zD(dn8xPub*wJ_vIgNu-Fx}uR^j@<=R27%Y5F}hbaMC=0ps|x5BbuHnFp9@s#Hh|1K zAL`N9-J9t#EvXRn2Tv201YUbQ3|}X_!Z6vzn66HTC8iqJHW54F`>}1)+*J=o0tpy1 zIbebz0}q?`07)KEa2c7xZQAdr=1qR82H893Zj+o1Umuy{Z*Uow+#ML^OIDZMeS6`c|0L1$P0Bwy!y@KL z=^v5OS(e$a%%s&me0!1qLgxd?mGE)_OC)p9;AKFPHbL7ZUvasG>;TYZ6gbzXr_{UI zdzItke<{-6XSd)c;$Vm+Xc=9yO>TVa`TCH6MAnP%P~SLJi$p`p$x(0O=~Avc`xUIy zYF-Feup?>b8S!gyTrFvZc;O;ImoFITRU}H@NuwYf!3sKL!Of23Vm(BJp<|8LgzH|s z>37I|Lv##1WKQ(IoE|Eo-ax{f@KkcDXOsv?S%#57auU0} zf=PvM$I5+h&iZ`LNb$a5UC;5jte*k{Paj;nnDUgQ=2cwx)J5JC=7h<{II3 zkn{Ixabv)iN(!=W90WGIBm5P|o1-xF5T32c_x9VQLC;It#m))H#-1{zUSq+p7M*}T z-;S3uFS4A;O)6;H*_u?=YZoy8^!57%zo6>wv>tD@29PHJ8A>6MLeu1l>nV0sbxl)U zOT*+s9!DS*d$vv?*K7EJop`66!+c4}Dx)IHPi-8dRDkl(=(BoUx>MvZ}eS_PZt5`AKD z?}oi-O@TE@-Q?NCM1*#mh;+CDEB-1R=XdqDLa{SwB*hO!G?u~}-Wi|?U)Ct+Ur0LAi zcd^2*dSrUKV>}tOfch=$_P##-(NLfJp2h*j;f8Kq?AB^!b*1~Ky7x>ZGLhrjx%UG<-dp#g)kB4@xkWrF`yvNIYMF4*GY1OBmI0)v+#l#|WpGwIXS3lA z>r5$8xNE*OwOZ=FU|p@>eajhAR@EBg2jbJ-egYDCBK|=-`WK#c(>3;l9E|PzF zj6|BzPr|zow4W%xao8zAewvA{%Bt+KFUTbY1~~ROclV5{YZV{7$Y9W! z_}~)Nz)~c*Cty75P>by{gj)4K_fiJ@Xarg&c6qzqPL0}Zc%~17(ybfk>y8vg$~)jI zWMU2K2*5}a^Xllt{v+aae;rp7x~A3}EoX4re$GK%p1-T~Uten0ViC2g;lzx;1K;WL}S z9G$e->Lw(nmbmzopQdT71V863eCNr-7}#<{>??p)yZtzuKeZxXYoRk|2X!~@-dD)D zk^TeSx~u(H1t(mVn4Pjb&{Yn6-o?7XM)aQqW54z`p6*YqP-Y-zJQ;=cR{1)rd@BJj zNW)erFc}GvaYf|jldVp%B@44-Hh}QMslp)=0Fsxf#}F| z?fLNXwzB`Fe2V%9Q?N+y=jlw{QB)+=-y#6r@$kwTbYgiBB7G#m(S6=quB_5M^;#rS zs3P9utGQ_I1n#|dX|gWUSdxI7ncUn#E6XS}GofebBbYU}{B4psMk0=&KiOv?L3Iji zY2sdS$;{Sg&bPyK;o*;Qjo5YW3RDLbJpHBd(F_LAc4?UN8qJlZ;I@1nsRog$rU11$ z1x~`dDLz-mB(0_~#!oXA#3Yo_*>AjfTw`g>F?b9$zWLkw%9H%J_YaDH2vDp7@lC6r zola(1Ad|94+lAL_?cF&6+iT|~BC7YHPO`gQ?d`#TckR``n(otJG%17Z<9YM`dUZL!*dyQ)=ESt@zPZ2 zA>f?_tY-XDxPogP+$=pkIBi|pP6M9v-i_4YqdZ=tmcB_MgrCaaD;Yh~$3Xi2e0__v z#M6}oD(CAbYN6di)TO9NAndi(O6}sJY;o1%JV+Ad8Z=g46H$#vY5n!Kf3PF31Y=a5 zsP1>ctgBpfr~#>n1!sD9s#AbS=P901rKgcKX+^oq)7YB&T4++K;}~1N9VH0_sP;W; zMT9vsIh%J1nZweNeg~sbijz!_C%AJMKQabtzkYnmEQLo(?t?#j@$|6UKXaxeE#b7b z1~I=k5JA>FP)b6!LbF+Vw&#c|$#ULTn9Q_smb9!7HmBHFt&Q$R`mE#f-4n9BZoQ77 z)YJXk8$uha6=NF8GwastbS*3j21YC`&D(4-Dy_W<*V#bX^W!7^k}wL%42iK$mKcQi zPb{*@)4K!q;WG!Qx2H6Je5n3|CJKD{-3uVUYmH!2wPKGFhLSetlKy~W|I^;djyU>> zMN(E|0NF{@ld8+|0HS0hG9oBSL-EaGKh4oV6vpTPyv-(GQzG#9#QpKHIqGdLAhL@E zKnhQ84XRQC%#&~ygORstXEgiF2C5j+;XZ_e`F+b;W5K@}(w{4V74UH+cpfQ*nNhfm z;_MvvT^Mj%lbvx*laijkMg&t7@IfvRy*Cy(YixK~5{MEpL!UR!cJnx*I#%h_Jsc;?N|-VczSA zYN}wYj%+OAO$%DOczZ;j2w~W~V~%a^Vw>rQSLB>38K||_Mvxt3@YzG*8+^e5y}{uU zIFgNl46`(+o=GI_@Xoz--p17;Td&b4;8VjK1jCxx;COlMQ!^u15H^e2s5TC6IG$7_ zlwIS!1#P6&WynMGC6&2Fw4%+{QJb{_)KyBN_Q@qXTTZ4Nm9L}*t5sE?%&8N2ejGxK zk+>iVG_1)MMiTW0CwmI1_f!!oRy~dBO0~8gysXQH{irVk{+v;|o*e8_ST_;CCB$38 zSEt*B3d}Xq4j92lAuy$ZZt{DjKe4*;fiU>{(@y+ z1096xRZhaz^T}=oQb$Y_^KSQhQDhX6VfrxyA^kTRLd}1O4ca$ZNFJRgw=Aaae-QOn z^2d)~PT$3&$^2HK6L#vl)cVLJue@p4goW=doq9{5OIf0;Z#1iB+zIqazG9Z)|4u9Q z?_9h4%RpJQ&-tT*q!uA?G`gD@`aAUeV0&@Ysc&h$0e<53+KO~WD*Dl8qkbYLw5(LV z@Z2N7aBD^kSKYV`?y<4d|MbOr*IokBptq4F)`ogfw$?P#_}e~0#iXI$>wvH1NSNk= zX00bu_JyMC)475hYZ0Hjd@O~1yk!+&arxT zr%pDrH90ynXXf!m)b0ShB?vwJ=-s!6)8snFF;)M-@+ke2Ta$4weIEV3w)T7WB&Xd@ z->5XL_w5H*BZGAJI@E^M)f+qvDvPJ%SLkvlsgGsH_P7kCZ9fIa5%BTgrYGV^Uf0Ub z9CMhCiCemWnZ{IT26+Ku;GLI%-Ao4ngQcc#JD7{wWjVZ|`2!*Tcg5_VGU*p7I8v_U zA%%VsK|YeBF>ZaRQK%5YbD69=kV z(`$_Ytp$|du>i?>6Tpx(lsnvKEx7k+)W6#>j~OQ| zBFxMHWPvBQLe!bZA%tWO9PNcx_i%GN%)kT(HtE3dq<_JSeO&4yyhy5u2$76Czp2`E(0j>q)n2qF0mm zNBKVIC98xo^D=%I{p9d!&W2cGo7y(k8YZ|IHDr3JD*KMrJ`a&$w_wlw#EaAj@v@Hu z^Aqc;*7oVrb^~=ou9d*E7+=9!!s3Z4PGhIp+)imewmvBm$%}|qlK#Zl?MunDqAkRf zLFe|YEVhJfWo2Sf7JdK~nS+!;0F>AjjVZ)vH7f89IPw<9JbPdGpu9dn`mXtH{2UIE zxCxjasm7^hSSN+?5S4>%@Mu=8+AnbDkGTQqHA5H6Ry4A~Fd(&xRw_?;1x6azgx~}x*e{!+Eu`n#Ad5il2l{tt|R9FbBQ&GY+z3oCtQuG zHox%k_=QY@Ol7Hu$vnei7U4a z))ocuxlXbps_BGNHHZkjl%6E7@*bw#_Z^8o}Gl@=pko>WK zd-LV*!b!dK^JdRB`6FUe`gEU)n?}Wo8@i~Pn&XH1x+%L^3Dz*)2K7&&_&D7Bt8_VXbr#=`K4z4F(1* zt@ih@4SaQ?YaI!0WX{wgXw=-$!|7cRN6jJLO(=84<TH28CMh}?yla+caw`%to`hZ3=Xf=%d_9KoYjHc9@9Uue!iFF7dmE$7* zH=7ddabSI$zqNLuvzY6!%e=6gO>v*;){pl#5*eSFukCOSz93yNNfab`Z{<#3uWIiI zsUmwsx+f~aKS=5k)q>xnuRn6qU&Km>X5z}m-wK-DR(QTbooi+{jgg-G5q9>LoG_g5 z#;qo#yJn5{X&D38fn{^ujM2G8(UGnW=<48VDsFe_vSoAiTXC5UsQ5=qRk(tsBSrts zA|0Nmh2v@mY7<;iSK*;u;3 zH}U82?9?QJ@6maLUcv0L5tb7b96`j{_QlzJg%NE2hTqF?EDJk#YH&s5W-nAuy{N+B zxy*cszfE1%!|9r~ex)@tf~>yMUbe`q3Drtzk&+702Cze+o1SHe)(N&z%UT8NQ-P`g zKwP;N-;v8zgV|4hb}&kuQ{SLU@z#2BC)-xcvU?Av$aoovaZjnq+p?Z*dk; zQ>f~Di=VsXnX+YvDsdhaPtT=OmG9+aBfkokHp)8>^;#b?7-cPWTGkiaWW>s3)P}O= z=9REX79J=jPhsh#tr-EX7k*vHN5+GTM&jVaS(AZ3@0fSGQq?7uxfQFVgSzGPZs( zdD`b9h7ALO854*n6-V!gcoQ4)+A-WIgt?wg*^*MTa$>u~`wn`q1SFbX%Q{!_3e02AR zOsOq>-N#J^XHyAbHS972e^0pi!;&=hksl|X);$cDU+!JAe28-^n$5bN|KZb-nXn6= z7b-nYlIH-DzoksDv=B#ld%o&_v>1k*G9QPzELVL4%?a;@-FDsTW zN%FyM+7Bs1% z2?CM^j4%)uPHK5DU|1bt7(Yal>&k<8NNlwi9&JfG%kVc8vkVl6aRBmOR((PDA3dE= zG-YEV&1}C2eRnX&Pppi{UyWg22C$K*fH3&**OTFY`g#xgX2Zo39)nnegZ_g{DVk$_ zQ3CxZV>IzIENL~s&?D{rl~Im#>!1_5l0-|Y_E(=G8ZNDbnjV|3&N&p5PYi2jnZ~*pnl{YE0?t?a6;J6c&(`8`CiBCi;>D;Ntvv#foWqNRe<;e ze$EYuKMjwVn;*QfY}KRB-1>Y(;R_5LgwhaNFLgRtKEo@2RUa|m+E;Sg#LSYE zJ{x>#j~Am4-s0N96#h6eU1)vio`Rts1+T4OBKP6jrJ@{7lkH)S#{HKTbCls85^LYV z2xl4+y`3eg2KaZ4nnzrqOxSb;$QH?ZL>%$S%b12jZb{-X@CPM-M0h3GT?*?b?kni` z$=H;xht3g4WJH8N7k^w-Sj3MrGtd?sVM`Z&E9SpnVKA_Qzh2nEB{`@cbiQ_uX23_5 z(cCU0b4K5dTZ_9wTwx;o0r|Br(CdrwlSA~Qk)A)Xq`zXUyW82jsD5IJGa*ees8)ag z0?I1>l_la8prgK*rl0-=p@ALHyeA1P2|n;VH}9wKGz}_$JV6pD$5j3zQeKOiqV^G> zIH&#+Qf2onPct<|I$!Azm44~A;#GFBcTIwfOo+e?7&BLcZ)Gltl!{$##@1o_AbAy) zHW!qFLHS!*Mn>6beE??H=Us;Z6Ye-+0}lY&)Nw6qlLLS3V4w_@x(Li&+y$>*t>9-D zte+T&YFlZh>LhZC5;^fX&O$g7!zo}eXI+gOnZQCT~p{aRfuA@=-Gw6i}-q}MAmqYPRlqJmj%R}m;D^;Tm7BcTo zo~uRPQYof^29_EF1%O)s$3U~p-_Q}*y1Q!& zJ5H@!KVFb4*LvbYyVK(LNII5TO^FZ_bQy%n5H~fz@a;^>jFo^OkPfwRaVg5dZy2?G@#sp+?5uUYR# z(Z|Jlsl#?;T_-WGXE7{x2}-NOTy_}_Ksx=KmvBcg$c&VoLWC)=DBZtO=e{yqCR<~> z8#x*FWUN#*y0&cxwq(Z+8;^qk)+h~L56cK;_9o+}hn+z3O{zx<^YGqnufNp!y8 zRe|wu#%8?J_RdQN13CB=v5S~%xDS?A$^P^5vbwG+q8+Q!kw$%c5mx`@Ae zvr?Rgq9_aC-wzpRdo_ur`R$&&n#(r{;5$qvrq7<32HQ9}8Qcn`T}VTnutpL*t|r~W zAK)~wrV?H3j|Id_G|!?ut@cydt*;T#0dQ_r-DUlEyhdfDBT~wE&0SBDQ)_z1VPOt; zB@wDtY~)Lf-Y7T=SUX(J5q=TEGWh_b3+11g)7c^rNc*ygQ&&eFR&e$l;J%A*lm%(o{;hn+7iVc=i=ou&n;)e&$uDpJS}&{Q1`8ziS>hv1xp}uNs&ufBkK9U;;8#`cVwtIWd97XfD^TI@OM9J*k;AJGRcihnc_^vN47Ge)xt@~V|Rnez&s>bVsEh?3Y95Y83X%QNW$<%n~Ezzu+zE_odcfgJ`EYA3K{bhkbInh}dk}Oigr`V%x%?B?kON(f` zPq600?jxXeHGs)-A{BUwb>im4t*CP18Xv<>SkG5e%Lxo{wXq3DvOL`+{j!+S;|41D zO$lvH7!%U#Y*eGtN2W5=wfF+s2o=jQeT^cQ)(fMp4|u5JnrX#aU@`H``#!tVO$Xww z&cIMPOj}|7Z4-ie;xN~pL6-hRBHh{U(-fV3iK^jUzjf<|+7L@r(b*#EQ|~JsT$iB@ zP*h2C-6}q)8-$l)wV`TR<0+rdGi1-Fh#24MA6=_t0fg#Pvi-RCQvKJ_Od6T`Rk5}KNVY34CS@p$r51Qf|{c@!TsR@EkO*myO^2vh3y&2B1;l$YhUfxF$(Gt z-AsnZIKcL~-b{3?st4o3IB!uLRVH3iQrgo09%zAYw; z%8zA?*j8T@=Z4}Cd5;$dqZ+WW?p-Y{<;OIEvLuzJVk}xMhMkgvcA&Vu&7-CkAR9)F zK#OUG8)S30P8N$DJmcCWXdg~q*Xmx^C;$X!jyO37f|?Tvmacr0=-qD4-WKMV14Lg2wGZm@lXXQy6$?=Ei@|v zI+3gOw9D`^_zwV_DI~iPZ*gf(0i>eVPvUmFD3YbShXA~uvA^KFr{yXQ%o;P(Up{NG&z ze~nD2Q_l7avkUDXm`cCdTe0Lajr>T$Pi!>4C$Ik5OJjOLJbPiT7-GJ5b(PnE*pK6s zuRRNEJ-x!^#hg6`&p)0PstDrm;W0h~fX*G~fVTzMp;b@n>sn~pg7TCqU$UQpI%KZF zYI;|$WE;3FOl}g4snW+8l?ff2g_JHpHb|=LTG*ZK42hGK8O?-q{aVwpKic`k9W!g) zo({PCX*UJ6chkH5WsX1uXH`S+?Hj#sD=+0mWPSRVuC%EGwtJc~h6z2qw>F34ULJ5wsFQ<^D-&V_2AE{%1zHwGt@GWS%2iG(lJP@}?8gNQuuO}MiuQLG_vx&n=HE6A*$PaPq)$M z_S+t}49wPyUHqGqd2zM6CW79(Rrl?Mfj0PHpD}{^e4(=45i6ITDMO})%!5NHrTz7`XVxBW62F)8%m^kMNg4=H*q! zrZ$)ud-ROg2n^uY7-(Y>ZIUR-U?X{(FiUX!FK5KIgC}refM#2{ng%W{`lEtnG~o{ixq9;;{K+{A2q(ERs#oeu}M^MMR|5SVkaB)p#yL6}ZrMEs(NdkX7WqywvK zt1r`WSW?tC9^vkcDFv>ywRbxBN;mE8-6e6ZCJhuBP(iU&pSURj8XMW`a@R}ydvBt) zb-_p^F|F5Hqq5{9-C@DXLMf)oZhHTal{=g588NZG1V1Fz2EAQ57yD9;>k(A5M0v7h zo@+wM6SbX1{3(#VS?<-eBMn7pkdeT2+A2At8?UGFK;r54!9&Se#gJy5c?xYyMC6M9 zW#1Hp@g^egx?W%foZppgRy&nSrE94=jc2-q!zmu83+HOvX-nkZl`{P5QFsikZxBX9 zvc(wl;}i@U5=_DWYHn$PThVNQw3LfF{CXXjgA@x11y%X`dJtIV#d*ZMO^if_4GOXs zxyA>I_1&(n5XWp+1*6jtd3FoEANtc*!^xcmF~;YsDjD|@twdkfRMp2i)d@@zMti%y zE-LCMlnICkxgn@q_W&meHxUAEOB6g_00df|2WXA{dK^as0wC9s#JDeBLRtVfGj(`> zZJFyQ)-8+0A$OqQIftJ@sjtm7OPI7Oe>VzPi?!|u<>%O+`SjzOnp&i%?eF_pX)-d4 zuV2bh=|89auxMa?m3VtdMjuq{)=RnvXh=1e->G+ha0U?=*qf51tmBs0n5C2?ek1o* z5E=cj$5E&)U%aZW?q(`vgv0z6#PjFT#GL-jM1RaH{Ywh+v}jOOzS1S~41uQ^KSG?U z7Tj>CwCZrlQ)q5ceCO+F35&|HRD4$g%=QeUGNL22Pke@Ea;oa4!a=z~(FN@2T{zCP zZaAOF)Ug>kiDIXQ!d>3>!y$_PyFS4Y(it%ycl)evcdFzdI{30e5} zvHDh&^{T&}VO?5KLTw+1`Zj)Qh38m#8Ai%^+n9SPUn-YqenyXK#?AESV7WdaGy$J* z*TGI1x50=fzx;fd|9Yw*?0eTd;D(}r4bb!Tw@XJ&h5+Xe2<*}z#hhr6WWRz0P2y1n zsGmxY=v%7k_^GtX$nyBL#G4J8daKEBtWGKV^i_TWX4-qRPo%HgYyoGValyvhK^Jyg z@u`oRlG6yEZ?f-6^~O~On74@2Dm6#S5T+Bp5V6!z8)anR9=@ggTnW`2^s8h==)-pW z^5%m4-L{w!uY&azUNof^PZCvtWuA^*#RWd!YqMW!{DPR#R^isFiHDFg&q|n^)%zY^>%Zku&rqT95*uY;2N{Y= zsw_!2SoYwA&zq_Kt@}7fq*YS}w3W5!fuC6Oc~`lRHR@>{u|WZ(Xcqpy`6g^0gzBCp zByPf6eE{D#$DA3Q13?guU(3i|d=Ql~30y+M=XqdkS4Jh!MV5)upIDBfyJ`DCiRT&i zM!o(Z>cn?rIPIz)J`Y;P09u+7oms1@+uF7^`*gtyrml}b+ilOlZS-n(lR*U+CXyDj zdxn(kB**$?>nT<JxN66j%C16ak#b39P&yC)10tOXO5l0D!CuU(!2 z-KoLdBbXD-C9nzvla`4rLu(#Piv0B$@n!-&oEpO7E zK%QFbTa0kdN{_CMmNDv6q^zx)(p4qMXsa+<@sAaLIb6Alx$u+$8xuWvaIeyaUA|_N zgTA6>ZR^!Ny&)E7Bkk4q=mJKEZ+oaITvO?Pm`bl{NrQ-)fejE3p^|;L+9xC8P4^T5 zA}OOrju<{_yQ>|@IR?VDZ+R}kuH&vrY(%&@Q+*yMh$A2S-0W;@N>`6O!{)j1Yl7St z_!E?-tKobet}qtCC}Q=obSRAb^0tgt^{k1CGoQBU^#(=TkoW~C66nS&Vcjr5`q*8h zv?@M|@Bi=7*#9;c=?5_(?!gml0-TU1y=ALf>eyH9rh#;KM&?yuRg@I{gQBFTlxb5v zc2E|RtKQ15px8Y|Z|UrhEe2BC`=*~%C*D?c)8P%$8_XBMq7G3{nFi^e_2lH5Dr>yX z>IetxvyC*{C~}qPN7GKEKJ3)t6?@j>gAU(2SuP1+Fe28IqyF%Oh4_u`y@Dr;hDY~X zsqED;*=Yk_$AL{_QOK~x|N2$44L+uU6aV(m%cbkUfPF8N`rP90JAif*?yDnBN7y>p zi!Iz0J%{Agzz(2}JO>&RRd1`+U}inO844BIYji6ImViRww^+eBgW>Aa9KFC-m1wHEjX@+QVSO8wZTEA3&pf~m31qXH2*`YM^XC4*X`bE=~kunAytYs>V# z$@4SV5s-BBCOlzUg&#-35kZ>o;@)0;JG*^ zGP}DY@({;UaRpQA=8tBQ2@7EQ|El}Wu%@=QO%y#AM3f=|3MfswARR6r|Tk2ayt_LnzWaC?zxj2?PivaTcC3?|Z&;-f!lbx#qg&2S4`C zZtVT6wVra{_w(iW&f8|{9TL-yX3TG#@jp*i=Epp_g0L(Y({SyDx+w)0zLpShP*>#- zJoC||wUD3XIgzg)PGWB`J zwUiL-DXN|*s{b&G2!QBXwL=tz za^+j3|E-W#$)>JE1Jg@j|z~Fxln5tc(9*c z;CGR0_cj}HVGrSF2lw_&mIDZ9bj?tXme-7*I8=8aeonV)zHv_Zc%Ws3zXaS4$a6pNH;tTZPfBN`j+L`V9Tqsg&>ZoR za==a3ajhCT(6p(;w~~i@Y)5+u*=pYWK{u6swLr8DGAFQ1l@znL>yOr4e2^B=f^;93 z#Y=fuT`6v)0&PY~imHwFAP5)sGOmAl#eZ!6W7h2_`RVUqJR1>aZ7|b_X$$dXT9VRJ z*q4PZ9hc&Rtnk~v+K91#B~-yt%Qkn5(t7He2I@Mw6je8tzgS3R3!qG++Z&26v9!KM z2|69Qx08UMdFyL#7Xx|a`TFU=iRek)s;EGA#{u*@r+6&@QsY*oRon>8F>;IrHkS_= zTvR;a_e}a&!ptK#SPu9j^PDlviPtZG@vne~-~P>W>wO5xSDtcFPl)HwqqFHsS`Ioy z2NylltB^s-Xk4x>IFj|rY58npe`#@WL$Lh{4=p#Up79h8|@l{L-PqJ_i#?0_=DrsW$*6w zaxQ-`)$nj>lIKrXeKhqUia-2NU9{WWF3%~*tFuew)Ujx?O3Rjo2BmIY%*YFpCNLm& zuTP^qFxHABVW;;>ta;Oaz$99R&M`bMy7QalufSt!_~|i$n%#xA*J8a0wZ41Q1}f7o z*df&r=u)@gE4d3WSk)Nn0CF;jnJrhbyK`;}lz9CoSBfdQp&utUK>W7FveHUhf~*#X zmYO5!stcSvzUoq*Wq&p*WehGa~G&a%n!8_Oz3e2>Gc8kftM<4JaR4Y~csu-9`a=|#pXaf4bX$Y<${wL|N5(IWl% z0}!&^HQFL=EoJsRHBp}LBtDnR?sn^$muZCxt*oKk@~qGD^7aJcK$6&%P3CmYp<4qR zSWUCIJQtW(i9gH1_s!`BFV`}8@ry$IggjjF3v~C;Zy4G?hG~pXZ7<#{lLo?w)@`CL z;WR$lFJ;Mfp7Xx_$Xjfm*F&Y0=bxNq79KoB9XV$YyCKfY7cXz5p**-wFuTruRnn*o zbj*BFXqPCi_Za3Z;9Zi-*w)I-bgj;KL@$~v>zg0BHP^QjNz zfD!KKgPksqoUo3I?&W`!?sA4NLRkXN;&!9aI4M!7dv=_DUDj)Wbo#+Y#b@W}@l2O< z!w3n6gJc666H6U^>!Zi<>t@7ZabC4`fnb{mdirxiPeeyWzFckpCSE}4r<7~Sy`(f- z=k3dq=A@=BKdIdk3Rd`e%K5t!Rz(N!e00`VIa&{82p+09b8P?@KZ$M|JX6(dEw9~< zt5STHi-S5T9jfpSc(->kvxE#~tD>Xd0-;%6DRh3`K-4OxfeYG!z`OZfN|G9OwVysZ zk(|t1>gNZ3dfC7UQf|3qXA($~Q`BtgyQlGeGWiO<89%R>0j^kf1>LFCY;Aa;3YGOR zi**^bZ^eRlyo-=OTdZ~8sQsZTe|p?b(7gq@d?>Tjm#g>&Zm@pI@0)`PFVW!L%O&Qp zN!`S=D*b3Vt{4$t?W)Lec~0v!)n`pNR(dB)hrz*SAERy{j@|E(&;CY7cNA?4IhsS! zo;+?a)Oh)-M>{68u2CmW`mx0YzN3RouJ=_B4k;vr9@nei?^X)m${}(ed;P%eIQHh_ zHllsa17bvM4K@dU)?9#oBkfT_Z(!WFP;1*Sx!n@V2j;-qc{_*zA6O$jv5&9tFjFzDu7y)-V?G}V9L_16 z_OHe#C6bO6n&15Xn&a#cs820PDX72k5p~-&7M3l7D!%(rUJ}_DF@x!Gz+A*jtMYzO zXRHOS)4kJz-8I;072dD`W1mgNTVoyR4(sMJvd=b&ryhi)USA0fg$kfeu5xf*%nVR# zq(URyzM2{QpgS`>rsC$2Zl;{-U}MKfooT^y7-xpJhlbYf#Q5^{+0&RvWLYIqKoj-q z73yDc;^36CEYQ&#*e;M7Gb;+R46rqdFqc0^d*lu4PJ|8Op!2Yi52b!GALr^OZXR1a zIRXibtnG)^KM55%>ikp!tfN)MMBtT}>UZMSf0dlQ>p+^%GZm|2D<49O&u-F()qoX-VilNJmG<>U2;xGf=ur z8~H1|+w|=u=GH)Pl6m*i$na=*0h6Nx3Sb-9w3um~>Ra!m-fDGze7i+RrqoEKao$1K z5&T-hu=xD+MVV{4jchc$G?RYNuoH$Uqua0dQlHEPK`o=gd-r@YpOjr{NDWmhzhHVb zp!Un{)E{)VZ_ItH#bp|+@Z_Lu2l(q6IPsNil!jg2O>RewPts^*&YNeHIoTzV8;kVQmfnD2;oAz`#yX`tl8J1u*J&C(0KEO~J zkT&Ui$_TFa0Yg1=Az|>;r)wmC$qAleDk`M#tJzJ-1p4asiwj;c=0lR=*Sl3M(k_dg z^oj}3KcAn?+0eCHBfe|=9h=oP=cjI26E$Rhv7jbE=cQT-gO+D~uk|n2zWeVe-}z8P z1lUlkx-zUYp`oH8@$klIiu1~B!ONw6X@zuJZp@gC8h-9fAoA1P%xUJRx}NwJYqqdH zG}@_0o(;X>8ob$a{mrn@b;{G}HAyD@=%VuBh9-1>6-Xmo=wGFPuO72Def%Et41T3* zI{lM}(n%FBKN3vX>+;)@;${|9N#6WnJNT$N`J;ainD?cj7wucqBnk%I-b(dbD8?$q z21K!5FfG0$HI}sT`auvWd6}ub5w38x=o)v(zQUcprhV<>U5jq#Fqryg(H7`U*Nm$)R)9JHYd6vX zxdB8qNcy4`m)@;@&!kKvc6YTv4Hhtba^l9&0l2!P^$6VRvLr2LPodS_6jWu8B0FV4 za;F5ha|^kX9nos9ND&5oa7Sr0aPtKq$FZ1kMc{wuYFCi|-NkB=awUki1V%osm{yeS zR+nGXyy+OnX!piYq^3z$)%I%4)7X^|{ozObxu{-W<;WMXw=Zp9Fg%{~d2=Fz_aW(g zh``3%n!~ne(V*?SEmLPWry+u~QtkV22W@euTHbMLn8Bt(#j((kVaPhMZR+q4Uk6Lm``RdmY}2U2g0X9L zd4f>9BBqD&Ngr?E54sx}FO8i;)kISHIOd@GTSa^9l-5pYDPEwVDMp@>nWHoit>S6t z$QZkG|Aa}s6aMhsXt4kXdH2{1TiadHM(@m#PY!9y$z;#t?~InpPmW?#Oh(QC3teYO%0-wm;m|bG9LhrPVorpZ#cZElZj^ zs~dGJiQ$o)xXcprynjSlWpOt`IoAPcbuh3c_E;p&D0nn)?Sz3Z_Q=$y=Hr_Av|CE% zOIo%R+%v5NY0Q36a|JDAc0-m=f;aC5_k^AJTH2VE-Bj+T)RgHhC2Z;)`w@Olr}cDv zT~B#lu+^dd*z{e2q-0;uTAi#TWj~v~6TAMc1>(BMnRtQUI^z9A7BCQt*ZJBkp#7Bb zQ`H_~Og`C)X2HomIegK&{a=)M0P-nBDdD`sJbVLqWU)x%qzA~d#2~fv>tmF8pZEWu zgW$v@9)vB~BidU3kulT1bPHi1lf^862T2S}A=7-Fvw*JEfXkx@)14 zzU`=VK2L~0XQI4(ZA|g$wtyZP9*O%CE;Xg=@Py>AHfM#1s~FMF3nv5h2!y0#gAye+ z@WNBS#t%tzRnz6hSO~4iAGKa#qGYbf<(^*e%(QyOyh_Jl((RsxI}^O+(2G?tk%6Vmnm=+suskp=)MP$osFcuSyzM}73n~NVzpi~gxU2s9TJ?0s4;6#)LuaTy@seV%=EA2D> zfO<&TmCDJY7fmc4Gmp(EDt-hYlg8VhR{dhC(_;~|G|fHw>1y5=rVv|$x$o2vIovnv z?XnD+>?^M>4=Yt7Gag%hzGJc2tk3Mf(NvfaTd_gwl0Y6h4!7IHwKj)&rhO{8>OR=+ z8=0FvHX3~SdC*eXmMGup%%@i`qnVSOWF9cGtZieKzf{L)=xjxmGQ9Q_jo#Gp^U5*3 zFFPnv0c;&Bj8MH zF^yq{sca(eU1W|o=&5=wfX>gjKWVJK!drYQKE3K(HP>st;2X!5+5)XrXP(n~9zhB| zycQSab_L)OmvtH_K(=nL1zikrhsrQroZsPo_3>8zg@QgYt-Nl{(;Tf25f+?GlOaos z{;LV={!F`_Cg{)4w6yT%vUsETCPa2)9yGf(^MJSvY;eDU#xYSCiO&bNFm<~_9ZBEb3vj zSXX7X`%I$^Gop285#)npQ{q^zL(IuDPxV0s@!moz5)yXi(ei;wQ-omff`_YW z#H+{mr*qx&mv^nE*uEZzM8RWINav{>SLj(PcuYU+Uh88T{ceQ{HhQiAZ-KP+SC)r6 z#JEPO8-vp}f6ZLpo!&bwiO4`K6(}?86-Q>*qKWNtE%2koyzL4wYy}B0!~LHzIu39`CLr1^sR5! zbbiP49kT6r8kAjn>hLlT7Z_)p(zB0d%@#dtIz{JObtsobq=P3bF;DuK2NvyCp5}vS zkAH~E6rWAF9e8SLJXn$?iYv^GpEIEKtp5>~@R!AWHp?1JfaC0$J+6~tA0uhH1mvE7DN;qS@i^XaaBV0mAgo2e7hd#t?ujSUbJ9R6KQu-TeYK|D~T z6zzl1_Tjf&S$5bb)_z|@z&9qe6nKq;#C2NwTS;2f7l6f-GD5bM?rC~w+wCp&asX~+ zm`{e`Fi9k_1>{E1Axd{>(dm1kr=w5bwhFy`9YI{C zY(m~}BhvEQ`+@c2>L!c^y+c!Zjx>Y(Sv9KW01r`g*Uij}k_~S|?ZoCmW{ftc%GQ$F z5h6Ywcw~~YO3CL3^AAQH>a@gkCE4sqZ+&=tk6PQc6a$TL0-wjf!^{wYF7oW2xV}m_t7{5Z9J+}2IO_KmYDQ}5>3i5!%AjHAF^5|d^$%u#h@%;CD zV?$+^f!y_~y$*E8bB=1*+??dQeR1Vp(ku3nvedar#q^0(&ntcX&dc!*$G$~j8^){{ zuVh_+Z>v705@w(^@J;-^a=J6^wd9t=E?7e@{GbaZmgMzfGj~!zGj2^~`G?a?yCmFH zm1en>vs)8#qZK(3g0$rUHHC2RSWj#Tt#oe38aK%_97HAYP>e!L&z3eXFrdJ3m0|uD zw{c)s*+4l@8gQ<)F}ooUTb?=Sc0SvEM@Lk?DKbNA)0P_dh@B?dX!fz}1L@ljx?Ta= zHmx19`WiA-WjI*Y+cQa(hHs@v4hNBO)7(E(Jl-}?v3Z+0pKE>dY;|-H_fg8x3R?*$ z+fDC~lQ-2Y7>RlSSS+&-EeIjXjgA+WLYzVm!+HSr$p0fPjrI zU1{BB^yX)dX!^2q*@ zwiB=Jt5Q&P;@j%c}T{m;iblRwU+reU<}VdbEGr zRc}OMb2Ei$!w&_%_Ld0^ktjk0kX=8NK3?JUMtWrYTgUTmJY(hB#q6?|{FLD1YBXS@ z4FFH^N5a@LOEfhLn&U9y{Az8adP&>*L$st>Xg!aDh&$?`5Z1lrCZ2;+8(Fv4#Xk2N zWaAlRvCQP_FSrwxlyd~=P7SDotMk!vt-c;yW5E5}QOYOa|7!=myX>rJ(H-C9K)Qgq zTTvM~pnfAirB;)v;l04)KGf_dvAYa59MQLZev0Y*)Y<>L9xMOQK;wTwLG?cx5R9J8 z1A;gD^+QxpgSyQO>Jn0}kl^Z+dg@deFk_9qDzF)Exy}zd??I{$a%SnC$P!O6gwg<} zQs!F2fuzX^WD~$s3tH9XF?8(QDt?UhiEvtWA+XCTSU)Vt5$bobDMvdT^Qb(ra9Hfk zI5%Wu*F^4Z0CWFD61HPbl;>hil1zxq`tXE9)5&&+_QD2!cX*g;QOX^Wwb?b?vXy1F zZ}!s8t!%GMpZEJR##%l7kZx}2*%4YT`3Oh$Y<52AmO+vus-C80$s{0*edDD7Pq-|u zWe`8N;W#>6(6@{;?j^qmU1{GCG8B!3jwOv2;ky-1ajQK@{R>qEY|MZz; zuVZE3R9*QVlE|$flOV|WOgDaVHu5Rq@VT(|E50vscw+`o{S{I<)xw66Y>`ssF845(J@7ho=30!K^IX0xd`Eh0Yos2V)!H)JMx7DJu#(n61(}2vY z-XN(=MMzMW5CD1?{;Yib;{@^#4K(JEox=yHeo1va4%6806xT4Oo3n0{QB0Gp}tF z9!K&l0*h=gj*w@MP4o92d>~(yo?U-D-9ap$Q{-k$Q+sp2&a)TUfLl_yS0=k#@q3wU zi>P-11IlE_?zlzi2Yf_U&Mq~C{!u1VWH_u7Ti$#H%wwwwWHqwM0c>yHIoYtaj!lq) z@X`V^8L?1giR-X;*ILKkOtyj{;|3bi2g*+D3?`kKoMhU1G`R{Ywr!2aBb#`7*y-O) zjyHm%8uxaImp+H2rJfoclutgm5(m^uZmgT=yBL1NT-d?fmUlyG|sup!P z>6iQ<&+&>c*T>5elwD$@B=ykfW=rF3(bwdP}%sKVN?3!N&-gWF~ zUG%S=s#U5FK<#e*7Eed3n?c*eY`MLP8pgu*MuRC?HHk-fOtXeKgiQm<%H=i41c02@WCLuT}l+D=%-jfWtV z17Pl!G+NxSsgtp>@ImK$2V4$E?4ueFn;O+(EU}TPY(85vsqHn$^&fQU>^a)cQlm7H zX^cz9++hId_Le)E9F*}QVn6%PIyB(!DuHZMBjTIMN!_$_bTT7PMA&@6QZa}xU zG1QTyju0c$F2AJ-WHP932JMzYCT~w+)vm7Yc_NUlJ7&JwQ`@=DU>i6%-H>sn@|>j3 zxLkdxAE+mhAj1g=LnU@L^{U}nMxl0=;nv6Larpz+dHa^_j3xQfTDOU^;${Cef{O;3iDH)cR1mA=1MGy2&hi78Sk1A%s?1pG}eu(veuD%1Umf z-g>Kj#qDID21EDe+8NBgkR!kJehdB6G5)`6Eqf)Zzp<8jh!jYKrGxYtlE4fnCxu#k zB50XwE~&*&-r`x%(-kI-3_Pn$GUSUxk=fTQgA&0=DOoo&T`22N+9y-3Fw$|jBFZEB zh%>(jBQK*pwBIazEYs74v7XJ&U#I*1210yzVbCexgDK0#`e77I!xUQfiKAt%lFh<6 zxBV^{v;cyl(?v;o)KA#K7d37KYG)Vz$qX-32sfOzP^UByL4mu9G$&vBQeNl!!%(K& zcOGr>Y2s~pfHqikQt;ehjGoxyAk7_0Tokppvc}B>=kz@l)&*G~|GVEq*Ir-&?HM9@ zuFSxDb&;b(^$0X%IB2)Hc8~mX9IS6|qA4H4wOS=<@)pA!W!bzk? ze|;^vAog@1N(idMj-2p*zsEnC`Ry#T3L9Z$V>he+S5d=R_?8{nc#rXgqRe1s2M3v5 z*eM6JgSL*C77O#NbP?UaqZ|TDsk{LB!Jw`t@Z`cRf1UiGNx8d^_HFYgJqfaRW-s2Q z4YLt?eR=o!JkT20N)+E?Gbzl`+_i{{x7k^7+X5PlcW;H>M~=ts-EJRcoYF-^B;4yE z5GgF9OR#dK44gNbL;K*-@1)ydN#Up149Una!<}C6{jY9jlsh zJ?oQf!kjvFvk_pG!8e3mnw#8;0sn7Vdj68ri(A^s9f#tuD?bbSmKHaGABzFb1_ue% zfA96_kqi>06#KIr@i$fq{F|hU3(DpcDp9#OS7+W~6Q*~yA=#uY+aZcugn=g{NL#NR zH*X6Z5Rm&>7owgYLw20T0s9OzD3A;u~HNIg)gK0-yps#KB7DUUv1ip>Fel2t;I0O$hLJ#G?2s;LT*+^=J@N?QZ99?XYIV#6XPlnI{f}Os|?D_n4q$U{GsmQ zCpqc+L;}|7g>C;>3kwZ`;QgLgub6)(^g40x%p|0<9&0^e|3q5hCa0aj(n4MMD#ns9 z7!$)wY{X$o8D{%jJPigf&*!RKJjta$ezzDAI!d*Lo8!i#%Pjihd;)G&m3@R?TsX<$ z$@O4kRSX@lgvP@*%0~yoqc=N|j<0mSYYyckzMW&JzS+dJB>u~$qgfym>oYB>+h49F z=G0Qeus{r2E=OpC1{4zYmbWP3ML?`F+;B3JgxtX(a5FX->MP6aLkXVF*JmFDXLhgT zO)I=Dywtwg{_IUznqJE;cz01rz*h|Z(^rJ>(F02o`O=HXbKGCE@msvP`7_@9`&Ozs z^tXw$fNag8MFnT`SVzp6#9~h9J=2ne3KI zR#eBB_btCo{#Y4Zw&Ph6YF}sef`?0Z>5PgX-$Ya2c}iK;K!#SA@?r$`W1`#q00q18 z0TqrE<=K>5GZJ{e=>|H(IU>%M<_RCHQVG{>NIv=Nx117s-d6pe_dDo@wcqTO zVP_xs-u`NqH9DmrD=SN|`eL`4J_xhGbn^Zoj;H`x3VNPWkDNNYKb9)s2<0&aNXsK; z3?)mWiZ~g2ebcTp-%;Jk4@h=4xpddF_kxG}lx+VG%O>GW1C zJ!=`wtM9Yn2AH+>P47s5?wz|Kmwf0kLEaP5otJ62Ax_eIP{H|J)|KD6@y!u7xlY`X zV>qTW&&kp#na@69_~lJcMSWuYC5i{n^K#?8C<1sU9w3kRvik?!9dFGcw{;%OlkC3b zUstq$-=n?n!2TyH0-j1reY%_y+HS zw7vSP$&S3bo*vob6?lC#oLq{tfrTr>-P3Uj<7|(m3vO- z&tY}IMdTBOc4%RIA9Tw@E_9kEMfGo3rL|vZG-(1Of{^HIXl|r;^r6p#iql9mY=Ma) zA_#gKsl|(!g=Lp)A#?BCN9snlO)yG~INVLaJ4Gi1ZTMdi`(_E(I=(-Rk^@}9s*IZ55msBD6Lzs3%r4KjwDAfa)|LqUwCa({KY!LeDrzbl<~v~oHJKaeNdpY z!+ILdyt-89ybphY{VC(;FOQ5aod|onPz$|cKb;*7Dg9oiB)2Y1IRi|Nx(^w;yg3CgL44>Q!EpuA52L{Pt|yLf3vIfW0G+= z!Z!BIHqtioChTOMZFq5WDGS-XrRAwXZ3C+sC9egtc>gmEMCwI(%I8+p=vFn8+AWNI z;$ed&EFDy%pcr3q0mt@Fq%PG`e~}%eTKN&cx-K++VU~^E2+p-Wl6(ucn z-P}1kZRZXYc2m_YU39v>Sv9c-njbC}ABF;Qg8B5$Z5ni}Xczw^Q zY{1{<^S!4U=jeXPYszca>9)01ES8!X`t5}QfqO13y!^7jx~xop ztEgZ<%oDGCRHwgoB!9T$h|l5VYdd|AB4Ns~(GjPDTAa|zvLs}VPifl2LHdrFmUWYG z%H8?;z9)tz_m5lG$7om7gtbZ`e+uUP=TY~UU;lOxwtsF`lD>9fmNl!prAFjSHji8T z!vS%}S@^|KvME%;Kc*brqbTnrmT7-Svs=mb01L-viG9knS4ccqlb!800DW0SD-bB%gud+QHc0NYEV)?&fX?n+WJKcf|;YEa}+K$ZlBHCm5hh5{x`VFx1p#S-w+zM*ZITot#1HY!Jv_ zt4N%QZ+p+G_)ie|-vRWF1CBw*d2{21it$qvh;bAv?5natAX=QyT+R!rv@yfvgCk91ys+>?ZAG z@0pW1Ls9aSQ#>BR;gM`;PtH_7c+j^=he7~= z6vTOmUrH?Kj1qks=0QEr(FuT7GhaUtU1Bc1T$jHeK zlan7lN=ZR^^d!yU!!##P9Y22Z`0-Om4<8)gZ{H&ScqO2sq@<#zIzml-3?q6NW~f2!ceg)FVcd8(!cQT zy;L8p&~y%0zQr|g$MLIkDdgq=9+>aN2v^xTsgES%23&AadZm%_yk3+sPp5}rXX-@{ z+pq*%SG5mY(l9)=#|cr@Lb)@PP2?dNu;zAn;E@GJU3-D%u%#RE z7ph51%7o#foy*~p4Y;)>vQ0f z+ctDQjyZl#^>DCDNYRl~|J>TIl_RMqDkS)PvDY&z5I0t~lQhh0kudLrz%kA-?|MeZ zgd@_v9(Nb6SC}^$jOm_(J>}sjzQF@g%7P&9Kr(tB50KyiPhXQS=7vGcn{zzfEki>V z{6J?xAbRlGVpT#v4Dux-)3T(w!n=vg?zsH8(d&GgRur}q+k*!Ns`mJ>XInE=OH6#a zMM8B*6(ESps(d`~v1Ft%1`k-Jp)kr2IY#QHg)J*wa|<3Q0oh=X1`mupn@F6Lez7h& z!BiZ#-ma#u9iDecJa;kgwsqm71>}~8H8OU|d2;4L3Y}N*VSU}6IPIJ5OI+xJMPfYA zB8HAr9^GqQ&sKiyOg=6-u<01^vHI%joz$B!FZEKw^=jW?qEJB&FR24&Y0WI z(TPm;sktFH+h!`tkhAFi<;~t@JP=?|+&kH4bNbQ*gN?h_%Hn#J3$ud7*KXq=_3Z9z z56aSp+T$fkqVYiKG}kqqwr-oi?w2Pw@jxbVc1cOsW$FalsQ^-2`bA_dDj%!Y4c#_` ze856pXOLpeS&nwwlSw?}KXa9|m@PGRf-=U(_$bdQoq{)oMYG~Li}hvFqu1j`@jyY` zSXDLl^#B2pv@l?KRB%CqZJ0_IYhpdUln`hQ`&vZa9kV)uT*3n>^1BLp-y4w>54azf zXzXVg=}~8RL5kH3&Q`z};DJ`eR(vh*>=;GiQu)^tGq4^D%{_&iG&?2vwmPNI8<-Cf za*?A^fjpIa&IQrg2((9LjVNP(k@;0tky?g^Wt~oC&gK=(XivWB3pty(jB7!K8n7=N2n|fzQmTde zuGguP6M7MISic6Tq$n81D{hgmc~=U%iw7j3Uw5!NSSVMr6J=_Ht!vk0FI>3vp`@~) zr4s_SCM1TE8%Brl57Z+*xiZ^0>V+v1G!HJDvoI|dZ@9lol3MP>#941#+;~=MfjggD zg&y?B14WE-r#^)%vOdDMZ|HpbB3kWZl21Aou=K_@Gn1pnvxv{CNYA}*(Ph1>3mhe@ z`IrJo)~y+tH&N)Ic-Xx4tD&W&f*QhWaI?^YPl^Ut6JJZs_-7JlS`F){O?yC5dtw;+ zsznIyH14+V1N#AGMH*@z$3SPsU_6khl@fE*Ovk9w-!5fTF<)Zt@eu~PO;V1WIAm4}^6KIxIUmx|8yRnB#o!K0?ihU|78^orAGrt@(+SDNi*AJNZT zk}3*gB)##D?EdKJH7NPQBVGEQTfLgrX%%%Jv8{cb#gLs8WR+r6w+t25zWPyDX7H|E zM9RVoVLfm0wNB@T7UiuDt}Yk@%!XhA zY3*c}huVhfn4@j{QfDjF(y!8dDwB*Tq)uMc&m7!~Lxxt!lvR+b#2W8KQWXq{>9bNU zI1e)1wu?2?;j?8}!16Ss@jz^rAJ$O(i>D8p`ieRpNIjoL>&)X63J-yo7gYPrTVYhO z)2Zf8hm{3*GlPe=dZr8Fv%(b5COpor)$Zn@5(!b-I0qYMkFy^x8CiZ4cC9$l2auE) zH1@WzTXrG8H_h#WaZo;l|6m<^J`v_I>7lxNhJnyP(g9<)dZFnlD<3bhIyYPV6a>4>GRpM-1hHeb+t8i}@CY9l? zD?=}-+Iiye9UD5WSSTI{b&tX^%|UmOVWq^4=#hlL2OY@MVbeW=Lhf;IXD$Ki18Xt) zM9WA#5K{MAlaYDlCLZW6!vj(Rf`;_H$LNWI*~vIKj$V9VN?Dk1d21SQYKsyk^-wli z#9VjNHdKDoB&j(!VxYFjW>z$^D-}6)T;j;>{DSwPtOl}m&%Nd%HjUhdO{~raS<4z2 zq7z~~@PIudcY+~Ry_xpiPvM+d&ShJuw09DG9dlI}I|vpK*?@_zD3ET|88kP z86^&LR8Q*mKs{R%#{>R#YOk7LWeAR#B~O%DVQC*%xAh?VTwnh}9-_$MNJ5sKkS9lF zA5%OQmVK9N8s_1vQ(sX>}ecrJGAwNatQN zw5I|+wc!=&ANX)EB~P&E#f$4(o@M;IJdO4BC6#;0C~?(70Rd#DKUCv3YG9;EiLFya zIG3cX=o3b91rHEyXAD+mqp{h9&5ij27K3@zeZ8nz!A)Dl3?4X3!;o;>NS4QCkp9-C zT`!xX{DY^<_)tlR^$7R4M0AJNTa5A6anhmT7oqfJMg+s?NEgM-*6L4>@-K^}2+v)U zw}bj@Ji`Mfj>{vU{O;Qu#m?*I2nejCoZ4==n40A=*6JC=oAbG}w{mb8-XqmyytO+L zh@(g>)Gx?>*DNePNqw8D(Pwc;HFguqL|Eed77|M{l200SZcBfBx%_QX{4SIZX_z~U zd_;gohe-=2EwA5MJ>$z3$`(4^|7_jDcTZbI)aA%<)pf_G3_*Bccyl*QOQ$%? z`S^;hwR7F5mgXRVR6?eQ!KTq%KOVS)Qr_E|l{728zzFTRoNhlf?U*4N#z{`MLDE__ z6s+pqgNb$S`6{B`frRb!7VRy{ez z47HEb3z*A;;0tbNRqrbv_`HF@N|>R#V65hj87k%R;pQu@xvwX37A>X18Fx0^)i2`# zX$&}*L%r4EU&>ABW>D)4Md_73mo2cH5n|lDxfxg%6C7-`L$if?*caGmsBL5+kZlDU zI8#r9yv2S*a-g-^p>{5`NKD;ju+-ijAb-)UwRAQRIg0h*>1#z_$7wa$z>uQY08+_i zdj3To9xp9pqavo@WTY4dy7_jrJGE+I!~HXVHq+4kFJ7HdoxZ@;&{+Q^Q9GCPMF#?& zvYzMbk0NQV&~co&1({gjDT-_vvo z-s5|K2eh7*9$E!ts@V`67CqD<)0f<%PM`4%=YwJ+bgO2>x)EqP)B=e*ZY?X2eeB2) z)pBpB;n%3#x!K$~xt5D2*tqZoYU>zSRf3pHL1VJ~oDn3s8^-hL-LltoZuym#H^Li5 z5W22WYiFF#PN^vBNnZD-vQi~B2Ay&p$W8t`p9>=~Ewdy3%*wcisH7#&1Xe#hpgT0c zpk-CoiN;16V))u|L1kD{&WzCveYcw*>otbX-0@WCww3j;`&`hB7)Ve0JkXSGB&bAo z-}c%dzH39L!LfPhx|Oh@wZ2nH|HsniCFg~`#=)XpYmYRi%GeG$h+WQtI5qMd+({q# z!l2W7v)A9K$KwLHczRRZ?Cz~4)joSkpkF`O|6*=}ttcEms%%?Vbh^iM364u(HcT&r z;eoN^oTemiqoj{H(kO&nuu7{h?)kEr=b=R1wRchz)jNF+DHOC|+80}D*1e5 z-2{j1HWTW|+e+<+CgB24TcAIuK8k=x7eoaNv;;N4`nGwqKKOggH+VXAhV=~2=AqT_ zKp>VYC10BNY(m)Wdu^9f;mUMLdVz7_FXyE?!?p$*Z}oU8PhJq9x;Es&+=(c^KAL z?bmWv7Lk>mkxce;)@K$!7K^srcNbn5MrY?1XhG(w>D2AtP8-?X6b_bUD&s}WQ=@Z? zHq+8PRpFm8RJbrauyUzaAKg|!FYBT>cUo7oxiULskh`Gd(rWNi1Dh<91rJN}W%aJD zZrG`8({T$eyS<|RSw8W9<)!kbb{q#=q}sp2v;mU90#yHLdcQj7P!q;AKLdaw-&W8 zDE^H>*e5HHIfp3elI(Oh5xD2=dD^Z)`cYZpP$ylD9m~eJwkg5bLOj4{I;)-2ckyy6 zdzc)>k7YU@z<1AA7O5{9KVhDAsM_qAQVC~~eKm8Wryv38dj+74>N$U>EW^>+kU?Q! zi1KAVAvc?wD@LkUQs|w)oD*$M_Yw{4IdPUpVU$GG>*bk?c)$lI7q`)u3lkJ`2b##A z`mNs0D|NQr?3?}~)v}QjkhAE+U(kwtir8$o7Z6MpJO04@(z`rcr=q)?`30Xj%I@h_ zU=^tS18K!a(hYiP3levsml^SZ0@m}X-Mpko;v-m6=7`DTU6btL#o@9(EUrss(mp`% zYv;;_K)|IsSTs!!L+@_24{qwySK|Z;EZRu5>t^Hn0^!`y`)Q+CxvqZYmy0E3QgO+9 z1GBR@_o{iZwRmsc8PP92QIWQ`A!0W6v^JyY3duoe&IM+;ifB(i@^&CO5p?EE-R^=d z^s~Fu?nrDu%H{a$Q4e<}$&0Tm6LhaS?Z&^cYoxYotH;tL`nEqQa9j!w)iJNr?-WRF zuqGQ`Oo}pv7EHypNcNx5#{=H|INz(o%%qG7#{xdb8(vHsyl~PyvNt7nxxJ$reQ^*J zCD&T7=c~nNEq#^b)5xHaTw>!fbq_*MOdvqYq9u5D*$?m{vG zyX9WBQBW5A1g_h)1=qKPNw#<*&Q8GYAW}ue%Zj{W`$lJUby0iis6A9SxPQTh>l)p8 zS}QkFeDlkUaBW0nWs&&Q`%8qQ9uV_p7xv9(>+Y< zi+ZuPgLCN^4#@0r^9g-dsYuzJ!iVHp3A`gjD34h^bQ&Ibe7)SF+qOqy%iv6hq?j)D zb;;mXk!PfBU;8X)669LkPE!vTZsNE6!8n0%<7OLwfY8pkb`x}c4)pQ3lz*zCcH@pv*xl)J5s1cOCU zmj@%-xI1*#(-aRh9uCI(*5HATxzGIIzMpv&1K%9ZaK5zNyk~N}=&F&E$4g@))QcJx zcJ&ku?Eq}3hI?J0LodJpx zJjAU{PLCu)OyakDDT!{eI^X)zQdwUSIIxU*>(llC>(haD*?Sqd(~cv_7QUkAX>NBU zUF^+h=riKX4eUKNCROxjJGaiV8NJ&amR`_T6*^q<*LI>G=u!2evVEOa7a6{L^`u~uUkyNmwI`Pc;stvrzwcD?b%Ct4&f{22Fb3@HHp3q_~*J3lwYCwOP+cFt5g~=-jihI-5C} zSRs@+B9-KyxV9g^$g=W>qD6?8AGjo=qk;tWSA_roJ4g7By#4Tg8VG*?t9n<)#uS0D*~d(CfLF`Pbst>D%5gt^ zANJex;0|ggws38^o7!N~KKKEBm-hh(a>2_V^d0+!KJ~kfRtP&Jn15^^QueN+-4C=N z4W-SiF& zeEzov{LwN*`y^?av9OpSoJ^$=U-qL1hk}FMKc&go{4<=4gPFFDoufRPrpK0yqDL z<{uub4XXD3>akidn{VkF4lrr`Z;##YJ)*^f@R9FoHo_nGgP!F)$fN!Sy?=$=|K8_R z2Wk5p&2#{H`pM#jNCsceslpqctF9%L8>CaXKoJW*nn41aR?p+ z-&5jap8re{JV-YHuRmZ!4pMmjNIAf{4aNcBE&$;F@*w)UpZ%9v`2U@}gSH^s$Ngh0 z5K4oi96Z0b8`FO1K;8Lm?9lH=iR8e`xBBcyfqhjfp#vBo0|WpBU;*#~cfh*9!O&0k z-G}>md}rzX_`d^d=MW#{fyu|flk^~> zbnO@1q!tbcr@MbjB0)Gz7wDz&9AEbdes7#z35ejfSxPyr!+zd%x$l($qp0VS{k^rE!mb!!M)oGXpFFs3Gk3+nU@FaTk1bA>qF=4uuWKNdJ_2 z*c9OiGSok%Q-WP=`H$cSqmO(4LBL_~B!sLSgujinqX%KoM&khL#6fJIp$QJ+`|!Z2 z5BqWOd<~xW!QdAF*hc}HBAfzE3x1m({5C!KZF=zA^x(JY!Ee)p-=+t@O%HyX9{e^v z_-%Ud+w|bK>A`Q)gWskHzfBK*n;!f&J@{>U@Z0p@x9P!e(}Ulp2fs}Z{wGWizG*kk zf=UYj&;d_S-vKK1fvbQSs7N#gRfsHr24D$>9l;ZM5CWB?!14b8!2-wvTEI6|>w&)H zo3@hlKqUx113yMJWa;R5SAvhv4#{h>|EVc23}MUXYI2uPfR~>SxB_v#YXY-|JF=L< zL4BPh>vCBYD~pwxB&(i?D!=MoS-7Q@qPqiJ%Uw+y=57rWH)DlJv0QPLaJ9W_3wJbO zakaIvLrSQz*$6i`FUXcqWmnP0=xo3 z!eU}#7g@mXT>1I<1^EO7dG^0^6_nuTXZe1xf=_cWGndf3Cjb3eU`&$rd!<}lTzFlC zco7a3d;;R);`=xR1$jUS9;BO{qlqhz9g^(_hHG#n%)#ow=7D7&BdE`Ja+G8RDLtqH z%mMim?Vs8T2AWnlnD985xbT3QF-I#q3*>OV}I)f+q^FtDiOv5Kj{RY{-{BI9R!Go7#qIk*(SqB557}6;9Q3h-32ficN0Jq3;tV%q z{hny`S9Si6bbmwWVhIP){ka$a)HUD0kO*@}7ZV5gRSU3veh7j;46uIr()|ZfFiR6V zi+z6LW99o_uf>1tx&O1Z;M#)N21SJ)jMu5!o-P5_c3)9TWrOo84fes1cTFg4%B=ENo{!QR)&@s*r zxQTBAP`gY7&`#im%vheJDPQ$y2&}S)z+;uH%kSQ~_bzBAp zisih8>X(Ay>?A?Y8xfL=V$*uBB9se5lg@K+$zKAD#StNT9d#pmf-c+@QIz`ExxH>kE%b@1BnfG_znGkO`9~KxcGRpQ8Vlt zyJf{43^8LBZf|`3-{iQaos2$bvVQARK!%}8f}zx#2LAtQ%=}Fj|1lcD4^7*D@_JL; zD?ET{GX}pk3lNQ4b63gc>o64Xy!xtDm|u>4{Zo$Y5gzs+nY5IlFtt06a?klh-g|?) ztNzF$tU|rheyl=OjtfnHxb+of7*-1w0Ui2+U}Dsv zwS2^JIwA7(iNw%P-oa;{x+oo4XnNjot)|`iXb9`aN)omIAYcq@jXicQfS#5Zv+zJ2 z<>>Yc{eo&VsZrD%U#df0^4}3qf3vZ(L7yf+K)qp8|@h{DmGt< z#iyKedQUToHF!}$vJ16^xcWv*xYa1T2whQP5SoXFx0+sVm}d^BV(REx7>J(BQ9o$i6VUV1!-&V!DlV0?UQNO}X=wxW7XiN|RJbCl6dH8rcIVQhp!K~+|ar$`ix z=c)zZ$EfHy*^ip&5&pY(LFRb2+%ce{x=M9Al=Spcy}85G>nByF!p`c;c_KAt+vz#F z#5!)cE6lEGjjJug~;TcAq7rG^0za>OWk*Y1s76NDcAJoeD7C1jI67VBR8uJiwh&M z=5CDLOYGhkT%N`)y)5Q~1b0qsBF`K4;rxS{UZEQ$uTMiH4etcy1&V1!8lBaz$B3{2 zgQfJ?RL&riO_Y_x87aRxNtNtw)O5O~UU1S51lo0WJGrQ|>-kYOA)WEio>TR#9#5{_ zI!?zT+2ETJzI@GUGm?C&0%BAUG2P{rxe;wAshc@m6Owa|HM~yE&a0kz7+249iTuhn zM@7QSi^oKgpY4@o4XCW&+0vu+%AblZXfJbDJ?__*NojB3HSbd$KEq1GdFBm`wrJKC zJv)6@xDtCMv}>yLKDC-^#JIL}|uK0DdtzqL~yHK zS7I7CuMi-2pwb?co|20Mxdrw--|Iep85tIi!n< z9FtZ1KPirS{#&L=*OU)qQ(*N8{GcZfq>`qvEXbcPQ!nXp%s*;nklB({+;406q~`pU zqvm>M%#(FK6BiShVd8r`}TL_+Zhgd#o@r>c#^tN-~+I`8uf~ zRWWkdb~mbgBF3LPdfi@dTtG@?OS3B<%40>g^l+p{@STDFV3M&CgXP#m_FV_@-SbuR zo-ayLgN*eJuxb;{cp#c7%&?Y$r!r(x6=8KIj_T5VuN)8VE2q1>dJ_=4s;rTuZ))vN z=BLfF>%K~VDN5-*gFKnNo5^LrnaI2lqvdzGEM4?YZgh;h+vPK+(st2s+n|3ng(}yX zsS2yYv=1!r-LAj`zO}KpAkt3#UT-i_7w`PissHY^{$tAdx7LH;{IvJK?ksR>kVaRi zVQd&}o^q1r%v0BfGf(e?$q#E@L--mVHZ!$hl|CxRJXIw++e24m;PY~6WTu(+#`i21H(7eYB!scEi(}j$^oW?RApG=Y_d%_@u+%THRg? z>b|KJ8@kfuSiPvUX}Ws^*ICJAvu8+?)L84|gKY7F75%c<&AhLE^_I?%;rsEd@e$IK zF0?C`(u<28)Ed>6Q=ebr`C_kkMBx_r{%%Eapf(Z;Mz=qB;DO`*qQzeK=X0@g8@xBW z{#L8~P2gXayN%52p_|WN&ditxS|ur-?V8Ci3~JOIB5dqbs#%MlsJeG7ZTOkC`c&NB zq!<>;3VMT_zysRrOgUR(_UaX*YZ;*IJ6kokLx<&J#v}*AmWzzc6YkUj}Tzd+5s5(zGGO&(d^(M7F?jBecX$At%Dwd!)V_)hHh6iuP_CXWjW zS!?9UyUEv~!xH^;l!9Th-Ur#e|AdR8eyCh)S>Jk6y)~lD-8$4rBp@`l?B=p;@g&h> z?k4)~&bt}2O*=UP^+Ruv%jVvl>r!tc<>S_AtndJQNAD3yE4>;fc^b8s!;DeL#{;qOeFu=4zfqXrKZJGdWuv(O?G zZph!3!1eB2lD`xL4bJgxV2x&OWV~LrIs|$}y|P@jP)0rKhgGgY(Jt?3OGIIzbU3+D zketh27dH5g?ip51Y0N=4?m>6xJi)s3EpBIbl`E`*{<0!uQ&HWks7a$OY!s|$yh?MG zxfbjkYH;U3uNHK;=rX!#6!dRVpXh;{2i-2e?&hVF?wO#6o#gMCyLrd;{%Bdqki;Hz z)!OX+6T4F}%JEl0H!6SGyC3)R;&JB8&7KM>?M`Q{r~7D4JlwgsPo0BmyO*o;D)=l+ z4N22*=92SW!vo}~&l;$%PCTGKgG>FgDzid|dR#Tb4VeQwDR~`ayw$&vCOiT*--|c{ zl65`$g$pT1HBmFKq_~XwmH zcvYviSf({eiitCaqJh#Z{f(mc4nh9!o4gWcMkl+fR^lNWvTWmA4@PgSFR$H!ZfnG0 z;)9=-Q)7bTP~n>3dgC$Zdgbsvxi2nV_jdQ5N8wIz;Zk7Zd_a!Pf?7wl`Xjgpqg(pCMKGlR7p3l6z;HzPC` z84Vs)s@IZz(Zo`MAfT^NEmEwc?Dr0#70Pl;$2pK*Tj%hJ;@fKwoO>RXyrH9H>L``I zVys?0w(YH`a@115++8#rEX_=tdg%G*9Fd;rM6CJ90ER5dL{>V;^sLu;Gir@jB!;tY z%R5e0yMbUcbsrA)oqk1v<&(q%yhWft&U7ePec$PFYIOP5Ug;>dE)zB9EyeYG<#NaR z=-NDLi@xBXcCW18FDtjAnlkag(4F4>7IDias`w`~6nYw7rXu-GwixrvVF4_m8?m}_ zA;FJxpSoxa%kQJ*4}AmrIn>rd@gqQwJsKcISK|DRzBj_q;T+;{Z)q^@KDgA0@h4w+ z|Egi=yq2@*~AaD?l*X3>pf$3!l6C3?CB+|vjmL^JQyj*9Gr zH^0*B;dL6m?s?r3p?k@!*iI$IRCio5&7qEC@lt$W`Y#(-&8U~mn06f4h?-3}^@h+m z)<(WNl4_=6zr2GpP||qdSwahR^;Huto{rt^klnJ1=WLwMC%Cy;!>vVzhti4j$;_VX3G3YGdU3wSiBZp}%PXgLP&u#gDo^u0EJ@Lm zCz`4<(?KgrEF!_``RZAyD!5N1^o(r!jW~x_;X48@sr|R+dV6^o7t*N1Es&=vPS_dG zghoy=A^H<>71JHKkm}H60r0e}6UVR?7 zw8=M8yW6VE{^o9GwGG@R`@H$Tn*q3TP50u|q1>qUIPA4TBbvm5R|pTg8zjj$xzg?+m5iD!mPPqOAjN0SaeuF0WtB%(@@0@a$#-i}!^{XPI37>CooG^4#WO z0&^LBVkxQh-RRLTP4`%P>pr2gMXV$qhkT?Q7#ccf?P>==Z&JS{*Dej)F;J^?>)hoB4=E2t!7kg7K+Jv-x>f*3pQY9ShOl#2NZ!~50 z4*#}-FfAy?E;-==ZaYve2+V@AjZTQ3a&%QTNAH*2xBtv2+CIj;2-;OgNh(cSXEW-h ziD#l3g`+o%llMY=7F9-9p_~l_U9X>2lt+k$_@?eSn|r!T6riKjT<1)Jxs(&y&9Zk} z&j+JXIoQ_f;FIeH>W)0lP5QZFv}5CuT>K*jDwkRig4mQKQ&f ztKG*H^|PpXg`Myza6))2m^Z48zFw?iiYKV{rpt>BIDKYPaORnFchViro_li?JB&Qe z&0egxI-@m=K`k{T6b5guE!>#v6>5)k(`tO79FdGqjNe#f09(p*SoX4Q z5_S*5JgD>3jkMVXlbPSsd-oRTkCR=MajHx8L{Ki_HO)0`y;uC_J8C4)CAdyw2g|M% z=RG|WJFa};liRBF(*inYmMh5!7UYsO3IoVp- z@^p8B!;!-5xfRVxIisdy_PS?n5g9u(21lfsnv`;#oGpyLK&;>qr;hYCOI@%w-@d4Y z<($E?wLft%p|EReLUPX`*_n``Pt*sX&Qvpma z={s^6Sy1Jd$CR>}BVOcs&Gl-ZTO~^#tF;wzBzy;zoh`3IjAJLSCqWxA&EZj_G|JWfUGXp8b8@KquK4gxVla1emrqQl8! zg2X*=+|J+x?U#Mb|HScWvRU&*{?4UL-l?Kxf~28C4&IFM^VX~h^ z;`KATC-M4Udu$IKURM{2$wru8d0QM)*_B%qyq4V`=yhoO?r|#uf%h3&pF=rAGN;Q< zM-J-TXBT|mJ(dzLtgN6z{M^C0AXM)K_}V<_(4gQMqA!x4Et0RLL}}Q-dZGN7MmhY+ zb+Kc5VQAq`NqWC-TmCAd|D{a+u(XhwKid4X{6qRc!A42)*KIj{y#U2*_Uocyb2O@n zv`gYjl){DO$-$k?0Sb5SM0;?&oXT9x&~pyU*z8ORJDqSgBI3!_L-0(yii-T4{O4=>vY^sK<_)V~q^UcBU-{bj_;SmZJrsIv#m#~A*z9w&*Xcv0&y%`4nEZEjds;S8 zm9Z0FLfgZ+qz6xNPKI~&{wtBH>kDXykopduwC?iX>BW(m=vK3NMv_im#oj#mr79M> zBY6*8Q^=z>j`iP@3hQyJ7?@k?=tGvgy5Pw9Ajv7<_!r8f&qUAS0oAW@8xG*=B=Kq0 zbcV2QJMEUU%Xx#I@e5D1-fox_VoLuRyETi z0aXv9t^&sE>KEP2rAr?^z(94`UKrd{lc4S}R;(J9+hrb63L{Fr%DsGHhpS0S@5w~F zP0#SOj$!&kWo3cu?TMydoT*&LS+yzD9l%Y?$ek$MjZ7HsHgDBr_1KxNcj`OU**mgM zRXf4zJNz-x6H!&;KBn2AZ{i=yfd4Rv&h|PD7L*&&$ZE$L#SoPhPfzT)O^XTP*qtK+{|=4fMbpb!>62L zxd1bfQDUYXF2-#_x1d`$?p=xTl_b3XY3-bnZFwy_&boYUHOEX;x80~>Hk3jbnV0A& zE$+Z`d<}O?q~J}5^>VY7E%n>hH;rxJD_X*6XndUIP!yqHm}cCtrfW&jfY8%g51IqBQhx84QTjxE$rSLXaIz(LK5C#+SO6)^uOK(|T;Zizap6K(?>kpfZ?2 zEi#zZzSLLx;)=2wgjm|iWaZwamCW=H)Aglg4?lLQyKQjh1>u%Pd*qZ|-{Pi>H7W9Q z+g9YD{o65m^oDxn>xT;~b>g7mYSEGfWkW+&pBuxupB`s*5Rqv-v5JktzBpOIlN7k) z|8}5eIo+Ts`CVtH_7ib-T*k5Dz>^djm^%4u=zg!xdptf*Y?)r&@uQNtOl91iUouk= zwlo*|Q zXl%*^YqKqQmhZuxRdVWeL`0lljzJOQvo2;If)m;&CO~Ca`SDNS-b3gJoa?n==hmsU zSx;xnw<^*E@Y%-_cJ-88&{j)WB251%g+ig{|ou8U1U&HRE%XHZnowr ze;)Xz>BN0OK}@VSsi~kV?yb;dHkJ2F6mt(cn|n6QYFW#C%lO%GBNl9N!jVt3qPsWp z16PylYv}}2yE3oGEr#6E>&a+|D#(xRJTbV~8BI4q~gi?|08HlsGf$83_tIGYjl zdjoi&VII^%V}!teXo#$1R#KYYoUQfQ4ps`=fmz?w+|*ZTJbhC0h%%Ej`t+GAJ@-P} zZyDWs&zE^G-KIxPQjsNM+;3B{bp1#)R+ybW!$Bo;4;O1LtEmTABljGbXiU zK7N|^PzZ{?FUw8jpL*sNv#-AE)ah9Jw{FU?f7V#0sA?(ac3*tnv8XIxBO!4tOo5d? zG3U~DLMX$y!Y!5#GI=+{7O{{Kg{e^iMd~;2ae-Ya$1ZQTX)j2fT53ai(k$Wu54sNx zu!hHrZ*L^lf0nZE+{;VGbZQ#*>jWkx^S{`pC=Z&keEsyEmdYpv-@4+bU{Ss+ZH}r6 z`dz4+N)z)irPF2w54!3MA50z3w{U&!SDtCBUQ@NK+Ik@p+kINlkt)ZpvLgGAyLU2I zR%9+JD!q3VWE1g-3 z)Q7r6>RoQQ@N)Pwp{=wEKL=<7q+QfpwH9d2yiNel(>a;Rrjs6`J~N^k8NgL}vpcHc zadZ6{aC7;@<&!APx4I1KB_;7F zG`+IK0|b5gN|XfN0^u0am@{NJ z)GrSsRt}*TKZ)xoS{nBH%-(09Bcb=4bSkMX*0brxI!8;uipt@}56Lg}X~RPNKM?WR z(DJwoxK{BNe0U4B$}zmClsb5GSQdH3pFJ`P975PR4AAg%8Dat$Sd)fR#?|VG7(+f6K0MGUq*Fy zMBcMUs`-mjA6wOOz3V;;P-Rfoaev@^Sil~xsUIC_4zbEPPsm32%O1#|=7HK}`cEt* z9H}&NM+fC=Y%H6#JC~aTuqqY}b#;BJiG>C56wb`otg;mShF4Z@JyqmhX?!|ZYeokV0|_BqPTZ6H=w1s^F>n5Ul}5%Fd|fZG&{Kp!p>gk>?+!B zRtbN*DslaFzFM%FAYV=K)i)1M^+uJKWz1>GrMu;q7g>V)`U-KK7GXENn#0M`kJU2l z=@vGuIN*Wnu`jD}OAV71kH~6cy25Xz<^;I;Gz~m9@YxP;x~g?cj?&GnK7c;p0&XrU zx4CM`Ke%s~X16> zuZZ_o&OGaUdkF^hd+&`<4L%>mQ*Xzu`#{&c=TYlSacd?*0`+{TTIyOT{tqSRzY(E| zPK(Z~cD=G~-JHD^(o0L?vT#b<4SzpW!zr(>R&cSlW)s4Aom}41;N;st%Ql%-k($ru z6&2BI&&SPoH5*4DjaB9%+sDV=tEP}g9(r962vcuI@9-^8o+CVxmPV<>9$*<-_h{UW zvGRo6N8;3TYQYI}biJ!PkD8A@E|*5h%{oyr2H0`yKixK7?ENl5cU5X$Js=33)cm;{ zrD5~B3Xmpz-Z-S5RUu`>RcF1l(;0Q?_{LYu0MqfA<{ z3Fe}?-o3x>N2O63c2&t+Zj}Zn&of+NkCrpO;&<+>b;X6pl;?H4pX@xi3T^wcMUeFw zbm(sMWv9S35chB$4`5SqyV0bCdOzmUD?`VU}ZkG?JkcPYTXS*o1J zz`pEcKV5D!MuC4^2pM(43as4gt#SFv2Lb;MGH$sP7riZIJsb+3 z+7u~`?wOy^W4A4EJ18D$bj!N;RbXWrMkFGyfAEekQlzE3G(L3jp)Y|9BZXdw4ckd4 zEnzm}YZ(gQ%!oi6-@JVXye|M;z>BstqzXKHSkXta@1Q9+%!Z7`&6Mm9hzcY{HPam-B3|C$>p`^1u$3a699dILiFD*m#|Kshg!=hTd zH(*Q z_g$C&FteT6^X$Ezb+3Ef_u9-(0$X}%SN2TWgrb`6i%q!7(Fbwg!d1z&V%sgHTUNW* z7*F$RF8(gdW-5p-)j|Y1R2AD0Iw4oz5UEwNyQ0S(we>`xV^#u7z&u~e@Dz<>@l7>T$xDUkmUI`6KN*_8V z>_N$M@PGNzy(x*~v0?pA2;R#%tyvkXm+#A6gQdi}Z{M(GErnS*6i9|V3as*yVE>uf z)8JU;;IO{8iQd<&yO_AhC^yX~{CxEJvj{n4B?r=d;GELvJDN)*dWPs7zmApC;`Dk~ z+Gd2i=yQcZ9e%4ZJwq|+4)udDs1sNjXSUynDhyMI`?@Av+Iym( zwzQJKU(Y>|G`I+-2)kp0$LE%WYLhOYuYB3JzI_cs= zI#($p8k<(O`niAyI)u7%m?f-6I@hN@)h6LoBL8wz7)32Ih2-eHUQg?2zRS3cE}Puy zK+>*xW`a_gl|xOA8y@4hBoIM(Ojo;k9&0`u-f6Cc3VyovJV-&t!mc79vv}8?IaJ$5 zhhU)3O)`siJQiM|pKUH#ohm>T=l{%DK%F=WnL|{B4TmAK1VPA;m$hAVpMayowf4rJ z5!#F9*B>1{nU>Se#JQnoKK>{wu9M6Z<6@ycLwNi&beh)?5fH}IKU7JoEoSq_vRx)u zy2CPLCdmNu6CmBk5nwzNT|VmTwV(aNxo~gjJK9pxD)7j&FrZY)cRkQxv%%9eOz={u zj^&BuN7k_?=!;=?+>t9UJ3lXFa{GvedF6@Vl^_a>H7%;@4~N|L)E(?4M?!v>8P=^z zk-YRN3iy1V*k#D(M9)3|B<@lVNazwEVW`28FtOisq+C9yV5 zmACVq+>AFz6|T*(k5-S?w_jw14TsLr2It+7xUCqD*Gt6NHd4$D)Ko$i)ipuWM}Bb* zbezMcfv0YFFnWu{LlWVdb;rcBLKNMOQ!0T>-zqhEbM)&hguofL|{N zOM-Z&p!bcS&G*_B;*@_!qvKGw0(vV<$O)n%jz2zVuul_2NQ3p9Dgfzx?NXb3mj54F}}KrT!mGaBZR zoq5Q3`9AyJ-?~13dN_LLQ{^1y55wm)bv30+nyX-2H63J}yGAgPgM7%V&+15nDd!i6qN$kXhI=>>5;DxJvab%aO; z6iOK{{E0}e4gJUWE3##wS& z=Rd*-moP7oi;c(%y>T@ASe){M;T~1kQUt^}-wu$~_dEhnP9IhoGC{sIj*m)Mv#T=< zxvZHm;N!Bk%ehj4xOS!gs5WvUEc%rZP@i7=)`5M{I~C*@^nQ;M+G7F+PH+;sNiCem zC)o!!!}_&UiTezL2iSlP(fN?#%US*CQ6rDoI{#=R6^luIM+>zBy4I^A-%uG#?OLBh zfR(c7`Hpsqo^}QzU~(&EguqsDD6@IeY_O524^0|Mpq(OyOA~;if#WVuO&OB!j=Ewu ztpO_L@CFOQ-~d&O;*Eu^@2eu?j^=l(sD{#;#jxYD7|Q5pnNSl&ybF>3;s)--=$#9_snby`y)Gjl zXMFciy`nOf-@@WJN5gd~l!?wb|A~q8Sl6}iZj7kz>%+SA*}?gbk3&u}Ot`~y8Z(86 z$+eALUV)n4tc%7VOqbdOA9Cw7jMTqyag=?OxCTXc%WFZT&&#s9dy1C5#Zs1(Q*<%Ly^?(jJw`lS>Zr~{4bnD zaYpqog>)p)!cxYvKs^W2VnA{`oCOfU!3t%{rLsX4JG(|MX{>E% zdb3tjr6T(wB2{ifMS4wQIFOXaAjTcVh7(F7V=xgIa+l z+5Sy(QN|i~v2qxP?3jm+3Yv>37BrBhM&&>|*#}S$f!*yMarkf>AmLl#7>6z4$048U zWpVJ%SWo`KE)P-#y;WZ1)HwKWvG1Suq(9?Z;}0c`j^IhEfkcR{+0ks4OVIeL`06|L z*RMjN4~!H-OVBc_EnUUL)p5&| z8z9JraC!R1xc`;FE21~}yDI+J!GGE9HG$$&$$7lNcOa=``19$PMmLYX&*j;TZxx9$ zu;IP?$2MJEFfpKsmx~TWtuAyUjz{PSlmOj)4n;`RqT-8wc{8Yd`onqe&h1`4zQ|j) zx=K#55=w90+0Rhf(ikb#8z|-^3pDa|1M(pX0NlKD0s8M84>;1f$mZqGgiy+CgsA6W z*z)kojszc|x%l_BvfP^CnK)0{+1n%(wS)5N+wP5o*rh)yxRhy|76FgW468wMG5w}d zTXAR084bo%#)*mgNFPy*9m7z=N?Z}<&Li+`^$S6;`53|G?xxm}WOL+{fHKtx8wq55 z>Xv{632B~mGf2H&5~#T;m`r!hgjUw##$z`%QmdD1rmS&N`ugE@&G@=z{PiZ9X&xVx55;bET#P?@?+{=>R- z{ad*ZT*^nf?c|M>hSmtDWaHfj!c;T5QyJy~G1#Bv9_lO~c(Pjb6Msiz_WJb3qA|pD z`~Aj=avNwZAp~F)%wiu(JK3>H*sNi*K{S;^d)6dJ=_Ah;Ybxb9)VCMCnD_(h`htdw zlU>W&PnyZpBlI)#R(J~oGL%hV>gsrCw-cVA-F5a3|r+rM`es~ z!aWrRmyc3dPy)`-18>mj>ps6&8sHi-c>yvKqGH%0?g}xaW=W$*m;4V1k2l66cL7yO zdjd!9*xA_5rPh~9p*9Yxs~?kW_r&eyJHR9)!Gj7H2qYw|v(;dZW#pu_Y$ zjgsfC$yl{JldKLqdky5QDC~fL)%p0-g7$kX0xZ&>vFHY;M7{))Rs8fGA}ET;LA<_# zHIgVT8MIWN{vB;-4Vge}U?9KHFU6UZ^2aa!y~4?;W*IUuVVexeIXZoVdyhD{P6Dm` z_DQ@G|C0)DO*aEzn=ZNzJBqUTj;78vfbsqSP)Kq^$Gi;@GQesU#-B=fJjt}z4h z!zLyl+g&=Y;VlUmGUK1HV(0d?ns@aQUkQ)Na=4Q?2y9f`is$BXfP@EU<D((5G(3|;R(?kV3w%f0wqfZ$s`Tdzx}?{1X!=11p#V!{woG?)Q!HsCjRD$22dFLk zuxgQsdQJJcr$u)U36Z(H^C$grs7#t3$5$^p#+9c2APFxavW&+TP#yRIU+~Zo+V)IV zco6dV5!Z~%?{t>&MC$X=k*H@@0kPX6%6d;pAUbQ#$$Cu&uqz3b;!#!gL+9Bkr zS&klSO?|6`3C-r(rhp|fsIpOgbw1uNF}6_faO5b{LyBAt)%+Xmg#H8AnNOHnD@a)} zXFAf0O+jKU4O$2{{SjZA0wy=Fths(denvLNRM;~BWVk2#W%9?>}r(6Ur$cK)~ z*A)qq-~3xP0hCnQ9Ou1j9A_cGG5N3hJknHO2|Q+y1#q%{8uED;x2S2f#4L7ftyia)>`z1{&4F^GVJAgWHyU&Z>{50V`-s_-`#qOUQgh{G%(`;OD zK8(bk2-sEakMiMA^ALte72=%A9(WDY%hHFd*?KhPY)tKj(1&G9m@yQ#tRlwwOO^;w zN!RWqySg=J*)LEME_IGxB-@!~PxQ_I)J#NMjr;^!y9-;v8V9O?$DrjFbCXa5;6c3P zL9o9HIsS1-ZT;JjO3VjrOPBZAABn5LE*?PLA$*7vfFZ%5kR@v+c5tINs}jODHh2ku zDgP$`d;1NgkgFaS#qX%n=e$}4I#alhnv4XXkT}GPq69*ms`ta)@flF1z*xVdO+SO4 zlk~tnSr_^jQ>6hLY`~!+(ggM$Edg@N^Gf(C!lHW~9%u4OwG)#jh|r2 z#^2Fs6s)0@b@%`dGZSdwHL+m?|8b_5DK@(q=)6XYX#@L*0Bn(gj>1wnH6g)P==Tkx z9P1IvDU4g>-TYnu(#AMJf%R|$JG%aSlzP%)gAbH%{QeoInqo3qbK}sfyP2qMz1cD) z@CzoP31nQ-<^gm-UfrvDA2QLaIJpG#->_T?hjwQLRS2uEqP#?MPMUk1y$2*hVB?<8 zB=e9Ml>7g@0?Q{2{qTt5ZC@kMFZH51@fmVxuBnD8YPt4k0`aJDvX+Uk z2hnCiH6Ljza&3RV6*`ffD+PP(nd4Ou->~@Y(QHC2L&-(<+^G$zXidX(V>g5(nY1R&9GJ=w)H|Jm3JG~TC|E1~v zKg9`qN!c(7%c_AO472W z_Gwh<#AGSDioyI*4JQt#Qj29kuhrqtgbm!C|8fPwosm->x9cMu#eqcVTZ;@0Lo61P@M^#Z zVkV`{z_Jd-SfbbU2EDl&)8zOaU27wvYcC0oQ76m2k7rRtT|f=x&)2vvV%aou^jM?? zjCq_>RTFfJm}0cRa*&Bd+i#2*bdU2Z@KqJ&qi$aggOrFK}&ktKjz*#%iVKo7W(0IlwkKhTm`^xiJ^{LTFb5qY zbM+pQMfR`G(`+>ek7GmaueTM~xLBD%KHm-qa5Yz)xyWC>0_!;knUw=yK?@ICm5hKE z&u)?Il~{OM*%3s)FDaRR;3QJrS3XR0UXYS`bY|~`gVZ{>k(mtf?{8Ke!-_s>X#bq% znb$L-tCySR$XL`i#8n}4Y1>pWqN07>Bl7$eXY@;^b|!p>FSfHP~hd9hR}lS zfgEdli9)?C!PQDffQ6Ag4>r9GwkO8S8d(eo?4L}Pf0xZfMGEm>1uE85l=9gmuo=sl zy+p_fIJ%Xz&&6P^)>}dId1IUrzM)xpdP!CmV#n^TPplaiw>HHO8V)tOO{nAhYypxf z#@9=P^5Aat(#7ek*(ZERjPS5d*7qGjs*Yt=Dv%FPCY;D2Jh#Afk@v}~ecKzAT4`}( z9ec;k*{A{qmy9ekZINp$oydmKs<8$~PcDOi^doiw&PWI`(>ZKP1D*7?L_Bt18J#Lh z5Cng^1XxRqEP-(^hLO#iSx zb!9?Qv5eZ4q{h4DM9TI{?TLGemuZK<14-@FP5*6u|um;-lX zC{ckNtKHu5j`OFqUWfI(XO6;gE<3ih!mjw7VtCjz(c!gwwICtCLDjg__&Yn!7oHg z>{%F!e*{_vYz@jd%Nc!~aSWN}x?<%TbZgjW(yy?OIiSl^X4;TP{yeOmwn`%}iuZ&U z$XuKcW+b^MwP^E8(=Uu}SbqEgxXnNd102w?(h-z6z~^wU^gsKKb{FD~DsfJOQ*)f< z;oBeuR`w9pQ_wCzJDjZU(-DxW4R4_Kl^D%cznm{!kA^0AC1x3+-I~o|@0wrtIl9j&_5X72zr*knxZVAr4^ghk>N81gi>1qR4EQee2mD3#e1YvcH)Cjw zU1(i)nwjIa6gfjb<26JM*>bQgB)Z146a(caIq};Y(@k723ADNf#iln%nvUN$k0dEa zc8Go+)Z1jb(cb2nE!|wY8PvL{s3C4E3_(Dk{shfjvq_Q-DG61uruwQ6Rdo>XUV>b^ z@O@f&pBpM=q=Zsr2@Z`BXfJwj>6V~BYpcH)9mNRGjTKxdAIo9v?V8n&sI#wqu*{9b z_QQA!HxDRMc6s4PbxXdVyMe7O_B)z>m;{X1$1Tuys;Ot5TOZ@$;Z#=2#2yBlN{$JB%N;!V{=l5287 z(&eh?cQ-y`-c?w%*L3)K=}K@FFCD?ZBeP4y={M>`ipAUFDW;UdR$LO^Eet1N&IcZ( z?!RNC!Irx*F=x~KR)6BT4VYxIt%1OoG3ya_CBzlBH@E);T7Rx^-p8lQx!M<4DiK9| zINKjnQj_2UFt9z-2F35E^!v#h9eT=P6kNUMIT4^nMa>{2sK1jAkAQQ#%yCa#&UJZEm4{xU}dP|_e;vE z4%jY-I}r;3`Ab$o(}rJMLI%Cd{iSk5>2Yl-~fOD#3c96}qK5gR75p>pRX#sc(J z)drjuomZ9~_38Nrh_4OXomMXBxoQl$#jT3O<*n}(Dp)uSO&g#>N52{>j#b6m_EWK5 z>$vBZyu@}63&X*$YSlP&icMQ3rxDeK*zP&K-n;!&Ns7!;fSA_8>`T5aW@AF#;?41z z)SpB{`awBf&#QI2UX&0AmGp1ltGt^oEsHCn{+q^4d1ogyBiC^Age2N+E`+3|X56{N z{`xA_i~*@{NGxqs5`jkQeB^;#*zO@+hT^7XY{O2LL1sGya^qrozsNzW@7uiy$_JHr zPYSn1M&Lb;f7Q4d9Yv?wnU8aCII+ooZlS-$(?{5Szh;wiSS17~%ojWO#RbR;K>TBhPF7VdsPI9hO+i3hTp1eTHA1hk!I-)%DD_ zu~VPrUMHnTS~SFrfx0!kn4va|{r$BhcK@Ky^9OD$CREK?TP1IbO8^uUIg$j1EYnU^ z4GqfLB+ek~UCM6~A3VsQuF3P;eGZdh8n0~h5zE9v_|nLc9Jzcf?wpjG4DymMvFv+(W`lZdbMtHa_j7@6=4^lAqiKV`R)1Ko@hgiYFTpaoXB55iWWkccpDk4256 zou7tbdMWY)My}#7WLN~*>kSh9=o+oSczCUshjcVyrB%G-C$eioxeyOTvN%fa-*Mhw^>hCn+Bm*UU3 zh0TeG1R!ezHD==mbcGZ?a8b4P9j&~$jA8gQ*&N3*#|6OGae0(M7nPUIj&7PH&B6VC zt4JX=wJZA0sHHx*L^gkO(+6+x&5KeatwmR3>2ZjX^fXO|E!LfPy|K5j;===?o{YoV z1Z&D1GkZN>MQST%58(IR>tr2&?`AtpBeyRJ$Ms^IJ%z@2pXf+VPoFhlDfWH4mF<_L zuB%p_lIJ7(nZ;0aPP9Kqt1S&TOd%zTyhh`3zL)kE9cxwa1FD)4kLCt&O~Dqm6y1#K zEpIu@E?Rf1y7+93XCTURR$(K&E^ZcbcjNlAY1Z7rMn^rY&-M2O_W|UbQ*dZpo za0W_+p=Ru9iI0}qR30CeQ!IL2+}QK)84loAuhf)*uQ4*(*@{$^q30{>8$)OLS&O$0 z0FE^(U2I~xo#hPixy>)a7OKT4)p?YP=cvjJ= z1n+N0QX15al$wXacjyAHR|L(Lu<^Rw-DyJ%A5dCLUBLWrh0j`TKy(>?XUHz&>Q??_ zzZ02=&*GdrWU)R-B{dTsSdXR}sYZERq09}wt^=DuE&wUT#ttD0IyPiI2*$qippB#$ zk!ej5vhBiwhi!)|fu4>QG4>^DQ>J(Oj?dbQED~4$9}ZmxfYH5dWNBk(mkZA=xtp<0 zXiR8)bC{f&B7V$dgj1d!-2Mi)sLbw8Ay=-c&feJ<*d`F!z&;HWmZ6I6tR4?5hI=ea zOYPV>=$aZn;IKya(de)~@MaE((~>(%*z#$<$5xA%m-3i=iRTU-zG7i8i2Il?wU_0rFYrOj-8 zY_Vs9s%S%^8ycc-`o6h-?XX=pKgXJBNxxk4Dn>pJdItHA<`mH0A(;!z-Ew=;V4Fi& z1ZKP2R+LpxC_@?+NGo|7F|oaHGukIueEgV=K_$3X#5``SE;dVIJODGUE3-K{CGwbX zC-3~jdDnL|tCtb(K399Wm}EWLS3c;wv1r-avV$YXp~W{V6LwY@-qKw!k8z?T1U@nR zsT^UX$;k06^I{8FWtZQ~$~LEIbgj;t8>iyUde6?LbYE*&>%NCVFI`(z+OLcWckHdd zcNhP;L;a;W{{J78`R@t_(Wy;)El4vlt>5BH#H+#^Rb0ugOaJZw=C+J*nH4CD^fg9LNpsAvMVP@+ zlBx}9IKP(-jsJ1ka7j-7#HwEY*?9jDXhblSMSVwGzidfy_z&w0@HO+PM)UIgaV+|w zZ``=Y`HFAQ@c8DcoPvV5OAO9KwV>pl?02s4>4l5pWC#I667KNmO#5;dm@4R8xw3A2 zdy=Ey=+TpR@|Ir}KF{$@VOQ@1^`vQ-8be9Wx=A1ESxxBF>=&5=w&M!lNd8@{^hirJ zl6>))U^l2a?+XIU9A;RcS?wqr0sro+U=H4m!S&!rUh9rb#{sxcDZgDcURQHaKaC1& z_3`py+F+m1OynE)p4xDO#k0q0431~s7AmrFct2UkeTO#Yu{oIvQ&QNcKy^D_J-rQt zf5OoP=hSp>i$3X5TE@QA3)>tPSDGbJ!UBwd&xG5KYx{>CkMZ&vR#IZ(Qtm5`fER;W z4xhq2b$aNOuSi?6<-DRq7mz-A3g2^c+@;b@fJd5q~rN@a{GGC*SNq)RjkoY(6z?G8qMBCb2x!g@o zx0>O>ZP^CF#O#Ror;)&1C33INmo5^m>Bl9}1jBkV&iftZ)qSJKw9HKXr@jUXb8qoA zKbE$u%yR*~2A*PQ-;D`mya!FVw@hKLO6_n4!2-5S;!pF`#Yh-e;025 zXZhTj*=Nj2Uq}W3<<%^{)#WuxBQuX(Gb0IdU#I3_V0M639J~NtVYJuk8_;m$Hm$>U z;C~DI^+l79?r{M^C{2bHy9@c)v{$f0Nn!MQ*ME6f&HsE@x6O|;`Q=Oh_fPx%cm03x zX~JOxUgm?s?Pp^vEd96$p>wU}%D~m&m}|k_vPe-yu~=~&+>a^qQnf#CI)zuiqlpgj z-1ez&e($}yNXJAroNl3RTUhLZ_N~Gq?(+jIIE66XC5-c<8g5+bx1aX3%jWsoWBvUs7 zgx_8IKDu+Wr7igv#ebjmhhNnwCl*g{s zz=*4&1dXK;SSJNA-KMC$3>l&awhFUp*bOU$go*15!dWWsxRfvkzCE~c@2b^s9!qa` zvOs1fdHw%cRX_ju^-Qw5x1k@h#j2{;*%BFbe;)=@^gSk~u}1LrpYsmYUF>{B9W-OW zlIS0coCptsjyMcs02aR;NWn5HMhCL{{?NfDFHLAK{=fyDOjv;CYax{H7W@NBs}#Dy zEbsBO@yd#b7P1lEoN+c#4AIym)|IRzq{oQW(4>gF%VU2)S>@15)A|B!c60uh&o=XV zVDXXsJKEFZGksv9nI`BchF;`>0oopdu&ihA%(xy<+Z1pfVD8`KDe{top!XsQ8phbz z8Q|4J>V&~UMH}!G|1!l|n+E^}^~^UsA9%aieaGi~sD+pjm{sA9ETO`&a1cfFX3wU2 zJNP!@K-N_Zwr&7pfvp6sp(3+8+gSdiZ%6;PKmW(in*V*pOcwFK-u;f2;f4g@ODszo zLNUKyH%RayizPS8BdCVxstk8LcuK={tY-H*Z+k&)Q?2LhP;e$beIp-=idxbk16 zx4+C4_$9rW!UqzLW?2*ydrpL^>U4W+AAs3SRVws^GVVrHyf=I9EI`zyBCn7;zchR8 z%nrJ7a}QNuTG#2uFRM^&VWwn<@j&^Hmcz(p-$Wrt(AUIbvrcLvlZV3AEo^5j{3(dgIC}{qgzR1syQte0E~8KoU{$Ex_nrgq*J-P zKH5(HXrfV`PWOV~FS}P8h`C45exf1*rTK+2 z7Tn^-V`6==0@e2MmFS_@)P**`LB)3DKZS}{ROQuu^z;VSiavx0_GrBAA#kW}E`SiT zupx&MWvp&d;_7Cc+R~k?KwT(X4@}S8zZ{x7pPZbGALveZyq|8#JYo<5M{P9jJT$SNd5L3b5bLn70VZ-rcE6oD?|Far>DhNi#&h^ z-{_!mPAb7DA<>Rr_S5r}!hxI*BpAy=vE{~47Y3xer~k#oWE#kwLcZdI(_@bJ+z_|Y@(mM>j{(`7dxDcKRV1s2Y92?>GbA7!6%0LIV%T;cnd*01W% zv$Sk-bW+a(=32oZ9*_4E8y5NX!>Q)>Hf((nZYs<|>2wj@KCs+&4YM$M`$Utrd$F*1 z!)%^ui}J=QPx8{(zAptF5L!o0KcV4|2SFUg2rDwsoUn@9-u`~Kt5=c~#rEO98d#M< z=dTv5>aRRvYvgU25ji`)cr%6A)YL5$_oJG3DqGaMQ>`A}tupR2zy2}y<0gv9FAi#n zV@tFeF;~hYCoO{9<6W&Ompm0wxsS0?;*`Mb#rDU&3!&ejA;%y@{1NEv9u%0{i1&>H zZBM-p?4lOiVzYHFQvx09}of$&A3?7lW(+QV2gUd8p{;!D=gJz2#gy8L_Qkd zP;?ZshEJ6H_aMNKp36&I&Sob*TIDHg$8~1Tp`)EYH5ZW0Y)}~FR_@hfka-b%{-|ts z`64--uly-Ab4v%n)vX0qm2Tse8b02|#knD5LBM2tBzwroOB|USL3j4Z)hCXUbnB7t_(4Fa7ZGFq891P!HfA#dOSEZ*UIIlgisTh<tB30K_2bY+X$@7TmZqzX!5Cb{MOw!aBm zdi)r~2+`CTWZh;x3Zs7zi|RmZfJ@8R1Ednx9%!?{+(~*V$91ESK$bx#<04=Z%{;PW zgtWBwjo);Ap4zcX7gAcaRlOkmRDF#U=Ull5hNr^OvK3zui1l&GGeYjC7SAtQHfQEN z_D|QF!K0p9%|3aHlk5 zCblTr7Bda=&}_*@M>%I+*Uh=XH>9n0N@A>M<3bTlfP%CD_QrTp!!xb~e|Fm^uD|psVtX%j;(xpKfZL_r35>2feC%>a7;A#7 z;LwY(lVrseYTwwBRBXjxHaS7{_3q0cC#l@#sn4hvYN7r^G~YJ}vYB1YKu?h|U;~uJmdu&|3Iw1+;gi776i-FRQ4Ztsk=?S~>+M!|qPpIg%%NT_fF$0>wQFKlxj+fp7F<_yrgYVG#1+0ryrd#^GF?9#}X zV3jXX`{7e?3lPX_>>Hdl!@+`_Yd_1bYfDq!C7>fX?|AF+4w+8Y@MJzh*AXPglS89IdOu@DJwV@2|QVd8N&i@7T5*IHfUsQucjS z)C{+LpNTdWzEPB2*jYu_Qu&KJ8}|_`pP}$p695WE0?(L{`*bK3us37?K*Ly4N`!nA zs{7zK_iUK}kbJSiF6d=0pA>WHpcOjOOa^3`ex0Z&T0m9h@tfI`<+I_RA18vHcp7?v z52yx>0Mk%*H)uPJ^3qKze1DTAe`W*W+o+_c+j-|>D^r5DIs47+hhlyo)?1#hy6-xj*G`!KK3H#QZD{X>C)$3Bpry9Rg zVq9!zFvzh4$QtjRxdho*X0Vr#9lTZYh0dy^O(sB>=9W%GT2Xtn*iXIhvt2WMKfx+e zYt;>S>YZ#ZJ@wtcc_Wc4qIA&d4H`g5?loZ#T(! zRr5q|;#(P8#OuoH@{!q6wpX(Pm>m<>@6pA?v$;B$i>n!ieS6p6Zm;Iw1C%rG)&Zsc zHGtuxSADqB--S&GCqz|26GSv&2aK1I{Cf3U<4*${YP?Ic+5p?Z2H_mUlMPk0(rZ{~ zP!)-;Al+K^PSkaj#*GX$k7wsQO>ff_x}DVXP*3;F;#qBdg@T}KCgTZC`78h6_ZX#Z zanmPT2N%Wf>a&II0R9*;>}7Oj0PSn6F?{k|B(HXh5F4B|KSN#A$U7pPzgXC=6i(!# zI?qft8H-PKINKQ;8jsSbb{BYlZSaD5u~0KSIQ$7JZTscgiO8MUiGI?`A{?snYFvgq zDnAkXH&04Fs$0P(g-o?sqVzETZgc&!)Wi^S(0;u|ETM^o0;)x`N&W)^trJ!;!JEH%^yv|UG?W-sg zh#lC`inWYZlT(pevTJ?Ww_Z`Tc8?~;^-%*abIEGI#)R|)Pru5#kgoQ|c$9QG2j2sO zB{Suj?`RX+&y-DhTci44RFj^A`q)(aYg0{!kwq9I&qH?!l%3-kdpA3%>6UcsX`Zpr z4pImMb9f0w?wpyLi28)2Q`Zh@J{f+s*T?qsn`B_ZaTtT{1`hKlhT_!)x>NCO+oeZn z&y(K0%<>>ZF?8cS;^>8PLBdoC2@)&mv&e3LW;4H`u0P{joA&16p`1&xduU#jd}DnN}$m;<8L-F|uVWpa7TMc-SFB z&n1-An#u8Ta?4WzGV%x1R@_8RlW8EJRG!G%jLQg31DzHN@ zqewjYv@L!G65u=1H6g4naw8drJnY65iXXBdh`YKvd^dHu2ZX@a|vd!(d4NW zz0^3Zb65(>nTX^4MqxLadP~I=krK}Oj!ZM9qa&v05$}=-VqhgK!pYsLWVb3lT%im8 zHd>F??wc|5J#R&L9n!EmCNR9OjT6Lt#?cqJ3Z@_FE1U|6i!EVitJ+F1maMX|;xA^d zX8Y`D_)d@`iwvi%y*E``z?(=?s7VHgMk18w76~RbBWAiQ8ZWV&@#V@Xoain?HJJCI zXB~>C8<4UKSJ?7$g0sOps&C0TN&j}xm+w!5zW&lZ`z53P{SfDWQbWHTXV0q~=GguE zS7Jm&0I zB*3i%c8v!3NN|0z!b7-Ui97JDrJ&dJ)hN(bo$eXhdhK{hl0*B_CH+QMc{x$*uUT*w zfJEKZGr()KIQMr!1P~c(`Lmv?&pv!uB%5xf&A_s3zgLYVL}Et8E1bF13)nE)bDC;m za=Y^ZanW22ZG8iYdIP*zhP=*^kcl*on4BL;k(YNa0DkW_meV;7rmDwOQpA<}cx+%z z;=iI-l34m<2+BY z`yeB49JWTC7v2ksG>#P;TOJYP%v0!%y8K9s4bWK^2oV7sx=R2%G!P*&;PZ+CPWdfx z%DD5W1pv_SEG_shx%{6Ws9Af6ja>G9Zv&|F%x$P`Y(kn#i+66qvH7R`?he`q|- zaybW0iB3N2FQ=A3iNWv>E=?9>6?E3^-YXO=(3n3L(x-T*@kKlZE|X-&vEbkmaHZS` zk&A0F!rdz{mMwyY-6WAD?uo+v&X|7A_6NC8L(NoyI@`IVqCxiq27FzLjJ%$na(yuxfyJOm8eGXEH1f~P8$4Jd zyk?P`M3Y$LI^rtXNBImdtTgFXvWglMNsA5VDjLF@P}JD1M~g)Us1|;LMY(*H*?wH} zh^zO%5~VWW8y+XwiEUjqMKlSxA>&5!!UPX;nYY}FbQ3QOEZ3Hv86*`AH?g!OtLJmD z?vhBK$fyg3LLB@Otu*jeq}q2;>!jOMs+ zUle@GF^lCpii#9+JauHt;T)^RxLe@3>dx^A)dbfj4?e@;byC2eHRx*B+8<=)5XH^1>(`nS=dDA;_<8Q z6{CCRnR+s$#bQZiw|GNz6su!n?*O*DC`G=Qs)-?=}GFy{mHzUIaOi;H)@0;I4s4#~A^tP3uk&TmrcR6Zt=>+y6YH`W0grGYh z_m6o?`{&RL8zIVYz#)jPPW>p)!FfJ6ou48QyFrgbW+G9d17szp!_M!I|uDb5HrwO?j-{#c2Vm|g++qN zOqN~x`qXD%yS!;d@|f1MC{-KMUWZI+Tk7LEJ{_k;4H21hnf-+d>`zwMrSskSXDpvp zZ8Vg%w=@QFr>vh8`q~7TDb9&^?np5|j0C}TL#b@>@(he>qT~)mV5=qMH+m+C*Z`>z z1uHxENwuVfR>xe^2Z9*TeBh?kYg@+b5_s*HZoiQ+3g96d>Rq8mQ{;g)>#M?~qqVpO%)ws^6tpnr!;|MT8 z_43|+eDD^Q-77p@`^71jv0JJP6a~j&Vk0Z4Z9vXKB|vH#DR~J}i#-Y+`(h^~BHFSr zJx%AUzFJ>ZoG!yIc0su z=1~uyuRiYSf-$mfmo!G;5hTki>(AxUQAKsEj1tfk*(58BMBOH~~jB(S>hsx}Tw({b`~$Xu8k)lKp( zowMz)M0D9X-^2*(-D3+*a0+{9gK+CEvIba5EiMDy>oMds>QDvR)gkc;hfvDEW{mM? zh6Dn17G|$4#tM28fFa61X!$e1_t}=!n{#xt{F0V8R$VRQ+L+TG1eyb45j9mx^7bR6 z&c^u4S90{@cYJO$(uXsx^;2_)9P8T5;+tV=C_J5wqzq8gcy;_hAC@wKjXC|mPb)8w z{>`|SDOpw|7qJ$_W=s0AO6xJXMmA~*-garq zfxXNKWx$V%Ir}$p-z~@oY;2abHxw;*9U7-W@L;E6vUiK$MR0qNMbRPjTksCVRw8u8s0w8LagnAi?(n3=$0Jq2E)ukdbl0{bqs^!(L18dyu zl+N5#zm*H7p3cmJP*+;Ah#_Ch_xwfpm5mK>-%&x0qDKQO^)nLL*2AfaFSadX<7}Z8 zC*V?D6sO#Q{R>)M3i*#grrN);91AA^8#5jY0-DE490~kqJc>!1tmP&D(cbfS%~<_^ zWcmH)WyR})^mY})1O2!9_I`7V?lQ%&*|X_;Jhcel)dJi)E9EY!Q396(7p5@9;lk(8(RiHwjS zy#Klyrv$BaPc$BxDCONbqNy?)ImsH{T#WvryKLw;j=J`lo^iKpNab3U6W!4W?*P|( zY86{P7BRH(MgP=$QnzHir7xsdWkoVPPU;*zE*Zr0boSfg4SO9h_l}5AO=IXdUZb0T zoz|$d&3Gv~t9m{#dzQi=q?q&2k!C+cqf}I7_3aKmtwXz&Q%*=svN?;8Ye^PEgtW4W ziic%7=3?RRijlJGKXZM*jXIxG`Em&5$38Gzsbqym|}|Ui&7=w`x%85X`@n-swWP#To}oi6_$~fsl-<}yK?lds)aj)aKl^I z`3rklgydMXN>~@<+_ms%A4*=$WZXt;DZ~6J9N8|P-7~!b(KqY6*_OtC~3}bJMufDEgn5_0WGMV|AK`AHKsJp#> zRBivqLH4hk#y{2WA2sn!;%Z-759tp$zB=(z9+~;%>13Kx2_?G?+$*a2t7%2kh_Tg53f`NJ#c?#au43I>nr7Syu}FtWFQMb} zL}5tKUf83R{+A2}hAQ}ZVOJhRtuOSV`>1x{o-3Fe^4Ub5xyXJ16ELC)#tV}atd`Fwrn_tuxBXpw^Sq3E6-QDR{Dpn^aA;l23*N@i2dUT6qNfL^) zX}ge$dygp$DnNT|*=y&;O$FET=0#HMZA_dX2r;=)HBel2YhB&b+nzekl-T20%IbFh zTQ~r-S3qyF+^OrgE;}+)ko5PhB4CWhKZqc|l0xkbLH)S`w;49p49Kb-+ytLy)$LCH z?H8QCQc3pFaP8SbOiVCbz787#kK;1O=oB(xpa_A__!Ay7bC=(IGSwJRp!LPIU-6_kd)sqM+~^OFR0j%MpT5z_YAFy-&WTm*a|rV@4BH;A zXrl>mJ<^JI5S0LqJh1bDR7V~l%!YxbA2&8OKBn7bZhk?3LjQflIp%ARRQpc6jA{5C z$Y|OC!Sy0;KS{!SV}56}4MKQG*Hr%>H~pVrPk%CqVgFv$a?2HYYuM!q;rM5?v8I>O^F}M)p2&PXOcygTfg&Br zR1RNs1U)=>T8E3KuSEV{O?l%}rOyDqFdBwHt68;P-e zG+HFpkYiWoB>FyCll@I2=#>*6BgK>&79Ns0L0ph;eXj$fZCowvA|K8hSWtao)TtG} zct_k?kX;hRv40?3FAR{zFT!830~O<8_(O&ow!yqLa{WhLx*ASqlmln;Y{HV zWoZ1v&q{%+Lp}jo?Z>|l)9!GYfv2Pv5J%tBm)uXelTSq7Bip1A1qIIXJV)jnU=X+3 zxTCA9t{o_L{||VN*2L7uR0QW(f(q^Ik##5V))?EDmRsmjYmQU*x0RXy7^^1W$UrJiwB$!T5 z2N#Hc&|tQ(I4tg%TiR0fhs>1!2g~VCO?Ll9OyhW4#`5Ks*Uf1Z)^;A-3-XYep*}RI zwzcdq@`lyA2AC0ZWZ*$E6jy{iaVRy3x!;3g{Z z!+>rHs)_Gw`z2^Ph~@A%LjUFJx>4vu}pE7~iXpD@tC`PLH# zDl+Ybdf1I;MrdNc!1?LbdbwxoJTo09Vx&crZnu{%621HSkBo|on!B5M7-bBK3iO!e zv!c4KC+F?z)MrrCCMR~@EI;qeCGjgs=JU?^JU(pWqf5#$b+egkUX@iVBJsQWb+YzF zn_oU#Q0@$s+EGO|w=#;HYJV%Swii|ud+f;Gcs?+{`*5gmBX2(`Np9|S^!t65;5bh2 z%QENGwiBQb*a}njpi+|1he)$+yx~UoL>!;<+$X|T&W+N|TY~+P-;CoB2)#2Iy5AhHTOedf{QT$*+huF3Q7$$UtY>%tbla(V%ox$KHFZB)Q$iE zx`*;Q z>?kPmR(558?3lY&*cHEpgot~>ze2mLyA_KD@7F)pkF59qt>Ysi%hGk zEY8!{Sm_o9-zPQHKZy4~MBRnWf49N#lp1{sZ=9n0QxDDmvR3++!6EL+U1pt;XRGDr zgT*ubNC*1y3-5+mYGPkaW)`uyk}7*r=c1_SGUz0h$C)2H_`-It>hBVvr3;qY1_&+G zjuisJ#9a5Qncu(6dUjc=F!IM-c+yC;FV)`sKL6MPQOTVTfTqB;wXucEgi~5KJr))| z^;rH25@`PwGpArPky2ZjXKp2@ zl>uSJ4uP&VPBKSOy6)}P_|KH?PdU_YqFI_ACK@x%$od-ccz$!~_)^jHPI>cN>qfgR zVYi!5s0OQbWz0&LKQ=o)z(lyk?T4?nU)l9OH*p_vrB0DKuHUpG#k-~pdLA) z!JE84q#}=s;BVtAjzo@LtJCUs~pgS;}Hm^#{)61dnc(G9X&?YbZ+1 zD5+%owH&@lm5Dfiy?_+Ar(AW;hF`Ypq7&~0U(4h4ac{Cw^JVg`wM7(K|KQWd{gQf5vyYn>G}3(Ih@J&0TQNp$ITn0tDUW%lI*C`|E|pY5lL6FBEW`CYwL^spyxS{UswKg78!@(@3qp zrut(@kN#~4w*#A7xKwuudGo{Rad^ON={P78uT;MNt>TjS2!Ua}Q(<93*)*p@+q*yq%W<1Gp~PP*jdQv&s&cIe$aZBsnj?+_{Eaf!yi&!nSYK z<4S6-r1Mg%mA#gZwwFo`TKXqjq8a&l=dRrn^C8yghK<<6W_MtXNKiFvzrgqaXS{8T zch(>-u(bAiQvC{JSE0bhuVX_dYCdmq?TLgy3_Gm?i4TNOMcG7sMMbIvuijOr=QXOO z&K9^5oWhuT?g}6ornhw`pR(OgO;W&O#lDZ`gZjw%8ch7Bcq)zTt<5YTKP zow9mPX0IqkjVy9x_3?}iBCN7^+03Y4(D>^L#brulOENLHi*;>U)Ym1WQ$2&yVgN(t zji&J{fkQG)*XtdV4>BE2|KVH}krS~7Y0}1v5#5k$)~SloSc_TnvrVuO%sYM0<-=$Qoa7Gz2mMnM=%TJWtF_R`Y*yl zI|dJ?<`N`ZW;j1*oYds|BfTg;UG2uj>8pE6@9=_nt82LgEBnANGgA$8h;wxPX6fa< z9hVrlsML4OH(C?-%@6(It$3O{pjnVU=?l{RnkRR}gp4RX>71Ksn#sAH-(LuN&zXCJ z=+qPbi}1fWDF0m}?zfa0NbN2Iyl}fqa;V%=FWT)g9q$L@1uh*&2mfYXr_2Q-HX@QU6?P%`CcD^bJS|Ac0`6@quv-bl$+o zj&ogvU_a=>+R`G!#rL-trnWHJ;(#nta6I4j!@(`%%VOQIj%qX&UWXgCsM6Yk@H%wf zbR=l@f~eeDljZME82udSYW(j#VH8&o$q1^pb`qp6`dA+z1L;?Ums+FRa=vj%ZJR4` ziw(cbM>zj_os6kSG$b)&!0nQHN8)l3ZT4HnB&8up_M?Qa)u)3DYUnc><-HK)2wQ%c zT>Wsy&(`m95^+V$h1P{*wKW$)s>sOY1c)x{^h^1V{*6}p@CUZ#^YG?YF>^&lL~7>l z?MHfv7fL2w-{=G;)(vK^3-NinJ{Z3Fama04Dps(tfLYQ`!Zt7R>h{h{Lv37@K@>%e zi2{FBCFs5zGBSPo`8HGYMbq?jqWp|SVu_gd>menzAhW_&HudN+YM94vsj|kE?rKN$ zhX`}sk&u=;nS2ei+_!q-o!zP0s2T}0=1+%ivzzc6uu?AXS_HBpMg-R1?aO$Ik$7-Vn_06l zM}=LnLXm#?K6}x6r}6@ql{UH%9=gB29+Ubc*W30RS4&?+^urvB!1BhQL^Fss8QC^zpw$Kb&8 zif{Cl`8@s5ZdGMN8@vwmb&Me%)7@tjDdfcX(kuVRmsZinj)doYWJ`lNTA(kh7NRrF zUkK!0lyVxFpu!n1L9z8Zuz|3wO%*I@Vm(!~7NCgA_Hh1_vphQT-7K;il}P;9Qo^qRIiUq;6ZsuT8Pl}lCM z7x@(eSSn4!6BU8cU?f@v{9G;shKg#h3)-E!!i8R_zme`I^UX`C$TCkdcd9PlrLdir z<*80u(WTo8YO?u{oroM}V&8Rd{CdZ%DuQW$A^UAZB`wVyRt@(YMwRm_Qr0NCsF&Q2 zUr55jeQE$15O89cGJg^!x)@!Ho|jTn76NV0V%k~q=n&IweUB+n!>m?L9_FG?6>zpo zy%=jp3)p?Tk80f`W>xjg;$>I6C4vwE?<2>%15W8oaW{;IxlVKl@TB&=_66*_ z&R7au0Is5Me&8AGecmU+aS9=+T*^&tQX2v z(EdG-6w{6Cq9>*cPs;eeyg6r5d`su{S_8F@;=_ry(l$Y4=M83b!@AsVWhhVg5RLsj z8 z8xwW)ztEqzx3K8(vJ~B6A-CLhdVa9iPxB+5Vbv(kP|dP(a7H#O*gO$ZMN^g^VVXrc z(fC>25hO|^Ck=gv2-NdW&?`IV%qmc{c}#;Ao^-b?hy=C5x9Q5RJQeUu0L4Mt7uRdK zUE%j`wp9Vqu+l=doTj!;R%N|SvdEW#?MTEEXprKJ> z@Jd~g!Rw)3%J>ThvCy>@*a5ho1eW|b%s*wY;}+Os<2TPqXZf~hM!zF0X9QkQ2apXH z=u$x>y$X#@JR9xP|K2vyZK-SXU{)=TeeZCm=9Px}b}n?r`Ab){LX)ylN5XH`$2`Fb z-I9XIz@+$QPbsj_$i(xA7mhle;bEPuwq`ES@Y_noScx*vd~YOJ2A5O{;8;h4 zL+uQbj*0IqDszlslnE{ha(#v7F}AiQ-(wV86Zmy&X?BR*M4que^?xH?*M9q7i|{}D zU*zw=IU3Le_HzN_ZGfpn^E@_R({w!=(MPErHKqZAH7Q(Y>HVqZV$tptS@j?*&dHGxqWV`NJ{352p5DE zj|{vgs`uRme(7vv@A$nirv;YGABi3xeR=z&3n{t220h?Jt-i3kcX9Z+bakpm!{~0dTq#pqvqVJ8TUwJyl<`M@HMgg;8?&1)ml;!w{eL&bsujMmrH-K)bJ2SNk5 zL}(yBLf#bV#iY9lCe`3A$eUc%Gn~nCu|AWmeE-Ow;uJpm(CJ0iuFP_G-1OT9)yldz zb9MN|QHeuGu_g%tlzCD{&5^Fpy$ZSSGX|qYdj*mFbt4CA3a-TpteG5+g60uY;ip5I zJ+PWuON^p^bh)9~PcjqPVxJabT&4Re?(&*on@4gLuA4{5-dMEeS-#jI#(pMx-qb%) zC=fw-*1CKbhqOt3DuI<3)6+>@Izzt1R2EJ?2V3Bbcnmei@aje&&E)nhUj8JaE4o8? zdc1KHOJ_caG7y|cEJM4E95_h2^)zIf9QOj(yJLCV+XP#arU|uB+=nUOZP0H!tAs>s z5nQ81q(hd3P2U1i9AK$Xn)ov$ejO4NBVL{v=x~NnD`0?9*mE9i;|0cnep2)z(Ntr`7bD+BY3of~R847%a_Z zFNVJ*w%i{-&iPu{dQHe*)D<;p2Y;?`b5mzn1)uurCmM()0lgBQ9xhA&!eC~ATLM`J@BByq?(Y?Do7Pfai z3=B@vp`Q~`@@i59>kPGZEvbj>cF)jv^QF{nBC8fe4VXcBALN^&%>*YYnH)c5JX=`P zcbt!2(Srk#`XYE!-zqC^_Ao%#4QXW)YoIULg8q8@`Qnm9R6uM9xf)b;SWoFf-MAlj zcjI{Wop~oWUljG+SGoaXCVDw9A9)0ZN8H)>H;LU-0`BCs)}KTqfm0o2MjJOm>QaH+ z=|LZ1jvLX%cj2JZ)t(LIfMa}?@EE}gD8USP>5Hl2pcL^8{`leroq?u)E9zNzYIhbK z28)tiV4lRT#Bi` zo%Bwv<+Kog0ZF}AFlJWSBhAI%Tt3QBX4taCTq#NKrsmdvPjq8_l7`EX9GE5}Igv{Y z_`w!^+(lUMah5V1Q|ykeT8=<0mpmG9Q@tEol&HcbTUV6r7<*ZepxH^hlg)0jfAW@f zT&dIP#LLwM6d&V!1`F8`cD~Ax)jNeBvp!ApI?Rb?luI62lf2~V^i8z^&I*d(Ai8_` zClSI(V^^ydX0uRKSUD1}NoHq1Vs zAmzBA`bJXFk1qMN7nAnzzVx4Dd0E7s6!0{Y!Bz4W*$sdL{G$eac$96RaKjQ$5Xg#L z$N|pP^%am%?V%F-DW27DlwNCu6;=L9A%#S3pVv*{u6A<#Ajg9Pr}xtfv2hM2%AxSB z*dJ)gXD((V+Li7j(MGyTaG_Y_Ez987%%`TvUUD8%EE6mk=6k#F?44XYtK#~qg|^K3 z6^#=klo;QS=C7aHDJ>yHiiGxG~B%Vxv~XNT`VK94744OuqUod=pv zuyMp{4;w|S!ha5%(cDbfKf7u*yYB%fNEw6FQIP~3vXJl$HRhLd3Qzh2hE0Y7UDeDf z|4i;?rN7NdKAYl__8axswns(XmdF`$dR4GFKz%WR^OMMr zB=+rY;PwUzAnxT7DaH|sW`kie7>Ip4=UeNSu)RrpT*f{1_q*)5+OzaXo+myEufg$^ zCNiHft?BAgVWJpr?!0OKRC^cFn`*oZM~D`9rk598%8ABGW65cL`BjX8z>@)^pQc87w@S5kG+C>d6V zD0Q#2KeYYr=Ez9_HRA(WgJ*KVqZk6&nA`0SNY6TAAH=F&>4 z&#=k1ep`uD=7%?$C&JSs9%gy;rAd?g@auULD>Pjyj17nZu*C| zi#yhTM0Y3ag=bem-`T&`o0-&aVkeFv=7V3AB_~3*pk@}cZVX+U5o7QA_^4h z)#{{T&g7I=l{$B5M~p$ProReK!Epzil`-x!Wb|x`SdGDX^r^c zHDj~uv~M2rc7||A^F%5+%Bb~S!lfqFxvr8IhO%F{^fkGe+l?D#p4IYdLLFngWG_D{ z^KoRqGIg?x{%MW(hBT`K@ol*)U!>W49ki5xbEZ=PD8VHdnS#P09;b@iS+=9v&!xlBh({3`y3FR)7b8w_FzCT^@6);X zD$qY3vz~C`i?$}>gFSmBr!j*fp1pj86QNYdC@YJwNWJfok+R-nE~Ra=Y4gcNu-S;r zn-g4?BC;_ej2cpEC)f!h3m@`2W%@>kH;uFGPzk_>H9+htX>^k~=IdU1c!;*gGaMKo z+FqWc3y6m9iv5HFQjC6WZIb>`Z;yk3UmC zT)t(r8Zt4_Xz4DBj-zl?y0vKOz`P-NH)li0)KA5|iePoXVXeo8$}8uwR$veEq1Cy@~7+BH#5RY|(oCz-qUute*N(902 z=#cl&&DMFuk|{=F29+q*&Rd(lHW3JSbH=K5n-69v0HUovC~#RJJ0**%O$4o-=(Lm| z^z!$fUVYx8_ex5AAUF>hq4mFkfZzFZdEzDD7v!?l9;w1sCS2Osh&nmoDM=X--sPOe zP_^^)wEvaltLo}Q`=9>jt52Y*`P~@9g8Wxq-FEpIE^;Zih&Ek3FePyISWn0*0eca^I)a^>Q?d!zwS8o^_fNDNd4c0us$P)4C;)glO}VsL=pK?L_IX zY$;zw{r#stj584euiK5x8+IWpn}{N#aleR~8Wyql+#X)fE%<(XuKGd+f6PxoLEO3e z5kc2#_i%Fe-kU?M`7aMCBKAZt?@d&zG(L0ey77E*)t04F8(#G>8SC2vcZj6hX*`Xj z{&>2bmEyF|lx&?J5!XYRzW8uEgIl~-HIOg!=hm?M?9 zXz6dnAK33Zit*N4rq{P1ZY(V)iD90eE~0al;$&(v)}T_J@lo?dqWRL~O5Y;HY<^tv zY~H8szBj5lP%W4Of)lkjc$nY5)|C{qU4`TjP?+l;o=oFEBAwlwGj$E7`764%WdyPX zZzX3w_`(_U<%FJZ;Y%~xa`tuiBk)~y!eg12M#4ZHJyt%1NdWR%4QjE+Ffi$See44e zFwp|q=r-W=qwQVNyF~90oGVfDC}BLqJ~_t0NTQf-=16_vZ6%{6`(6srnVU5L@iDq~ zy9n0n)dSDN#7s?(-5g-7L@1Rf3hz54&gs@)D2!Xt{2ERNtN7vaP*|4LxR>5(cu!}~ z{^7*1uay6c?eiGT%vVjxBumWNk1x^@1|~s&S3&; z`qk}tNx~6q+}uup%gksM6}7*iVA#(x1j%|Ojh*hU)%Px-%z4y3;)I?(;+i4MQTfp-IeZN86mLmV~=;~z?f zc!?pDt*-7~)z&XPvskH>qX-$A$bc3yg8-Gw#ZNE+QIzR5!4;vG6;K{2ipxl>ya><9 z!6C}EqWzW~GOsi7%HxauexnyPXLPNox{a(N=3i^u2AR<{4C?qAQch*TrWJ0c01L_8 z3)LM`0-#^YN~`w@UNx#+yH5uUb2a!i5uy#B7hmP-*Kyv0UMEwuZ z(EkYn1P%$3h~4Ya?`(gh)fZBm7^`MQ@nAY7@^cXCst`qalG31Kh5omSA_wM^pQg&g z8H1qO#WQt#hk6@<;|vzleiZl>wx-S)YARuZ>A|AfrX#L(tJx5^eedvx1)m)2Er2JO zsjL`hmZ@QRCJ^V^s&WBwXjkof3HIdxq6`9jFaUqI!GT{>qb|UGz94iR9Xpvo66w}@Ch^LNgJO0tfg{y;;-@!G>g(36a6i-fS36x38h#drN;hO}3T`x0G?F8)8W~$2(A@=HLymNINMCWp$i2sWcDy^b zK47p~aHb-5T;W2ia~HO!RCZM>=ksc_i165vF{N~~npGAl(2s)Cq#~1bSXH=Tl$Tn$ zIzm>?A=+bfF39ED($OsX_RgjF1czu#q~5C5^D1G=0B;X9Dn2O=$<3>doA1#Qq3_K|HX8U`eb14=(BC_+dP&%5v5>FjDMTw%qq z(=iBLrk^D!7HjARz6L+|y`uhI?WBg{Z-EX*=~PIpuJ20HvT7(Be;=` z2?gdnLAndWP&qw6!Ue4B-~r$qQXD@oE!@acvggiP>eHlk8p-kX?Pj}m0qx8EtrtXX za9oX@vn)O+qUQ+`B(|ct-b`^308)|0;k`xD7Y7_$EO#PYA@6h9mknRK#-#7zN z1=)5{#LBp6%@UqhQSx!(%A@M4lubikm=||56LCOYGQ*5Lq4+YRtrUZIx@Wwj*tku$ zp^$=AIcB4tgXtZrnZ-dbIRxKuK^#)j`{RR7)*5oL7vc$*9LO%I`}o1-K$}W6$s?Qd zOjm%GdiTQ7#VKuEvYCYJ`Ha?lzqr7IZS6HQus4i>v4GQmscMv3K=?@n+=6JZV9gSR z7H}z4kTwpUudU=<&LE($ebV=H9Fw0nJZI68!i+v*#bJ|ZGZ)-lB({e4n!fdlZsthwGpq9Z?GPRs z*5rc8>!TwjX_qRIDWFjcUir-!trj^I5NGm>`La6_qK&D5Lzgp-nho>nPX=r9KzFXJ46~C^kFn z$el=-u9+tg4;uDbk)dxaNiy(hZ-!(PQ0Y%YP0s(x!snZ z!&1Tj`9I%<^D;!Rau8J^LX5KVQIjiC8S#CXtr4q2=VYLGoLM)SdnIUY_L>EgY965*M6 zCOG|eV6&35*O(e=fHT2E25W03RFl7{s4K$)7#{n`ct+;PmVixdz97kqfz#&3OWsk){lX?&0L zaLF36OA1sG+bAb@(`VQUT~+{8(6hRospS$!_p4DnBhKY}@@oT;`t|jA7`mSd7iPSE zY?Oe-uv>%09Jmqyu+!{!m`1S=XwFul1Zl|rr?=dr@rcX~*Z>n@8Fm18`vOLXDk0b< z1g;#oXUtUC`M2Egcvu!s?+8;)n(zj4w|NUVAqHgtHwr>6f-e}Tz47jZ4tziqN&zPW zEEX5~ciWLQA0H73j4N}Kw#K2C(rN%G^)RmP3j39$P5+-KY5$h8wd?SbQ5n;TS5d25 zNKnQzO3&^TbA0?YZ}M`u;NTnN5NU*>?8tF6i*Z$b42 z3u&A-uX^itAI5Km9S-r;8d+qV(YJo=NAtakq4Ez8gBGK<-0k%^52qx5m=SiM-uT60Oj?wCTh^N< z#}!(oI=znh-HxK! zb2G$c{`y~-o|K!1DEA z4L}LJFkS`1X}@6)l{NO8haM<@hoBkkfRa!f#P3kyPW~i%eE#92-o&w|e|bw^UthU+mM{<9V#dD#phZq4&_j9Fgu_t630U^&Gd^ zxR-+5WCki`%y>C;@&Xx517z0t01ZQg8a$~|syE^Hwu;{W*&ZAI4Z)-SLq6BvrhlTr zH8J5A=kG-}xQ0HS9mVwHv%mH*4|J9c_6f502_8I=&W>A(3rT;YNBRb+^*O($-&5Z_ z|No}G?Ow{x$pLyd{$t8=hATx%{&|X=gjY9tOkP}8tUSzGr-@A7yL8_eZqQ#5E<_+1 z%Lr5-)I(o4=Q#_Jx4O}L5@*oLqNJXWsq zGn6bIq8cwkt|5z;9q*4GP264Xd^HjSy^E=p+a-?ncJt2D(Uq{Yy*sd%RU6k}=0kH+u$!!L)lD$zg_zZ&u>j zYo%yOLfyh?lur0+?n52P9&ujP7S6-C=VIbpjfPlFxN`0pcBrZ%t6k5+w?w`)QX$5b z(KSM3J<mei5W$ROH=3+yg)d&YYj0?=+WV=G-3#FX?5@u=_T6m9zY9XpoC0Y$5et6fJ={o-{3RN30VV*@wqAb}vX^ zD$TaicOU+x7-mp4$Snkh6sH-IUazQ)-vI^yGlGz3lB;hyEMD(>6vWlRNdP$7tR#W6 zS=A`}57U%r@D!{e3>)y>sDtRygI-{T92QVWc_ku`=4S~qP`p~RN@Zleufx#+aN}pP zU_L*Iwt%jfFVtLQ*p1!rcy@zyovbBvzoz=#bn@uHR{K?+=I*eW;rFmsEv~lLE@nnggIjPJUx?c)rN;T>0=2l=MM=2bzL@Yt06=6$-e$oS=E8LIvN*rRuzJ!wV}YuDE|056dujdAadKIqeC61C4a%+ zq?53Xa-rI{02Bh(W$b^0LhuQ?`hi z3k7BBXOdxUD5qvM=)H7O9z)d!qF=v5m(oScNQY?9c-FN`L%3bW7Tez$GQUF)mGv^c z6dtonImteQ`F{48B$**Wj^byvjIR6oG7F!@ujWH&i2Nu7*5iAa{coRj&zkYnSNb?| z`GaNMYZW1I&i3s$>2ESFwdLpInCA~`d<%=m)xEUi%2RmfEX(&B70k=X+V8Ye2kRo{ zwUO++n_J92N-3R(nV(#r2h)Qo*-x=Ds<>9=3X|OKFKsNqI|1ExHf$(t+hh+q9)pume7?Hk= z`zLq;rV`J)wfQW-)*IALHd^Bww;G|+idN#b7qYCo@XZsF(_^eU8OTcp1onEo>C*kY zoWT{D8rv}*2l|PD{rM{bCDPYizUBvM8pm))BhM~GagZ{A!0`Xj4Zzh6{Q{~TB!a4F z_o!xfn+P|Z(x_hEQgA$I0B(R4Y_YHTT%DSK#ZMw{AfO8@Ftj_sP2K)8?SC&#)Igf10h7fzi4chm_NfBlgUgP-9r{;d zK{-&RUIJe)SmXBb|^H^cuUy!F|P)(q# zP5ep3u+Fg00dRl;L-2WPgxLCAXU*&a-jtBVHH%d!Jtkc2wATBGxZlUY3SmQ8;0VY) zH{MsLzYF-{yeqKC{YdOvBy5$p6I97-rQhFPn#uv-{HZRVT+uWaspmh56w8q~h2MrR z&8QFIFi20YUTq<&mG!4nz8cmKubd8h&yHj-_@L+G8N)~Xnm-Az-HX_F9QNCwBIG~a zes#CApP!?HBbA` za@M(%FC5C(qsToPzYU!(j7E&d3wcapK3qvMF0$47D3#yISvS}<&&74ODskR);BIT= zbJOh>1TF6FOIs^NDyfeO*&}WNauqdw>G?EG*5_x}e(e7wiW&5+LEwNP9(Uq?Th@y9 zh+cO~UV(UQ{#rIcOqK=fRy!#jr6;0h7B+=sieYCny4b#kHb|nBTr{~9@xDFRVC@6# z>LaQHGpgu^??o@X(F!-R#K~u|$Ji%W7Npy7z zB@GZx6g%MC1OuqOE-#UCR_XQLo9z|xnMjM}J0m@0G z*XyIRbVmZlJ3GQh-(c|YGzzTHEFJ^JvnT^Naz63l#A=`K^FvpJHSo7oQxk-G}W9Uj?Hm5I+7^c(0_j$`Y`!vO3E4^KbN+7}VCrK2GZP|Y+Mbv?Bv z$MX89xN$r$etx;d(WVc&5SI<>5<}sV406jz&jJ|Ntx66zy!`e1ddu6rMGv4T=CIpb z2DR+RBJYl;btK>rgcz{SM09+|!`|#htbCsVeW>uk@Fz^YBTB94Ml3-hp*P_SRuLjL%?9YscCu%(5}$zTsfQO6sG zhWyp@l&_Ztn}C&k_#nmo;FP7_}KaRe$}2x_|FaS{(U8oX!d_-mp|yKV&igg zj{+VX97Ix0(_k$euti)#btJncuU(SPDEG5>U%gQ(NqLVccbaMCw{C_n&F8;Jd>g*{ z=DZkuSvbBpCw?j^N&g+CWeiDy^^+(Pj~LIh)YoXRYMG(9&X7`Cu4)MP*Sadv_ch^c z!9h%UOabbW-<`EPXX9ouP@fG##TH(QR}&sBM(6?Lmj(a0E5^nawtsT=zM+oD{yQ~B^TWbOxd@4XO)8>a> zMa+zD$y{42x7ua$W=^{u`M_tzQuHSMKkg!@&@rZkWCm6O<4wv*+*c=ni6a}lCD%9tn9tn!DjV z7ZM^9>!y4;Sc`;$J%O)_-Q@obQJdX+3E(aTB!&{YTzE{D#o$@3{PJA!Q%7E=1g^hW zm9As&>V0+a%A1yxgACnN7#*N%{`A7_elU4`M7{wiI4(5vj^KgnIFA3{ge}Fa6Qm+B z1=rGyaD+I2yxIzW1&$wq&PK!H0PvPciYqmQwShR5pb0!oS8fdktXJsSi1$AHmwABf z*(A6B2E?09{HL^)-$VER26_Fr5ZFJLJX@dcB{5g^UBiGJ+cVXbA7C0v2UXV0h=NY4 zY@YtdWIisDd;a33bCOhbxZGW_@5203B+{On=E*t=zTS7wd{^sc!LH|w=+1L)tny>+ zVw~{)%|7#|%U z!HbsnyPjd}NteGwq-&wbih>&%)b`iau?|IwxobsN+^|p|n(9T7?mso+Lt?AV>~cXv zV>lo%zk{#ci%3GsY-9P0BHqIiM>allI36}RnSjPy2MLT*{iD{QM*p?ptKshpDT`qe%x9mjR?!Tp zIKFxq&O&QOeXZ!xBbA^uvgevAL<~3iv|s;$!7X2Wp9-54Ozfh`AF#xBS`B?C-9p zf0u8nN%c}C7S^gZO1KRSQ}WPr8b)XSWQTHwe#(^rLG(iCE-3_;917l#>sOhg!tej3 zGDW|Ijd!+Ec#G_zD{PL%yxFom3$>Cg1GhC)_gQI6#>{o!e5#xiytxP4349A2$X#=A znS)!~VC2wclNUzkJxze15qKjz)G8BnJ+KMxY;^aa7WWingVl}01|Gpi&j#|&*Ew&w zA2xNs_C0~snF&1QVsX0K5MX@HE|78nzQuAUA%>Yy4W{I3r9Xg$iROT8tt1FmHWE7r ztWNC+u}xsDdnyx3{rVi8^*O%%gm_vH->Xk z>hR{-6Y_9BL-Z#_8P#|p(rcqzsZAJpP`CLJi1K{lFm(_N%Yp}{ez`|s%tb^nWO3xX*$fQLN3jHQP*fjS&8h) z@85(nfzHTBkWO1#?`frxi8+gEo{NLh5htReHBBxbE)w@&E$f3e6M&OdFdc|zX$DHt z>{jWAtsU4~)Y`#Q@SF3&x^?>XJ=~V_vgClZ#tC1~ZNBjaTr0|Q%zMq;4?$#ND&xrb zvccK3K<%=hL_u}nAN9u!d$HCaG-58`oiIU3dfU^=*y!rA#{=!0DoSi~_Ffn)Iv~=8=PH2-v_V(A4ICRq1g`&8 zq>IXrnJ4JJ+Ise`?H5Mk>|kcXsto#R##HDd*gs7CRt))0w4B#bZdddswMrhCc%fgy zxMc5mxTi91(Jv><$SRR@Y;9*v39beYXAMvyYL*{hRpZ);}U6igNEWACGC+y z&G;Fj4hN>wWHdtzpiE;|aed*;jJ$nc19(8y+x!!kw2I<5;%;zS&j zB>as=|FD1@T>sntO^d*!E_yvYqfJxSb{tu^7I>-Qz15=|+x?qT>Ci7mx*&-ln*l2a zwlwj!>ZUxs@oi7rz3>ux%fO(JC;DK)Jby7`f155sDR;PRn9_d(ey!B*%c=O-3-bg*eU}6f` zG#b{sdecRFmwq^CMmMQ7Hy&o35IQc)lZ`E4Yy2BP`v2rHqkfNUFCKR`O14466LH?Wy;F> zL+Y(jFHs9p&GyO!|J@GbeLtY&U%Vz*H`~wdv8NuNd*GGfPBZK(ae-WcG*L7hZ;bp& z^!4U3pHN>dmf*DBX&xNerJY~@GJq25H&z57i-)dDTiAD7(8Wj4QHm;9Uoys&iVML=Lft?qyW!APhs%0*zB4B2Wu)8|uA{XlLKcl00gfIJ*hpZE{&Yep*0 zTb??Ix%rYJGDt15m2jy#+|8;Dp6H~o5jV0DlsA~!WZMz$x9=|6LWUm+d7DLWuyPU z@f`jl+TL7$P^P~{_*m>OuEPiSKj;GGrCde&yxEXt)-z zsi<1!BWuBGC~+!)E4uJF3}gmWMf;ye>=WI6YoePbXC2U zn)xdi90Q=#WdBM2Z|qn7efNRG&)eSr5(WlG{nh(Hzaeo%iHcx?X5dsYuTuSA;pS6u zfuC*rXXKP>|9rQGdrQEX#4qPpO1o7S_C_zRc(m>7nE<4oA_=)S{y*YaP+ZHs$TJz^ Nm|qfH1v(S>CIGHIWx4kDtDN{rbs=4tPre7t{XWr3Ku7!T9uPoG(6Wx=1{e||98*w~2D$^s1y4I!o%FJFA2l?6Y4{`}4K z_RZUCw6fsY^Jfp4o1U)pHPZx5P10TVLLT^0W#y(ty@J{>*T$A_Uxe4 z^@k1~Jc4W{6SD1h?%qkidGqFTa$OJ7d;P}sXuPe8HLF*9J$v@-6R9o-=>h2_*s6e8 z0t`o@t2mHaY=(m{Bd&(mtXVVVg#?9GF|#lmGcz$WgT$DaAtCzj?>{j87s&Yg=kJ+! z@85-`rKLZ_W)2gs@C0c9x=fmpk&&5+iHQM(89;6UVi=!^k%2?;lQikQ_)2-sTHFNni?lDIqDTA|fJ!RsPMJHw?FL-+qbD w3`TtY1F!-{Mg<_HfJ6ELQ2zsb`T+tA0DhzedChGgivR!s07*qoM6N<$f+B=no&W#< literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/img/lamp_on.png b/fhem/contrib/YAF/YAF/www/img/lamp_on.png new file mode 100755 index 0000000000000000000000000000000000000000..a68b5d4aa5b07de36ca1e7469763c49b62820726 GIT binary patch literal 831 zcmV-F1Hk-=P)T5TyYYsNl{I(TjKwPmS^zYBgT9`$M|$iR zb_No_s?CB7Tee@{y=d_oH=Gs(2YDY!O)#-0sSV-Ob`vJ1t6sK`KDc{!nIN(@J~#M)BD4it}Y3;zB4w;(H?nVo@3 z02+TSAU5;I50CUrjTMS5O}?=(P!TY*N((JqwCXeyD+_Z)um=-61C@cD*;j@aFF%yC zynFxIKtz=4<}+|{|6ov278hrdkrw7-pb_}~{WlL2FE9HaT3H|_%FV;{`SVW}T3PVt z&;K7xwicqIw6Z`$l}m`}`K#YwXl23ApA5g5-oE>JjaC*sd->xb)AJXfvOt9twZWU$ zd<^&QzpDe6rkmH*zx8!}OI2I;9~JrO=+VFdE{mQ#`_cIAD+g75aPQI2=_vKV!Cj4a z?JZv`QN!?)XGK4oJJj=`)CUir{A#C$FFq45j?i;*4F~DHe&>5MvKWd5=~*2QFW&f{^6DkuXHpFZ=>h2lnL)7G zvSxX$mytH(N+rd2JVd3K`$AvNUHu;(64|_ssCE$u%$!ysFC-|iiiJ(Wn2DL48C**- zF@oj({)6cG_xJa|Kfj)xdH4Q97`n@`1`&F2-M;r%nvt2GnVFe~0fZSCxxpC5XJY1K z0;$1eI9>~=1qRjvVA!xRGB7d_QbV={OiWB4fo&$7@*p{o8hmEptuBEn?4^XHq>6}$ z2=*fR%^QZ>w{O41X9gp_{sCA4BclS4Qoteo0I2@~KK%dz1^|H#E2AK6(Gmav002ov JPDHLkV1j0@cJcrK literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/img/loading.gif b/fhem/contrib/YAF/YAF/www/img/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..574b1d4a161707c6c7f0ba9d2bc531bead4a3028 GIT binary patch literal 2608 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 W@1re^J^Tm-urjy%?e!IJ+`j?w!Ak%D literal 0 HcmV?d00001 diff --git a/fhem/contrib/YAF/YAF/www/js/combobox.js b/fhem/contrib/YAF/YAF/www/js/combobox.js new file mode 100644 index 000000000..da5fad27a --- /dev/null +++ b/fhem/contrib/YAF/YAF/www/js/combobox.js @@ -0,0 +1,128 @@ + (function( $ ) { + $.widget( "ui.combobox", { + _create: function() { + var input, + that = this, + wasOpen = false, + select = this.element.hide(), + selected = select.children( ":selected" ), + value = selected.val() ? selected.text() : "", + wrapper = this.wrapper = $( "" ) + .addClass( "ui-combobox" ) + .insertAfter( select ); + + function removeIfInvalid( element ) { + var value = $( element ).val(), + matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( value ) + "$", "i" ), + valid = false; + select.children( "option" ).each(function() { + if ( $( this ).text().match( matcher ) ) { + this.selected = valid = true; + return false; + } + }); + + if ( !valid ) { + // remove invalid value, as it didn't match anything + $( element ) + .val( "" ) + .attr( "title", value + " didn't match any item" ) + .tooltip( "open" ); + select.val( "" ); + setTimeout(function() { + input.tooltip( "close" ).attr( "title", "" ); + }, 2500 ); + input.data( "ui-autocomplete" ).term = ""; + } + } + + input = $( "" ) + .appendTo( wrapper ) + .val( value ) + .attr( "title", "" ) + .addClass( "ui-state-default ui-combobox-input" ) + .autocomplete({ + delay: 0, + minLength: 0, + source: function( request, response ) { + var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" ); + response( select.children( "option" ).map(function() { + var text = $( this ).text(); + if ( this.value && ( !request.term || matcher.test(text) ) ) + return { + label: text.replace( + new RegExp( + "(?![^&;]+;)(?!<[^<>]*)(" + + $.ui.autocomplete.escapeRegex(request.term) + + ")(?![^<>]*>)(?![^&;]+;)", "gi" + ), "$1" ), + value: text, + option: this + }; + }) ); + }, + select: function( event, ui ) { + ui.item.option.selected = true; + that._trigger( "selected", event, { + item: ui.item.option + }); + }, + change: function( event, ui ) { + if ( !ui.item ) { + removeIfInvalid( this ); + } + } + }) + .addClass( "ui-widget ui-widget-content ui-corner-left" ); + + input.data( "ui-autocomplete" )._renderItem = function( ul, item ) { + return $( "

  • " ) + .append( "" + item.label + "" ) + .appendTo( ul ); + }; + + $( "" ) + .attr( "tabIndex", -1 ) + .tooltip() + .appendTo( wrapper ) + .button({ + icons: { + primary: "ui-icon-triangle-1-s" + }, + text: false + }) + .removeClass( "ui-corner-all" ) + .addClass( "ui-corner-right ui-combobox-toggle" ) + .mousedown(function() { + wasOpen = input.autocomplete( "widget" ).is( ":visible" ); + }) + .click(function() { + input.focus(); + + // close if already visible + if ( wasOpen ) { + return; + } + + // pass empty string as value to search for, displaying all results + input.autocomplete( "search", "" ); + }); + + input.tooltip({ + tooltipClass: "ui-state-highlight" + }); + }, + + _destroy: function() { + this.wrapper.remove(); + this.element.show(); + } + }); + })( jQuery ); + + $(function() { + $( "#combobox" ).combobox(); + $( "#toggle" ).click(function() { + $( "#combobox" ).toggle(); + }); + }); \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/www/js/jquery-1.8.2.js b/fhem/contrib/YAF/YAF/www/js/jquery-1.8.2.js new file mode 100755 index 000000000..12c7797fd --- /dev/null +++ b/fhem/contrib/YAF/YAF/www/js/jquery-1.8.2.js @@ -0,0 +1,9440 @@ +/*! + * jQuery JavaScript Library v1.8.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: Thu Sep 20 2012 21:13:05 GMT-0400 (Eastern Daylight Time) + */ +(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, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // 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, + + // 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 ); + }, + + // Used for matching numbers + core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, + + // Used for detecting and trimming whitespace + core_rnotwhite = /\S/, + core_rspace = /\s+/, + + // 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, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // 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, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // 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(); + } + }, + + // [[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; + } + + 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: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.8.2", + + // 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 ); + }, + + // 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 a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + + // 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; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + 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 ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].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, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +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, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // 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"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ core_toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // 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 + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // 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 ); + }, + + 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 ); + } + return xml; + }, + + 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 ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var name, + i = 0, + length = obj.length, + isObj = length === undefined || jQuery.isFunction( obj ); + + if ( args ) { + if ( isObj ) { + for ( name in obj ) { + if ( callback.apply( obj[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( obj[ i++ ], args ) === false ) { + break; + } + } + } + + // 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 ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var type, + 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 ); + } else { + jQuery.merge( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // 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 ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, + ret = [], + 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 ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + 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; + + // Sets many values + if ( key && typeof key === "object" ) { + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], 1, emptyGet, value ); + } + chainable = 1; + + // Sets one value + } else if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = pass === undefined && jQuery.isFunction( value ); + + 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 ); + }; + + // Otherwise they run against the entire set + } else { + fn.call( elems, value ); + fn = null; + } + } + + if ( fn ) { + for (; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + } + + chainable = 1; + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // 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 ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// 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 ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // 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, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" && ( !options.unique || !self.has( arg ) ) ) { + list.push( arg ); + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + return jQuery.inArray( fn, list ) > -1; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // 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 ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = 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 ] + ); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] = list.fire + deferred[ tuple[0] ] = list.fire; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + fragment, + eventName, + i, + isSupported, + clickFn, + div = document.createElement("div"); + + // Preliminary tests + div.setAttribute( "className", "t" ); + div.innerHTML = "
    a"; + + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Can't get basic test support + if ( !all || !all.length ) { + return {}; + } + + // First batch of supports tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // 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 ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // 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, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // 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>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: ( document.compatMode === "CSS1Compat" ), + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // 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; + + // 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; + } + + 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 ); + } + + // 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"; + + input.setAttribute( "checked", "checked" ); + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + // 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" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // 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; + } + + 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 = "
    t
    "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // 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 ); + + // 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"; + + // 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 ); + } + + 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 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = "block"; + div.style.overflow = "visible"; + div.innerHTML = "
    "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + container.style.zoom = 1; + } + + // Null elements to avoid leaks in IE + body.removeChild( container ); + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + fragment.removeChild( div ); + all = a = select = opt = input = fragment = div = null; + + return support; +})(); +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + deletedIds: [], + + // Remove at next major release (1.9/2.0) + uuid: 0, + + // 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, "" ), + + // 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 ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // 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, + + // 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, + + // 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; + + // 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; + } + + 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; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // 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 ); + } + } + + thisCache = cache[ id ]; + + // 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 = {}; + } + + thisCache = thisCache.data; + } + + 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 ( getByName ) { + + // 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; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + isNode = elem.nodeType, + + // 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 ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + 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 { + name = name.split(" "); + } + } + } + + for ( i = 0, l = name.length; i < l; 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; + } + } + } + + // 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; + } + } + + // 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 ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( 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; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, part, attr, name, l, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + 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; + + if ( !name.indexOf( "data-" ) ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split( ".", 2 ); + parts[1] = parts[1] ? "." + parts[1] : ""; + part = parts[1] + "!"; + + return jQuery.access( this, function( value ) { + + 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; + 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 ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +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; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + 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.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + 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", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + 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; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + 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 ); + }); + } + + 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__" ) || ""; + } + }); + }, + + 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; + } + } + + 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; + } + + 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; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.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 ) { + // 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, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (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 ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + 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; + } + } + }, + + // 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; + } + + } 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 ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + isBool = rboolean.test( name ); + + // 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; + } + } + }, + + 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" + }, + + 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 ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return 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/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// 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() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + 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 + "" ); + } + }; + + // 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; + } + } + }); + }); + + // 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 ); + } + }; +} + + +// 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 + "" ); + } + }; +} + +// 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; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// 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; + } + }; + }); +} +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. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, handlers, special; + + // 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 )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = 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) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // 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++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + 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, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // 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]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + 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; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ 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 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // 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 ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, "events", true ); + } + }, + + // 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 ) { + // Don't do events on text and comment nodes + if ( elem && (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 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + 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 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; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( 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; + } + + // 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 ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + 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 + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // 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 ) ) { + + // 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 ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.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 = []; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers that should run if there are delegated events + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !(event.button && event.type === "click") ) { + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + + // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + selMatch = {}; + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: 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; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // 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 ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( 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; + }, + + // 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(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return 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: { + delegateType: "focusin" + }, + blur: { + 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; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// 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 ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #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" ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // 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; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + 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; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // 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) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // 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) + 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 +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // 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" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "_submit_attached", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) { + 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 ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.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 ) { + 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 ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { // && selector != null + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + 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; + } + + 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; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); +/*! + * 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, + + baseHasDuplicate = true, + strundefined = "undefined", + + expando = ( "sizcache" + Math.random() ).replace( ".", "" ), + + 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; + }, + + // Augment a function for special use by Sizzle + markFunction = function( fn, value ) { + fn[ expando ] = value == null || value; + return fn; + }, + + createCache = function() { + var cache = {}, + keys = []; + + return markFunction(function( key, value ) { + // Only keep the most recent entries + if ( keys.push( key ) > Expr.cacheLength ) { + delete cache[ keys.shift() ]; + } + + 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 = ""; + 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 = ""; + 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 = ""; + 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 = "
    "; + 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; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed, xml ); +} + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +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; + }; +} + +// 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; + }; +} + +// 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 + } else { + + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } + 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 ); + + if ( !xml ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( xml || assertAttributes ) { + return elem.getAttribute( name ); + } + 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 ]; + if ( !pattern ) { + pattern = classCache( className, new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)") ); + } + return 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; + } + } + + return true; + } + }; + }, + + "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: { + "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); + }, + + "active": function( elem ) { + return elem === elem.ownerDocument.activeElement; + }, + + // Positional types + "first": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = 0; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length, argument ) { + 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; + } + + return 1; +} + +sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + 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; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // 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; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + 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] ); + } + } + + // 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, + i = 1; + + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + + 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 ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + soFar = soFar.slice( match[0].length ); + } + groups.push( tokens = [] ); + } + + 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, " " ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + // The last two arguments here are (context, xml) for backCompat + (match = preFilters[ type ]( match, document, true ))) ) { + + tokens.push( matched = new Token( match.shift() ) ); + soFar = soFar.slice( matched.length ); + matched.type = type; + matched.matches = match; + } + } + + 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 ); + } + } + } : + + // 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; + } + } + } + } 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 ); + } + } + } + } + + 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 ) { + // Positional selectors apply to seed elements, so it is invalid to follow them with relative ones + if ( seed && postFinder ) { + return; + } + + var i, elem, postFilterIn, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [], seed ), + + // 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 ) { + postFilterIn = condense( matcherOut, postMap ); + postFilter( postFilterIn, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = postFilterIn.length; + while ( i-- ) { + if ( (elem = postFilterIn[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + // Keep seed and results synchronized + if ( seed ) { + // Ignore postFinder because it can't coexist with seed + i = preFilter && matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + seed[ preMap[i] ] = !(results[ preMap[i] ] = elem); + } + } + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // 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 ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + // The concatenated values are (context, xml) for backCompat + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // 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 ); + } + } + + return elementMatcher( matchers ); +} + +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); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = superMatcher.el; + } + + // 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; + } + } + 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--; + } + + // 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 ) { + for ( j = 0; (matcher = setMatchers[j]); 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; + }; + + 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, seed ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results, seed ); + } + 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; + } + } + } + } + } + + // 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), + // A support test would require too much code (would include document ready) + rbuggyQSA = [":focus"], + + // matchesSelector(:focus) reports false when true (Chrome 21), + // 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", ":focus" ], + matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector; + + // 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 = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // 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"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE9 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = "

    "; + if ( div.querySelectorAll("[test^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // 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 = ""; + 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 || !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"); + } + } + } + } + + 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 || !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; + + +})( 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 + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, l, length, n, r, ret, + self = this; + + 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; + } + } + }); + } + + ret = this.pushStack( "", "find", selector ); + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + 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; + } + } + } + } + } + + 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); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + 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 ); + }, + + 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; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + 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 = /]", "i"), + rcheckableType = /^(?:checkbox|radio)$/, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*\s*$/g, + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
    ", "
    " ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + col: [ 2, "", "
    " ], + area: [ 1, "", "" ], + _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
    ", "
    " ]; +} + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.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 ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + 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 ) { + 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 ) { + var elem, + 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 ] ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // 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() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName( "*" ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, 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(); + } + + return this.each(function() { + var next = this.nextSibling, + parent = this.parentNode; + + jQuery( this ).remove(); + + if ( next ) { + jQuery(next).before( value ); + } else { + jQuery(parent).append( value ); + } + }); + } + + return this.length ? + this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : + this; + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = [].concat.apply( [], args ); + + var results, first, fragment, iNoClone, + i = 0, + value = args[0], + scripts = [], + l = this.length; + + // 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 ( this[0] ) { + results = jQuery.buildFragment( args, this, scripts ); + fragment = results.fragment; + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + + // 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 ) + ); + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + + 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"); + } + } else { + jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + }); + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + 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 ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function cloneFixAttributes( src, dest ) { + var nodeName; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + // clearAttributes removes the attributes, which we don't want, + // but also removes the attachEvent events, which we *do* want + if ( dest.clearAttributes ) { + dest.clearAttributes(); + } + + // mergeAttributes, in contrast, only merges back on the + // original attributes, not the events + if ( dest.mergeAttributes ) { + dest.mergeAttributes( src ); + } + + nodeName = dest.nodeName.toLowerCase(); + + 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; + } + + // 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; + } + + } 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 + + dest.defaultChecked = dest.checked = src.checked; + + // 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; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.selected = src.defaultSelected; + + // 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; + + // IE blanks contents when cloning scripts + } else if ( nodeName === "script" && dest.text !== src.text ) { + dest.text = src.text; + } + + // Event data gets referenced instead of copied if the expando + // gets copied too + dest.removeAttribute( jQuery.expando ); +} + +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; + + // 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 or 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 )) ) { + + // Mark cacheable and look for a hit + cacheable = true; + fragment = jQuery.fragments[ first ]; + cachehit = fragment !== undefined; + } + + if ( !fragment ) { + fragment = context.createDocumentFragment(); + jQuery.clean( args, context, fragment, scripts ); + + // Update the cache, but only store false + // unless this is a second parsing of the same content + if ( cacheable ) { + jQuery.fragments[ first ] = cachehit && fragment; + } + } + + return { fragment: fragment, cacheable: cacheable }; +}; + +jQuery.fragments = {}; + +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; + + 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 ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +}); + +function getAll( elem ) { + if ( typeof elem.getElementsByTagName !== "undefined" ) { + return elem.getElementsByTagName( "*" ); + + } else if ( typeof elem.querySelectorAll !== "undefined" ) { + return elem.querySelectorAll( "*" ); + + } 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; + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + 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. + + cloneFixAttributes( elem, clone ); + + // Using Sizzle here is crazy slow, so we use getElementsByTagName instead + srcElements = getAll( elem ); + destElements = getAll( clone ); + + // 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] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + cloneCopyEvent( elem, clone ); + + if ( deepDataAndEvents ) { + srcElements = getAll( elem ); + destElements = getAll( clone ); + + for ( i = 0; srcElements[i]; ++i ) { + cloneCopyEvent( srcElements[i], destElements[i] ); + } + } + } + + srcElements = destElements = null; + + // Return the cloned set + return clone; + }, + + clean: function( elems, context, fragment, scripts ) { + var i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags, + safe = context === document && safeFragment, + ret = []; + + // Ensure that context is a document + if ( !context || typeof context.createDocumentFragment === "undefined" ) { + context = document; + } + + // Use the already-created safe fragment if context permits + for ( i = 0; (elem = elems[i]) != null; i++ ) { + if ( typeof elem === "number" ) { + elem += ""; + } + + if ( !elem ) { + continue; + } + + // 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 ); + + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(rxhtmlTag, "<$1>"); + + // 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 from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + hasBody = rtbody.test(elem); + tbody = tag === "table" && !hasBody ? + div.firstChild && div.firstChild.childNodes : + + // String was a bare or + wrap[1] === "
    " && !hasBody ? + div.childNodes : + []; + + for ( j = tbody.length - 1; j >= 0 ; --j ) { + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + } + } + } + + // 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 ); + } + + elem = div.childNodes; + + // Take out of fragment container (we need a fresh div each time) + div.parentNode.removeChild( div ); + } + } + + if ( elem.nodeType ) { + ret.push( elem ); + } else { + jQuery.merge( ret, elem ); + } + } + + // Fix #11356: Clear elements from safeFragment + if ( div ) { + elem = div = safe = null; + } + + // 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 ); + } + } + } + + // 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 ); + } + }; + + 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 ); + + // 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; + } + } + } + } + + return ret; + }, + + 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; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // 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 ]; + + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + jQuery.deletedIds.push( id ); + } + } + } + } + } +}); +// Limit scope pollution from any deprecated API +(function() { + +var matched, browser; + +// 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(); + + 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 ) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; +}; + +matched = jQuery.uaMatch( navigator.userAgent ); +browser = {}; + +if ( matched.browser ) { + browser[ matched.browser ] = true; + browser.version = matched.version; +} + +// Chrome is Webkit, but Webkit is also Safari. +if ( browser.chrome ) { + browser.webkit = true; +} else if ( browser.webkit ) { + browser.safari = true; +} + +jQuery.browser = browser; + +jQuery.sub = function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + 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; +}; + +})(); +var curCSS, iframe, iframeDoc, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity=([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // 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 = {}, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], + + eventsToggle = jQuery.fn.toggle; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return 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, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + values[ index ] = jQuery._data( elem, "olddisplay" ); + 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" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // 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) ); + } + } else { + display = curCSS( elem, "display" ); + + if ( !values[ index ] && display !== "none" ) { + jQuery._data( elem, "olddisplay", display ); + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + 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"; + + if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) { + return eventsToggle.apply( this, arguments ); + } + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // 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 + cssNumber: { + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // 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 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, numeric, extra ) { + var val, num, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( numeric || extra !== undefined ) { + num = parseFloat( val ); + return numeric || 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 = {}; + + // 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.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// 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; + + if ( computed ) { + + ret = computed[ name ]; + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // 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; + + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + curCSS = function( elem, name ) { + var left, rsLeft, + ret = elem.currentStyle && elem.currentStyle[ name ], + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // 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; + rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + elem.runtimeStyle.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + elem.runtimeStyle.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +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, + + val = 0; + + 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 ); + } + + // 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; + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } else { + // at this point, extra isn't content, so add padding + val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // 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"; + + // 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 ]; + } + + // 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 && ( jQuery.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 + ) + ) + "px"; +} + + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + if ( elemdisplay[ nodeName ] ) { + return elemdisplay[ nodeName ]; + } + + var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ), + display = elem.css("display"); + elem.remove(); + + // 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 + }) + ); + + // 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(""); + iframeDoc.close(); + } + + elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) ); + + display = curCSS( elem, "display" ); + document.body.removeChild( iframe ); + } + + // Store the correct default display + elemdisplay[ nodeName ] = display; + + return display; +} + +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 ); + } + } + }, + + set: function( elem, value, extra ) { + return setPositiveNumber( elem, value, extra ? + augmentWidthOrHeight( + elem, + name, + extra, + jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box" + ) : 0 + ); + } + }; +}); + +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" : ""; + }, + + 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 >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" && + style.removeAttribute ) { + + // 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 there is no filter style applied in a css rule, we are done + if ( currentStyle && !currentStyle.filter ) { + return; + } + } + + // otherwise, set new filter values + style.filter = ralpha.test( filter ) ? + filter.replace( ralpha, opacity ) : + filter + " " + opacity; + } + }; +} + +// 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" ); + } + }); + } + }; + } + + // 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; + } + } + }; + }); + } + +}); + +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"); + }; + + jQuery.expr.filters.visible = function( elem ) { + return !jQuery.expr.filters.hidden( elem ); + }; +} + +// 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, + + // assumes a single number if not a string + parts = typeof value === "string" ? value.split(" ") : [ value ], + expanded = {}; + + for ( i = 0; 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; + } +}); +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() ); + }, + 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(); + } +}); + +//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 ); + }; + + // Set traditional to true for jQuery <= 1.3.2 behavior. + if ( traditional === undefined ) { + traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; + } + + // 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 ); + }); + + } 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 ); + } + } + + // Return the resulting serialization + return s.join( "&" ).replace( r20, "+" ); +}; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + 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 ); + } + }); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + // Serialize scalar item. + add( prefix, obj ); + } +} +var + // Document location + ajaxLocParts, + ajaxLocation, + + rhash = /#.*$/, + 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):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + rquery = /\?/, + rscript = /)<[^<]*)*<\/script>/gi, + rts = /([?&])_=[^&]*/, + rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, + + // Keep a copy of the old load method + _load = jQuery.fn.load, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = ["*/"] + ["*"]; + +// #8138, IE may throw an exception when accessing +// a field from window.location if document.domain has been set +try { + ajaxLocation = location.href; +} catch( e ) { + // Use the href attribute of an A element + // since IE will modify it given document.location + ajaxLocation = document.createElement( "a" ); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; +} + +// Segment location into parts +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, list, placeBefore, + dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ), + i = 0, + length = dataTypes.length; + + 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 ) || "*"; + } + 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 || {}; + + inspected[ dataType ] = true; + + 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 ); + } + } + } + // 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 ); + } + // unnecessary when only executing (prefilters) + // but it'll be ignored by the caller in that case + return selection; +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } +} + +jQuery.fn.load = function( url, params, callback ) { + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + } + + // Don't do a request if no elements are being requested + if ( !this.length ) { + return this; + } + + var selector, type, response, + self = this, + off = url.indexOf(" "); + + if ( off >= 0 ) { + selector = url.slice( off, url.length ); + url = url.slice( 0, off ); + } + + // If it's a function + if ( jQuery.isFunction( params ) ) { + + // We assume that it's the callback + callback = params; + params = undefined; + + // Otherwise, build a param string + } else if ( params && typeof params === "object" ) { + type = "POST"; + } + + // Request the remote document + jQuery.ajax({ + url: url, + + // 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 ] ); + } + } + }).done(function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + // See if a selector was specified + self.html( selector ? + + // Create a dummy div to hold the results + jQuery("
    ") + + // inject the contents of the document in, removing the scripts + // to avoid any 'Permission Denied' errors in IE + .append( responseText.replace( rscript, "" ) ) + + // Locate the specified elements + .find( selector ) : + + // If not, just inject the full result + responseText ); + + }); + + return this; +}; + +// 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 ); + }; +}); + +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; + } + + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; +}); + +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" ); + }, + + // 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; + }, + + ajaxSettings: { + url: ajaxLocation, + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), + global: true, + type: "GET", + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + processData: true, + async: true, + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + xml: "application/xml, text/xml", + html: "text/html", + text: "text/plain", + json: "application/json, text/javascript", + "*": allTypes + }, + + contents: { + xml: /xml/, + html: /html/, + json: /json/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText" + }, + + // 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 + converters: { + + // Convert anything to text + "* text": window.String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": jQuery.parseJSON, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + context: true, + url: true + } + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var // ifModified key + ifModifiedKey, + // Response headers + 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, + // 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, + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + // Status-dependent callbacks + statusCode = s.statusCode || {}, + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + // The jqXHR state + state = 0, + // Default abort message + 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 ) ) ) { + responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match === undefined ? null : match; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + statusText = statusText || strAbort; + if ( transport ) { + transport.abort( statusText ); + } + done( 0, statusText ); + 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 ); + 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) + // We also use the url parameter if available + s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace ); + + // 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() ) || false; + s.crossDomain = parts && ( parts.join(":") + ( parts[ 3 ] ? "" : parts[ 1 ] === "http:" ? 80 : 443 ) ) !== + ( ajaxLocParts.join(":") + ( ajaxLocParts[ 3 ] ? "" : ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ); + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( state === 2 ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + fireGlobals = s.global; + + // 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" ); + } + + // 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; + // #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 ) { + + var ts = jQuery.now(), + // try replacing _= if it is there + ret = s.url.replace( rts, "$1_=" + ts ); + + // if nothing was replaced, add timestamp to the end + s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); + } + } + + // 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.etag[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); + } + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // 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(); + + } + + // aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + for ( i in { success: 1, error: 1, complete: 1 } ) { + jqXHR[ i ]( s[ i ] ); + } + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + 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" ); + }, s.timeout ); + } + + try { + state = 1; + transport.send( requestHeaders, done ); + } catch (e) { + // Propagate exception as error if not done + if ( state < 2 ) { + done( -1, e ); + // Simply rethrow otherwise + } else { + throw e; + } + } + } + + return jqXHR; + }, + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {} + +}); + +/* 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 ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes, + responseFields = s.responseFields; + + // Fill responseXXX fields + for ( type in responseFields ) { + if ( type in responses ) { + jqXHR[ responseFields[type] ] = responses[ type ]; + } + } + + // 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" ); + } + } + + // 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; + } + } + } + + // 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 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; + + // Apply the dataFilter if provided + if ( s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + // Convert to each sequential dataType, tolerating list modification + for ( ; (current = dataTypes[++i]); ) { + + // There's only work to do if current dataType is non-auto + if ( current !== "*" ) { + + // Convert response if prev dataType is non-auto and differs from current + if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split(" "); + if ( tmp[ 1 ] === current ) { + + // 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.splice( i--, 0, current ); + } + + 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 }; + } + } + } + } + + // Update prev for next iteration + prev = current; + } + } + + return { state: "success", data: response }; +} +var oldCallbacks = [], + rquestion = /\?/, + rjsonp = /(=)\?(?=&|$)|\?\?/, + nonce = jQuery.now(); + +// Default jsonp settings +jQuery.ajaxSetup({ + jsonp: "callback", + jsonpCallback: function() { + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); + this[ callback ] = true; + return callback; + } +}); + +// Detect, normalize options and install callbacks for jsonp requests +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { + + 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 ) { + + // 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; + } + + // 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 ]; + }; + + // force json dataType + s.dataTypes[ 0 ] = "json"; + + // Install callback + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always(function() { + // Restore preexisting value + window[ callbackName ] = overwritten; + + // Save back as free + if ( s[ callbackName ] ) { + // make sure that re-using the options doesn't screw things around + s.jsonpCallback = originalSettings.jsonpCallback; + + // save the callback name for future use + oldCallbacks.push( callbackName ); + } + + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( overwritten ) ) { + overwritten( responseContainer[ 0 ] ); + } + + responseContainer = overwritten = undefined; + }); + + // Delegate to script + return "script"; + } +}); +// Install script dataType +jQuery.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /javascript|ecmascript/ + }, + 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; + } +}); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function(s) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + + var script, + head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; + + return { + + send: function( _, callback ) { + + script = document.createElement( "script" ); + + script.async = "async"; + + if ( s.scriptCharset ) { + script.charset = s.scriptCharset; + } + + script.src = s.url; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function( _, isAbort ) { + + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { + + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + + // Remove the script + if ( head && script.parentNode ) { + head.removeChild( script ); + } + + // Dereference the script + script = undefined; + + // 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 ); + }, + + 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 ); + } + } : false, + xhrId = 0; + +// Functions to create xhrs +function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch( e ) {} +} + +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. + */ + function() { + return !this.isLocal && 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 ) + }); +})( jQuery.ajaxSettings.xhr() ); + +// Create transport if the browser can provide an xhr +if ( jQuery.support.ajax ) { + + jQuery.ajaxTransport(function( s ) { + // Cross domain only allowed if supported through XMLHttpRequest + if ( !s.crossDomain || jQuery.support.cors ) { + + var callback; + + return { + send: function( headers, complete ) { + + // Get a new xhr + var handle, i, + xhr = s.xhr(); + + // 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 ); + } + + // Apply custom fields if provided + if ( s.xhrFields ) { + for ( i in s.xhrFields ) { + xhr[ i ] = s.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( s.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( s.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // 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"; + } + + // Need an extra try/catch for cross domain requests in Firefox 3 + try { + for ( i in headers ) { + 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 ); + + // Listener + callback = function( _, isAbort ) { + + 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 ) ) { + + // Only called once + callback = undefined; + + // Do not keep as active anymore + if ( handle ) { + xhr.onreadystatechange = jQuery.noop; + if ( xhrOnUnloadAbort ) { + delete xhrCallbacks[ handle ]; + } + } + + // 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( _ ) { + } + + // 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 + + // 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; + } + } + } + } catch( firefoxAccessException ) { + if ( !isAbort ) { + complete( -1, firefoxAccessException ); + } + } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, responseHeaders ); + } + }; + + if ( !s.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 ); + } 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; + } + }, + + abort: function() { + if ( callback ) { + callback(0,1); + } + } + }; + } + }); +} +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() ); +} + +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 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 ), + percent = 1 - ( remaining / animation.duration || 0 ), + 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; + } + } + + createTweens( animation, props ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + 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; + } + } +} + +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 ); + } + }, + + prefilter: function( callback, prepend ) { + if ( prepend ) { + animationPrefilters.unshift( callback ); + } else { + animationPrefilters.push( callback ); + } + } +}); + +function defaultPrefilter( elem, props, opts ) { + var index, prop, value, length, dataShow, tween, hooks, oldfire, + anim = this, + style = elem.style, + orig = {}, + handled = [], + hidden = elem.nodeType && isHidden( elem ); + + // 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++; + + 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 + if ( jQuery.css( elem, "display" ) === "inline" && + jQuery.css( elem, "float" ) === "none" ) { + + // 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"; + + } else { + style.zoom = 1; + } + } + } + + 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 ]; + }); + } + } + + + // show/hide pass + for ( index in props ) { + value = props[ index ]; + if ( rfxtypes.exec( value ) ) { + delete props[ index ]; + if ( value === ( hidden ? "hide" : "show" ) ) { + continue; + } + handled.push( index ); + } + } + + length = handled.length; + if ( length ) { + dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} ); + 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 ); + + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = tween.start; + if ( hidden ) { + tween.end = tween.start; + tween.start = prop === "width" || prop === "height" ? 1 : 0; + } + } + } + } +} + +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 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; + } + } + } +}; + +// Remove in 2.0 - this supports IE8's panic based approach +// to setting things on disconnected nodes + +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +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 ); + + // Empty animations resolve immediately + if ( empty ) { + anim.stop( true ); + } + }; + + 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 ] ); + } + } + } + + 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 ); + } + }); + } +}); + +// 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; +} + +// 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 + }; + + 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; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p*Math.PI ) / 2; + } +}; + +jQuery.timers = []; +jQuery.fx = Tween.prototype.init; +jQuery.fx.tick = function() { + var timer, + timers = jQuery.timers, + i = 0; + + 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 ( !timers.length ) { + jQuery.fx.stop(); + } +}; + +jQuery.fx.timer = function( timer ) { + if ( timer() && jQuery.timers.push( timer ) && !timerId ) { + timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.interval = 13; + +jQuery.fx.stop = function() { + clearInterval( timerId ); + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + // Default speed + _default: 400 +}; + +// Back Compat <1.8 extension point +jQuery.fx.step = {}; + +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; + +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; + + if ( !doc ) { + return; + } + + if ( (body = doc.body) === elem ) { + return jQuery.offset.bodyOffset( elem ); + } + + 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.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 }; + }, + + setOffset: function( elem, options, i ) { + var position = jQuery.css( elem, "position" ); + + // 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; + + // need to be able to calculate position if either top or left is auto and position is either absolute or fixed + if ( calculatePosition ) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat( curCSSTop ) || 0; + curLeft = parseFloat( curCSSLeft ) || 0; + } + + if ( jQuery.isFunction( options ) ) { + options = options.call( elem, i, curOffset ); + } + + if ( options.top != null ) { + props.top = ( options.top - curOffset.top ) + curTop; + } + if ( options.left != null ) { + props.left = ( options.left - curOffset.left ) + curLeft; + } + + if ( "using" in options ) { + options.using.call( elem, props ); + } else { + curElem.css( props ); + } + } +}; + + +jQuery.fn.extend({ + + position: function() { + if ( !this[0] ) { + return; + } + + var elem = this[0], + + // Get *real* offsetParent + offsetParent = this.offsetParent(), + + // Get correct offsets + offset = this.offset(), + parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); + + // Subtract 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 + }; + }, + + offsetParent: function() { + return this.map(function() { + var offsetParent = this.offsetParent || document.body; + while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || document.body; + }); + } +}); + + +// Create scrollLeft and scrollTop methods +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 ) { + var win = getWindow( elem ); + + if ( val === undefined ) { + return win ? (prop in win) ? win[ prop ] : + win.document.documentElement[ method ] : + elem[ method ]; + } + + if ( win ) { + win.scrollTo( + !top ? val : jQuery( win ).scrollLeft(), + top ? val : jQuery( win ).scrollTop() + ); + + } else { + elem[ method ] = val; + } + }, method, val, arguments.length, null ); + }; +}); + +function getWindow( elem ) { + return jQuery.isWindow( elem ) ? + elem : + elem.nodeType === 9 ? + elem.defaultView || elem.parentWindow : + false; +} +// 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 ) { + // margin is only for outerHeight, outerWidth + jQuery.fn[ funcName ] = function( margin, value ) { + var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), + extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); + + return jQuery.access( this, function( elem, type, value ) { + var doc; + + if ( jQuery.isWindow( elem ) ) { + // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there + // isn't a whole lot we can do. See pull request at this URL for discussion: + // https://github.com/jquery/jquery/pull/764 + return elem.document.documentElement[ "client" + name ]; + } + + // Get document width or height + if ( elem.nodeType === 9 ) { + doc = elem.documentElement; + + // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest + // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. + return Math.max( + elem.body[ "scroll" + name ], doc[ "scroll" + name ], + elem.body[ "offset" + name ], doc[ "offset" + name ], + doc[ "client" + name ] + ); + } + + return value === undefined ? + // Get width or height on the element, requesting but not forcing parseFloat + jQuery.css( elem, type, value, extra ) : + + // Set width or height on the element + jQuery.style( elem, type, value, extra ); + }, type, chainable ? margin : undefined, chainable, null ); + }; + }); +}); +// 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; } ); +} + +})( window ); diff --git a/fhem/contrib/YAF/YAF/www/js/jquery-ui-1.9.1.custom.js b/fhem/contrib/YAF/YAF/www/js/jquery-ui-1.9.1.custom.js new file mode 100755 index 000000000..401416ad3 --- /dev/null +++ b/fhem/contrib/YAF/YAF/www/js/jquery-ui-1.9.1.custom.js @@ -0,0 +1,14823 @@ +/*! jQuery UI - v1.9.1 - 2012-10-25 +* 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( $, 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 = $.ui || {}; +if ( $.ui.version ) { + return; +} + +$.extend( $.ui, { + version: "1.9.1", + + 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 + } +}); + +// 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 ); + }, + + scrollParent: function() { + var scrollParent; + 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')); + }).eq(0); + } else { + scrollParent = this.parents().filter(function() { + 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; + }, + + zIndex: function( zIndex ) { + if ( zIndex !== undefined ) { + return this.css( "zIndex", zIndex ); + } + + if ( this.length ) { + var elem = $( this[ 0 ] ), position, value; + while ( elem.length && elem[ 0 ] !== document ) { + // Ignore z-index if position is set to a value where z-index is ignored by the browser + // This makes behavior of this function consistent across browsers + // WebKit always returns auto if the element is positioned + position = elem.css( "position" ); + if ( position === "absolute" || position === "relative" || position === "fixed" ) { + // IE returns 0 when zIndex is not specified + // other browsers return a string + // we ignore the case of nested elements with an explicit value of 0 + //
    + value = parseInt( elem.css( "zIndex" ), 10 ); + if ( !isNaN( value ) && value !== 0 ) { + return value; + } + } + elem = elem.parent(); + } + } + + return 0; + }, + + uniqueId: function() { + return this.each(function() { + if ( !this.id ) { + this.id = "ui-id-" + (++uuid); + } + }); + }, + + removeUniqueId: function() { + return this.each(function() { + if ( runiqueId.test( this.id ) ) { + $( this ).removeAttr( "id" ); + } + }); + } +}); + +// support: jQuery <1.8 +if ( !$( "" ).outerWidth( 1 ).jquery ) { + $.each( [ "Width", "Height" ], function( i, name ) { + var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], + type = name.toLowerCase(), + orig = { + innerWidth: $.fn.innerWidth, + innerHeight: $.fn.innerHeight, + outerWidth: $.fn.outerWidth, + outerHeight: $.fn.outerHeight + }; + + function reduce( elem, size, border, margin ) { + $.each( side, function() { + size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; + if ( border ) { + size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; + } + if ( margin ) { + size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; + } + }); + return size; + } + + $.fn[ "inner" + name ] = function( size ) { + if ( size === undefined ) { + return orig[ "inner" + name ].call( this ); + } + + return this.each(function() { + $( this ).css( type, reduce( this, size ) + "px" ); + }); + }; + + $.fn[ "outer" + name] = function( size, margin ) { + if ( typeof size !== "number" ) { + return orig[ "outer" + name ].call( this, size ); + } + + return this.each(function() { + $( this).css( type, reduce( this, size, true, margin ) + "px" ); + }); + }; + }); +} + +// selectors +function focusable( element, isTabIndexNotNaN ) { + var map, mapName, img, + nodeName = element.nodeName.toLowerCase(); + if ( "area" === nodeName ) { + map = element.parentNode; + mapName = map.name; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = $( "img[usemap=#" + mapName + "]" )[0]; + return !!img && visible( img ); + } + return ( /input|select|textarea|button|object/.test( nodeName ) ? + !element.disabled : + "a" === nodeName ? + element.href || isTabIndexNotNaN : + isTabIndexNotNaN) && + // the element and all of its ancestors must be visible + visible( element ); +} + +function visible( element ) { + return $.expr.filters.visible( element ) && + !$( element ).parents().andSelf().filter(function() { + return $.css( this, "visibility" ) === "hidden"; + }).length; +} + +$.extend( $.expr[ ":" ], { + data: $.expr.createPseudo ? + $.expr.createPseudo(function( dataName ) { + return function( elem ) { + return !!$.data( elem, dataName ); + }; + }) : + // support: jQuery <1.8 + function( elem, i, match ) { + return !!$.data( elem, match[ 3 ] ); + }, + + focusable: function( element ) { + return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); + }, + + tabbable: function( element ) { + var tabIndex = $.attr( element, "tabindex" ), + isTabIndexNaN = isNaN( tabIndex ); + return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); + } +}); + +// 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"; +}); + + + + + +// deprecated + +(function() { + var uaMatch = /msie ([\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || []; + $.ui.ie = uaMatch.length ? true : false; + $.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6; +})(); + +$.fn.extend({ + disableSelection: function() { + return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) + + ".ui-disableSelection", function( event ) { + event.preventDefault(); + }); + }, + + enableSelection: function() { + return this.unbind( ".ui-disableSelection" ); + } +}); + +$.extend( $.ui, { + // $.ui.plugin is deprecated. Use the proxy pattern instead. + plugin: { + add: function( module, option, set ) { + var i, + proto = $.ui[ module ].prototype; + for ( i in set ) { + proto.plugins[ i ] = proto.plugins[ i ] || []; + proto.plugins[ i ].push( [ option, set[ i ] ] ); + } + }, + call: function( instance, name, args ) { + var i, + set = instance.plugins[ name ]; + if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) { + return; + } + + for ( i = 0; i < set.length; i++ ) { + if ( instance.options[ set[ i ][ 0 ] ] ) { + set[ i ][ 1 ].apply( instance.element, args ); + } + } + } + }, + + contains: $.contains, + + // only used by resizable + hasScroll: function( el, a ) { + + //If overflow is hidden, the element might have extra content, but the user wants to hide it + if ( $( el ).css( "overflow" ) === "hidden") { + return false; + } + + var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", + has = false; + + if ( el[ scroll ] > 0 ) { + return true; + } + + // TODO: determine which cases actually cause this to happen + // if the element doesn't have the scroll set, see if it's possible to + // set the scroll + el[ scroll ] = 1; + 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, + slice = Array.prototype.slice, + _cleanData = $.cleanData; +$.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + try { + $( elem ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} + } + _cleanData( elems ); +}; + +$.widget = function( name, base, prototype ) { + var fullName, existingConstructor, constructor, basePrototype, + namespace = name.split( "." )[ 0 ]; + + name = name.split( "." )[ 1 ]; + fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + // allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + // extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + // copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + // track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + }); + + basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // 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; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + 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: basePrototype.widgetEventPrefix || name + }, prototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + // TODO remove widgetBaseClass, see #8155 + widgetBaseClass: fullName, + widgetFullName: fullName + }); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); + }); + // remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); +}; + +$.widget.extend = function( target ) { + var input = slice.call( arguments, 1 ), + inputIndex = 0, + inputLength = input.length, + key, + value; + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string", + args = slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.widget.extend.apply( null, [ options ].concat(args) ) : + options; + + if ( isMethodCall ) { + this.each(function() { + var methodValue, + instance = $.data( this, fullName ); + if ( !instance ) { + return $.error( "cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + " widget instance" ); + } + methodValue = instance[ options ].apply( instance, args ); + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} )._init(); + } else { + new object( options, this ); + } + }); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
    ", + options: { + disabled: false, + + // callbacks + create: null + }, + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = uuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this.bindings = $(); + this.hoverable = $(); + 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( this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + }); + this.document = $( element.style ? + // element within the document + element.ownerDocument : + // element is window or document + element.document || element ); + this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); + } + + this._create(); + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + _getCreateOptions: $.noop, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, + + destroy: function() { + this._destroy(); + // we can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .unbind( this.eventNamespace ) + // 1.9 BC for #7810 + // TODO remove dual storage + .removeData( this.widgetName ) + .removeData( this.widgetFullName ) + // support: jquery <1.6.3 + // http://bugs.jquery.com/ticket/9413 + .removeData( $.camelCase( this.widgetFullName ) ); + this.widget() + .unbind( this.eventNamespace ) + .removeAttr( "aria-disabled" ) + .removeClass( + this.widgetFullName + "-disabled " + + "ui-state-disabled" ); + + // clean up events and states + this.bindings.unbind( this.eventNamespace ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + }, + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key, + parts, + curOption, + i; + + if ( arguments.length === 0 ) { + // don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( value === undefined ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( value === undefined ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + _setOption: function( key, value ) { + this.options[ key ] = value; + + if ( key === "disabled" ) { + this.widget() + .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) + .attr( "aria-disabled", value ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + } + + return this; + }, + + enable: function() { + return this._setOption( "disabled", false ); + }, + disable: function() { + return this._setOption( "disabled", true ); + }, + + _on: function( element, handlers ) { + var delegateElement, + instance = this; + // no element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + // accept selectors, DOM elements + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + // allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^(\w+)\s*(.*)$/ ), + eventName = match[1] + instance.eventNamespace, + selector = match[2]; + if ( selector ) { + delegateElement.delegate( selector, eventName, handlerProxy ); + } else { + element.bind( eventName, handlerProxy ); + } + }); + }, + + _off: function( element, eventName ) { + eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; + element.unbind( eventName ).undelegate( eventName ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + $( event.currentTarget ).addClass( "ui-state-hover" ); + }, + mouseleave: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-hover" ); + } + }); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + $( event.currentTarget ).addClass( "ui-state-focus" ); + }, + focusout: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-focus" ); + } + }); + }, + + _trigger: function( type, event, data ) { + var prop, orig, + callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[0], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + var hasOptions, + effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + if ( options.delay ) { + element.delay( options.delay ); + } + if ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue(function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + }); + } + }; +}); + +// 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 ) { + mouseHandled = false; +}); + +$.widget("ui.mouse", { + version: "1.9.1", + options: { + cancel: 'input,textarea,button,select,option', + distance: 1, + delay: 0 + }, + _mouseInit: function() { + var that = this; + + this.element + .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'); + event.stopImmediatePropagation(); + return false; + } + }); + + this.started = false; + }, + + // TODO: make sure destroying one instance of mouse doesn't mess with + // other instances of mouse + _mouseDestroy: function() { + this.element.unbind('.'+this.widgetName); + if ( this._mouseMoveDelegate ) { + $(document) + .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) + .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); + } + }, + + _mouseDown: function(event) { + // don't let more than one widget handle mouseStart + if( mouseHandled ) { return; } + + // we may have missed mouseup (out of window) + (this._mouseStarted && this._mouseUp(event)); + + this._mouseDownEvent = event; + + var that = this, + btnIsLeft = (event.which === 1), + // event.target.nodeName works around a bug in IE 8 with + // disabled inputs (#7620) + elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); + if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { + return true; + } + + this.mouseDelayMet = !this.options.delay; + if (!this.mouseDelayMet) { + this._mouseDelayTimer = setTimeout(function() { + that.mouseDelayMet = true; + }, this.options.delay); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = (this._mouseStart(event) !== false); + if (!this._mouseStarted) { + event.preventDefault(); + return true; + } + } + + // Click event may never have fired (Gecko & Opera) + if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) { + $.removeData(event.target, this.widgetName + '.preventClickEvent'); + } + + // these delegates are required to keep context + this._mouseMoveDelegate = function(event) { + return that._mouseMove(event); + }; + this._mouseUpDelegate = function(event) { + return that._mouseUp(event); + }; + $(document) + .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) + .bind('mouseup.'+this.widgetName, this._mouseUpDelegate); + + event.preventDefault(); + + mouseHandled = true; + return true; + }, + + _mouseMove: function(event) { + // IE mouseup check - mouseup happened when mouse was out of window + if ($.ui.ie && !(document.documentMode >= 9) && !event.button) { + return this._mouseUp(event); + } + + if (this._mouseStarted) { + this._mouseDrag(event); + return event.preventDefault(); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = + (this._mouseStart(this._mouseDownEvent, event) !== false); + (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); + } + + return !this._mouseStarted; + }, + + _mouseUp: function(event) { + $(document) + .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); + } + + this._mouseStop(event); + } + + return false; + }, + + _mouseDistanceMet: function(event) { + return (Math.max( + Math.abs(this._mouseDownEvent.pageX - event.pageX), + Math.abs(this._mouseDownEvent.pageY - event.pageY) + ) >= this.options.distance + ); + }, + + _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; } +}); + +})(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 = $( "
    " ), + 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 ) { + +var uid = 0, + hideProps = {}, + showProps = {}; + +hideProps.height = hideProps.paddingTop = hideProps.paddingBottom = + hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide"; +showProps.height = showProps.paddingTop = showProps.paddingBottom = + showProps.borderTopWidth = showProps.borderBottomWidth = "show"; + +$.widget( "ui.accordion", { + version: "1.9.1", + options: { + active: 0, + animate: {}, + collapsible: false, + event: "click", + header: "> li > :first-child,> :not(li):even", + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, + + // callbacks + activate: null, + beforeActivate: null + }, + + _create: function() { + var accordionId = this.accordionId = "ui-accordion-" + + (this.element.attr( "id" ) || ++uid), + 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(); + + // don't allow collapsible: false and active: false / null + if ( !options.collapsible && (options.active === false || options.active == null) ) { + options.active = 0; + } + // 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 ); + }, + + _getCreateEventData: function() { + return { + header: this.active, + content: !this.active.length ? $() : this.active.next() + }; + }, + + _createIcons: function() { + var icons = this.options.icons; + if ( icons ) { + $( "" ) + .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) + .prependTo( this.headers ); + this.active.children( ".ui-accordion-header-icon" ) + .removeClass( icons.header ) + .addClass( icons.activeHeader ); + this.headers.addClass( "ui-accordion-icons" ); + } + }, + + _destroyIcons: function() { + this.headers + .removeClass( "ui-accordion-icons" ) + .children( ".ui-accordion-header-icon" ) + .remove(); + }, + + _destroy: function() { + var contents; + + // clean up main element + this.element + .removeClass( "ui-accordion ui-widget ui-helper-reset" ) + .removeAttr( "role" ); + + // clean up headers + 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() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + this._destroyIcons(); + + // clean up content panels + 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" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); + } + this._setupEvents( value ); + } + + this._super( key, value ); + + // setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); + } + + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } + + // #5332 - opacity doesn't cascade to positioned elements in IE + // so we need to add the disabled class to the headers and panels + if ( key === "disabled" ) { + this.headers.add( this.headers.next() ) + .toggleClass( "ui-state-disabled", !!value ); + } + }, + + _keydown: function( event ) { + if ( event.altKey || event.ctrlKey ) { + return; + } + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; + } + + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + toFocus.focus(); + event.preventDefault(); + } + }, + + _panelKeyDown : function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().focus(); + } + }, + + refresh: function() { + var maxHeight, overflow, + heightStyle = this.options.heightStyle, + 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(); + this.element.siblings( ":visible" ).each(function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + }); + if ( overflow ) { + parent.css( "overflow", overflow ); + } + + this.headers.each(function() { + maxHeight -= $( this ).outerHeight( true ); + }); + + this.headers.next() + .each(function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + }) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each(function() { + maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); + }) + .height( maxHeight ); + } + }, + + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; + + // trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler({ + target: active, + currentTarget: active, + preventDefault: $.noop + }); + }, + + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, + + _setupEvents: function( event ) { + var events = {}; + if ( !event ) { + return; + } + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + }); + this._on( this.headers, events ); + }, + + _eventHandler: function( event ) { + var options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; + + event.preventDefault(); + + if ( + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.headers.index( clicked ); + + // when the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); + + // switch classes + // corner classes on the previously active header stay after the animation + active.removeClass( "ui-accordion-header-active ui-state-active" ); + if ( options.icons ) { + active.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.activeHeader ) + .addClass( options.icons.header ); + } + + if ( !clickedIsActive ) { + clicked + .removeClass( "ui-corner-all" ) + .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); + if ( options.icons ) { + clicked.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.header ) + .addClass( options.icons.activeHeader ); + } + + clicked + .next() + .addClass( "ui-accordion-content-active" ); + } + }, + + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }); + toHide.prev().attr( "aria-selected", "false" ); + // if we're switching panels, remove the old header from the tab order + // 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 ); + } else if ( toShow.length ) { + this.headers.filter(function() { + return $( this ).attr( "tabIndex" ) === 0; + }) + .attr( "tabIndex", -1 ); + } + + toShow + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }) + .prev() + .attr({ + "aria-selected": "true", + tabIndex: 0 + }); + }, + + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; + } + if ( typeof options === "string" ) { + easing = options; + } + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( hideProps, duration, easing, complete ); + } + + total = toShow.show().outerHeight(); + toHide.animate( hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + }); + toShow + .hide() + .animate( showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + adjust += fx.now; + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + }); + }, + + _toggleComplete: function( data ) { + var toHide = data.oldPanel; + + toHide + .removeClass( "ui-accordion-content-active" ) + .prev() + .removeClass( "ui-corner-top" ) + .addClass( "ui-corner-all" ); + + // Work around for rendering bug in IE (#5421) + 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; + +$.widget( "ui.autocomplete", { + version: "1.9.1", + defaultElement: "", + options: { + appendTo: "body", + autoFocus: false, + delay: 300, + minLength: 1, + position: { + my: "left top", + at: "left bottom", + collision: "none" + }, + source: null, + + // callbacks + change: null, + close: null, + focus: null, + open: null, + response: null, + search: null, + select: null + }, + + pending: 0, + + _create: function() { + // Some browsers only repeat keydown events, not keypress events, + // so we use the suppressKeyPress flag to determine if we've already + // handled the keydown event. #7269 + // Unfortunately the code for & in keypress is the same as the up arrow, + // 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; + + this.isMultiLine = this._isMultiLine(); + this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ]; + this.isNewMenu = true; + + this.element + .addClass( "ui-autocomplete-input" ) + .attr( "autocomplete", "off" ); + + this._on( this.element, { + keydown: function( event ) { + if ( this.element.prop( "readOnly" ) ) { + suppressKeyPress = true; + suppressInput = true; + suppressKeyPressRepeat = true; + return; + } + + suppressKeyPress = false; + suppressInput = false; + suppressKeyPressRepeat = false; + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + suppressKeyPress = true; + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + suppressKeyPress = true; + this._move( "nextPage", event ); + break; + case keyCode.UP: + suppressKeyPress = true; + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + suppressKeyPress = true; + this._keyEvent( "next", event ); + break; + case keyCode.ENTER: + case keyCode.NUMPAD_ENTER: + // when menu is open and has focus + if ( this.menu.active ) { + // #6055 - Opera still allows the keypress to occur + // which causes forms to submit + suppressKeyPress = true; + event.preventDefault(); + this.menu.select( event ); + } + break; + case keyCode.TAB: + if ( this.menu.active ) { + this.menu.select( event ); + } + break; + case keyCode.ESCAPE: + if ( this.menu.element.is( ":visible" ) ) { + this._value( this.term ); + this.close( event ); + // Different browsers have different default behavior for escape + // Single press can mean undo or clear + // Double press in IE means clear the whole form + event.preventDefault(); + } + break; + default: + suppressKeyPressRepeat = true; + // search timeout should be triggered before the input value is changed + this._searchTimeout( event ); + break; + } + }, + keypress: function( event ) { + if ( suppressKeyPress ) { + suppressKeyPress = false; + event.preventDefault(); + return; + } + if ( suppressKeyPressRepeat ) { + return; + } + + // replicate some key handlers to allow them to repeat in Firefox and Opera + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + this._move( "nextPage", event ); + break; + case keyCode.UP: + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + this._keyEvent( "next", event ); + break; + } + }, + input: function( event ) { + if ( suppressInput ) { + suppressInput = false; + event.preventDefault(); + return; + } + this._searchTimeout( event ); + }, + focus: function() { + this.selectedItem = null; + this.previous = this._value(); + }, + blur: function( event ) { + if ( this.cancelBlur ) { + delete this.cancelBlur; + return; + } + + clearTimeout( this.searching ); + this.close( event ); + this._change( event ); + } + }); + + this._initSource(); + this.menu = $( "
    ' + + ''; + var thead = (showWeek ? '' : ''); + for (var dow = 0; dow < 7; dow++) { // days of the week + var day = (dow + firstDay) % 7; + thead += '= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' + + '' + dayNamesMin[day] + ''; + } + calender += thead + ''; + var 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) + 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 += ''; + var tbody = (!showWeek ? '' : ''); + 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] || + (minDate && printDate < minDate) || (maxDate && printDate > maxDate); + tbody += ''; // display selectable date + printDate.setDate(printDate.getDate() + 1); + printDate = this._daylightSavingAdjust(printDate); + } + calender += tbody + ''; + } + drawMonth++; + if (drawMonth > 11) { + drawMonth = 0; + drawYear++; + } + calender += '
    ' + this._get(inst, 'weekHeader') + '
    ' + + this._get(inst, 'calculateWeek')(printDate) + '' + // actions + (otherMonth && !showOtherMonths ? ' ' : // display for other months + (unselectable ? '' + printDate.getDate() + '' : '' + printDate.getDate() + '')) + '
    ' + (isMultiMonth ? '' + + ((numMonths[0] > 0 && col == numMonths[1]-1) ? '
    ' : '') : ''); + group += calender; + } + html += group; + } + html += buttonPanel + ($.ui.ie6 && !inst.inline ? + '' : ''); + inst._keyEvent = false; + return html; + }, + + /* 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 = '
    '; + var monthHtml = ''; + // month selection + if (secondary || !changeMonth) + monthHtml += '' + monthNames[drawMonth] + ''; + else { + var inMinYear = (minDate && minDate.getFullYear() == drawYear); + var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); + monthHtml += ''; + } + if (!showMonthAfterYear) + html += monthHtml + (secondary || !(changeMonth && changeYear) ? ' ' : ''); + // year selection + if ( !inst.yearshtml ) { + inst.yearshtml = ''; + if (secondary || !changeYear) + html += '' + drawYear + ''; + 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) : + parseInt(value, 10))); + return (isNaN(year) ? thisYear : year); + }; + var year = determineYear(years[0]); + var 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 += ''; + + html += inst.yearshtml; + inst.yearshtml = null; + } + } + html += this._get(inst, 'yearSuffix'); + if (showMonthAfterYear) + html += (secondary || !(changeMonth && changeYear) ? ' ' : '') + monthHtml; + html += '
    '; // 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))); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + 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; + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + 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)); + }, + + /* 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); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* 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, + curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); + 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'); + return ((!minDate || date.getTime() >= minDate.getTime()) && + (!maxDate || date.getTime() <= maxDate.getTime())); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + 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')}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + 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)); + } +}); + +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * 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'); + }) + .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'); + } + }); +} + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) + if (props[name] == null || props[name] == undefined) + 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 + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick). + find(document.body).append($.datepicker.dpDiv); + $.datepicker.initialized = true; + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + 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']. + apply($.datepicker, [this[0]].concat(otherArgs)); + return this.each(function() { + typeof options == 'string' ? + $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.9.1"; + +// Workaround for #4055 +// Add another global to avoid noConflict issues with inline event handlers +window['DP_jQuery_' + dpuuid] = $; + +})(jQuery); +(function( $, undefined ) { + +var uiDialogClasses = "ui-dialog ui-widget ui-widget-content ui-corner-all ", + sizeRelatedOptions = { + buttons: true, + height: true, + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true, + width: true + }, + resizableRelatedOptions = { + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true + }; + +$.widget("ui.dialog", { + version: "1.9.1", + options: { + autoOpen: true, + buttons: {}, + closeOnEscape: true, + closeText: "close", + dialogClass: "", + draggable: true, + hide: null, + height: "auto", + maxHeight: false, + maxWidth: false, + minHeight: 150, + minWidth: 150, + modal: false, + position: { + my: "center", + at: "center", + of: window, + collision: "fit", + // ensure that the titlebar is never outside the document + using: function( pos ) { + var topOffset = $( this ).css( pos ).offset().top; + if ( topOffset < 0 ) { + $( this ).css( "top", pos.top - topOffset ); + } + } + }, + resizable: true, + show: null, + stack: true, + title: "", + width: 300, + zIndex: 1000 + }, + + _create: function() { + this.originalTitle = this.element.attr( "title" ); + // #5742 - .attr() might return a DOMElement + if ( 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 that = this, + options = this.options, + + title = options.title || " ", + uiDialog, + uiDialogTitlebar, + uiDialogTitlebarClose, + uiDialogTitle, + uiDialogButtonPane; + + uiDialog = ( this.uiDialog = $( "
    " ) ) + .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 = $( "
    " ) ) + .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 = $( "" ) + .addClass( "ui-dialog-titlebar-close ui-corner-all" ) + .attr( "role", "button" ) + .click(function( event ) { + event.preventDefault(); + that.close( event ); + }) + .appendTo( uiDialogTitlebar ); + + ( this.uiDialogTitlebarCloseText = $( "" ) ) + .addClass( "ui-icon ui-icon-closethick" ) + .text( options.closeText ) + .appendTo( uiDialogTitlebarClose ); + + uiDialogTitle = $( "" ) + .uniqueId() + .addClass( "ui-dialog-title" ) + .html( title ) + .prependTo( uiDialogTitlebar ); + + uiDialogButtonPane = ( this.uiDialogButtonPane = $( "
    " ) ) + .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ); + + ( this.uiButtonSet = $( "
    " ) ) + .addClass( "ui-dialog-buttonset" ) + .appendTo( uiDialogButtonPane ); + + uiDialog.attr({ + role: "dialog", + "aria-labelledby": uiDialogTitle.attr( "id" ) + }); + + uiDialogTitlebar.find( "*" ).add( uiDialogTitlebar ).disableSelection(); + this._hoverable( uiDialogTitlebarClose ); + this._focusable( uiDialogTitlebarClose ); + + if ( options.draggable && $.fn.draggable ) { + this._makeDraggable(); + } + if ( 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() { + if ( this.options.autoOpen ) { + this.open(); + } + }, + + _destroy: function() { + var next, + oldPosition = this.oldPosition; + + if ( this.overlay ) { + this.overlay.destroy(); + } + this.uiDialog.hide(); + this.element + .removeClass( "ui-dialog-content ui-widget-content" ) + .hide() + .appendTo( "body" ); + this.uiDialog.remove(); + + if ( this.originalTitle ) { + this.element.attr( "title", this.originalTitle ); + } + + next = oldPosition.parent.children().eq( oldPosition.index ); + // Don't try to place the dialog next to itself (#8613) + if ( next.length && next[ 0 ] !== this.element[ 0 ] ) { + next.before( this.element ); + } else { + oldPosition.parent.append( this.element ); + } + }, + + widget: function() { + return this.uiDialog; + }, + + close: function( event ) { + var that = this, + maxZ, thisZ; + + if ( !this._isOpen ) { + return; + } + + if ( false === this._trigger( "beforeClose", event ) ) { + return; + } + + this._isOpen = false; + + if ( this.overlay ) { + this.overlay.destroy(); + } + + if ( this.options.hide ) { + this._hide( this.uiDialog, this.options.hide, function() { + that._trigger( "close", event ); + }); + } else { + this.uiDialog.hide(); + this._trigger( "close", event ); + } + + $.ui.dialog.overlay.resize(); + + // 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 ); + } + } + }); + $.ui.dialog.maxZ = maxZ; + } + + return this; + }, + + 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 ); + } + + 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 ); + } + + // 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; + }, + + open: function() { + if ( this._isOpen ) { + return; + } + + var hasFocus, + options = this.options, + uiDialog = this.uiDialog; + + this._size(); + this._position( options.position ); + uiDialog.show( options.show ); + this.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null; + this.moveToTop( true ); + + // 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" ); + if ( !hasFocus.length ) { + hasFocus = this.uiDialogButtonPane.find( ":tabbable" ); + if ( !hasFocus.length ) { + hasFocus = uiDialog; + } + } + hasFocus.eq( 0 ).focus(); + + this._isOpen = true; + this._trigger( "open" ); + + return this; + }, + + _createButtons: function( buttons ) { + var that = this, + hasButtons = false; + + // 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 ) { + props = $.isFunction( props ) ? + { click: props, text: name } : + props; + var button = $( "" ) + .attr( props, true ) + .unbind( "click" ) + .click(function() { + props.click.apply( that.element[0], arguments ); + }) + .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" ); + } + }, + + _makeDraggable: function() { + var that = this, + options = this.options; + + function filteredUi( ui ) { + return { + position: ui.position, + offset: ui.offset + }; + } + + this.uiDialog.draggable({ + cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", + handle: ".ui-dialog-titlebar", + containment: "document", + start: function( event, ui ) { + $( this ) + .addClass( "ui-dialog-dragging" ); + that._trigger( "dragStart", event, filteredUi( ui ) ); + }, + drag: function( event, ui ) { + that._trigger( "drag", event, filteredUi( ui ) ); + }, + stop: function( event, ui ) { + options.position = [ + ui.position.left - that.document.scrollLeft(), + ui.position.top - that.document.scrollTop() + ]; + $( this ) + .removeClass( "ui-dialog-dragging" ); + that._trigger( "dragStop", event, filteredUi( ui ) ); + $.ui.dialog.overlay.resize(); + } + }); + }, + + _makeResizable: function( handles ) { + handles = (handles === undefined ? this.options.resizable : handles); + var that = this, + options = this.options, + // .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' ? + handles : + "n,e,s,w,se,sw,ne,nw"; + + function filteredUi( ui ) { + return { + originalPosition: ui.originalPosition, + originalSize: ui.originalSize, + position: ui.position, + size: ui.size + }; + } + + this.uiDialog.resizable({ + cancel: ".ui-dialog-content", + containment: "document", + alsoResize: this.element, + maxWidth: options.maxWidth, + maxHeight: options.maxHeight, + minWidth: options.minWidth, + minHeight: this._minHeight(), + handles: resizeHandles, + start: function( event, ui ) { + $( this ).addClass( "ui-dialog-resizing" ); + 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(); + 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" ); + }, + + _minHeight: function() { + var options = this.options; + + if ( options.height === "auto" ) { + return options.minHeight; + } else { + return 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" ); + if ( !isVisible ) { + this.uiDialog.show(); + } + this.uiDialog.position( position ); + if ( !isVisible ) { + this.uiDialog.hide(); + } + }, + + _setOptions: function( options ) { + var that = this, + resizableOptions = {}, + resize = false; + + $.each( options, function( key, value ) { + that._setOption( key, value ); + + if ( key in sizeRelatedOptions ) { + resize = true; + } + if ( key in resizableRelatedOptions ) { + resizableOptions[ key ] = value; + } + }); + + if ( resize ) { + this._size(); + } + if ( this.uiDialog.is( ":data(resizable)" ) ) { + this.uiDialog.resizable( "option", resizableOptions ); + } + }, + + _setOption: function( key, value ) { + 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 ( !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" ); + } + + // 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( 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; + } + + this._super( key, value ); + }, + + _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" ); + + // reset content sizing + this.element.show().css({ + width: "auto", + minHeight: 0, + height: 0 + }); + + if ( options.minWidth > options.width ) { + options.width = options.minWidth; + } + + // reset wrapper sizing + // determine the height of all the non-content elements + nonContentHeight = this.uiDialog.css({ + height: "auto", + width: options.width + }) + .outerHeight(); + minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); + + 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 ) ); + } + } else { + this.element.height( Math.max( options.height - nonContentHeight, 0 ) ); + } + + if (this.uiDialog.is( ":data(resizable)" ) ) { + this.uiDialog.resizable( "option", "minHeight", this._minHeight() ); + } + } +}); + +$.extend($.ui.dialog, { + uuid: 0, + maxZ: 0, + + getTitleId: function($el) { + var id = $el.attr( "id" ); + if ( !id ) { + this.uuid += 1; + id = this.uuid; + } + return "ui-dialog-title-" + id; + }, + + overlay: function( dialog ) { + this.$el = $.ui.dialog.overlay.create( dialog ); + } +}); + +$.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; + } + }); + } + }, 1 ); + + // handle window resize + $( window ).bind( "resize.dialog-overlay", $.ui.dialog.overlay.resize ); + } + + var $el = ( this.oldInstances.pop() || $( "
    " ).addClass( "ui-widget-overlay" ) ); + + // 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 ) { + + dialog.close( event ); + event.preventDefault(); + } + }); + + $el.appendTo( document.body ).css({ + width: this.width(), + height: this.height() + }); + + if ( $.fn.bgiframe ) { + $el.bgiframe(); + } + + this.instances.push( $el ); + return $el; + }, + + destroy: function( $el ) { + var indexOf = $.inArray( $el, this.instances ), + maxZ = 0; + + if ( indexOf !== -1 ) { + this.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] ); + } + + if ( this.instances.length === 0 ) { + $( [ document, window ] ).unbind( ".dialog-overlay" ); + } + + $el.height( 0 ).width( 0 ).remove(); + + // 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" ) ); + }); + this.maxZ = maxZ; + }, + + 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 + ); + + if ( scrollHeight < offsetHeight ) { + return $( window ).height() + "px"; + } else { + return scrollHeight + "px"; + } + // handle "good" browsers + } else { + return $( document ).height() + "px"; + } + }, + + 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 + ); + + if ( scrollWidth < offsetWidth ) { + return $( window ).width() + "px"; + } else { + return scrollWidth + "px"; + } + // handle "good" browsers + } else { + return $( document ).width() + "px"; + } + }, + + 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 ); + }); + + $overlays.css({ + width: 0, + height: 0 + }).css({ + width: $.ui.dialog.overlay.width(), + height: $.ui.dialog.overlay.height() + }); + } +}); + +$.extend( $.ui.dialog.overlay.prototype, { + destroy: function() { + $.ui.dialog.overlay.destroy( this.$el ); + } +}); + +}( jQuery ) ); +(function( $, undefined ) { + +$.widget("ui.draggable", $.ui.mouse, { + version: "1.9.1", + widgetEventPrefix: "drag", + options: { + addClasses: true, + appendTo: "parent", + axis: false, + connectToSortable: false, + containment: false, + cursor: "auto", + cursorAt: false, + grid: false, + handle: false, + helper: "original", + iframeFix: false, + opacity: false, + refreshPositions: false, + revert: false, + revertDuration: 500, + scope: "default", + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + snap: false, + snapMode: "both", + snapTolerance: 20, + stack: false, + zIndex: false + }, + _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")); + + this._mouseInit(); + + }, + + _destroy: function() { + this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" ); + this._mouseDestroy(); + }, + + _mouseCapture: function(event) { + + var o = this.options; + + // among others, prevent a drag on a resizable-handle + if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle')) + return false; + + //Quit if we're not on a valid handle + this.handle = this._getHandle(event); + if (!this.handle) + return false; + + $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { + $('
    ') + .css({ + width: this.offsetWidth+"px", height: this.offsetHeight+"px", + position: "absolute", opacity: "0.001", zIndex: 1000 + }) + .css($(this).offset()) + .appendTo("body"); + }); + + return true; + + }, + + _mouseStart: function(event) { + + var o = this.options; + + //Create and append the visible helper + this.helper = this._createHelper(event); + + this.helper.addClass("ui-draggable-dragging"); + + //Cache the helper size + this._cacheHelperProportions(); + + //If ddmanager is used for droppables, set the global draggable + if($.ui.ddmanager) + $.ui.ddmanager.current = this; + + /* + * - Position generation - + * This block generates everything position related - it's the core of draggables. + */ + + //Cache the margins of the original element + this._cacheMargins(); + + //Store the helper's css position + this.cssPosition = this.helper.css("position"); + this.scrollParent = this.helper.scrollParent(); + + //The element's absolute position on the page minus margins + this.offset = this.positionAbs = this.element.offset(); + this.offset = { + top: this.offset.top - this.margins.top, + left: this.offset.left - this.margins.left + }; + + $.extend(this.offset, { + click: { //Where the click happened, relative to the element + left: event.pageX - this.offset.left, + top: event.pageY - this.offset.top + }, + parent: this._getParentOffset(), + relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper + }); + + //Generate the original position + this.originalPosition = this.position = this._generatePosition(event); + this.originalPageX = event.pageX; + this.originalPageY = event.pageY; + + //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(); + + //Trigger event + callbacks + if(this._trigger("start", event) === false) { + this._clear(); + return false; + } + + //Recache the helper size + this._cacheHelperProportions(); + + //Prepare the droppable offsets + 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); + + return true; + }, + + _mouseDrag: function(event, noPropagation) { + + //Compute the helpers position + this.position = this._generatePosition(event); + this.positionAbs = this._convertPositionTo("absolute"); + + //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) { + 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); + + return false; + }, + + _mouseStop: function(event) { + + //If we are using droppables, inform the manager about the drop + var 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) { + dropped = this.dropped; + this.dropped = false; + } + + //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" ) + 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; + $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() { + if(that._trigger("stop", event) !== false) { + that._clear(); + } + }); + } else { + if(this._trigger("stop", event) !== false) { + this._clear(); + } + } + + return false; + }, + + _mouseUp: function(event) { + //Remove frame helpers + $("div.ui-draggable-iframeFix").each(function() { + this.parentNode.removeChild(this); + }); + + //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003) + if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event); + + return $.ui.mouse.prototype._mouseUp.call(this, event); + }, + + cancel: function() { + + if(this.helper.is(".ui-draggable-dragging")) { + this._mouseUp({}); + } else { + this._clear(); + } + + return this; + + }, + + _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; + + }, + + _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); + + 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"))) + helper.css("position", "absolute"); + + return helper; + + }, + + _adjustOffsetFromHelper: function(obj) { + if (typeof obj == 'string') { + obj = obj.split(' '); + } + if ($.isArray(obj)) { + obj = {left: +obj[0], top: +obj[1] || 0}; + } + if ('left' in obj) { + this.offset.click.left = obj.left + this.margins.left; + } + if ('right' in obj) { + this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + } + if ('top' in obj) { + this.offset.click.top = obj.top + this.margins.top; + } + if ('bottom' in obj) { + this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + } + }, + + _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])) { + 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 + po = { top: 0, left: 0 }; + + return { + top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), + left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + }; + + }, + + _getRelativeOffset: function() { + + if(this.cssPosition == "relative") { + var p = this.element.position(); + return { + top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), + left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + }; + } else { + 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 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 + ]; + + 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'); + + 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 + ]; + this.relative_container = c; + + } else if(o.containment.constructor == Array) { + this.containment = o.containment; + } + + }, + + _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); + + 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) + ), + 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) + ) + }; + + }, + + _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; + + /* + * - 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(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; + + 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; + } + + } + + 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() ) )) + ), + 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() )) + ) + }; + + }, + + _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; + this.helper = null; + this.cancelHelperRemoval = false; + }, + + // From now on bulk stuff - mainly helpers + + _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 + return $.Widget.prototype._trigger.call(this, type, event, ui); + }, + + plugins: {}, + + _uiHash: function(event) { + return { + helper: this.helper, + position: this.position, + originalPosition: this.originalPosition, + offset: this.positionAbs + }; + } + +}); + +$.ui.plugin.add("draggable", "connectToSortable", { + start: function(event, ui) { + + var inst = $(this).data("draggable"), o = inst.options, + uiSortable = $.extend({}, ui, { item: inst.element }); + inst.sortables = []; + $(o.connectToSortable).each(function() { + var sortable = $.data(this, 'sortable'); + if (sortable && !sortable.options.disabled) { + inst.sortables.push({ + instance: sortable, + shouldRevert: sortable.options.revert + }); + sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page). + sortable._trigger("activate", event, uiSortable); + } + }); + + }, + 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"), + uiSortable = $.extend({}, ui, { item: inst.element }); + + $.each(inst.sortables, function() { + if(this.instance.isOver) { + + this.instance.isOver = 0; + + 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; + + //Trigger the stop of the sortable + this.instance._mouseStop(event); + + 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' }); + + } else { + this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance + this.instance._trigger("deactivate", event, uiSortable); + } + + }); + + }, + 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; + + return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth); + }; + + $.each(inst.sortables, function(i) { + + 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; + this.instance.offset.click = inst.offset.click; + + if(this.instance._intersectsWith(this.instance.containerCache)) { + innermostIntersecting = true; + $.each(inst.sortables, function () { + 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])) + innermostIntersecting = false; + return innermostIntersecting; + }); + } + + + if(innermostIntersecting) { + //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once + if(!this.instance.isOver) { + + this.instance.isOver = 1; + //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.options._helper = this.instance.options.helper; //Store helper option to later restore it + this.instance.options.helper = function() { return ui.helper[0]; }; + + event.target = this.instance.currentItem[0]; + this.instance._mouseCapture(event, true); + this.instance._mouseStart(event, true, true); + + //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes + this.instance.offset.click.top = inst.offset.click.top; + this.instance.offset.click.left = inst.offset.click.left; + this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left; + this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top; + + inst._trigger("toSortable", event); + inst.dropped = this.instance.element; //draggable revert needs that + //hack so receive/update callbacks work (mostly) + inst.currentItem = inst.element; + this.instance.fromOutside = inst; + + } + + //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); + + } else { + + //If it doesn't intersect with the sortable, and it intersected before, + //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval + if(this.instance.isOver) { + + this.instance.isOver = 0; + this.instance.cancelHelperRemoval = true; + + //Prevent reverting on this forced stop + 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._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(); + + inst._trigger("fromSortable", event); + inst.dropped = false; //draggable revert needs that + } + + }; + + }); + + } +}); + +$.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"); + t.css("cursor", o.cursor); + }, + stop: function(event, ui) { + var o = $(this).data('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); + }, + stop: function(event, ui) { + var o = $(this).data('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(); + }, + drag: function(event, ui) { + + var i = $(this).data("draggable"), o = i.options, scrolled = false; + + 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) + i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; + 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) + i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; + 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) + scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); + 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) + scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); + else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); + } + + } + + if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) + $.ui.ddmanager.prepareOffsets(i, event); + + } +}); + +$.ui.plugin.add("draggable", "snap", { + start: function(event, ui) { + + 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 + }); + }); + + }, + 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, + y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; + + for (var 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; + + //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 }))); + 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; + } + + var 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(!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; + + 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; + $(group).each(function(i) { + this.style.zIndex = min + i; + }); + + this[0].style.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); + }, + stop: function(event, ui) { + var o = $(this).data("draggable").options; + if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex); + } +}); + +})(jQuery); +(function( $, undefined ) { + +$.widget("ui.droppable", { + version: "1.9.1", + widgetEventPrefix: "drop", + options: { + accept: '*', + activeClass: false, + addClasses: true, + greedy: false, + hoverClass: false, + scope: 'default', + tolerance: 'intersect' + }, + _create: function() { + + var o = this.options, accept = o.accept; + this.isover = 0; this.isout = 1; + + 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 }; + + // Add the reference and positions to the manager + $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || []; + $.ui.ddmanager.droppables[o.scope].push(this); + + (o.addClasses && this.element.addClass("ui-droppable")); + + }, + + _destroy: function() { + var drop = $.ui.ddmanager.droppables[this.options.scope]; + for ( var i = 0; 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') { + this.accept = $.isFunction(value) ? value : function(d) { + return d.is(value); + }; + } + $.Widget.prototype._setOption.apply(this, arguments); + }, + + _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))); + }, + + _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))); + }, + + _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 + + 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)); + } + + }, + + _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 + + 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)); + } + + }, + + _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 childrenIntersection = false; + this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() { + var inst = $.data(this, '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) + ) { childrenIntersection = true; 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)); + return this.element; + } + + return false; + + }, + + ui: function(c) { + return { + draggable: (c.currentItem || c.element), + helper: c.helper, + position: c.position, + offset: c.positionAbs + }; + } + +}); + +$.ui.intersect = function(draggable, droppable, toleranceMode) { + + 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; + + 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': + 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; + default: + return false; + break; + } + +}; + +/* + This manager tracks offsets of draggables and droppables +*/ +$.ui.ddmanager = { + current: null, + 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(); + + droppablesLoop: for (var i = 0; i < m.length; i++) { + + 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 + + if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables + + m[i].offset = m[i].element.offset(); + m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight }; + + } + + }, + drop: function(draggable, event) { + + var dropped = false; + $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { + + 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._deactivate.call(this, event); + } + + }); + return dropped; + + }, + 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 ); + }); + }, + 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); + + //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); + + var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? '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; + }); + + if (parent.length) { + parentInstance = $.data(parent[0], 'droppable'); + parentInstance.greedyChild = (c == 'isover' ? 1 : 0); + } + } + + // we just moved into a greedy child + if (parentInstance && c == 'isover') { + parentInstance['isover'] = 0; + parentInstance['isout'] = 1; + parentInstance._out.call(parentInstance, event); + } + + this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0; + 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; + parentInstance._over.call(parentInstance, event); + } + }); + + }, + 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 ); + } +}; + +})(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( "

    " )[ 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.1", + + // 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 = $( "

    " ) + .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( "
    " ) + .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() + }; + + $.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 + } + }); + + 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 } : 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 + }; + + 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() + }; + if (restore) { + $.effects.save(child, props2); + } + + child.from = { + height: c_original.height * factor.from.y, + width: c_original.width * factor.from.x + }; + child.to = { + height: c_original.height * factor.to.y, + width: 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 = $( '
    ' ) + .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 ) { + +var mouseHandled = false; + +$.widget( "ui.menu", { + version: "1.9.1", + defaultElement: "
      ", + delay: 300, + options: { + icons: { + submenu: "ui-icon-carat-1-e" + }, + menus: "ul", + position: { + my: "left top", + at: "right top" + }, + role: "menu", + + // callbacks + 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 + }) + // need to catch all clicks on disabled menu + // not possible through _on + .bind( "click" + this.eventNamespace, $.proxy(function( event ) { + if ( this.options.disabled ) { + event.preventDefault(); + } + }, this )); + + if ( this.options.disabled ) { + this.element + .addClass( "ui-state-disabled" ) + .attr( "aria-disabled", "true" ); + } + + this._on({ + // Prevent focus from sticking to links inside menu after clicking + // them (focus should always stay on UL during navigation). + "mousedown .ui-menu-item > a": function( event ) { + event.preventDefault(); + }, + "click .ui-state-disabled > a": function( event ) { + event.preventDefault(); + }, + "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; + + this.select( event ); + // Open submenu on click + if ( target.has( ".ui-menu" ).length ) { + this.expand( event ); + } else if ( !this.element.is( ":focus" ) ) { + // Redirect focus to the menu + this.element.trigger( "focus", [ true ] ); + + // If the active item is on the top level, let it stay active. + // Otherwise, blur the active item since it is no longer visible. + if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { + clearTimeout( this.timer ); + } + } + } + }, + "mouseenter .ui-menu-item": function( event ) { + var target = $( event.currentTarget ); + // Remove ui-state-active class from siblings of the newly focused menu item + // to avoid a jump caused by adjacent elements both having a class with a border + target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" ); + this.focus( event, target ); + }, + mouseleave: "collapseAll", + "mouseleave .ui-menu": "collapseAll", + focus: function( event, keepActiveItem ) { + // If there's already an active item, keep it active + // If not, activate the first item + var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 ); + + if ( !keepActiveItem ) { + this.focus( event, item ); + } + }, + blur: function( event ) { + this._delay(function() { + if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { + this.collapseAll( event ); + } + }); + }, + keydown: "_keydown" + }); + + this.refresh(); + + // Clicks outside of a menu collapse any open menus + this._on( this.document, { + click: function( event ) { + if ( !$( event.target ).closest( ".ui-menu" ).length ) { + this.collapseAll( event ); + } + + // Reset the mouseHandled flag + mouseHandled = false; + } + }); + }, + + _destroy: function() { + // Destroy (sub)menus + 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(); + + // Destroy menu items + 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 elem = $( this ); + if ( elem.data( "ui-menu-submenu-carat" ) ) { + elem.remove(); + } + }); + + // Destroy menu dividers + this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); + }, + + _keydown: function( event ) { + var match, prev, character, skip, regex, + preventDefault = true; + + function escape( value ) { + return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); + } + + switch ( event.keyCode ) { + case $.ui.keyCode.PAGE_UP: + this.previousPage( event ); + break; + case $.ui.keyCode.PAGE_DOWN: + this.nextPage( event ); + break; + case $.ui.keyCode.HOME: + this._move( "first", "first", event ); + break; + case $.ui.keyCode.END: + this._move( "last", "last", event ); + break; + case $.ui.keyCode.UP: + this.previous( event ); + break; + case $.ui.keyCode.DOWN: + this.next( event ); + break; + case $.ui.keyCode.LEFT: + this.collapse( event ); + break; + case $.ui.keyCode.RIGHT: + if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { + this.expand( event ); + } + break; + case $.ui.keyCode.ENTER: + case $.ui.keyCode.SPACE: + this._activate( event ); + break; + case $.ui.keyCode.ESCAPE: + this.collapse( event ); + break; + default: + preventDefault = false; + prev = this.previousFilter || ""; + character = String.fromCharCode( event.keyCode ); + skip = false; + + clearTimeout( this.filterTimer ); + + if ( character === prev ) { + skip = true; + } else { + character = prev + character; + } + + regex = new RegExp( "^" + escape( character ), "i" ); + match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { + return regex.test( $( this ).children( "a" ).text() ); + }); + match = skip && match.index( this.active.next() ) !== -1 ? + this.active.nextAll( ".ui-menu-item" ) : + match; + + // If no matches on the current filter, reset to the last character pressed + // to move down the menu to the first item that starts with that character + if ( !match.length ) { + character = String.fromCharCode( event.keyCode ); + regex = new RegExp( "^" + escape( character ), "i" ); + match = this.activeMenu.children( ".ui-menu-item" ).filter(function() { + return regex.test( $( this ).children( "a" ).text() ); + }); + } + + if ( match.length ) { + this.focus( event, match ); + if ( match.length > 1 ) { + this.previousFilter = character; + this.filterTimer = this._delay(function() { + delete this.previousFilter; + }, 1000 ); + } else { + delete this.previousFilter; + } + } else { + delete this.previousFilter; + } + } + + if ( preventDefault ) { + event.preventDefault(); + } + }, + + _activate: function( event ) { + if ( !this.active.is( ".ui-state-disabled" ) ) { + if ( this.active.children( "a[aria-haspopup='true']" ).length ) { + this.expand( event ); + } else { + this.select( event ); + } + } + }, + + refresh: function() { + // Initialize nested menus + var menus, + icon = this.options.icons.submenu, + submenus = this.element.find( this.options.menus + ":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" + }); + + // Don't refresh list items that are already adapted + menus = submenus.add( this.element ); + + menus.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() + }); + + // Initialize unlinked menu-items containing spaces and/or dashes only as dividers + menus.children( ":not(.ui-menu-item)" ).each(function() { + var item = $( this ); + // hyphen, em dash, en dash + if ( !/[^\-—–\s]/.test( item.text() ) ) { + item.addClass( "ui-widget-content ui-menu-divider" ); + } + }); + + // Add aria-disabled attribute to any disabled menu item + menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); + + submenus.each(function() { + var menu = $( this ), + item = menu.prev( "a" ), + submenuCarat = $( "" ) + .addClass( "ui-menu-icon ui-icon " + icon ) + .data( "ui-menu-submenu-carat", true ); + + item + .attr( "aria-haspopup", "true" ) + .prepend( submenuCarat ); + menu.attr( "aria-labelledby", item.attr( "id" ) ); + }); + + // If the active item has been removed, blur the menu + if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + this.blur(); + } + }, + + _itemRole: function() { + return { + menu: "menuitem", + listbox: "option" + }[ this.options.role ]; + }, + + focus: function( event, item ) { + var nested, focused; + this.blur( event, event && event.type === "focus" ); + + this._scrollIntoView( item ); + + this.active = item.first(); + focused = this.active.children( "a" ).addClass( "ui-state-focus" ); + // Only update aria-activedescendant if there's a role + // otherwise we assume focus is managed elsewhere + if ( this.options.role ) { + this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); + } + + // Highlight active parent menu item, if any + this.active + .parent() + .closest( ".ui-menu-item" ) + .children( "a:first" ) + .addClass( "ui-state-active" ); + + if ( event && event.type === "keydown" ) { + this._close(); + } else { + this.timer = this._delay(function() { + this._close(); + }, this.delay ); + } + + nested = item.children( ".ui-menu" ); + if ( nested.length && ( /^mouse/.test( event.type ) ) ) { + this._startOpening(nested); + } + this.activeMenu = item.parent(); + + this._trigger( "focus", event, { item: item } ); + }, + + _scrollIntoView: function( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height(); + itemHeight = item.height(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }, + + blur: function( event, fromFocus ) { + if ( !fromFocus ) { + clearTimeout( this.timer ); + } + + if ( !this.active ) { + return; + } + + this.active.children( "a" ).removeClass( "ui-state-focus" ); + this.active = null; + + this._trigger( "blur", event, { item: this.active } ); + }, + + _startOpening: function( submenu ) { + clearTimeout( this.timer ); + + // Don't open if already open fixes a Firefox bug that caused a .5 pixel + // shift in the submenu position when mousing over the carat icon + if ( submenu.attr( "aria-hidden" ) !== "true" ) { + return; + } + + this.timer = this._delay(function() { + this._close(); + this._open( submenu ); + }, this.delay ); + }, + + _open: function( submenu ) { + var position = $.extend({ + of: this.active + }, this.options.position ); + + clearTimeout( this.timer ); + this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) + .hide() + .attr( "aria-hidden", "true" ); + + submenu + .show() + .removeAttr( "aria-hidden" ) + .attr( "aria-expanded", "true" ) + .position( position ); + }, + + collapseAll: function( event, all ) { + clearTimeout( this.timer ); + this.timer = this._delay(function() { + // If we were passed an event, look for the submenu that contains the event + var currentMenu = all ? this.element : + $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); + + // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway + if ( !currentMenu.length ) { + currentMenu = this.element; + } + + this._close( currentMenu ); + + this.blur( event ); + this.activeMenu = currentMenu; + }, this.delay ); + }, + + // With no arguments, closes the currently active menu - if nothing is active + // it closes all menus. If passed an argument, it will search for menus BELOW + _close: function( startMenu ) { + if ( !startMenu ) { + startMenu = this.active ? this.active.parent() : this.element; + } + + startMenu + .find( ".ui-menu" ) + .hide() + .attr( "aria-hidden", "true" ) + .attr( "aria-expanded", "false" ) + .end() + .find( "a.ui-state-active" ) + .removeClass( "ui-state-active" ); + }, + + collapse: function( event ) { + var newItem = this.active && + this.active.parent().closest( ".ui-menu-item", this.element ); + if ( newItem && newItem.length ) { + this._close(); + this.focus( event, newItem ); + } + }, + + expand: function( event ) { + var newItem = this.active && + this.active + .children( ".ui-menu " ) + .children( ".ui-menu-item" ) + .first(); + + if ( newItem && newItem.length ) { + this._open( newItem.parent() ); + + // Delay so Firefox will not hide activedescendant change in expanding submenu from AT + this._delay(function() { + this.focus( event, newItem ); + }); + } + }, + + next: function( event ) { + this._move( "next", "first", event ); + }, + + previous: function( event ) { + this._move( "prev", "last", event ); + }, + + 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( direction, filter, event ) { + var next; + if ( this.active ) { + if ( direction === "first" || direction === "last" ) { + next = this.active + [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) + .eq( -1 ); + } else { + next = this.active + [ direction + "All" ]( ".ui-menu-item" ) + .eq( 0 ); + } + } + if ( !next || !next.length || !this.active ) { + next = this.activeMenu.children( ".ui-menu-item" )[ filter ](); + } + + this.focus( event, next ); + }, + + nextPage: function( event ) { + var item, base, height; + + if ( !this.active ) { + this.next( event ); + return; + } + if ( this.isLastItem() ) { + return; + } + if ( this._hasScroll() ) { + base = this.active.offset().top; + height = this.element.height(); + this.active.nextAll( ".ui-menu-item" ).each(function() { + item = $( this ); + return item.offset().top - base - height < 0; + }); + + this.focus( event, item ); + } else { + this.focus( event, this.activeMenu.children( ".ui-menu-item" ) + [ !this.active ? "first" : "last" ]() ); + } + }, + + previousPage: function( event ) { + var item, base, height; + if ( !this.active ) { + this.next( event ); + return; + } + if ( this.isFirstItem() ) { + return; + } + if ( this._hasScroll() ) { + base = this.active.offset().top; + height = this.element.height(); + this.active.prevAll( ".ui-menu-item" ).each(function() { + item = $( this ); + return item.offset().top - base + height > 0; + }); + + this.focus( event, item ); + } else { + this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() ); + } + }, + + _hasScroll: function() { + return this.element.outerHeight() < this.element.prop( "scrollHeight" ); + }, + + select: function( event ) { + // TODO: It should never be possible to not have an active item at this + // point, but the tests don't trigger mouseenter before click. + this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); + var ui = { item: this.active }; + if ( !this.active.has( ".ui-menu" ).length ) { + this.collapseAll( event, true ); + } + this._trigger( "select", event, ui ); + } +}); + +}( jQuery )); +(function( $, undefined ) { + +$.widget( "ui.progressbar", { + version: "1.9.1", + 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 = $( "
      " ) + .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( newValue ) { + if ( newValue === undefined ) { + return this._value(); + } + + this._setOption( "value", newValue ); + return this; + }, + + _setOption: function( key, value ) { + if ( key === "value" ) { + this.options.value = value; + this._refreshValue(); + if ( this._value() === this.options.max ) { + this._trigger( "complete" ); + } + } + + this._super( key, value ); + }, + + _value: function() { + var val = this.options.value; + // normalize invalid value + if ( typeof val !== "number" ) { + val = 0; + } + return Math.min( this.options.max, Math.max( this.min, val ) ); + }, + + _percentage: function() { + return 100 * this._value() / this.options.max; + }, + + _refreshValue: function() { + var value = this.value(), + percentage = this._percentage(); + + 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 ); + } +}); + +})( jQuery ); +(function( $, undefined ) { + +$.widget("ui.resizable", $.ui.mouse, { + version: "1.9.1", + widgetEventPrefix: "resize", + options: { + alsoResize: false, + animate: false, + animateDuration: "slow", + animateEasing: "swing", + aspectRatio: false, + autoHide: false, + containment: false, + ghost: false, + grid: false, + handles: "e,s,se", + helper: false, + maxHeight: null, + maxWidth: null, + minHeight: 10, + minWidth: 10, + zIndex: 1000 + }, + _create: function() { + + var that = this, o = this.options; + this.element.addClass("ui-resizable"); + + $.extend(this, { + _aspectRatio: !!(o.aspectRatio), + aspectRatio: o.aspectRatio, + originalElement: this.element, + _proportionallyResizeElements: [], + _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null + }); + + //Wrap the element if it cannot hold child nodes + if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { + + //Create a wrapper element and set the wrapper to the new current internal element + this.element.wrap( + $('
      ').css({ + position: this.element.css('position'), + width: this.element.outerWidth(), + height: this.element.outerHeight(), + 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') + ); + + this.elementIsWrapper = true; + + //Move margins to the wrapper + 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}); + + //Prevent Safari textarea resize + 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' })); + + // avoid IE jump (hard set the 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) { + + if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw'; + var n = this.handles.split(","); this.handles = {}; + + for(var i = 0; i < n.length; i++) { + + var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle; + var axis = $('
      '); + + // 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'); + }; + + //Insert into internal handles object and append to element + this.handles[handle] = '.ui-resizable-'+handle; + this.element.append(axis); + } + + } + + this._renderAxis = function(target) { + + target = target || this.element; + + for(var i in this.handles) { + + 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; + + //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(""); + + target.css(padPos, padWrapper); + + this._proportionallyResize(); + + } + + //TODO: What's that good for? There's not anything to be executed left + if(!$(this.handles[i]).length) + continue; + + } + }; + + //TODO: make renderAxis a prototype function + this._renderAxis(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); + //Axis, default = se + that.axis = axis && axis[1] ? axis[1] : 'se'; + } + }); + + //If we want to auto hide the elements + if (o.autoHide) { + this._handles.hide(); + $(this.element) + .addClass("ui-resizable-autohide") + .mouseenter(function() { + if (o.disabled) return; + $(this).removeClass("ui-resizable-autohide"); + that._handles.show(); + }) + .mouseleave(function(){ + if (o.disabled) return; + if (!that.resizing) { + $(this).addClass("ui-resizable-autohide"); + that._handles.hide(); + } + }); + } + + //Initialize the mouse interaction + this._mouseInit(); + + }, + + _destroy: function() { + + 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(); + }; + + //TODO: Unwrap at same DOM position + if (this.elementIsWrapper) { + _destroy(this.element); + var wrapper = this.element; + this.originalElement.css({ + position: wrapper.css('position'), + width: wrapper.outerWidth(), + height: wrapper.outerHeight(), + top: wrapper.css('top'), + left: wrapper.css('left') + }).insertAfter( wrapper ); + wrapper.remove(); + } + + 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; + } + } + + return !this.options.disabled && handle; + }, + + _mouseStart: function(event) { + + var 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 }); + } + + this._renderProxy(); + + var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top')); + + if (o.containment) { + curleft += $(o.containment).scrollLeft() || 0; + curtop += $(o.containment).scrollTop() || 0; + } + + //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.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); + + var 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); + return true; + }, + + _mouseDrag: function(event) { + + //Increase performance, avoid regex + var el = this.helper, o = this.options, props = {}, + that = this, smp = this.originalMousePosition, a = this.axis; + + var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0; + var trigger = this._change[a]; + if (!trigger) return false; + + // Calculate the attrs that will be change + var 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) + data = this._updateRatio(data, event); + + data = this._respectSize(data, event); + + // 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._helper && this._proportionallyResizeElements.length) + this._proportionallyResize(); + + this._updateCache(data); + + // calling the user callback at the end + this._trigger('resize', event, this.ui()); + + return false; + }, + + _mouseStop: function(event) { + + this.resizing = false; + var 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; + + 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(); + } + + $('body').css('cursor', 'auto'); + + this.element.removeClass("ui-resizable-resizing"); + + this._propagate("stop", event); + + if (this._helper) this.helper.remove(); + return false; + + }, + + _updateVirtualBoundaries: function(forceAspectRatio) { + var o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b; + + b = { + minWidth: isNumber(o.minWidth) ? o.minWidth : 0, + maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, + minHeight: isNumber(o.minHeight) ? o.minHeight : 0, + maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity + }; + + if(this._aspectRatio || forceAspectRatio) { + // We want to create an enclosing box whose aspect ration is the requested one + // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension + pMinWidth = b.minHeight * this.aspectRatio; + pMinHeight = b.minWidth / this.aspectRatio; + 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; + } + 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; + }, + + _updateRatio: function(data, event) { + + var o = this.options, 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 (a == 'sw') { + data.left = cpos.left + (csize.width - data.width); + data.top = null; + } + if (a == 'nw') { + data.top = cpos.top + (csize.height - data.height); + data.left = cpos.left + (csize.width - data.width); + } + + 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); + + 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); + + 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; + + return data; + }, + + _proportionallyResize: function() { + + var o = this.options; + if (!this._proportionallyResizeElements.length) return; + var element = this.helper || this.element; + + for (var i=0; i < this._proportionallyResizeElements.length; i++) { + + var 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 = $.map(b, function(v, i) { + var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0; + return border + padding; + }); + } + + prel.css({ + height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, + width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 + }); + + }; + + }, + + _renderProxy: function() { + + var el = this.element, o = this.options; + this.elementOffset = el.offset(); + + if(this._helper) { + + this.helper = this.helper || $('
      '); + + // fix ie6 offset TODO: This seems broken + var ie6offset = ($.ui.ie6 ? 1 : 0), + pxyoffset = ( $.ui.ie6 ? 2 : -1 ); + + 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', + zIndex: ++o.zIndex //TODO: Don't modify option + }); + + this.helper + .appendTo("body") + .disableSelection(); + + } else { + this.helper = this.element; + } + + }, + + _change: { + e: function(event, dx, dy) { + return { width: this.originalSize.width + dx }; + }, + w: function(event, dx, dy) { + var o = this.options, 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; + return { top: sp.top + dy, height: cs.height - dy }; + }, + s: function(event, dx, dy) { + return { height: this.originalSize.height + dy }; + }, + se: function(event, dx, dy) { + return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); + }, + sw: function(event, dx, dy) { + return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); + }, + ne: function(event, dx, dy) { + return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); + }, + nw: function(event, dx, dy) { + return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); + } + }, + + _propagate: function(n, event) { + $.ui.plugin.call(this, n, [event, this.ui()]); + (n != "resize" && this._trigger(n, event, 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 + }; + } + +}); + +/* + * 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; + + that.element.animate( + $.extend(style, top && left ? { top: top, left: left } : {}), { + duration: o.animateDuration, + easing: o.animateEasing, + 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) + }; + + 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); + that._propagate("resize", event); + + } + } + ); + } + +}); + +$.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; + + that.containerElement = $(ce); + + if (/document/.test(oc) || oc == document) { + that.containerOffset = { left: 0, top: 0 }; + that.containerPosition = { left: 0, top: 0 }; + + that.parentData = { + element: $(document), left: 0, top: 0, + width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight + }; + } + + // i'm a node, so compute top, left, right, bottom + else { + var 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); + + that.parentData = { + element: ce, left: co.left, top: co.top, width: width, height: height + }; + } + }, + + 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; + + 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; + 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; + 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 ); + + var 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 (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 (hoset + that.size.height >= that.parentData.height) { + that.size.height = that.parentData.height - hoset; + 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; + + 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'))) + $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); + + } +}); + +$.ui.plugin.add("resizable", "ghost", { + + start: function(event, ui) { + + var that = $(this).data("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 : ''); + + 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 }); + }, + + 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)); + } + +}); + +$.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); + + if (/^(se|s|e)$/.test(a)) { + that.size.width = os.width + ox; + that.size.height = os.height + oy; + } + else if (/^(ne)$/.test(a)) { + that.size.width = os.width + ox; + that.size.height = os.height + oy; + that.position.top = op.top - oy; + } + else if (/^(sw)$/.test(a)) { + that.size.width = os.width + ox; + that.size.height = os.height + oy; + that.position.left = op.left - ox; + } + else { + that.size.width = os.width + ox; + that.size.height = os.height + oy; + that.position.top = op.top - oy; + that.position.left = op.left - ox; + } + } + +}); + +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.1", + options: { + appendTo: 'body', + autoRefresh: true, + distance: 0, + filter: '*', + tolerance: 'touch' + }, + _create: function() { + var 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(); + $.data(this, "selectable-item", { + element: this, + $element: $this, + left: pos.left, + top: pos.top, + 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') + }); + }); + }; + this.refresh(); + + this.selectees = selectees.addClass("ui-selectee"); + + this._mouseInit(); + + this.helper = $("
      "); + }, + + _destroy: function() { + this.selectees + .removeClass("ui-selectee") + .removeData("selectable-item"); + this.element + .removeClass("ui-selectable ui-selectable-disabled"); + this._mouseDestroy(); + }, + + _mouseStart: function(event) { + var that = this; + + this.opos = [event.pageX, event.pageY]; + + if (this.options.disabled) + return; + + var options = this.options; + + this.selectees = $(options.filter, this.element[0]); + + this._trigger("start", event); + + $(options.appendTo).append(this.helper); + // position helper (lasso) + this.helper.css({ + "left": event.clientX, + "top": event.clientY, + "width": 0, + "height": 0 + }); + + if (options.autoRefresh) { + this.refresh(); + } + + 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.selected = false; + selectee.$element.addClass('ui-unselecting'); + selectee.unselecting = true; + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + }); + + $(event.target).parents().andSelf().each(function() { + var selectee = $.data(this, "selectable-item"); + if (selectee) { + var doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected'); + selectee.$element + .removeClass(doSelect ? "ui-unselecting" : "ui-selected") + .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); + selectee.unselecting = !doSelect; + selectee.selecting = doSelect; + selectee.selected = doSelect; + // selectable (UN)SELECTING callback + if (doSelect) { + that._trigger("selecting", event, { + selecting: selectee.element + }); + } else { + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + return false; + } + }); + + }, + + _mouseDrag: function(event) { + var that = this; + this.dragged = true; + + if (this.options.disabled) + return; + + var options = this.options; + + 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; } + this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); + + this.selectees.each(function() { + var selectee = $.data(this, "selectable-item"); + //prevent helper from being selected if appendTo: selectable + if (!selectee || selectee.element == that.element[0]) + return; + var hit = false; + if (options.tolerance == 'touch') { + hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); + } 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.selected = false; + } + if (selectee.unselecting) { + selectee.$element.removeClass('ui-unselecting'); + selectee.unselecting = false; + } + if (!selectee.selecting) { + selectee.$element.addClass('ui-selecting'); + selectee.selecting = true; + // selectable SELECTING callback + that._trigger("selecting", event, { + selecting: selectee.element + }); + } + } else { + // UNSELECT + if (selectee.selecting) { + if ((event.metaKey || event.ctrlKey) && selectee.startselected) { + selectee.$element.removeClass('ui-selecting'); + selectee.selecting = false; + selectee.$element.addClass('ui-selected'); + selectee.selected = true; + } else { + selectee.$element.removeClass('ui-selecting'); + selectee.selecting = false; + if (selectee.startselected) { + selectee.$element.addClass('ui-unselecting'); + selectee.unselecting = true; + } + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + } + if (selectee.selected) { + if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { + selectee.$element.removeClass('ui-selected'); + selectee.selected = false; + + selectee.$element.addClass('ui-unselecting'); + selectee.unselecting = true; + // selectable UNSELECTING callback + that._trigger("unselecting", event, { + unselecting: selectee.element + }); + } + } + } + }); + + return false; + }, + + _mouseStop: function(event) { + var that = this; + + this.dragged = false; + + var options = this.options; + + $('.ui-unselecting', this.element[0]).each(function() { + var selectee = $.data(this, "selectable-item"); + 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() { + var selectee = $.data(this, "selectable-item"); + selectee.$element.removeClass('ui-selecting').addClass('ui-selected'); + selectee.selecting = false; + selectee.selected = true; + selectee.startselected = true; + that._trigger("selected", event, { + selected: selectee.element + }); + }); + this._trigger("stop", event); + + this.helper.remove(); + + return false; + } + +}); + +})(jQuery); +(function( $, undefined ) { + +// number of pages in a slider +// (how many times can you page up/down to go through the whole range) +var numPages = 5; + +$.widget( "ui.slider", $.ui.mouse, { + version: "1.9.1", + widgetEventPrefix: "slide", + + options: { + animate: false, + distance: 0, + max: 100, + min: 0, + orientation: "horizontal", + range: false, + step: 1, + value: 0, + values: null + }, + + _create: function() { + var i, handleCount, + o = this.options, + existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), + handle = "", + handles = []; + + this._keySliding = false; + this._mouseSliding = false; + this._animateOff = true; + this._handleIndex = null; + this._detectOrientation(); + this._mouseInit(); + + this.element + .addClass( "ui-slider" + + " ui-slider-" + this.orientation + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" + + ( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) ); + + this.range = $([]); + + 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.range = $( "
      " ) + .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 : "" ) ); + } + + handleCount = ( o.values && o.values.length ) || 1; + + for ( i = existingHandles.length; i < handleCount; i++ ) { + handles.push( handle ); + } + + this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) ); + + 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; + } + + 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 ); + }, + 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" ); + } + } + }); + + this._refreshValue(); + + this._animateOff = false; + }, + + _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( event ) { + var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, + that = this, + o = this.options; + + if ( o.disabled ) { + return false; + } + + this.elementSize = { + width: this.element.outerWidth(), + height: this.element.outerHeight() + }; + this.elementOffset = this.element.offset(); + + position = { x: event.pageX, y: event.pageY }; + normValue = this._normValueFromMouse( position ); + distance = this._valueMax() - this._valueMin() + 1; + this.handles.each(function( i ) { + var thisDistance = Math.abs( normValue - that.values(i) ); + if ( distance > thisDistance ) { + 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; + } + this._mouseSliding = true; + + this._handleIndex = index; + + closestHandle + .addClass( "ui-state-active" ) + .focus(); + + offset = closestHandle.offset(); + mouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" ); + this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { + left: event.pageX - offset.left - ( closestHandle.width() / 2 ), + top: event.pageY - offset.top - + ( closestHandle.height() / 2 ) - + ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - + ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + + ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) + }; + + if ( !this.handles.hasClass( "ui-state-hover" ) ) { + this._slide( event, index, normValue ); + } + this._animateOff = true; + return true; + }, + + _mouseStart: function() { + return true; + }, + + _mouseDrag: function( event ) { + var position = { x: event.pageX, y: event.pageY }, + normValue = this._normValueFromMouse( position ); + + this._slide( event, this._handleIndex, normValue ); + + return false; + }, + + _mouseStop: function( event ) { + this.handles.removeClass( "ui-state-active" ); + this._mouseSliding = false; + + this._stop( event, this._handleIndex ); + this._change( event, this._handleIndex ); + + this._handleIndex = null; + this._clickOffset = null; + this._animateOff = false; + + return false; + }, + + _detectOrientation: function() { + this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; + }, + + _normValueFromMouse: function( position ) { + var pixelTotal, + pixelMouse, + percentMouse, + valueTotal, + valueMouse; + + if ( this.orientation === "horizontal" ) { + pixelTotal = this.elementSize.width; + pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); + } else { + pixelTotal = this.elementSize.height; + pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); + } + + percentMouse = ( pixelMouse / pixelTotal ); + if ( percentMouse > 1 ) { + percentMouse = 1; + } + if ( percentMouse < 0 ) { + percentMouse = 0; + } + if ( this.orientation === "vertical" ) { + percentMouse = 1 - percentMouse; + } + + valueTotal = this._valueMax() - this._valueMin(); + valueMouse = this._valueMin() + percentMouse * valueTotal; + + return this._trimAlignValue( valueMouse ); + }, + + _start: function( event, index ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + return this._trigger( "start", event, uiHash ); + }, + + _slide: function( event, index, newVal ) { + var otherVal, + newValues, + allowed; + + if ( this.options.values && this.options.values.length ) { + otherVal = this.values( index ? 0 : 1 ); + + if ( ( this.options.values.length === 2 && this.options.range === true ) && + ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) + ) { + newVal = otherVal; + } + + if ( newVal !== this.values( index ) ) { + newValues = this.values(); + newValues[ index ] = newVal; + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: newVal, + values: newValues + } ); + otherVal = this.values( index ? 0 : 1 ); + if ( allowed !== false ) { + this.values( index, newVal, true ); + } + } + } else { + if ( newVal !== this.value() ) { + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: newVal + } ); + if ( allowed !== false ) { + this.value( newVal ); + } + } + } + }, + + _stop: function( event, index ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + + this._trigger( "stop", event, uiHash ); + }, + + _change: function( event, index ) { + if ( !this._keySliding && !this._mouseSliding ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + + this._trigger( "change", event, uiHash ); + } + }, + + value: function( newValue ) { + if ( arguments.length ) { + this.options.value = this._trimAlignValue( newValue ); + this._refreshValue(); + this._change( null, 0 ); + return; + } + + return this._value(); + }, + + values: function( index, newValue ) { + var vals, + newValues, + i; + + if ( arguments.length > 1 ) { + this.options.values[ index ] = this._trimAlignValue( newValue ); + this._refreshValue(); + this._change( null, index ); + return; + } + + if ( arguments.length ) { + if ( $.isArray( arguments[ 0 ] ) ) { + vals = this.options.values; + newValues = arguments[ 0 ]; + for ( i = 0; i < vals.length; i += 1 ) { + vals[ i ] = this._trimAlignValue( newValues[ i ] ); + this._change( null, i ); + } + this._refreshValue(); + } else { + if ( this.options.values && this.options.values.length ) { + return this._values( index ); + } else { + return this.value(); + } + } + } else { + return this._values(); + } + }, + + _setOption: function( key, value ) { + var i, + valsLength = 0; + + if ( $.isArray( this.options.values ) ) { + valsLength = this.options.values.length; + } + + $.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 + .removeClass( "ui-slider-horizontal ui-slider-vertical" ) + .addClass( "ui-slider-" + this.orientation ); + this._refreshValue(); + break; + case "value": + this._animateOff = true; + this._refreshValue(); + this._change( null, 0 ); + this._animateOff = false; + break; + case "values": + this._animateOff = true; + this._refreshValue(); + for ( i = 0; i < valsLength; i += 1 ) { + this._change( null, i ); + } + this._animateOff = false; + break; + case "min": + case "max": + this._animateOff = true; + this._refreshValue(); + this._animateOff = false; + break; + } + }, + + //internal value getter + // _value() returns value trimmed by min and max, aligned by step + _value: function() { + var val = this.options.value; + val = this._trimAlignValue( val ); + + return val; + }, + + //internal values getter + // _values() returns array of values trimmed by min and max, aligned by step + // _values( index ) returns single value trimmed by min and max, aligned by step + _values: function( index ) { + var val, + vals, + i; + + if ( arguments.length ) { + val = this.options.values[ index ]; + val = this._trimAlignValue( val ); + + return val; + } else { + // .slice() creates a copy of the array + // this copy gets trimmed by min and max and then returned + vals = this.options.values.slice(); + for ( i = 0; i < vals.length; i+= 1) { + vals[ i ] = this._trimAlignValue( vals[ i ] ); + } + + return vals; + } + }, + + // returns the step-aligned value that val is closest to, between (inclusive) min and max + _trimAlignValue: function( val ) { + if ( val <= this._valueMin() ) { + return this._valueMin(); + } + if ( val >= this._valueMax() ) { + return this._valueMax(); + } + var step = ( this.options.step > 0 ) ? this.options.step : 1, + valModStep = (val - this._valueMin()) % step, + alignValue = val - valModStep; + + if ( Math.abs(valModStep) * 2 >= step ) { + alignValue += ( valModStep > 0 ) ? step : ( -step ); + } + + // Since JavaScript has problems with large floats, round + // the final value to 5 digits after the decimal point (see #4124) + return parseFloat( alignValue.toFixed(5) ); + }, + + _valueMin: function() { + return this.options.min; + }, + + _valueMax: function() { + return this.options.max; + }, + + _refreshValue: function() { + var lastValPercent, valPercent, value, valueMin, valueMax, + oRange = this.options.range, + o = this.options, + that = this, + animate = ( !this._animateOff ) ? o.animate : false, + _set = {}; + + if ( this.options.values && this.options.values.length ) { + this.handles.each(function( i ) { + valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100; + _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + if ( that.options.range === true ) { + if ( that.orientation === "horizontal" ) { + if ( i === 0 ) { + that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); + } + if ( i === 1 ) { + that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } else { + if ( i === 0 ) { + that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); + } + if ( i === 1 ) { + that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } + } + lastValPercent = valPercent; + }); + } else { + value = this.value(); + valueMin = this._valueMin(); + valueMax = this._valueMax(); + valPercent = ( valueMax !== valueMin ) ? + ( value - valueMin ) / ( valueMax - valueMin ) * 100 : + 0; + _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + + if ( oRange === "min" && this.orientation === "horizontal" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "horizontal" ) { + this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + if ( oRange === "min" && this.orientation === "vertical" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "vertical" ) { + this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } + } + +}); + +}(jQuery)); +(function( $, undefined ) { + +$.widget("ui.sortable", $.ui.mouse, { + version: "1.9.1", + widgetEventPrefix: "sort", + ready: false, + options: { + appendTo: "parent", + axis: false, + connectWith: false, + containment: false, + cursor: 'auto', + cursorAt: false, + dropOnEmpty: true, + forcePlaceholderSize: false, + forceHelperSize: false, + grid: false, + handle: false, + helper: "original", + items: '> *', + opacity: false, + placeholder: false, + revert: false, + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + scope: "default", + tolerance: "intersect", + zIndex: 1000 + }, + _create: function() { + + var o = this.options; + this.containerCache = {}; + this.element.addClass("ui-sortable"); + + //Get the items + 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; + + //Let's determine the parent's offset + this.offset = this.element.offset(); + + //Initialize mouse events for interaction + this._mouseInit(); + + //We're ready to go + this.ready = true + + }, + + _destroy: function() { + this.element + .removeClass("ui-sortable ui-sortable-disabled"); + this._mouseDestroy(); + + for ( var i = this.items.length - 1; i >= 0; i-- ) + this.items[i].item.removeData(this.widgetName + "-item"); + + return this; + }, + + _setOption: function(key, value){ + if ( key === "disabled" ) { + this.options[ key ] = value; + + this.widget().toggleClass( "ui-sortable-disabled", !!value ); + } else { + // Don't call widget base _setOption for disable as it adds ui-state-disabled class + $.Widget.prototype._setOption.apply(this, arguments); + } + }, + + _mouseCapture: function(event, overrideHandle) { + var that = this; + + if (this.reverting) { + 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) { + currentItem = $(this); + return false; + } + }); + if($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target); + + 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.currentItem = currentItem; + this._removeCurrentsFromItems(); + return true; + + }, + + _mouseStart: function(event, overrideHandle, noActivation) { + + var o = this.options; + this.currentContainer = this; + + //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture + this.refreshPositions(); + + //Create and append the visible helper + this.helper = this._createHelper(event); + + //Cache the helper size + this._cacheHelperProportions(); + + /* + * - Position generation - + * This block generates everything position related - it's the core of draggables. + */ + + //Cache the margins of the original element + this._cacheMargins(); + + //Get the next scrolling parent + this.scrollParent = this.helper.scrollParent(); + + //The element's absolute position on the page minus margins + this.offset = this.currentItem.offset(); + this.offset = { + top: this.offset.top - this.margins.top, + left: this.offset.left - this.margins.left + }; + + $.extend(this.offset, { + click: { //Where the click happened, relative to the element + left: event.pageX - this.offset.left, + top: event.pageY - this.offset.top + }, + parent: this._getParentOffset(), + relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper + }); + + // Only after we got the offset, we can change the helper's position to absolute + // TODO: Still need to figure out a way to make relative sorting possible + this.helper.css("position", "absolute"); + this.cssPosition = this.helper.css("position"); + + //Generate the original position + this.originalPosition = this._generatePosition(event); + this.originalPageX = event.pageX; + this.originalPageY = event.pageY; + + //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]) { + this.currentItem.hide(); + } + + //Create the placeholder + this._createPlaceholder(); + + //Set a containment if given in the options + 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.opacity) { // opacity option + 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"); + this.helper.css("zIndex", o.zIndex); + } + + //Prepare scrolling + 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) + 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)); } + } + + //Prepare possible droppables + if($.ui.ddmanager) + $.ui.ddmanager.current = this; + + if ($.ui.ddmanager && !o.dropBehaviour) + $.ui.ddmanager.prepareOffsets(this, event); + + this.dragging = true; + + this.helper.addClass("ui-sortable-helper"); + this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position + return true; + + }, + + _mouseDrag: function(event) { + + //Compute the helpers position + this.position = this._generatePosition(event); + this.positionAbs = this._convertPositionTo("absolute"); + + if (!this.lastPositionAbs) { + this.lastPositionAbs = this.positionAbs; + } + + //Do scrolling + if(this.options.scroll) { + var o = this.options, scrolled = false; + if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') { + + 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) + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; + + 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) + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; + + } else { + + if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) + scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); + else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) + scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); + + if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); + else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); + + } + + 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'; + + //Rearrange + for (var 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; + + // Only put the placeholder inside the current Container, skip all + // items form 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; + + 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 + ) { + + this.direction = intersection == 1 ? "down" : "up"; + + if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) { + this._rearrange(event, item); + } else { + break; + } + + this._trigger("change", event, this._uiHash()); + break; + } + } + + //Post events to containers + this._contactContainers(event); + + //Interconnect with droppables + if($.ui.ddmanager) $.ui.ddmanager.drag(this, event); + + //Call callbacks + this._trigger('sort', event, this._uiHash()); + + this.lastPositionAbs = this.positionAbs; + return false; + + }, + + _mouseStop: function(event, noPropagation) { + + if(!event) return; + + //If we are using droppables, inform the manager about the drop + if ($.ui.ddmanager && !this.options.dropBehaviour) + $.ui.ddmanager.drop(this, event); + + if(this.options.revert) { + var that = this; + var cur = this.placeholder.offset(); + + 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() { + that._clear(event); + }); + } else { + this._clear(event, noPropagation); + } + + return false; + + }, + + cancel: function() { + + if(this.dragging) { + + this._mouseUp({ target: null }); + + if(this.options.helper == "original") + this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); + else + this.currentItem.show(); + + //Post deactivating events to containers + for (var i = this.containers.length - 1; i >= 0; i--){ + this.containers[i]._trigger("deactivate", null, this._uiHash(this)); + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", null, this._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + } + + 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(); + + $.extend(this, { + helper: null, + dragging: false, + reverting: false, + _noFinalSort: null + }); + + if(this.domPosition.prev) { + $(this.domPosition.prev).after(this.currentItem); + } else { + $(this.domPosition.parent).prepend(this.currentItem); + } + } + + return this; + + }, + + serialize: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected); + var 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])); + }); + + if(!str.length && o.key) { + str.push(o.key + '='); + } + + return str.join('&'); + + }, + + toArray: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected); + var ret = []; o = o || {}; + + items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); }); + return ret; + + }, + + /* Be careful with the following core functions */ + _intersectsWith: function(item) { + + var x1 = this.positionAbs.left, + x2 = x1 + this.helperProportions.width, + y1 = this.positionAbs.top, + y2 = y1 + this.helperProportions.height; + + var l = item.left, + r = l + item.width, + t = item.top, + b = t + item.height; + + 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']) + ) { + 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 + + } + }, + + _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), + isOverElement = isOverElementHeight && isOverElementWidth, + verticalDirection = this._getDragVerticalDirection(), + horizontalDirection = this._getDragHorizontalDirection(); + + if (!isOverElement) + return false; + + return this.floating ? + ( ((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), + verticalDirection = this._getDragVerticalDirection(), + horizontalDirection = this._getDragHorizontalDirection(); + + if (this.floating && horizontalDirection) { + return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf)); + } else { + 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"); + }, + + _getDragHorizontalDirection: function() { + var delta = this.positionAbs.left - this.lastPositionAbs.left; + return delta != 0 && (delta > 0 ? "right" : "left"); + }, + + refresh: function(event) { + this._refreshItems(event); + this.refreshPositions(); + return this; + }, + + _connectWith: function() { + var options = this.options; + return options.connectWith.constructor == String + ? [options.connectWith] + : options.connectWith; + }, + + _getItemsAsjQuery: function(connected) { + + var items = []; + var queries = []; + var 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]); + } + }; + }; + } + + 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); + }); + }; + + return $(items); + + }, + + _removeCurrentsFromItems: function() { + + var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); + + this.items = $.grep(this.items, function (item) { + for (var j=0; j < list.length; j++) { + if(list[j] == item.item[0]) + return false; + }; + return true; + }); + + }, + + _refreshItems: function(event) { + + 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(); + + 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) { + 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 (var j=0, queriesLength = _queries.length; j < queriesLength; j++) { + var item = $(_queries[j]); + + item.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager) + + items.push({ + item: item, + instance: targetData, + width: 0, height: 0, + left: 0, top: 0 + }); + }; + }; + + }, + + refreshPositions: function(fast) { + + //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change + if(this.offsetParent && this.helper) { + this.offset.parent = this._getParentOffset(); + } + + for (var i = this.items.length - 1; i >= 0; i--){ + var 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]) + continue; + + var 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(); + 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(); + 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; + }, + + _createPlaceholder: function(that) { + that = that || this; + var o = that.options; + + if(!o.placeholder || o.placeholder.constructor == String) { + var 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]; + + if(!className) + el.style.visibility = "hidden"; + + return el; + }, + 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 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)); }; + } + }; + } + + //Create the placeholder + that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); + + //Append it after the actual current item + that.currentItem.after(that.placeholder); + + //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) + o.placeholder.update(that, that.placeholder); + + }, + + _contactContainers: function(event) { + + // get innermost container that intersects with item + var innermostContainer = null, innermostIndex = null; + + + for (var 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])) + 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])) + continue; + + innermostContainer = this.containers[i]; + innermostIndex = i; + + } else { + // container doesn't intersect. trigger "out" event if necessary + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", event, this._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + } + + // if no intersecting containers found, 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; + } 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; + if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ + nearBottom = true; + cur += this.items[j][sizeProperty]; + } + + if(Math.abs(cur - base) < dist) { + dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; + this.direction = nearBottom ? "up": "down"; + } + } + + if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled + 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)); + + //Update the placeholder + this.options.placeholder.update(this.currentContainer, this.placeholder); + + this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); + this.containers[innermostIndex].containerCache.over = 1; + } + + + }, + + _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); + + 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]); + + 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()); + + return helper; + + }, + + _adjustOffsetFromHelper: function(obj) { + if (typeof obj == 'string') { + obj = obj.split(' '); + } + if ($.isArray(obj)) { + obj = {left: +obj[0], top: +obj[1] || 0}; + } + if ('left' in obj) { + this.offset.click.left = obj.left + this.margins.left; + } + if ('right' in obj) { + this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + } + if ('top' in obj) { + this.offset.click.top = obj.top + this.margins.top; + } + if ('bottom' in obj) { + this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + } + }, + + _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])) { + 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 + po = { top: 0, left: 0 }; + + return { + top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), + left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + }; + + }, + + _getRelativeOffset: function() { + + if(this.cssPosition == "relative") { + var p = this.currentItem.position(); + return { + top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), + left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + }; + } else { + 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 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'); + + this.containment = [ + co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, + co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, + co.left+(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, + co.top+(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 + ]; + } + + }, + + _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); + + 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) + ), + 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) + ) + }; + + }, + + _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); + + // 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])) { + this.offset.relative = this._getRelativeOffset(); + } + + var pageX = event.pageX; + var pageY = event.pageY; + + /* + * - 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 + + 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(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; + + 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; + } + + } + + 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() ) )) + ), + 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() )) + ) + }; + + }, + + _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)); + + //Various things done here to improve the performance: + // 1. we create a setTimeout, that calls refreshPositions + // 2. on the instance, we have a counter variable, that get's higher after every append + // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same + // 4. this lets only the last addition to the timeout stack through + this.counter = this.counter ? ++this.counter : 1; + var counter = this.counter; + + this._delay(function() { + if(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove + }); + + }, + + _clear: function(event, noPropagation) { + + 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 = []; + + // 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); + 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(); + } + + 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. + if (this !== this.currentContainer) { + if(!noPropagation) { + delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); + delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + } + } + + + //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])); + 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])); + 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 + + 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 + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return false; + } + + 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(!noPropagation) { + for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return true; + + }, + + _trigger: function() { + if ($.Widget.prototype._trigger.apply(this, arguments) === false) { + this.cancel(); + } + }, + + _uiHash: function(_inst) { + var inst = _inst || this; + return { + helper: inst.helper, + placeholder: inst.placeholder || $([]), + position: inst.position, + originalPosition: inst.originalPosition, + offset: inst.positionAbs, + item: inst.currentItem, + sender: _inst ? _inst.element : null + }; + } + +}); + +})(jQuery); +(function( $ ) { + +function modifier( fn ) { + return function() { + var previous = this.element.val(); + fn.apply( this, arguments ); + this._refresh(); + if ( previous !== this.element.val() ) { + this._trigger( "change" ); + } + }; +} + +$.widget( "ui.spinner", { + version: "1.9.1", + defaultElement: "", + widgetEventPrefix: "spin", + options: { + culture: null, + icons: { + down: "ui-icon-triangle-1-s", + up: "ui-icon-triangle-1-n" + }, + incremental: true, + max: null, + min: null, + numberFormat: null, + page: 10, + step: 1, + + change: null, + spin: null, + start: null, + stop: null + }, + + _create: function() { + // handle string values that need to be parsed + this._setOption( "max", this.options.max ); + 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 ); + + this._draw(); + this._on( this._events ); + this._refresh(); + + // turning off autocomplete prevents the browser from remembering the + // value when navigating through history, so we re-enable autocomplete + // if the page is unloaded before the widget is destroyed. #7790 + this._on( this.window, { + beforeunload: function() { + this.element.removeAttr( "autocomplete" ); + } + }); + }, + + _getCreateOptions: function() { + var options = {}, + element = this.element; + + $.each( [ "min", "max", "step" ], function( i, option ) { + var value = element.attr( option ); + if ( value !== undefined && value.length ) { + options[ option ] = value; + } + }); + + return options; + }, + + _events: { + keydown: function( event ) { + if ( this._start( event ) && this._keydown( event ) ) { + event.preventDefault(); + } + }, + keyup: "_stop", + focus: function() { + this.previous = this.element.val(); + }, + blur: function( event ) { + if ( this.cancelBlur ) { + delete this.cancelBlur; + return; + } + + this._refresh(); + if ( this.previous !== this.element.val() ) { + this._trigger( "change", event ); + } + }, + mousewheel: function( event, delta ) { + if ( !delta ) { + return; + } + if ( !this.spinning && !this._start( event ) ) { + return false; + } + + this._spin( (delta > 0 ? 1 : -1) * this.options.step, event ); + clearTimeout( this.mousewheelTimer ); + this.mousewheelTimer = this._delay(function() { + if ( this.spinning ) { + this._stop( event ); + } + }, 100 ); + event.preventDefault(); + }, + "mousedown .ui-spinner-button": function( event ) { + var previous; + + // We never want the buttons to have focus; whenever the user is + // interacting with the spinner, the focus should be on the input. + // If the input is focused then this.previous is properly set from + // when the input first received focus. If the input is not focused + // then we need to set this.previous based on the value before spinning. + previous = this.element[0] === this.document[0].activeElement ? + this.previous : this.element.val(); + function checkFocus() { + var isActive = this.element[0] === this.document[0].activeElement; + if ( !isActive ) { + this.element.focus(); + this.previous = previous; + // support: IE + // IE sets focus asynchronously, so we need to check if focus + // moved off of the input because the user clicked on the button. + this._delay(function() { + this.previous = previous; + }); + } + } + + // ensure focus is on (or stays on) the text field + event.preventDefault(); + checkFocus.call( this ); + + // support: IE + // IE doesn't prevent moving focus even with event.preventDefault() + // so we set a flag to know when we should ignore the blur event + // and check (again) if focus moved off of the input. + this.cancelBlur = true; + this._delay(function() { + delete this.cancelBlur; + checkFocus.call( this ); + }); + + if ( this._start( event ) === false ) { + return; + } + + this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); + }, + "mouseup .ui-spinner-button": "_stop", + "mouseenter .ui-spinner-button": function( event ) { + // button will add ui-state-active if mouse was down while mouseleave and kept down + if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) { + return; + } + + if ( this._start( event ) === false ) { + return false; + } + this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); + }, + // TODO: do we really want to consider this a stop? + // shouldn't we just stop the repeater and wait until mouseup before + // we trigger the stop event? + "mouseleave .ui-spinner-button": "_stop" + }, + + _draw: function() { + var uiSpinner = this.uiSpinner = this.element + .addClass( "ui-spinner-input" ) + .attr( "autocomplete", "off" ) + .wrap( this._uiSpinnerHtml() ) + .parent() + // add buttons + .append( this._buttonHtml() ); + + this.element.attr( "role", "spinbutton" ); + + // button bindings + this.buttons = uiSpinner.find( ".ui-spinner-button" ) + .attr( "tabIndex", -1 ) + .button() + .removeClass( "ui-corner-all" ); + + // IE 6 doesn't understand height: 50% for the buttons + // unless the wrapper has an explicit height + if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) && + uiSpinner.height() > 0 ) { + uiSpinner.height( uiSpinner.height() ); + } + + // disable spinner if element was already disabled + if ( this.options.disabled ) { + this.disable(); + } + }, + + _keydown: function( event ) { + var options = this.options, + keyCode = $.ui.keyCode; + + switch ( event.keyCode ) { + case keyCode.UP: + this._repeat( null, 1, event ); + return true; + case keyCode.DOWN: + this._repeat( null, -1, event ); + return true; + case keyCode.PAGE_UP: + this._repeat( null, options.page, event ); + return true; + case keyCode.PAGE_DOWN: + this._repeat( null, -options.page, event ); + return true; + } + + return false; + }, + + _uiSpinnerHtml: function() { + return ""; + }, + + _buttonHtml: function() { + return "" + + "" + + "" + + "" + + "" + + "" + + ""; + }, + + _start: function( event ) { + if ( !this.spinning && this._trigger( "start", event ) === false ) { + return false; + } + + if ( !this.counter ) { + this.counter = 1; + } + this.spinning = true; + return true; + }, + + _repeat: function( i, steps, event ) { + i = i || 500; + + clearTimeout( this.timer ); + this.timer = this._delay(function() { + this._repeat( 40, steps, event ); + }, i ); + + this._spin( steps * this.options.step, event ); + }, + + _spin: function( step, event ) { + var value = this.value() || 0; + + if ( !this.counter ) { + this.counter = 1; + } + + value = this._adjustValue( value + step * this._increment( this.counter ) ); + + if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) { + this._value( value ); + this.counter++; + } + }, + + _increment: function( i ) { + var incremental = this.options.incremental; + + if ( incremental ) { + return $.isFunction( incremental ) ? + incremental( i ) : + Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 ); + } + + return 1; + }, + + _precision: function() { + var precision = this._precisionOf( this.options.step ); + if ( this.options.min !== null ) { + precision = Math.max( precision, this._precisionOf( this.options.min ) ); + } + return precision; + }, + + _precisionOf: function( num ) { + var str = num.toString(), + decimal = str.indexOf( "." ); + return decimal === -1 ? 0 : str.length - decimal - 1; + }, + + _adjustValue: function( value ) { + var base, aboveMin, + options = this.options; + + // make sure we're at a valid step + // - find out where we are relative to the base (min or 0) + base = options.min !== null ? options.min : 0; + aboveMin = value - base; + // - round to the nearest step + aboveMin = Math.round(aboveMin / options.step) * options.step; + // - rounding is based on 0, so adjust back to our base + value = base + aboveMin; + + // fix precision from bad JS floating point math + value = parseFloat( value.toFixed( this._precision() ) ); + + // clamp the value + if ( options.max !== null && value > options.max) { + return options.max; + } + if ( options.min !== null && value < options.min ) { + return options.min; + } + + return value; + }, + + _stop: function( event ) { + if ( !this.spinning ) { + return; + } + + clearTimeout( this.timer ); + clearTimeout( this.mousewheelTimer ); + this.counter = 0; + this.spinning = false; + this._trigger( "stop", event ); + }, + + _setOption: function( key, value ) { + if ( key === "culture" || key === "numberFormat" ) { + var prevValue = this._parse( this.element.val() ); + this.options[ key ] = value; + this.element.val( this._format( prevValue ) ); + return; + } + + if ( key === "max" || key === "min" || key === "step" ) { + if ( typeof value === "string" ) { + value = this._parse( value ); + } + } + + this._super( key, value ); + + if ( key === "disabled" ) { + if ( value ) { + this.element.prop( "disabled", true ); + this.buttons.button( "disable" ); + } else { + this.element.prop( "disabled", false ); + this.buttons.button( "enable" ); + } + } + }, + + _setOptions: modifier(function( options ) { + this._super( options ); + this._value( this.element.val() ); + }), + + _parse: function( val ) { + if ( typeof val === "string" && val !== "" ) { + val = window.Globalize && this.options.numberFormat ? + Globalize.parseFloat( val, 10, this.options.culture ) : +val; + } + return val === "" || isNaN( val ) ? null : val; + }, + + _format: function( value ) { + if ( value === "" ) { + return ""; + } + return window.Globalize && this.options.numberFormat ? + Globalize.format( value, this.options.numberFormat, this.options.culture ) : + value; + }, + + _refresh: function() { + this.element.attr({ + "aria-valuemin": this.options.min, + "aria-valuemax": this.options.max, + // TODO: what should we do with values that can't be parsed? + "aria-valuenow": this._parse( this.element.val() ) + }); + }, + + // update the value without triggering change + _value: function( value, allowAny ) { + var parsed; + if ( value !== "" ) { + parsed = this._parse( value ); + if ( parsed !== null ) { + if ( !allowAny ) { + parsed = this._adjustValue( parsed ); + } + value = this._format( parsed ); + } + } + this.element.val( value ); + this._refresh(); + }, + + _destroy: function() { + this.element + .removeClass( "ui-spinner-input" ) + .prop( "disabled", false ) + .removeAttr( "autocomplete" ) + .removeAttr( "role" ) + .removeAttr( "aria-valuemin" ) + .removeAttr( "aria-valuemax" ) + .removeAttr( "aria-valuenow" ); + this.uiSpinner.replaceWith( this.element ); + }, + + stepUp: modifier(function( steps ) { + this._stepUp( steps ); + }), + _stepUp: function( steps ) { + this._spin( (steps || 1) * this.options.step ); + }, + + stepDown: modifier(function( steps ) { + this._stepDown( steps ); + }), + _stepDown: function( steps ) { + this._spin( (steps || 1) * -this.options.step ); + }, + + pageUp: modifier(function( pages ) { + this._stepUp( (pages || 1) * this.options.page ); + }), + + pageDown: modifier(function( pages ) { + this._stepDown( (pages || 1) * this.options.page ); + }), + + value: function( newVal ) { + if ( !arguments.length ) { + return this._parse( this.element.val() ); + } + modifier( this._value ).call( this, newVal ); + }, + + widget: function() { + return this.uiSpinner; + } +}); + +}( jQuery ) ); +(function( $, undefined ) { + +var tabId = 0, + rhash = /#.*$/; + +function getNextTabId() { + return ++tabId; +} + +function isLocal( anchor ) { + return anchor.hash.length > 1 && + anchor.href.replace( rhash, "" ) === location.href.replace( rhash, "" ); +} + +$.widget( "ui.tabs", { + version: "1.9.1", + delay: 300, + options: { + active: null, + collapsible: false, + event: "click", + heightStyle: "content", + hide: null, + show: null, + + // callbacks + activate: null, + beforeActivate: null, + beforeLoad: null, + load: null + }, + + _create: function() { + var that = this, + options = this.options, + active = options.active, + locationHash = location.hash.substring( 1 ); + + this.running = false; + + this.element + .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ) + .toggleClass( "ui-tabs-collapsible", options.collapsible ) + // Prevent users from focusing disabled tabs via click + .delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) { + if ( $( this ).is( ".ui-state-disabled" ) ) { + event.preventDefault(); + } + }) + // support: IE <9 + // Preventing the default action in mousedown doesn't prevent IE + // from focusing the element, so if the anchor gets focused, blur. + // We don't have to worry about focusing the previously focused + // element since clicking on a non-focusable element should focus + // the body anyway. + .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() { + if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { + this.blur(); + } + }); + + this._processTabs(); + + if ( active === null ) { + // check the fragment identifier in the URL + if ( locationHash ) { + this.tabs.each(function( i, tab ) { + if ( $( tab ).attr( "aria-controls" ) === locationHash ) { + active = i; + return false; + } + }); + } + + // check for a tab marked active via a class + if ( active === null ) { + active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) ); + } + + // no active tab, set to false + if ( active === null || active === -1 ) { + active = this.tabs.length ? 0 : false; + } + } + + // handle numbers: negative, out of range + if ( active !== false ) { + active = this.tabs.index( this.tabs.eq( active ) ); + if ( active === -1 ) { + active = options.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 = $(); + } + + this._refresh(); + + if ( this.active.length ) { + this.load( options.active ); + } + }, + + _getCreateEventData: function() { + return { + tab: this.active, + panel: !this.active.length ? $() : this._getPanelForTab( this.active ) + }; + }, + + _tabKeydown: function( event ) { + var focusedTab = $( this.document[0].activeElement ).closest( "li" ), + selectedIndex = this.tabs.index( focusedTab ), + goingForward = true; + + if ( this._handlePageNav( event ) ) { + return; + } + + switch ( event.keyCode ) { + case $.ui.keyCode.RIGHT: + case $.ui.keyCode.DOWN: + selectedIndex++; + break; + case $.ui.keyCode.UP: + case $.ui.keyCode.LEFT: + goingForward = false; + selectedIndex--; + break; + case $.ui.keyCode.END: + selectedIndex = this.anchors.length - 1; + break; + case $.ui.keyCode.HOME: + selectedIndex = 0; + break; + case $.ui.keyCode.SPACE: + // Activate only, no collapsing + event.preventDefault(); + clearTimeout( this.activating ); + this._activate( selectedIndex ); + return; + case $.ui.keyCode.ENTER: + // Toggle (cancel delayed activation, allow collapsing) + event.preventDefault(); + clearTimeout( this.activating ); + // Determine if we should collapse or activate + this._activate( selectedIndex === this.options.active ? false : selectedIndex ); + return; + default: + return; + } + + // Focus the appropriate tab, based on which key was pressed + event.preventDefault(); + clearTimeout( this.activating ); + selectedIndex = this._focusNextTab( selectedIndex, goingForward ); + + // Navigating with control key will prevent automatic activation + if ( !event.ctrlKey ) { + // Update aria-selected immediately so that AT think the tab is already selected. + // Otherwise AT may confuse the user by stating that they need to activate the tab, + // but the tab will already be activated by the time the announcement finishes. + focusedTab.attr( "aria-selected", "false" ); + this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" ); + + this.activating = this._delay(function() { + this.option( "active", selectedIndex ); + }, this.delay ); + } + }, + + _panelKeydown: function( event ) { + if ( this._handlePageNav( event ) ) { + return; + } + + // Ctrl+up moves focus to the current tab + if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) { + event.preventDefault(); + this.active.focus(); + } + }, + + // Alt+page up/down moves focus to the previous/next tab (and activates) + _handlePageNav: function( event ) { + if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) { + this._activate( this._focusNextTab( this.options.active - 1, false ) ); + return true; + } + if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) { + this._activate( this._focusNextTab( this.options.active + 1, true ) ); + return true; + } + }, + + _findNextTab: function( index, goingForward ) { + var lastTabIndex = this.tabs.length - 1; + + function constrain() { + if ( index > lastTabIndex ) { + index = 0; + } + if ( index < 0 ) { + index = lastTabIndex; + } + return index; + } + + while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) { + index = goingForward ? index + 1 : index - 1; + } + + return index; + }, + + _focusNextTab: function( index, goingForward ) { + index = this._findNextTab( index, goingForward ); + this.tabs.eq( index ).focus(); + return index; + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "disabled" ) { + // don't use the widget factory's disabled handling + this._setupDisabled( value ); + return; + } + + this._super( key, value); + + if ( key === "collapsible" ) { + this.element.toggleClass( "ui-tabs-collapsible", value ); + // Setting collapsible: false while collapsed; open first panel + if ( !value && this.options.active === false ) { + this._activate( 0 ); + } + } + + if ( key === "event" ) { + this._setupEvents( value ); + } + + if ( key === "heightStyle" ) { + this._setupHeightStyle( value ); + } + }, + + _tabId: function( tab ) { + return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId(); + }, + + _sanitizeSelector: function( hash ) { + return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : ""; + }, + + refresh: function() { + var options = this.options, + lis = this.tablist.children( ":has(a[href])" ); + + // get disabled tabs from class attribute from HTML + // this will get converted to a boolean if needed in _refresh() + options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) { + return lis.index( tab ); + }); + + this._processTabs(); + + // was collapsed or no tabs + if ( options.active === false || !this.anchors.length ) { + options.active = false; + this.active = $(); + // was active, but active tab is gone + } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) { + // all remaining tabs are disabled + if ( this.tabs.length === options.disabled.length ) { + options.active = false; + this.active = $(); + // activate previous tab + } else { + this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) ); + } + // was active, active tab still exists + } else { + // make sure active index is correct + options.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" + }); + + // Make sure one tab is in the tab order + if ( !this.active.length ) { + this.tabs.eq( 0 ).attr( "tabIndex", 0 ); + } else { + 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" + }); + } + }, + + _processTabs: function() { + var that = 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 $( "a", this )[ 0 ]; + }) + .addClass( "ui-tabs-anchor" ) + .attr({ + role: "presentation", + tabIndex: -1 + }); + + this.panels = $(); + + this.anchors.each(function( i, anchor ) { + var selector, panel, panelId, + anchorId = $( anchor ).uniqueId().attr( "id" ), + tab = $( anchor ).closest( "li" ), + originalAriaControls = tab.attr( "aria-controls" ); + + // inline tab + if ( isLocal( anchor ) ) { + selector = anchor.hash; + panel = that.element.find( that._sanitizeSelector( selector ) ); + // remote tab + } else { + panelId = that._tabId( tab ); + selector = "#" + panelId; + panel = that.element.find( selector ); + if ( !panel.length ) { + panel = that._createPanel( panelId ); + panel.insertAfter( that.panels[ i - 1 ] || that.tablist ); + } + panel.attr( "aria-live", "polite" ); + } + + if ( panel.length) { + that.panels = that.panels.add( panel ); + } + if ( originalAriaControls ) { + tab.data( "ui-tabs-aria-controls", originalAriaControls ); + } + tab.attr({ + "aria-controls": selector.substring( 1 ), + "aria-labelledby": anchorId + }); + panel.attr( "aria-labelledby", anchorId ); + }); + + this.panels + .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) + .attr( "role", "tabpanel" ); + }, + + // allow overriding how to find the list for rare usage scenarios (#7715) + _getList: function() { + return this.element.find( "ol,ul" ).eq( 0 ); + }, + + _createPanel: function( id ) { + return $( "
      " ) + .attr( "id", id ) + .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) + .data( "ui-tabs-destroy", true ); + }, + + _setupDisabled: function( disabled ) { + if ( $.isArray( disabled ) ) { + if ( !disabled.length ) { + disabled = false; + } else if ( disabled.length === this.anchors.length ) { + disabled = true; + } + } + + // disable tabs + for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) { + if ( disabled === true || $.inArray( i, disabled ) !== -1 ) { + $( li ) + .addClass( "ui-state-disabled" ) + .attr( "aria-disabled", "true" ); + } else { + $( li ) + .removeClass( "ui-state-disabled" ) + .removeAttr( "aria-disabled" ); + } + } + + this.options.disabled = disabled; + }, + + _setupEvents: function( event ) { + var events = { + click: function( event ) { + event.preventDefault(); + } + }; + if ( event ) { + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + }); + } + + this._off( this.anchors.add( this.tabs ).add( this.panels ) ); + this._on( this.anchors, events ); + this._on( this.tabs, { keydown: "_tabKeydown" } ); + this._on( this.panels, { keydown: "_panelKeydown" } ); + + this._focusable( this.tabs ); + this._hoverable( this.tabs ); + }, + + _setupHeightStyle: function( heightStyle ) { + var maxHeight, overflow, + 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(); + this.element.siblings( ":visible" ).each(function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + }); + if ( overflow ) { + parent.css( "overflow", overflow ); + } + + this.element.children().not( this.panels ).each(function() { + maxHeight -= $( this ).outerHeight( true ); + }); + + this.panels.each(function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + }) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.panels.each(function() { + maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); + }).height( maxHeight ); + } + }, + + _eventHandler: function( event ) { + var options = this.options, + active = this.active, + anchor = $( event.currentTarget ), + tab = anchor.closest( "li" ), + clickedIsActive = tab[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : this._getPanelForTab( tab ), + toHide = !active.length ? $() : this._getPanelForTab( active ), + eventData = { + oldTab: active, + oldPanel: toHide, + newTab: collapsing ? $() : tab, + newPanel: toShow + }; + + event.preventDefault(); + + if ( tab.hasClass( "ui-state-disabled" ) || + // tab is already loading + tab.hasClass( "ui-tabs-loading" ) || + // can't switch durning an animation + this.running || + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.tabs.index( tab ); + + this.active = clickedIsActive ? $() : tab; + if ( this.xhr ) { + this.xhr.abort(); + } + + if ( !toHide.length && !toShow.length ) { + $.error( "jQuery UI Tabs: Mismatching fragment identifier." ); + } + + if ( toShow.length ) { + this.load( this.tabs.index( tab ), event ); + } + this._toggle( event, eventData ); + }, + + // handles show/hide for selecting tabs + _toggle: function( event, eventData ) { + var that = this, + toShow = eventData.newPanel, + toHide = eventData.oldPanel; + + this.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 && that.options.show ) { + that._show( toShow, that.options.show, complete ); + } else { + toShow.show(); + complete(); + } + } + + // start out by hiding, then showing, then completing + if ( toHide.length && this.options.hide ) { + this._hide( toHide, this.options.hide, 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(); + } + + toHide.attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }); + eventData.oldTab.attr( "aria-selected", "false" ); + // If we're switching tabs, remove the old tab from the tab order. + // If we're opening from collapsed state, remove the previous tab from the tab order. + // If we're collapsing, then keep the collapsing tab in the tab order. + if ( toShow.length && toHide.length ) { + eventData.oldTab.attr( "tabIndex", -1 ); + } else if ( toShow.length ) { + this.tabs.filter(function() { + return $( this ).attr( "tabIndex" ) === 0; + }) + .attr( "tabIndex", -1 ); + } + + toShow.attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }); + eventData.newTab.attr({ + "aria-selected": "true", + tabIndex: 0 + }); + }, + + _activate: function( index ) { + var anchor, + active = this._findActive( index ); + + // trying to activate the already active panel + if ( active[ 0 ] === this.active[ 0 ] ) { + return; + } + + // trying to collapse, simulate a click on the current active header + if ( !active.length ) { + active = this.active; + } + + anchor = active.find( ".ui-tabs-anchor" )[ 0 ]; + this._eventHandler({ + target: anchor, + currentTarget: anchor, + preventDefault: $.noop + }); + }, + + _findActive: function( index ) { + return index === false ? $() : this.tabs.eq( index ); + }, + + _getIndex: function( index ) { + // meta-function to give users option to provide a href string instead of a numerical index. + if ( typeof index === "string" ) { + index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); + } + + return index; + }, + + _destroy: function() { + if ( 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() { + if ( $.data( this, "ui-tabs-destroy" ) ) { + $( this ).remove(); + } else { + $( 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 li = $( this ), + prev = li.data( "ui-tabs-aria-controls" ); + if ( prev ) { + li.attr( "aria-controls", prev ); + } else { + li.removeAttr( "aria-controls" ); + } + }); + + if ( this.options.heightStyle !== "content" ) { + this.panels.css( "height", "" ); + } + }, + + enable: function( index ) { + var disabled = this.options.disabled; + if ( disabled === false ) { + return; + } + + if ( index === undefined ) { + disabled = false; + } else { + index = this._getIndex( index ); + if ( $.isArray( disabled ) ) { + disabled = $.map( disabled, function( num ) { + return num !== index ? num : null; + }); + } else { + disabled = $.map( this.tabs, function( li, num ) { + return num !== index ? num : null; + }); + } + } + this._setupDisabled( disabled ); + }, + + disable: function( index ) { + var disabled = this.options.disabled; + if ( disabled === true ) { + return; + } + + if ( index === undefined ) { + disabled = true; + } else { + index = this._getIndex( index ); + if ( $.inArray( index, disabled ) !== -1 ) { + return; + } + if ( $.isArray( disabled ) ) { + disabled = $.merge( [ index ], disabled ).sort(); + } else { + disabled = [ index ]; + } + } + this._setupDisabled( disabled ); + }, + + load: function( index, event ) { + index = this._getIndex( index ); + var that = this, + tab = this.tabs.eq( index ), + anchor = tab.find( ".ui-tabs-anchor" ), + panel = this._getPanelForTab( tab ), + eventData = { + tab: tab, + panel: panel + }; + + // not remote + if ( isLocal( anchor[ 0 ] ) ) { + return; + } + + this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) ); + + // support: jQuery <1.8 + // jQuery <1.8 returns false if the request is canceled in beforeSend, + // but as of 1.8, $.ajax() always returns a jqXHR object. + if ( this.xhr && this.xhr.statusText !== "canceled" ) { + tab.addClass( "ui-tabs-loading" ); + panel.attr( "aria-busy", "true" ); + + this.xhr + .success(function( response ) { + // support: jQuery <1.8 + // http://bugs.jquery.com/ticket/11778 + setTimeout(function() { + panel.html( response ); + that._trigger( "load", event, eventData ); + }, 1 ); + }) + .complete(function( jqXHR, status ) { + // support: jQuery <1.8 + // http://bugs.jquery.com/ticket/11778 + setTimeout(function() { + if ( status === "abort" ) { + that.panels.stop( false, true ); + } + + tab.removeClass( "ui-tabs-loading" ); + panel.removeAttr( "aria-busy" ); + + if ( jqXHR === that.xhr ) { + delete that.xhr; + } + }, 1 ); + }); + } + }, + + // TODO: Remove this function in 1.10 when ajaxOptions is removed + _ajaxSettings: function( anchor, event, eventData ) { + var that = this; + return { + url: anchor.attr( "href" ), + beforeSend: function( jqXHR, settings ) { + return that._trigger( "beforeLoad", event, + $.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) ); + } + }; + }, + + _getPanelForTab: function( tab ) { + var id = $( tab ).attr( "aria-controls" ); + return this.element.find( this._sanitizeSelector( "#" + id ) ); + } +}); + +// 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: "Loading…" + }, + _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: "
    • #{label}
    • " + }, + + 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: "
      " + }, + + _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 ret = this._superApply( arguments ); + if ( !ret ) { + return false; + } + if ( type === "beforeActivate" && data.newTab.length ) { + ret = this._super( "select", event, { + tab: data.newTab.find( ".ui-tabs-anchor" )[ 0], + panel: data.newPanel[ 0 ], + index: data.newTab.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; + +function addDescribedBy( elem, id ) { + var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ); + describedby.push( id ); + elem + .data( "ui-tooltip-id", id ) + .attr( "aria-describedby", $.trim( describedby.join( " " ) ) ); +} + +function removeDescribedBy( elem ) { + var id = elem.data( "ui-tooltip-id" ), + describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ), + index = $.inArray( id, describedby ); + if ( index !== -1 ) { + describedby.splice( index, 1 ); + } + + elem.removeData( "ui-tooltip-id" ); + describedby = $.trim( describedby.join( " " ) ); + if ( describedby ) { + elem.attr( "aria-describedby", describedby ); + } else { + elem.removeAttr( "aria-describedby" ); + } +} + +$.widget( "ui.tooltip", { + version: "1.9.1", + options: { + content: function() { + return $( this ).attr( "title" ); + }, + hide: true, + // Disabled elements have inconsistent behavior across browsers (#8661) + items: "[title]:not([disabled])", + position: { + my: "left top+15", + at: "left bottom", + collision: "flipfit flipfit" + }, + show: true, + tooltipClass: null, + track: false, + + // callbacks + close: null, + open: null + }, + + _create: function() { + this._on({ + mouseover: "open", + focusin: "open" + }); + + // IDs of generated tooltips, needed for destroy + this.tooltips = {}; + // IDs of parent tooltips where we removed the title attribute + this.parents = {}; + + if ( this.options.disabled ) { + this._disable(); + } + }, + + _setOption: function( key, value ) { + var that = this; + + if ( key === "disabled" ) { + this[ value ? "_disable" : "_enable" ](); + this.options[ key ] = value; + // disable element style changes + return; + } + + this._super( key, value ); + + if ( key === "content" ) { + $.each( this.tooltips, function( id, element ) { + that._updateContent( element ); + }); + } + }, + + _disable: function() { + var that = this; + + // close open tooltips + $.each( this.tooltips, function( id, element ) { + var event = $.Event( "blur" ); + event.target = event.currentTarget = element[0]; + that.close( event, true ); + }); + + // remove title attributes to prevent native tooltips + this.element.find( this.options.items ).andSelf().each(function() { + var element = $( this ); + if ( element.is( "[title]" ) ) { + element + .data( "ui-tooltip-title", element.attr( "title" ) ) + .attr( "title", "" ); + } + }); + }, + + _enable: function() { + // restore title attributes + this.element.find( this.options.items ).andSelf().each(function() { + var element = $( this ); + if ( element.data( "ui-tooltip-title" ) ) { + element.attr( "title", element.data( "ui-tooltip-title" ) ); + } + }); + }, + + open: function( event ) { + var that = this, + target = $( event ? event.target : this.element ) + // we need closest here due to mouseover bubbling, + // but always pointing at the same event target + .closest( this.options.items ); + + // No element to show a tooltip for + if ( !target.length ) { + return; + } + + // If the tooltip is open and we're tracking then reposition the tooltip. + // This makes sure that a tracking tooltip doesn't obscure a focused element + // if the user was hovering when the element gained focused. + if ( this.options.track && target.data( "ui-tooltip-id" ) ) { + this._find( target ).position( $.extend({ + of: target + }, this.options.position ) ); + // Stop tracking (#8622) + this._off( this.document, "mousemove" ); + return; + } + + if ( target.attr( "title" ) ) { + target.data( "ui-tooltip-title", target.attr( "title" ) ); + } + + target.data( "tooltip-open", true ); + + // kill parent tooltips, custom or native, for hover + if ( event && event.type === "mouseover" ) { + target.parents().each(function() { + var blurEvent; + if ( $( this ).data( "tooltip-open" ) ) { + blurEvent = $.Event( "blur" ); + blurEvent.target = blurEvent.currentTarget = this; + that.close( blurEvent, true ); + } + if ( this.title ) { + $( this ).uniqueId(); + that.parents[ this.id ] = { + element: this, + title: this.title + }; + this.title = ""; + } + }); + } + + this._updateContent( target, event ); + }, + + _updateContent: function( target, event ) { + var content, + contentOption = this.options.content, + that = this; + + if ( typeof contentOption === "string" ) { + return this._open( event, target, contentOption ); + } + + content = contentOption.call( target[0], function( response ) { + // ignore async response if tooltip was closed already + if ( !target.data( "tooltip-open" ) ) { + return; + } + // IE may instantly serve a cached response for ajax requests + // delay this call to _open so the other call to _open runs first + that._delay(function() { + this._open( event, target, response ); + }); + }); + if ( content ) { + this._open( event, target, content ); + } + }, + + _open: function( event, target, content ) { + var tooltip, events, delayedShow, + positionOption = $.extend( {}, this.options.position ); + + if ( !content ) { + return; + } + + // Content can be updated multiple times. If the tooltip already + // exists, then just update the content and bail. + tooltip = this._find( target ); + if ( tooltip.length ) { + tooltip.find( ".ui-tooltip-content" ).html( content ); + return; + } + + // if we have a title, clear it to prevent the native tooltip + // we have to check first to avoid defining a title if none exists + // (we don't want to cause an element to start matching [title]) + // + // We use removeAttr only for key events, to allow IE to export the correct + // accessible attributes. For mouse events, set to empty string to avoid + // native tooltip showing up (happens only when removing inside mouseover). + if ( target.is( "[title]" ) ) { + if ( event && event.type === "mouseover" ) { + target.attr( "title", "" ); + } else { + target.removeAttr( "title" ); + } + } + + tooltip = this._tooltip( target ); + addDescribedBy( target, tooltip.attr( "id" ) ); + tooltip.find( ".ui-tooltip-content" ).html( content ); + + function position( event ) { + positionOption.of = event; + if ( tooltip.is( ":hidden" ) ) { + return; + } + tooltip.position( positionOption ); + } + if ( this.options.track && event && /^mouse/.test( event.originalEvent.type ) ) { + this._on( this.document, { + mousemove: position + }); + // trigger once to override element-relative positioning + position( event ); + } else { + tooltip.position( $.extend({ + of: target + }, this.options.position ) ); + } + + tooltip.hide(); + + this._show( tooltip, this.options.show ); + // Handle tracking tooltips that are shown with a delay (#8644). As soon + // as the tooltip is visible, position the tooltip using the most recent + // event. + if ( this.options.show && this.options.show.delay ) { + delayedShow = setInterval(function() { + if ( tooltip.is( ":visible" ) ) { + position( positionOption.of ); + clearInterval( delayedShow ); + } + }, $.fx.interval ); + } + + this._trigger( "open", event, { tooltip: tooltip } ); + + events = { + keyup: function( event ) { + if ( event.keyCode === $.ui.keyCode.ESCAPE ) { + var fakeEvent = $.Event(event); + fakeEvent.currentTarget = target[0]; + this.close( fakeEvent, true ); + } + }, + remove: function() { + this._removeTooltip( tooltip ); + } + }; + if ( !event || event.type === "mouseover" ) { + events.mouseleave = "close"; + } + if ( !event || event.type === "focusin" ) { + events.focusout = "close"; + } + this._on( target, events ); + }, + + close: function( event ) { + var that = this, + target = $( event ? event.currentTarget : this.element ), + tooltip = this._find( target ); + + // disabling closes the tooltip, so we need to track when we're closing + // to avoid an infinite loop in case the tooltip becomes disabled on close + if ( this.closing ) { + return; + } + + // 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" ) ); + } + + removeDescribedBy( target ); + + tooltip.stop( true ); + this._hide( tooltip, this.options.hide, function() { + that._removeTooltip( $( this ) ); + }); + + target.removeData( "tooltip-open" ); + this._off( target, "mouseleave focusout keyup" ); + // Remove 'remove' binding only on delegated targets + if ( target[0] !== this.element[0] ) { + this._off( target, "remove" ); + } + this._off( this.document, "mousemove" ); + + if ( event && event.type === "mouseleave" ) { + $.each( this.parents, function( id, parent ) { + parent.element.title = parent.title; + delete that.parents[ id ]; + }); + } + + this.closing = true; + this._trigger( "close", event, { tooltip: tooltip } ); + this.closing = false; + }, + + _tooltip: function( element ) { + var id = "ui-tooltip-" + increments++, + tooltip = $( "
      " ) + .attr({ + id: id, + role: "tooltip" + }) + .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " + + ( this.options.tooltipClass || "" ) ); + $( "
      " ) + .addClass( "ui-tooltip-content" ) + .appendTo( tooltip ); + tooltip.appendTo( this.document[0].body ); + if ( $.fn.bgiframe ) { + tooltip.bgiframe(); + } + this.tooltips[ id ] = element; + return tooltip; + }, + + _find: function( target ) { + var id = target.data( "ui-tooltip-id" ); + return id ? $( "#" + id ) : $(); + }, + + _removeTooltip: function( tooltip ) { + tooltip.remove(); + delete this.tooltips[ tooltip.attr( "id" ) ]; + }, + + _destroy: function() { + var that = this; + + // close open tooltips + $.each( this.tooltips, function( id, element ) { + // Delegate to close method to handle common cleanup + var event = $.Event( "blur" ); + event.target = event.currentTarget = element[0]; + that.close( event, true ); + + // Remove immediately; destroying an open tooltip doesn't use the + // hide animation + $( "#" + id ).remove(); + + // Restore the title + if ( element.data( "ui-tooltip-title" ) ) { + element.attr( "title", element.data( "ui-tooltip-title" ) ); + element.removeData( "ui-tooltip-title" ); + } + }); + } +}); + +}( jQuery ) ); diff --git a/fhem/contrib/YAF/YAF/www/js/jquery-ui-1.9.1.custom.min.js b/fhem/contrib/YAF/YAF/www/js/jquery-ui-1.9.1.custom.min.js new file mode 100755 index 000000000..aa7a923e7 --- /dev/null +++ b/fhem/contrib/YAF/YAF/www/js/jquery-ui-1.9.1.custom.min.js @@ -0,0 +1,6 @@ +/*! jQuery UI - v1.9.1 - 2012-10-25 +* 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.1",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("").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.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"}),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;r0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e",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(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=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("
      "),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.width0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};lr(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||p0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)a&&(v<0||v0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)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.1",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("").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).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()",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("
      "+(o[0]>0&&I==o[1]-1?'
      ':""):""),F+=U}B+=F}return B+=x+($.ui.ie6&&!e.inline?'':""),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='
      ',h="";if(s||!a)h+=''+o[t]+"";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='"}l||(c+=h+(s||!a||!f?" ":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+=''+n+"";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+='",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?" ":"")+h),c+="
      ",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&&tr?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.1",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.1",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("
      ")).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("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").bind("mousedown",function(){s.focus()}).prependTo(s),u=e("").addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),t.close(e)}).appendTo(o),(this.uiDialogTitlebarCloseText=e("")).addClass("ui-icon ui-icon-closethick").text(r.closeText).appendTo(u),a=e("").uniqueId().addClass("ui-dialog-title").html(i).prependTo(o),f=(this.uiDialogButtonPane=e("
      ")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),(this.uiButtonSet=e("
      ")).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){r=e.isFunction(r)?{click:r,text:t}:r;var i=e("").attr(r,!0).unbind("click").click(function(){r.click.apply(n.element[0],arguments)}).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()").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
      ').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.leftu[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.topu[3]?f-this.offset.click.topu[2]?l-this.offset.click.left=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=l&&o<=c||u>=l&&u<=c||oc)&&(i>=a&&i<=f||s>=a&&s<=f||if);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;oe?0:r.max")[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.1",save:function(e,t){for(var n=0;n
      ").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;m1&&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
      ").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;p1&&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()};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}}),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}: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};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()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x},n.to={height:r.height*s.to.y,width: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;m1&&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('
      ').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.1",defaultElement:"
        ",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+":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"});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"),r.each(function(){var t=e(this),r=t.prev("a"),i=e("").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"))}),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()
      ").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.1",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('
      ').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
      ');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),ie.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
      ');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.1",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("
      ")},_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.rightu||a.bottomi&&a.rights&&a.bottom
    ").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;tn&&(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&&n1){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=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.1",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=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+fs&&t+le[this.floating?"width":"height"]?c:s0?"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=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=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)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.topthis.containment[3]?u-this.offset.click.topthis.containment[2]?a-this.offset.click.left=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",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""},_buttonHtml:function(){return""+""+""+""+""},_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&&e1&&e.href.replace(r,"")===location.href.replace(r,"")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.1",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("
    ").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.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:"Loading…"},_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:"
  • #{label}
  • "},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=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:"
    "},_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=this._superApply(arguments);return r?(e==="beforeActivate"&&n.newTab.length?r=this._super("select",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()}):e==="activate"&&n.newTab.length&&(r=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),r):!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.1",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flipfit"},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)return;if(this.options.track&&r.data("ui-tooltip-id")){this._find(r).position(e.extend({of:r},this.options.position)),this._off(this.document,"mousemove");return}r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t;e(this).data("tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,n.close(t,!0)),this.title&&(e(this).uniqueId(),n.parents[this.id]={element:this,title:this.title},this.title="")}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("tooltip-open"))return;i._delay(function(){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.originalEvent.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(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("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(e,t){t.element.title=t.title,delete n.parents[e]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("
    ").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("
    ").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 diff --git a/fhem/contrib/YAF/YAF/www/js/jquery.ui.touch-punch.min.js b/fhem/contrib/YAF/YAF/www/js/jquery.ui.touch-punch.min.js new file mode 100644 index 000000000..2766f4184 --- /dev/null +++ b/fhem/contrib/YAF/YAF/www/js/jquery.ui.touch-punch.min.js @@ -0,0 +1,160 @@ +/*! + * jQuery UI Touch Punch 0.2.2 + * + * Copyright 2011, Dave Furfero + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Depends: + * jquery.ui.widget.js + * jquery.ui.mouse.js + */ +(function ($) { + + // Detect touch support + $.support.touch = 'ontouchend' in document; + + // Ignore browsers without touch support + if (!$.support.touch) { + return; + } + + var mouseProto = $.ui.mouse.prototype, + _mouseInit = mouseProto._mouseInit, + touchHandled; + + /** + * Simulate a mouse event based on a corresponding touch event + * @param {Object} event A touch event + * @param {String} simulatedType The corresponding mouse event + */ + function simulateMouseEvent (event, simulatedType) { + + // Ignore multi-touch events + if (event.originalEvent.touches.length > 1) { + return; + } + + event.preventDefault(); + + var touch = event.originalEvent.changedTouches[0], + simulatedEvent = document.createEvent('MouseEvents'); + + // Initialize the simulated mouse event using the touch event's coordinates + simulatedEvent.initMouseEvent( + simulatedType, // type + true, // bubbles + true, // cancelable + window, // view + 1, // detail + touch.screenX, // screenX + touch.screenY, // screenY + touch.clientX, // clientX + touch.clientY, // clientY + false, // ctrlKey + false, // altKey + false, // shiftKey + false, // metaKey + 0, // button + null // relatedTarget + ); + + // Dispatch the simulated event to the target element + event.target.dispatchEvent(simulatedEvent); + } + + /** + * Handle the jQuery UI widget's touchstart events + * @param {Object} event The widget element's touchstart event + */ + mouseProto._touchStart = function (event) { + + var self = this; + + // Ignore the event if another widget is already being handled + if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) { + return; + } + + // Set the flag to prevent other widgets from inheriting the touch event + touchHandled = true; + + // Track movement to determine if interaction was a click + self._touchMoved = false; + + // Simulate the mouseover event + simulateMouseEvent(event, 'mouseover'); + + // Simulate the mousemove event + simulateMouseEvent(event, 'mousemove'); + + // Simulate the mousedown event + simulateMouseEvent(event, 'mousedown'); + }; + + /** + * Handle the jQuery UI widget's touchmove events + * @param {Object} event The document's touchmove event + */ + mouseProto._touchMove = function (event) { + + // Ignore event if not handled + if (!touchHandled) { + return; + } + + // Interaction was not a click + this._touchMoved = true; + + // Simulate the mousemove event + simulateMouseEvent(event, 'mousemove'); + }; + + /** + * Handle the jQuery UI widget's touchend events + * @param {Object} event The document's touchend event + */ + mouseProto._touchEnd = function (event) { + + // Ignore event if not handled + if (!touchHandled) { + return; + } + + // Simulate the mouseup event + simulateMouseEvent(event, 'mouseup'); + + // Simulate the mouseout event + simulateMouseEvent(event, 'mouseout'); + + // If the touch interaction did not move, it should trigger a click + if (!this._touchMoved) { + + // Simulate the click event + simulateMouseEvent(event, 'click'); + } + + // Unset the flag to allow other widgets to inherit the touch event + touchHandled = false; + }; + + /** + * A duck punch of the $.ui.mouse _mouseInit method to support touch events. + * This method extends the widget with bound touch event handlers that + * translate touch events to mouse events and pass them to the widget's + * original mouse event handling methods. + */ + mouseProto._mouseInit = function () { + + var self = this; + + // Delegate the touch handlers to the widget's element + self.element + .bind('touchstart', $.proxy(self, '_touchStart')) + .bind('touchmove', $.proxy(self, '_touchMove')) + .bind('touchend', $.proxy(self, '_touchEnd')); + + // Call the original $.ui.mouse init method + _mouseInit.call(self); + }; + +})(jQuery); \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/www/js/yaf-basics.js b/fhem/contrib/YAF/YAF/www/js/yaf-basics.js new file mode 100644 index 000000000..c53887893 --- /dev/null +++ b/fhem/contrib/YAF/YAF/www/js/yaf-basics.js @@ -0,0 +1,438 @@ +/* + * ######################################################################################## + * + * yaf-basics.js + * + * YAF - Yet Another Floorplan + * FHEM Projektgruppe Hochschule Karlsruhe, 2013 + * Markus Mangei, Daniel Weisensee, Prof. Dr. Peter A. Henning + * + * ######################################################################################## + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * ######################################################################################## + */ +function get_current_view_id() { + return current_view_id; +} + +function get_current_widget_id() { + return current_widget_id; +} + +// Ändert den Modus der Oberfläche +// mode: id des Modus +function switch_mode(new_mode) { + view_mode = new_mode; + if (new_mode == 0) { + // Live Modus + $(".widgets").draggable("disable"); + } else if (new_mode == 1) { + // Positionierungsmodus + $(".widgets").draggable("enable"); + } +} + +// Timer für den Reload +// Wenn startIntervall = 1 ist, dann wird die Schleife gestartet, +// ansonsten ist es ein einmaliger aufruf +function refreshWidgets() { + $.each(widgets, function (index, widget) { + update_widget(widget[0], widget[1], widget[2]) + }); + setTimeout(function () { + refreshWidgets(); + }, + refreshTime * 1000); +} + +function init_RefreshWidgets() { + $.ajax({ + async: true, + url: "../../ajax/global/getRefreshTime", + context: document.body, + success: function (_refreshTime) { + refreshTime = _refreshTime; + refreshWidgets(); + } + }); +} + +// Läd die Sichten über AJAX vom Server. +// callback: wird aufgerufen, wenn der Server geantwortet hat +function load_views(callback) { + console.log("called load_views()"); + $.ajax({ + async: true, + url: "../../ajax/global/getViews", + context: document.body, + success: function (jsondata) { + views = jQuery.parseJSON(jsondata); + console.log(views); + if (callback) { + callback(); + } + } + }); + return; +} + +// Fügt eine neue Sicht zu den Tabs hinzu. +// id: Id der Sicht +// name: Name der Sicht +function add_tab(id, name) { + console.log("called add_tab()"); + // Neues Div nur erzeugen, wenn es noch keins mit der entsprechenden Id gibt + if ($("#tabs-" + id).length <= 0) { + $("#tabs").append("
    "); + } + $("#views").append("
  • " + name + "
  • "); + $("#tabs").tabs("refresh"); + return; +} + +// Löscht eine Sicht aus den Tabs. +// Das
    sowie der
  • Eintrag werden gelöscht. +// id: Id der zu löschenden Sicht +function delete_tab(id) { + // Kann noch optimiert werden! + console.log("called delete_tab()"); + $("#tabs-" + id).remove(); + $("#tabs_li-" + id).remove(); + load_views(show_views); + return; +} + +// Zeigt alle Tabs neu an. +// Zuerst werden alle Tabs gelöscht und anschließend neu anzeigen. +function show_views() { + console.log("called show_views()"); + $("#views").html(""); + + if (views.length == 0) { + $('#views').hide(); + $('#tabs_error').html("Es wurden keine Sichten gefunden!"); + $('#tabs_error').show(); + } else { + $('#tabs_error').hide(); + $('#views').show(); + var selected_view_id = get_current_view_id(); + var selected = 0; + var minId = 999; + $.each(views, function (index, view) { + add_tab(view[0], view[1]); + if (selected_view_id == view[0]) { + $('#tabs').tabs("select", "#tabs-" + view[0]); + selected = 1; + } + if (view[0] < minId) { + minId = view[0]; + } + }); + if (! selected) { + $('#tabs').tabs("select", "#tabs-" + minId); + } + } + + return; +} + +// Zeigt ein neues Hintergrundbild in einer bestimmten Sicht an. +// view_id: Die Sicht, in der das Hintergrundbild eingefügt werden soll +// file: Pfad und Dateiname der Grafik +// x_pos: x Positon +// y_pos: y Position +function add_background_image(view_id, file, x_pos, y_pos) { + $("#tabs-" + view_id).append(""); +} + +function update_widget(name, view_id, widget_id) { + console.log("update_widget " + name); + try { + eval(name + "_update_widget(" + view_id + ", " + widget_id + ")"); + } + catch (exception) { + console.log("Error in update_widget()"); + } +} + +// Zeigt ein neues Widget in einer bestimmten Sicht an. +// view_id: Die Sicht, in der das Hintergrundbild eingefügt werden soll +// name: Typ des Widgets +// x_pos: x Positon +// y_pos: y Position +// attr_array: Ein Array mit den Attributen des Widgets. +function add_widget(view_id, widget_id, name, x_pos, y_pos, attr_array) { + var widget_html = ""; + $.ajax({ + type: "GET", + async: false, + url: "../../ajax/widget/" + name + "/getwidget_html", + context: document.body, + success: function (result) { + widget_html = result; + } + }); + $("#tabs-" + view_id).append("
    " + widget_html + "
    "); + + update_widget(name, view_id, widget_id); + + $("#widget_" + view_id + "_" + widget_id).click(function () { + if (view_mode == 0) { + try { + eval(name + "_on_click(" + view_id + ", " + widget_id + ")"); + } + catch (exception) { + console.log("Error in on_click()"); + } + } else if (view_mode == 1) { + if (! widgetWasMoved) { + $("#widget_menue").show(); + current_widget_id = widget_id; + var top = $("#widget_" + view_id + "_" + widget_id).position().top; + var left = $("#widget_" + view_id + "_" + widget_id).position().left; + // Nach links anzeigen + var offsetLeft = $("#widget_" + view_id + "_" + widget_id).width(); + var positionLeft = left + offsetLeft - 10; + var positionTop = top - 23; + $("#widget_menue").css("top", positionTop); + $("#widget_menue").css("left", positionLeft); + setTimeout(function () { + if (close_widget_menue) { + $("#widget_menue").hide(); + } + }, + 2500); + } + } + }); + + $("#widget_" + view_id + "_" + widget_id).draggable({ + containment: "parent", + start: function (event, ui) { + close_widget_menue = true; + $("#widget_menue").hide(); + }, + stop: function (event, ui) { + widgetWasMoved = true; + setTimeout(function () { + widgetWasMoved = false; + }, + 500); + // Neue Position des Widget speichern. Kommastellen werden abgeschnitten. + x_pos = parseInt(ui.position.left); + y_pos = parseInt(ui.position.top); + widget_id = $(event.target).attr("id").split("_")[2]; + view_id = $(event.target).attr("id").split("_")[1]; + console.log("view-id: " + get_current_view_id() + " widget-id: " + widget_id + " x-pos: " + x_pos + " y-pos: " + y_pos); + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/global/setWidgetPosition", + data: "view_id=" + view_id + "&widget_id=" + widget_id + "&x_pos=" + x_pos + "&y_pos=" + y_pos, + context: document.body, + success: function (jsondata) { + console.log("Widget Position geändert: " + jsondata) + } + }); + } + }); + + // widget in Widgetliste einfügen + var widget = new Array(name, get_current_view_id(), widget_id); + widgets[widgets.length] = widget; +} + +// Behandelt das öffnen eines Tabs +// Entweder der Inhalt wurde bereits geladen, oder er muss über +// Ajax nachgeladen werden. +function activate_tab(view_id) { + if (! $("#tabs-" + view_id).hasClass("isLoaded")) { + current_view_id = view_id; + console.log("activate tab: " + view_id); + console.log("load widgets"); + $("#tabs-" + view_id).html(""); + // Speichern, dass view bereits geladen wurde + $("#tabs-" + view_id).addClass("isLoaded"); + $("#tabs-" + view_id).html(""); + $.ajax({ + async: false, + url: "../../ajax/global/getView", + data: "id=" + view_id, + context: document.body, + success: function (jsondata) { + var view_data = jQuery.parseJSON(jsondata); + // background images laden + if (view_data.backgrounds) { + $.each(view_data.backgrounds, function (index, background) { + add_background_image(view_id, background.img_url, background.x_pos, background.y_pos); + }); + } else { + console.log("keine Hintergrundbilder vorhanden!"); + } + // widgets laden + if (view_data.widgets) { + $.each(view_data.widgets, function (index, widget) { + widget_x_pos = widget.x_pos; + widget_y_pos = widget.y_pos; + widget_name = widget.name; + widget_id = widget.id; + add_widget(view_id, widget_id, widget_name, widget_x_pos, widget_y_pos, 0); + }); + // Aktueller View Mode für alle Widgets aktualisiert + switch_mode(view_mode); + } else { + console.log("keine widgets vorhanden!"); + } + } + }); + } else { + current_view_id = view_id; + console.log("switch to activated tab: " + view_id); + } + + return; +} + +// Initialisiert die Tabs. Diese Funktion muss nur einmal aufgerufen werden. +// Sobald das Tab gewechselt wird, wird die Funktion activate_tab(id) +// aufgerufen. +function init_tabs() { + $("#tabs").tabs({ + activate: function (event, ui) { + activate_tab(ui.newPanel.selector.substr(6)); + }, + create: function (event, ui) { + //activate_tab(ui.panel.selector.substr(6)); + } + }); + $("#tabs").resizable({ + containment: $(".widgets") + }); +} + +// Initialisiert das Menü. +function init_menue() { + $("#button_back").button({ + icons: { + secondary: "ui-icon-circle-arrow-w" + } + }); + + $("#button_addview").button({ + icons: { + secondary: "ui-icon-plusthick" + } + }); + + $("#button_manageviews").button({ + icons: { + secondary: "ui-icon-plusthick" + } + }); + + $("#button_addwidget").button({ + icons: { + secondary: "ui-icon-plusthick" + } + }); + + $("#button_managewidgets").button({ + icons: { + secondary: "ui-icon-plusthick" + } + }); + + $("#button_settings").button({ + icons: { + secondary: "ui-icon-pencil" + } + }); + + $("#widget_menue_edit").button({ + icons: { + secondary: "ui-icon-pencil" + } + }); + + $("#widget_menue_delete").button({ + icons: { + secondary: "ui-icon-trash" + } + }); + + $("#button_editview").buttonset(); +} + +// Initialisiert die Handler +function init_handlers() { + $("#button_back").click(function () { + window.location.href = "../../../../fhem"; + return false; + }); + + $("#button_settings").click(function () { + $("#dialog_settings").dialog("open"); + return false; + }); + + $("#button_addview").click(function () { + $("#dialog_addview").dialog("open"); + return false; + }); + + $("#button_manageviews").click(function () { + $("#dialog_manageviews").dialog("open"); + return false; + }); + + $("#button_addwidget").click(function () { + $("#dialog_addwidget").dialog("open"); + return false; + }); + + $("#button_switchmode_0").click(function () { + if (view_mode != 0) { + switch_mode(0); + } + }); + + $("#button_switchmode_1").click(function () { + if (view_mode != 1) { + switch_mode(1); + } + }); + + $("#widget_menue_delete").click(function () { + $("#label_deletewidget").html("xy"); + $("#dialog_deletewidget").dialog("open"); + }); + + $("#widget_menue_edit").click(function () { + $("#label_editwidget").html("xy"); + $("#dialog_editwidget").dialog("open"); + $("#widget_menue").hide(); + close_widget_menue = true; + }); + + $("#widget_menue").mouseenter(function () { + close_widget_menue = false; + }); + + $("#widget_menue").mouseleave(function () { + close_widget_menue = true; + $("#widget_menue").hide(); + }); +} \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/www/js/yaf-dialogs.js b/fhem/contrib/YAF/YAF/www/js/yaf-dialogs.js new file mode 100644 index 000000000..5e6732364 --- /dev/null +++ b/fhem/contrib/YAF/YAF/www/js/yaf-dialogs.js @@ -0,0 +1,371 @@ +/* + * ######################################################################################## + * + * yaf-dialogs.js + * + * YAF - Yet Another Floorplan + * FHEM Projektgruppe Hochschule Karlsruhe, 2013 + * Markus Mangei, Daniel Weisensee, Prof. Dr. Peter A. Henning + * + * ######################################################################################## + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * ######################################################################################## + */ +// Initialisiert die Dialoge +function init_dialogs() { + $("#dialog_addview").dialog({ + autoOpen: false, + resizable: true, + height: 300, + width: 400, + modal: true, + buttons: { + "Hinzufügen": function (event) { + console.log("before: " + views); + $("#dialog_addview_loading").show(); + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/global/addView", + data: "name=" + $("#dialog_addview_name").val(), + context: document.body, + success: function (jsondata) { + $("#dialog_addview").dialog("close"); + load_views(show_views); + $("#dialog_addview_loading").hide(); + console.log("after: " + views); + } + }); + $(this).dialog("close"); + }, + "Abbrechen": function () { + $(this).dialog("close"); + } + } + }); + + $("#dialog_deleteview").dialog({ + autoOpen: false, + resizable: true, + height: 300, + width: 400, + modal: true, + buttons: { + "Löschen": function (ui) { + $.ajax({ + type: "GET", + async: false, + url: "../../ajax/global/deleteView", + data: "id=" + delete_view_id, + context: document.body, + success: function (jsondata) { + delete_tab(delete_view_id); + $("#dialog_deleteview").dialog("close"); + $("#manageviews_tr_" + delete_view_id).remove(); + } + }); + $(this).dialog("close"); + }, + "Abbrechen": function () { + $(this).dialog("close"); + } + } + }); + + $("#dialog_editview").dialog({ + autoOpen: false, + resizable: true, + height: 300, + width: 400, + modal: true, + buttons: { + "Speichern": function (ui) { + console.log("before: " + views); + $("#dialog_editview_loading").show(); + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/global/editView", + data: "id=" + edit_view_id + "&name=" + $("#dialog_editview_name").val(), + context: document.body, + success: function (jsondata) { + load_views(show_views); + $($("#manageviews_tr_" + edit_view_id).children().get(0)).text($("#dialog_editview_name").val()); + $("#dialog_editview_loading").hide(); + $("#dialog_editview").dialog("close"); + } + }); + $(this).dialog("close"); + }, + "Abbrechen": function () { + $(this).dialog("close"); + } + } + }); + + + $("#dialog_addwidget").dialog({ + autoOpen: false, + resizable: true, + height: 500, + width: 600, + modal: true, + buttons: { + "Schließen": function () { + $(this).dialog("close"); + } + }, + open: function (event, ui) { + $("#dialog_addwidget_loading").show(); + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/global/getWidgets", + context: document.body, + success: function (jsondata) { + var widgets = jQuery.parseJSON(jsondata); + $("#dialog_addwidget_table").html(""); + if (widgets) { + $.each(widgets, function (index, widget) { + $("#dialog_addwidget_table").append("" + widget + ""); + }); + $(".button_addwidget").button({ + icons: { + primary: "ui-icon-circle-plus" + }, + text: false + }); + $(".button_addwidget").click(function (ui) { + add_widget_name = $(ui.currentTarget).attr("id").substr(10); + $("#dialog_addwidget_setup_widget").html(add_widget_name); + $("#dialog_addwidget_setup").dialog("open"); + $("#dialog_addwidget_setup_loading").show(); + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/widget/" + add_widget_name + "/get_addwidget_setup_html", + context: document.body, + success: function (html_result) { + if (html_result != 0) { + $("#dialog_addwidget_setup_form").html(html_result); + } else { + $("#dialog_addwidget_setup_form").html("Das Widget stellt keine Konfigurationsmöglichkeiten bereit!") + } + $("#dialog_addwidget_setup_loading").hide(); + } + }); + console.log("widget hinzufügen: " + add_widget_name) + return false; + }); + } else { + console.log("keine Widgets vorhanden!") + } + $("#dialog_addwidget_loading").hide(); + } + }); + } + }); + + $("#dialog_addwidget_setup").dialog({ + autoOpen: false, + resizable: true, + height: 350, + width: 400, + modal: true, + buttons: { + "Hinzufügen": function (event) { + $("#dialog_addwidget_setup_loading").show(); + var attributes_array = new Array(); + $.ajax({ + type: "GET", + async: false, + url: "../../ajax/widget/" + add_widget_name + "/get_addwidget_prepare_attributes", + context: document.body, + success: function (js_result) { + try { + eval(js_result); + } + catch (exception) { + console.log("exception in dialog_addwidget_setup dialog event"); + } + } + }); + console.log(JSON.stringify(attributes_array)); + $.ajax({ + type: "GET", + async: false, + url: "../../ajax/global/addWidget", + data: "view_id=" + current_view_id + "&widget=" + add_widget_name + "&attributes=" + JSON.stringify(attributes_array), + context: document.body, + success: function (widgetId) { + // Position links oben x= 28 y = 69, muss auch in 01_YAF.pm in addWidget() Methode angepasst werden! + add_widget(current_view_id, widgetId, add_widget_name, 28, 69, attributes_array); + // Aktueller View Mode für alle Widgets aktualisiert + switch_mode(view_mode); + } + }); + $("#dialog_addwidget_setup_loading").hide(); + + $(this).dialog("close"); + }, + "Abbrechen": function () { + $(this).dialog("close"); + } + }, + open: function (event, ui) { + console.log("dialog widget hinzufügen geöffnet => inhalt laden"); + } + }); + + $("#dialog_deletewidget").dialog({ + autoOpen: false, + resizable: true, + height: 300, + width: 400, + modal: true, + buttons: { + "Löschen": function (ui) { + var view_id = get_current_view_id(); + var widget_id = get_current_widget_id(); + console.log("delete view " + view_id + " widget " + widget_id); + $.ajax({ + type: "GET", + async: false, + url: "../../ajax/global/deleteWidget", + data: "view_id=" + view_id + "&widget_id" + widget_id, + context: document.body, + success: function (jsondata) { + console.log("widget deleted"); + $("#dialog_deletewidget").dialog("close"); + $("#widget_menue").hide(); + $("#widget_" + view_id + "_" + widget_id).remove(); + } + }); + $(this).dialog("close"); + }, + "Abbrechen": function () { + $(this).dialog("close"); + } + } + }); + + $("#dialog_editwidget").dialog({ + autoOpen: false, + resizable: true, + height: 300, + width: 400, + modal: true, + buttons: { + "Speichern": function (ui) { + $(this).dialog("close"); + }, + "Abbrechen": function () { + $(this).dialog("close"); + } + } + }); + + + $("#dialog_manageviews").dialog({ + autoOpen: false, + resizable: true, + height: 500, + width: 600, + modal: true, + buttons: { + "Schließen": function () { + $(this).dialog("close"); + } + }, + open: function (event, ui) { + $("#dialog_manageviews-table").html(""); + $.each(views, function (index, view) { + $("#dialog_manageviews-table").append("" + view[1] + ""); + }); + $(".button_edit").button({ + icons: { + primary: "ui-icon-pencil" + }, + text: false + }); + $(".button_delete").button({ + icons: { + primary: "ui-icon-trash" + }, + text: false + }); + $(".button_delete").click(function (ui) { + var sichtName = $(ui.currentTarget.parentNode.parentNode.firstChild).html(); + delete_view_id = $(ui.currentTarget).attr("id").substr(12); + $("#label_deleteview").html(sichtName); + $("#dialog_deleteview").dialog("open"); + return false; + }); + $(".button_edit").click(function (ui) { + edit_view_name = $(ui.currentTarget.parentNode.parentNode.firstChild).html(); + edit_view_id = $(ui.currentTarget).attr("id").substr(12); + $("#dialog_editview_name").val(edit_view_name); + $("#dialog_editview").dialog("open"); + return false; + }); + } + }); + + $("#dialog_settings").dialog({ + autoOpen: false, + resizable: true, + height: 500, + width: 600, + modal: true, + buttons: { + "Speichern": function () { + $("#dialog_settings_loading").show(); + console.log("update widget refresh interval"); + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/global/setRefreshTime", + data: "interval=" + $("#dialog_settings_intervall").val(), + context: document.body, + success: function () { + refreshTime = $("#dialog_settings_intervall").val(); + $("#dialog_settings_loading").hide(); + $("#dialog_settings").dialog("close"); + } + }); + $(this).dialog("close"); + }, + "Abbrechen": function () { + $(this).dialog("close"); + } + }, + open: function (event, ui) { + console.log("dialog settings opened"); + $("#dialog_settings_loading").show(); + $.ajax({ + type: "GET", + async: true, + url: "../../ajax/global/getRefreshTime", + data: "interval=" + $("#dialog_settings_intervall").val(), + context: document.body, + success: function (refreshInterval) { + $("#dialog_settings_intervall").val(refreshInterval); + $("#dialog_settings_loading").hide(); + } + }); + } + }); +} diff --git a/fhem/contrib/YAF/YAF/www/yaf.htm b/fhem/contrib/YAF/YAF/www/yaf.htm new file mode 100755 index 000000000..9ea4fddf1 --- /dev/null +++ b/fhem/contrib/YAF/YAF/www/yaf.htm @@ -0,0 +1,181 @@ + + + + + + YAF GUI + + + + + + + + + + + + +
    + +
    +
    +
    + + +
    +
    +
      +
    +
    + +
    +
    + +
    +
    +

    Hier können Sie YAF eine neue Sicht hinzufügen.

    + +
    + +
    +
    +

    Hier können Sie die bestehende Sicht ändern.

    + +
    + +
    +
    +

    Sind Sie sicher, dass Sie die Sicht "" löschen Möchten? Es gehen alle Widgets verloren, die auf dieser Sicht verankert sind!

    +
    + +
    +
    +

    Hier können Sie einzelne Sichten löschen oder bearbeiten. Gelöschte Sichten können nicht wiederhergestellt werden!

    + +
    +
    + +
    +
    +

    Hier können Sie Widgets zur ausgewählten Sicht hinzufügen.

    + +
    +
    + +
    +
    +

    Widget vom Typ hinzufügen:

    +
    +
    + +
    +
    +

    Widget "" bearbeiten:

    +
    + +
    +
    +

    Sind Sie sicher, dass Sie das Widget "" löschen möchten?

    +
    + +
    +
    +

    Einstellungen

    + +
    + + + diff --git a/fhem/contrib/YAF/YAF/xml/xmlSchema.xsd b/fhem/contrib/YAF/YAF/xml/xmlSchema.xsd new file mode 100644 index 000000000..7f17a7b4b --- /dev/null +++ b/fhem/contrib/YAF/YAF/xml/xmlSchema.xsd @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/fhem/contrib/YAF/YAF/xml/yafConfig.xml.example b/fhem/contrib/YAF/YAF/xml/yafConfig.xml.example new file mode 100755 index 000000000..aa305e068 --- /dev/null +++ b/fhem/contrib/YAF/YAF/xml/yafConfig.xml.example @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fhem/contrib/YAF/fhem.cfg b/fhem/contrib/YAF/fhem.cfg new file mode 100644 index 000000000..665a9daae --- /dev/null +++ b/fhem/contrib/YAF/fhem.cfg @@ -0,0 +1,88 @@ +################################################################################ +# +# fhem.cfg +# Exemplary fhem.cfg for demonstration purposes. +# Defines YAF and Floorplan and demonstrates the binding between the lamp widgets +# This file is not copied to /opt/fhem during the installation process! +# +# YAF - Yet Another Floorplan +# FHEM Projektgruppe Hochschule Karlsruhe, 2013 +# Markus Mangei, Daniel Weisensee +# +################################################################################ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +################################################################################ + +attr global logfile ./log/fhem-%Y-%m.log +attr global modpath . # where our FHEM directory is +attr global statefile ./log/fhem.save # where to save the state of the devices +attr global verbose 3 # "normal" verbosity (min 1, max 5) +attr global motd none + +define telnetPort telnet 7072 global # our TCP/IP port + +define WEB FHEMWEB 8083 global +define WEBphone FHEMWEB 8084 global +attr WEBphone smallscreen + +define WEBtablet FHEMWEB 8085 global +attr WEBtablet touchpad + +# Fake FileLog entry, to access the fhem log from FHEMWEB +define Logfile FileLog ./log/fhem-%Y-%m.log fakelog + +define autocreate autocreate +attr autocreate autosave +attr autocreate device_room %TYPE +attr autocreate filelog ./log/%NAME-%Y.log +attr autocreate weblink +attr autocreate weblink_room Plots + +# Disable this to avoid looking for new USB devices on startup +define initialUsbCheck notify global:INITIALIZED usb create + + +# If the above notify did not helped, then you probably have to enable some of +# the following lines. Verify first that /dev/xxx ist correct. + +#define FHZ FHZ /dev/USB0 +#define CUL CUL /dev/ttyACM0@9600 1234 +#attr CUL rfmode HomeMatic + +#define EUL TCM 310 /dev/ttyACM0@57600 +#define BscBor TCM 120 /dev/ttyUSB0@9600 +#define BscSmartConnect TCM 310 /dev/ttyUSB0@57600 + +################################################################################ +# [YAF project] Configure YAF - Yet Another Floorplan +################################################################################ +define yafVar YAF + +################################################################################ +# [YAF project] Configure Floorplan +################################################################################ +define Erdgeschoss FLOORPLAN +attr Erdgeschoss fp_arrange 1 + +define ez_LichtRegal FS20 6969 01 +attr ez_LichtRegal fp_Erdgeschoss 194,384,0, +attr ez_LichtRegal model fs20st +attr ez_LichtRegal room Schlafen + +define ez_LichtRegal2 FS20 6969 02 +attr ez_LichtRegal2 fp_Erdgeschoss 59,580,0, +attr ez_LichtRegal2 model fs20st +attr ez_LichtRegal2 room Bad \ No newline at end of file diff --git a/fhem/contrib/YAF/yaf-0.3.tar.gz b/fhem/contrib/YAF/yaf-0.3.tar.gz deleted file mode 100644 index f02b19d6b27f5f320bf84e0c7b76525c63357538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410091 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
    j!5vFyIm#Qo#QX6$iixkL9jR-%d9Gd6*H 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%0D-8KBqPl#*ys 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

    ;WS_Hra_p*33oTtPZrt<|NtA})c%e^?7-W2m{O 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 z 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 YLI1_Gcoxs%xy9#y09t3}+5i9)0F$b#CIA2c diff --git a/fhem/contrib/YAF/yaf-0.4.tar.gz b/fhem/contrib/YAF/yaf-0.4.tar.gz deleted file mode 100644 index 56b9164ecde15ded3b77b853d4dc2a72f19dcab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410385 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Ǐ|2oipy)d}o>9aoTlv0YJL(Y> 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%0D8t%1@}WM!c#;w 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⪙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