Bugzilla – Attachment 10365 Details for
Bug 8181
Replace DynArch calendar widget with jQueryUI version
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 8181 [REVISED] Replace DynArch calendar widget with jQueryUI version
Bug-8181-REVISED-Replace-DynArch-calendar-widget-w.patch (text/plain), 627.96 KB, created by
Owen Leonard
on 2012-06-19 16:37:10 UTC
(
hide
)
Description:
Bug 8181 [REVISED] Replace DynArch calendar widget with jQueryUI version
Filename:
MIME Type:
Creator:
Owen Leonard
Created:
2012-06-19 16:37:10 UTC
Size:
627.96 KB
patch
obsolete
>From 5a533e8d508526a025c046d9a5a0a8ee187aff16 Mon Sep 17 00:00:00 2001 >From: Owen Leonard <oleonard@myacpl.org> >Date: Tue, 24 Apr 2012 10:49:15 -0400 >Subject: [PATCH] Bug 8181 [REVISED] Replace DynArch calendar widget with > jQueryUI version >Content-Type: text/plain; charset="utf-8" > >All instances of the old DynArch calendar have been replaced with >jQueryUI versions and the old library files have been removed. > >calendar.inc has been modified to include jQueryUI localization >strings and global configuration options. Just add a "datepicker" >class to an input field to trigger a datepicker prompt. > >If you would like two fields in one from to limit each other (one >is date from, one is date to), add these classes to each: >"datepickerfrom" and "datepickerto." This will prevent an invalid >entry, e.g. a date in the latter which falls before the former. > >jQueryUI is now upgraded to the latest verision, 1.8.21. > >Edit: Now with proper translatability, date formatting, first day >of the week handling, and RTL support. >--- > .../intranet-tmpl/prog/en/css/staff-global.css | 40 +- > .../intranet-tmpl/prog/en/includes/calendar.inc | 157 +- > .../prog/en/includes/checkouts-table-footer.inc | 17 +- > .../prog/en/includes/suggestions-add-search.inc | 2 +- > koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js | 3 +- > .../intranet-tmpl/prog/en/lib/calendar/cal.gif | Bin 127 -> 0 bytes > .../prog/en/lib/calendar/calendar-en.js | 127 -- > .../prog/en/lib/calendar/calendar-setup.js | 182 --- > .../prog/en/lib/calendar/calendar-system.css | 254 --- > .../intranet-tmpl/prog/en/lib/calendar/calendar.js | 1714 -------------------- > .../prog/en/lib/calendar/menuarrow.gif | Bin 68 -> 0 bytes > .../lib/jquery/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes > .../lib/jquery/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes > .../intranet-tmpl/prog/en/lib/jquery/jquery-ui.css | 132 +- > .../intranet-tmpl/prog/en/lib/jquery/jquery-ui.js | 18 +- > .../prog/en/lib/jquery/plugins/ui.tabs.css | 81 - > .../prog/en/lib/jquery/plugins/ui.tabs.js | 517 ------ > .../prog/en/modules/acqui/histsearch.tt | 29 +- > .../prog/en/modules/acqui/lateorders.tt | 31 +- > .../intranet-tmpl/prog/en/modules/acqui/parcels.tt | 11 +- > .../prog/en/modules/admin/aqbudgetperiods.tt | 57 +- > .../prog/en/modules/admin/aqcontract.tt | 28 +- > .../intranet-tmpl/prog/en/modules/admin/aqplan.tt | 1 - > .../prog/en/modules/admin/categorie.tt | 14 +- > .../prog/en/modules/admin/smart-rules.tt | 27 +- > .../prog/en/modules/circ/circulation.tt | 71 +- > .../intranet-tmpl/prog/en/modules/circ/overdue.tt | 36 +- > .../prog/en/modules/circ/pendingreserves.tt | 70 +- > .../prog/en/modules/circ/reserveratios.tt | 73 +- > .../intranet-tmpl/prog/en/modules/labels/search.tt | 28 +- > .../prog/en/modules/members/memberentrygen.tt | 67 +- > .../prog/en/modules/members/moremember.tt | 31 +- > .../prog/en/modules/reports/acquisitions_stats.tt | 153 +- > .../prog/en/modules/reports/bor_issues_top.tt | 147 +- > .../prog/en/modules/reports/borrowers_out.tt | 20 +- > .../prog/en/modules/reports/borrowers_stats.tt | 60 +- > .../prog/en/modules/reports/cat_issues_top.tt | 161 +- > .../prog/en/modules/reports/catalogue_stats.tt | 38 +- > .../prog/en/modules/reports/dictionary.tt | 30 +- > .../en/modules/reports/guided_reports_start.tt | 56 +- > .../prog/en/modules/reports/issues_avg_stats.tt | 147 +- > .../modules/reports/issues_by_borrower_category.tt | 1 - > .../prog/en/modules/reports/issues_stats.tt | 59 +- > .../prog/en/modules/reports/reserves_stats.tt | 342 +--- > .../prog/en/modules/reports/stats_screen.tt | 25 +- > .../prog/en/modules/reserve/request.tt | 85 +- > .../prog/en/modules/serials/checkexpiration.tt | 13 +- > .../prog/en/modules/serials/claims.tt | 32 +- > .../prog/en/modules/serials/subscription-add.tt | 101 +- > .../prog/en/modules/suggestion/suggestion.tt | 106 +- > .../intranet-tmpl/prog/en/modules/tags/review.tt | 47 +- > .../prog/en/modules/tools/cleanborrowers.tt | 27 +- > .../intranet-tmpl/prog/en/modules/tools/export.tt | 36 +- > .../prog/en/modules/tools/holidays.tt | 191 +-- > .../prog/en/modules/tools/inventory.tt | 24 +- > .../prog/en/modules/tools/koha-news.tt | 28 +- > .../prog/en/modules/tools/modborrowers.tt | 15 +- > .../prog/en/modules/tools/scheduler.tt | 18 +- > .../intranet-tmpl/prog/en/modules/tools/viewlog.tt | 33 +- > .../prog/img/famfamfam/silk/calendar.png | Bin 0 -> 675 bytes > koha-tmpl/opac-tmpl/prog/en/css/opac.css | 11 + > koha-tmpl/opac-tmpl/prog/en/includes/calendar.inc | 106 -- > koha-tmpl/opac-tmpl/prog/en/js/script.js | 24 + > koha-tmpl/opac-tmpl/prog/en/lib/calendar/cal.gif | Bin 127 -> 0 bytes > .../opac-tmpl/prog/en/lib/calendar/calendar-en.js | 127 -- > .../prog/en/lib/calendar/calendar-setup.js | 179 -- > .../prog/en/lib/calendar/calendar-system.css | 254 --- > .../opac-tmpl/prog/en/lib/calendar/calendar.js | 1714 -------------------- > .../opac-tmpl/prog/en/lib/calendar/menuarrow.gif | Bin 68 -> 0 bytes > .../lib/jquery/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes > .../lib/jquery/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes > .../opac-tmpl/prog/en/lib/jquery/jquery-ui.css | 94 +- > .../opac-tmpl/prog/en/lib/jquery/jquery-ui.js | 18 +- > .../opac-tmpl/prog/en/modules/opac-reserve.tt | 61 +- > koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt | 37 +- > 75 files changed, 895 insertions(+), 7543 deletions(-) > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/calendar/cal.gif > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-en.js > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-setup.js > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-system.css > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar.js > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/calendar/menuarrow.gif > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_222222_256x240.png > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_454545_256x240.png > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/ui.tabs.css > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/ui.tabs.js > create mode 100644 koha-tmpl/intranet-tmpl/prog/img/famfamfam/silk/calendar.png > delete mode 100644 koha-tmpl/opac-tmpl/prog/en/includes/calendar.inc > delete mode 100644 koha-tmpl/opac-tmpl/prog/en/lib/calendar/cal.gif > delete mode 100644 koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-en.js > delete mode 100644 koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-setup.js > delete mode 100644 koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-system.css > delete mode 100644 koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar.js > delete mode 100644 koha-tmpl/opac-tmpl/prog/en/lib/calendar/menuarrow.gif > create mode 100644 koha-tmpl/opac-tmpl/prog/en/lib/jquery/images/ui-icons_222222_256x240.png > create mode 100644 koha-tmpl/opac-tmpl/prog/en/lib/jquery/images/ui-icons_454545_256x240.png > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css >index 555005b..d3b29cb 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css >+++ b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css >@@ -2114,13 +2114,10 @@ div.pager { > padding : .3em .5em .3em .5em; > margin : .4em 0; > } >-div.pager img {+/* jQuery UI Autocomplete */ >-+ul.ui-autocomplete li { list-style-type: none; font-size : inherit; } >-+ul.ui-autocomplete { -webkit-box-shadow: 2px 2px 2px rgba(0,0,0,.3); -moz-box-shadow: 2px 2px 2px rgba(0,0,0,.3); box-shadow: 2px 2px 2px rgba(0,0,0,.3); } >-+input.ui-autocomplete-input.active { background: transparent url("../../img/loading-small.gif") right center no-repeat; } >- >+div.pager img { > vertical-align : middle; > } >+ > div.pager img.last { > padding-right: 5px; > } >@@ -2160,31 +2157,9 @@ div#acqui_order_supplierlist > div.supplier > div.baskets { > } > > /* jQuery UI Autocomplete */ >-ul.ui-autocomplete li { >- list-style-type: none; >- font-size : inherit; >-} > >-ul.ui-autocomplete { >- -webkit-box-shadow: 2px 2px 2px rgba(0,0,0,.3); >- -moz-box-shadow: 2px 2px 2px rgba(0,0,0,.3); >- box-shadow: 2px 2px 2px rgba(0,0,0,.3); >-} >- >-.ui-autocomplete.ui-widget-content { >- background-image : none; >-} > >-.ui-autocomplete.ui-widget-content .ui-state-hover { >- border: 1px solid #B9D8D9; >- background: #E6F0F2 none; >- font-weight: normal; >- color: #212121; >-} > >-.ui-autocomplete-loading { >- background: #FFF url("../../img/loading-small.gif") right center no-repeat; >-} > > /* jQuery UI standard tabs */ > .ui-tabs-nav .ui-tabs-selected a, >@@ -2364,3 +2339,14 @@ ul.ui-tabs-nav li { > #header_search .ui-corner-top { > border-radius: 0 0 4px 4px; > } >+ >+/* jQuery UI Datepicker */ >+.ui-datepicker-trigger { >+ vertical-align: middle; >+ margin : 0 3px; >+} >+.ui-datepicker { >+ -moz-box-shadow: 1px 1px 3px 0 #666; >+ -webkit-box-shadow: 1px 1px 3px 0 #666; >+ box-shadow: 1px 1px 3px 0 #666; >+} >\ No newline at end of file >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc >index d70716c..1772769 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc >@@ -1,106 +1,57 @@ >-<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/calendar/calendar-system.css"/> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar.js"></script> >-<script type="text/javascript"> >-// full day names >-Calendar._DN = new Array(_("Sunday"),_("Monday"),_("Tuesday"),_("Wednesday"),_("Thursday"),_("Friday"),_("Saturday"),_("Sunday")); >-// short day names >-Calendar._SDN = new Array(_("Sun"),_("Mon"),_("Tue"),_("Wed"),_("Thu"),_("Fri"),_("Sat"),_("Sun")); >-// First day of the week. "0" means display Sunday first, "1" means display >-// Monday first, etc. >-Calendar._FD = [% CalendarFirstDayOfWeek %]; >-// full month names >-Calendar._MN = new Array(_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December")); >-// short month names >-Calendar._SMN = new Array(_("Jan"),_("Feb"),_("Mar"),_("Apr"),_("May"),_("Jun"),_("Jul"),_("Aug"),_("Sep"),_("Oct"),_("Nov"),_("Dec")); >-// tooltips >-Calendar._TT = {}; >-Calendar._TT["INFO"] = _("About the calendar"); >- >-Calendar._TT["ABOUT"] = >-_("Dhtml Date/Time Selector")+"\n" + >-"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-) >-_("For latest version visit: http://dynarch.com/mishoo/calendar.epl")+"\n" + >-_("Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details.") + >-"\n\n" + >-_("Date selection:")+"\n" + >-_("- Use the \xab, \xbb buttons to select year")+"\n" + >-_("- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month")+"\n" + >-_("- Hold mouse button on any of the above buttons for faster selection."); >-Calendar._TT["ABOUT_TIME"] = "\n\n" + >-_("Time selection:")+"\n" + >-_("- Click on any of the time parts to increase it")+"\n" + >-_("- or Shift-click to decrease it")+"\n" + >-_("- or click and drag for faster selection."); >- >-Calendar._TT["PREV_YEAR"] = _("Prev. year (hold for menu)"); >-Calendar._TT["PREV_MONTH"] = _("Prev. month (hold for menu)"); >-Calendar._TT["GO_TODAY"] = _("Go to Today"); >-Calendar._TT["NEXT_MONTH"] = _("Next month (hold for menu)"); >-Calendar._TT["NEXT_YEAR"] = _("Next year (hold for menu)"); >-Calendar._TT["SEL_DATE"] = _("Select date"); >-Calendar._TT["DRAG_TO_MOVE"] = _("Drag to move"); >-Calendar._TT["PART_TODAY"] = _(" (today)"); >- >-// the following is to inform that "%s" is to be the first day of week >-// %s will be replaced with the day name. >-Calendar._TT["DAY_FIRST"] = _("Display %s first"); >- >-// This may be locale-dependent. It specifies the week-end days, as an array >-// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 >-// means Monday, etc. >-Calendar._TT["WEEKEND"] = "0,6"; >- >-Calendar._TT["CLOSE"] = _("Close"); >-Calendar._TT["TODAY"] = _("Today"); >-Calendar._TT["TIME_PART"] = _("(Shift-)Click or drag to change value"); >- >-// date formats >-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; >-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; >- >-Calendar._TT["WK"] = _("wk"); >-Calendar._TT["TIME"] = _("Time:"); >-</script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-setup.js"></script> > <script type="text/javascript"> > //<![CDATA[ >-var debug = "[% debug %]"; >-var dformat = "[% dateformat %]"; >-var sentmsg = 0; >-if (debug > 1) {alert("dateformat: " + dformat + "\ndebug is on (level " + debug + ")");} >- >-function Date_from_syspref(dstring) { >- var dateX = dstring.split(/[-/]/); >- if (debug > 1 && sentmsg < 1) {sentmsg++; alert("Date_from_syspref(" + dstring + ") splits to:\n" + dateX.join("\n"));} >- if (dformat === "iso") { >- return new Date(dateX[0], (dateX[1] - 1), dateX[2]); // YYYY-MM-DD to (YYYY,m(0-11),d) >- } else if (dformat === "us") { >- return new Date(dateX[2], (dateX[0] - 1), dateX[1]); // MM/DD/YYYY to (YYYY,m(0-11),d) >- } else if (dformat === "metric") { >- return new Date(dateX[2], (dateX[1] - 1), dateX[0]); // DD/MM/YYYY to (YYYY,m(0-11),d) >- } else { >- if (debug > 0) {alert("KOHA ERROR - Unrecognized date format: " +dformat);} >- return 0; >- } >-} >- >-function get_Calendar_limit (date,did) { >- // this function could be moved to a static calendar-extras.js file >- var dvalue = document.getElementById(did).value; >- if (dvalue == "") { return false; } >- var limitDate = Date_from_syspref(dvalue); >- if (debug && debug > 5) { >- var month = date.getMonth() + 1; >- var dateString = date.getFullYear() + '-' + month + '-' + date.getDate(); >- alert("Comparing incoming (" + dateString + ") vs " >- + "'" + did + "' limit\n" >- + "\n thisdate: " + date >- + "\nlimitdate: " + limitDate >- + "\nlimit > thisdate : " + (limitDate > date) >- + "\nlimit < thisdate : " + (limitDate < date) >- ); >- } >- return limitDate; >-} >+/* Instead of including multiple localization files as you would normally see with >+ jQueryUI we expose the localization strings in the default configuration */ >+jQuery(function($){ >+ $.datepicker.regional[''] = { >+ closeText: _('All done doing calendar'), >+ prevText: _('Prev'), >+ nextText: _('Next'), >+ currentText: _('Today'), >+ monthNames: [_('January'),_('February'),_('March'),_('April'),_('May'),_('June'), >+ _('July'),_('August'),_('September'),_('October'),_('November'),_('December')], >+ monthNamesShort: [_('Jan'), _('Feb'), _('Mar'), _('Apr'), _('May'), _('Jun'), >+ _('Jul'), _('Aug'), _('Sep'), _('Oct'), _('Nov'), _('Dec')], >+ dayNames: [_('Sunday'), _('Monday'), _('Tuesday'), _('Wednesday'), _('Thursday'), _('Friday'), _('Saturday')], >+ dayNamesShort: [_('Sun'), _('Mon'), _('Tue'), _('Wed'), _('Thu'), _('Fri'), _('Sat')], >+ dayNamesMin: [_('Su'),_('Mo'),_('Tu'),_('We'),_('Th'),_('Fr'),_('Sa')], >+ weekHeader: _('Wk'), >+ dateFormat: '[% IF ( dateformat_us ) %]mm/dd/yy[% ELSIF ( dateformat_metric ) %]dd/mm/yy[% ELSE %]yy-mm-dd[% END %]', >+ firstDay: [% CalendarFirstDayOfWeek %], >+ isRTL: [% IF ( bidi ) %]true[% ELSE %]false[% END %], >+ showMonthAfterYear: false, >+ yearSuffix: ''}; >+ $.datepicker.setDefaults($.datepicker.regional['']); >+}); >+ >+$(document).ready(function(){ >+ >+$.datepicker.setDefaults({ >+ showOn: "both", >+ changeMonth: true, >+ changeYear: true, >+ buttonImage: '[% interface %]/[% theme %]/img/famfamfam/silk/calendar.png', >+ buttonImageOnly: true, >+ showButtonPanel: true, >+ showOtherMonths: true, >+ selectOtherMonths: true >+ }); >+ >+ $( ".datepicker" ).datepicker(); >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( ".datepickerfrom, .datepickerto" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+}); > //]]> >-</script> >+</script> >\ No newline at end of file >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table-footer.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table-footer.inc >index 5638710..0d994c9 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table-footer.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table-footer.inc >@@ -4,21 +4,8 @@ > <td>[% totaldue %]</td> > <td>[% totalprice %]</td> > <td colspan="2"> >- <p>Renewal due date: <input type="text" size="8" id="newduedate" name="newduedate" value="[% newduedate %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="newduedate_button" alt="Show Calendar" /> >- <script type="text/javascript"> //<![CDATA[ >- //#TODO - ADD syspref (AllowPostDatedCheckouts). >- Calendar.setup( >- { >- inputField : "newduedate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "newduedate_button", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- //]]> >- </script></p> >+ <p>Renewal due date: <input type="text" size="8" id="newduedate" name="newduedate" value="[% newduedate %]" /> >+</p> > <p><label>Forgive fines on return: <input type="checkbox" name="exemptfine" value="1" /></label></p> > </td> > </tr> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/suggestions-add-search.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/suggestions-add-search.inc >index dd4d9f5..7447ad7 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/suggestions-add-search.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/suggestions-add-search.inc >@@ -27,6 +27,6 @@ > <li><a href="#suggestions_search">Search suggestions</a></li> > [% IF ( CAN_user_circulate ) %]<li><a href="#circ_search">Check out</a></li>[% END %] > [% IF ( CAN_user_catalogue ) %]<li><a href="#catalog_search">Search the catalog</a></li>[% END %] >- </ul> >+ </ul> > </div> > <!-- End Suggestions Resident Search Box --> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js b/koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js >index 58fd190..125cd52 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js >+++ b/koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js >@@ -9,8 +9,9 @@ function _(s) { return s } // dummy function for gettext > if($("#header_search #checkin_search").length > 0){ $(document).bind('keydown','Alt+r',function (){ $("#header_search").tabs("select","#checkin_search"); $("#ret_barcode").focus(); }); } else { $(document).bind('keydown','Alt+r',function (){ location.href="/cgi-bin/koha/circ/returns.pl"; }); } > if($("#header_search #circ_search").length > 0){ $(document).bind('keydown','Alt+u',function (){ $("#header_search").tabs("select","#circ_search"); $("#findborrower").focus(); }); } else { $(document).bind('keydown','Alt+u',function(){ location.href="/cgi-bin/koha/circ/circulation.pl"; }); } > if($("#header_search #catalog_search").length > 0){ $(document).bind('keydown','Alt+q',function (){ $("#header_search").tabs("select","#catalog_search"); $("#search-form").focus(); }); } else { $(document).bind('keydown','Alt+q',function(){ location.href="/cgi-bin/koha/catalogue/search.pl"; }); } >- $(".focus").focus(); >+ $(".focus").focus(); > }); >+ > > YAHOO.util.Event.onContentReady("header", function () { > var oMoremenu = new YAHOO.widget.Menu("moremenu", { zindex: 2 }); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/cal.gif b/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/cal.gif >deleted file mode 100644 >index 8526cf5d19a915aa8073cf344873c4505491970d..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 127 >zcmZ?wbhEHb6krfwSj51v)Yr?)cd3`J*V1K6uU)?O9}E~67!-f9FfuT(G3Wr<K$QXv >z49qSWyY847oYHjLVc`>De9t*l<VeJ%XBvy%RED|e9CzS7vf7$yx78AzI7g1zCv(i5 >d_*Q7^L?2jGxayDN`t#4c54^3~-^9XT4FGnKF-ZUb > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-en.js b/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-en.js >deleted file mode 100644 >index 26b4c0c..0000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-en.js >+++ /dev/null >@@ -1,127 +0,0 @@ >-// ** I18N >- >-// Calendar EN language >-// Author: Mihai Bazon, <mishoo@infoiasi.ro> >-// Encoding: any >-// Distributed under the same terms as the calendar itself. >- >-// For translators: please use UTF-8 if possible. We strongly believe that >-// Unicode is the answer to a real internationalized world. Also please >-// include your contact information in the header, as can be seen above. >- >-// full day names >-Calendar._DN = new Array >-("Sunday", >- "Monday", >- "Tuesday", >- "Wednesday", >- "Thursday", >- "Friday", >- "Saturday", >- "Sunday"); >- >-// Please note that the following array of short day names (and the same goes >-// for short month names, _SMN) isn't absolutely necessary. We give it here >-// for exemplification on how one can customize the short day names, but if >-// they are simply the first N letters of the full name you can simply say: >-// >-// Calendar._SDN_len = N; // short day name length >-// Calendar._SMN_len = N; // short month name length >-// >-// If N = 3 then this is not needed either since we assume a value of 3 if not >-// present, to be compatible with translation files that were written before >-// this feature. >- >-// short day names >-Calendar._SDN = new Array >-("Sun", >- "Mon", >- "Tue", >- "Wed", >- "Thu", >- "Fri", >- "Sat", >- "Sun"); >- >-// First day of the week. "0" means display Sunday first, "1" means display >-// Monday first, etc. >-Calendar._FD = 0; >- >-// full month names >-Calendar._MN = new Array >-("January", >- "February", >- "March", >- "April", >- "May", >- "June", >- "July", >- "August", >- "September", >- "October", >- "November", >- "December"); >- >-// short month names >-Calendar._SMN = new Array >-("Jan", >- "Feb", >- "Mar", >- "Apr", >- "May", >- "Jun", >- "Jul", >- "Aug", >- "Sep", >- "Oct", >- "Nov", >- "Dec"); >- >-// tooltips >-Calendar._TT = {}; >-Calendar._TT["INFO"] = "About the calendar"; >- >-Calendar._TT["ABOUT"] = >-"DHTML Date/Time Selector\n" + >-"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-) >-"For latest version visit: http://dynarch.com/mishoo/calendar.epl\n" + >-"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + >-"\n\n" + >-"Date selection:\n" + >-"- Use the \xab, \xbb buttons to select year\n" + >-"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + >-"- Hold mouse button on any of the above buttons for faster selection."; >-Calendar._TT["ABOUT_TIME"] = "\n\n" + >-"Time selection:\n" + >-"- Click on any of the time parts to increase it\n" + >-"- or Shift-click to decrease it\n" + >-"- or click and drag for faster selection."; >- >-Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)"; >-Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)"; >-Calendar._TT["GO_TODAY"] = "Go Today"; >-Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)"; >-Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)"; >-Calendar._TT["SEL_DATE"] = "Select date"; >-Calendar._TT["DRAG_TO_MOVE"] = "Drag to move"; >-Calendar._TT["PART_TODAY"] = " (today)"; >- >-// the following is to inform that "%s" is to be the first day of week >-// %s will be replaced with the day name. >-Calendar._TT["DAY_FIRST"] = "Display %s first"; >- >-// This may be locale-dependent. It specifies the week-end days, as an array >-// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 >-// means Monday, etc. >-Calendar._TT["WEEKEND"] = "0,6"; >- >-Calendar._TT["CLOSE"] = "Close"; >-Calendar._TT["TODAY"] = "Today"; >-Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value"; >- >-// date formats >-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; >-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; >- >-Calendar._TT["WK"] = "wk"; >-Calendar._TT["TIME"] = "Time:"; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-setup.js b/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-setup.js >deleted file mode 100644 >index f96d090..0000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-setup.js >+++ /dev/null >@@ -1,182 +0,0 @@ >-/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ >- * --------------------------------------------------------------------------- >- * >- * The DHTML Calendar >- * >- * Details and latest version at: >- * http://dynarch.com/mishoo/calendar.epl >- * >- * This script is distributed under the GNU Lesser General Public License. >- * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html >- * >- * This file defines helper functions for setting up the calendar. They are >- * intended to help non-programmers get a working calendar on their site >- * quickly. This script should not be seen as part of the calendar. It just >- * shows you what one can do with the calendar, while in the same time >- * providing a quick and simple method for setting it up. If you need >- * exhaustive customization of the calendar creation process feel free to >- * modify this code to suit your needs (this is recommended and much better >- * than modifying calendar.js itself). >- */ >- >-/** >- * This function "patches" an input field (or other element) to use a calendar >- * widget for date selection. >- * >- * The "params" is a single object that can have the following properties: >- * >- * prop. name | description >- * ------------------------------------------------------------------------------------------------- >- * inputField | the ID of an input field to store the date >- * displayArea | the ID of a DIV or other element to show the date >- * button | ID of a button or other element that will trigger the calendar >- * eventName | event that will trigger the calendar, without the "on" prefix (default: "click") >- * ifFormat | date format that will be stored in the input field >- * daFormat | the date format that will be used to display the date in displayArea >- * singleClick | (true/false) whether the calendar is in single click mode or not (default: true) >- * firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc. >- * align | alignment (default: "Br"); if you don't know what's this see the calendar documentation >- * range | array with 2 elements. Default: [1900, 2999] -- the range of years available >- * weekNumbers | (true/false) if it's true (default) the calendar will display week numbers >- * flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID >- * flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar) >- * disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar >- * onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay) >- * onClose | function that gets called when the calendar is closed. [default] >- * onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar. >- * date | the date that the calendar will be initially displayed to >- * showsTime | default: false; if true the calendar will include a time selector >- * timeFormat | the time format; can be "12" or "24", default is "12" >- * electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close >- * step | configures the step of the years in drop-down boxes; default: 2 >- * position | configures the calendar absolute position; default: null >- * cache | if "true" (but default: "false") it will reuse the same calendar object, where possible >- * showOthers | if "true" (but default: "false") it will show days from other months too >- * >- * None of them is required, they all have default values. However, if you >- * pass none of "inputField", "displayArea" or "button" you'll get a warning >- * saying "nothing to setup". >- */ >-Calendar.setup = function (params) { >- function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } }; >- >- param_default("inputField", null); >- param_default("displayArea", null); >- param_default("button", null); >- param_default("eventName", "click"); >- param_default("ifFormat", "%Y/%m/%d"); >- param_default("daFormat", "%Y/%m/%d"); >- param_default("singleClick", true); >- param_default("disableFunc", 'dateStatusHandler'); >- param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined >- if (Calendar._FD) >- param_default("firstDay", Calendar._FD); >- else >- param_default("firstDay", 0); // defaults to "Sunday" first >- param_default("align", "Br"); >- param_default("range", [1900, 2999]); >- param_default("weekNumbers", true); >- param_default("flat", null); >- param_default("flatCallback", null); >- param_default("onSelect", null); >- param_default("onClose", null); >- param_default("onUpdate", null); >- param_default("date", null); >- param_default("showsTime", false); >- param_default("timeFormat", "24"); >- param_default("electric", true); >- param_default("step", 2); >- param_default("position", null); >- param_default("cache", false); >- param_default("showOthers", false); >- >- var tmp = ["inputField", "displayArea", "button"]; >- for (var i in tmp) { >- if (typeof params[tmp[i]] == "string") { >- params[tmp[i]] = document.getElementById(params[tmp[i]]); >- } >- } >- if (!(params.flat || params.inputField || params.displayArea || params.button)) { >- alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code"); >- return false; >- } >- >- function onSelect(cal) { >- var p = cal.params; >- var update = (cal.dateClicked || p.electric); >- if (update && p.flat) { >- if (typeof p.flatCallback == "function") >- p.flatCallback(cal); >- else >- alert("No flatCallback given -- doing nothing."); >- return false; >- } >- if (update && p.inputField) { >- p.inputField.value = cal.date.print(p.ifFormat); >- if (typeof p.inputField.onchange == "function") >- p.inputField.onchange(); >- } >- if (update && p.displayArea) >- p.displayArea.innerHTML = cal.date.print(p.daFormat); >- if (update && p.singleClick && cal.dateClicked) >- cal.callCloseHandler(); >- if (update && typeof p.onUpdate == "function") >- p.onUpdate(cal); >- }; >- >- if (params.flat != null) { >- if (typeof params.flat == "string") >- params.flat = document.getElementById(params.flat); >- if (!params.flat) { >- alert("Calendar.setup:\n Flat specified but can't find parent."); >- return false; >- } >- var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect); >- cal.showsTime = params.showsTime; >- cal.time24 = (params.timeFormat == "24"); >- cal.params = params; >- cal.weekNumbers = params.weekNumbers; >- cal.setRange(params.range[0], params.range[1]); >- cal.setDateStatusHandler(params.dateStatusFunc); >- cal.create(params.flat); >- cal.show(); >- return false; >- } >- >- var triggerEl = params.button || params.displayArea || params.inputField; >- triggerEl["on" + params.eventName] = function() { >- var dateEl = params.inputField || params.displayArea; >- var dateFmt = params.inputField ? params.ifFormat : params.daFormat; >- var mustCreate = false; >- var cal = window.calendar; >- if (!(cal && params.cache)) { >- window.calendar = cal = new Calendar(params.firstDay, >- params.date, >- params.onSelect || onSelect, >- params.onClose || function(cal) { cal.hide(); }); >- cal.showsTime = params.showsTime; >- cal.time24 = (params.timeFormat == "24"); >- cal.weekNumbers = params.weekNumbers; >- mustCreate = true; >- } else { >- if (params.date) >- cal.setDate(params.date); >- cal.hide(); >- } >- cal.showsOtherMonths = params.showOthers; >- cal.yearStep = params.step; >- cal.setRange(params.range[0], params.range[1]); >- cal.params = params; >- cal.setDateStatusHandler(params.dateStatusFunc); >- cal.setDateFormat(dateFmt); >- if (mustCreate) >- cal.create(); >- cal.parseDate(dateEl.value || dateEl.innerHTML); >- cal.refresh(); >- if (!params.position) >- cal.showAtElement(params.button || params.displayArea || params.inputField, params.align); >- else >- cal.showAt(params.position[0], params.position[1]); >- return false; >- }; >-}; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-system.css b/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-system.css >deleted file mode 100644 >index 1b89961..0000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar-system.css >+++ /dev/null >@@ -1,254 +0,0 @@ >-/* The main calendar widget. DIV containing a table. */ >- >-.calendar { >- position: relative; >- display: none; >- border: 1px solid; >- border-color: #fff #000 #000 #fff; >- font-size: 11px; >- cursor: default; >- background: Window; >- color: WindowText; >- font-family: tahoma,verdana,sans-serif; >- width:250px; >-} >- >-.calendar table { >- border: 1px solid; >- border-color: #fff #000 #000 #fff; >- font-size: 11px; >- cursor: default; >- background: Window; >- color: WindowText; >- font-family: tahoma,verdana,sans-serif; >- border-collapse:separate; >-} >- >-/* Header part -- contains navigation buttons and day names. */ >- >-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ >- text-align: center; >- padding: 1px; >- border: 1px solid; >- display: table-cell; >- -moz-border-radius: 0px; >- border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; >- background: ButtonFace; >-} >- >-.calendar .nav { >- background: ButtonFace url('menuarrow.gif') no-repeat 100% 100%; >-} >- >-.calendar thead .title { /* This holds the current "month, year" */ >- font-weight: bold; >- padding: 1px; >- border: 1px solid #000; >- background: ActiveCaption; >- color: CaptionText; >- text-align: center; >-} >- >-.calendar thead .headrow { /* Row <TR> containing navigation buttons */ >-} >- >-.calendar thead .daynames { /* Row <TR> containing the day names */ >-} >- >-.calendar thead .name { /* Cells <TD> containing the day names */ >- border-bottom: 1px solid ButtonShadow; >- padding: 2px; >- text-align: center; >- background: ButtonFace; >- color: ButtonText; >-} >- >-.calendar thead .weekend { /* How a weekend day name shows in header */ >-// color: #f00; >-} >- >-.calendar thead .hilite { /* How do the buttons in header appear when hover */ >- border: 2px solid; >- padding: 0px; >- border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; >-} >- >-.calendar thead .active { /* Active (pressed) buttons in header */ >- border-width: 1px; >- padding: 2px 0px 0px 2px; >- border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; >-} >- >-/* The body part -- contains all the days in month. */ >- >-.calendar tbody .day { /* Cells <TD> containing month days dates */ >- width: 2em; >- text-align: right; >- padding: 2px 4px 2px 2px; >-} >-.calendar tbody .day.othermonth { >- font-size: 80%; >- color: #aaa; >-} >-.calendar tbody .day.othermonth.oweekend { >- color: #faa; >-} >- >-.calendar table .wn { >- padding: 2px 3px 2px 2px; >- border-right: 1px solid ButtonShadow; >- background: ButtonFace; >- color: ButtonText; >-} >- >-.calendar tbody .rowhilite td { >-// background: Highlight; >-// color: HighlightText; >-} >- >-.calendar tbody td.hilite { /* Hovered cells <TD> */ >- padding: 1px 3px 1px 1px; >- border-top: 1px solid #fff; >- border-right: 1px solid #000; >- border-bottom: 1px solid #000; >- border-left: 1px solid #fff; >-} >- >-.calendar tbody td.active { /* Active (pressed) cells <TD> */ >-// padding: 2px 2px 0px 2px; >-// border: 1px solid; >-// border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; >-} >- >-.calendar tbody td.selected { /* Cell showing selected date */ >- font-weight: bold; >- border: 1px solid; >- border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; >- padding: 2px 2px 0px 2px; >- // background: ButtonFace; >- color: ButtonText; >-} >- >-.calendar tbody td.weekend { /* Cells showing weekend days */ >-// color: #f00; >-} >- >-.calendar tbody td.today { /* Cell showing today date */ >- font-weight: bold; >- color: #00f; >-} >- >-.calendar tbody td.disabled { color: GrayText; } >- >-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ >- visibility: hidden; >-} >- >-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ >- display: none; >-} >- >-/* The footer part -- status bar and "Close" button */ >- >-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */ >-} >- >-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */ >- background: ButtonFace; >- padding: 1px; >- border: 1px solid; >- border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; >- color: ButtonText; >- text-align: center; >-} >- >-.calendar tfoot .hilite { /* Hover style for buttons in footer */ >- border-top: 1px solid #fff; >- border-right: 1px solid #000; >- border-bottom: 1px solid #000; >- border-left: 1px solid #fff; >- padding: 1px; >- background: #e4e0d8; >-} >- >-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */ >- padding: 2px 0px 0px 2px; >- border-top: 1px solid #000; >- border-right: 1px solid #fff; >- border-bottom: 1px solid #fff; >- border-left: 1px solid #000; >-} >- >-/* Combo boxes (menus that display months/years for direct selection) */ >- >-.calendar .combo { >- position: absolute; >- display: none; >- width: 4em; >- top: 0px; >- left: 0px; >- cursor: default; >- border: 1px solid; >- border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; >- background: Menu; >- color: MenuText; >- font-size: 90%; >- padding: 1px; >-} >- >-.calendar .combo .label, >-.calendar .combo .label-IEfix { >- text-align: center; >- padding: 1px; >-} >- >-.calendar .combo .label-IEfix { >- width: 4em; >-} >- >-.calendar .combo .active { >- padding: 0px; >- border: 1px solid #000; >-} >- >-.calendar .combo .hilite { >- background: Highlight; >- color: HighlightText; >-} >- >-.calendar td.time { >- border-top: 1px solid ButtonShadow; >- padding: 1px 0px; >- text-align: center; >- background-color: ButtonFace; >-} >- >-.calendar td.time .hour, >-.calendar td.time .minute, >-.calendar td.time .ampm { >- padding: 0px 3px 0px 4px; >- border: 1px solid #889; >- font-weight: bold; >- background-color: Menu; >-} >- >-.calendar td.time .ampm { >- text-align: center; >-} >- >-.calendar td.time .colon { >- padding: 0px 2px 0px 3px; >- font-weight: bold; >-} >- >-.calendar td.time span.hilite { >- border-color: #000; >- background-color: Highlight; >- color: HighlightText; >-} >- >-.calendar td.time span.active { >- border-color: #f00; >- background-color: #000; >- color: #0f0; >-} >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar.js b/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar.js >deleted file mode 100644 >index bac31ab..0000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/calendar.js >+++ /dev/null >@@ -1,1714 +0,0 @@ >-/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ >- * ------------------------------------------------------------------ >- * >- * The DHTML Calendar, version 0.9.6 "Keep cool but don't freeze" >- * >- * Details and latest version at: >- * http://dynarch.com/mishoo/calendar.epl >- * >- * This script is distributed under the GNU Lesser General Public License. >- * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html >- */ >- >- >-/** The Calendar object constructor. */ >-Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) { >- // member variables >- this.activeDiv = null; >- this.currentDateEl = null; >- this.getDateStatus = null; >- this.timeout = null; >- this.onSelected = onSelected || null; >- this.onClose = onClose || null; >- this.dragging = false; >- this.hidden = false; >- this.minYear = 1970; >- this.maxYear = 2050; >- this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"]; >- this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"]; >- this.isPopup = true; >- this.weekNumbers = true; >- this.firstDayOfWeek = firstDayOfWeek; // 0 for Sunday, 1 for Monday, etc. >- this.showsOtherMonths = false; >- this.dateStr = dateStr; >- this.ar_days = null; >- this.showsTime = false; >- this.time24 = true; >- this.yearStep = 2; >- // HTML elements >- this.table = null; >- this.element = null; >- this.tbody = null; >- this.firstdayname = null; >- // Combo boxes >- this.monthsCombo = null; >- this.yearsCombo = null; >- this.hilitedMonth = null; >- this.activeMonth = null; >- this.hilitedYear = null; >- this.activeYear = null; >- // Information >- this.dateClicked = false; >- >- // one-time initializations >- if (typeof Calendar._SDN == "undefined") { >- // table of short day names >- if (typeof Calendar._SDN_len == "undefined") >- Calendar._SDN_len = 3; >- var ar = new Array(); >- for (var i = 8; i > 0;) { >- ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len); >- } >- Calendar._SDN = ar; >- // table of short month names >- if (typeof Calendar._SMN_len == "undefined") >- Calendar._SMN_len = 3; >- ar = new Array(); >- for (var i = 12; i > 0;) { >- ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len); >- } >- Calendar._SMN = ar; >- } >-}; >- >-// ** constants >- >-/// "static", needed for event handlers. >-Calendar._C = null; >- >-/// detect a special case of "web browser" >-Calendar.is_ie = ( /msie/i.test(navigator.userAgent) && >- !/opera/i.test(navigator.userAgent) ); >- >-Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) ); >- >-/// detect Opera browser >-Calendar.is_opera = /opera/i.test(navigator.userAgent); >- >-/// detect KHTML-based browsers >-Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent); >- >-// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate >-// library, at some point. >- >-Calendar.getAbsolutePos = function(el) { >- var SL = 0, ST = 0; >- var is_div = /^div$/i.test(el.tagName); >- if (is_div && el.scrollLeft) >- SL = el.scrollLeft; >- if (is_div && el.scrollTop) >- ST = el.scrollTop; >- var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST }; >- if (el.offsetParent) { >- var tmp = this.getAbsolutePos(el.offsetParent); >- r.x += tmp.x; >- r.y += tmp.y; >- } >- return r; >-}; >- >-Calendar.isRelated = function (el, evt) { >- var related = evt.relatedTarget; >- if (!related) { >- var type = evt.type; >- if (type == "mouseover") { >- related = evt.fromElement; >- } else if (type == "mouseout") { >- related = evt.toElement; >- } >- } >- while (related) { >- if (related == el) { >- return true; >- } >- related = related.parentNode; >- } >- return false; >-}; >- >-Calendar.removeClass = function(el, className) { >- if (!(el && el.className)) { >- return; >- } >- var cls = el.className.split(" "); >- var ar = new Array(); >- for (var i = cls.length; i > 0;) { >- if (cls[--i] != className) { >- ar[ar.length] = cls[i]; >- } >- } >- el.className = ar.join(" "); >-}; >- >-Calendar.addClass = function(el, className) { >- Calendar.removeClass(el, className); >- el.className += " " + className; >-}; >- >-Calendar.getElement = function(ev) { >- if (Calendar.is_ie) { >- return window.event.srcElement; >- } else { >- return ev.currentTarget; >- } >-}; >- >-Calendar.getTargetElement = function(ev) { >- if (Calendar.is_ie) { >- return window.event.srcElement; >- } else { >- return ev.target; >- } >-}; >- >-Calendar.stopEvent = function(ev) { >- ev || (ev = window.event); >- if (Calendar.is_ie) { >- ev.cancelBubble = true; >- ev.returnValue = false; >- } else { >- ev.preventDefault(); >- ev.stopPropagation(); >- } >- return false; >-}; >- >-Calendar.addEvent = function(el, evname, func) { >- if (el.attachEvent) { // IE >- el.attachEvent("on" + evname, func); >- } else if (el.addEventListener) { // Gecko / W3C >- el.addEventListener(evname, func, true); >- } else { >- el["on" + evname] = func; >- } >-}; >- >-Calendar.removeEvent = function(el, evname, func) { >- if (el.detachEvent) { // IE >- el.detachEvent("on" + evname, func); >- } else if (el.removeEventListener) { // Gecko / W3C >- el.removeEventListener(evname, func, true); >- } else { >- el["on" + evname] = null; >- } >-}; >- >-Calendar.createElement = function(type, parent) { >- var el = null; >- if (document.createElementNS) { >- // use the XHTML namespace; IE won't normally get here unless >- // _they_ "fix" the DOM2 implementation. >- el = document.createElementNS("http://www.w3.org/1999/xhtml", type); >- } else { >- el = document.createElement(type); >- } >- if (typeof parent != "undefined") { >- parent.appendChild(el); >- } >- return el; >-}; >- >-// END: UTILITY FUNCTIONS >- >-// BEGIN: CALENDAR STATIC FUNCTIONS >- >-/** Internal -- adds a set of events to make some element behave like a button. */ >-Calendar._add_evs = function(el) { >- with (Calendar) { >- addEvent(el, "mouseover", dayMouseOver); >- addEvent(el, "mousedown", dayMouseDown); >- addEvent(el, "mouseout", dayMouseOut); >- if (is_ie) { >- addEvent(el, "dblclick", dayMouseDblClick); >- el.setAttribute("unselectable", true); >- } >- } >-}; >- >-Calendar.findMonth = function(el) { >- if (typeof el.month != "undefined") { >- return el; >- } else if (typeof el.parentNode.month != "undefined") { >- return el.parentNode; >- } >- return null; >-}; >- >-Calendar.findYear = function(el) { >- if (typeof el.year != "undefined") { >- return el; >- } else if (typeof el.parentNode.year != "undefined") { >- return el.parentNode; >- } >- return null; >-}; >- >-Calendar.showMonthsCombo = function () { >- var cal = Calendar._C; >- if (!cal) { >- return false; >- } >- var cal = cal; >- var cd = cal.activeDiv; >- var mc = cal.monthsCombo; >- if (cal.hilitedMonth) { >- Calendar.removeClass(cal.hilitedMonth, "hilite"); >- } >- if (cal.activeMonth) { >- Calendar.removeClass(cal.activeMonth, "active"); >- } >- var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()]; >- Calendar.addClass(mon, "active"); >- cal.activeMonth = mon; >- var s = mc.style; >- s.display = "block"; >- if (cd.navtype < 0) >- s.left = cd.offsetLeft + "px"; >- else { >- var mcw = mc.offsetWidth; >- if (typeof mcw == "undefined") >- // Konqueror brain-dead techniques >- mcw = 50; >- s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px"; >- } >- s.top = (cd.offsetTop + cd.offsetHeight) + "px"; >-}; >- >-Calendar.showYearsCombo = function (fwd) { >- var cal = Calendar._C; >- if (!cal) { >- return false; >- } >- var cal = cal; >- var cd = cal.activeDiv; >- var yc = cal.yearsCombo; >- if (cal.hilitedYear) { >- Calendar.removeClass(cal.hilitedYear, "hilite"); >- } >- if (cal.activeYear) { >- Calendar.removeClass(cal.activeYear, "active"); >- } >- cal.activeYear = null; >- var Y = cal.date.getFullYear() + (fwd ? 1 : -1); >- var yr = yc.firstChild; >- var show = false; >- for (var i = 12; i > 0; --i) { >- if (Y >= cal.minYear && Y <= cal.maxYear) { >- yr.firstChild.data = Y; >- yr.year = Y; >- yr.style.display = "block"; >- show = true; >- } else { >- yr.style.display = "none"; >- } >- yr = yr.nextSibling; >- Y += fwd ? cal.yearStep : -cal.yearStep; >- } >- if (show) { >- var s = yc.style; >- s.display = "block"; >- if (cd.navtype < 0) >- s.left = cd.offsetLeft + "px"; >- else { >- var ycw = yc.offsetWidth; >- if (typeof ycw == "undefined") >- // Konqueror brain-dead techniques >- ycw = 50; >- s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px"; >- } >- s.top = (cd.offsetTop + cd.offsetHeight) + "px"; >- } >-}; >- >-// event handlers >- >-Calendar.tableMouseUp = function(ev) { >- var cal = Calendar._C; >- if (!cal) { >- return false; >- } >- if (cal.timeout) { >- clearTimeout(cal.timeout); >- } >- var el = cal.activeDiv; >- if (!el) { >- return false; >- } >- var target = Calendar.getTargetElement(ev); >- ev || (ev = window.event); >- Calendar.removeClass(el, "active"); >- if (target == el || target.parentNode == el) { >- Calendar.cellClick(el, ev); >- } >- var mon = Calendar.findMonth(target); >- var date = null; >- if (mon) { >- date = new Date(cal.date); >- if (mon.month != date.getMonth()) { >- date.setMonth(mon.month); >- cal.setDate(date); >- cal.dateClicked = false; >- cal.callHandler(); >- } >- } else { >- var year = Calendar.findYear(target); >- if (year) { >- date = new Date(cal.date); >- if (year.year != date.getFullYear()) { >- date.setFullYear(year.year); >- cal.setDate(date); >- cal.dateClicked = false; >- cal.callHandler(); >- } >- } >- } >- with (Calendar) { >- removeEvent(document, "mouseup", tableMouseUp); >- removeEvent(document, "mouseover", tableMouseOver); >- removeEvent(document, "mousemove", tableMouseOver); >- cal._hideCombos(); >- _C = null; >- return stopEvent(ev); >- } >-}; >- >-Calendar.tableMouseOver = function (ev) { >- var cal = Calendar._C; >- if (!cal) { >- return; >- } >- var el = cal.activeDiv; >- var target = Calendar.getTargetElement(ev); >- if (target == el || target.parentNode == el) { >- Calendar.addClass(el, "hilite active"); >- Calendar.addClass(el.parentNode, "rowhilite"); >- } else { >- if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2))) >- Calendar.removeClass(el, "active"); >- Calendar.removeClass(el, "hilite"); >- Calendar.removeClass(el.parentNode, "rowhilite"); >- } >- ev || (ev = window.event); >- if (el.navtype == 50 && target != el) { >- var pos = Calendar.getAbsolutePos(el); >- var w = el.offsetWidth; >- var x = ev.clientX; >- var dx; >- var decrease = true; >- if (x > pos.x + w) { >- dx = x - pos.x - w; >- decrease = false; >- } else >- dx = pos.x - x; >- >- if (dx < 0) dx = 0; >- var range = el._range; >- var current = el._current; >- var count = Math.floor(dx / 10) % range.length; >- for (var i = range.length; --i >= 0;) >- if (range[i] == current) >- break; >- while (count-- > 0) >- if (decrease) { >- if (--i < 0) >- i = range.length - 1; >- } else if ( ++i >= range.length ) >- i = 0; >- var newval = range[i]; >- el.firstChild.data = newval; >- >- cal.onUpdateTime(); >- } >- var mon = Calendar.findMonth(target); >- if (mon) { >- if (mon.month != cal.date.getMonth()) { >- if (cal.hilitedMonth) { >- Calendar.removeClass(cal.hilitedMonth, "hilite"); >- } >- Calendar.addClass(mon, "hilite"); >- cal.hilitedMonth = mon; >- } else if (cal.hilitedMonth) { >- Calendar.removeClass(cal.hilitedMonth, "hilite"); >- } >- } else { >- if (cal.hilitedMonth) { >- Calendar.removeClass(cal.hilitedMonth, "hilite"); >- } >- var year = Calendar.findYear(target); >- if (year) { >- if (year.year != cal.date.getFullYear()) { >- if (cal.hilitedYear) { >- Calendar.removeClass(cal.hilitedYear, "hilite"); >- } >- Calendar.addClass(year, "hilite"); >- cal.hilitedYear = year; >- } else if (cal.hilitedYear) { >- Calendar.removeClass(cal.hilitedYear, "hilite"); >- } >- } else if (cal.hilitedYear) { >- Calendar.removeClass(cal.hilitedYear, "hilite"); >- } >- } >- return Calendar.stopEvent(ev); >-}; >- >-Calendar.tableMouseDown = function (ev) { >- if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) { >- return Calendar.stopEvent(ev); >- } >-}; >- >-Calendar.calDragIt = function (ev) { >- var cal = Calendar._C; >- if (!(cal && cal.dragging)) { >- return false; >- } >- var posX; >- var posY; >- if (Calendar.is_ie) { >- posY = window.event.clientY + document.body.scrollTop; >- posX = window.event.clientX + document.body.scrollLeft; >- } else { >- posX = ev.pageX; >- posY = ev.pageY; >- } >- cal.hideShowCovered(); >- var st = cal.element.style; >- st.left = (posX - cal.xOffs) + "px"; >- st.top = (posY - cal.yOffs) + "px"; >- return Calendar.stopEvent(ev); >-}; >- >-Calendar.calDragEnd = function (ev) { >- var cal = Calendar._C; >- if (!cal) { >- return false; >- } >- cal.dragging = false; >- with (Calendar) { >- removeEvent(document, "mousemove", calDragIt); >- removeEvent(document, "mouseup", calDragEnd); >- tableMouseUp(ev); >- } >- cal.hideShowCovered(); >-}; >- >-Calendar.dayMouseDown = function(ev) { >- var el = Calendar.getElement(ev); >- if (el.disabled) { >- return false; >- } >- var cal = el.calendar; >- cal.activeDiv = el; >- Calendar._C = cal; >- if (el.navtype != 300) with (Calendar) { >- if (el.navtype == 50) { >- el._current = el.firstChild.data; >- addEvent(document, "mousemove", tableMouseOver); >- } else >- addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver); >- addClass(el, "hilite active"); >- addEvent(document, "mouseup", tableMouseUp); >- } else if (cal.isPopup) { >- cal._dragStart(ev); >- } >- if (el.navtype == -1 || el.navtype == 1) { >- if (cal.timeout) clearTimeout(cal.timeout); >- cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250); >- } else if (el.navtype == -2 || el.navtype == 2) { >- if (cal.timeout) clearTimeout(cal.timeout); >- cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250); >- } else { >- cal.timeout = null; >- } >- return Calendar.stopEvent(ev); >-}; >- >-Calendar.dayMouseDblClick = function(ev) { >- Calendar.cellClick(Calendar.getElement(ev), ev || window.event); >- if (Calendar.is_ie) { >- document.selection.empty(); >- } >-}; >- >-Calendar.dayMouseOver = function(ev) { >- var el = Calendar.getElement(ev); >- if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) { >- return false; >- } >- if (el.ttip) { >- if (el.ttip.substr(0, 1) == "_") { >- el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1); >- } >- el.calendar.tooltips.firstChild.data = el.ttip; >- } >- if (el.navtype != 300) { >- Calendar.addClass(el, "hilite"); >- if (el.caldate) { >- Calendar.addClass(el.parentNode, "rowhilite"); >- } >- } >- return Calendar.stopEvent(ev); >-}; >- >-Calendar.dayMouseOut = function(ev) { >- with (Calendar) { >- var el = getElement(ev); >- if (isRelated(el, ev) || _C || el.disabled) { >- return false; >- } >- removeClass(el, "hilite"); >- if (el.caldate) { >- removeClass(el.parentNode, "rowhilite"); >- } >- el.calendar.tooltips.firstChild.data = _TT["SEL_DATE"]; >- return stopEvent(ev); >- } >-}; >- >-/** >- * A generic "click" handler :) handles all types of buttons defined in this >- * calendar. >- */ >-Calendar.cellClick = function(el, ev) { >- var cal = el.calendar; >- var closing = false; >- var newdate = false; >- var date = null; >- if (typeof el.navtype == "undefined") { >- Calendar.removeClass(cal.currentDateEl, "selected"); >- Calendar.addClass(el, "selected"); >- closing = (cal.currentDateEl == el); >- if (!closing) { >- cal.currentDateEl = el; >- } >- cal.date = new Date(el.caldate); >- date = cal.date; >- newdate = true; >- // a date was clicked >- if (!(cal.dateClicked = !el.otherMonth)) >- cal._init(cal.firstDayOfWeek, date); >- } else { >- if (el.navtype == 200) { >- Calendar.removeClass(el, "hilite"); >- cal.callCloseHandler(); >- return; >- } >- date = (el.navtype == 0) ? new Date() : new Date(cal.date); >- // unless "today" was clicked, we assume no date was clicked so >- // the selected handler will know not to close the calenar when >- // in single-click mode. >- // cal.dateClicked = (el.navtype == 0); >- cal.dateClicked = false; >- var year = date.getFullYear(); >- var mon = date.getMonth(); >- function setMonth(m) { >- var day = date.getDate(); >- var max = date.getMonthDays(m); >- if (day > max) { >- date.setDate(max); >- } >- date.setMonth(m); >- }; >- switch (el.navtype) { >- case 400: >- Calendar.removeClass(el, "hilite"); >- var text = Calendar._TT["ABOUT"]; >- if (typeof text != "undefined") { >- text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : ""; >- } else { >- // FIXME: this should be removed as soon as lang files get updated! >- text = "Help and about box text is not translated into this language.\n" + >- "If you know this language and you feel generous please update\n" + >- "the corresponding file in \"lang\" subdir to match calendar-en.js\n" + >- "and send it back to <mishoo@infoiasi.ro> to get it into the distribution ;-)\n\n" + >- "Thank you!\n" + >- "http://dynarch.com/mishoo/calendar.epl\n"; >- } >- alert(text); >- return; >- case -2: >- if (year > cal.minYear) { >- date.setFullYear(year - 1); >- } >- break; >- case -1: >- if (mon > 0) { >- setMonth(mon - 1); >- } else if (year-- > cal.minYear) { >- date.setFullYear(year); >- setMonth(11); >- } >- break; >- case 1: >- if (mon < 11) { >- setMonth(mon + 1); >- } else if (year < cal.maxYear) { >- date.setFullYear(year + 1); >- setMonth(0); >- } >- break; >- case 2: >- if (year < cal.maxYear) { >- date.setFullYear(year + 1); >- } >- break; >- case 100: >- cal.setFirstDayOfWeek(el.fdow); >- return; >- case 50: >- var range = el._range; >- var current = el.firstChild.data; >- for (var i = range.length; --i >= 0;) >- if (range[i] == current) >- break; >- if (ev && ev.shiftKey) { >- if (--i < 0) >- i = range.length - 1; >- } else if ( ++i >= range.length ) >- i = 0; >- var newval = range[i]; >- el.firstChild.data = newval; >- cal.onUpdateTime(); >- return; >- case 0: >- // TODAY will bring us here >- if ((typeof cal.getDateStatus == "function") && cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) { >- // remember, "date" was previously set to new >- // Date() if TODAY was clicked; thus, it >- // contains today date. >- return false; >- } >- break; >- } >- if (!date.equalsTo(cal.date)) { >- cal.setDate(date); >- newdate = true; >- } >- } >- if (newdate) { >- cal.callHandler(); >- } >- if (closing) { >- Calendar.removeClass(el, "hilite"); >- cal.callCloseHandler(); >- } >-}; >- >-// END: CALENDAR STATIC FUNCTIONS >- >-// BEGIN: CALENDAR OBJECT FUNCTIONS >- >-/** >- * This function creates the calendar inside the given parent. If _par is >- * null than it creates a popup calendar inside the BODY element. If _par is >- * an element, be it BODY, then it creates a non-popup calendar (still >- * hidden). Some properties need to be set before calling this function. >- */ >-Calendar.prototype.create = function (_par) { >- var parent = null; >- if (! _par) { >- // default parent is the document body, in which case we create >- // a popup calendar. >- parent = document.getElementsByTagName("body")[0]; >- this.isPopup = true; >- } else { >- parent = _par; >- this.isPopup = false; >- } >- this.date = this.dateStr ? new Date(this.dateStr) : new Date(); >- >- var table = Calendar.createElement("table"); >- this.table = table; >- table.cellSpacing = 0; >- table.cellPadding = 0; >- table.calendar = this; >- Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown); >- >- var div = Calendar.createElement("div"); >- this.element = div; >- div.className = "calendar"; >- if (this.isPopup) { >- div.style.position = "absolute"; >- div.style.display = "none"; >- } >- div.appendChild(table); >- >- var thead = Calendar.createElement("thead", table); >- var cell = null; >- var row = null; >- >- var cal = this; >- var hh = function (text, cs, navtype) { >- cell = Calendar.createElement("td", row); >- cell.colSpan = cs; >- cell.className = "button"; >- if (navtype != 0 && Math.abs(navtype) <= 2) >- cell.className += " nav"; >- Calendar._add_evs(cell); >- cell.calendar = cal; >- cell.navtype = navtype; >- if (text.substr(0, 1) != "&") { >- cell.appendChild(document.createTextNode(text)); >- } >- else { >- // FIXME: dirty hack for entities >- cell.innerHTML = text; >- } >- return cell; >- }; >- >- row = Calendar.createElement("tr", thead); >- var title_length = 6; >- (this.isPopup) && --title_length; >- (this.weekNumbers) && ++title_length; >- >- hh("?", 1, 400).ttip = Calendar._TT["INFO"]; >- this.title = hh("", title_length, 300); >- this.title.className = "title"; >- if (this.isPopup) { >- this.title.ttip = Calendar._TT["DRAG_TO_MOVE"]; >- this.title.style.cursor = "move"; >- hh("×", 1, 200).ttip = Calendar._TT["CLOSE"]; >- } >- >- row = Calendar.createElement("tr", thead); >- row.className = "headrow"; >- >- this._nav_py = hh("«", 1, -2); >- this._nav_py.ttip = Calendar._TT["PREV_YEAR"]; >- >- this._nav_pm = hh("‹", 1, -1); >- this._nav_pm.ttip = Calendar._TT["PREV_MONTH"]; >- >- this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0); >- this._nav_now.ttip = Calendar._TT["GO_TODAY"]; >- >- this._nav_nm = hh("›", 1, 1); >- this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"]; >- >- this._nav_ny = hh("»", 1, 2); >- this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"]; >- >- // day names >- row = Calendar.createElement("tr", thead); >- row.className = "daynames"; >- if (this.weekNumbers) { >- cell = Calendar.createElement("td", row); >- cell.className = "name wn"; >- cell.appendChild(document.createTextNode(Calendar._TT["WK"])); >- } >- for (var i = 7; i > 0; --i) { >- cell = Calendar.createElement("td", row); >- cell.appendChild(document.createTextNode("")); >- if (!i) { >- cell.navtype = 100; >- cell.calendar = this; >- Calendar._add_evs(cell); >- } >- } >- this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild; >- this._displayWeekdays(); >- >- var tbody = Calendar.createElement("tbody", table); >- this.tbody = tbody; >- >- for (i = 6; i > 0; --i) { >- row = Calendar.createElement("tr", tbody); >- if (this.weekNumbers) { >- cell = Calendar.createElement("td", row); >- cell.appendChild(document.createTextNode("")); >- } >- for (var j = 7; j > 0; --j) { >- cell = Calendar.createElement("td", row); >- cell.appendChild(document.createTextNode("")); >- cell.calendar = this; >- Calendar._add_evs(cell); >- } >- } >- >- if (this.showsTime) { >- row = Calendar.createElement("tr", tbody); >- row.className = "time"; >- >- cell = Calendar.createElement("td", row); >- cell.className = "time"; >- cell.colSpan = 2; >- cell.innerHTML = Calendar._TT["TIME"] || " "; >- >- cell = Calendar.createElement("td", row); >- cell.className = "time"; >- cell.colSpan = this.weekNumbers ? 4 : 3; >- >- (function(){ >- function makeTimePart(className, init, range_start, range_end) { >- var part = Calendar.createElement("span", cell); >- part.className = className; >- part.appendChild(document.createTextNode(init)); >- part.calendar = cal; >- part.ttip = Calendar._TT["TIME_PART"]; >- part.navtype = 50; >- part._range = []; >- if (typeof range_start != "number") >- part._range = range_start; >- else { >- for (var i = range_start; i <= range_end; ++i) { >- var txt; >- if (i < 10 && range_end >= 10) txt = '0' + i; >- else txt = '' + i; >- part._range[part._range.length] = txt; >- } >- } >- Calendar._add_evs(part); >- return part; >- }; >- var hrs = cal.date.getHours(); >- var mins = cal.date.getMinutes(); >- var t12 = !cal.time24; >- var pm = (hrs > 12); >- if (t12 && pm) hrs -= 12; >- var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23); >- var span = Calendar.createElement("span", cell); >- span.appendChild(document.createTextNode(":")); >- span.className = "colon"; >- var M = makeTimePart("minute", mins, 0, 59); >- var AP = null; >- cell = Calendar.createElement("td", row); >- cell.className = "time"; >- cell.colSpan = 2; >- if (t12) >- AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]); >- else >- cell.innerHTML = " "; >- >- cal.onSetTime = function() { >- var hrs = this.date.getHours(); >- var mins = this.date.getMinutes(); >- var pm = (hrs > 12); >- if (pm && t12) hrs -= 12; >- H.firstChild.data = (hrs < 10) ? ("0" + hrs) : hrs; >- M.firstChild.data = (mins < 10) ? ("0" + mins) : mins; >- if (t12) >- AP.firstChild.data = pm ? "pm" : "am"; >- }; >- >- cal.onUpdateTime = function() { >- var date = this.date; >- var h = parseInt(H.firstChild.data, 10); >- if (t12) { >- if (/pm/i.test(AP.firstChild.data) && h < 12) >- h += 12; >- else if (/am/i.test(AP.firstChild.data) && h == 12) >- h = 0; >- } >- var d = date.getDate(); >- var m = date.getMonth(); >- var y = date.getFullYear(); >- date.setHours(h); >- date.setMinutes(parseInt(M.firstChild.data, 10)); >- date.setFullYear(y); >- date.setMonth(m); >- date.setDate(d); >- this.dateClicked = false; >- this.callHandler(); >- }; >- })(); >- } else { >- this.onSetTime = this.onUpdateTime = function() {}; >- } >- >- var tfoot = Calendar.createElement("tfoot", table); >- >- row = Calendar.createElement("tr", tfoot); >- row.className = "footrow"; >- >- cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300); >- cell.className = "ttip"; >- if (this.isPopup) { >- cell.ttip = Calendar._TT["DRAG_TO_MOVE"]; >- cell.style.cursor = "move"; >- } >- this.tooltips = cell; >- >- div = Calendar.createElement("div", this.element); >- this.monthsCombo = div; >- div.className = "combo"; >- for (i = 0; i < Calendar._MN.length; ++i) { >- var mn = Calendar.createElement("div"); >- mn.className = Calendar.is_ie ? "label-IEfix" : "label"; >- mn.month = i; >- mn.appendChild(document.createTextNode(Calendar._SMN[i])); >- div.appendChild(mn); >- } >- >- div = Calendar.createElement("div", this.element); >- this.yearsCombo = div; >- div.className = "combo"; >- for (i = 12; i > 0; --i) { >- var yr = Calendar.createElement("div"); >- yr.className = Calendar.is_ie ? "label-IEfix" : "label"; >- yr.appendChild(document.createTextNode("")); >- div.appendChild(yr); >- } >- >- this._init(this.firstDayOfWeek, this.date); >- parent.appendChild(this.element); >-}; >- >-/** keyboard navigation, only for popup calendars */ >-Calendar._keyEvent = function(ev) { >- if (!window.calendar) { >- return false; >- } >- (Calendar.is_ie) && (ev = window.event); >- var cal = window.calendar; >- var act = (Calendar.is_ie || ev.type == "keypress"); >- if (ev.ctrlKey) { >- switch (ev.keyCode) { >- case 37: // KEY left >- act && Calendar.cellClick(cal._nav_pm); >- break; >- case 38: // KEY up >- act && Calendar.cellClick(cal._nav_py); >- break; >- case 39: // KEY right >- act && Calendar.cellClick(cal._nav_nm); >- break; >- case 40: // KEY down >- act && Calendar.cellClick(cal._nav_ny); >- break; >- default: >- return false; >- } >- } else switch (ev.keyCode) { >- case 32: // KEY space (now) >- Calendar.cellClick(cal._nav_now); >- break; >- case 27: // KEY esc >- act && cal.callCloseHandler(); >- break; >- case 37: // KEY left >- case 38: // KEY up >- case 39: // KEY right >- case 40: // KEY down >- if (act) { >- var date = cal.date.getDate() - 1; >- var el = cal.currentDateEl; >- var ne = null; >- var prev = (ev.keyCode == 37) || (ev.keyCode == 38); >- switch (ev.keyCode) { >- case 37: // KEY left >- (--date >= 0) && (ne = cal.ar_days[date]); >- break; >- case 38: // KEY up >- date -= 7; >- (date >= 0) && (ne = cal.ar_days[date]); >- break; >- case 39: // KEY right >- (++date < cal.ar_days.length) && (ne = cal.ar_days[date]); >- break; >- case 40: // KEY down >- date += 7; >- (date < cal.ar_days.length) && (ne = cal.ar_days[date]); >- break; >- } >- if (!ne) { >- if (prev) { >- Calendar.cellClick(cal._nav_pm); >- } else { >- Calendar.cellClick(cal._nav_nm); >- } >- date = (prev) ? cal.date.getMonthDays() : 1; >- el = cal.currentDateEl; >- ne = cal.ar_days[date - 1]; >- } >- Calendar.removeClass(el, "selected"); >- Calendar.addClass(ne, "selected"); >- cal.date = new Date(ne.caldate); >- cal.callHandler(); >- cal.currentDateEl = ne; >- } >- break; >- case 13: // KEY enter >- if (act) { >- cal.callHandler(); >- cal.hide(); >- } >- break; >- default: >- return false; >- } >- return Calendar.stopEvent(ev); >-}; >- >-/** >- * (RE)Initializes the calendar to the given date and firstDayOfWeek >- */ >-Calendar.prototype._init = function (firstDayOfWeek, date) { >- var today = new Date(); >- this.table.style.visibility = "hidden"; >- var year = date.getFullYear(); >- if (year < this.minYear) { >- year = this.minYear; >- date.setFullYear(year); >- } else if (year > this.maxYear) { >- year = this.maxYear; >- date.setFullYear(year); >- } >- this.firstDayOfWeek = firstDayOfWeek; >- this.date = new Date(date); >- var month = date.getMonth(); >- var mday = date.getDate(); >- var no_days = date.getMonthDays(); >- >- // calendar voodoo for computing the first day that would actually be >- // displayed in the calendar, even if it's from the previous month. >- // WARNING: this is magic. ;-) >- date.setDate(1); >- var day1 = (date.getDay() - this.firstDayOfWeek) % 7; >- if (day1 < 0) >- day1 += 7; >- date.setDate(-day1); >- date.setDate(date.getDate() + 1); >- >- var row = this.tbody.firstChild; >- var MN = Calendar._SMN[month]; >- var ar_days = new Array(); >- var weekend = Calendar._TT["WEEKEND"]; >- for (var i = 0; i < 6; ++i, row = row.nextSibling) { >- var cell = row.firstChild; >- if (this.weekNumbers) { >- cell.className = "day wn"; >- cell.firstChild.data = date.getWeekNumber(); >- cell = cell.nextSibling; >- } >- row.className = "daysrow"; >- var hasdays = false; >- for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(date.getDate() + 1)) { >- var iday = date.getDate(); >- var wday = date.getDay(); >- cell.className = "day"; >- var current_month = (date.getMonth() == month); >- if (!current_month) { >- if (this.showsOtherMonths) { >- cell.className += " othermonth"; >- cell.otherMonth = true; >- } else { >- cell.className = "emptycell"; >- cell.innerHTML = " "; >- cell.disabled = true; >- continue; >- } >- } else { >- cell.otherMonth = false; >- hasdays = true; >- } >- cell.disabled = false; >- cell.firstChild.data = iday; >- if (typeof this.getDateStatus == "function") { >- var status = this.getDateStatus(date, year, month, iday); >- if (status === true) { >- cell.className += " disabled"; >- cell.disabled = true; >- } else { >- if (/disabled/i.test(status)) >- cell.disabled = true; >- cell.className += " " + status; >- } >- } >- if (!cell.disabled) { >- ar_days[ar_days.length] = cell; >- cell.caldate = new Date(date); >- cell.ttip = "_"; >- if (current_month && iday == mday) { >- cell.className += " selected"; >- this.currentDateEl = cell; >- } >- if (date.getFullYear() == today.getFullYear() && >- date.getMonth() == today.getMonth() && >- iday == today.getDate()) { >- cell.className += " today"; >- cell.ttip += Calendar._TT["PART_TODAY"]; >- } >- if (weekend.indexOf(wday.toString()) != -1) { >- cell.className += cell.otherMonth ? " oweekend" : " weekend"; >- } >- } >- } >- if (!(hasdays || this.showsOtherMonths)) >- row.className = "emptyrow"; >- } >- this.ar_days = ar_days; >- this.title.firstChild.data = Calendar._MN[month] + ", " + year; >- this.onSetTime(); >- this.table.style.visibility = "visible"; >- // PROFILE >- // this.tooltips.firstChild.data = "Generated in " + ((new Date()) - today) + " ms"; >-}; >- >-/** >- * Calls _init function above for going to a certain date (but only if the >- * date is different than the currently selected one). >- */ >-Calendar.prototype.setDate = function (date) { >- if (!date.equalsTo(this.date)) { >- this._init(this.firstDayOfWeek, date); >- } >-}; >- >-/** >- * Refreshes the calendar. Useful if the "disabledHandler" function is >- * dynamic, meaning that the list of disabled date can change at runtime. >- * Just * call this function if you think that the list of disabled dates >- * should * change. >- */ >-Calendar.prototype.refresh = function () { >- this._init(this.firstDayOfWeek, this.date); >-}; >- >-/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */ >-Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) { >- this._init(firstDayOfWeek, this.date); >- this._displayWeekdays(); >-}; >- >-/** >- * Allows customization of what dates are enabled. The "unaryFunction" >- * parameter must be a function object that receives the date (as a JS Date >- * object) and returns a boolean value. If the returned value is true then >- * the passed date will be marked as disabled. >- */ >-Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) { >- this.getDateStatus = unaryFunction; >-}; >- >-/** Customization of allowed year range for the calendar. */ >-Calendar.prototype.setRange = function (a, z) { >- this.minYear = a; >- this.maxYear = z; >-}; >- >-/** Calls the first user handler (selectedHandler). */ >-Calendar.prototype.callHandler = function () { >- if (this.onSelected) { >- this.onSelected(this, this.date.print(this.dateFormat)); >- } >-}; >- >-/** Calls the second user handler (closeHandler). */ >-Calendar.prototype.callCloseHandler = function () { >- if (this.onClose) { >- this.onClose(this); >- } >- // this.hideShowCovered(); >-}; >- >-/** Removes the calendar object from the DOM tree and destroys it. */ >-Calendar.prototype.destroy = function () { >- var el = this.element.parentNode; >- el.removeChild(this.element); >- Calendar._C = null; >- window.calendar = null; >-}; >- >-/** >- * Moves the calendar element to a different section in the DOM tree (changes >- * its parent). >- */ >-Calendar.prototype.reparent = function (new_parent) { >- var el = this.element; >- el.parentNode.removeChild(el); >- new_parent.appendChild(el); >-}; >- >-// This gets called when the user presses a mouse button anywhere in the >-// document, if the calendar is shown. If the click was outside the open >-// calendar this function closes it. >-Calendar._checkCalendar = function(ev) { >- if (!window.calendar) { >- return false; >- } >- var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev); >- for (; el != null && el != calendar.element; el = el.parentNode); >- if (el == null) { >- // calls closeHandler which should hide the calendar. >- window.calendar.callCloseHandler(); >- return Calendar.stopEvent(ev); >- } >-}; >- >-/** Shows the calendar. */ >-Calendar.prototype.show = function () { >- var rows = this.table.getElementsByTagName("tr"); >- for (var i = rows.length; i > 0;) { >- var row = rows[--i]; >- Calendar.removeClass(row, "rowhilite"); >- var cells = row.getElementsByTagName("td"); >- for (var j = cells.length; j > 0;) { >- var cell = cells[--j]; >- Calendar.removeClass(cell, "hilite"); >- Calendar.removeClass(cell, "active"); >- } >- } >- this.element.style.display = "block"; >- this.hidden = false; >- if (this.isPopup) { >- window.calendar = this; >- Calendar.addEvent(document, "keydown", Calendar._keyEvent); >- Calendar.addEvent(document, "keypress", Calendar._keyEvent); >- Calendar.addEvent(document, "mousedown", Calendar._checkCalendar); >- } >- // this.hideShowCovered(); >-}; >- >-/** >- * Hides the calendar. Also removes any "hilite" from the class of any TD >- * element. >- */ >-Calendar.prototype.hide = function () { >- if (this.isPopup) { >- Calendar.removeEvent(document, "keydown", Calendar._keyEvent); >- Calendar.removeEvent(document, "keypress", Calendar._keyEvent); >- Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar); >- } >- this.element.style.display = "none"; >- this.hidden = true; >- // this.hideShowCovered(); >-}; >- >-/** >- * Shows the calendar at a given absolute position (beware that, depending on >- * the calendar element style -- position property -- this might be relative >- * to the parent's containing rectangle). >- */ >-Calendar.prototype.showAt = function (x, y) { >- var s = this.element.style; >- s.left = x + "px"; >- s.top = y + "px"; >- this.show(); >-}; >- >-/** Shows the calendar near a given element. */ >-Calendar.prototype.showAtElement = function (el, opts) { >- var self = this; >- var p = Calendar.getAbsolutePos(el); >- if (!opts || typeof opts != "string") { >- this.showAt(p.x, p.y + el.offsetHeight); >- return true; >- } >- function fixPosition(box) { >- if (box.x < 0) >- box.x = 0; >- if (box.y < 0) >- box.y = 0; >- var cp = document.createElement("div"); >- var s = cp.style; >- s.position = "absolute"; >- s.right = s.bottom = s.width = s.height = "0px"; >- document.body.appendChild(cp); >- var br = Calendar.getAbsolutePos(cp); >- document.body.removeChild(cp); >- if (Calendar.is_ie) { >- br.y += document.body.scrollTop; >- br.x += document.body.scrollLeft; >- } else { >- br.y += window.scrollY; >- br.x += window.scrollX; >- } >- var tmp = box.x + box.width - br.x; >- if (tmp > 0) box.x -= tmp; >- tmp = box.y + box.height - br.y; >- if (tmp > 0) box.y -= tmp; >- }; >- this.element.style.display = "block"; >- Calendar.continuation_for_the_fucking_khtml_browser = function() { >- var w = self.element.offsetWidth; >- var h = self.element.offsetHeight; >- self.element.style.display = "none"; >- var valign = opts.substr(0, 1); >- var halign = "l"; >- if (opts.length > 1) { >- halign = opts.substr(1, 1); >- } >- // vertical alignment >- switch (valign) { >- case "T": p.y -= h; break; >- case "B": p.y += el.offsetHeight; break; >- case "C": p.y += (el.offsetHeight - h) / 2; break; >- case "t": p.y += el.offsetHeight - h; break; >- case "b": break; // already there >- } >- // horizontal alignment >- switch (halign) { >- case "L": p.x -= w; break; >- case "R": p.x += el.offsetWidth; break; >- case "C": p.x += (el.offsetWidth - w) / 2; break; >- case "r": p.x += el.offsetWidth - w; break; >- case "l": break; // already there >- } >- p.width = w; >- p.height = h + 40; >- self.monthsCombo.style.display = "none"; >- fixPosition(p); >- self.showAt(p.x, p.y); >- }; >- if (Calendar.is_khtml) >- setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); >- else >- Calendar.continuation_for_the_fucking_khtml_browser(); >-}; >- >-/** Customizes the date format. */ >-Calendar.prototype.setDateFormat = function (str) { >- this.dateFormat = str; >-}; >- >-/** Customizes the tooltip date format. */ >-Calendar.prototype.setTtDateFormat = function (str) { >- this.ttDateFormat = str; >-}; >- >-/** >- * Tries to identify the date represented in a string. If successful it also >- * calls this.setDate which moves the calendar to the given date. >- */ >-Calendar.prototype.parseDate = function (str, fmt) { >- var y = 0; >- var m = -1; >- var d = 0; >- var a = str.split(/\W+/); >- if (!fmt) { >- fmt = this.dateFormat; >- } >- var b = fmt.match(/%./g); >- var i = 0, j = 0; >- var hr = 0; >- var min = 0; >- for (i = 0; i < a.length; ++i) { >- if (!a[i]) >- continue; >- switch (b[i]) { >- case "%d": >- case "%e": >- d = parseInt(a[i], 10); >- break; >- >- case "%m": >- m = parseInt(a[i], 10) - 1; >- break; >- >- case "%Y": >- case "%y": >- y = parseInt(a[i], 10); >- (y < 100) && (y += (y > 29) ? 1900 : 2000); >- break; >- >- case "%b": >- case "%B": >- for (j = 0; j < 12; ++j) { >- if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; } >- } >- break; >- >- case "%H": >- case "%I": >- case "%k": >- case "%l": >- hr = parseInt(a[i], 10); >- break; >- >- case "%P": >- case "%p": >- if (/pm/i.test(a[i]) && hr < 12) >- hr += 12; >- break; >- >- case "%M": >- min = parseInt(a[i], 10); >- break; >- } >- } >- if (y != 0 && m != -1 && d != 0) { >- this.setDate(new Date(y, m, d, hr, min, 0)); >- return; >- } >- y = 0; m = -1; d = 0; >- for (i = 0; i < a.length; ++i) { >- if (a[i].search(/[a-zA-Z]+/) != -1) { >- var t = -1; >- for (j = 0; j < 12; ++j) { >- if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; } >- } >- if (t != -1) { >- if (m != -1) { >- d = m+1; >- } >- m = t; >- } >- } else if (parseInt(a[i], 10) <= 12 && m == -1) { >- m = a[i]-1; >- } else if (parseInt(a[i], 10) > 31 && y == 0) { >- y = parseInt(a[i], 10); >- (y < 100) && (y += (y > 29) ? 1900 : 2000); >- } else if (d == 0) { >- d = a[i]; >- } >- } >- if (y == 0) { >- var today = new Date(); >- y = today.getFullYear(); >- } >- if (m != -1 && d != 0) { >- this.setDate(new Date(y, m, d, hr, min, 0)); >- } >-}; >- >-/* Calendar.prototype.hideShowCovered = function () { >- var self = this; >- Calendar.continuation_for_the_fucking_khtml_browser = function() { >- function getVisib(obj){ >- var value = obj.style.visibility; >- if (!value) { >- if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C >- if (!Calendar.is_khtml) >- value = document.defaultView. >- getComputedStyle(obj, "").getPropertyValue("visibility"); >- else >- value = ''; >- } else if (obj.currentStyle) { // IE >- value = obj.currentStyle.visibility; >- } else >- value = ''; >- } >- return value; >- }; >- >- var tags = new Array("applet", "iframe", "select"); >- var el = self.element; >- >- var p = Calendar.getAbsolutePos(el); >- var EX1 = p.x; >- var EX2 = el.offsetWidth + EX1; >- var EY1 = p.y; >- var EY2 = el.offsetHeight + EY1; >- >- for (var k = tags.length; k > 0; ) { >- var ar = document.getElementsByTagName(tags[--k]); >- var cc = null; >- >- for (var i = ar.length; i > 0;) { >- cc = ar[--i]; >- >- p = Calendar.getAbsolutePos(cc); >- var CX1 = p.x; >- var CX2 = cc.offsetWidth + CX1; >- var CY1 = p.y; >- var CY2 = cc.offsetHeight + CY1; >- >- if (self.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { >- if (!cc.__msh_save_visibility) { >- cc.__msh_save_visibility = getVisib(cc); >- } >- cc.style.visibility = cc.__msh_save_visibility; >- } else { >- if (!cc.__msh_save_visibility) { >- cc.__msh_save_visibility = getVisib(cc); >- } >- cc.style.visibility = "hidden"; >- } >- } >- } >- }; >- if (Calendar.is_khtml) >- setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); >- else >- Calendar.continuation_for_the_fucking_khtml_browser(); >-}; */ >- >-/** Internal function; it displays the bar with the names of the weekday. */ >-Calendar.prototype._displayWeekdays = function () { >- var fdow = this.firstDayOfWeek; >- var cell = this.firstdayname; >- var weekend = Calendar._TT["WEEKEND"]; >- for (var i = 0; i < 7; ++i) { >- cell.className = "day name"; >- var realday = (i + fdow) % 7; >- if (i) { >- cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]); >- cell.navtype = 100; >- cell.calendar = this; >- cell.fdow = realday; >- Calendar._add_evs(cell); >- } >- if (weekend.indexOf(realday.toString()) != -1) { >- Calendar.addClass(cell, "weekend"); >- } >- cell.firstChild.data = Calendar._SDN[(i + fdow) % 7]; >- cell = cell.nextSibling; >- } >-}; >- >-/** Internal function. Hides all combo boxes that might be displayed. */ >-Calendar.prototype._hideCombos = function () { >- this.monthsCombo.style.display = "none"; >- this.yearsCombo.style.display = "none"; >-}; >- >-/** Internal function. Starts dragging the element. */ >-Calendar.prototype._dragStart = function (ev) { >- if (this.dragging) { >- return; >- } >- this.dragging = true; >- var posX; >- var posY; >- if (Calendar.is_ie) { >- posY = window.event.clientY + document.body.scrollTop; >- posX = window.event.clientX + document.body.scrollLeft; >- } else { >- posY = ev.clientY + window.scrollY; >- posX = ev.clientX + window.scrollX; >- } >- var st = this.element.style; >- this.xOffs = posX - parseInt(st.left); >- this.yOffs = posY - parseInt(st.top); >- with (Calendar) { >- addEvent(document, "mousemove", calDragIt); >- addEvent(document, "mouseup", calDragEnd); >- } >-}; >- >-// BEGIN: DATE OBJECT PATCHES >- >-/** Adds the number of days array to the Date object. */ >-Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31); >- >-/** Constants used for time computations */ >-Date.SECOND = 1000 /* milliseconds */; >-Date.MINUTE = 60 * Date.SECOND; >-Date.HOUR = 60 * Date.MINUTE; >-Date.DAY = 24 * Date.HOUR; >-Date.WEEK = 7 * Date.DAY; >- >-/** Returns the number of days in the current month */ >-Date.prototype.getMonthDays = function(month) { >- var year = this.getFullYear(); >- if (typeof month == "undefined") { >- month = this.getMonth(); >- } >- if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) { >- return 29; >- } else { >- return Date._MD[month]; >- } >-}; >- >-/** Returns the number of day in the year. */ >-Date.prototype.getDayOfYear = function() { >- var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); >- var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0); >- var time = now - then; >- return Math.floor(time / Date.DAY); >-}; >- >-/** Returns the number of the week in year, as defined in ISO 8601. */ >-Date.prototype.getWeekNumber = function() { >- var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); >- var DoW = d.getDay(); >- d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu >- var ms = d.valueOf(); // GMT >- d.setMonth(0); >- d.setDate(4); // Thu in Week 1 >- return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; >-}; >- >-/** Checks dates equality (ignores time) */ >-Date.prototype.equalsTo = function(date) { >- return ((this.getFullYear() == date.getFullYear()) && >- (this.getMonth() == date.getMonth()) && >- (this.getDate() == date.getDate()) && >- (this.getHours() == date.getHours()) && >- (this.getMinutes() == date.getMinutes())); >-}; >- >-/** Prints the date in a string according to the given format. */ >-Date.prototype.print = function (str) { >- var m = this.getMonth(); >- var d = this.getDate(); >- var y = this.getFullYear(); >- var wn = this.getWeekNumber(); >- var w = this.getDay(); >- var s = {}; >- var hr = this.getHours(); >- var pm = (hr >= 12); >- var ir = (pm) ? (hr - 12) : hr; >- var dy = this.getDayOfYear(); >- if (ir == 0) >- ir = 12; >- var min = this.getMinutes(); >- var sec = this.getSeconds(); >- s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N] >- s["%A"] = Calendar._DN[w]; // full weekday name >- s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N] >- s["%B"] = Calendar._MN[m]; // full month name >- // FIXME: %c : preferred date and time representation for the current locale >- s["%C"] = 1 + Math.floor(y / 100); // the century number >- s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) >- s["%e"] = d; // the day of the month (range 1 to 31) >- // FIXME: %D : american date style: %m/%d/%y >- // FIXME: %E, %F, %G, %g, %h (man strftime) >- s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format) >- s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format) >- s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366) >- s["%k"] = hr; // hour, range 0 to 23 (24h format) >- s["%l"] = ir; // hour, range 1 to 12 (12h format) >- s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12 >- s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59 >- s["%n"] = "\n"; // a newline character >- s["%p"] = pm ? "PM" : "AM"; >- s["%P"] = pm ? "pm" : "am"; >- // FIXME: %r : the time in am/pm notation %I:%M:%S %p >- // FIXME: %R : the time in 24-hour notation %H:%M >- s["%s"] = Math.floor(this.getTime() / 1000); >- s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59 >- s["%t"] = "\t"; // a tab character >- // FIXME: %T : the time in 24-hour notation (%H:%M:%S) >- s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn; >- s["%u"] = w + 1; // the day of the week (range 1 to 7, 1 = MON) >- s["%w"] = w; // the day of the week (range 0 to 6, 0 = SUN) >- // FIXME: %x : preferred date representation for the current locale without the time >- // FIXME: %X : preferred time representation for the current locale without the date >- s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99) >- s["%Y"] = y; // year with the century >- s["%%"] = "%"; // a literal '%' character >- >- var re = /%./g; >- if (!Calendar.is_ie5) >- return str.replace(re, function (par) { return s[par] || par; }); >- >- var a = str.match(re); >- for (var i = 0; i < a.length; i++) { >- var tmp = s[a[i]]; >- if (tmp) { >- re = new RegExp(a[i], 'g'); >- str = str.replace(re, tmp); >- } >- } >- >- return str; >-}; >- >-Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear; >-Date.prototype.setFullYear = function(y) { >- var d = new Date(this); >- d.__msh_oldSetFullYear(y); >- if (d.getMonth() != this.getMonth()) >- this.setDate(28); >- this.__msh_oldSetFullYear(y); >-}; >- >-// END: DATE OBJECT PATCHES >- >- >-// global object that remembers the calendar >-window.calendar = null; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/menuarrow.gif b/koha-tmpl/intranet-tmpl/prog/en/lib/calendar/menuarrow.gif >deleted file mode 100644 >index ed2dee0e6368d201bf5d32833884c7c1da6c7424..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 68 >zcmZ?wbhEHbWM^Py_{hZ2(9rPi-LwDy|1&T!DE?$&WME)o&;ha;K=KSsqAVN&i(DE6 >VRJ~d>0vEY-3aNTcS;53$4FHxP5xxKb > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_222222_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_222222_256x240.png >new file mode 100644 >index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a >GIT binary patch >literal 4369 >zcmd^?`8O2)_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~Gm<qS >zlCjL7i8RK}U~J#s@6Y%1S9~7lb?$xLU+y{go_o*h`AV=spXY*!!T<mOmxZ~R9RL9Q >zdj+hrf&W^P#f9C!Zpp^V{;aID?ElVL?Rdohw{Ucz9r_YL7=D6<&8F>PmYTG^FX}c% >zl<zAi(m>GE{DS1Q;~I7<vD)$Yj(fd>-6ze&TN@+F-xsI6sd%SwK#*O5K|pDRZqEy< >zJg0Nd8F@!OxqElm`~U#piM22@u@8B<<ecI*S<egUH7}csd8!)jLBD2s`p(8v&--KE >z71^q9MglFywkSt_5FCr2F%o&UR(5j7-O>moyKE%ct`B(jysxK+1m?G)UyIFs1t0}L >zemGR&?jGaM1YQblj?v&@0iXS#fi-VbR9zLEnHLP?xQ|=%Ihrc7^yPWR!tW$yH!zrw >z#I2}_!JnT^(qk)VgJr`NGdPtT^dmQIZc%=6nTAyJDXk+^3}wUOilJuwq>s=T_!9V) >zr1)DT6VQ2~rgd@!Jlrte3}}m~j}juCS`J4(d-5+e-3@EzzTJNCE2z)w(kJ90z*QE) >zBtnV@4mM>jTrZZ*$01SnGov0&=A-JrX5Ge%Pce1Vj}=5YQqBD^W@n4KmFxxpFK`uH >zP;(xKV+6VJ2|g+?_Lct7`uElL<&jzGS8Gfva2+=8A@#V+xsAj9|Dkg)vL5yhX@~B= >zN2KZSAUD%QH`x>H+@Ou(D1~Pyv#0nc&$!1kI?IO01yw3jD0@80qvc?T*Nr8?-%rC8 >z@5$|WY?Hqp`ixmEkzeJTz_`_<!oE0dsO`po1=$i_1k<Um_}caMZcrpqA*x-}Rw(fX >z3Qyh8;-4^Fe)UICI@ayzmyV?48GbR;1*s>wsSRi1%Zivd`#+T{Aib6-rf$}M8sz6v >zb6ERbr-SniO2wbOv!M4)nb}6UVzoVZEh5kQWh_5x4rYy3<sHrHJLqL+DcLT5`t$L@ >z5_J8#H;PWO1GW@oId1Y>c!871NeaM(_p=4(kbS6U#x<*k8Wg^KHs2ttCz<+pBxQ$Z >zQMv;kVm5_fF_vH`Mzrq$Y&6u?j6~f<juy`C^I0O`4mfXK0lrRY*VoeJX&k$9aL;Hl >zlp63sf~-1z_419)A8^j|LeQSmK&T8R7nA=Ki3^H;YaeL&hF6>tIV0Yg)Nw7JysIN_ >z-_n*K_v1c&D}-1{NbBwS2h#m1y0a5RiEcYil+58$8IDh49bPnzE7R8In6P%V{2IZU >z7#clr=V4<zT-gP2u}DD>yyrRe@oXNqbqo^^LvlLE?%8XaI&N(Np90-psU}7kqmbWk >zZ;YBwJNnNs<m6GqjV2(cCX2e+#tSOgIGm~J&Djknhy!e`&p)NTq>$~d!mx9oMGyT( >znaBoj0d}gpQ^aRr?6nW)$4god*`@Uh2e+YpS@0(Mw{|z|6ko3NbTvDiCu3YO+)egL >z>uW(^ahKFj>iJ-JF!^KhKQyPTznJa;xyHYwxJgr16&Wid_9)-%*mEwo{B_|M9t@S1 >zf@T@q?b2Qgl!~_(Roe;fdK)y|XG0;ls;ZbT)w-aOVttk#daQcY7$cpY496H*`m@+L >zeP#$&yRbBjFWv}B)|5-1v=(66M_;V1SWv6MHnO}}1=vby&9l+gaP?|pXwp0AFDe#L >z&MRJ^*qX6wgxhA_`*o=LGZ>G_NTX%AKHPz4bO^R72ZYK}ale3lffDgM8H!Wrw{B7A >z{?c_|dh2J*y<H{`M3l!HEtOc{;H{lJx}(C|*lvPQ+RAcV`>8b04c37OmqUw;#;G<* >z@nz@dV`;7&^$)e!B}cd5tl<nF(??uM#|`*5pIKe!DEUl5-&9M=s_3Yn@-P(czyPQ~ >zTU3I3bk%z<*w;9V(oQvt^2H`kBAW;=2oA<L1<qVIK(Z{Hk@5&E&_2mS+|}+?g@FBu >zK+e=OWg<)e?RO;llNw00>0{g(Q>5_7H^@bEJi7;fQ4B$NGZerH#Ae1#8WDTH`iB&) >zC6Et3BYY#mcJxh&)b2C^{aLq~psFN)Q1SucCaBaBUr%5PYX{~-q{KGEh)*;n;?75k >z=hq%i^I}rd;z-#YyI`8-OfMpWz5kgJE3<X7ptj0dmPk5UrEf%nVD%<Giiw4wVh!K0 >zFjy-VAnpOFJIDm=jqqahP0Wam<9qv4UMIazx8J<YJz>I!3ean6=UZi!BxG7i(YBk? >z02HM7wS0)Wni{dWbQMRtd-A)_Az!t>F;IwWf~!*)-Az4}yryNkz&9)w>ElA80Oc`6 >zHo#9H!Y3*Qx9n@Jn)!w6G^hb;e_n8zpIyXCN`JFkPc)^Q?2MsLNFhMgrcZI-<#1ne >zjH;KFf?4eAT9<t<iUSC5BsF-<$q+H@@j%Yk>mQZ}ZfHLGA#d%s;SZK4p0FwZT2S^{ >zQ2BG1xJsbK6?yrHTjJi|5C0u=!|r!?*4FL%y%3q#(d+e>b_2I9!*iI!30}42Ia0bq >zUf`Z?LGSEvtz8s``Tg5o_CP(FbR0X$FlE0yCnB7su<mcL>DPmI2=yOg^*2#cY9o`X >z;NY-3VBHZjnVcGS){GZ98{e+l<X|f4%S*+x526SE1mJ%6M<Nt*!}czEQf{?H1U0br >z^Y7cXNxH@=Ve^#j3H@BPU>q~O$u6pEcgd0CrnIsWffN1MbCZDH<7c^hv+Z0Ucf0{w >zSzi^qKuUHD9Dgp0EAGg@@$zr32dQx>N=ws`MESEsmzgT2&L;?MSTo&ky&!-JR3g~1 >zPGTt515X)wr+Bx(G9lWd;@Y3^Vl}50Wb&6-Tiy;HPS0drF`rC}qYq22K4)G#AoD0X >zYw$E+Bz@Zr^50MAwu@$?%f9$r4WHH?*2|67&FXFhXBrVFGmg)6?h3^-1?t;UzH0*I >zNVf9wQLNLnG2@q>6CGm>&y|lC`iCFfYd}9i%+xkl^5oBJ?<;aneCfcHqJh7Yl5uLS >z9Fx-(kMdcNyZejXh22N{mCw_rX1O!cOE&3>e(ZH81PR95wQC37En4O{w;{3q9n1<A >zPC{;HRD3#A!@Lk)+k!~onQ0|-U%#uGd$&L?ZhNC&R)V(mb`NhUqrYysoMQ;Z)sq!y >zW_WwV!+jO*nGT8-Hx_JVmFK^=>t&;p)D%&Z%Nw$gSPa!nz8Slh7=ko2am)XARwOWw >zpsz0~K!s{(dM$NB=(A=kkp>T(*yU6<_dwIx>cH4+LWl282hXa6-EUq>R3t?G2623< >z*RwTN%-fgBmD{fu*ejNn)1@KG?Sg<bw3hQ~jCP9_dLp#J9Fi#nX3wGv<cLwQ;8x0` >zA<%pA%E0S;<5FJhw8e#?n&IA5g19Fv!v7YC%Gxqd<x1=+hht1t>*8z3hYtkQJQjB6 >zQ|x>wA=o$=O)+nLmgTXW3<g>_6diA;b4EY{*i<HxX2Q~PA|R-tJ=V1~4KO3h7H~CG >ztNFL#J=a@4Q5K7Ogvj-+3N_IJUjc}x34}a7@bDE3!)Kj4s7ME<v)`yP${V~G_J@6l >zp{&i)CGxx1)X`lnwc}#g;g<(rA1#7Ez8@J}tuMD3bB{Wifbe~LWT0zYNjgb_qn|+G >z2TCDZw1rV|wPx@~-H8<4^MGxfR0aLq+_k+{JT<mckxWLsw*J%G%YH0>*R%6dO2EMg >z@6g?M3rpbnfB@hOdUeb9<OD{Zt&T^7p>6=~I?OIA3@BWAGmTwiQ{x5Cqq<8c10L!P >zd@Qk^BseTX%$Q7^s}5n%HB|)gKx}H$d8Sb$bBnq9-AglT2dGR2(+I;_fL|R4p$odJ >zllfb0NqI)7=^z~qAm1V{(PkpxXsQ#4*NH9yYZ`Vf@)?#ueGgtCmGGY|9U#v|hRdg- >zQ%0#cGIfXCd{Y)JB~qykO;KPvHu|5Ck&(Hn%DF~cct@}j+87xhs2ew;fLm5#2+mb| >z8{9e*YI(u|gt|{x1G+U=DA3y)9s2w7@cvQ($ZJIA)x$e~5_3L<r=v~@?aZ+642@!3 >z&nTpp8p^rR@IEsq`uhzfD&i>KFV~ASci8W}jF&VeJoPDUy(BB>ExJpck;%;!`0AAo >zAcHgcnT8%OX&UW_n|%{2B|<6Wp2MMGvd5`T2KKv;ltt_~H+w00x6+SlAD`{K4!9zx >z*1?EpQ%Lwiik){3n{-+YNrT;fH_niD_Ng9|58@m8RsKFVF!6pk@qxa{BH-&8tsim0 >zdAQ(GyC^9ane7_KW*#^vMIoeQdpJqmPp%%px3GIftbwESu#+vPyI*YTuJ6+4`z{s? >zpkv~0x4c_PFH`-tqafw5)>4AuQ78SkZ!$8}INLK;Egr;2tS18hEO5=t;QDmZ-qu?I >zG+=DN`nR72Xto{{bJp||`k}-2G;5#xg8E~xgz22)^_Z;=K|4@(E&5J)SY2of=olcw >z5)@L)_Ntcm!*5nEy0M9v0`S33;pO4T<mv%0Rx6?c2H~TA%zOO^T2$@D<Cut3{ae}| >zAT@Uzc>N;>4(Z+<j5j2DQ*r;U|6a;YfP1jST$I3mSn3aNn!?<=B-XkzG?hQH;@bu% >zmFYDDgbC%Wt{6LBrs%88L}deF9pse}dmIp4lmp@Tir9q)JKESa=h>19p_0>u#e-vE >zXCU(6gAvu~I7Cw(xd%0e59MNLw^U37ZDbsBrj%eDCexw8a3G`nTcXVNL6{B7Hj@i& >zbVB{;ApEtHk76q08DJ48dSxd$C(;$K6=FpU<~l9pVoT9arW^Vu{%Bcn4`eIpkOVC| >z$)AKYG_`ypM{0@BUb3^9lqi_c?ONH|4UJMJWDowMVjacycX7}9g={O7swOB+{;+?; >zjBo!9?+nd)ie#x5IbFW-zBOo0c4q@9wGVt5;pNt`=-~Zgcw#*`m($6ibxtZ`H=e=} >zF#GZ~5$%AUn};8U#tRem0J(JTR}<qii}wxmUzVwVIg2$uE2;GN{hhT&GE1i;_fi(_ >z9KKXP)ds1Q)XnUhr?uXO-HbKE%5f%+-C>d4vR(dgK2ML~lZsPhayJ2h1%sD4FVst| >zKF)+@`iNzLRjg4=K8@**0=5cE>%?FDc({I^+g9USk<8$&^qD~@%W0i4b|yMG*p4`N >zh}I!ltTRI8Ex$+@V{02Br%xq#O?UlhO{r8WsaZnZCZq0MK9%AXU%MDLT;3=0A9(BV >z9VxxxJd7jo$hw3q;3o?yBLmA=azBUrd9>-<_ANs0n3?-Ic*6&ytb@H~?0E(*d>T5n >z-HiH2jsDf6uWhID%#n>SzOqrFCPDfUcu5QPd?<(=w6pv1BE#nsxS{n!UnC9qAha1< >z;3cpZ9A-e$+Y)%b;w@!!YRA9p%Kf9IHGGg^{+p`mh;q8i7}&e@V3EQaMsItEMS&=X >plT@$;k0WcB_jb;cn%_Idz4HO$QU*abf4}+wi?e96N>fbq{{i|W0@(ln > >literal 0 >HcmV?d00001 > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_454545_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_454545_256x240.png >new file mode 100644 >index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105 >GIT binary patch >literal 4369 >zcmd^?`8O2)_s3^p#%>t<I$5%B*(%$RifAlJDl()+*_W)tj4atJl`V!4ku}Mhk*o=k >zjAh1XB8{;#7~8k^`}6($6`#j>oqJ#RmwV2==ic*rz7lOw=eaq=H~;_ux21)-Jpcgw >zdj+hrf&W^f<%Qk9Zpqf#;jH;N^Z%VA?R|9mZ{esQd(<U>2<!w4n{E5UY;_q2Kjdw+ >z82?u;grSg`#RaKr$2IL$<8%^mo%i~NdQO^4v^7Omye~<8Q~6Hu057+~0Rg2Kxj!$g >z_L|8%XY3R8<nG-Oivs|FH_p=B)FJfcl1r-lR0AKR&!T)T_NiKgC;gh$={p-wz3z|u >zROYC?84a==-y$FRL$ECVCJ4mYI=QJG4=ZDk+_JG$hXLT(^ZwpmB3Qtdel0HV6@VBB >z`QccNy?aa`3wSB4C03J{1$_2{CdQ&kNo`e#GA|Uwc^|vvdo*2c<;VMsMZj6wesHJ& >zfn8A-hdn==tj|{1&XEIC%H&dZG>F=?y+!`XZ5CR?ue=UdHIfUDFM*m15I;g=VN2jw >zQW9?wOhDI#+P0|`@JQoC3!pu=AzGMtYB>V&?8(2>_B5_p`1Sb1t{^|J%bZYv09RS? >zQ*dcs7}$)taJ@vX0E<96P{ur)Eygr{&ALyNoMP%_94m}=qFVT)&CeG1DBBMLUSKP^ >zp%%Q3$MEtKll)X*+$)3O_3x`4%cHY0uhy7U;5x^Ir}X1)mv&B%|A)@A$a>f}tP{5X >z9-gkti`YyT+hk9)cZW7fAQhjT%$XLLI^&VR=qev36;`WGBOP!^&(?!sK6jSH0Dnz4 >zoEMMNu}y&n=rd-GWI?rGBI8!GD*NJ$k&e5-6+~-9F^6tV<=5`FcY~t{iqRcncEU+F >zkT~jww!oy(@~b~WGI8!lzjURX&IpJjFGxShOKUunP+rW$I{c|x0qM6!Gxf6n(;$D> >z+QYi<x}98akg5UfU4?yb%FQ<_lxiHnYmxajFXIG|a~w7(HNLUz{)0YtmeTE#r#~Mb >zEJ4?=`ylB=dthr}w$rA7r8hX4l&lC$d_P-w4$+T%W>ULqq)Fy4VDk&Mev)NyM@nvF >z7O6M*A$C)kBi0HGMT_+xfQ^USTM)>*h_Rx%eSRxA%n|FuC&=F=<MvvnBAs(r9_AGz >zj#LLeNR-pStzN#d`2)svUKrYY8VHp|=b;OpBCx?RZykcH-tb9~qbL$x$(`2<NV~cc >z4z2Bp@;~m=w?YY3`1HQse<0qUrn@*pl<9U81gTtZ)sci`){#ZC_;MW`&Pf|5tFMu) >zNntUAcOEu%z*Jn}7mF2zz<XZ9AJ69V*u*k%90)E)xjhFhGpDUB;8URcE48FZ6C~pM >z?Ts<B8K(dWLtX(n(qsy9ZnmtSZMvX}iN~6m-JIQUhB$Jp^#`POloqkwRUB~%vh1bb >zC>Pz}E5uCqbcy;7j=%Qh`glqEA-jx0(a<)uKO5Fe|JLD-ndZ-vnW<ri@n%jaMYzj7 >zX?raMEa{g1Nj)C|3n6_>`G=O&^%pa}Ah(2<WOo_zsuE*m)B)+26L-$_R)8Mt!h_+m >zGSDo8r$fejfn53aqFM*uLw|#&_iQ*6TU{OdrA7}lT4KP`OOMm29%p3GQ($Ogs{j^T >z=g$nG8dsLaiNzbiDO&OwQ#OK3hnS0Xl?&>%m?oANs{lJ`?RhrZ8n!`Q97TKw{YAw9 >zD)=M{mD(~_jj`LTd%q6Veum)Cnd!7lw}(5h%ub<pmB27LD)tw!KS(lRCsSz}_0~Q5 >z++Vs6%x?XRy|>Hcg^2O`prn%u9es3C#&%TsnmSD3%3Ik^Yd@6-d%(I7kqT(B@dVX2 >zIidXgd>qY<v*DpOyVTegj5UJcYxamc`M9CL<}>T-oTZ=1sGI7^*_E9Q)1F2mooE0R >zXopPnh^c<h&G9wfvaCzpvSP8>i@+wz2ZDjo&Owyxh6t90Gt!<xg*qpB3A;LdY7lS$ >z0mzk>u0miLxc!bue^LvHF?)<XV}=kJ{RX*cfn)a+D2~O8Y=!~2fS9cKDPuz4*MQLC >zwM5dvXSiQv_>O@Yf!dQUXfW$u8(f_n07^N)-vpIe;TrHv5uKm{h_v`-IN^zwWc>Lk >ziGsSr89sDcdOR_wa~DjrqV&Nd*$18(vohPJ3hSzE<Osy0Rr*F0h@-*OS1G9oRHEq@ >z9?sE*0Z4d4>JPF2d!u}415<NC)5PBXwD(D$(;YW&^GurZBLnrDJNQ>wrSMtS(zNa7 >zbO0G4ajgKNp{`D7DO<(T?w<Vad&plCU;-58p5*QlLG@5irL1Y2E%1+sNBO!E$v_1( >zfer8z2=|SS#V-5VsAYZOJ`HMwI-D0;7GM{(mNwYz(HBeYA-SOGlhSZdjoDM|cX{lW >zT;rN$<q#H!`nF}iixL3*8!1g*3lc;eb3BOa_4<e9!5dnSekj=ZZv=o92q$bSz803h >z7E<{fE}<G^c|}1X@|J|p_rrh3+^FZ>owarQ0dIKLb<}#prQM)ytB73YNTPQgX^xoT >zm>;yKSJ*c@QfD8HW`6&+mowOaA|A&~G0fO6&xwj;E3O9^Zu<A)9K!;JSp!U!mD@?g >zY8W{D4p?v0TsF6soi+1C?#8#Pwz=pk`tnlA?1Px0KY`fa15t3ryzsq?UgTTtk-?2@ >z0|NVY?NV-W%9wl=2mAnc9T>~ZXts~;-d%FyyeXrijORi<_S(dw_5@h&-fTY?#FJo% >zQZZ1&ED%$if+n8JVM{s-ZoK@P>p@z4s`AoI6hYxE!Ie_Y)cpjZjc8@~uNMYVfy#J$ >z)+sdEX7DK^{}kUAST<B=OhV@qPQ3Qif^5MOYwO#g!x>8U6^p6#c>0Lc>T~9`0}`*2 >zizaU)TFS4(u;BenUWZr?s{D)Z)rc9L5&gUvz3iSQaF#J)D)Ts{YgagdDcI1S`dtes >zPqb4|h-RIkjhnpmn(Q2Je6Di5C?MkCUL)!WoKn|P#al41v#-Q8`K1$Gh64UhPQj|T >zaZb%tJ}O{A?Cvl26!jeKS3OUkp5@8RDBYwh`Loxb5W<^m*R37+v}#*m-G{{ocF-#r >z7!k3ZS^4Qu9sNRNZ3`laW2TqV{rs<L?cD;oy6=sBSqa|O-#xsgg8I7UdX6C+-#}8N >znd2Pb5BF7hD4k?$9t_ypIzM1<*V|S%xjC{nk1uo~sRXK(ax-o(DHLID>R#~gtVp6C >zL0?}~gbLTv^jqtPQD@Cpq6{B6v&*Y)?tx}<G=OnA_)fo_PTo~X``>)z=qQNB4Z_59 >zpI2L)xQ`!|J8wWgs82jSw_8(;#}y7~Y^&hY9P1G)@`CGtIi*tZ%-%&;$PuG(!M%)E >zQ?T#imBH8dCZxUBX^RWPwIh9LcnL3#$befQDr@UJl{=}o0){qIt52vU9X=3L_gvVW >zPqp_YhhpM6XiE7Lvn-G0Wzo>0;g|$_-7|ucz~*w%bW@hr6M?~v9dT}L=>UotTj13& >z?Uvt0_uOvzMq4iG<D=HMD%Hgb{RAOirV!H1;KNrOXnvc#AtgF6gZ)OeasJT7@IUOs >z3>6)gZqeU;W=<aJX`L6t55GM4`e+gS@%`w~YD0zXxJUHKM7ZDEBSSrtD&k2Z4D|#G >zJ5UbYqAiR`sJDPW>P@EVod;}Vr7P*@=C19v;iz$4N+c5ewauTtKK5e;yIx(FQUec0 >z`G)VlTUY|m2L=KusMRgMlapu#wt8MohK3=y`!J`tD6nYd%?xIZO`Q)skL)R%3Vf(P >z__5Sx3h%fKF=sNdZo2p(w=_|}1M%ri7fO?8))sU1ySG;M4p4;zrr}4l0lzvA!WQ&a >zrwX>%lJkv`Gr_u=K>kHOg6(AB(R3FOryElY)-vi|<TomX`W?JNDC0g^IYOR`j#Ny? >zq>fRsB<c>S<)$1;TC_?BnyScjY6>_ZD=T|bjcbjz@D6V+yfHd4SU+J*2Dh%n;$5ou >zHh6R=)$>IH@%5js2KH#JkfFCVI}P>~U;|}>kk|06tA}^~B;|gJ$UvSF-l4GX43DAR >z&M2mp8OgiTaK4li0|Q2qmGNYsm+Qq^JM8yfCP<m#pZb=yU6K>>5!<CwWb^U_zj|i? >zNZ>31rjh4Mnq~+5X8+_$sc<T(_i%WG<aw%#f%)z$Z5cPg!(K+(t@5WjB;>fP1Fp!c >zcQO*#6cfJ?<K|t$r<_+q(>ZRxn_$Se_|}Xo1oIF7s(7CllypCW@W8-y5%Bel_K*0G >zd~8UWeYCWz>~^hF3ond|tQcClJ(8^9FW&&?U)a4O-pE;Y*u|FHGax>F*Kg_beOF5c >z&?#xRN5Q?ckEwCnNr-${XC=w-te5%QH(6O~yxke=R!_ns))PU07Pu)CY`<>$+XicZ >zCI=g^;q7NZnw=-vf;HoWLD+}`&Bph>kiqyX5jxjI1A41d$R3nahq@CHULV#9ItIwJ >z0)^JGy{hB;@SD|}Zel8~2z;<pba^ByrDo8Z)taD)hWlz9^I1QF7T0+5IwfJ%{+6}} >zNXy#>UjN96MR@dt;EV`9RP4X&zn8ib=n*107cICSp7z6srZ~4Qg|Vp$OB0By{I<bG >zWqMP99KyM)D<)2t$p)&F=o~<tqk;;2j}wB8cElfF5x>xAPaD7HGFw_HTza~wWN1A6 >z3`7BZFse2a4{y#V^&;nRVcZOz*2>A?jm$%?)KawLR0cEz24qxxOOo9_2)9MrWpSg7 >zPiPz+M7(zPRZ3$#11ti?uI!}bM!Dg%L#+uR+^2<I?Z^fxbR)l{AFT@>L2RX+QlMpL >zg_DrR=GIT7C~b+^OZK)?l7*9c-78zWVbLo1oS}bItdscuF80}guwA8c^(47DfaBjV >z^V@&JJHxYHqS+e7&X;ezZwsE2+t~n0?*m^(db@WnI{LgAnOqOa<8pRvo0E>*O&~J_ >z&A)t2LOG)5=3$3n2_gi2Kpvgv)#L<a@xGzK%W{n`XE7#crIi1^zq2+7X4y>CUh2Y~ >z!<QPT+96d^dRhJRw6@zEH{;AP@?1&dcUa`M?3O>A&(~-8reT$sJk0=L;m~ES3k}k% >zkF%gzzT(+nRU0IeUvuW8pq=8<I^mZ94rY+=zSZ<rG%I8)gE9nVIjuX+&P1hz*c0Xs >zQMyFSbw-$i)fY(<OkES?^r=MeneHELsa49QwM)p`B;>uzr&7HW>K5ZiD*8qL17AI^ >zGqo>*mvIChU6+&t{A3|!W?~pi9_O$>k2d|<zeUO)Gxs<LYy4oGeX!SpInTgG%s{8N >zTaf>#(Z721wcT{S1)_<AzkE!%S%`iFUee}xJ{-&r+S&bhk>UFZ+}QS^KZ*u?5Y~bz >z^cLI;2{$C_ZwWqM@sYMYwG+^N<^Ivq8ZOwV;7xT+WCh)I9PHC}ut;VNr?<buAVK8A >pDJs~K*NL^;XFK;v?e86vzWG22X~SUKzh8ZT<yn+@l^Htb{{Z&^Au9j? > >literal 0 >HcmV?d00001 > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.css b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.css >index e66faf0..5f3f911 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.css >+++ b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.css >@@ -56,26 +56,26 @@ > .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } > .ui-widget .ui-widget { font-size: 1em; } > .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } >-.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } >+.ui-widget-content { border: 1px solid #B9D8D9; background: #ffffff; color: #222222; } > .ui-widget-content a { color: #222222; } >-.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } >+.ui-widget-header { border: 1px solid #B9D8D9; background: #E6F0F2 none; color: #222222; font-weight: bold; } > .ui-widget-header a { color: #222222; } > > /* Interaction states > ----------------------------------*/ >-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } >+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B9D8D9; background: #F4F8F9 none; font-weight: normal; color: #555555; } > .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } >-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } >+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #B9D8D9; background: #E6F0F2 none; font-weight: normal; color: #212121; } > .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } >-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } >+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff none; font-weight: normal; color: #212121; } > .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } > .ui-widget :active { outline: none; } > > /* Interaction Cues > ----------------------------------*/ >-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } >+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #FED22F; background: #FFF4C6; color: #363636; } > .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } >-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } >+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec; color: #cd0a0a; } > .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } > .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } > .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } >@@ -293,7 +293,14 @@ > * > * http://docs.jquery.com/UI/Autocomplete#theming > */ >-.ui-autocomplete { position: absolute; cursor: default; } >+.ui-autocomplete { position: absolute; cursor: default; -webkit-box-shadow: 2px 2px 2px rgba(0,0,0,.3); -moz-box-shadow: 2px 2px 2px rgba(0,0,0,.3); box-shadow: 2px 2px 2px rgba(0,0,0,.3); } >+ >+.ui-autocomplete.ui-widget-content .ui-state-hover { border: 1px solid #B9D8D9; background: #E6F0F2 none; font-weight: normal; color: #212121; >+} >+ >+.ui-autocomplete-loading { >+ background: #FFF url("../../img/loading-small.gif") right center no-repeat; >+} > > /* workarounds */ > * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ >@@ -308,34 +315,37 @@ > * http://docs.jquery.com/UI/Menu#theming > */ > .ui-menu { >- list-style:none; >- padding: 2px; >- margin: 0; >- display:block; >- float: left; >+ list-style:none; >+ padding: 2px; >+ margin: 0; >+ display:block; >+ float: left; >+} >+.ui-menu li { >+ list-style:none; > } > .ui-menu .ui-menu { >- margin-top: -3px; >+ margin-top: -3px; > } > .ui-menu .ui-menu-item { >- margin:0; >- padding: 0; >- zoom: 1; >- float: left; >- clear: left; >- width: 100%; >+ margin:0; >+ padding: 0; >+ zoom: 1; >+ float: left; >+ clear: left; >+ width: 100%; > } > .ui-menu .ui-menu-item a { >- text-decoration:none; >- display:block; >- padding:.2em .4em; >- line-height:1.5; >- zoom:1; >+ text-decoration:none; >+ display:block; >+ padding:.2em .4em; >+ line-height:1.5; >+ zoom:1; > } > .ui-menu .ui-menu-item a.ui-state-hover, > .ui-menu .ui-menu-item a.ui-state-active { >- font-weight: normal; >- margin: -1px; >+ font-weight: normal; >+ margin: -1px; > } > /*! > * jQuery UI Tabs 1.8.20 >@@ -355,3 +365,71 @@ > .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ > .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } > .ui-tabs .ui-tabs-hide { display: none !important; } >+/*! >+ * jQuery UI Datepicker 1.8.20 >+ * >+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) >+ * Dual licensed under the MIT or GPL Version 2 licenses. >+ * http://jquery.org/license >+ * >+ * http://docs.jquery.com/UI/Datepicker#theming >+ */ >+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } >+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } >+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } >+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } >+.ui-datepicker .ui-datepicker-prev { left:2px; } >+.ui-datepicker .ui-datepicker-next { right:2px; } >+.ui-datepicker .ui-datepicker-prev-hover { left:1px; } >+.ui-datepicker .ui-datepicker-next-hover { right:1px; } >+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } >+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } >+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } >+.ui-datepicker select.ui-datepicker-month-year {width: 100%;} >+.ui-datepicker select.ui-datepicker-month, >+.ui-datepicker select.ui-datepicker-year { width: 49%;} >+.ui-datepicker table {width: 100%; font-size: .9em; border : 0; border-collapse: collapse; margin:0 0 .4em; } >+.ui-datepicker th { background : transparent none; padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } >+.ui-datepicker td { border: 0; padding: 1px; } >+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } >+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } >+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } >+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } >+ >+/* with multiple calendars */ >+.ui-datepicker.ui-datepicker-multi { width:auto; } >+.ui-datepicker-multi .ui-datepicker-group { float:left; } >+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } >+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } >+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } >+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } >+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } >+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } >+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } >+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } >+ >+/* RTL support */ >+.ui-datepicker-rtl { direction: rtl; } >+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } >+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } >+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } >+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } >+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } >+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } >+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } >+.ui-datepicker-rtl .ui-datepicker-group { float:right; } >+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } >+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } >+ >+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ >+.ui-datepicker-cover { >+ display: none; /*sorry for IE5*/ >+ display/**/: block; /*sorry for IE5*/ >+ position: absolute; /*must have*/ >+ z-index: -1; /*must have*/ >+ filter: mask(); /*must have*/ >+ top: -4px; /*must have*/ >+ left: -4px; /*must have*/ >+ width: 200px; /*must have*/ >+ height: 200px; /*must have*/ >+} >\ No newline at end of file >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.js b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.js >index 789014a..6996eae 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.js >+++ b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.js >@@ -1,25 +1,29 @@ >-/*! jQuery UI - v1.8.20 - 2012-04-30 >+/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.core.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.20",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}})})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.21",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}})})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.widget.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.mouse.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent"))return a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(b){if(c)return;this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted)return b.preventDefault(),!0}return!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0,!0},_mouseMove:function(b){return!a.browser.msie||document.documentMode>=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent"))return a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(b){if(c)return;this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted)return b.preventDefault(),!0}return!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0,!0},_mouseMove:function(b){return!a.browser.msie||document.documentMode>=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.position.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?a.isFunction(b)?this.each(function(c){a(this).offset(b.call(this,c,a(this).offset()))}):this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.autocomplete.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.isMultiLine=this.element.is("textarea"),this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(b.options.disabled||b.element.propAttr("readOnly"))return;d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)===!1)return;return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this._response())},_response:function(){var a=this,b=++c;return function(d){b===c&&a.__response(d),a.pending--,a.pending||a.element.removeClass("ui-autocomplete-loading")}},__response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close()},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){return b.length&&b[0].label&&b[0].value?b:a.map(b,function(b){return typeof b=="string"?{label:b,value:b}:a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)},widget:function(){return this.menu.element},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(!a(c.target).closest(".ui-menu-item a").length)return;c.preventDefault(),b.select(c)}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){if(!this.active)return;this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active){this.activate(c,this.element.children(b));return}var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:first")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.isMultiLine=this.element.is("textarea"),this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(b.options.disabled||b.element.propAttr("readOnly"))return;d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)===!1)return;return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this._response())},_response:function(){var a=this,b=++c;return function(d){b===c&&a.__response(d),a.pending--,a.pending||a.element.removeClass("ui-autocomplete-loading")}},__response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close()},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){return b.length&&b[0].label&&b[0].value?b:a.map(b,function(b){return typeof b=="string"?{label:b,value:b}:a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)},widget:function(){return this.menu.element},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(!a(c.target).closest(".ui-menu-item a").length)return;c.preventDefault(),b.select(c)}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){if(!this.active)return;this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active){this.activate(c,this.element.children(b));return}var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:first")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.tabs.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){function e(){return++c}function f(){return++d}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.20"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){e()}:function(a){a.clientX&&c.rotate(null)});return a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate),this}})})(jQuery);; >\ No newline at end of file >+(function(a,b){function e(){return++c}function f(){return++d}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.21"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){e()}:function(a){a.clientX&&c.rotate(null)});return a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate),this}})})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 >+* https://github.com/jquery/jquery-ui >+* Includes: jquery.ui.datepicker.js >+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >+(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);if(!c.length)return;c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);if($.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])||!d.length)return;d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover")})}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}$.extend($.ui,{datepicker:{version:"1.8.21"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);if(c.hasClass(this.markerClassName))return;this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a)},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$('<span class="'+this._appendClass+'">'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('<button type="button"></button>').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]),!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);if(c.hasClass(this.markerClassName))return;c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block")},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+g+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f),this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);return c&&!c.inline&&this._setDateFromField(c,b),c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(d){$.datepicker.log(d)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if($.datepicker._isDisabledDatepicker(a)||$.datepicker._lastInput==a)return;var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){return e|=$(this).css("position")=="fixed",!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();return b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0),b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!b||a&&b!=$.data(a,PROP_NAME))return;if(this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=function(){$.datepicker._tidyDialog(b)};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,e):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,e),c||e(),this._datepickerShowing=!1;var f=this._get(b,"onClose");f&&f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!$.datepicker._curInst)return;var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);if(this._isDisabledDatepicker(d[0]))return;this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e)},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if($(d).hasClass(this._unselectableClass)||this._isDisabledDatepicker(e[0]))return;var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;return c&&s++,c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;return r+=f[0].length,parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase())return f=c[0],r+=d.length,!1});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="'"&&!n("'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"'":n("'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;do{var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}while(!0)}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;return c&&m++,c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="'"&&!h("'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"'":h("'")?k+="'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;return c&&e++,c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="'"&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()==a.lastVal)return;var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;return b.setDate(b.getDate()+a),b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());return f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0)),this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){return a?(a.setHours(a.getHours()>12?a.getHours()+2:0),a):null},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', -"+i+", 'M');\""+' title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>":e?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', +"+i+", 'M');\""+' title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":e?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>",x=d?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?w:"")+(this._isInRange(a,v)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+a.id+"');\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+='<div class="ui-datepicker-group';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+P+'">'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var R=z?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+A[T]+'">'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+='<td class="'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!bb||G)&&ba[2]?' title="'+ba[2]+'"':"")+(bc?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?" ":bc?'<span class="ui-state-default">'+Y.getDate()+"</span>":'<a class="ui-state-default'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+'" href="#">'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),M+=Q}K+=M}return K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),a._keyEvent=!1,K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='<div class="ui-datepicker-title">',m="";if(f||!i)m+='<span class="ui-datepicker-month">'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?" ":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+='<span class="ui-datepicker-year">'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}return l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?" ":"")+m),l+="</div>",l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;return e=d&&e>d?d:e,e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));return b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth())),this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");return b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10),{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);return typeof a!="string"||a!="isDisabled"&&a!="getDate"&&a!="widget"?a=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b)):this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)}):$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.21",window["DP_jQuery_"+dpuuid]=$})(jQuery);; >\ No newline at end of file >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/ui.tabs.css b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/ui.tabs.css >deleted file mode 100644 >index daf9f86..0000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/ui.tabs.css >+++ /dev/null >@@ -1,81 +0,0 @@ >-/* Caution! Ensure accessibility in print and other media types... */ >-@media projection, screen { /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types... */ >- .ui-tabs-hide { >- display: none; >- } >-} >- >-/* Hide useless elements in print layouts... */ >-@media print { >- .ui-tabs-nav { >- display: none; >- } >-} >- >-/* Skin */ >-.ui-tabs-nav, .ui-tabs-panel { >-} >-.ui-tabs-nav { >- list-style: none; >-} >-.ui-tabs-nav:after { /* clearing without presentational markup, IE gets extra treatment */ >- display: block; >- clear: both; >- content: " "; >-} >-.ui-tabs-nav li { >- float: left; >- list-style-type : none; >-} >-.ui-tabs-nav a, .ui-tabs-nav a span { >- float: left; /* fixes dir=ltr problem and other quirks IE */ >- } >-.ui-tabs-nav a { >- margin: 0; /* position: relative makes opacity fail for disabled tab in IE */ >- white-space: nowrap; /* @ IE 6 */ >- outline: 0; /* @ Firefox, prevent dotted border after click */ >-} >-.ui-tabs-nav a:link, .ui-tabs-nav a:visited { >-} >-.ui-tabs-nav .ui-tabs-selected a { >- } >-.ui-tabs-nav a span { >- padding-top: 1px; >- padding-right: 0; >- height: 20px; >- line-height: 20px; >-} >-.ui-tabs-nav .ui-tabs-selected a span { >- padding-top: 0; >- height: 20px; >- line-height: 20px; >-} >-.ui-tabs-nav .ui-tabs-selected a:link, .ui-tabs-nav .ui-tabs-selected a:visited, >-.ui-tabs-nav .ui-tabs-disabled a:link, .ui-tabs-nav .ui-tabs-disabled a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor... */ >- cursor: text; >-} >-.ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active, >-.ui-tabs-nav .ui-tabs-unselect a:hover, .ui-tabs-nav .ui-tabs-unselect a:focus, .ui-tabs-nav .ui-tabs-unselect a:active { /* @ Opera, we need to be explicit again here now... */ >- cursor: pointer; >-} >-.ui-tabs-disabled { >- opacity: .4; >- filter: alpha(opacity=40); >-} >-.ui-tabs-nav .ui-tabs-disabled a:link, .ui-tabs-nav .ui-tabs-disabled a:visited { >- color: #000; >-} >-.ui-tabs-panel { >- border: 1px solid #E8E8E8; >- padding : 1em; >- border-radius : 3px; >- #background: #fff; /* declare background color for container to avoid distorted fonts in IE while fading */ >-} >- >-/* Additional IE specific bug fixes... */ >-* html .ui-tabs-nav { /* auto clear @ IE 6 & IE 7 Quirks Mode */ >- display: inline-block; >-} >-*:first-child+html .ui-tabs-nav { /* auto clear @ IE 7 Standards Mode - do not group selectors, otherwise IE 6 will ignore complete rule (because of the unknown + combinator)... */ >- display: inline-block; >-} >diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/ui.tabs.js b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/ui.tabs.js >deleted file mode 100644 >index 672bfb2..0000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/ui.tabs.js >+++ /dev/null >@@ -1,517 +0,0 @@ >-/* >- * Tabs 3 - New Wave Tabs >- * >- * Copyright (c) 2007 Klaus Hartl (stilbuero.de) >- * Dual licensed under the MIT (MIT-LICENSE.txt) >- * and GPL (GPL-LICENSE.txt) licenses. >- * >- * http://docs.jquery.com/UI/Tabs >- */ >- >-(function($) { >- >- // if the UI scope is not availalable, add it >- $.ui = $.ui || {}; >- >- // tabs API methods >- $.fn.tabs = function() { >- var method = typeof arguments[0] == 'string' && arguments[0]; >- var args = method && Array.prototype.slice.call(arguments, 1) || arguments; >- >- return this.each(function() { >- if (method) { >- var tabs = $.data(this, 'ui-tabs'); >- tabs[method].apply(tabs, args); >- } else >- new $.ui.tabs(this, args[0] || {}); >- }); >- }; >- >- // tabs class >- $.ui.tabs = function(el, options) { >- var self = this; >- >- this.element = el; >- >- this.options = $.extend({ >- >- // basic setup >- selected: 0, >- unselect: options.selected === null, >- event: 'click', >- disabled: [], >- cookie: null, // pass options object as expected by cookie plugin: { expires: 7, path: '/', domain: 'jquery.com', secure: true } >- // TODO bookmarkable: $.ajaxHistory ? true : false, >- >- // Ajax >- spinner: 'Loading…', >- cache: false, >- idPrefix: 'ui-tabs-', >- ajaxOptions: {}, >- >- // animations >- fx: null, /* e.g. { height: 'toggle', opacity: 'toggle', duration: 200 } */ >- >- // templates >- tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>', >- panelTemplate: '<div></div>', >- >- // CSS classes >- navClass: 'ui-tabs-nav', >- selectedClass: 'ui-tabs-selected', >- unselectClass: 'ui-tabs-unselect', >- disabledClass: 'ui-tabs-disabled', >- panelClass: 'ui-tabs-panel', >- hideClass: 'ui-tabs-hide', >- loadingClass: 'ui-tabs-loading' >- >- }, options); >- >- this.options.event += '.ui-tabs'; // namespace event >- this.options.cookie = $.cookie && $.cookie.constructor == Function && this.options.cookie; >- >- $(el).bind('setData.ui-tabs', function(event, key, value) { >- self.options[key] = value; >- this.tabify(); >- }).bind('getData.ui-tabs', function(event, key) { >- return self.options[key]; >- }); >- >- // save instance for later >- $.data(el, 'ui-tabs', this); >- >- // create tabs >- this.tabify(true); >- }; >- >- // instance methods >- $.extend($.ui.tabs.prototype, { >- tabId: function(a) { >- return a.title && a.title.replace(/\s/g, '_').replace(/[^A-Za-z0-9\-_:\.]/g, '') >- || this.options.idPrefix + $.data(a); >- }, >- ui: function(tab, panel) { >- return { >- instance: this, >- options: this.options, >- tab: tab, >- panel: panel >- }; >- }, >- tabify: function(init) { >- >- this.$lis = $('li:has(a[href])', this.element); >- this.$tabs = this.$lis.map(function() { return $('a', this)[0]; }); >- this.$panels = $([]); >- >- var self = this, o = this.options; >- >- this.$tabs.each(function(i, a) { >- // inline tab >- if (a.hash && a.hash.replace('#', '')) // Safari 2 reports '#' for an empty hash >- self.$panels = self.$panels.add(a.hash); >- // remote tab >- else if ($(a).attr('href') != '#') { // prevent loading the page itself if href is just "#" >- $.data(a, 'href.ui-tabs', a.href); // required for restore on destroy >- $.data(a, 'load.ui-tabs', a.href); // mutable >- var id = self.tabId(a); >- a.href = '#' + id; >- var $panel = $('#' + id); >- if (!$panel.length) { >- $panel = $(o.panelTemplate).attr('id', id).addClass(o.panelClass) >- .insertAfter( self.$panels[i - 1] || self.element ); >- $panel.data('destroy.ui-tabs', true); >- } >- self.$panels = self.$panels.add( $panel ); >- } >- // invalid tab href >- else >- o.disabled.push(i + 1); >- }); >- >- if (init) { >- >- // attach necessary classes for styling if not present >- $(this.element).hasClass(o.navClass) || $(this.element).addClass(o.navClass); >- this.$panels.each(function() { >- var $this = $(this); >- $this.hasClass(o.panelClass) || $this.addClass(o.panelClass); >- }); >- >- // disabled tabs >- for (var i = 0, index; index = o.disabled[i]; i++) >- this.disable(index); >- >- // Try to retrieve selected tab: >- // 1. from fragment identifier in url if present >- // 2. from cookie >- // 3. from selected class attribute on <li> >- // 4. otherwise use given "selected" option >- // 5. check if tab is disabled >- this.$tabs.each(function(i, a) { >- if (location.hash) { >- if (a.hash == location.hash) { >- o.selected = i; >- // prevent page scroll to fragment >- //if (($.browser.msie || $.browser.opera) && !o.remote) { >- if ($.browser.msie || $.browser.opera) { >- var $toShow = $(location.hash), toShowId = $toShow.attr('id'); >- $toShow.attr('id', ''); >- setTimeout(function() { >- $toShow.attr('id', toShowId); // restore id >- }, 500); >- } >- scrollTo(0, 0); >- return false; // break >- } >- } else if (o.cookie) { >- var index = parseInt($.cookie('ui-tabs' + $.data(self.element)),10); >- if (index && self.$tabs[index]) { >- o.selected = index; >- return false; // break >- } >- } else if ( self.$lis.eq(i).hasClass(o.selectedClass) ) { >- o.selected = i; >- return false; // break >- } >- }); >- var n = this.$lis.length; >- while (this.$lis.eq(o.selected).hasClass(o.disabledClass) && n) { >- o.selected = ++o.selected < this.$lis.length ? o.selected : 0; >- n--; >- } >- if (!n) // all tabs disabled, set option unselect to true >- o.unselect = true; >- >- // highlight selected tab >- this.$panels.addClass(o.hideClass); >- this.$lis.removeClass(o.selectedClass); >- if (!o.unselect) { >- this.$panels.eq(o.selected).show().removeClass(o.hideClass); // use show and remove class to show in any case no matter how it has been hidden before >- this.$lis.eq(o.selected).addClass(o.selectedClass); >- } >- >- // load if remote tab >- var href = !o.unselect && $.data(this.$tabs[o.selected], 'load.ui-tabs'); >- if (href) >- this.load(o.selected, href); >- >- // disable click if event is configured to something else >- if (!(/^click/).test(o.event)) >- this.$tabs.bind('click', function(e) { e.preventDefault(); }); >- >- } >- >- var hideFx, showFx, baseFx = { 'min-width': 0, duration: 1 }, baseDuration = 'normal'; >- if (o.fx && o.fx.constructor == Array) >- hideFx = o.fx[0] || baseFx, showFx = o.fx[1] || baseFx; >- else >- hideFx = showFx = o.fx || baseFx; >- >- // reset some styles to maintain print style sheets etc. >- var resetCSS = { display: '', overflow: '', height: '' }; >- if (!$.browser.msie) // not in IE to prevent ClearType font issue >- resetCSS.opacity = ''; >- >- // Hide a tab, animation prevents browser scrolling to fragment, >- // $show is optional. >- function hideTab(clicked, $hide, $show) { >- $hide.animate(hideFx, hideFx.duration || baseDuration, function() { // >- $hide.addClass(o.hideClass).css(resetCSS); // maintain flexible height and accessibility in print etc. >- if ($.browser.msie && hideFx.opacity) >- $hide[0].style.filter = ''; >- if ($show) >- showTab(clicked, $show, $hide); >- }); >- } >- >- // Show a tab, animation prevents browser scrolling to fragment, >- // $hide is optional. >- function showTab(clicked, $show, $hide) { >- if (showFx === baseFx) >- $show.css('display', 'block'); // prevent occasionally occuring flicker in Firefox cause by gap between showing and hiding the tab panels >- $show.animate(showFx, showFx.duration || baseDuration, function() { >- $show.removeClass(o.hideClass).css(resetCSS); // maintain flexible height and accessibility in print etc. >- if ($.browser.msie && showFx.opacity) >- $show[0].style.filter = ''; >- >- // callback >- $(self.element).triggerHandler("show.ui-tabs", [self.ui(clicked, $show[0])]); >- >- }); >- } >- >- // switch a tab >- function switchTab(clicked, $li, $hide, $show) { >- /*if (o.bookmarkable && trueClick) { // add to history only if true click occured, not a triggered click >- $.ajaxHistory.update(clicked.hash); >- }*/ >- $li.addClass(o.selectedClass) >- .siblings().removeClass(o.selectedClass); >- hideTab(clicked, $hide, $show); >- } >- >- // attach tab event handler, unbind to avoid duplicates from former tabifying... >- this.$tabs.unbind(o.event).bind(o.event, function() { >- >- //var trueClick = e.clientX; // add to history only if true click occured, not a triggered click >- var $li = $(this).parents('li:eq(0)'), >- $hide = self.$panels.filter(':visible'), >- $show = $(this.hash); >- >- // If tab is already selected and not unselectable or tab disabled or click callback returns false stop here. >- // Check if click handler returns false last so that it is not executed for a disabled tab! >- if (($li.hasClass(o.selectedClass) && !o.unselect) || $li.hasClass(o.disabledClass) >- || $(self.element).triggerHandler("select.ui-tabs", [self.ui(this, $show[0])]) === false) { >- this.blur(); >- return false; >- } >- >- self.options.selected = self.$tabs.index(this); >- >- // if tab may be closed >- if (o.unselect) { >- if ($li.hasClass(o.selectedClass)) { >- self.options.selected = null; >- $li.removeClass(o.selectedClass); >- self.$panels.stop(); >- hideTab(this, $hide); >- this.blur(); >- return false; >- } else if (!$hide.length) { >- self.$panels.stop(); >- var a = this; >- self.load(self.$tabs.index(this), function() { >- $li.addClass(o.selectedClass).addClass(o.unselectClass); >- showTab(a, $show); >- }); >- this.blur(); >- return false; >- } >- } >- >- if (o.cookie) >- $.cookie('ui-tabs' + $.data(self.element), self.options.selected, o.cookie); >- >- // stop possibly running animations >- self.$panels.stop(); >- >- // show new tab >- if ($show.length) { >- >- // prevent scrollbar scrolling to 0 and than back in IE7, happens only if bookmarking/history is enabled >- /*if ($.browser.msie && o.bookmarkable) { >- var showId = this.hash.replace('#', ''); >- $show.attr('id', ''); >- setTimeout(function() { >- $show.attr('id', showId); // restore id >- }, 0); >- }*/ >- >- var a = this; >- self.load(self.$tabs.index(this), function() { >- switchTab(a, $li, $hide, $show); >- }); >- >- // Set scrollbar to saved position - need to use timeout with 0 to prevent browser scroll to target of hash >- /*var scrollX = window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || document.body.scrollLeft || 0; >- var scrollY = window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop || 0; >- setTimeout(function() { >- scrollTo(scrollX, scrollY); >- }, 0);*/ >- >- } else >- throw 'jQuery UI Tabs: Mismatching fragment identifier.'; >- >- // Prevent IE from keeping other link focussed when using the back button >- // and remove dotted border from clicked link. This is controlled in modern >- // browsers via CSS, also blur removes focus from address bar in Firefox >- // which can become a usability and annoying problem with tabsRotate. >- if ($.browser.msie) >- this.blur(); >- >- //return o.bookmarkable && !!trueClick; // convert trueClick == undefined to Boolean required in IE >- return false; >- >- }); >- >- }, >- add: function(url, label, index) { >- if (url && label) { >- index = index || this.$tabs.length; // append by default >- >- var o = this.options; >- var $li = $(o.tabTemplate.replace(/#\{href\}/, url).replace(/#\{label\}/, label)); >- $li.data('destroy.ui-tabs', true); >- >- var id = url.indexOf('#') == 0 ? url.replace('#', '') : this.tabId( $('a:first-child', $li)[0] ); >- >- // try to find an existing element before creating a new one >- var $panel = $('#' + id); >- if (!$panel.length) { >- $panel = $(o.panelTemplate).attr('id', id) >- .addClass(o.panelClass).addClass(o.hideClass); >- $panel.data('destroy.ui-tabs', true); >- } >- if (index >= this.$lis.length) { >- $li.appendTo(this.element); >- $panel.appendTo(this.element.parentNode); >- } else { >- $li.insertBefore(this.$lis[index]); >- $panel.insertBefore(this.$panels[index]); >- } >- >- this.tabify(); >- >- if (this.$tabs.length == 1) { >- $li.addClass(o.selectedClass); >- $panel.removeClass(o.hideClass); >- var href = $.data(this.$tabs[0], 'load.ui-tabs'); >- if (href) >- this.load(index, href); >- } >- >- // callback >- $(this.element).triggerHandler("add.ui-tabs", >- [this.ui(this.$tabs[index], this.$panels[index])] >- ); >- >- } else >- throw 'jQuery UI Tabs: Not enough arguments to add tab.'; >- }, >- remove: function(index) { >- if (index && index.constructor == Number) { >- var o = this.options, $li = this.$lis.eq(index).remove(), >- $panel = this.$panels.eq(index).remove(); >- >- // If selected tab was removed focus tab to the right or >- // tab to the left if last tab was removed. >- if ($li.hasClass(o.selectedClass) && this.$tabs.length > 1) >- this.click(index + (index < this.$tabs.length ? 1 : -1)); >- this.tabify(); >- >- // callback >- $(this.element).triggerHandler("remove.ui-tabs", >- [this.ui($li.find('a')[0], $panel[0])] >- ); >- >- } >- }, >- enable: function(index) { >- var self = this, o = this.options, $li = this.$lis.eq(index); >- $li.removeClass(o.disabledClass); >- if ($.browser.safari) { // fix disappearing tab (that used opacity indicating disabling) after enabling in Safari 2... >- $li.css('display', 'inline-block'); >- setTimeout(function() { >- $li.css('display', 'block'); >- }, 0); >- } >- >- o.disabled = $.map(this.$lis.filter('.' + o.disabledClass), >- function(n, i) { return self.$lis.index(n); } ); >- >- // callback >- $(this.element).triggerHandler("enable.ui-tabs", >- [this.ui(this.$tabs[index], this.$panels[index])] >- ); >- >- }, >- disable: function(index) { >- var self = this, o = this.options; >- this.$lis.eq(index).addClass(o.disabledClass); >- >- o.disabled = $.map(this.$lis.filter('.' + o.disabledClass), >- function(n, i) { return self.$lis.index(n); } ); >- >- // callback >- $(this.element).triggerHandler("disable.ui-tabs", >- [this.ui(this.$tabs[index], this.$panels[index])] >- ); >- >- }, >- select: function(index) { >- if (typeof index == 'string') >- index = this.$tabs.index( this.$tabs.filter('[href$=' + index + ']')[0] ); >- this.$tabs.eq(index).trigger(this.options.event); >- }, >- load: function(index, callback) { // callback is for internal usage only >- var self = this, o = this.options, >- $a = this.$tabs.eq(index), a = $a[0]; >- >- var url = $a.data('load.ui-tabs'); >- >- // no remote - just finish with callback >- if (!url) { >- typeof callback == 'function' && callback(); >- return; >- } >- >- // load remote from here on >- if (o.spinner) { >- var $span = $('span', a), label = $span.html(); >- $span.html('<em>' + o.spinner + '</em>'); >- } >- var finish = function() { >- self.$tabs.filter('.' + o.loadingClass).each(function() { >- $(this).removeClass(o.loadingClass); >- if (o.spinner) >- $('span', this).html(label); >- }); >- self.xhr = null; >- }; >- var ajaxOptions = $.extend({}, o.ajaxOptions, { >- url: url, >- success: function(r, s) { >- $(a.hash).html(r); >- finish(); >- // This callback is required because the switch has to take >- // place after loading has completed. >- typeof callback == 'function' && callback(); >- >- if (o.cache) >- $.removeData(a, 'load.ui-tabs'); // if loaded once do not load them again >- >- // callback >- $(self.element).triggerHandler("load.ui-tabs", >- [self.ui(self.$tabs[index], self.$panels[index])] >- ); >- >- o.ajaxOptions.success && o.ajaxOptions.success(r, s); >- } >- }); >- if (this.xhr) { >- // terminate pending requests from other tabs and restore tab label >- this.xhr.abort(); >- finish(); >- } >- $a.addClass(o.loadingClass); >- setTimeout(function() { // timeout is again required in IE, "wait" for id being restored >- self.xhr = $.ajax(ajaxOptions); >- }, 0); >- >- }, >- url: function(index, url) { >- this.$tabs.eq(index).data('load.ui-tabs', url); >- }, >- destroy: function() { >- var o = this.options; >- $(this.element).unbind('.ui-tabs') >- .removeClass(o.navClass).removeData('ui-tabs'); >- this.$tabs.each(function() { >- var href = $.data(this, 'href.ui-tabs'); >- if (href) >- this.href = href; >- $(this).unbind('.ui-tabs') >- .removeData('href.ui-tabs').removeData('load.ui-tabs'); >- }); >- this.$lis.add(this.$panels).each(function() { >- if ($.data(this, 'destroy.ui-tabs')) >- $(this).remove(); >- else >- $(this).removeClass([o.selectedClass, o.unselectClass, >- o.disabledClass, o.panelClass, o.hideClass].join(' ')); >- }); >- } >- }); >- >-})(jQuery); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/histsearch.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/histsearch.tt >index aecd539..b6875be 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/histsearch.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/histsearch.tt >@@ -3,6 +3,7 @@ > <title>Koha › Acquisitions › [% IF ( suggestions_loop ) %]Orders search › Search results[% ELSE %]Order search[% END %]</title> > <link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" /> > [% INCLUDE 'doc-head-close.inc' %] >+[% INCLUDE 'calendar.inc' %] > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script> > [% INCLUDE 'datatables-strings.inc' %] > <script type="text/javascript" src="[% themelang %]/js/datatables.js"></script> >@@ -15,7 +16,6 @@ > }); > //]]> > </script> >-[% INCLUDE 'calendar.inc' %] > </head> > <body id="acq_histsearch" class="acq"> > [% INCLUDE 'header.inc' %] >@@ -35,7 +35,7 @@ > <ol> > <li><label for="title">Title: </label> <input type="text" name="title" id="title" value="[% title %]" /></li> > <li><label for="author">Author: </label> <input type="text" name="author" id="author" value="[% author %]" /></li> >- <li><label for="isbn">ISBN: </label> <input type="isbn" name="isbn" id="isbn" value="[% isbn %]" /></li> >+ <li><label for="isbn">ISBN: </label> <input type="text" name="isbn" id="isbn" value="[% isbn %]" /></li> > [% IF (UNIMARC) %] > <li><label for="ean">EAN: </label> <input type="text" name="ean" id="ean" value="[% ean %]" /></li> > [% END %] >@@ -43,32 +43,11 @@ > <li><label for="basket">Basket: </label> <input type="text" name="basket" id="basket" value="[% basket %]" /></li> > <li><label for="booksellerinvoicenumber ">Bookseller invoice no: </label> <input type="text" name="booksellerinvoicenumber" id="booksellerinvoicenumber" value="[% booksellerinvoicenumber %]" /></li> > <li><label for="from">From: </label> >- <input type="text" size="10" id="from" name="from" value="[% from_placed_on %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="openCalendarFrom" style="cursor: pointer;" alt="Show Calendar" /> >+ <input type="text" size="10" id="from" name="from" value="[% from_placed_on %]" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li><label for="to">To: </label> >- <input type="text" size="10" id="to" name="to" value="[% to_placed_on %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="openCalendarTo" style="cursor: pointer;" alt="Show Calendar" /> >- <script type="text/javascript"> >- // return true if the date is blocked. >- function disable_from(date) {var limit = get_Calendar_limit(date,'to' ); return (limit && limit < date);} // true or false >- function disable_to (date) {var limit = get_Calendar_limit(date,'from'); return (limit && limit > date);} // true or false >- Calendar.setup({ >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : disable_from, >- dateStatusFunc : disable_from >- }); >- Calendar.setup({ >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : disable_to, >- dateStatusFunc : disable_to >- }); >- </script> >+ <input type="text" size="10" id="to" name="to" value="[% to_placed_on %]" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > </ol> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/lateorders.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/lateorders.tt >index cf54b03..65c51a5 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/lateorders.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/lateorders.tt >@@ -2,8 +2,8 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Acquisitions › Late orders</title> > [% INCLUDE 'doc-head-close.inc' %] >-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script> > [% INCLUDE 'calendar.inc' %] >+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script> > <script type="text/javascript"> > //<![CDATA[ > $(document).ready(function() { >@@ -150,33 +150,12 @@ $(document).ready(function() { > [% END %] > <ol> > <li><label for="delay">Order date:</label><input size="3" maxlength="3" id="delay" type="text" name="delay" value="[% delay %]" /> days ago</li> >- <li><label for="delay">Estimated Delivery date from: </label> >- <input type="text" size="10" id="estimateddeliverydatefrom" name="estimateddeliverydatefrom" value="[% estimateddeliverydatefrom %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="openCalendarFrom" style="cursor: pointer;" alt="Show Calendar" /> >+ <li><label for="from">Estimated delivery date from: </label> >+ <input type="text" size="10" id="from" name="estimateddeliverydatefrom" value="[% estimateddeliverydatefrom %]" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> >- <li><label for="delay">To: </label> >- <input type="text" size="10" id="estimateddeliverydateto" name="estimateddeliverydateto" value="[% estimateddeliverydateto %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="openCalendarTo" style="cursor: pointer;" alt="Show Calendar" /> >- <script type="text/javascript"> >- // return true if the date is blocked. >- function disable_from(date) {var limit = get_Calendar_limit(date,'estimateddeliverydatefrom'); return (limit && limit < date);} >- function disable_to(date) {var limit = get_Calendar_limit(date,'estimateddeliverydateto'); return (limit && limit < date);} >- Calendar.setup({ >- inputField : "estimateddeliverydatefrom", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : disable_from, >- dateStatusFunc : disable_from >- }); >- Calendar.setup({ >- inputField : "estimateddeliverydateto", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : disable_to, >- dateStatusFunc : disable_to >- }); >- </script> >+ <li><label for="to">To: </label> >+ <input type="text" size="10" id="to" name="estimateddeliverydateto" value="[% estimateddeliverydateto %]" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt >index 740d0bb..f14c502 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt >@@ -102,16 +102,7 @@ > <input type="text" size="20" id="freight" name="freight" /> > </li> --> > <li><label for="datereceived">Shipment date: </label> >- <input type="text" id="datereceived" name="datereceived" maxlength="10" size="10" value="[% datereceived_today %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="datereceived_button" alt="Show Calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "datereceived", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "datereceived_button" } >- ); >- </script> >+ <input type="text" id="datereceived" name="datereceived" maxlength="10" size="10" value="[% datereceived_today %]" class="datepicker" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> </li> > </ol> > </fieldset> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt >index 4b25992..deb5442 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt >@@ -1,7 +1,6 @@ > [% INCLUDE 'doc-head-open.inc' %] > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >- > <script type="text/javascript" src="[% themelang %]/js/acq.js"></script> > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script> > <script type="text/javascript"> >@@ -164,34 +163,14 @@ > <ol> > > <li> >- <label class="required" for="budget_period_startdate">Start date</label> >- <input type="text" size="10" id="budget_period_startdate" name="budget_period_startdate" value="[% budget_period_startdate %]" /> >- <img src="/intranet-tmpl/prog/en/lib/calendar/cal.gif" border="0" id="openCalendarFrom" style="cursor: pointer;" alt="Show start date calendar" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "budget_period_startdate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- align : "Tl", >- singleClick : false >- }); >- </script> >+ <label class="required" for="from">Start date</label> >+ <input type="text" size="10" id="from" name="budget_period_startdate" value="[% budget_period_startdate %]" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li> > >- <label class="required" for="budget_period_enddate">End date</label> >- <input type="text" size="10" id="budget_period_enddate" name="budget_period_enddate" value="[% budget_period_enddate %]" /> >- <img src="/intranet-tmpl/prog/en/lib/calendar/cal.gif" border="0" id="openCalendarTo" style="cursor: pointer;" alt="Show end date calendar" /> >- >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "budget_period_enddate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- align : "Tl" >- }); >- </script> >+ <label class="required" for="to">End date</label> >+ <input type="text" size="10" id="to" name="budget_period_enddate" value="[% budget_period_enddate %]" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > >@@ -223,34 +202,14 @@ > <input type="hidden" name="budget_period_id" value="[% budget_period_id %]" /> > <ol> > <li> >- <label class="required" for="budget_period_startdate">Start date</label> >- <input type="text" size="10" id="budget_period_startdate" name="budget_period_startdate" value="[% budget_period_startdate %]" /> >- <img src="/intranet-tmpl/prog/en/lib/calendar/cal.gif" border="0" id="openCalendarFrom" style="cursor: pointer;" alt="Show start date calendar" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "budget_period_startdate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- align : "Tl", >- singleClick : false >- }); >- </script> >+ <label class="required" for="from">Start date</label> >+ <input type="text" size="10" id="from" name="budget_period_startdate" value="[% budget_period_startdate %]" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li> > >- <label class="required" for="budget_period_enddate">End date</label> >- <input type="text" size="10" id="budget_period_enddate" name="budget_period_enddate" value="[% budget_period_enddate %]" /> >- <img src="/intranet-tmpl/prog/en/lib/calendar/cal.gif" border="0" id="openCalendarTo" style="cursor: pointer;" alt="Show end date calendar" /> >- >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "budget_period_enddate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- align : "Tl" >- }); >- </script> >+ <label class="required" for="to">End date</label> >+ <input type="text" size="10" id="to" name="budget_period_enddate" value="[% budget_period_enddate %]" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqcontract.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqcontract.tt >index 20f06cb..7103971 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqcontract.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqcontract.tt >@@ -110,32 +110,12 @@ function Check(ff) { > <li><label for="contractdescription">Description</label> > <input type="text" name="contractdescription" id="contractdescription" size="40" maxlength="80" value="[% contractdescription %]" /> > </li> >- <li><label for="contractstartdate" class="required">Start date *</label> >- <input type="text" name="contractstartdate" id="contractstartdate" value="[% contractstartdate %]" maxlength="10" size="10"/> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="contractstartdate_button" alt="Show Calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "contractstartdate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "contractstartdate_button" >- } >- ); >- </script> >+ <li><label for="from" class="required">Start date *</label> >+ <input type="text" name="contractstartdate" id="from" value="[% contractstartdate %]" maxlength="10" size="10" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> >- <li><label for="contractenddate" class="required">End date *</label> >- <input type="text" name="contractenddate" id="contractenddate" value="[% contractenddate %]" maxlength="10" size="10" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="contractenddate_button" alt="Show Calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "contractenddate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "contractenddate_button" >- } >- ); >- </script> >+ <li><label for="to" class="required">End date *</label> >+ <input type="text" name="contractenddate" id="to" value="[% contractenddate %]" maxlength="10" size="10" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > </ol> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqplan.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqplan.tt >index d16acfa..59e9121 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqplan.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqplan.tt >@@ -1,7 +1,6 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Administration › Budgets › Funds › Planning for [% budget_period_description %] by [% authcat %]</title> > [% INCLUDE 'doc-head-close.inc' %] >-[% INCLUDE 'calendar.inc' %] > <script type="text/javascript" src="[% themelang %]/js/acq.js"></script> > <script type="text/javascript"> > //<![CDATA[ >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >index e2425af..e0be34b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >@@ -4,6 +4,7 @@ > [% IF ( delete_confirm ) %][% IF ( totalgtzero ) %]Cannot delete: category [% categorycode |html %] in use[% ELSE %]Confirm deletion of category '[% categorycode |html %]'[% END %][% END %] > [% IF ( delete_confirmed ) %]Category deleted[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] >+[% INCLUDE 'calendar.inc' %] > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script> > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.pager.js"></script> > <script type="text/javascript" id="js">$(document).ready(function() { >@@ -12,8 +13,8 @@ > widgets: ['zebra'], > headers: { 11: { sorter: false}} > }).tablesorterPager({container: $("#pagertable_categorie"),positionFixed: false,size: 20}); >+ $( "#enrolmentperioddate" ).datepicker({ minDate: 1 }); // Require that "until date" be in the future > }); </script> >-[% INCLUDE 'calendar.inc' %] > <script type="text/javascript"> > //<![CDATA[ > // >@@ -133,16 +134,7 @@ > <li><label for="enrolmentperiod" style="width:6em;">In months: </label> > <input type="text" name="enrolmentperiod" id="enrolmentperiod" size="3" maxlength="3" value="[% IF ( enrolmentperiod ) %][% enrolmentperiod %][% END %]" /> months</li> > <li><label for="enrolmentperioddate" style="width:6em;">Until date: </label> >- <input type="text" name="enrolmentperioddate" id="enrolmentperioddate" value="[% enrolmentperioddate %]" /> <img src="[% themelang %]/lib/calendar/cal.gif" id="enrolmentperioddate_button" alt="Show Calendar" /> >- <script type="text/javascript"> >- //<![CDATA[ >- Calendar.setup({ >- inputField : "enrolmentperioddate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "enrolmentperioddate_button" >- }); >- //]]> >- </script> >+ <input type="text" name="enrolmentperioddate" id="enrolmentperioddate" value="[% enrolmentperioddate %]" /> > <div id="enrolmentmessage" class="hint" style="margin-left:0;">Cannot have "months" and "until date" at the same time</div> > </li> > </ol> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt >index 635051f..49e4ef2 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt >@@ -1,7 +1,7 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Administration › Circulation and fine rules</title> > [% INCLUDE 'doc-head-close.inc' %] >- >+[% INCLUDE 'calendar.inc' %] > <script type="text/javascript"> > //<![CDATA[ > $(document).ready(function() { >@@ -12,12 +12,6 @@ $(document).ready(function() { > }); > //]]> > </script> >-<!-- Enable Calendar system --> >-<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/calendar/calendar-system.css" /> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-en.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-setup.js"></script> >-<!-- End Calendar system additions --> > </head> > <body id="admin_smart-rules" class="admin"> > [% INCLUDE 'header.inc' %] >@@ -161,23 +155,8 @@ for="tobranch"><strong>Clone these rules to:</strong></label> <input type="hidde > <option value="0">Exactly on</option> > <option value="1">After</option> > </select> >- <input type="text" size="10" id="hardduedate" name="hardduedate" value="[% hardduedate %]" /> >- [% INCLUDE 'date-format.inc' %] >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="CalendarDueDate" style="cursor: pointer;"/> >- <script language="JavaScript" type="text/javascript"> >- function refocus(calendar) { >- document.getElementById('hardduedate').focus(); >- calendar.hide(); >- }; >- Calendar.setup( >- { >- inputField : "hardduedate", >- ifFormat : "%m/%d/%Y", >- button : "CalendarDueDate", >- onClose: refocus >- } >- ); >- </script> >+ <input type="text" size="10" id="hardduedate" name="hardduedate" value="[% hardduedate %]" class="datepicker" /> >+ <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </td> > <td><input name="fine" size="4" /></td> > <td><input name="chargeperiod" size="2" /></td> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >index 11ee5f9..1001734 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >@@ -2,6 +2,7 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Circulation [% IF ( borrowernumber ) %] › Checking out to [% INCLUDE 'patron-title.inc' %] [% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] >+[% INCLUDE 'calendar.inc' %] > [% IF ( UseTablesortForCirc ) %]<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>[% END %] > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script> > <script type="text/javascript"> >@@ -140,6 +141,11 @@ var allcheckboxes = $(".checkboxed"); > $("input.radio").click(function(){ > radioCheckBox($(this)); > }); >+ $("#newduedate").datepicker({ minDate: 1 }); // require that renewal date is after today >+ $("#duedatespec").datepicker({ >+ onSelect: function(dateText, inst) { $("#barcode").focus(); } >+ }); >+ > }); > > function validate1(date) { >@@ -150,13 +156,8 @@ function validate1(date) { > return false; > } > }; >-function refocus(calendar) { >- document.getElementById('barcode').focus(); >- calendar.hide(); >-}; > //]]> > </script> >-[% INCLUDE 'calendar.inc' %] > </head> > <body id="circ_circulation" class="circ"> > >@@ -488,35 +489,6 @@ No patron matched <span class="ex">[% message %]</span> > <div class="hint">Specify due date [% INCLUDE 'date-format.inc' %]: </div> > [% IF ( duedatespec ) %]<input type="text" size="10" id="duedatespec" name="duedatespec" value="[% duedatespec %]" />[% ELSE %]<input type="text" size="10" id="duedatespec" name="duedatespec" value="" /> > [% END %] >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="CalendarDueDate" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var today = new Date(); >- if ( date < today ) { >- return true; >- } else { >- return false; >- } >- }; >- function refocus(calendar) { >- $('#barcode').focus(); >- calendar.hide(); >- }; >- //#TODO - ADD syspref (AllowPostDatedCheckouts). >- Calendar.setup( >- { >- inputField : "duedatespec", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "CalendarDueDate", >-// disableFunc : validate1, >-// dateStatusFunc : validate1, >- onClose : refocus >- } >- ); >- //]]> >- </script> >- > <label for="stickyduedate"> Remember for session:</label> > [% IF ( stickyduedate ) %] > <input type="checkbox" id="stickyduedate" onclick="this.form.barcode.focus();" name="stickyduedate" checked="checked" /> >@@ -1003,37 +975,8 @@ No patron matched <span class="ex">[% message %]</span> > > [% IF AutoResumeSuspendedHolds %] > <label for="suspend_until">until</label> >- <input type="text" size="10" id="suspend_until" name="suspend_until"/> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="CalendarSuspendUntil" style="cursor: pointer;" /> >+ <input type="text" size="10" id="suspend_until" name="suspend_until" class="datepicker" /> > <span class="hint">Specify date on which to resume [% INCLUDE 'date-format.inc' %]: </span> >- >- <script language="JavaScript" type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var today = new Date(); >- if ( date < today ) { >- return true; >- } else { >- return false; >- } >- }; >- function refocus(calendar) { >- $('#barcode').focus(); >- calendar.hide(); >- }; >- //#TODO - ADD syspref (AllowPostDatedCheckouts). >- Calendar.setup( >- { >- inputField : "suspend_until", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "CalendarSuspendUntil", >-// disableFunc : validate1, >-// dateStatusFunc : validate1, >- onClose : refocus >- } >- ); >- //]]> >- </script> > [% END %] > </form> > </fieldset> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt >index 46e2ffd..f45dbea 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt >@@ -1,6 +1,7 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Circulation › Items overdue as of [% todaysdate %]</title> > [% INCLUDE 'doc-head-close.inc' %] >+[% INCLUDE 'calendar.inc' %] > <script type="text/javascript"> > //<![CDATA[ > function clone_parent(node) { >@@ -55,13 +56,12 @@ > .css("font-size","90%").css("width","13em"); > }; > }); >- } >+ } > //]]> > </script> > <style type="text/css"> > .sql {display:none;} > </style> >-[% INCLUDE 'calendar.inc' %] > </head> > <body id="circ_overdue" class="circ"> > [% INCLUDE 'header.inc' %] >@@ -131,32 +131,12 @@ overdue as of [% todaysdate %][% IF ( isfiltered ) %] <span style="font-size:70% > <h4>Filter on:</h4> > <fieldset><legend>Date due:</legend> > <ol> >- <li><label for="dateduefrom">From:</label> >- <input type="text" id="dateduefrom" name="dateduefrom" size="10" value="[% dateduefrom %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="dateduefrom_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "dateduefrom", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "dateduefrom_button" >- } >- ); >- </script> >+ <li><label for="from">From:</label> >+ <input type="text" id="from" name="dateduefrom" size="10" value="[% dateduefrom %]" class="datepickerfrom" /> > </li> > <li> >- <label for="datedueto">To:</label> >- <input type="text" id="datedueto" name="datedueto" size="10" value="[% datedueto %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="datedueto_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "datedueto", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "datedueto_button" >- } >- ); >- </script> >+ <label for="to">To:</label> >+ <input type="text" id="to" name="datedueto" size="10" value="[% datedueto %]" class="datepickerto" /> > </li> > </ol></fieldset> > <ol> >@@ -224,7 +204,7 @@ overdue as of [% todaysdate %][% IF ( isfiltered ) %] <span style="font-size:70% > </select> > </li> > >- <li><label for="order">Sort By:</label> <select name="order" id="order"> >+ <li><label for="order">Sort by:</label> <select name="order" id="order"> > [% FOREACH ORDER_LOO IN ORDER_LOOP %] > [% IF ( ORDER_LOO.selected ) %] > <option value="[% ORDER_LOO.ordervalue %]" selected="selected"> >@@ -259,7 +239,7 @@ overdue as of [% todaysdate %][% IF ( isfiltered ) %] <span style="font-size:70% > </li> > </ol> > <fieldset class="action"> >- <input type="submit" value="Apply Filter" class="submit" /> >+ <input type="submit" value="Apply filter" class="submit" /> > <input type="hidden" name="op" value="apply filter" /> > </fieldset> > </fieldset> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt >index c79a231..458316c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt >@@ -1,12 +1,7 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Circulation › Holds to pull</title> > [% INCLUDE 'doc-head-close.inc' %] >-<!-- Additions to enable Calendar system --> >-<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/calendar/calendar-system.css" /> >-<!-- End of additions --><!-- Additions to enable Calendar system --> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-en.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-setup.js"></script> >+[% INCLUDE 'calendar.inc' %] > <!-- Plugin datatables --> > <link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" /> > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script> >@@ -150,66 +145,13 @@ $(document).ready(function() { > <label for="from"> > Start date: > </label> >-<input type="text" size="10" id="from" name="from" value="[% from %]" /> >-<img src="[% themelang %]/lib/calendar/cal.gif" border="0" id="openCalendarFrom" style="cursor: pointer;" alt="" /> >-<script language="JavaScript" type="text/javascript"> >-function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('to').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >-} >-Calendar.setup( >- { >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >-); >-</script></li> >+<input type="text" size="10" id="from" name="from" value="[% from %]" class="datepickerfrom" /> >+</li> > <li><label for="to"> > End date: > </label> >-<input size="10" id="to" name="to" value="[% to %]" type="text" /> >-<img src="[% themelang %]/lib/calendar/cal.gif" alt="" id="openCalendarTo" style="cursor: pointer;" border="0" /> >-<script type="text/javascript"> >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('from').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >-</script></li> >+<input type="text" size="10" id="to" name="to" value="[% to %]" class="datepickerto" /> >+</li> > </ol> > <p><i>(Inclusive, default is two days ago to today, set other date ranges as needed. )</i></p> > <fieldset class="action"><input type="submit" name="run_report" value="Submit" class="submit"/></fieldset> >@@ -219,4 +161,4 @@ Calendar.setup( > </div> > </div> > </div> >-[% INCLUDE 'intranet-bottom.inc' %] >+[% INCLUDE 'intranet-bottom.inc' %] >\ No newline at end of file >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tt >index ddecef5..33deaa9 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tt >@@ -1,13 +1,7 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Circulation › Hold ratios</title> > [% INCLUDE 'doc-head-close.inc' %] >-<!-- Additions to enable Calendar system --> >-<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/calendar/calendar-system.css" /> >-<!-- End of additions --><!-- Additions to enable Calendar system --> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-en.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-setup.js"></script> >-<!-- End of additions --> >+[% INCLUDE 'calendar.inc' %] > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script> > <script type="text/javascript"> > //<![CDATA[ >@@ -30,7 +24,7 @@ $.tablesorter.addParser({ > $("#holdst:has(tbody tr)").tablesorter({ // only add sort if the table has a body and rows > sortList: [[0,1]], > headers: { 1: { sorter: 'articles' }} >- }); >+ }); > }); > //]]> > </script> >@@ -117,66 +111,13 @@ $.tablesorter.addParser({ > <li><label for="from"> > Start date: > </label> >-<input type="text" size="10" id="from" name="from" value="[% from %]" /> >-<img src="[% themelang %]/lib/calendar/cal.gif" border="0" id="openCalendarFrom" style="cursor: pointer;" alt="" /> >-<script language="JavaScript" type="text/javascript"> >-function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('to').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >-} >-Calendar.setup( >- { >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >-); >-</script></li> >-<li><label for="to" > >+<input type="text" size="10" id="from" name="from" value="[% from %]" class="datepickerfrom" /> >+</li> >+<li><label for="to"> > End date: > </label> >-<input size="10" id="to" name="to" value="[% to %]" type="text" /> >-<img src="[% themelang %]/lib/calendar/cal.gif" alt="" id="openCalendarTo" style="cursor: pointer;" border="0" /> >-<script type="text/javascript"> >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('from').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >-</script></li></ol> >+<input size="10" id="to" name="to" value="[% to %]" type="text" class="datepickerto" /> >+</li></ol> > (inclusive) > > <fieldset class="action"><input type="submit" value="Go" class="submit"/></fieldset> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/search.tt >index 3928edb..04170ac 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/search.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/search.tt >@@ -90,33 +90,13 @@ to add to Batch [% batch_id %] > <fieldset class="rows"> > <ol> > <li> >- <label for="datefrom">Added on or after date</label> >- <input type="text" size="10" id="datefrom" name="datefrom" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" border="0" id="openCalendarFrom" alt="Show Calendar" /> >-<script type="text/javascript"> >- Calendar.setup({ >- inputField : "datefrom", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- align : "Tl", >- singleClick : false >- }); >-</script> >+ <label for="from">Added on or after date</label> >+ <input type="text" size="10" id="from" name="datefrom" class="datepickerfrom" value="" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li> >- <label for="dateto">Added on or before date</label> >- <input type="text" size="10" id="dateto" name="dateto" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" border="0" id="openCalendarTo" alt="Show Calendar" /> >- >-<script type="text/javascript"> >- Calendar.setup({ >- inputField : "dateto", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- align : "Tl" >- }); >-</script> >+ <label for="to">Added on or before date</label> >+ <input type="text" size="10" id="to" name="dateto" class="datepickerto" value="" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li></ol> > </fieldset> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt >index 41ce66d..1f28b04 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt >@@ -32,7 +32,7 @@ > update_category_code( category_code ); > } > [% END %] >- >+ $("#dateofbirth").datepicker({ maxDate: "-1D" }); > }); > > function clear_entry(node) { >@@ -295,16 +295,6 @@ > <input type="text" id="dateofbirth" name="dateofbirth" size="20" value="[% IF ( opduplicate ) %][% ELSE %][% dateofbirth %][% END %]" /> > [% END %] > >- <img src="[% themelang %]/lib/calendar/cal.gif" id="dateofbirth_button" alt="Show Calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "dateofbirth", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "dateofbirth_button" >- } >- ); >- </script> > [% IF ( mandatorydateofbirth ) %]<span class="required">Required</span>[% END %] > [% IF ( ERROR_dateofbirth ) %]<span class="required">(Error)</span>[% END %] > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> >@@ -1096,26 +1086,16 @@ > [% UNLESS nodateenrolled %] > <li> > [% IF ( mandatorydateenrolled ) %] >- <label for="dateenrolled" class="required"> >+ <label for="from" class="required"> > [% ELSE %] >- <label for="dateenrolled"> >+ <label for="from"> > [% END %] > Registration date: </label> > [% IF ( metric ) %] >- <input type="text" id="dateenrolled" name="dateenrolled" maxlength="10" size="10" onchange="CheckDate(document.form.dateenrolled);check_manip_date('verify');" value="[% dateenrolled %]" /> >+ <input type="text" id="from" name="dateenrolled" maxlength="10" size="10" onchange="CheckDate(document.form.dateenrolled);check_manip_date('verify');" value="[% dateenrolled %]" class="datepickerfrom" /> > [% ELSE %] >- <input type="text" id="dateenrolled" name="dateenrolled" maxlength="10" size="10" value="[% dateenrolled %]" /> >+ <input type="text" id="from" name="dateenrolled" maxlength="10" size="10" value="[% dateenrolled %]" class="datepickerfrom" /> > [% END %] >- <img src="[% themelang %]/lib/calendar/cal.gif" id="dateenrolled_button" alt="Show Calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "dateenrolled", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "dateenrolled_button" >- } >- ); >- </script> > [% IF ( mandatorydateenrolled ) %]<span class="required">Required</span>[% END %] > [% IF ( ERROR_dateenrolled ) %]<span class="required">(Error)</span>[% END %] > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> >@@ -1124,34 +1104,24 @@ > [% UNLESS nodateexpiry %] > <li> > [% IF ( mandatorydateexpiry ) %] >- <label for="dateexpiry" class="required"> >+ <label for="to" class="required"> > [% ELSE %] >- <label for="dateexpiry"> >+ <label for="to"> > [% END %] > Expiry date (leave blank for auto calc) </label> > [% IF ( metric ) %] > [% UNLESS ( opadd ) %] >- <input type="text" id="dateexpiry" name="dateexpiry" maxlength="10" size="10" onchange="CheckDate(document.form.dateexpiry);check_manip_date('verify');" value="[% dateexpiry %]" /> >+ <input type="text" id="to" name="dateexpiry" maxlength="10" size="10" onchange="CheckDate(document.form.dateexpiry);check_manip_date('verify');" value="[% dateexpiry %]" class="datepickerto" /> > [% ELSE %] >- <input type="text" id="dateexpiry" name="dateexpiry" maxlength="10" size="10" onchange="CheckDate(document.form.dateexpiry);check_manip_date('verify');" /> >+ <input type="text" id="to" name="dateexpiry" maxlength="10" size="10" onchange="CheckDate(document.form.dateexpiry);check_manip_date('verify');" class="datepickerto" /> > [% END %] > [% ELSE %] > [% UNLESS ( opadd ) %] >- <input type="text" id="dateexpiry" name="dateexpiry" maxlength="10" size="10" value="[% dateexpiry %]" /> >+ <input type="text" id="to" name="dateexpiry" maxlength="10" size="10" value="[% dateexpiry %]" class="datepickerto" /> > [% ELSE %] >- <input type="text" id="dateexpiry" name="dateexpiry" maxlength="10" size="10" /> >+ <input type="text" id="to" name="dateexpiry" maxlength="10" size="10" class="datepickerto" /> > [% END %] > [% END %] >- <img src="[% themelang %]/lib/calendar/cal.gif" id="dateexpiry_button" alt="Show Calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "dateexpiry", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "dateexpiry_button" >- } >- ); >- </script> > [% IF ( mandatorydateexpiry ) %]<span class="required">Required</span>[% END %] > [% IF ( ERROR_dateexpiry ) %]<span class="required">(Error)</span>[% END %] > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> >@@ -1347,20 +1317,11 @@ > > <span id="debarreduntil"><label for="datedebarred" class="inline">Until:</label> > [% IF opduplicate %] >- <input type="text" name="datedebarred" id="datedebarred" class="debarred" value="[% datedebarred %]" onclick="this.value=''" /> >+ <input type="text" name="datedebarred" id="datedebarred" class="debarred datepicker" value="[% datedebarred %]" onclick="this.value=''" /> > [% ELSE %] >- <input type="text" name="datedebarred" id="datedebarred" class="debarred" value="[% datedebarred %]" /> >+ <input type="text" name="datedebarred" id="datedebarred" class="debarred datepicker" value="[% datedebarred %]" /> > [% END %] >- <img src="[% themelang %]/lib/calendar/cal.gif" id="debarred_button" alt="Show Calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "datedebarred", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "debarred_button" >- } >- ); >- </script> <span class="hint">(optional)</span> </span> >+ <span class="hint">(optional)</span> </span> > </li> > <li> > <label for="debarredcomment" class="radio">Comment:</label> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >index 351e162..b6df1b3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >@@ -83,6 +83,8 @@ $(document).ready(function() { > }); > } > }); >+ $("#suspend_until").datepicker({ minDate: 1 }); // require that hold suspended until date is after today >+ $("#newduedate").datepicker({ minDate: 1 }); // require that renewal date is after today > }); > function uncheck_sibling(me){ > nodename=me.getAttribute("name"); >@@ -656,36 +658,7 @@ function validate1(date) { > [% IF AutoResumeSuspendedHolds %] > <label for="suspend_until">until</label> > <input type="text" size="10" id="suspend_until" name="suspend_until"/> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="CalendarSuspendUntil" style="cursor: pointer;" /> > <span class="hint">Specify date on which to resume [% INCLUDE 'date-format.inc' %]: </span> >- >- <script language="JavaScript" type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var today = new Date(); >- if ( date < today ) { >- return true; >- } else { >- return false; >- } >- }; >- function refocus(calendar) { >- $('#barcode').focus(); >- calendar.hide(); >- }; >- //#TODO - ADD syspref (AllowPostDatedCheckouts). >- Calendar.setup( >- { >- inputField : "suspend_until", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "CalendarSuspendUntil", >-// disableFunc : validate1, >-// dateStatusFunc : validate1, >- onClose : refocus >- } >- ); >- //]]> >- </script> > [% END %] > </form> > </fieldset> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/acquisitions_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/acquisitions_stats.tt >index 79d289a..802a82e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/acquisitions_stats.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/acquisitions_stats.tt >@@ -2,6 +2,39 @@ > <title>Koha › Reports [% IF ( do_it ) %]› Acquisitions statistics › Results[% ELSE %]› Acquisitions statistics[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >+<script type="text/javascript"> >+//<![CDATA[ >+ $(document).ready(function() { >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( "#from, #to" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesRO = $( "#fromRO, #toRO" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "fromRO" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesRO.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ }); >+//]]> >+</script> > </head> > <body id="rep_acquisitions_stats" class="rep"> > [% INCLUDE 'header.inc' %] >@@ -79,68 +112,8 @@ > <td><input type="radio" name="Line" value="aqbasket.closedate" /></td> > <td><input type="radio" checked="checked" name="Column" value="aqbasket.closedate" /> </td> > <td> From <input type="text" size="10" id="from" name="Filter" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="openCalendarFrom" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('to').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- //]]> >- </script> > <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > To <input size="10" id="to" name="Filter" type="text" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openCalendarTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('from').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >- //]]> >- </script> > <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > </td> > </tr> >@@ -161,68 +134,8 @@ > <td><input type="radio" name="Line" value="aqorders.datereceived" /></td> > <td><input type="radio" name="Column" value="aqorders.datereceived" /></td> > <td> From <input type="text" size="10" id="fromRO" name="Filter" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openCalendarFromRO" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('toRO').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "fromRO", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFromRO", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- //]]> >- </script> > <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > To <input type="text" size="10" id="toRO" name="Filter" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openCalendarToRO" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('fromRO').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "toRO", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarToRO", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >- //]]> >- </script> > <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > </td> > </tr> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/bor_issues_top.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/bor_issues_top.tt >index ab4cd65..a42b834 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/bor_issues_top.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/bor_issues_top.tt >@@ -2,6 +2,39 @@ > <title>Koha › Reports › Patrons with the most checkouts</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >+<script type="text/javascript"> >+//<![CDATA[ >+ $(document).ready(function() { >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( "#from, #to" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesRO = $( "#fromRO, #toRO" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "fromRO" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesRO.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ }); >+//]]> >+</script> > </head> > <body id="rep_bor_issues_top" class="rep"> > [% INCLUDE 'header.inc' %] >@@ -68,121 +101,11 @@ function Dopop(link) { > <form method="post" action="/cgi-bin/koha/reports/bor_issues_top.pl"> > <fieldset class="rows"> > <ol><li><label for="from">Checkout date from:</label> <input type="text" readonly="readonly" size="10" id="from" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openCalendarFrom" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('to').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- </script> > <label class="inline" for="to">To: </label> <input readonly="readonly" size="10" id="to" name="Filter" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openCalendarTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('from').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >- </script><span class="hint">[% INCLUDE 'date-format.inc' %]</span></li> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span></li> > <li> <label for="fromRO">Check-in date from:</label> <input type="text" readonly="readonly" size="10" id="fromRO" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" border="0" id="openCalendarFromRO" style="cursor: pointer;" alt="Show Calendar" /> >- <script language="JavaScript" type="text/javascript"> >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('toRO').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "fromRO", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFromRO", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- </script> > <label class="inline" for="toRO">To: </label> <input type="text" readonly="readonly" size="10" id="toRO" name="Filter" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="openCalendarToRO" style="cursor: pointer;" alt="Show Calendar" border="0" /> >- <script type="text/javascript"> >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('fromRO').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "toRO", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarToRO", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >- </script><span class="hint">[% INCLUDE 'date-format.inc' %]</span></li> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span></li> > <li> > <label for="branch">Library: </label> > <select name="Filter" id="branch"><option value="" > Any library</option> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_out.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_out.tt >index 682e6e5..ec92c8c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_out.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_out.tt >@@ -2,6 +2,13 @@ > <title>Koha › Reports › Patrons with no checkouts</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >+<script type="text/javascript"> >+//<![CDATA[ >+$(document).ready(function(){ >+ $("#to").datepicker({ maxDate: "-1D" }); >+}); >+//]]> >+</script> > </head> > <body id="rep_borrowers_out" class="rep"> > [% INCLUDE 'header.inc' %] >@@ -58,17 +65,8 @@ > [% END %] > </select> > </li> >- <li><label for="to">Not checked out since: </label> <input size="10" id="to" name="Filter" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openCalendarTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- Calendar.setup( >- { >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo" >- } >- ); >- </script></li> >+ <li><label for="to">Not checked out since: </label> <input size="10" id="to" name="Filter" value="" type="text" /> >+</li> > </ol> > </fieldset> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tt >index 701b24c..79e878b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tt >@@ -150,63 +150,9 @@ > <tr> > <td>Date of birth</td> > <td colspan="2"></td> >- <td><label for="from">From</label> <input type="text" size="10" id="from" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openCalendarFrom" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('to').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- }); >- //]]> >- </script> >- <label for="to">To</label> <input size="10" id="to" name="Filter" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="openCalendarTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('from').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup({ >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- }); >- //]]> >- </script><span class="hint">[% INCLUDE 'date-format.inc' %]</span> >+ <td><label for="from">From</label> <input type="text" size="10" id="from" name="Filter" class="datepickerfrom" /> >+ <label for="to">To</label> <input size="10" id="to" name="Filter" value="" type="text" class="datepickerto" /> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > </td> > </tr> > <tr> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cat_issues_top.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cat_issues_top.tt >index 4104fab..c2d8906 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cat_issues_top.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cat_issues_top.tt >@@ -2,13 +2,42 @@ > <title>Koha › Reports › Most-circulated items[% IF ( do_it ) %] › Results[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >-[% IF ( do_it ) %] >-<script language="JavaScript" type="text/javascript"> >-function Dopop(link) { >+<script type="text/javascript"> >+//<![CDATA[ >+[% IF ( do_it ) %]function Dopop(link) { > newin=window.open(link,'width=500,height=400,toolbar=false,scrollbars=yes'); >-} >+}[% ELSE %] >+ $(document).ready(function() { >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( "#from, #to" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesRO = $( "#fromRO, #toRO" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "fromRO" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesRO.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ });[% END %] >+//]]> > </script> >-[% END %] > </head> > <body id="rep_cat_issues_top" class="rep"> > [% INCLUDE 'header.inc' %] >@@ -76,122 +105,12 @@ function Dopop(link) { > <form method="post" action="/cgi-bin/koha/reports/cat_issues_top.pl"> > <fieldset class="rows"> > <ol> >- <li><label for="from">Checkout date from: </label> <input type="text" readonly="readonly" size="10" id="from" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openCalendarFrom" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('to').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- </script> >- <label for="to" class="inline">To:</label> <input readonly="readonly" size="10" id="to" name="Filter" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openCalendarTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('from').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >- </script> <span class="hint">[% INCLUDE 'date-format.inc' %]</span></li> >- <li><label for="fromRO">Check-in date from</label> <input type="text" readonly="readonly" size="10" id="fromRO" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openCalendarFromRO" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('toRO').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "fromRO", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFromRO", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- </script> >- <label for="toRO" class="inline">To: </label> <input type="text" readonly="readonly" size="10" id="toRO" name="Filter" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openCalendarToRO" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('fromRO').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "toRO", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarToRO", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >- </script> <span class="hint">[% INCLUDE 'date-format.inc' %]</span></li> >+ <li><label for="from">Checkout date from: </label> <input type="text" size="10" id="from" name="Filter" /> >+ <label for="to" class="inline">To:</label> <input size="10" id="to" name="Filter" value="" type="text" /> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span></li> >+ <li><label for="fromRO">Check-in date from</label> <input type="text" size="10" id="fromRO" name="Filter" /> >+ <label for="toRO" class="inline">To: </label> <input type="text" size="10" id="toRO" name="Filter" value="" /> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span></li> > <li><label for="branch">Library: </label> > <select name="Filter" id="branch"><option value="" > Any library</option> > [% FOREACH branchloo IN branchloop %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/catalogue_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/catalogue_stats.tt >index 88fdf68..41e5f74 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/catalogue_stats.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/catalogue_stats.tt >@@ -1,6 +1,40 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Reports [% IF ( do_it ) %]› Catalog statistics › Results[% ELSE %]› Catalog statistics[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] >+[% INCLUDE 'calendar.inc' %] >+<script type="text/javascript"> >+//<![CDATA[ >+ $(document).ready(function() { >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( "#from, #to" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesRO = $( "#fromRO, #toRO" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "fromRO" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesRO.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ }); >+//]]> >+</script> > </head> > <body id="rep_catalogue_stats" class="rep"> > [% INCLUDE 'header.inc' %] >@@ -105,7 +139,7 @@ > <td>Koha full call number</td> > <td><input type="radio" name="Line" value="items.itemcallnumber" /></td> > <td><input type="radio" name="Column" value="items.itemcallnumber" /></td> >- <td><label for="callnoFrom">From</label> <input type="text" name="Filter" id="callnoFrom" /> <label for="callnoTo">To</label> <input type="text" name="Filter" id="callnoTo" /></td> >+ <td><label for="from">From</label> <input type="text" name="Filter" id="from" /> <label for="to">To</label> <input type="text" name="Filter" id="to" /></td> > </tr> > <tr> > <td> </td> >@@ -148,7 +182,7 @@ > <td>Publication year</td> > <td><input type="radio" name="Line" value="publicationyear" /></td> > <td><input type="radio" name="Column" value="publicationyear" /></td> >- <td><label for="pubyearFrom">From</label> <input type="text" name="Filter" id="pubyearFrom" /> <label for="pubyearTo">To</label> <input type="text" name="Filter" id="pubyearTo" /></td> >+ <td><label for="fromRO">From</label> <input type="text" name="Filter" id="fromRO" /> <label for="toRO">To</label> <input type="text" name="Filter" id="toRO" /></td> > </tr> > <tr> > <td>Home library</td> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/dictionary.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/dictionary.tt >index 3f913d4..102a6ee 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/dictionary.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/dictionary.tt >@@ -31,7 +31,7 @@ > [% IF ( definitions ) %] > <h2>Current terms</h2> > <form action="/cgi-bin/koha/reports/dictionary.pl" method="post"> >- <input type="hidden" name="phase" value="View dictionary" /> >+ <input type="hidden" name="phase" value="View Dictionary" /> > [% IF ( areas ) %] > Filter by area <select name="areas"> > <option value="">All</option> >@@ -100,7 +100,7 @@ > <form action="/cgi-bin/koha/reports/dictionary.pl" method="post"> > <fieldset class="rows"> > <legend>Step 2 of 5: Choose the area</legend> >-<ol><li><input type="hidden" name="phase" value="New term step 3" /> >+<ol><li><input type="hidden" name="phase" value="New Term step 3" /> > <input type="hidden" name="definition_name" value="[% definition_name %]" /> > <input type="hidden" name="definition_description" value="[% definition_description %]" /> > <label for="areas">Select table </label><select name="areas" id="areas"> >@@ -149,7 +149,7 @@ > > <td style="border: 0;"><select id="selectedColumns" name="columns" size="25" style="width:200px;height:300px;"></select> </td> </tr></table> > >-<input type="hidden" name="phase" value="New term step 4" /> >+<input type="hidden" name="phase" value="New Term step 4" /> > </fieldset> > <fieldset class="action"><input type="submit" name="submit" value="Next" /></fieldset> > </form> >@@ -184,32 +184,14 @@ > <table> > <tr> > <td>Start of date range</td> >- <td><input type="text" size="10" id="[% column.name %]_start_value" name="[% column.name %]_start_value" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="buttonfrom1" style="cursor: pointer;" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "[% column.name %]_start_value", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "buttonfrom1", >- align : "Tl" >- }); >- </script> >+ <td><input type="text" size="10" id="from" name="[% column.name %]_start_value" value="" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </td> > </tr> > <tr> > <td>End of date range</td> > <td> >- <input type="text" size="10" id="[% column.name %]_end_value" name="[% column.name %]_end_value" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="buttonfrom2" style="cursor: pointer;" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "[% column.name %]_end_value", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "buttonfrom2", >- align : "Tl" >- }); >- </script> >+ <input type="text" size="10" id="to" name="[% column.name %]_end_value" value="" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </td> > </tr> >@@ -223,7 +205,7 @@ > > [% END %] > </ol> >-<input type="hidden" name="phase" value="New term step 5" /> >+<input type="hidden" name="phase" value="New Term step 5" /> > </fieldset> > <fieldset class="action"> > <input type="submit" name="submit" value="Next" /> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >index f6ebbfe..3d9a7ab 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt >@@ -347,16 +347,7 @@ canned reports and writing custom SQL reports.</p> > </td> > [% IF ( criteri.date ) %] > <td> >- <input type="text" size="10" id="[% criteri.name %]_value" name="[% criteri.name %]_value" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="buttonfrom[% criteri.name %]" style="cursor: pointer;" alt="Show calendar" title="Show calendar" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "[% criteri.name %]_value", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "buttonfrom[% criteri.name %]", >- align : "Tl" >- }); >- </script> >+ <input type="text" size="10" id="[% criteri.name %]_value" name="[% criteri.name %]_value" value="" class="datepicker" /> > <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > </td> > </tr> >@@ -370,27 +361,9 @@ canned reports and writing custom SQL reports.</p> > [% ELSE %] > [% IF ( criteri.daterange ) %] > <td>from >- <input type="text" size="10" id="from_[% criteri.name %]_value" name="from_[% criteri.name %]_value" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="buttonfromfrom_[% criteri.name %]" style="cursor: pointer;" alt="Show calendar" title="Show calendar" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "from_[% criteri.name %]_value", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "buttonfromfrom_[% criteri.name %]", >- align : "Tl" >- }); >- </script> >+ <input type="text" size="10" id="from_[% criteri.name %]_value" name="from_[% criteri.name %]_value" value="" class="datepickerfrom" /> > to >- <input type="text" size="10" id="to_[% criteri.name %]_value" name="to_[% criteri.name %]_value" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="buttonfromto_[% criteri.name %]" style="cursor: pointer;" alt="Show calendar" title="Show calendar" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "to_[% criteri.name %]_value", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "buttonfromto_[% criteri.name %]", >- align : "Tl" >- }); >- </script> >+ <input type="text" size="10" id="to_[% criteri.name %]_value" name="to_[% criteri.name %]_value" value="" class="datepickerto" /> > <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > </td> > </tr> >@@ -531,15 +504,7 @@ canned reports and writing custom SQL reports.</p> > [% FOREACH sql_param IN sql_params %] > [% IF sql_param.input == 'date' %] > <p> >- [% sql_param.entry %]: <input id="date_[% sql_param_entry %]" type="text" value="" size="10" name="sql_params"> >- <img id="date_picker_[% sql_param_entry %]" alt="Show calendar" src="/intranet-tmpl/prog/en/lib/calendar/cal.gif"> >- <script type="text/javascript"> >- Calendar.setup( { >- inputField : "date_[% sql_param_entry %]", >- ifFormat : "%Y-%m-%d", >- button : "date_picker_[% sql_param_entry %]" >- } ); >- </script> >+ [% sql_param.entry %]: <input id="date_[% sql_param_entry %]" type="text" value="" size="10" name="sql_params" class="datepicker" /> > </p> > [% ELSE %] > <p>[% sql_param.entry %]: [% sql_param.input %]</p> >@@ -751,18 +716,9 @@ Sub report:<select name="subreport"> > <fieldset class="brief"> > <h3>Filter</h3> > <ol> >- <li><label for="filter_date">Date: >- <img src="[% themelang %]/lib/calendar/cal.gif" id="datedueto_button" alt="Show calendar" /></label> <input type="text" id="filter_date" name="filter_date" size="10" value="[% filter_date %]" /> >+ <li><label for="filter_date">Date:</label> <input type="text" id="filter_date" name="filter_date" size="10" value="[% filter_date %]" class="datepicker" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> >- <script type="text/javascript"> >- Calendar.setup( >- { >- inputField : "filter_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "filter_date_button" >- } >- ); >- </script> >+ > </li> > <li><label for="filter_author">Author:</label> <input type="text" id="filter_author" name="filter_author" value="[% filter_author %]" /></li> > <li><label for="filter_keyword">Keyword:</label> <input type="text" id="filter_keyword" name="filter_keyword" value="[% filter_keyword %]" /></li> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_avg_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_avg_stats.tt >index 4e1d324..eef1fd1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_avg_stats.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_avg_stats.tt >@@ -2,6 +2,39 @@ > <title>Koha › Reports › Average checkout period</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >+<script type="text/javascript"> >+//<![CDATA[ >+ $(document).ready(function() { >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( "#from, #to" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesRO = $( "#fromRO, #toRO" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "fromRO" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesRO.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ }); >+//]]> >+</script> > </head> > <body id="rep_issues_avg_stats" class="rep"> > [% INCLUDE 'header.inc' %] >@@ -78,63 +111,8 @@ > <td><input type="radio" name="Line" value="timestamp" /></td> > <td><input type="radio" name="Column" value="timestamp" /></td> > <td > <label for="from">From</label> <input type="text" size="10" id="from" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openCalendarFrom" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('to').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- </script> > <label for="to">To</label> <input size="10" id="to" name="Filter" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="openCalendarTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('from').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >- </script> <span class="hint">[% INCLUDE 'date-format.inc' %]</span> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > </td> > </tr> > <tr class="hilighted"> >@@ -154,63 +132,8 @@ > <td><input type="radio" name="Line" value="returndate" /></td> > <td><input type="radio" name="Column" value="returndate" /></td> > <td > <label for="fromRO">From</label> <input type="text" size="10" id="fromRO" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="openCalendarFromRO" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('toRO').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "fromRO", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFromRO", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- </script> > <label for="toRO">To</label> <input type="text" size="10" id="toRO" name="Filter" value="" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="openCalendarToRO" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('fromRO').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- >- Calendar.setup( >- { >- inputField : "toRO", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarToRO", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- } >- ); >- </script> <span class="hint">[% INCLUDE 'date-format.inc' %]</span> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > </td> > </tr> > <tr> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_by_borrower_category.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_by_borrower_category.tt >index e2cecb6..d0a315f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_by_borrower_category.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_by_borrower_category.tt >@@ -1,7 +1,6 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Reports › Checkouts by patron category</title> > [% INCLUDE 'doc-head-close.inc' %] >-[% INCLUDE 'calendar.inc' %] > </head> > <body id="rep_issues_by_borrower_category" class="rep"> > [% INCLUDE 'header.inc' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_stats.tt >index 0c47d91..e09b9cc 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_stats.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/issues_stats.tt >@@ -83,62 +83,9 @@ > <td>Period</td> > <td><input type="radio" name="Line" value="datetime" /></td> > <td><input type="radio" name="Column" value="datetime" /></td> >- <td><label for="from">From</label> <input type="text" size="10" id="from" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="openCalendarFrom" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('to').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- }); >- //]]> >- </script> >- <label for="to">To</label> <input size="10" id="to" name="Filter" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="openCalendarTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('from').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- }); >- //]]> >- </script> <span class="hint">[% INCLUDE 'date-format.inc' %]</span> >+ <td><label for="from">From</label> <input type="text" size="10" id="from" name="Filter" class="datepickerfrom" /> >+ <label for="to">To</label> <input size="10" id="to" name="Filter" value="" type="text" class="datepickerto" /> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > </td> > </tr> > <tr class="highlight"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/reserves_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/reserves_stats.tt >index 00600eb..c5a198b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/reserves_stats.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/reserves_stats.tt >@@ -2,6 +2,78 @@ > <title>Koha › Reports › Holds statistics [% IF ( do_it ) %]› Results[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >+<script type="text/javascript"> >+//<![CDATA[ >+ $(document).ready(function() { >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( "#filter_reservedate_begin, #filter_reservedate_end" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "filter_reservedate_begin" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesND = $( "#filter_notificationdate_begin, #filter_notificationdate_end" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "filter_notificationdate_begin" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesND.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesRD = $( "#filter_reminderdate_begin, #filter_reminderdate_end" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "filter_reminderdate_begin" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesRD.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesWD = $( "#filter_waitingdate_begin, #filter_waitingdate_end" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "filter_waitingdate_begin" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesWD.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesCD = $( "#filter_cancellationdate_begin, #filter_cancellationdate_end" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "filter_cancellationdate_begin" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesCD.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ }); >+//]]> >+</script> > <style type="text/css"> > .sql {display:none;} > </style> >@@ -101,61 +173,7 @@ > <td><input type="radio" name="Line" value="reservedate" /></td> > <td><input type="radio" name="Column" value="reservedate" /></td> > <td><label for="filter_reservedate_begin">From</label> <input type="text" size="10" id="filter_reservedate_begin" name="filter_reservedate_begin" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="openreservedateFrom" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('filter_reservedate_end').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_reservedate_begin", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openreservedateFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- }); >- //]]> >- </script> > <label for="filter_reservedate_end">To</label> <input size="10" id="filter_reservedate_end" name="filter_reservedate_end" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="openreservedateTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('filter_reservedate_begin').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_reservedate_end", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openreservedateTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- }); >- //]]> >- </script> > </td> > </tr> > <tr> >@@ -163,61 +181,7 @@ > <td><input type="radio" name="Line" value="notificationdate" /></td> > <td><input type="radio" name="Column" value="notificationdate" /></td> > <td><label for="filter_notificationdate_begin">From</label> <input type="text" size="10" id="filter_notificationdate_begin" name="filter_notificationdate_begin" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="opennotificationdateFrom" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('filter_notificationdate_end').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_notificationdate_begin", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "opennotificationdateFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- }); >- //]]> >- </script> > <label for="filter_notificationdate_end">To</label> <input size="10" id="filter_notificationdate_end" name="filter_notificationdate_end" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="opennotificationdateTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('filter_notificationdate_begin').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_notificationdate_end", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "opennotificationdateTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- }); >- //]]> >- </script> > </td> > </tr> > <tr> >@@ -225,61 +189,7 @@ > <td><input type="radio" name="Line" value="reminderdate" /></td> > <td><input type="radio" name="Column" value="reminderdate" /></td> > <td><label for="filter_reminderdate_begin">From</label> <input type="text" size="10" id="filter_reminderdate_begin" name="Filter" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="openreminderdateFrom" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('filter_reminderdate_end').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_reminderdate_begin", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openreminderdateFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- }); >- //]]> >- </script> > <label for="filter_reminderdate_end">To</label> <input size="10" id="filter_reminderdate_end" name="filter_reminderdate_end" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="openreminderdateTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('filter_reminderdate_begin').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_reminderdate_end", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openreminderdateTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- }); >- //]]> >- </script> > </td> > </tr> > <tr> >@@ -287,61 +197,7 @@ > <td><input type="radio" name="Line" value="waitingdate" /></td> > <td><input type="radio" name="Column" value="waitingdate" /></td> > <td><label for="filter_waitingdate_begin">From</label> <input type="text" size="10" id="filter_waitingdate_begin" name="filter_waitingdate_begin" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="openwaitingdateFrom" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('filter_waitingdate_end').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_waitingdate_begin", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openwaitingdateFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- }); >- //]]> >- </script> > <label for="filter_waitingdate_end">To</label> <input size="10" id="filter_waitingdate_end" name="filter_waitingdate_end" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="openwaitingdateTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('filter_waitingdate_begin').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_waitingdate_end", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openwaitingdateTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- }); >- //]]> >- </script> > </td> > </tr> > <tr> >@@ -349,61 +205,7 @@ > <td><input type="radio" name="Line" value="cancellationdate" /></td> > <td><input type="radio" name="Column" value="cancellationdate" /></td> > <td><label for="filter_cancellationdate_begin">From</label> <input type="text" size="10" id="filter_cancellationdate_begin" name="filter_cancellationdate_begin" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="opencancellationdateFrom" style="cursor: pointer;" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateTo = document.getElementById('filter_cancellationdate_end').value.split("-"); >- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]); >- if (date > limitDate) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_cancellationdate_begin", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "opencancellationdateFrom", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- }); >- //]]> >- </script> > <label for="filter_cancellationdate_end">To</label> <input size="10" id="filter_cancellationdate_end" name="filter_cancellationdate_end" value="" type="text" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" id="opencancellationdateTo" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- function validate2(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '-' + day; >- var dateString = year + '-' + month + '-' + day; >- var dateFrom = document.getElementById('filter_cancellationdate_begin').value.split("-"); >- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]); >- if (limitDate > date) { >- return true; >- } else { >- return false; >- } >- } >- Calendar.setup({ >- inputField : "filter_cancellationdate_end", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "opencancellationdateTo", >- disableFunc : validate2, >- dateStatusFunc : validate2 >- }); >- //]]> >- </script> > </td> > </tr> > <tr> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/stats_screen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/stats_screen.tt >index 282ef98..df53367 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/stats_screen.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/stats_screen.tt >@@ -1,8 +1,7 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Reports › Till reconciliation</title> > [% INCLUDE 'doc-head-close.inc' %] >-[% INCLUDE 'calendar.inc' %] >- >+[% INCLUDE 'calendar.inc' %] > </head> > <body id="rep_stats_screen" class="rep"> > [% INCLUDE 'header.inc' %] >@@ -21,27 +20,9 @@ > <fieldset><legend>Search between two dates</legend> > <form action="stats.screen.pl" method="post"> > <label for="from">Start Date: </label> >- <input type="text" name="time" size="10" value="[% IF ( date ) %][% date %][% ELSE %]today[% END %]" id="from" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="buttonfrom1" alt="Show calendar" style="cursor: pointer;" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "buttonfrom1", >- align : "Tl" >- }); >- </script> >+ <input type="text" name="time" size="10" value="[% IF ( date ) %][% date %][% ELSE %]today[% END %]" id="from" class="datepickerfrom" /> > <label for="to">End Date: </label> >- <input type="text" name="time2" size="10" value="[% IF ( date2 ) %][% date2 %][% ELSE %]tomorrow[% END %]" id="to" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="buttonto1" alt="Show calendar" style="cursor: pointer;" /> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "buttonto1", >- align : "Tl" >- }); >- </script> >+ <input type="text" name="time2" size="10" value="[% IF ( date2 ) %][% date2 %][% ELSE %]tomorrow[% END %]" class="datepickerto" id="to" /> > <input type="submit" value="To screen" name="submit" class="submit" /> > <!-- <input type="submit" value="To Excel" name="submit" class="button"> --></fieldset> > </form> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >index 8e8470b..0ad5d23 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >@@ -288,65 +288,15 @@ function checkMultiHold() { > > [% IF ( reserve_in_future ) %] > <li> >- <label for="reserve_date">Hold starts on date:</label> >- <input name="reserve_date" id="reserve_date" size="10" readonly="readonly"> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="CalendarReserveDate" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var today = new Date(); >- if ( (date > today) || >- ( date.getDate() == today.getDate() && >- date.getMonth() == today.getMonth() && >- date.getFullYear() == today.getFullYear() ) ) { >- return false; >- } else { >- return true; >- } >- }; >- Calendar.setup( >- { >- inputField : "reserve_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "CalendarReserveDate", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- //]]> >- </script> >+ <label for="from">Hold starts on date:</label> >+ <input name="reserve_date" id="from" size="10" readonly="readonly" class="datepickerfrom"> > <a href='#' onclick="document.getElementById('reserve_date').value='';">Clear Date</a> > </li> > [% END %] > > <li> >- <label for="expiration_date">Hold expires on date:</label> >- <input name="expiration_date" id="expiration_date" size="10" readonly="readonly" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="CalendarExpirationDate" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var today = new Date(); >- if ( (date > today) || >- ( date.getDate() == today.getDate() && >- date.getMonth() == today.getMonth() && >- date.getFullYear() == today.getFullYear() ) ) { >- return false; >- } else { >- return true; >- } >- }; >- Calendar.setup( >- { >- inputField : "expiration_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "CalendarExpirationDate", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- //]]> >- </script> >+ <label for="to">Hold expires on date:</label> >+ <input name="expiration_date" id="to" size="10" readonly="readonly" class="datepickerto" /> > <a href='#' onclick="document.getElementById('expiration_date').value='';">Clear date</a> > </li> > >@@ -737,32 +687,7 @@ function checkMultiHold() { > > [% IF AutoResumeSuspendedHolds %] > <label for="suspend_until_[% reserveloo.borrowernumber %]">[% IF ( reserveloo.suspend ) %] on [% ELSE %] until [% END %]</label> >- <input name="suspend_until" id="suspend_until_[% reserveloo.borrowernumber %]" size="10" readonly="readonly" value="[% reserveloo.suspend_until | $KohaDates %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="SuspendUntilDate_[% reserveloo.borrowernumber %]" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var today = new Date(); >- if ( (date > today) || >- ( date.getDate() == today.getDate() && >- date.getMonth() == today.getMonth() && >- date.getFullYear() == today.getFullYear() ) ) { >- return false; >- } else { >- return true; >- } >- }; >- Calendar.setup( >- { >- inputField : "suspend_until_[% reserveloo.borrowernumber %]", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "SuspendUntilDate_[% reserveloo.borrowernumber %]", >- disableFunc : validate1, >- dateStatusFunc : validate1 >- } >- ); >- //]]> >- </script> >+ <input name="suspend_until" id="suspend_until_[% reserveloo.borrowernumber %]" size="10" readonly="readonly" value="[% reserveloo.suspend_until | $KohaDates %]" class="datepicker" /> > <a href='#' onclick="document.getElementById('suspend_until_[% reserveloo.borrowernumber %]').value='';">Clear Date</a> > [% END %] > [% ELSE %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/checkexpiration.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/checkexpiration.tt >index 272f19e..f2b01a5 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/checkexpiration.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/checkexpiration.tt >@@ -53,17 +53,8 @@ > <input id="issn" type="text" name="issn" size="15" value="[% issn %]" /></li> > > <li><label for="date" class="required" title="Required field">Expiring before:</label> >- <input id="date" type="text" name="date" size="10" value="[% date %]" class="focus" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="openCalendar" style="cursor: pointer;" /> >- <script type="text/javascript"> >- Calendar.setup( >- { >- button : "openCalendar", >- inputField : "date", >- ifFormat : "[% DHTMLcalendar_dateformat %]" >- } >- ); >- </script> <span class="required">Required</span> >+ <input id="date" type="text" name="date" size="10" value="[% date %]" class="focus datepicker" /> >+ <span class="required">Required</span> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div></li> > </ol> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt >index 399c933..b47b51b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/claims.tt >@@ -1,6 +1,7 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Serials › Claims</title> > [% INCLUDE 'doc-head-close.inc' %] >+[% INCLUDE 'calendar.inc' %] > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script> > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.uitablefilter.js"></script> > <script type="text/JavaScript" language="JavaScript"> >@@ -144,7 +145,6 @@ > > //]]> > </script> >-[% INCLUDE 'calendar.inc' %] > </head> > <body id="ser_claims" class="ser"> > [% INCLUDE 'header.inc' %] >@@ -227,31 +227,11 @@ > </li> > > <li> >- <label for="begindate">From</label> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="begindatebutton" style="cursor: pointer;" alt="Show calendar" title="Show Calendar" /> >- <input type="text" name="begindate" id="begindate" value="[% begindate %]" size="10" maxlength="10" /> >- <script type="text/javascript"> >- //<![CDATA[ >- Calendar.setup({ >- inputField : "begindate", >- button : "begindatebutton", >- ifFormat : "[% DHTMLcalendar_dateformat %]" >- }); >- //]]> >- </script> >- >- <label for="enddate" style="float:none;">To</label> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="enddatebutton" style="cursor: pointer;" alt="Show calendar" title="Show Calendar" /> >- <input type="text" name="enddate" id="enddate" value="[% enddate %]" size="10" maxlength="10" /> >- <script type="text/javascript"> >- //<![CDATA[ >- Calendar.setup({ >- inputField : "enddate", >- button : "enddatebutton", >- ifFormat : "[% DHTMLcalendar_dateformat %]" >- }); >- //]]> >- </script> <span class="hint">[% INCLUDE 'date-format.inc' %]</span> >+ <label for="from">From</label> >+ <input type="text" name="begindate" id="from" value="[% begindate %]" size="10" maxlength="10" class="datepickerfrom" /> >+ <label for="to" style="float:none;">To</label> >+ <input type="text" name="enddate" id="to" value="[% enddate %]" size="10" maxlength="10" class="datepickerto" /> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span> > <input type="button" value="OK" onclick="filterByDate();" /> > </li> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >index d72a20f..ed2604d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt >@@ -2,7 +2,6 @@ > <title>Koha › Serials › [% IF ( modify ) %][% bibliotitle |html %] › Modify subscription[% ELSE %]New subscription[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >- > <style type="text/css"> > fieldset.rows li.radio { width: 100%; } /* override staff-global.css */ > .yui-u li p label.widelabel { >@@ -916,7 +915,21 @@ function Check(f) { > > $(document).ready(function() { > init_pattern(); >- >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( "#histstartdate, #histenddate" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "histstartdate" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ > [% IF ( history ) %] $("#subscription_form_history").show();[% END %] > $("#cancel_manual_history").click(function(){ > $("#subscription_form_history").hide(); >@@ -1124,51 +1137,15 @@ $(document).ready(function() { > <ol> > <li> > <label for="acqui_date"> First issue publication date:</label> >- [% UNLESS ( modify ) %]<img src="[% themelang %]/lib/calendar/cal.gif" id="acqui_button" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" />[% END %] > [% IF ( modify ) %]<input type="text" name="firstacquidate" value="[% firstacquidate %]" size="13" maxlength="10" id="acqui_date" disabled="disabled" /> >- [% ELSE %]<input type="text" name="firstacquidate" value="[% firstacquidate %]" size="13" maxlength="10" id="acqui_date" />[% END %] >+ [% ELSE %]<input type="text" name="firstacquidate" value="[% firstacquidate %]" size="13" maxlength="10" id="acqui_date" class="datepicker" />[% END %] > </li> > [% IF ( modify ) %]<li><label for="next_acqui_date"> Next issue publication date:</label> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="next_acqui_button" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" /> >- <input type="text" name="nextacquidate" value="[% nextacquidate %]" size="13" maxlength="10" id="next_acqui_date" /> >+ <input type="text" name="nextacquidate" value="[% nextacquidate %]" size="13" maxlength="10" id="next_acqui_date" class="datepicker" /> > </li>[% END %] > >- <li><!-- both scripts for calendar must follow the input field --> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "[% IF ( modify ) %]next_[% END %]acqui_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "[% IF ( modify ) %]next_[% END %]acqui_button", >- align : "Tl", >- onUpdate : function(cal) { >- irregular_issues.weeks = getWeeksArray(cal.date); >- irregular_issues.firstissue = cal.date; >- if(document.irregularity_summary) { >- irregular_issues.update(); >- } >- if(document.getElementById("seasonal_irregularity")) { >- moreoptions_seasons(text[15]); >- } >- } >- }); >- Calendar.setup({ >- inputField : "[% IF ( modify ) %]next_[% END %]acqui_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "[% IF ( modify ) %]next_[% END %]acqui_date", >- align : "Tl", >- onUpdate : function(cal) { irregular_issues.weeks = getWeeksArray(cal.date); >- irregular_issues.firstissue = cal.date; >- if(document.irregularity_summary) { >- irregular_issues.update(); >- } >- if(document.getElementById("seasonal_irregularity")) { >- moreoptions_seasons(text[15]); >- } >- } >- }); >- </script> >+ <li> > <label for="periodicity" class="required">Frequency:</label> >- > <select name="periodicity" size="1" id="periodicity" onchange="javascript:document.getElementsByName('manualhist')[0].checked=(this.value==1); reset_num_pattern();"> > <option value="" selected="selected">-- please choose --</option> > [% IF ( periodicity16 ) %] >@@ -1314,25 +1291,8 @@ $(document).ready(function() { > <li id="irregularity"></li> > <li id="displayexample"></li> > <li> >- <label for="beginning_date" class="required"> Subscription start date:</label> >- >- <img src="[% themelang %]/lib/calendar/cal.gif" id="button1" style="cursor: pointer;" alt="Show calendar" title="Show calendar" /> >- <input type="text" name="startdate" value="[% startdate %]" size="13" maxlength="10" id="beginning_date" /> >- <!-- both scripts for calendar must follow the input field --> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "beginning_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "button1", >- align : "Tl" >- }); >- Calendar.setup({ >- inputField : "beginning_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "beginning_date", >- align : "Tl" >- }); >- </script> >+ <label for="from" class="required"> Subscription start date:</label> >+ <input type="text" name="startdate" value="[% startdate %]" size="13" maxlength="10" id="from" class="datepickerfrom" /> > <span class="required">Required</span> > </li> > <li> >@@ -1347,25 +1307,8 @@ $(document).ready(function() { > <span class="required">Required</span> > </li> > <li> >- <label for="ending_date"> Subscription end date:</label> >- >- <img src="[% themelang %]/lib/calendar/cal.gif" id="buttonend1" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" /> >- <input type="text" name="enddate" value="[% enddate %]" size="13" maxlength="10" id="ending_date" /> >- <!-- both scripts for calendar must follow the input field --> >- <script type="text/javascript"> >- Calendar.setup({ >- inputField : "ending_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "buttonend1", >- align : "Tl" >- }); >- Calendar.setup({ >- inputField : "ending_date", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "ending_date", >- align : "Tl" >- }); >- </script> >+ <label for="to"> Subscription end date:</label> >+ <input type="text" name="enddate" value="[% enddate %]" size="13" maxlength="10" id="to" class="datepickerto" /> > </li> > <li><label for="numberingmethod">Numbering formula:</label> <input type="text" name="numberingmethod" id="numberingmethod" value="[% numberingmethod %]" /> > </li> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt >index 9bce8c7..0895fea 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt >@@ -87,6 +87,46 @@ $(document).ready(function() { > $("h4.collapse a").click(function(){ > $(this).parent().parent().find("ol").toggle(); > }); >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( "#suggesteddate_from, #suggesteddate_to" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "suggesteddate_from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesMD = $( "#manageddate_from, #manageddate_to" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "manageddate_from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesMD.not( this ).datepicker( "option", option, date ); >+ } >+ }); >+ var datesAD = $( "#accepteddate_from, #accepteddate_to" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "accepteddate_from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ datesAD.not( this ).datepicker( "option", option, date ); >+ } >+ }); > }); > // ]]> > </script> >@@ -474,28 +514,10 @@ $(document).ready(function() { calcNewsuggTotal(); }); > <li><label for="suggesteddate_from"> Suggested on:</label>[% suggesteddate %] > <table class="invis"> > <tr> >- <td>from :</td><td><input type="text" id="suggesteddate_from" name="suggesteddate_from" style="width:80px;" /><img src="[% themelang %]/lib/calendar/cal.gif" id="suggesteddate_from_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "suggesteddate_from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- //ifFormat : "%Y-%m-%d", >- button : "suggesteddate_from_button" >- }); >- </script></td> >+ <td><label for="suggesteddate_from">from:</label></td><td><input type="text" id="suggesteddate_from" name="suggesteddate_from" style="width:80px;" /></td> > </tr> > <tr> >- <td>to :</td><td><input type="text" id="suggesteddate_to" name="suggesteddate_to" style="width:80px;" /><img src="[% themelang %]/lib/calendar/cal.gif" id="suggesteddate_to_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "suggesteddate_to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- //ifFormat : "%Y-%m-%d", >- button : "suggesteddate_to_button" >- }); >- </script></td> >+ <td><label for="suggesteddate_to">to:</label></td><td><input type="text" id="suggesteddate_to" name="suggesteddate_to" style="width:80px;" /></td> > </tr> > </table> > </li> >@@ -505,28 +527,10 @@ $(document).ready(function() { calcNewsuggTotal(); }); > <li><label for="manageddate_from"> Management date:</label>[% manageddate %] > <table class="invis"> > <tr> >- <td>from :</td><td><input type="text" id="manageddate_from" name="manageddate_from" style="width:80px;" /><img src="[% themelang %]/lib/calendar/cal.gif" id="manageddate_from_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "manageddate_from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- //ifFormat : "%Y-%m-%d", >- button : "manageddate_from_button" >- }); >- </script></td> >+ <td><label for="manageddate_from">from:</label></td><td><input type="text" id="manageddate_from" name="manageddate_from" style="width:80px;" /></td> > </tr> > <tr> >- <td>to :</td><td><input type="text" id="manageddate_to" name="manageddate_to" style="width:80px;" /><img src="[% themelang %]/lib/calendar/cal.gif" id="manageddate_to_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "manageddate_to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- //ifFormat : "%Y-%m-%d", >- button : "manageddate_to_button" >- }); >- </script></td> >+ <td><label for="manageddate_to">to:</label></td><td><input type="text" id="manageddate_to" name="manageddate_to" style="width:80px;" /></td> > </tr> > </table> > </li> >@@ -536,28 +540,10 @@ $(document).ready(function() { calcNewsuggTotal(); }); > <li><label for="accepteddate_from"> Accepted on:</label>[% accepteddate %] > <table class="invis"> > <tr> >- <td>from :</td><td><input type="text" id="accepteddate_from" name="accepteddate_from" style="width:80px;" /><img src="[% themelang %]/lib/calendar/cal.gif" id="accepteddate_from_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "accepteddate_from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- //ifFormat : "%Y-%m-%d", >- button : "accepteddate_from_button" >- }); >- </script></td> >+ <td><label for="accepteddate_from">from:</label></td><td><input type="text" id="accepteddate_from" name="accepteddate_from" style="width:80px;" /></td> > </tr> > <tr> >- <td>to :</td><td><input type="text" id="accepteddate_to" name="accepteddate_to" style="width:80px;" /><img src="[% themelang %]/lib/calendar/cal.gif" id="accepteddate_to_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "accepteddate_to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- //ifFormat : "%Y-%m-%d", >- button : "accepteddate_to_button" >- }); >- </script></td> >+ <td><label for="accepteddate_to">to:</label></td><td><input type="text" id="accepteddate_to" name="accepteddate_to" style="width:80px;" /></td> > </tr> > </table> > </li> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tags/review.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tags/review.tt >index ddd59d3..4b68e13 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tags/review.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tags/review.tt >@@ -321,59 +321,18 @@ td input,td input[type="submit"] { font-size: 85%; padding: 1px; } > </li> > <li> > <label for="from">Date: from </label> >- <input type="text" size="10" id="from" name="from" value="[% filter_date_approved_from %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" border="0" alt="Show calendar" style="cursor: pointer;" id="openCalendarFrom" /> >+ <input type="text" size="10" id="from" name="from" value="[% filter_date_approved_from %]" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > > <label for="to">...to </label> >- <input type="text" size="10" id="to" name="to" value="[% filter_date_approved_to %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" border="0" alt="Show calendar" style="cursor: pointer;" id="openCalendarTo" /> >+ <input type="text" size="10" id="to" name="to" value="[% filter_date_approved_to %]" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > </ol> > <fieldset class="action"><input type="submit" value="Apply filter(s)" /></fieldset> > </fieldset> > </form> >-<script type="text/javascript"> >-//<![CDATA[ >-// function submit_check (from_id,to_id) { >-// var dateFrom = Date_from_syspref(document.getElementById(from_id).value); >-// var dateTo = Date_from_syspref(document.getElementById( to_id).value); >-// var today = new Date(); >-// if (dateFrom < dateTo) { >-// alert("The starting date cannot be after the ending date."); >-// document.getElementById(to_id).select(); >-// return false; >-// } >-// if (dateFrom > today) { >-// alert("The starting date cannot be in the future."); >-// document.getElementById(from_id).select(); >-// return false; >-// } >-// } >- >-// return true if the date is blocked. >-function disable_from(date) {var limit = get_Calendar_limit(date,'to' ); return (limit && limit < date);} >-function disable_to (date) {var limit = get_Calendar_limit(date,'from'); return (limit && limit > date);} >- >-Calendar.setup({ >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : disable_from, >- dateStatusFunc : disable_from >-}); >-Calendar.setup({ >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : disable_to, >- dateStatusFunc : disable_to >-}); >-//]]> >-</script> >- >- </div> >+</div> > </div> > [% INCLUDE 'intranet-bottom.inc' %] > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt >index dfe775c..f7193e3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cleanborrowers.tt >@@ -59,29 +59,14 @@ > <legend>What do you want to do ?</legend> > <p><input id="checkborrower" type="checkbox" name="checkbox" value="borrower" checked="checked" /> > <label for="checkborrower">Delete borrower who has not borrowed since:</label> >- <input size="10" id="date1" name="filterdate1" value="[% filterdate1 %]" type="text" /> >- <script type="text/javascript"> >- Calendar.setup( >- { >- inputField : "date1", >- ifFormat : "[% DHTMLcalendar_dateformat %]" >- } >- ); >- </script> <span class="hint">[% INCLUDE 'date-format.inc' %]</span></p> >- >+ <input size="10" id="date1" name="filterdate1" value="[% filterdate1 %]" type="text" class="datepicker" /> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span></p> >+ > <p><input id="checkissue" type="checkbox" name="checkbox" value="issue" checked="checked" /> > <label for="checkissue">Anonymize check-out history older than</label> >- <input size="10" id="date2" name="filterdate2" value="[% filterdate2 %]" type="text" /> >- <script type="text/javascript"> >- Calendar.setup( >- { >- inputField : "date2", >- ifFormat : "[% DHTMLcalendar_dateformat %]" >- } >- ); >- </script> <span class="hint">[% INCLUDE 'date-format.inc' %]</span></p> >- >- >+ <input size="10" id="date2" name="filterdate2" value="[% filterdate2 %]" type="text" class="datepicker" /> >+ <span class="hint">[% INCLUDE 'date-format.inc' %]</span></p> >+ > <!-- hidden here --> > <input type="hidden" name="step2" value="1" /> > </fieldset> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/export.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/export.tt >index ae4d3ec..548862d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/export.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/export.tt >@@ -1,10 +1,7 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Tools › MARC export</title> > [% INCLUDE 'doc-head-close.inc' %] >-<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/calendar/calendar-system.css" /> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-en.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-setup.js"></script> >+[% INCLUDE 'calendar.inc' %] > </head> > <body id="tools_export" class="tools"> > [% INCLUDE 'header.inc' %] >@@ -70,33 +67,14 @@ > </li> > <li>Accession date (inclusive): > <ul><li> >- <label for="start_accession">Start date:</label> >- <input type="text" size="10" id="start_accession" name="start_accession" value="[% from %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" border="0" id="openCalendarFrom" style="cursor: pointer;" alt="" /> >- <script language="JavaScript" type="text/javascript"> >-Calendar.setup( >- { >- inputField : "start_accession", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom" >- } >-); >-</script></li> >-<li><label for="end_accession"> >+ <label for="from">Start date:</label> >+ <input type="text" size="10" id="from" name="start_accession" value="[% from %]" class="datepickerfrom" /> >+</li> >+<li><label for="to"> > End date: > </label> >-<input size="10" id="end_accession" name="end_accession" value="[% end_accession %]" type="text" /> >-<img src="[% themelang %]/lib/calendar/cal.gif" alt="" id="openCalendarTo" style="cursor: pointer;" border="0" /> >-<script type="text/javascript"> >- >- Calendar.setup( >- { >- inputField : "end_accession", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo" >- } >- ); >-</script></li> >+<input size="10" id="to" name="end_accession" value="[% end_accession %]" type="text" class="datepickerto" /> >+</li> > </ul></li></ol> > </fieldset> > <fieldset class="rows"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt >index 6e50425..9993c28 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt >@@ -8,11 +8,33 @@ > > var weekdays = new Array(_("Sundays"),_("Mondays"),_("Tuesdays"),_("Wednesdays"),_("Thursdays"),_("Fridays"),_("Saturdays")); > >- function holidayOperation(formObject, opType) { >- var op = document.getElementsByName('operation'); >- op[0].value = opType; >- formObject.submit(); >- } >+ /* Creates all the structures to deal with all diferents kinds of holidays */ >+ var week_days = new Array(); >+ var holidays = new Array(); >+ var holidates = new Array(); >+ var exception_holidays = new Array(); >+ var day_month_holidays = new Array(); >+ var hola= "[% code %]"; >+ [% FOREACH WEEK_DAYS_LOO IN WEEK_DAYS_LOOP %] >+ week_days["[% WEEK_DAYS_LOO.KEY %]"] = {title:"[% WEEK_DAYS_LOO.TITLE %]", description:"[% WEEK_DAYS_LOO.DESCRIPTION %]"}; >+ [% END %] >+ [% FOREACH HOLIDAYS_LOO IN HOLIDAYS_LOOP %] >+ holidates.push("[% HOLIDAYS_LOO.KEY %]"); >+ holidays["[% HOLIDAYS_LOO.KEY %]"] = {title:"[% HOLIDAYS_LOO.TITLE %]", description:"[% HOLIDAYS_LOO.DESCRIPTION %]"}; >+ >+ [% END %] >+ [% FOREACH EXCEPTION_HOLIDAYS_LOO IN EXCEPTION_HOLIDAYS_LOOP %] >+ exception_holidays["[% EXCEPTION_HOLIDAYS_LOO.KEY %]"] = {title:"[% EXCEPTION_HOLIDAYS_LOO.TITLE %]", description:"[% EXCEPTION_HOLIDAYS_LOO.DESCRIPTION %]"}; >+ [% END %] >+ [% FOREACH DAY_MONTH_HOLIDAYS_LOO IN DAY_MONTH_HOLIDAYS_LOOP %] >+ day_month_holidays["[% DAY_MONTH_HOLIDAYS_LOO.KEY %]"] = {title:"[% DAY_MONTH_HOLIDAYS_LOO.TITLE %]", description:"[% DAY_MONTH_HOLIDAYS_LOO.DESCRIPTION %]"}; >+ [% END %] >+ >+ function holidayOperation(formObject, opType) { >+ var op = document.getElementsByName('operation'); >+ op[0].value = opType; >+ formObject.submit(); >+ } > > // This function shows the "Show Holiday" panel // > function showHoliday (exceptionPosibility, dayName, day, month, year, weekDay, title, description, holidayType) { >@@ -83,6 +105,52 @@ > function Help() { > newin=window.open("/cgi-bin/koha/help.pl","KohaHelp",'width=600,height=600,toolbar=false,scrollbars=yes'); > } >+ >+ /* This function gives css clases to each kind of day */ >+ function dateStatusHandler(date) { >+ date = new Date(date); >+ var day = date.getDate(); >+ var month = date.getMonth() + 1; >+ var year = date.getFullYear(); >+ var weekDay = date.getDay(); >+ var dayMonth = month + '/' + day; >+ var dateString = year + '/' + month + '/' + day; >+ if (exception_holidays[dateString] != null) { >+ return [true, "exception", "Exception: "+exception_holidays[dateString].title]; >+ } else if ( week_days[weekDay] != null ){ >+ return [true, "repeatableweekly", "Weekly holdiay: "+week_days[weekDay].title]; >+ } else if ( day_month_holidays[dayMonth] != null ) { >+ return [true, "repeatableyearly", "Yearly holdiay: "+day_month_holidays[dayMonth].title]; >+ } else if (holidays[dateString] != null) { >+ return [true, "holiday", "Single holiday: "+holidays[dateString].title]; >+ } else { >+ return [true, "normalday", "Normal day"]; >+ } >+ } >+ >+ /* This function is in charge of showing the correct panel considering the kind of holiday */ >+ function dateChanged(calendar) { >+ calendar = new Date(calendar); >+ var day = calendar.getDate(); >+ var month = calendar.getMonth() + 1; >+ var year = calendar.getFullYear(); >+ var weekDay = calendar.getDay(); >+ var dayName = weekdays[weekDay]; >+ var dayMonth = month + '/' + day; >+ var dateString = year + '/' + month + '/' + day; >+ if (holidays[dateString] != null) { >+ showHoliday(0, dayName, day, month, year, weekDay, holidays[dateString].title, holidays[dateString].description, 'ymd'); >+ } else if (exception_holidays[dateString] != null) { >+ showHoliday(0, dayName, day, month, year, weekDay, exception_holidays[dateString].title, exception_holidays[dateString].description, 'exception'); >+ } else if (week_days[weekDay] != null) { >+ showHoliday(1, dayName, day, month, year, weekDay, week_days[weekDay].title, week_days[weekDay].description, 'weekday'); >+ } else if (day_month_holidays[dayMonth] != null) { >+ showHoliday(1, dayName, day, month, year, weekDay, day_month_holidays[dayMonth].title, day_month_holidays[dayMonth].description, 'daymonth'); >+ } else { >+ newHoliday(dayName, day, month, year, weekDay); >+ } >+ }; >+ > $(document).ready(function() { > > [% IF ( dateformat_metric ) %] $.tablesorter.addParser({ // http://tablesorter.com/docs/example-parsers.html >@@ -128,16 +196,39 @@ > $("a.helptext").click(function(){ > $(this).parent().find(".hint").toggle(); return false; > }); >+ $("#dateofrange").datepicker(); > $("#dateofrange").each(function () { this.value = "" }); >+ $("#jcalendar-container").datepicker({ >+ beforeShowDay: function(thedate) { >+ var day = thedate.getDate(); >+ var month = thedate.getMonth() + 1; >+ var year = thedate.getFullYear(); >+ var dateString = year + '/' + month + '/' + day; >+ return dateStatusHandler(dateString); >+ }, >+ onSelect: function(dateText, inst) { >+ dateChanged($(this).datepicker("getDate")); >+ }, >+ defaultDate: new Date("[% keydate %]") >+ }); > }); > //]]> > </script> > <style type="text/css"> .key { padding : 3px; white-space:nowrap; line-height:230%; } >+.ui-datepicker { font-size : 150%; } >+.ui-datepicker th, .ui-datepicker .ui-datepicker-title select { font-size : 80%; } >+.ui-datepicker td a { padding : .5em; } >+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { font-size : 80%; } >+.key { padding : 3px; white-space:nowrap; line-height:230%; } > .normalday { background-color : #EDEDED; color : Black; border : 1px solid #BCBCBC; } > .exception { background-color : #b3d4ff; color : Black; border : 1px solid #BCBCBC; } > .holiday { background-color : #ffaeae; color : Black; border : 1px solid #BCBCBC; } > .repeatableweekly { background-color : #FFFF99; color : Black; border : 1px solid #BCBCBC; } > .repeatableyearly { background-color : #FFCC66; color : Black; border : 1px solid #BCBCBC; } >+td.exception a.ui-state-default, .exception { background: #b3d4ff none; color : Black; border : 1px solid #BCBCBC; } >+td.holiday a.ui-state-default, .holiday { background: #ffaeae none; color : Black; border : 1px solid #BCBCBC; } >+td.repeatableweekly a.ui-state-default, .repeatableweekly { background: #D8EFB3 none; color : Black; border : 1px solid #BCBCBC; } >+td.repeatableyearly a.ui-state-default, .repeatableyearly { background: #FFFF99 none; color : Black; border : 1px solid #BCBCBC; } > .information { z-index : 1; background-color : #DCD2F1; width : 300px; display : none; border : 1px solid #000000; color : #000000; font-size : 8pt; font-weight : bold; background-color : #FFD700; cursor : pointer; padding : 2px; } > .panel { z-index : 1; display : none; border : 3px solid #CCC; padding : 3px; margin-top: .3em; background-color: #FEFEFE; } fieldset.brief { border : 0; margin-top: 0; } > #showHoliday { margin : .5em 0; } h1 select { width: 20em; } div.yui-b fieldset.brief ol { font-size:100%; } div.yui-b fieldset.brief li, div.yui-b fieldset.brief li.radio { padding:0.2em 0; } .help { margin:.3em 0;border:1px solid #EEE;padding:.3em .7em; font-size : 90%; } #holidayweeklyrepeatable, #holidaysyearlyrepeatable, #holidaysunique, #holidayexceptions { font-size : 90%; margin-bottom : 1em;} .calendar td, .calendar th, .calendar .button, .calendar tbody .day { padding : .7em; font-size: 110%; } .calendar { width: auto; border : 0; } >@@ -248,17 +339,7 @@ > </li> > <li class="dateinsert"> > <b>To date : </b> >- <input type="text" id="dateofrange" name="dateofrange" size="20" value="[% dateofrange %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="dateofrange_button" alt="Show calendar" /> >- <script language="JavaScript" type="text/javascript"> >- Calendar.setup( >- { >- inputField : "dateofrange", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "dateofrange_button" >- } >- ); >- </script> >+ <input type="text" id="dateofrange" name="dateofrange" size="20" value="[% dateofrange %]" class="datepicker" /> > </li> > <li><label for="title">Title: </label><input type="text" name="newTitle" id="title" size="35" /></li> > <li><label for="newDescription">Description:</label> >@@ -311,83 +392,7 @@ > <!-- ****** MAIN SCREEN CODE ****** --> > <!-- ************************************************************************************** --> > <h3>Calendar information</h3> >-<div id="calendar-container"> >-<script type="text/javascript"> >- /* Creates all the structures to deal with all diferents kinds of holidays */ >- var week_days = new Array(); >- var holidays = new Array(); >- var exception_holidays = new Array(); >- var day_month_holidays = new Array(); >- var hola= "[% code %]"; >- [% FOREACH WEEK_DAYS_LOO IN WEEK_DAYS_LOOP %] >- week_days["[% WEEK_DAYS_LOO.KEY %]"] = {title:"[% WEEK_DAYS_LOO.TITLE | replace('"','\"') %]", description:"[% WEEK_DAYS_LOO.DESCRIPTION | replace('"','\"') %]"}; >- [% END %] >- [% FOREACH HOLIDAYS_LOO IN HOLIDAYS_LOOP %] >- holidays["[% HOLIDAYS_LOO.KEY %]"] = {title:"[% HOLIDAYS_LOO.TITLE | replace('"','\"') %]", description:"[% HOLIDAYS_LOO.DESCRIPTION | replace('"','\"') %]"}; >- [% END %] >- [% FOREACH EXCEPTION_HOLIDAYS_LOO IN EXCEPTION_HOLIDAYS_LOOP %] >- exception_holidays["[% EXCEPTION_HOLIDAYS_LOO.KEY %]"] = {title:"[% EXCEPTION_HOLIDAYS_LOO.TITLE | replace('"','\"') %]", description:"[% EXCEPTION_HOLIDAYS_LOO.DESCRIPTION | replace('"','\"') %]"}; >- [% END %] >- [% FOREACH DAY_MONTH_HOLIDAYS_LOO IN DAY_MONTH_HOLIDAYS_LOOP %] >- day_month_holidays["[% DAY_MONTH_HOLIDAYS_LOO.KEY %]"] = {title:"[% DAY_MONTH_HOLIDAYS_LOO.TITLE | replace('"','\"') %]", description:"[% DAY_MONTH_HOLIDAYS_LOO.DESCRIPTION | replace('"','\"') %]"}; >- [% END %] >- >- /* This function gives css clases to each kind of day */ >- function dateStatusHandler(date) { >- var day = date.getDate(); >- var month = date.getMonth() + 1; >- var year = date.getFullYear(); >- var weekDay = date.getDay(); >- var dayMonth = month + '/' + day; >- var dateString = year + '/' + month + '/' + day; >- if (exception_holidays[dateString] != null) { >- return 'exception'; >- } else if ( week_days[weekDay] != null ){ >- return 'repeatableweekly'; >- } else if ( day_month_holidays[dayMonth] != null ) { >- return 'repeatableyearly'; >- } else if (holidays[dateString] != null) { >- return 'holiday'; >- } else { >- return 'normalday'; >- } >- } >- >- /* This function is in charge of showing the correct panel considering the kind of holiday */ >- function dateChanged(calendar) { >- var day = calendar.date.getDate(); >- var month = calendar.date.getMonth() + 1; >- var year = calendar.date.getFullYear(); >- var weekDay = calendar.date.getDay(); >- var dayName = calendar.date.print('%A'); >- var dayMonth = month + '/' + day; >- var dateString = year + '/' + month + '/' + day; >- if (calendar.dateClicked) { >- if (holidays[dateString] != null) { >- showHoliday(0, dayName, day, month, year, weekDay, holidays[dateString].title, holidays[dateString].description, 'ymd'); >- } else if (exception_holidays[dateString] != null) { >- showHoliday(0, dayName, day, month, year, weekDay, exception_holidays[dateString].title, exception_holidays[dateString].description, 'exception'); >- } else if (week_days[weekDay] != null) { >- showHoliday(1, dayName, day, month, year, weekDay, week_days[weekDay].title, week_days[weekDay].description, 'weekday'); >- } else if (day_month_holidays[dayMonth] != null) { >- showHoliday(1, dayName, day, month, year, weekDay, day_month_holidays[dayMonth].title, day_month_holidays[dayMonth].description, 'daymonth'); >- } else { >- newHoliday(dayName, day, month, year, weekDay); >- } >- } >- }; >- Calendar.setup( >- { >- flat : "calendar-container", >- flatCallback : dateChanged, >- date: "[% keydate %]", >- dateStatusFunc : dateStatusHandler >- } >- ); >-</script> >- >- >-</div> >+<div id="jcalendar-container"></div> > > <div style="margin-top: 2em;"> > <form action="copy-holidays.pl" method="post"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt >index d8eb82f..c795687 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt >@@ -58,17 +58,7 @@ $(document).ready(function(){ > <legend>Use a barcode file</legend> > <ol> > <li><label for="uploadbarcodes">Barcode file: </label> <input type="file" id="uploadbarcodes" name="uploadbarcodes" /></li> >- <li><label for="setdate">Set inventory date to:</label> <input type="text" id="setdate" name="setdate" value="[% today %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="setdate_button" alt="Show calendar" /> >- <script type="text/javascript"> >- Calendar.setup( >- { >- inputField : "setdate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "setdate_button" >- } >- ); >- </script> >+ <li><label for="setdate">Set inventory date to:</label> <input type="text" id="setdate" name="setdate" value="[% today %]" class="datepicker" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > </ol> >@@ -141,17 +131,7 @@ $(document).ready(function(){ > [% END %] > > <li><label for="datelastseen">Inventory date:</label> >- <input type="text" id="datelastseen" name="datelastseen" value="[% datelastseen %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="datelastseen_button" alt="Show Calendar" /> >- <script type="text/javascript"> >- Calendar.setup( >- { >- inputField : "datelastseen", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "datelastseen_button" >- } >- ); >- </script> >+ <input type="text" id="datelastseen" name="datelastseen" value="[% datelastseen %]" class="datepicker"/> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li><label for="ignoreissued">Skip copies on loan: </label> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt >index ce64053..f782897 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt >@@ -87,33 +87,13 @@ Edit News Item[% ELSE %]Add News Item[% END %][% ELSE %]News[% END %]</div> > <input id="title" size="30" type="text" name="title" value="[% new_detail.title %]" /> > </li> > <li> >- <label for="timestamp">Publication date</label> >- <input id="timestamp" type="text" name="timestamp" size="15" value="[% new_detail.timestamp %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="timestampButton" style="cursor: pointer;" /> >- <script type="text/javascript"> >- Calendar.setup( >- { >- button : "timestampButton", >- inputField : "timestamp", >- ifFormat : "[% DHTMLcalendar_dateformat %]" >- } >- ); >- </script> >+ <label for="from">Publication date</label> >+ <input id="from" type="text" name="timestamp" size="15" value="[% new_detail.timestamp %]" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li> >- <label for="expirationdate">Expiration date</label> >- <input id="expirationdate" type="text" name="expirationdate" size="15" value="[% new_detail.expirationdate %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show calendar" border="0" id="openCalendar" style="cursor: pointer;" /> >- <script type="text/javascript"> >- Calendar.setup( >- { >- button : "openCalendar", >- inputField : "expirationdate", >- ifFormat : "[% DHTMLcalendar_dateformat %]" >- } >- ); >- </script> >+ <label for="to">Expiration date</label> >+ <input id="to" type="text" name="expirationdate" size="15" value="[% new_detail.expirationdate %]" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/modborrowers.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/modborrowers.tt >index 81a9156..618d056 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/modborrowers.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/modborrowers.tt >@@ -258,20 +258,9 @@ > [% END %] > [% END %] > [% IF ( field.type == 'date' ) %] >- <img src="[% themelang %]/lib/calendar/cal.gif" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" id="[% field.name %]button"/> >- <input type="text" name="[% field.name %]" id="[% field.name %]" value="" size="10" maxlength="10" readonly /> >+ <input type="text" name="[% field.name %]" id="[% field.name %]" value="" size="10" maxlength="10" readonly="readonly" class="datepicker" /> > <a href="#" onclick="clearDate('[% field.name %]');return false;">X</a> >- <script type="text/javascript"> >- //<![CDATA[ >- Calendar.setup({ >- inputField : "[% field.name %]", >- button : "[% field.name %]button", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- onClose: function() { $("#[% field.name %]").change(); this.hide();} >- }); >- //]]> >- </script> >- [% END %] >+ [% END %] > </li> > [% END %] > [% IF ( patron_attributes_codes ) %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/scheduler.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/scheduler.tt >index 0509578..31a0084 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/scheduler.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/scheduler.tt >@@ -2,6 +2,13 @@ > <title>Koha › Tools › Task scheduler</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >+<script type="text/JavaScript"> >+//<![CDATA[ >+ $(document).ready(function(){ >+ $("#startdate").datepicker({ minDate: "+0D" }); >+ }); >+//]]> >+</script> > </head> > <body id="tools_scheduler" class="tools"> > [% INCLUDE 'header.inc' %] >@@ -31,17 +38,6 @@ > <li><label for="starttime">Time:</label> > <input type="text" name="starttime" id="starttime" value="" maxlength="5" size="5" /></li> > <li><label for="startdate">Date: </label> <input type="text" size="10" id="startdate" name="startdate" value="" /> >-<img src="[% themelang %]/lib/calendar/cal.gif" border="0" alt="Show calendar" id="openCalendarStartdate" style="cursor: pointer;" /> >- >-<script type="text/javascript"> >-//<![CDATA[ >- Calendar.setup({ >- inputField : "startdate", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarStartdate" >- }); >-//]]> >-</script> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li><label for="report">Report:</label> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt >index a56a10f..1f42f53 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt >@@ -75,36 +75,11 @@ > <input type="text" id="info" name="info" value="[% info %]" /> > </li> > <li> >- <label for="from"> Display from: </label> <input type="text" size="10" id="from" name="from" value="[% datefrom %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" border="0" alt="Show calendar" id="openCalendarFrom" style="cursor: pointer;" /> >+ <label for="from"> Display from: </label> <input type="text" size="10" id="from" name="from" value="[% datefrom %]" class="datepickerfrom" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > <li> >- <label for="to">Display to: </label> <input size="10" id="to" name="to" type="text" value="[% dateto %]" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" id="openCalendarTo" alt="Show calendar" style="cursor: pointer;" border="0" /> >- <script type="text/javascript"> >- //<![CDATA[ >- >- // return true if the date is blocked. >- function disable_from(date) {var limit = get_Calendar_limit(date,'to' ); return (limit && limit < date);} >- function disable_to (date) {var limit = get_Calendar_limit(date,'from'); return (limit && limit > date);} >- >- Calendar.setup({ >- inputField : "from", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarFrom", >- disableFunc : disable_from, >- dateStatusFunc : disable_from >- }); >- Calendar.setup({ >- inputField : "to", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "openCalendarTo", >- disableFunc : disable_to, >- dateStatusFunc : disable_to >- }); >- //]]> >- </script> >+ <label for="to">Display to: </label> <input size="10" id="to" name="to" type="text" value="[% dateto %]" class="datepickerto" /> > <div class="hint">[% INCLUDE 'date-format.inc' %]</div> > </li> > </ol> >@@ -173,7 +148,7 @@ > [% ELSE %] > [% IF ( module == 'CATALOGUING' ) %] > [% IF ( info == 'item' ) %] >- <a href="/cgi-bin/koha/catalogue/moredetail.pl?item=[% loopro.object %]&biblionumber=[% loopro.biblionumber %]&bi=[% loopro.biblioitemnumber %]#item[% loopro.object %]">Item [% loopro.object %]</a> >+ <a href="/cgi-bin/koha/catalogue/moredetail.pl?item=[% loopro.object %]&biblionumber=[% loopro.biblionumber %]&bi=[% loopro.biblioitemnumber %]#item[% loopro.object %]">Item [% loopro.object %]</a> > [% ELSE %] > <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loopro.object %]" title="Display detail for this biblio">biblio [% loopro.object %]</a> > [% END %] >@@ -193,7 +168,7 @@ > </td> > <td> > [% IF ( loopro.CIRCULATION ) %] >- <a href="/cgi-bin/koha/catalogue/moredetail.pl?item=[% loopro.info %]&biblionumber=[% loopro.biblionumber %]&bi=[% loopro.biblioitemnumber %]#item[% loopro.object %]" title="Display detail for this biblio">Item [% loopro.barcode |html %]</a> >+ <a href="/cgi-bin/koha/catalogue/moredetail.pl?item=[% loopro.info %]&biblionumber=[% loopro.biblionumber %]&bi=[% loopro.biblioitemnumber %]#item[% loopro.object %]" title="Display detail for this biblio">Item [% loopro.barcode |html %]</a> > [% ELSE %] > [% loopro.info |html %] > [% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/img/famfamfam/silk/calendar.png b/koha-tmpl/intranet-tmpl/prog/img/famfamfam/silk/calendar.png >new file mode 100644 >index 0000000000000000000000000000000000000000..658913852d60fc6ca8557568d26b8e93e7d56525 >GIT binary patch >literal 675 >zcmV;U0$lxxP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ >zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!HAzH4R5;6} >zlg&$%Q51)t_rp;eb2R1ynyAP^0*fRNTU9%06XZ5%)h1|L(IOOT)uK&*LKH@tQP?Jg >zGV=?GB7)G;A^e;noHA_Y-g{1qSDjh32`?PZJ)7Ts&hOmgsVX};A;5!?wOguOb}IWs >z1Seoca87WdSSMBCa8_|5Q+F;N=?DQt^=fy=?&SZx+|xIEe4D_DBmv_6S3nh<1#w_Z >zbT5~{l%Zt67=GUv#u!&yC9vg#!rl~!jY93FNC`{{Y#BZ;0bs1Fc;K9D3V5)X2bG9K >zBqDKJ8OUS+C~pd&s@#9Mr0W|-AC9c3s%qccWmQ#u{4T1Wj79a}c$D+S4ZU=4N>w!? >zFisFv!T|cmRtW;1f$>$s0G>^*GP-h`H-mzTP&3`b(d;hDCL-{+T2LSiJi1S%34OTG >znWn~v^Brk?FQB#MFuosf?qnt!t(A%g#tAAA`tV{p&t%~)6GMus628BV?|aP6=Lr0O >zrxPn=6Fy3{fE84gngF`mQ;ZG4p#ul`mYb)mJw@Q%q_eddamvg>kv)yI#B0M!3sxev >z!1s9dp#Z>KE{BK5@W%p1Kt!2cEYj2vBiUHDJ-HCTS{r%b!`Wj=!r&Tb+LFBfRN!=5 >zl7aC&Ul)Foh{s4J>JU)^p9+C-Q44MR8(8|WK})8dx#e}T%`v`wFOp3_q9I1QsXihN >zJVaEgK9Y|1KAJgEb`m$%VXVVh!8pM>`_Eli`}OBJfVb0i{tF{QT8%v&>u>-7002ov >JPDHLkV1feuD8K*! > >literal 0 >HcmV?d00001 > >diff --git a/koha-tmpl/opac-tmpl/prog/en/css/opac.css b/koha-tmpl/opac-tmpl/prog/en/css/opac.css >index 6223025..345b7a3 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/css/opac.css >+++ b/koha-tmpl/opac-tmpl/prog/en/css/opac.css >@@ -2585,6 +2585,17 @@ ul.ui-tabs-nav li { > color: #222222; > } > >+/* jQuery UI Datepicker */ >+.ui-datepicker-trigger { >+ vertical-align: middle; >+ margin : 0 3px; >+} >+.ui-datepicker { >+ -moz-box-shadow: 1px 1px 3px 0 #666; >+ -webkit-box-shadow: 1px 1px 3px 0 #666; >+ box-shadow: 1px 1px 3px 0 #666; >+} >+ > /* ## BABELTHEQUE ## */ > /* Uncomment if babeltheque configuration no contains these lines */ > /* >diff --git a/koha-tmpl/opac-tmpl/prog/en/includes/calendar.inc b/koha-tmpl/opac-tmpl/prog/en/includes/calendar.inc >deleted file mode 100644 >index 43ba022..0000000 >--- a/koha-tmpl/opac-tmpl/prog/en/includes/calendar.inc >+++ /dev/null >@@ -1,106 +0,0 @@ >-<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/calendar/calendar-system.css"/> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar.js"></script> >-<script type="text/javascript"> >-// full day names >-Calendar._DN = new Array(_("Sunday"),_("Monday"),_("Tuesday"),_("Wednesday"),_("Thursday"),_("Friday"),_("Saturday"),_("Sunday")); >-// short day names >-Calendar._SDN = new Array(_("Sun"),_("Mon"),_("Tue"),_("Wed"),_("Thu"),_("Fri"),_("Sat"),_("Sun")); >-// First day of the week. "0" means display Sunday first, "1" means display >-// Monday first, etc. >-Calendar._FD = 1; >-// full month names >-Calendar._MN = new Array(_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December")); >-// short month names >-Calendar._SMN = new Array(_("Jan"),_("Feb"),_("Mar"),_("Apr"),_("May"),_("Jun"),_("Jul"),_("Aug"),_("Sep"),_("Oct"),_("Nov"),_("Dec")); >-// tooltips >-Calendar._TT = {}; >-Calendar._TT["INFO"] = _("About the calendar"); >- >-Calendar._TT["ABOUT"] = >-_("Dhtml Date/Time Selector")+"\n" + >-"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-) >-_("For latest version visit: http://dynarch.com/mishoo/calendar.epl")+"\n" + >-_("Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details.") + >-"\n\n" + >-_("Date selection:")+"\n" + >-_("- Use the \xab, \xbb buttons to select year")+"\n" + >-_("- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month")+"\n" + >-_("- Hold mouse button on any of the above buttons for faster selection."); >-Calendar._TT["ABOUT_TIME"] = "\n\n" + >-_("Time selection:")+"\n" + >-_("- Click on any of the time parts to increase it")+"\n" + >-_("- or Shift-click to decrease it")+"\n" + >-_("- or click and drag for faster selection."); >- >-Calendar._TT["PREV_YEAR"] = _("Prev. year (hold for menu)"); >-Calendar._TT["PREV_MONTH"] = _("Prev. month (hold for menu)"); >-Calendar._TT["GO_TODAY"] = _("Go to Today"); >-Calendar._TT["NEXT_MONTH"] = _("Next month (hold for menu)"); >-Calendar._TT["NEXT_YEAR"] = _("Next year (hold for menu)"); >-Calendar._TT["SEL_DATE"] = _("Select date"); >-Calendar._TT["DRAG_TO_MOVE"] = _("Drag to move"); >-Calendar._TT["PART_TODAY"] = _(" (today)"); >- >-// the following is to inform that "%s" is to be the first day of week >-// %s will be replaced with the day name. >-Calendar._TT["DAY_FIRST"] = _("Display %s first"); >- >-// This may be locale-dependent. It specifies the week-end days, as an array >-// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 >-// means Monday, etc. >-Calendar._TT["WEEKEND"] = "0,6"; >- >-Calendar._TT["CLOSE"] = _("Close"); >-Calendar._TT["TODAY"] = _("Today"); >-Calendar._TT["TIME_PART"] = _("(Shift-)Click or drag to change value"); >- >-// date formats >-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; >-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; >- >-Calendar._TT["WK"] = _("wk"); >-Calendar._TT["TIME"] = _("Time:"); >-</script> >-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-setup.js"></script> >-<script type="text/javascript"> >-//<![CDATA[ >-var debug = "[% debug %]"; >-var dformat = "[% dateformat %]"; >-var sentmsg = 0; >-if (debug > 1) {alert("dateformat: " + dformat + "\ndebug is on (level " + debug + ")");} >- >-function Date_from_syspref(dstring) { >- var dateX = dstring.split(/[-/]/); >- if (debug > 1 && sentmsg < 1) {sentmsg++; alert("Date_from_syspref(" + dstring + ") splits to:\n" + dateX.join("\n"));} >- if (dformat === "iso") { >- return new Date(dateX[0], (dateX[1] - 1), dateX[2]); // YYYY-MM-DD to (YYYY,m(0-11),d) >- } else if (dformat === "us") { >- return new Date(dateX[2], (dateX[0] - 1), dateX[1]); // MM/DD/YYYY to (YYYY,m(0-11),d) >- } else if (dformat === "metric") { >- return new Date(dateX[2], (dateX[1] - 1), dateX[0]); // DD/MM/YYYY to (YYYY,m(0-11),d) >- } else { >- if (debug > 0) {alert("KOHA ERROR - Unrecognized date format: " +dformat);} >- return 0; >- } >-} >- >-function get_Calendar_limit (date,did) { >- // this function could be moved to a static calendar-extras.js file >- var dvalue = document.getElementById(did).value; >- if (dvalue == "") { return false; } >- var limitDate = Date_from_syspref(dvalue); >- if (debug && debug > 5) { >- var month = date.getMonth() + 1; >- var dateString = date.getFullYear() + '-' + month + '-' + date.getDate(); >- alert("Comparing incoming (" + dateString + ") vs " >- + "'" + did + "' limit\n" >- + "\n thisdate: " + date >- + "\nlimitdate: " + limitDate >- + "\nlimit > thisdate : " + (limitDate > date) >- + "\nlimit < thisdate : " + (limitDate < date) >- ); >- } >- return limitDate; >-} >-//]]> >-</script> >diff --git a/koha-tmpl/opac-tmpl/prog/en/js/script.js b/koha-tmpl/opac-tmpl/prog/en/js/script.js >index a3cfab8..0e62b7a 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/js/script.js >+++ b/koha-tmpl/opac-tmpl/prog/en/js/script.js >@@ -7,11 +7,35 @@ function Dopop(link) { > newin=window.open(link,'popup','width=500,height=400,toolbar=false,scrollbars=yes,resizeable=yes'); > } > >+$.datepicker.setDefaults({ >+ showOn: "both", >+ changeMonth: true, >+ changeYear: true, >+ buttonImage: '/opac-tmpl/prog/famfamfam/silk/calendar.png', >+ buttonImageOnly: true, >+ showButtonPanel: true >+ }); >+ > $(document).ready(function(){ > $(".close").click(function(){ > window.close(); > }); > $(".focus").focus(); >+ $( ".datepicker" ).datepicker(); >+ // http://jqueryui.com/demos/datepicker/#date-range >+ var dates = $( ".datepickerfrom, .datepickerto" ).datepicker({ >+ changeMonth: true, >+ numberOfMonths: 1, >+ onSelect: function( selectedDate ) { >+ var option = this.id == "from" ? "minDate" : "maxDate", >+ instance = $( this ).data( "datepicker" ); >+ date = $.datepicker.parseDate( >+ instance.settings.dateFormat || >+ $.datepicker._defaults.dateFormat, >+ selectedDate, instance.settings ); >+ dates.not( this ).datepicker( "option", option, date ); >+ } >+ }); > // clear the basket when user logs out > $("#logout").click(function(){ > var nameCookie = "bib_list"; >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/cal.gif b/koha-tmpl/opac-tmpl/prog/en/lib/calendar/cal.gif >deleted file mode 100644 >index 8526cf5d19a915aa8073cf344873c4505491970d..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 127 >zcmZ?wbhEHb6krfwSj51v)Yr?)cd3`J*V1K6uU)?O9}E~67!-f9FfuT(G3Wr<K$QXv >z49qSWyY847oYHjLVc`>De9t*l<VeJ%XBvy%RED|e9CzS7vf7$yx78AzI7g1zCv(i5 >d_*Q7^L?2jGxayDN`t#4c54^3~-^9XT4FGnKF-ZUb > >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-en.js b/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-en.js >deleted file mode 100644 >index 26b4c0c..0000000 >--- a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-en.js >+++ /dev/null >@@ -1,127 +0,0 @@ >-// ** I18N >- >-// Calendar EN language >-// Author: Mihai Bazon, <mishoo@infoiasi.ro> >-// Encoding: any >-// Distributed under the same terms as the calendar itself. >- >-// For translators: please use UTF-8 if possible. We strongly believe that >-// Unicode is the answer to a real internationalized world. Also please >-// include your contact information in the header, as can be seen above. >- >-// full day names >-Calendar._DN = new Array >-("Sunday", >- "Monday", >- "Tuesday", >- "Wednesday", >- "Thursday", >- "Friday", >- "Saturday", >- "Sunday"); >- >-// Please note that the following array of short day names (and the same goes >-// for short month names, _SMN) isn't absolutely necessary. We give it here >-// for exemplification on how one can customize the short day names, but if >-// they are simply the first N letters of the full name you can simply say: >-// >-// Calendar._SDN_len = N; // short day name length >-// Calendar._SMN_len = N; // short month name length >-// >-// If N = 3 then this is not needed either since we assume a value of 3 if not >-// present, to be compatible with translation files that were written before >-// this feature. >- >-// short day names >-Calendar._SDN = new Array >-("Sun", >- "Mon", >- "Tue", >- "Wed", >- "Thu", >- "Fri", >- "Sat", >- "Sun"); >- >-// First day of the week. "0" means display Sunday first, "1" means display >-// Monday first, etc. >-Calendar._FD = 0; >- >-// full month names >-Calendar._MN = new Array >-("January", >- "February", >- "March", >- "April", >- "May", >- "June", >- "July", >- "August", >- "September", >- "October", >- "November", >- "December"); >- >-// short month names >-Calendar._SMN = new Array >-("Jan", >- "Feb", >- "Mar", >- "Apr", >- "May", >- "Jun", >- "Jul", >- "Aug", >- "Sep", >- "Oct", >- "Nov", >- "Dec"); >- >-// tooltips >-Calendar._TT = {}; >-Calendar._TT["INFO"] = "About the calendar"; >- >-Calendar._TT["ABOUT"] = >-"DHTML Date/Time Selector\n" + >-"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-) >-"For latest version visit: http://dynarch.com/mishoo/calendar.epl\n" + >-"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + >-"\n\n" + >-"Date selection:\n" + >-"- Use the \xab, \xbb buttons to select year\n" + >-"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + >-"- Hold mouse button on any of the above buttons for faster selection."; >-Calendar._TT["ABOUT_TIME"] = "\n\n" + >-"Time selection:\n" + >-"- Click on any of the time parts to increase it\n" + >-"- or Shift-click to decrease it\n" + >-"- or click and drag for faster selection."; >- >-Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)"; >-Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)"; >-Calendar._TT["GO_TODAY"] = "Go Today"; >-Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)"; >-Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)"; >-Calendar._TT["SEL_DATE"] = "Select date"; >-Calendar._TT["DRAG_TO_MOVE"] = "Drag to move"; >-Calendar._TT["PART_TODAY"] = " (today)"; >- >-// the following is to inform that "%s" is to be the first day of week >-// %s will be replaced with the day name. >-Calendar._TT["DAY_FIRST"] = "Display %s first"; >- >-// This may be locale-dependent. It specifies the week-end days, as an array >-// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 >-// means Monday, etc. >-Calendar._TT["WEEKEND"] = "0,6"; >- >-Calendar._TT["CLOSE"] = "Close"; >-Calendar._TT["TODAY"] = "Today"; >-Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value"; >- >-// date formats >-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; >-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; >- >-Calendar._TT["WK"] = "wk"; >-Calendar._TT["TIME"] = "Time:"; >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-setup.js b/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-setup.js >deleted file mode 100644 >index 8b7fcdf..0000000 >--- a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-setup.js >+++ /dev/null >@@ -1,179 +0,0 @@ >-/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ >- * --------------------------------------------------------------------------- >- * >- * The DHTML Calendar >- * >- * Details and latest version at: >- * http://dynarch.com/mishoo/calendar.epl >- * >- * This script is distributed under the GNU Lesser General Public License. >- * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html >- * >- * This file defines helper functions for setting up the calendar. They are >- * intended to help non-programmers get a working calendar on their site >- * quickly. This script should not be seen as part of the calendar. It just >- * shows you what one can do with the calendar, while in the same time >- * providing a quick and simple method for setting it up. If you need >- * exhaustive customization of the calendar creation process feel free to >- * modify this code to suit your needs (this is recommended and much better >- * than modifying calendar.js itself). >- */ >- >-/** >- * This function "patches" an input field (or other element) to use a calendar >- * widget for date selection. >- * >- * The "params" is a single object that can have the following properties: >- * >- * prop. name | description >- * ------------------------------------------------------------------------------------------------- >- * inputField | the ID of an input field to store the date >- * displayArea | the ID of a DIV or other element to show the date >- * button | ID of a button or other element that will trigger the calendar >- * eventName | event that will trigger the calendar, without the "on" prefix (default: "click") >- * ifFormat | date format that will be stored in the input field >- * daFormat | the date format that will be used to display the date in displayArea >- * singleClick | (true/false) whether the calendar is in single click mode or not (default: true) >- * firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc. >- * align | alignment (default: "Br"); if you don't know what's this see the calendar documentation >- * range | array with 2 elements. Default: [1900, 2999] -- the range of years available >- * weekNumbers | (true/false) if it's true (default) the calendar will display week numbers >- * flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID >- * flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar) >- * disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar >- * onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay) >- * onClose | function that gets called when the calendar is closed. [default] >- * onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar. >- * date | the date that the calendar will be initially displayed to >- * showsTime | default: false; if true the calendar will include a time selector >- * timeFormat | the time format; can be "12" or "24", default is "12" >- * electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close >- * step | configures the step of the years in drop-down boxes; default: 2 >- * position | configures the calendar absolute position; default: null >- * cache | if "true" (but default: "false") it will reuse the same calendar object, where possible >- * showOthers | if "true" (but default: "false") it will show days from other months too >- * >- * None of them is required, they all have default values. However, if you >- * pass none of "inputField", "displayArea" or "button" you'll get a warning >- * saying "nothing to setup". >- */ >-Calendar.setup = function (params) { >- function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } }; >- >- param_default("inputField", null); >- param_default("displayArea", null); >- param_default("button", null); >- param_default("eventName", "click"); >- param_default("ifFormat", "%Y/%m/%d"); >- param_default("daFormat", "%Y/%m/%d"); >- param_default("singleClick", true); >- param_default("disableFunc", 'dateStatusHandler'); >- param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined >- param_default("firstDay", 0); // defaults to "Sunday" first >- param_default("align", "Br"); >- param_default("range", [1900, 2999]); >- param_default("weekNumbers", true); >- param_default("flat", null); >- param_default("flatCallback", null); >- param_default("onSelect", null); >- param_default("onClose", null); >- param_default("onUpdate", null); >- param_default("date", null); >- param_default("showsTime", false); >- param_default("timeFormat", "24"); >- param_default("electric", true); >- param_default("step", 2); >- param_default("position", null); >- param_default("cache", false); >- param_default("showOthers", false); >- >- var tmp = ["inputField", "displayArea", "button"]; >- for (var i in tmp) { >- if (typeof params[tmp[i]] == "string") { >- params[tmp[i]] = document.getElementById(params[tmp[i]]); >- } >- } >- if (!(params.flat || params.inputField || params.displayArea || params.button)) { >- alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code"); >- return false; >- } >- >- function onSelect(cal) { >- var p = cal.params; >- var update = (cal.dateClicked || p.electric); >- if (update && p.flat) { >- if (typeof p.flatCallback == "function") >- p.flatCallback(cal); >- else >- alert("No flatCallback given -- doing nothing."); >- return false; >- } >- if (update && p.inputField) { >- p.inputField.value = cal.date.print(p.ifFormat); >- if (typeof p.inputField.onchange == "function") >- p.inputField.onchange(); >- } >- if (update && p.displayArea) >- p.displayArea.innerHTML = cal.date.print(p.daFormat); >- if (update && p.singleClick && cal.dateClicked) >- cal.callCloseHandler(); >- if (update && typeof p.onUpdate == "function") >- p.onUpdate(cal); >- }; >- >- if (params.flat != null) { >- if (typeof params.flat == "string") >- params.flat = document.getElementById(params.flat); >- if (!params.flat) { >- alert("Calendar.setup:\n Flat specified but can't find parent."); >- return false; >- } >- var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect); >- cal.showsTime = params.showsTime; >- cal.time24 = (params.timeFormat == "24"); >- cal.params = params; >- cal.weekNumbers = params.weekNumbers; >- cal.setRange(params.range[0], params.range[1]); >- cal.setDateStatusHandler(params.dateStatusFunc); >- cal.create(params.flat); >- cal.show(); >- return false; >- } >- >- var triggerEl = params.button || params.displayArea || params.inputField; >- triggerEl["on" + params.eventName] = function() { >- var dateEl = params.inputField || params.displayArea; >- var dateFmt = params.inputField ? params.ifFormat : params.daFormat; >- var mustCreate = false; >- var cal = window.calendar; >- if (!(cal && params.cache)) { >- window.calendar = cal = new Calendar(params.firstDay, >- params.date, >- params.onSelect || onSelect, >- params.onClose || function(cal) { cal.hide(); }); >- cal.showsTime = params.showsTime; >- cal.time24 = (params.timeFormat == "24"); >- cal.weekNumbers = params.weekNumbers; >- mustCreate = true; >- } else { >- if (params.date) >- cal.setDate(params.date); >- cal.hide(); >- } >- cal.showsOtherMonths = params.showOthers; >- cal.yearStep = params.step; >- cal.setRange(params.range[0], params.range[1]); >- cal.params = params; >- cal.setDateStatusHandler(params.dateStatusFunc); >- cal.setDateFormat(dateFmt); >- if (mustCreate) >- cal.create(); >- cal.parseDate(dateEl.value || dateEl.innerHTML); >- cal.refresh(); >- if (!params.position) >- cal.showAtElement(params.button || params.displayArea || params.inputField, params.align); >- else >- cal.showAt(params.position[0], params.position[1]); >- return false; >- }; >-}; >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-system.css b/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-system.css >deleted file mode 100644 >index 1b89961..0000000 >--- a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar-system.css >+++ /dev/null >@@ -1,254 +0,0 @@ >-/* The main calendar widget. DIV containing a table. */ >- >-.calendar { >- position: relative; >- display: none; >- border: 1px solid; >- border-color: #fff #000 #000 #fff; >- font-size: 11px; >- cursor: default; >- background: Window; >- color: WindowText; >- font-family: tahoma,verdana,sans-serif; >- width:250px; >-} >- >-.calendar table { >- border: 1px solid; >- border-color: #fff #000 #000 #fff; >- font-size: 11px; >- cursor: default; >- background: Window; >- color: WindowText; >- font-family: tahoma,verdana,sans-serif; >- border-collapse:separate; >-} >- >-/* Header part -- contains navigation buttons and day names. */ >- >-.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ >- text-align: center; >- padding: 1px; >- border: 1px solid; >- display: table-cell; >- -moz-border-radius: 0px; >- border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; >- background: ButtonFace; >-} >- >-.calendar .nav { >- background: ButtonFace url('menuarrow.gif') no-repeat 100% 100%; >-} >- >-.calendar thead .title { /* This holds the current "month, year" */ >- font-weight: bold; >- padding: 1px; >- border: 1px solid #000; >- background: ActiveCaption; >- color: CaptionText; >- text-align: center; >-} >- >-.calendar thead .headrow { /* Row <TR> containing navigation buttons */ >-} >- >-.calendar thead .daynames { /* Row <TR> containing the day names */ >-} >- >-.calendar thead .name { /* Cells <TD> containing the day names */ >- border-bottom: 1px solid ButtonShadow; >- padding: 2px; >- text-align: center; >- background: ButtonFace; >- color: ButtonText; >-} >- >-.calendar thead .weekend { /* How a weekend day name shows in header */ >-// color: #f00; >-} >- >-.calendar thead .hilite { /* How do the buttons in header appear when hover */ >- border: 2px solid; >- padding: 0px; >- border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; >-} >- >-.calendar thead .active { /* Active (pressed) buttons in header */ >- border-width: 1px; >- padding: 2px 0px 0px 2px; >- border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; >-} >- >-/* The body part -- contains all the days in month. */ >- >-.calendar tbody .day { /* Cells <TD> containing month days dates */ >- width: 2em; >- text-align: right; >- padding: 2px 4px 2px 2px; >-} >-.calendar tbody .day.othermonth { >- font-size: 80%; >- color: #aaa; >-} >-.calendar tbody .day.othermonth.oweekend { >- color: #faa; >-} >- >-.calendar table .wn { >- padding: 2px 3px 2px 2px; >- border-right: 1px solid ButtonShadow; >- background: ButtonFace; >- color: ButtonText; >-} >- >-.calendar tbody .rowhilite td { >-// background: Highlight; >-// color: HighlightText; >-} >- >-.calendar tbody td.hilite { /* Hovered cells <TD> */ >- padding: 1px 3px 1px 1px; >- border-top: 1px solid #fff; >- border-right: 1px solid #000; >- border-bottom: 1px solid #000; >- border-left: 1px solid #fff; >-} >- >-.calendar tbody td.active { /* Active (pressed) cells <TD> */ >-// padding: 2px 2px 0px 2px; >-// border: 1px solid; >-// border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; >-} >- >-.calendar tbody td.selected { /* Cell showing selected date */ >- font-weight: bold; >- border: 1px solid; >- border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; >- padding: 2px 2px 0px 2px; >- // background: ButtonFace; >- color: ButtonText; >-} >- >-.calendar tbody td.weekend { /* Cells showing weekend days */ >-// color: #f00; >-} >- >-.calendar tbody td.today { /* Cell showing today date */ >- font-weight: bold; >- color: #00f; >-} >- >-.calendar tbody td.disabled { color: GrayText; } >- >-.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ >- visibility: hidden; >-} >- >-.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ >- display: none; >-} >- >-/* The footer part -- status bar and "Close" button */ >- >-.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */ >-} >- >-.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */ >- background: ButtonFace; >- padding: 1px; >- border: 1px solid; >- border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; >- color: ButtonText; >- text-align: center; >-} >- >-.calendar tfoot .hilite { /* Hover style for buttons in footer */ >- border-top: 1px solid #fff; >- border-right: 1px solid #000; >- border-bottom: 1px solid #000; >- border-left: 1px solid #fff; >- padding: 1px; >- background: #e4e0d8; >-} >- >-.calendar tfoot .active { /* Active (pressed) style for buttons in footer */ >- padding: 2px 0px 0px 2px; >- border-top: 1px solid #000; >- border-right: 1px solid #fff; >- border-bottom: 1px solid #fff; >- border-left: 1px solid #000; >-} >- >-/* Combo boxes (menus that display months/years for direct selection) */ >- >-.calendar .combo { >- position: absolute; >- display: none; >- width: 4em; >- top: 0px; >- left: 0px; >- cursor: default; >- border: 1px solid; >- border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; >- background: Menu; >- color: MenuText; >- font-size: 90%; >- padding: 1px; >-} >- >-.calendar .combo .label, >-.calendar .combo .label-IEfix { >- text-align: center; >- padding: 1px; >-} >- >-.calendar .combo .label-IEfix { >- width: 4em; >-} >- >-.calendar .combo .active { >- padding: 0px; >- border: 1px solid #000; >-} >- >-.calendar .combo .hilite { >- background: Highlight; >- color: HighlightText; >-} >- >-.calendar td.time { >- border-top: 1px solid ButtonShadow; >- padding: 1px 0px; >- text-align: center; >- background-color: ButtonFace; >-} >- >-.calendar td.time .hour, >-.calendar td.time .minute, >-.calendar td.time .ampm { >- padding: 0px 3px 0px 4px; >- border: 1px solid #889; >- font-weight: bold; >- background-color: Menu; >-} >- >-.calendar td.time .ampm { >- text-align: center; >-} >- >-.calendar td.time .colon { >- padding: 0px 2px 0px 3px; >- font-weight: bold; >-} >- >-.calendar td.time span.hilite { >- border-color: #000; >- background-color: Highlight; >- color: HighlightText; >-} >- >-.calendar td.time span.active { >- border-color: #f00; >- background-color: #000; >- color: #0f0; >-} >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar.js b/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar.js >deleted file mode 100644 >index 42dd9e3..0000000 >--- a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/calendar.js >+++ /dev/null >@@ -1,1714 +0,0 @@ >-/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ >- * ------------------------------------------------------------------ >- * >- * The DHTML Calendar, version 0.9.6 "Keep cool but don't freeze" >- * >- * Details and latest version at: >- * http://dynarch.com/mishoo/calendar.epl >- * >- * This script is distributed under the GNU Lesser General Public License. >- * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html >- */ >- >- >-/** The Calendar object constructor. */ >-Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) { >- // member variables >- this.activeDiv = null; >- this.currentDateEl = null; >- this.getDateStatus = null; >- this.timeout = null; >- this.onSelected = onSelected || null; >- this.onClose = onClose || null; >- this.dragging = false; >- this.hidden = false; >- this.minYear = 1970; >- this.maxYear = 2050; >- this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"]; >- this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"]; >- this.isPopup = true; >- this.weekNumbers = true; >- this.firstDayOfWeek = firstDayOfWeek; // 0 for Sunday, 1 for Monday, etc. >- this.showsOtherMonths = false; >- this.dateStr = dateStr; >- this.ar_days = null; >- this.showsTime = false; >- this.time24 = true; >- this.yearStep = 2; >- // HTML elements >- this.table = null; >- this.element = null; >- this.tbody = null; >- this.firstdayname = null; >- // Combo boxes >- this.monthsCombo = null; >- this.yearsCombo = null; >- this.hilitedMonth = null; >- this.activeMonth = null; >- this.hilitedYear = null; >- this.activeYear = null; >- // Information >- this.dateClicked = false; >- >- // one-time initializations >- if (typeof Calendar._SDN == "undefined") { >- // table of short day names >- if (typeof Calendar._SDN_len == "undefined") >- Calendar._SDN_len = 3; >- var ar = new Array(); >- for (var i = 8; i > 0;) { >- ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len); >- } >- Calendar._SDN = ar; >- // table of short month names >- if (typeof Calendar._SMN_len == "undefined") >- Calendar._SMN_len = 3; >- ar = new Array(); >- for (var i = 12; i > 0;) { >- ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len); >- } >- Calendar._SMN = ar; >- } >-}; >- >-// ** constants >- >-/// "static", needed for event handlers. >-Calendar._C = null; >- >-/// detect a special case of "web browser" >-Calendar.is_ie = ( /msie/i.test(navigator.userAgent) && >- !/opera/i.test(navigator.userAgent) ); >- >-Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) ); >- >-/// detect Opera browser >-Calendar.is_opera = /opera/i.test(navigator.userAgent); >- >-/// detect KHTML-based browsers >-Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent); >- >-// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate >-// library, at some point. >- >-Calendar.getAbsolutePos = function(el) { >- var SL = 0, ST = 0; >- var is_div = /^div$/i.test(el.tagName); >- if (is_div && el.scrollLeft) >- SL = el.scrollLeft; >- if (is_div && el.scrollTop) >- ST = el.scrollTop; >- var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST }; >- if (el.offsetParent) { >- var tmp = this.getAbsolutePos(el.offsetParent); >- r.x += tmp.x; >- r.y += tmp.y; >- } >- return r; >-}; >- >-Calendar.isRelated = function (el, evt) { >- var related = evt.relatedTarget; >- if (!related) { >- var type = evt.type; >- if (type == "mouseover") { >- related = evt.fromElement; >- } else if (type == "mouseout") { >- related = evt.toElement; >- } >- } >- while (related) { >- if (related == el) { >- return true; >- } >- related = related.parentNode; >- } >- return false; >-}; >- >-Calendar.removeClass = function(el, className) { >- if (!(el && el.className)) { >- return; >- } >- var cls = el.className.split(" "); >- var ar = new Array(); >- for (var i = cls.length; i > 0;) { >- if (cls[--i] != className) { >- ar[ar.length] = cls[i]; >- } >- } >- el.className = ar.join(" "); >-}; >- >-Calendar.addClass = function(el, className) { >- Calendar.removeClass(el, className); >- el.className += " " + className; >-}; >- >-Calendar.getElement = function(ev) { >- if (Calendar.is_ie) { >- return window.event.srcElement; >- } else { >- return ev.currentTarget; >- } >-}; >- >-Calendar.getTargetElement = function(ev) { >- if (Calendar.is_ie) { >- return window.event.srcElement; >- } else { >- return ev.target; >- } >-}; >- >-Calendar.stopEvent = function(ev) { >- ev || (ev = window.event); >- if (Calendar.is_ie) { >- ev.cancelBubble = true; >- ev.returnValue = false; >- } else { >- ev.preventDefault(); >- ev.stopPropagation(); >- } >- return false; >-}; >- >-Calendar.addEvent = function(el, evname, func) { >- if (el.attachEvent) { // IE >- el.attachEvent("on" + evname, func); >- } else if (el.addEventListener) { // Gecko / W3C >- el.addEventListener(evname, func, true); >- } else { >- el["on" + evname] = func; >- } >-}; >- >-Calendar.removeEvent = function(el, evname, func) { >- if (el.detachEvent) { // IE >- el.detachEvent("on" + evname, func); >- } else if (el.removeEventListener) { // Gecko / W3C >- el.removeEventListener(evname, func, true); >- } else { >- el["on" + evname] = null; >- } >-}; >- >-Calendar.createElement = function(type, parent) { >- var el = null; >- if (document.createElementNS) { >- // use the XHTML namespace; IE won't normally get here unless >- // _they_ "fix" the DOM2 implementation. >- el = document.createElementNS("http://www.w3.org/1999/xhtml", type); >- } else { >- el = document.createElement(type); >- } >- if (typeof parent != "undefined") { >- parent.appendChild(el); >- } >- return el; >-}; >- >-// END: UTILITY FUNCTIONS >- >-// BEGIN: CALENDAR STATIC FUNCTIONS >- >-/** Internal -- adds a set of events to make some element behave like a button. */ >-Calendar._add_evs = function(el) { >- with (Calendar) { >- addEvent(el, "mouseover", dayMouseOver); >- addEvent(el, "mousedown", dayMouseDown); >- addEvent(el, "mouseout", dayMouseOut); >- if (is_ie) { >- addEvent(el, "dblclick", dayMouseDblClick); >- el.setAttribute("unselectable", true); >- } >- } >-}; >- >-Calendar.findMonth = function(el) { >- if (typeof el.month != "undefined") { >- return el; >- } else if (typeof el.parentNode.month != "undefined") { >- return el.parentNode; >- } >- return null; >-}; >- >-Calendar.findYear = function(el) { >- if (typeof el.year != "undefined") { >- return el; >- } else if (typeof el.parentNode.year != "undefined") { >- return el.parentNode; >- } >- return null; >-}; >- >-Calendar.showMonthsCombo = function () { >- var cal = Calendar._C; >- if (!cal) { >- return false; >- } >- var cal = cal; >- var cd = cal.activeDiv; >- var mc = cal.monthsCombo; >- if (cal.hilitedMonth) { >- Calendar.removeClass(cal.hilitedMonth, "hilite"); >- } >- if (cal.activeMonth) { >- Calendar.removeClass(cal.activeMonth, "active"); >- } >- var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()]; >- Calendar.addClass(mon, "active"); >- cal.activeMonth = mon; >- var s = mc.style; >- s.display = "block"; >- if (cd.navtype < 0) >- s.left = cd.offsetLeft + "px"; >- else { >- var mcw = mc.offsetWidth; >- if (typeof mcw == "undefined") >- // Konqueror brain-dead techniques >- mcw = 50; >- s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px"; >- } >- s.top = (cd.offsetTop + cd.offsetHeight) + "px"; >-}; >- >-Calendar.showYearsCombo = function (fwd) { >- var cal = Calendar._C; >- if (!cal) { >- return false; >- } >- var cal = cal; >- var cd = cal.activeDiv; >- var yc = cal.yearsCombo; >- if (cal.hilitedYear) { >- Calendar.removeClass(cal.hilitedYear, "hilite"); >- } >- if (cal.activeYear) { >- Calendar.removeClass(cal.activeYear, "active"); >- } >- cal.activeYear = null; >- var Y = cal.date.getFullYear() + (fwd ? 1 : -1); >- var yr = yc.firstChild; >- var show = false; >- for (var i = 12; i > 0; --i) { >- if (Y >= cal.minYear && Y <= cal.maxYear) { >- yr.firstChild.data = Y; >- yr.year = Y; >- yr.style.display = "block"; >- show = true; >- } else { >- yr.style.display = "none"; >- } >- yr = yr.nextSibling; >- Y += fwd ? cal.yearStep : -cal.yearStep; >- } >- if (show) { >- var s = yc.style; >- s.display = "block"; >- if (cd.navtype < 0) >- s.left = cd.offsetLeft + "px"; >- else { >- var ycw = yc.offsetWidth; >- if (typeof ycw == "undefined") >- // Konqueror brain-dead techniques >- ycw = 50; >- s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px"; >- } >- s.top = (cd.offsetTop + cd.offsetHeight) + "px"; >- } >-}; >- >-// event handlers >- >-Calendar.tableMouseUp = function(ev) { >- var cal = Calendar._C; >- if (!cal) { >- return false; >- } >- if (cal.timeout) { >- clearTimeout(cal.timeout); >- } >- var el = cal.activeDiv; >- if (!el) { >- return false; >- } >- var target = Calendar.getTargetElement(ev); >- ev || (ev = window.event); >- Calendar.removeClass(el, "active"); >- if (target == el || target.parentNode == el) { >- Calendar.cellClick(el, ev); >- } >- var mon = Calendar.findMonth(target); >- var date = null; >- if (mon) { >- date = new Date(cal.date); >- if (mon.month != date.getMonth()) { >- date.setMonth(mon.month); >- cal.setDate(date); >- cal.dateClicked = false; >- cal.callHandler(); >- } >- } else { >- var year = Calendar.findYear(target); >- if (year) { >- date = new Date(cal.date); >- if (year.year != date.getFullYear()) { >- date.setFullYear(year.year); >- cal.setDate(date); >- cal.dateClicked = false; >- cal.callHandler(); >- } >- } >- } >- with (Calendar) { >- removeEvent(document, "mouseup", tableMouseUp); >- removeEvent(document, "mouseover", tableMouseOver); >- removeEvent(document, "mousemove", tableMouseOver); >- cal._hideCombos(); >- _C = null; >- return stopEvent(ev); >- } >-}; >- >-Calendar.tableMouseOver = function (ev) { >- var cal = Calendar._C; >- if (!cal) { >- return; >- } >- var el = cal.activeDiv; >- var target = Calendar.getTargetElement(ev); >- if (target == el || target.parentNode == el) { >- Calendar.addClass(el, "hilite active"); >- Calendar.addClass(el.parentNode, "rowhilite"); >- } else { >- if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2))) >- Calendar.removeClass(el, "active"); >- Calendar.removeClass(el, "hilite"); >- Calendar.removeClass(el.parentNode, "rowhilite"); >- } >- ev || (ev = window.event); >- if (el.navtype == 50 && target != el) { >- var pos = Calendar.getAbsolutePos(el); >- var w = el.offsetWidth; >- var x = ev.clientX; >- var dx; >- var decrease = true; >- if (x > pos.x + w) { >- dx = x - pos.x - w; >- decrease = false; >- } else >- dx = pos.x - x; >- >- if (dx < 0) dx = 0; >- var range = el._range; >- var current = el._current; >- var count = Math.floor(dx / 10) % range.length; >- for (var i = range.length; --i >= 0;) >- if (range[i] == current) >- break; >- while (count-- > 0) >- if (decrease) { >- if (--i < 0) >- i = range.length - 1; >- } else if ( ++i >= range.length ) >- i = 0; >- var newval = range[i]; >- el.firstChild.data = newval; >- >- cal.onUpdateTime(); >- } >- var mon = Calendar.findMonth(target); >- if (mon) { >- if (mon.month != cal.date.getMonth()) { >- if (cal.hilitedMonth) { >- Calendar.removeClass(cal.hilitedMonth, "hilite"); >- } >- Calendar.addClass(mon, "hilite"); >- cal.hilitedMonth = mon; >- } else if (cal.hilitedMonth) { >- Calendar.removeClass(cal.hilitedMonth, "hilite"); >- } >- } else { >- if (cal.hilitedMonth) { >- Calendar.removeClass(cal.hilitedMonth, "hilite"); >- } >- var year = Calendar.findYear(target); >- if (year) { >- if (year.year != cal.date.getFullYear()) { >- if (cal.hilitedYear) { >- Calendar.removeClass(cal.hilitedYear, "hilite"); >- } >- Calendar.addClass(year, "hilite"); >- cal.hilitedYear = year; >- } else if (cal.hilitedYear) { >- Calendar.removeClass(cal.hilitedYear, "hilite"); >- } >- } else if (cal.hilitedYear) { >- Calendar.removeClass(cal.hilitedYear, "hilite"); >- } >- } >- return Calendar.stopEvent(ev); >-}; >- >-Calendar.tableMouseDown = function (ev) { >- if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) { >- return Calendar.stopEvent(ev); >- } >-}; >- >-Calendar.calDragIt = function (ev) { >- var cal = Calendar._C; >- if (!(cal && cal.dragging)) { >- return false; >- } >- var posX; >- var posY; >- if (Calendar.is_ie) { >- posY = window.event.clientY + document.body.scrollTop; >- posX = window.event.clientX + document.body.scrollLeft; >- } else { >- posX = ev.pageX; >- posY = ev.pageY; >- } >- // cal.hideShowCovered(); >- var st = cal.element.style; >- st.left = (posX - cal.xOffs) + "px"; >- st.top = (posY - cal.yOffs) + "px"; >- return Calendar.stopEvent(ev); >-}; >- >-Calendar.calDragEnd = function (ev) { >- var cal = Calendar._C; >- if (!cal) { >- return false; >- } >- cal.dragging = false; >- with (Calendar) { >- removeEvent(document, "mousemove", calDragIt); >- removeEvent(document, "mouseup", calDragEnd); >- tableMouseUp(ev); >- } >- // cal.hideShowCovered(); >-}; >- >-Calendar.dayMouseDown = function(ev) { >- var el = Calendar.getElement(ev); >- if (el.disabled) { >- return false; >- } >- var cal = el.calendar; >- cal.activeDiv = el; >- Calendar._C = cal; >- if (el.navtype != 300) with (Calendar) { >- if (el.navtype == 50) { >- el._current = el.firstChild.data; >- addEvent(document, "mousemove", tableMouseOver); >- } else >- addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver); >- addClass(el, "hilite active"); >- addEvent(document, "mouseup", tableMouseUp); >- } else if (cal.isPopup) { >- cal._dragStart(ev); >- } >- if (el.navtype == -1 || el.navtype == 1) { >- if (cal.timeout) clearTimeout(cal.timeout); >- cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250); >- } else if (el.navtype == -2 || el.navtype == 2) { >- if (cal.timeout) clearTimeout(cal.timeout); >- cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250); >- } else { >- cal.timeout = null; >- } >- return Calendar.stopEvent(ev); >-}; >- >-Calendar.dayMouseDblClick = function(ev) { >- Calendar.cellClick(Calendar.getElement(ev), ev || window.event); >- if (Calendar.is_ie) { >- document.selection.empty(); >- } >-}; >- >-Calendar.dayMouseOver = function(ev) { >- var el = Calendar.getElement(ev); >- if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) { >- return false; >- } >- if (el.ttip) { >- if (el.ttip.substr(0, 1) == "_") { >- el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1); >- } >- el.calendar.tooltips.firstChild.data = el.ttip; >- } >- if (el.navtype != 300) { >- Calendar.addClass(el, "hilite"); >- if (el.caldate) { >- Calendar.addClass(el.parentNode, "rowhilite"); >- } >- } >- return Calendar.stopEvent(ev); >-}; >- >-Calendar.dayMouseOut = function(ev) { >- with (Calendar) { >- var el = getElement(ev); >- if (isRelated(el, ev) || _C || el.disabled) { >- return false; >- } >- removeClass(el, "hilite"); >- if (el.caldate) { >- removeClass(el.parentNode, "rowhilite"); >- } >- el.calendar.tooltips.firstChild.data = _TT["SEL_DATE"]; >- return stopEvent(ev); >- } >-}; >- >-/** >- * A generic "click" handler :) handles all types of buttons defined in this >- * calendar. >- */ >-Calendar.cellClick = function(el, ev) { >- var cal = el.calendar; >- var closing = false; >- var newdate = false; >- var date = null; >- if (typeof el.navtype == "undefined") { >- Calendar.removeClass(cal.currentDateEl, "selected"); >- Calendar.addClass(el, "selected"); >- closing = (cal.currentDateEl == el); >- if (!closing) { >- cal.currentDateEl = el; >- } >- cal.date = new Date(el.caldate); >- date = cal.date; >- newdate = true; >- // a date was clicked >- if (!(cal.dateClicked = !el.otherMonth)) >- cal._init(cal.firstDayOfWeek, date); >- } else { >- if (el.navtype == 200) { >- Calendar.removeClass(el, "hilite"); >- cal.callCloseHandler(); >- return; >- } >- date = (el.navtype == 0) ? new Date() : new Date(cal.date); >- // unless "today" was clicked, we assume no date was clicked so >- // the selected handler will know not to close the calenar when >- // in single-click mode. >- // cal.dateClicked = (el.navtype == 0); >- cal.dateClicked = false; >- var year = date.getFullYear(); >- var mon = date.getMonth(); >- function setMonth(m) { >- var day = date.getDate(); >- var max = date.getMonthDays(m); >- if (day > max) { >- date.setDate(max); >- } >- date.setMonth(m); >- }; >- switch (el.navtype) { >- case 400: >- Calendar.removeClass(el, "hilite"); >- var text = Calendar._TT["ABOUT"]; >- if (typeof text != "undefined") { >- text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : ""; >- } else { >- // FIXME: this should be removed as soon as lang files get updated! >- text = "Help and about box text is not translated into this language.\n" + >- "If you know this language and you feel generous please update\n" + >- "the corresponding file in \"lang\" subdir to match calendar-en.js\n" + >- "and send it back to <mishoo@infoiasi.ro> to get it into the distribution ;-)\n\n" + >- "Thank you!\n" + >- "http://dynarch.com/mishoo/calendar.epl\n"; >- } >- alert(text); >- return; >- case -2: >- if (year > cal.minYear) { >- date.setFullYear(year - 1); >- } >- break; >- case -1: >- if (mon > 0) { >- setMonth(mon - 1); >- } else if (year-- > cal.minYear) { >- date.setFullYear(year); >- setMonth(11); >- } >- break; >- case 1: >- if (mon < 11) { >- setMonth(mon + 1); >- } else if (year < cal.maxYear) { >- date.setFullYear(year + 1); >- setMonth(0); >- } >- break; >- case 2: >- if (year < cal.maxYear) { >- date.setFullYear(year + 1); >- } >- break; >- case 100: >- cal.setFirstDayOfWeek(el.fdow); >- return; >- case 50: >- var range = el._range; >- var current = el.firstChild.data; >- for (var i = range.length; --i >= 0;) >- if (range[i] == current) >- break; >- if (ev && ev.shiftKey) { >- if (--i < 0) >- i = range.length - 1; >- } else if ( ++i >= range.length ) >- i = 0; >- var newval = range[i]; >- el.firstChild.data = newval; >- cal.onUpdateTime(); >- return; >- case 0: >- // TODAY will bring us here >- if ((typeof cal.getDateStatus == "function") && cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) { >- // remember, "date" was previously set to new >- // Date() if TODAY was clicked; thus, it >- // contains today date. >- return false; >- } >- break; >- } >- if (!date.equalsTo(cal.date)) { >- cal.setDate(date); >- newdate = true; >- } >- } >- if (newdate) { >- cal.callHandler(); >- } >- if (closing) { >- Calendar.removeClass(el, "hilite"); >- cal.callCloseHandler(); >- } >-}; >- >-// END: CALENDAR STATIC FUNCTIONS >- >-// BEGIN: CALENDAR OBJECT FUNCTIONS >- >-/** >- * This function creates the calendar inside the given parent. If _par is >- * null than it creates a popup calendar inside the BODY element. If _par is >- * an element, be it BODY, then it creates a non-popup calendar (still >- * hidden). Some properties need to be set before calling this function. >- */ >-Calendar.prototype.create = function (_par) { >- var parent = null; >- if (! _par) { >- // default parent is the document body, in which case we create >- // a popup calendar. >- parent = document.getElementsByTagName("body")[0]; >- this.isPopup = true; >- } else { >- parent = _par; >- this.isPopup = false; >- } >- this.date = this.dateStr ? new Date(this.dateStr) : new Date(); >- >- var table = Calendar.createElement("table"); >- this.table = table; >- table.cellSpacing = 0; >- table.cellPadding = 0; >- table.calendar = this; >- Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown); >- >- var div = Calendar.createElement("div"); >- this.element = div; >- div.className = "calendar"; >- if (this.isPopup) { >- div.style.position = "absolute"; >- div.style.display = "none"; >- } >- div.appendChild(table); >- >- var thead = Calendar.createElement("thead", table); >- var cell = null; >- var row = null; >- >- var cal = this; >- var hh = function (text, cs, navtype) { >- cell = Calendar.createElement("td", row); >- cell.colSpan = cs; >- cell.className = "button"; >- if (navtype != 0 && Math.abs(navtype) <= 2) >- cell.className += " nav"; >- Calendar._add_evs(cell); >- cell.calendar = cal; >- cell.navtype = navtype; >- if (text.substr(0, 1) != "&") { >- cell.appendChild(document.createTextNode(text)); >- } >- else { >- // FIXME: dirty hack for entities >- cell.innerHTML = text; >- } >- return cell; >- }; >- >- row = Calendar.createElement("tr", thead); >- var title_length = 6; >- (this.isPopup) && --title_length; >- (this.weekNumbers) && ++title_length; >- >- hh("?", 1, 400).ttip = Calendar._TT["INFO"]; >- this.title = hh("", title_length, 300); >- this.title.className = "title"; >- if (this.isPopup) { >- this.title.ttip = Calendar._TT["DRAG_TO_MOVE"]; >- this.title.style.cursor = "move"; >- hh("×", 1, 200).ttip = Calendar._TT["CLOSE"]; >- } >- >- row = Calendar.createElement("tr", thead); >- row.className = "headrow"; >- >- this._nav_py = hh("«", 1, -2); >- this._nav_py.ttip = Calendar._TT["PREV_YEAR"]; >- >- this._nav_pm = hh("‹", 1, -1); >- this._nav_pm.ttip = Calendar._TT["PREV_MONTH"]; >- >- this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0); >- this._nav_now.ttip = Calendar._TT["GO_TODAY"]; >- >- this._nav_nm = hh("›", 1, 1); >- this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"]; >- >- this._nav_ny = hh("»", 1, 2); >- this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"]; >- >- // day names >- row = Calendar.createElement("tr", thead); >- row.className = "daynames"; >- if (this.weekNumbers) { >- cell = Calendar.createElement("td", row); >- cell.className = "name wn"; >- cell.appendChild(document.createTextNode(Calendar._TT["WK"])); >- } >- for (var i = 7; i > 0; --i) { >- cell = Calendar.createElement("td", row); >- cell.appendChild(document.createTextNode("")); >- if (!i) { >- cell.navtype = 100; >- cell.calendar = this; >- Calendar._add_evs(cell); >- } >- } >- this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild; >- this._displayWeekdays(); >- >- var tbody = Calendar.createElement("tbody", table); >- this.tbody = tbody; >- >- for (i = 6; i > 0; --i) { >- row = Calendar.createElement("tr", tbody); >- if (this.weekNumbers) { >- cell = Calendar.createElement("td", row); >- cell.appendChild(document.createTextNode("")); >- } >- for (var j = 7; j > 0; --j) { >- cell = Calendar.createElement("td", row); >- cell.appendChild(document.createTextNode("")); >- cell.calendar = this; >- Calendar._add_evs(cell); >- } >- } >- >- if (this.showsTime) { >- row = Calendar.createElement("tr", tbody); >- row.className = "time"; >- >- cell = Calendar.createElement("td", row); >- cell.className = "time"; >- cell.colSpan = 2; >- cell.innerHTML = Calendar._TT["TIME"] || " "; >- >- cell = Calendar.createElement("td", row); >- cell.className = "time"; >- cell.colSpan = this.weekNumbers ? 4 : 3; >- >- (function(){ >- function makeTimePart(className, init, range_start, range_end) { >- var part = Calendar.createElement("span", cell); >- part.className = className; >- part.appendChild(document.createTextNode(init)); >- part.calendar = cal; >- part.ttip = Calendar._TT["TIME_PART"]; >- part.navtype = 50; >- part._range = []; >- if (typeof range_start != "number") >- part._range = range_start; >- else { >- for (var i = range_start; i <= range_end; ++i) { >- var txt; >- if (i < 10 && range_end >= 10) txt = '0' + i; >- else txt = '' + i; >- part._range[part._range.length] = txt; >- } >- } >- Calendar._add_evs(part); >- return part; >- }; >- var hrs = cal.date.getHours(); >- var mins = cal.date.getMinutes(); >- var t12 = !cal.time24; >- var pm = (hrs > 12); >- if (t12 && pm) hrs -= 12; >- var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23); >- var span = Calendar.createElement("span", cell); >- span.appendChild(document.createTextNode(":")); >- span.className = "colon"; >- var M = makeTimePart("minute", mins, 0, 59); >- var AP = null; >- cell = Calendar.createElement("td", row); >- cell.className = "time"; >- cell.colSpan = 2; >- if (t12) >- AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]); >- else >- cell.innerHTML = " "; >- >- cal.onSetTime = function() { >- var hrs = this.date.getHours(); >- var mins = this.date.getMinutes(); >- var pm = (hrs > 12); >- if (pm && t12) hrs -= 12; >- H.firstChild.data = (hrs < 10) ? ("0" + hrs) : hrs; >- M.firstChild.data = (mins < 10) ? ("0" + mins) : mins; >- if (t12) >- AP.firstChild.data = pm ? "pm" : "am"; >- }; >- >- cal.onUpdateTime = function() { >- var date = this.date; >- var h = parseInt(H.firstChild.data, 10); >- if (t12) { >- if (/pm/i.test(AP.firstChild.data) && h < 12) >- h += 12; >- else if (/am/i.test(AP.firstChild.data) && h == 12) >- h = 0; >- } >- var d = date.getDate(); >- var m = date.getMonth(); >- var y = date.getFullYear(); >- date.setHours(h); >- date.setMinutes(parseInt(M.firstChild.data, 10)); >- date.setFullYear(y); >- date.setMonth(m); >- date.setDate(d); >- this.dateClicked = false; >- this.callHandler(); >- }; >- })(); >- } else { >- this.onSetTime = this.onUpdateTime = function() {}; >- } >- >- var tfoot = Calendar.createElement("tfoot", table); >- >- row = Calendar.createElement("tr", tfoot); >- row.className = "footrow"; >- >- cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300); >- cell.className = "ttip"; >- if (this.isPopup) { >- cell.ttip = Calendar._TT["DRAG_TO_MOVE"]; >- cell.style.cursor = "move"; >- } >- this.tooltips = cell; >- >- div = Calendar.createElement("div", this.element); >- this.monthsCombo = div; >- div.className = "combo"; >- for (i = 0; i < Calendar._MN.length; ++i) { >- var mn = Calendar.createElement("div"); >- mn.className = Calendar.is_ie ? "label-IEfix" : "label"; >- mn.month = i; >- mn.appendChild(document.createTextNode(Calendar._SMN[i])); >- div.appendChild(mn); >- } >- >- div = Calendar.createElement("div", this.element); >- this.yearsCombo = div; >- div.className = "combo"; >- for (i = 12; i > 0; --i) { >- var yr = Calendar.createElement("div"); >- yr.className = Calendar.is_ie ? "label-IEfix" : "label"; >- yr.appendChild(document.createTextNode("")); >- div.appendChild(yr); >- } >- >- this._init(this.firstDayOfWeek, this.date); >- parent.appendChild(this.element); >-}; >- >-/** keyboard navigation, only for popup calendars */ >-Calendar._keyEvent = function(ev) { >- if (!window.calendar) { >- return false; >- } >- (Calendar.is_ie) && (ev = window.event); >- var cal = window.calendar; >- var act = (Calendar.is_ie || ev.type == "keypress"); >- if (ev.ctrlKey) { >- switch (ev.keyCode) { >- case 37: // KEY left >- act && Calendar.cellClick(cal._nav_pm); >- break; >- case 38: // KEY up >- act && Calendar.cellClick(cal._nav_py); >- break; >- case 39: // KEY right >- act && Calendar.cellClick(cal._nav_nm); >- break; >- case 40: // KEY down >- act && Calendar.cellClick(cal._nav_ny); >- break; >- default: >- return false; >- } >- } else switch (ev.keyCode) { >- case 32: // KEY space (now) >- Calendar.cellClick(cal._nav_now); >- break; >- case 27: // KEY esc >- act && cal.callCloseHandler(); >- break; >- case 37: // KEY left >- case 38: // KEY up >- case 39: // KEY right >- case 40: // KEY down >- if (act) { >- var date = cal.date.getDate() - 1; >- var el = cal.currentDateEl; >- var ne = null; >- var prev = (ev.keyCode == 37) || (ev.keyCode == 38); >- switch (ev.keyCode) { >- case 37: // KEY left >- (--date >= 0) && (ne = cal.ar_days[date]); >- break; >- case 38: // KEY up >- date -= 7; >- (date >= 0) && (ne = cal.ar_days[date]); >- break; >- case 39: // KEY right >- (++date < cal.ar_days.length) && (ne = cal.ar_days[date]); >- break; >- case 40: // KEY down >- date += 7; >- (date < cal.ar_days.length) && (ne = cal.ar_days[date]); >- break; >- } >- if (!ne) { >- if (prev) { >- Calendar.cellClick(cal._nav_pm); >- } else { >- Calendar.cellClick(cal._nav_nm); >- } >- date = (prev) ? cal.date.getMonthDays() : 1; >- el = cal.currentDateEl; >- ne = cal.ar_days[date - 1]; >- } >- Calendar.removeClass(el, "selected"); >- Calendar.addClass(ne, "selected"); >- cal.date = new Date(ne.caldate); >- cal.callHandler(); >- cal.currentDateEl = ne; >- } >- break; >- case 13: // KEY enter >- if (act) { >- cal.callHandler(); >- cal.hide(); >- } >- break; >- default: >- return false; >- } >- return Calendar.stopEvent(ev); >-}; >- >-/** >- * (RE)Initializes the calendar to the given date and firstDayOfWeek >- */ >-Calendar.prototype._init = function (firstDayOfWeek, date) { >- var today = new Date(); >- this.table.style.visibility = "hidden"; >- var year = date.getFullYear(); >- if (year < this.minYear) { >- year = this.minYear; >- date.setFullYear(year); >- } else if (year > this.maxYear) { >- year = this.maxYear; >- date.setFullYear(year); >- } >- this.firstDayOfWeek = firstDayOfWeek; >- this.date = new Date(date); >- var month = date.getMonth(); >- var mday = date.getDate(); >- var no_days = date.getMonthDays(); >- >- // calendar voodoo for computing the first day that would actually be >- // displayed in the calendar, even if it's from the previous month. >- // WARNING: this is magic. ;-) >- date.setDate(1); >- var day1 = (date.getDay() - this.firstDayOfWeek) % 7; >- if (day1 < 0) >- day1 += 7; >- date.setDate(-day1); >- date.setDate(date.getDate() + 1); >- >- var row = this.tbody.firstChild; >- var MN = Calendar._SMN[month]; >- var ar_days = new Array(); >- var weekend = Calendar._TT["WEEKEND"]; >- for (var i = 0; i < 6; ++i, row = row.nextSibling) { >- var cell = row.firstChild; >- if (this.weekNumbers) { >- cell.className = "day wn"; >- cell.firstChild.data = date.getWeekNumber(); >- cell = cell.nextSibling; >- } >- row.className = "daysrow"; >- var hasdays = false; >- for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(date.getDate() + 1)) { >- var iday = date.getDate(); >- var wday = date.getDay(); >- cell.className = "day"; >- var current_month = (date.getMonth() == month); >- if (!current_month) { >- if (this.showsOtherMonths) { >- cell.className += " othermonth"; >- cell.otherMonth = true; >- } else { >- cell.className = "emptycell"; >- cell.innerHTML = " "; >- cell.disabled = true; >- continue; >- } >- } else { >- cell.otherMonth = false; >- hasdays = true; >- } >- cell.disabled = false; >- cell.firstChild.data = iday; >- if (typeof this.getDateStatus == "function") { >- var status = this.getDateStatus(date, year, month, iday); >- if (status === true) { >- cell.className += " disabled"; >- cell.disabled = true; >- } else { >- if (/disabled/i.test(status)) >- cell.disabled = true; >- cell.className += " " + status; >- } >- } >- if (!cell.disabled) { >- ar_days[ar_days.length] = cell; >- cell.caldate = new Date(date); >- cell.ttip = "_"; >- if (current_month && iday == mday) { >- cell.className += " selected"; >- this.currentDateEl = cell; >- } >- if (date.getFullYear() == today.getFullYear() && >- date.getMonth() == today.getMonth() && >- iday == today.getDate()) { >- cell.className += " today"; >- cell.ttip += Calendar._TT["PART_TODAY"]; >- } >- if (weekend.indexOf(wday.toString()) != -1) { >- cell.className += cell.otherMonth ? " oweekend" : " weekend"; >- } >- } >- } >- if (!(hasdays || this.showsOtherMonths)) >- row.className = "emptyrow"; >- } >- this.ar_days = ar_days; >- this.title.firstChild.data = Calendar._MN[month] + ", " + year; >- this.onSetTime(); >- this.table.style.visibility = "visible"; >- // PROFILE >- // this.tooltips.firstChild.data = "Generated in " + ((new Date()) - today) + " ms"; >-}; >- >-/** >- * Calls _init function above for going to a certain date (but only if the >- * date is different than the currently selected one). >- */ >-Calendar.prototype.setDate = function (date) { >- if (!date.equalsTo(this.date)) { >- this._init(this.firstDayOfWeek, date); >- } >-}; >- >-/** >- * Refreshes the calendar. Useful if the "disabledHandler" function is >- * dynamic, meaning that the list of disabled date can change at runtime. >- * Just * call this function if you think that the list of disabled dates >- * should * change. >- */ >-Calendar.prototype.refresh = function () { >- this._init(this.firstDayOfWeek, this.date); >-}; >- >-/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */ >-Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) { >- this._init(firstDayOfWeek, this.date); >- this._displayWeekdays(); >-}; >- >-/** >- * Allows customization of what dates are enabled. The "unaryFunction" >- * parameter must be a function object that receives the date (as a JS Date >- * object) and returns a boolean value. If the returned value is true then >- * the passed date will be marked as disabled. >- */ >-Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) { >- this.getDateStatus = unaryFunction; >-}; >- >-/** Customization of allowed year range for the calendar. */ >-Calendar.prototype.setRange = function (a, z) { >- this.minYear = a; >- this.maxYear = z; >-}; >- >-/** Calls the first user handler (selectedHandler). */ >-Calendar.prototype.callHandler = function () { >- if (this.onSelected) { >- this.onSelected(this, this.date.print(this.dateFormat)); >- } >-}; >- >-/** Calls the second user handler (closeHandler). */ >-Calendar.prototype.callCloseHandler = function () { >- if (this.onClose) { >- this.onClose(this); >- } >- // this.hideShowCovered(); >-}; >- >-/** Removes the calendar object from the DOM tree and destroys it. */ >-Calendar.prototype.destroy = function () { >- var el = this.element.parentNode; >- el.removeChild(this.element); >- Calendar._C = null; >- window.calendar = null; >-}; >- >-/** >- * Moves the calendar element to a different section in the DOM tree (changes >- * its parent). >- */ >-Calendar.prototype.reparent = function (new_parent) { >- var el = this.element; >- el.parentNode.removeChild(el); >- new_parent.appendChild(el); >-}; >- >-// This gets called when the user presses a mouse button anywhere in the >-// document, if the calendar is shown. If the click was outside the open >-// calendar this function closes it. >-Calendar._checkCalendar = function(ev) { >- if (!window.calendar) { >- return false; >- } >- var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev); >- for (; el != null && el != calendar.element; el = el.parentNode); >- if (el == null) { >- // calls closeHandler which should hide the calendar. >- window.calendar.callCloseHandler(); >- return Calendar.stopEvent(ev); >- } >-}; >- >-/** Shows the calendar. */ >-Calendar.prototype.show = function () { >- var rows = this.table.getElementsByTagName("tr"); >- for (var i = rows.length; i > 0;) { >- var row = rows[--i]; >- Calendar.removeClass(row, "rowhilite"); >- var cells = row.getElementsByTagName("td"); >- for (var j = cells.length; j > 0;) { >- var cell = cells[--j]; >- Calendar.removeClass(cell, "hilite"); >- Calendar.removeClass(cell, "active"); >- } >- } >- this.element.style.display = "block"; >- this.hidden = false; >- if (this.isPopup) { >- window.calendar = this; >- Calendar.addEvent(document, "keydown", Calendar._keyEvent); >- Calendar.addEvent(document, "keypress", Calendar._keyEvent); >- Calendar.addEvent(document, "mousedown", Calendar._checkCalendar); >- } >- // this.hideShowCovered(); >-}; >- >-/** >- * Hides the calendar. Also removes any "hilite" from the class of any TD >- * element. >- */ >-Calendar.prototype.hide = function () { >- if (this.isPopup) { >- Calendar.removeEvent(document, "keydown", Calendar._keyEvent); >- Calendar.removeEvent(document, "keypress", Calendar._keyEvent); >- Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar); >- } >- this.element.style.display = "none"; >- this.hidden = true; >- // this.hideShowCovered(); >-}; >- >-/** >- * Shows the calendar at a given absolute position (beware that, depending on >- * the calendar element style -- position property -- this might be relative >- * to the parent's containing rectangle). >- */ >-Calendar.prototype.showAt = function (x, y) { >- var s = this.element.style; >- s.left = x + "px"; >- s.top = y + "px"; >- this.show(); >-}; >- >-/** Shows the calendar near a given element. */ >-Calendar.prototype.showAtElement = function (el, opts) { >- var self = this; >- var p = Calendar.getAbsolutePos(el); >- if (!opts || typeof opts != "string") { >- this.showAt(p.x, p.y + el.offsetHeight); >- return true; >- } >- function fixPosition(box) { >- if (box.x < 0) >- box.x = 0; >- if (box.y < 0) >- box.y = 0; >- var cp = document.createElement("div"); >- var s = cp.style; >- s.position = "absolute"; >- s.right = s.bottom = s.width = s.height = "0px"; >- document.body.appendChild(cp); >- var br = Calendar.getAbsolutePos(cp); >- document.body.removeChild(cp); >- if (Calendar.is_ie) { >- br.y += document.body.scrollTop; >- br.x += document.body.scrollLeft; >- } else { >- br.y += window.scrollY; >- br.x += window.scrollX; >- } >- var tmp = box.x + box.width - br.x; >- if (tmp > 0) box.x -= tmp; >- tmp = box.y + box.height - br.y; >- if (tmp > 0) box.y -= tmp; >- }; >- this.element.style.display = "block"; >- Calendar.continuation_for_the_fucking_khtml_browser = function() { >- var w = self.element.offsetWidth; >- var h = self.element.offsetHeight; >- self.element.style.display = "none"; >- var valign = opts.substr(0, 1); >- var halign = "l"; >- if (opts.length > 1) { >- halign = opts.substr(1, 1); >- } >- // vertical alignment >- switch (valign) { >- case "T": p.y -= h; break; >- case "B": p.y += el.offsetHeight; break; >- case "C": p.y += (el.offsetHeight - h) / 2; break; >- case "t": p.y += el.offsetHeight - h; break; >- case "b": break; // already there >- } >- // horizontal alignment >- switch (halign) { >- case "L": p.x -= w; break; >- case "R": p.x += el.offsetWidth; break; >- case "C": p.x += (el.offsetWidth - w) / 2; break; >- case "r": p.x += el.offsetWidth - w; break; >- case "l": break; // already there >- } >- p.width = w; >- p.height = h + 40; >- self.monthsCombo.style.display = "none"; >- fixPosition(p); >- self.showAt(p.x, p.y); >- }; >- if (Calendar.is_khtml) >- setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); >- else >- Calendar.continuation_for_the_fucking_khtml_browser(); >-}; >- >-/** Customizes the date format. */ >-Calendar.prototype.setDateFormat = function (str) { >- this.dateFormat = str; >-}; >- >-/** Customizes the tooltip date format. */ >-Calendar.prototype.setTtDateFormat = function (str) { >- this.ttDateFormat = str; >-}; >- >-/** >- * Tries to identify the date represented in a string. If successful it also >- * calls this.setDate which moves the calendar to the given date. >- */ >-Calendar.prototype.parseDate = function (str, fmt) { >- var y = 0; >- var m = -1; >- var d = 0; >- var a = str.split(/\W+/); >- if (!fmt) { >- fmt = this.dateFormat; >- } >- var b = fmt.match(/%./g); >- var i = 0, j = 0; >- var hr = 0; >- var min = 0; >- for (i = 0; i < a.length; ++i) { >- if (!a[i]) >- continue; >- switch (b[i]) { >- case "%d": >- case "%e": >- d = parseInt(a[i], 10); >- break; >- >- case "%m": >- m = parseInt(a[i], 10) - 1; >- break; >- >- case "%Y": >- case "%y": >- y = parseInt(a[i], 10); >- (y < 100) && (y += (y > 29) ? 1900 : 2000); >- break; >- >- case "%b": >- case "%B": >- for (j = 0; j < 12; ++j) { >- if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; } >- } >- break; >- >- case "%H": >- case "%I": >- case "%k": >- case "%l": >- hr = parseInt(a[i], 10); >- break; >- >- case "%P": >- case "%p": >- if (/pm/i.test(a[i]) && hr < 12) >- hr += 12; >- break; >- >- case "%M": >- min = parseInt(a[i], 10); >- break; >- } >- } >- if (y != 0 && m != -1 && d != 0) { >- this.setDate(new Date(y, m, d, hr, min, 0)); >- return; >- } >- y = 0; m = -1; d = 0; >- for (i = 0; i < a.length; ++i) { >- if (a[i].search(/[a-zA-Z]+/) != -1) { >- var t = -1; >- for (j = 0; j < 12; ++j) { >- if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; } >- } >- if (t != -1) { >- if (m != -1) { >- d = m+1; >- } >- m = t; >- } >- } else if (parseInt(a[i], 10) <= 12 && m == -1) { >- m = a[i]-1; >- } else if (parseInt(a[i], 10) > 31 && y == 0) { >- y = parseInt(a[i], 10); >- (y < 100) && (y += (y > 29) ? 1900 : 2000); >- } else if (d == 0) { >- d = a[i]; >- } >- } >- if (y == 0) { >- var today = new Date(); >- y = today.getFullYear(); >- } >- if (m != -1 && d != 0) { >- this.setDate(new Date(y, m, d, hr, min, 0)); >- } >-}; >- >-/* Calendar.prototype.hideShowCovered = function () { >- var self = this; >- Calendar.continuation_for_the_fucking_khtml_browser = function() { >- function getVisib(obj){ >- var value = obj.style.visibility; >- if (!value) { >- if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C >- if (!Calendar.is_khtml) >- value = document.defaultView. >- getComputedStyle(obj, "").getPropertyValue("visibility"); >- else >- value = ''; >- } else if (obj.currentStyle) { // IE >- value = obj.currentStyle.visibility; >- } else >- value = ''; >- } >- return value; >- }; >- >- var tags = new Array("applet", "iframe", "select"); >- var el = self.element; >- >- var p = Calendar.getAbsolutePos(el); >- var EX1 = p.x; >- var EX2 = el.offsetWidth + EX1; >- var EY1 = p.y; >- var EY2 = el.offsetHeight + EY1; >- >- for (var k = tags.length; k > 0; ) { >- var ar = document.getElementsByTagName(tags[--k]); >- var cc = null; >- >- for (var i = ar.length; i > 0;) { >- cc = ar[--i]; >- >- p = Calendar.getAbsolutePos(cc); >- var CX1 = p.x; >- var CX2 = cc.offsetWidth + CX1; >- var CY1 = p.y; >- var CY2 = cc.offsetHeight + CY1; >- >- if (self.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { >- if (!cc.__msh_save_visibility) { >- cc.__msh_save_visibility = getVisib(cc); >- } >- cc.style.visibility = cc.__msh_save_visibility; >- } else { >- if (!cc.__msh_save_visibility) { >- cc.__msh_save_visibility = getVisib(cc); >- } >- cc.style.visibility = "hidden"; >- } >- } >- } >- }; >- if (Calendar.is_khtml) >- setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); >- else >- Calendar.continuation_for_the_fucking_khtml_browser(); >-}; */ >- >-/** Internal function; it displays the bar with the names of the weekday. */ >-Calendar.prototype._displayWeekdays = function () { >- var fdow = this.firstDayOfWeek; >- var cell = this.firstdayname; >- var weekend = Calendar._TT["WEEKEND"]; >- for (var i = 0; i < 7; ++i) { >- cell.className = "day name"; >- var realday = (i + fdow) % 7; >- if (i) { >- cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]); >- cell.navtype = 100; >- cell.calendar = this; >- cell.fdow = realday; >- Calendar._add_evs(cell); >- } >- if (weekend.indexOf(realday.toString()) != -1) { >- Calendar.addClass(cell, "weekend"); >- } >- cell.firstChild.data = Calendar._SDN[(i + fdow) % 7]; >- cell = cell.nextSibling; >- } >-}; >- >-/** Internal function. Hides all combo boxes that might be displayed. */ >-Calendar.prototype._hideCombos = function () { >- this.monthsCombo.style.display = "none"; >- this.yearsCombo.style.display = "none"; >-}; >- >-/** Internal function. Starts dragging the element. */ >-Calendar.prototype._dragStart = function (ev) { >- if (this.dragging) { >- return; >- } >- this.dragging = true; >- var posX; >- var posY; >- if (Calendar.is_ie) { >- posY = window.event.clientY + document.body.scrollTop; >- posX = window.event.clientX + document.body.scrollLeft; >- } else { >- posY = ev.clientY + window.scrollY; >- posX = ev.clientX + window.scrollX; >- } >- var st = this.element.style; >- this.xOffs = posX - parseInt(st.left); >- this.yOffs = posY - parseInt(st.top); >- with (Calendar) { >- addEvent(document, "mousemove", calDragIt); >- addEvent(document, "mouseup", calDragEnd); >- } >-}; >- >-// BEGIN: DATE OBJECT PATCHES >- >-/** Adds the number of days array to the Date object. */ >-Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31); >- >-/** Constants used for time computations */ >-Date.SECOND = 1000 /* milliseconds */; >-Date.MINUTE = 60 * Date.SECOND; >-Date.HOUR = 60 * Date.MINUTE; >-Date.DAY = 24 * Date.HOUR; >-Date.WEEK = 7 * Date.DAY; >- >-/** Returns the number of days in the current month */ >-Date.prototype.getMonthDays = function(month) { >- var year = this.getFullYear(); >- if (typeof month == "undefined") { >- month = this.getMonth(); >- } >- if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) { >- return 29; >- } else { >- return Date._MD[month]; >- } >-}; >- >-/** Returns the number of day in the year. */ >-Date.prototype.getDayOfYear = function() { >- var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); >- var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0); >- var time = now - then; >- return Math.floor(time / Date.DAY); >-}; >- >-/** Returns the number of the week in year, as defined in ISO 8601. */ >-Date.prototype.getWeekNumber = function() { >- var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); >- var DoW = d.getDay(); >- d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu >- var ms = d.valueOf(); // GMT >- d.setMonth(0); >- d.setDate(4); // Thu in Week 1 >- return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; >-}; >- >-/** Checks dates equality (ignores time) */ >-Date.prototype.equalsTo = function(date) { >- return ((this.getFullYear() == date.getFullYear()) && >- (this.getMonth() == date.getMonth()) && >- (this.getDate() == date.getDate()) && >- (this.getHours() == date.getHours()) && >- (this.getMinutes() == date.getMinutes())); >-}; >- >-/** Prints the date in a string according to the given format. */ >-Date.prototype.print = function (str) { >- var m = this.getMonth(); >- var d = this.getDate(); >- var y = this.getFullYear(); >- var wn = this.getWeekNumber(); >- var w = this.getDay(); >- var s = {}; >- var hr = this.getHours(); >- var pm = (hr >= 12); >- var ir = (pm) ? (hr - 12) : hr; >- var dy = this.getDayOfYear(); >- if (ir == 0) >- ir = 12; >- var min = this.getMinutes(); >- var sec = this.getSeconds(); >- s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N] >- s["%A"] = Calendar._DN[w]; // full weekday name >- s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N] >- s["%B"] = Calendar._MN[m]; // full month name >- // FIXME: %c : preferred date and time representation for the current locale >- s["%C"] = 1 + Math.floor(y / 100); // the century number >- s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) >- s["%e"] = d; // the day of the month (range 1 to 31) >- // FIXME: %D : american date style: %m/%d/%y >- // FIXME: %E, %F, %G, %g, %h (man strftime) >- s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format) >- s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format) >- s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366) >- s["%k"] = hr; // hour, range 0 to 23 (24h format) >- s["%l"] = ir; // hour, range 1 to 12 (12h format) >- s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12 >- s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59 >- s["%n"] = "\n"; // a newline character >- s["%p"] = pm ? "PM" : "AM"; >- s["%P"] = pm ? "pm" : "am"; >- // FIXME: %r : the time in am/pm notation %I:%M:%S %p >- // FIXME: %R : the time in 24-hour notation %H:%M >- s["%s"] = Math.floor(this.getTime() / 1000); >- s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59 >- s["%t"] = "\t"; // a tab character >- // FIXME: %T : the time in 24-hour notation (%H:%M:%S) >- s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn; >- s["%u"] = w + 1; // the day of the week (range 1 to 7, 1 = MON) >- s["%w"] = w; // the day of the week (range 0 to 6, 0 = SUN) >- // FIXME: %x : preferred date representation for the current locale without the time >- // FIXME: %X : preferred time representation for the current locale without the date >- s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99) >- s["%Y"] = y; // year with the century >- s["%%"] = "%"; // a literal '%' character >- >- var re = /%./g; >- if (!Calendar.is_ie5) >- return str.replace(re, function (par) { return s[par] || par; }); >- >- var a = str.match(re); >- for (var i = 0; i < a.length; i++) { >- var tmp = s[a[i]]; >- if (tmp) { >- re = new RegExp(a[i], 'g'); >- str = str.replace(re, tmp); >- } >- } >- >- return str; >-}; >- >-Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear; >-Date.prototype.setFullYear = function(y) { >- var d = new Date(this); >- d.__msh_oldSetFullYear(y); >- if (d.getMonth() != this.getMonth()) >- this.setDate(28); >- this.__msh_oldSetFullYear(y); >-}; >- >-// END: DATE OBJECT PATCHES >- >- >-// global object that remembers the calendar >-window.calendar = null; >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/calendar/menuarrow.gif b/koha-tmpl/opac-tmpl/prog/en/lib/calendar/menuarrow.gif >deleted file mode 100644 >index ed2dee0e6368d201bf5d32833884c7c1da6c7424..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 68 >zcmZ?wbhEHbWM^Py_{hZ2(9rPi-LwDy|1&T!DE?$&WME)o&;ha;K=KSsqAVN&i(DE6 >VRJ~d>0vEY-3aNTcS;53$4FHxP5xxKb > >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/images/ui-icons_222222_256x240.png b/koha-tmpl/opac-tmpl/prog/en/lib/jquery/images/ui-icons_222222_256x240.png >new file mode 100644 >index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a >GIT binary patch >literal 4369 >zcmd^?`8O2)_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~Gm<qS >zlCjL7i8RK}U~J#s@6Y%1S9~7lb?$xLU+y{go_o*h`AV=spXY*!!T<mOmxZ~R9RL9Q >zdj+hrf&W^P#f9C!Zpp^V{;aID?ElVL?Rdohw{Ucz9r_YL7=D6<&8F>PmYTG^FX}c% >zl<zAi(m>GE{DS1Q;~I7<vD)$Yj(fd>-6ze&TN@+F-xsI6sd%SwK#*O5K|pDRZqEy< >zJg0Nd8F@!OxqElm`~U#piM22@u@8B<<ecI*S<egUH7}csd8!)jLBD2s`p(8v&--KE >z71^q9MglFywkSt_5FCr2F%o&UR(5j7-O>moyKE%ct`B(jysxK+1m?G)UyIFs1t0}L >zemGR&?jGaM1YQblj?v&@0iXS#fi-VbR9zLEnHLP?xQ|=%Ihrc7^yPWR!tW$yH!zrw >z#I2}_!JnT^(qk)VgJr`NGdPtT^dmQIZc%=6nTAyJDXk+^3}wUOilJuwq>s=T_!9V) >zr1)DT6VQ2~rgd@!Jlrte3}}m~j}juCS`J4(d-5+e-3@EzzTJNCE2z)w(kJ90z*QE) >zBtnV@4mM>jTrZZ*$01SnGov0&=A-JrX5Ge%Pce1Vj}=5YQqBD^W@n4KmFxxpFK`uH >zP;(xKV+6VJ2|g+?_Lct7`uElL<&jzGS8Gfva2+=8A@#V+xsAj9|Dkg)vL5yhX@~B= >zN2KZSAUD%QH`x>H+@Ou(D1~Pyv#0nc&$!1kI?IO01yw3jD0@80qvc?T*Nr8?-%rC8 >z@5$|WY?Hqp`ixmEkzeJTz_`_<!oE0dsO`po1=$i_1k<Um_}caMZcrpqA*x-}Rw(fX >z3Qyh8;-4^Fe)UICI@ayzmyV?48GbR;1*s>wsSRi1%Zivd`#+T{Aib6-rf$}M8sz6v >zb6ERbr-SniO2wbOv!M4)nb}6UVzoVZEh5kQWh_5x4rYy3<sHrHJLqL+DcLT5`t$L@ >z5_J8#H;PWO1GW@oId1Y>c!871NeaM(_p=4(kbS6U#x<*k8Wg^KHs2ttCz<+pBxQ$Z >zQMv;kVm5_fF_vH`Mzrq$Y&6u?j6~f<juy`C^I0O`4mfXK0lrRY*VoeJX&k$9aL;Hl >zlp63sf~-1z_419)A8^j|LeQSmK&T8R7nA=Ki3^H;YaeL&hF6>tIV0Yg)Nw7JysIN_ >z-_n*K_v1c&D}-1{NbBwS2h#m1y0a5RiEcYil+58$8IDh49bPnzE7R8In6P%V{2IZU >z7#clr=V4<zT-gP2u}DD>yyrRe@oXNqbqo^^LvlLE?%8XaI&N(Np90-psU}7kqmbWk >zZ;YBwJNnNs<m6GqjV2(cCX2e+#tSOgIGm~J&Djknhy!e`&p)NTq>$~d!mx9oMGyT( >znaBoj0d}gpQ^aRr?6nW)$4god*`@Uh2e+YpS@0(Mw{|z|6ko3NbTvDiCu3YO+)egL >z>uW(^ahKFj>iJ-JF!^KhKQyPTznJa;xyHYwxJgr16&Wid_9)-%*mEwo{B_|M9t@S1 >zf@T@q?b2Qgl!~_(Roe;fdK)y|XG0;ls;ZbT)w-aOVttk#daQcY7$cpY496H*`m@+L >zeP#$&yRbBjFWv}B)|5-1v=(66M_;V1SWv6MHnO}}1=vby&9l+gaP?|pXwp0AFDe#L >z&MRJ^*qX6wgxhA_`*o=LGZ>G_NTX%AKHPz4bO^R72ZYK}ale3lffDgM8H!Wrw{B7A >z{?c_|dh2J*y<H{`M3l!HEtOc{;H{lJx}(C|*lvPQ+RAcV`>8b04c37OmqUw;#;G<* >z@nz@dV`;7&^$)e!B}cd5tl<nF(??uM#|`*5pIKe!DEUl5-&9M=s_3Yn@-P(czyPQ~ >zTU3I3bk%z<*w;9V(oQvt^2H`kBAW;=2oA<L1<qVIK(Z{Hk@5&E&_2mS+|}+?g@FBu >zK+e=OWg<)e?RO;llNw00>0{g(Q>5_7H^@bEJi7;fQ4B$NGZerH#Ae1#8WDTH`iB&) >zC6Et3BYY#mcJxh&)b2C^{aLq~psFN)Q1SucCaBaBUr%5PYX{~-q{KGEh)*;n;?75k >z=hq%i^I}rd;z-#YyI`8-OfMpWz5kgJE3<X7ptj0dmPk5UrEf%nVD%<Giiw4wVh!K0 >zFjy-VAnpOFJIDm=jqqahP0Wam<9qv4UMIazx8J<YJz>I!3ean6=UZi!BxG7i(YBk? >z02HM7wS0)Wni{dWbQMRtd-A)_Az!t>F;IwWf~!*)-Az4}yryNkz&9)w>ElA80Oc`6 >zHo#9H!Y3*Qx9n@Jn)!w6G^hb;e_n8zpIyXCN`JFkPc)^Q?2MsLNFhMgrcZI-<#1ne >zjH;KFf?4eAT9<t<iUSC5BsF-<$q+H@@j%Yk>mQZ}ZfHLGA#d%s;SZK4p0FwZT2S^{ >zQ2BG1xJsbK6?yrHTjJi|5C0u=!|r!?*4FL%y%3q#(d+e>b_2I9!*iI!30}42Ia0bq >zUf`Z?LGSEvtz8s``Tg5o_CP(FbR0X$FlE0yCnB7su<mcL>DPmI2=yOg^*2#cY9o`X >z;NY-3VBHZjnVcGS){GZ98{e+l<X|f4%S*+x526SE1mJ%6M<Nt*!}czEQf{?H1U0br >z^Y7cXNxH@=Ve^#j3H@BPU>q~O$u6pEcgd0CrnIsWffN1MbCZDH<7c^hv+Z0Ucf0{w >zSzi^qKuUHD9Dgp0EAGg@@$zr32dQx>N=ws`MESEsmzgT2&L;?MSTo&ky&!-JR3g~1 >zPGTt515X)wr+Bx(G9lWd;@Y3^Vl}50Wb&6-Tiy;HPS0drF`rC}qYq22K4)G#AoD0X >zYw$E+Bz@Zr^50MAwu@$?%f9$r4WHH?*2|67&FXFhXBrVFGmg)6?h3^-1?t;UzH0*I >zNVf9wQLNLnG2@q>6CGm>&y|lC`iCFfYd}9i%+xkl^5oBJ?<;aneCfcHqJh7Yl5uLS >z9Fx-(kMdcNyZejXh22N{mCw_rX1O!cOE&3>e(ZH81PR95wQC37En4O{w;{3q9n1<A >zPC{;HRD3#A!@Lk)+k!~onQ0|-U%#uGd$&L?ZhNC&R)V(mb`NhUqrYysoMQ;Z)sq!y >zW_WwV!+jO*nGT8-Hx_JVmFK^=>t&;p)D%&Z%Nw$gSPa!nz8Slh7=ko2am)XARwOWw >zpsz0~K!s{(dM$NB=(A=kkp>T(*yU6<_dwIx>cH4+LWl282hXa6-EUq>R3t?G2623< >z*RwTN%-fgBmD{fu*ejNn)1@KG?Sg<bw3hQ~jCP9_dLp#J9Fi#nX3wGv<cLwQ;8x0` >zA<%pA%E0S;<5FJhw8e#?n&IA5g19Fv!v7YC%Gxqd<x1=+hht1t>*8z3hYtkQJQjB6 >zQ|x>wA=o$=O)+nLmgTXW3<g>_6diA;b4EY{*i<HxX2Q~PA|R-tJ=V1~4KO3h7H~CG >ztNFL#J=a@4Q5K7Ogvj-+3N_IJUjc}x34}a7@bDE3!)Kj4s7ME<v)`yP${V~G_J@6l >zp{&i)CGxx1)X`lnwc}#g;g<(rA1#7Ez8@J}tuMD3bB{Wifbe~LWT0zYNjgb_qn|+G >z2TCDZw1rV|wPx@~-H8<4^MGxfR0aLq+_k+{JT<mckxWLsw*J%G%YH0>*R%6dO2EMg >z@6g?M3rpbnfB@hOdUeb9<OD{Zt&T^7p>6=~I?OIA3@BWAGmTwiQ{x5Cqq<8c10L!P >zd@Qk^BseTX%$Q7^s}5n%HB|)gKx}H$d8Sb$bBnq9-AglT2dGR2(+I;_fL|R4p$odJ >zllfb0NqI)7=^z~qAm1V{(PkpxXsQ#4*NH9yYZ`Vf@)?#ueGgtCmGGY|9U#v|hRdg- >zQ%0#cGIfXCd{Y)JB~qykO;KPvHu|5Ck&(Hn%DF~cct@}j+87xhs2ew;fLm5#2+mb| >z8{9e*YI(u|gt|{x1G+U=DA3y)9s2w7@cvQ($ZJIA)x$e~5_3L<r=v~@?aZ+642@!3 >z&nTpp8p^rR@IEsq`uhzfD&i>KFV~ASci8W}jF&VeJoPDUy(BB>ExJpck;%;!`0AAo >zAcHgcnT8%OX&UW_n|%{2B|<6Wp2MMGvd5`T2KKv;ltt_~H+w00x6+SlAD`{K4!9zx >z*1?EpQ%Lwiik){3n{-+YNrT;fH_niD_Ng9|58@m8RsKFVF!6pk@qxa{BH-&8tsim0 >zdAQ(GyC^9ane7_KW*#^vMIoeQdpJqmPp%%px3GIftbwESu#+vPyI*YTuJ6+4`z{s? >zpkv~0x4c_PFH`-tqafw5)>4AuQ78SkZ!$8}INLK;Egr;2tS18hEO5=t;QDmZ-qu?I >zG+=DN`nR72Xto{{bJp||`k}-2G;5#xg8E~xgz22)^_Z;=K|4@(E&5J)SY2of=olcw >z5)@L)_Ntcm!*5nEy0M9v0`S33;pO4T<mv%0Rx6?c2H~TA%zOO^T2$@D<Cut3{ae}| >zAT@Uzc>N;>4(Z+<j5j2DQ*r;U|6a;YfP1jST$I3mSn3aNn!?<=B-XkzG?hQH;@bu% >zmFYDDgbC%Wt{6LBrs%88L}deF9pse}dmIp4lmp@Tir9q)JKESa=h>19p_0>u#e-vE >zXCU(6gAvu~I7Cw(xd%0e59MNLw^U37ZDbsBrj%eDCexw8a3G`nTcXVNL6{B7Hj@i& >zbVB{;ApEtHk76q08DJ48dSxd$C(;$K6=FpU<~l9pVoT9arW^Vu{%Bcn4`eIpkOVC| >z$)AKYG_`ypM{0@BUb3^9lqi_c?ONH|4UJMJWDowMVjacycX7}9g={O7swOB+{;+?; >zjBo!9?+nd)ie#x5IbFW-zBOo0c4q@9wGVt5;pNt`=-~Zgcw#*`m($6ibxtZ`H=e=} >zF#GZ~5$%AUn};8U#tRem0J(JTR}<qii}wxmUzVwVIg2$uE2;GN{hhT&GE1i;_fi(_ >z9KKXP)ds1Q)XnUhr?uXO-HbKE%5f%+-C>d4vR(dgK2ML~lZsPhayJ2h1%sD4FVst| >zKF)+@`iNzLRjg4=K8@**0=5cE>%?FDc({I^+g9USk<8$&^qD~@%W0i4b|yMG*p4`N >zh}I!ltTRI8Ex$+@V{02Br%xq#O?UlhO{r8WsaZnZCZq0MK9%AXU%MDLT;3=0A9(BV >z9VxxxJd7jo$hw3q;3o?yBLmA=azBUrd9>-<_ANs0n3?-Ic*6&ytb@H~?0E(*d>T5n >z-HiH2jsDf6uWhID%#n>SzOqrFCPDfUcu5QPd?<(=w6pv1BE#nsxS{n!UnC9qAha1< >z;3cpZ9A-e$+Y)%b;w@!!YRA9p%Kf9IHGGg^{+p`mh;q8i7}&e@V3EQaMsItEMS&=X >plT@$;k0WcB_jb;cn%_Idz4HO$QU*abf4}+wi?e96N>fbq{{i|W0@(ln > >literal 0 >HcmV?d00001 > >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/images/ui-icons_454545_256x240.png b/koha-tmpl/opac-tmpl/prog/en/lib/jquery/images/ui-icons_454545_256x240.png >new file mode 100644 >index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105 >GIT binary patch >literal 4369 >zcmd^?`8O2)_s3^p#%>t<I$5%B*(%$RifAlJDl()+*_W)tj4atJl`V!4ku}Mhk*o=k >zjAh1XB8{;#7~8k^`}6($6`#j>oqJ#RmwV2==ic*rz7lOw=eaq=H~;_ux21)-Jpcgw >zdj+hrf&W^f<%Qk9Zpqf#;jH;N^Z%VA?R|9mZ{esQd(<U>2<!w4n{E5UY;_q2Kjdw+ >z82?u;grSg`#RaKr$2IL$<8%^mo%i~NdQO^4v^7Omye~<8Q~6Hu057+~0Rg2Kxj!$g >z_L|8%XY3R8<nG-Oivs|FH_p=B)FJfcl1r-lR0AKR&!T)T_NiKgC;gh$={p-wz3z|u >zROYC?84a==-y$FRL$ECVCJ4mYI=QJG4=ZDk+_JG$hXLT(^ZwpmB3Qtdel0HV6@VBB >z`QccNy?aa`3wSB4C03J{1$_2{CdQ&kNo`e#GA|Uwc^|vvdo*2c<;VMsMZj6wesHJ& >zfn8A-hdn==tj|{1&XEIC%H&dZG>F=?y+!`XZ5CR?ue=UdHIfUDFM*m15I;g=VN2jw >zQW9?wOhDI#+P0|`@JQoC3!pu=AzGMtYB>V&?8(2>_B5_p`1Sb1t{^|J%bZYv09RS? >zQ*dcs7}$)taJ@vX0E<96P{ur)Eygr{&ALyNoMP%_94m}=qFVT)&CeG1DBBMLUSKP^ >zp%%Q3$MEtKll)X*+$)3O_3x`4%cHY0uhy7U;5x^Ir}X1)mv&B%|A)@A$a>f}tP{5X >z9-gkti`YyT+hk9)cZW7fAQhjT%$XLLI^&VR=qev36;`WGBOP!^&(?!sK6jSH0Dnz4 >zoEMMNu}y&n=rd-GWI?rGBI8!GD*NJ$k&e5-6+~-9F^6tV<=5`FcY~t{iqRcncEU+F >zkT~jww!oy(@~b~WGI8!lzjURX&IpJjFGxShOKUunP+rW$I{c|x0qM6!Gxf6n(;$D> >z+QYi<x}98akg5UfU4?yb%FQ<_lxiHnYmxajFXIG|a~w7(HNLUz{)0YtmeTE#r#~Mb >zEJ4?=`ylB=dthr}w$rA7r8hX4l&lC$d_P-w4$+T%W>ULqq)Fy4VDk&Mev)NyM@nvF >z7O6M*A$C)kBi0HGMT_+xfQ^USTM)>*h_Rx%eSRxA%n|FuC&=F=<MvvnBAs(r9_AGz >zj#LLeNR-pStzN#d`2)svUKrYY8VHp|=b;OpBCx?RZykcH-tb9~qbL$x$(`2<NV~cc >z4z2Bp@;~m=w?YY3`1HQse<0qUrn@*pl<9U81gTtZ)sci`){#ZC_;MW`&Pf|5tFMu) >zNntUAcOEu%z*Jn}7mF2zz<XZ9AJ69V*u*k%90)E)xjhFhGpDUB;8URcE48FZ6C~pM >z?Ts<B8K(dWLtX(n(qsy9ZnmtSZMvX}iN~6m-JIQUhB$Jp^#`POloqkwRUB~%vh1bb >zC>Pz}E5uCqbcy;7j=%Qh`glqEA-jx0(a<)uKO5Fe|JLD-ndZ-vnW<ri@n%jaMYzj7 >zX?raMEa{g1Nj)C|3n6_>`G=O&^%pa}Ah(2<WOo_zsuE*m)B)+26L-$_R)8Mt!h_+m >zGSDo8r$fejfn53aqFM*uLw|#&_iQ*6TU{OdrA7}lT4KP`OOMm29%p3GQ($Ogs{j^T >z=g$nG8dsLaiNzbiDO&OwQ#OK3hnS0Xl?&>%m?oANs{lJ`?RhrZ8n!`Q97TKw{YAw9 >zD)=M{mD(~_jj`LTd%q6Veum)Cnd!7lw}(5h%ub<pmB27LD)tw!KS(lRCsSz}_0~Q5 >z++Vs6%x?XRy|>Hcg^2O`prn%u9es3C#&%TsnmSD3%3Ik^Yd@6-d%(I7kqT(B@dVX2 >zIidXgd>qY<v*DpOyVTegj5UJcYxamc`M9CL<}>T-oTZ=1sGI7^*_E9Q)1F2mooE0R >zXopPnh^c<h&G9wfvaCzpvSP8>i@+wz2ZDjo&Owyxh6t90Gt!<xg*qpB3A;LdY7lS$ >z0mzk>u0miLxc!bue^LvHF?)<XV}=kJ{RX*cfn)a+D2~O8Y=!~2fS9cKDPuz4*MQLC >zwM5dvXSiQv_>O@Yf!dQUXfW$u8(f_n07^N)-vpIe;TrHv5uKm{h_v`-IN^zwWc>Lk >ziGsSr89sDcdOR_wa~DjrqV&Nd*$18(vohPJ3hSzE<Osy0Rr*F0h@-*OS1G9oRHEq@ >z9?sE*0Z4d4>JPF2d!u}415<NC)5PBXwD(D$(;YW&^GurZBLnrDJNQ>wrSMtS(zNa7 >zbO0G4ajgKNp{`D7DO<(T?w<Vad&plCU;-58p5*QlLG@5irL1Y2E%1+sNBO!E$v_1( >zfer8z2=|SS#V-5VsAYZOJ`HMwI-D0;7GM{(mNwYz(HBeYA-SOGlhSZdjoDM|cX{lW >zT;rN$<q#H!`nF}iixL3*8!1g*3lc;eb3BOa_4<e9!5dnSekj=ZZv=o92q$bSz803h >z7E<{fE}<G^c|}1X@|J|p_rrh3+^FZ>owarQ0dIKLb<}#prQM)ytB73YNTPQgX^xoT >zm>;yKSJ*c@QfD8HW`6&+mowOaA|A&~G0fO6&xwj;E3O9^Zu<A)9K!;JSp!U!mD@?g >zY8W{D4p?v0TsF6soi+1C?#8#Pwz=pk`tnlA?1Px0KY`fa15t3ryzsq?UgTTtk-?2@ >z0|NVY?NV-W%9wl=2mAnc9T>~ZXts~;-d%FyyeXrijORi<_S(dw_5@h&-fTY?#FJo% >zQZZ1&ED%$if+n8JVM{s-ZoK@P>p@z4s`AoI6hYxE!Ie_Y)cpjZjc8@~uNMYVfy#J$ >z)+sdEX7DK^{}kUAST<B=OhV@qPQ3Qif^5MOYwO#g!x>8U6^p6#c>0Lc>T~9`0}`*2 >zizaU)TFS4(u;BenUWZr?s{D)Z)rc9L5&gUvz3iSQaF#J)D)Ts{YgagdDcI1S`dtes >zPqb4|h-RIkjhnpmn(Q2Je6Di5C?MkCUL)!WoKn|P#al41v#-Q8`K1$Gh64UhPQj|T >zaZb%tJ}O{A?Cvl26!jeKS3OUkp5@8RDBYwh`Loxb5W<^m*R37+v}#*m-G{{ocF-#r >z7!k3ZS^4Qu9sNRNZ3`laW2TqV{rs<L?cD;oy6=sBSqa|O-#xsgg8I7UdX6C+-#}8N >znd2Pb5BF7hD4k?$9t_ypIzM1<*V|S%xjC{nk1uo~sRXK(ax-o(DHLID>R#~gtVp6C >zL0?}~gbLTv^jqtPQD@Cpq6{B6v&*Y)?tx}<G=OnA_)fo_PTo~X``>)z=qQNB4Z_59 >zpI2L)xQ`!|J8wWgs82jSw_8(;#}y7~Y^&hY9P1G)@`CGtIi*tZ%-%&;$PuG(!M%)E >zQ?T#imBH8dCZxUBX^RWPwIh9LcnL3#$befQDr@UJl{=}o0){qIt52vU9X=3L_gvVW >zPqp_YhhpM6XiE7Lvn-G0Wzo>0;g|$_-7|ucz~*w%bW@hr6M?~v9dT}L=>UotTj13& >z?Uvt0_uOvzMq4iG<D=HMD%Hgb{RAOirV!H1;KNrOXnvc#AtgF6gZ)OeasJT7@IUOs >z3>6)gZqeU;W=<aJX`L6t55GM4`e+gS@%`w~YD0zXxJUHKM7ZDEBSSrtD&k2Z4D|#G >zJ5UbYqAiR`sJDPW>P@EVod;}Vr7P*@=C19v;iz$4N+c5ewauTtKK5e;yIx(FQUec0 >z`G)VlTUY|m2L=KusMRgMlapu#wt8MohK3=y`!J`tD6nYd%?xIZO`Q)skL)R%3Vf(P >z__5Sx3h%fKF=sNdZo2p(w=_|}1M%ri7fO?8))sU1ySG;M4p4;zrr}4l0lzvA!WQ&a >zrwX>%lJkv`Gr_u=K>kHOg6(AB(R3FOryElY)-vi|<TomX`W?JNDC0g^IYOR`j#Ny? >zq>fRsB<c>S<)$1;TC_?BnyScjY6>_ZD=T|bjcbjz@D6V+yfHd4SU+J*2Dh%n;$5ou >zHh6R=)$>IH@%5js2KH#JkfFCVI}P>~U;|}>kk|06tA}^~B;|gJ$UvSF-l4GX43DAR >z&M2mp8OgiTaK4li0|Q2qmGNYsm+Qq^JM8yfCP<m#pZb=yU6K>>5!<CwWb^U_zj|i? >zNZ>31rjh4Mnq~+5X8+_$sc<T(_i%WG<aw%#f%)z$Z5cPg!(K+(t@5WjB;>fP1Fp!c >zcQO*#6cfJ?<K|t$r<_+q(>ZRxn_$Se_|}Xo1oIF7s(7CllypCW@W8-y5%Bel_K*0G >zd~8UWeYCWz>~^hF3ond|tQcClJ(8^9FW&&?U)a4O-pE;Y*u|FHGax>F*Kg_beOF5c >z&?#xRN5Q?ckEwCnNr-${XC=w-te5%QH(6O~yxke=R!_ns))PU07Pu)CY`<>$+XicZ >zCI=g^;q7NZnw=-vf;HoWLD+}`&Bph>kiqyX5jxjI1A41d$R3nahq@CHULV#9ItIwJ >z0)^JGy{hB;@SD|}Zel8~2z;<pba^ByrDo8Z)taD)hWlz9^I1QF7T0+5IwfJ%{+6}} >zNXy#>UjN96MR@dt;EV`9RP4X&zn8ib=n*107cICSp7z6srZ~4Qg|Vp$OB0By{I<bG >zWqMP99KyM)D<)2t$p)&F=o~<tqk;;2j}wB8cElfF5x>xAPaD7HGFw_HTza~wWN1A6 >z3`7BZFse2a4{y#V^&;nRVcZOz*2>A?jm$%?)KawLR0cEz24qxxOOo9_2)9MrWpSg7 >zPiPz+M7(zPRZ3$#11ti?uI!}bM!Dg%L#+uR+^2<I?Z^fxbR)l{AFT@>L2RX+QlMpL >zg_DrR=GIT7C~b+^OZK)?l7*9c-78zWVbLo1oS}bItdscuF80}guwA8c^(47DfaBjV >z^V@&JJHxYHqS+e7&X;ezZwsE2+t~n0?*m^(db@WnI{LgAnOqOa<8pRvo0E>*O&~J_ >z&A)t2LOG)5=3$3n2_gi2Kpvgv)#L<a@xGzK%W{n`XE7#crIi1^zq2+7X4y>CUh2Y~ >z!<QPT+96d^dRhJRw6@zEH{;AP@?1&dcUa`M?3O>A&(~-8reT$sJk0=L;m~ES3k}k% >zkF%gzzT(+nRU0IeUvuW8pq=8<I^mZ94rY+=zSZ<rG%I8)gE9nVIjuX+&P1hz*c0Xs >zQMyFSbw-$i)fY(<OkES?^r=MeneHELsa49QwM)p`B;>uzr&7HW>K5ZiD*8qL17AI^ >zGqo>*mvIChU6+&t{A3|!W?~pi9_O$>k2d|<zeUO)Gxs<LYy4oGeX!SpInTgG%s{8N >zTaf>#(Z721wcT{S1)_<AzkE!%S%`iFUee}xJ{-&r+S&bhk>UFZ+}QS^KZ*u?5Y~bz >z^cLI;2{$C_ZwWqM@sYMYwG+^N<^Ivq8ZOwV;7xT+WCh)I9PHC}ut;VNr?<buAVK8A >pDJs~K*NL^;XFK;v?e86vzWG22X~SUKzh8ZT<yn+@l^Htb{{Z&^Au9j? > >literal 0 >HcmV?d00001 > >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.css b/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.css >index e66faf0..234b987 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.css >+++ b/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.css >@@ -56,26 +56,26 @@ > .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } > .ui-widget .ui-widget { font-size: 1em; } > .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } >-.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } >+.ui-widget-content { border: 1px solid #B9D8D9; background: #ffffff; color: #222222; } > .ui-widget-content a { color: #222222; } >-.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } >+.ui-widget-header { border: 1px solid #B9D8D9; background: #E6F0F2 none; color: #222222; font-weight: bold; } > .ui-widget-header a { color: #222222; } > > /* Interaction states > ----------------------------------*/ >-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } >+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B9D8D9; background: #F4F8F9 none; font-weight: normal; color: #555555; } > .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } >-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } >+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #B9D8D9; background: #E6F0F2 none; font-weight: normal; color: #212121; } > .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } >-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } >+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff none; font-weight: normal; color: #212121; } > .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } > .ui-widget :active { outline: none; } > > /* Interaction Cues > ----------------------------------*/ >-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } >+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee; color: #363636; } > .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } >-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } >+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec; color: #cd0a0a; } > .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } > .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } > .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } >@@ -293,7 +293,14 @@ > * > * http://docs.jquery.com/UI/Autocomplete#theming > */ >-.ui-autocomplete { position: absolute; cursor: default; } >+.ui-autocomplete { position: absolute; cursor: default; -webkit-box-shadow: 2px 2px 2px rgba(0,0,0,.3); -moz-box-shadow: 2px 2px 2px rgba(0,0,0,.3); box-shadow: 2px 2px 2px rgba(0,0,0,.3); } >+ >+.ui-autocomplete.ui-widget-content .ui-state-hover { border: 1px solid #B9D8D9; background: #E6F0F2 none; font-weight: normal; color: #212121; >+} >+ >+.ui-autocomplete-loading { >+ background: #FFF url("../../img/loading-small.gif") right center no-repeat; >+} > > /* workarounds */ > * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ >@@ -314,6 +321,9 @@ > display:block; > float: left; > } >+.ui-menu li { >+ list-style:none; >+} > .ui-menu .ui-menu { > margin-top: -3px; > } >@@ -355,3 +365,71 @@ > .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ > .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } > .ui-tabs .ui-tabs-hide { display: none !important; } >+/*! >+ * jQuery UI Datepicker 1.8.20 >+ * >+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) >+ * Dual licensed under the MIT or GPL Version 2 licenses. >+ * http://jquery.org/license >+ * >+ * http://docs.jquery.com/UI/Datepicker#theming >+ */ >+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } >+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } >+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } >+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } >+.ui-datepicker .ui-datepicker-prev { left:2px; } >+.ui-datepicker .ui-datepicker-next { right:2px; } >+.ui-datepicker .ui-datepicker-prev-hover { left:1px; } >+.ui-datepicker .ui-datepicker-next-hover { right:1px; } >+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } >+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } >+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } >+.ui-datepicker select.ui-datepicker-month-year {width: 100%;} >+.ui-datepicker select.ui-datepicker-month, >+.ui-datepicker select.ui-datepicker-year { width: 49%;} >+.ui-datepicker table {width: 100%; font-size: .9em; border : 0; border-collapse: collapse; margin:0 0 .4em; } >+.ui-datepicker th { background : transparent none; padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } >+.ui-datepicker td { border: 0; padding: 1px; } >+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } >+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } >+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } >+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } >+ >+/* with multiple calendars */ >+.ui-datepicker.ui-datepicker-multi { width:auto; } >+.ui-datepicker-multi .ui-datepicker-group { float:left; } >+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } >+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } >+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } >+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } >+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } >+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } >+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } >+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } >+ >+/* RTL support */ >+.ui-datepicker-rtl { direction: rtl; } >+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } >+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } >+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } >+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } >+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } >+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } >+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } >+.ui-datepicker-rtl .ui-datepicker-group { float:right; } >+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } >+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } >+ >+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ >+.ui-datepicker-cover { >+ display: none; /*sorry for IE5*/ >+ display/**/: block; /*sorry for IE5*/ >+ position: absolute; /*must have*/ >+ z-index: -1; /*must have*/ >+ filter: mask(); /*must have*/ >+ top: -4px; /*must have*/ >+ left: -4px; /*must have*/ >+ width: 200px; /*must have*/ >+ height: 200px; /*must have*/ >+} >\ No newline at end of file >diff --git a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.js b/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.js >index 789014a..6996eae 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.js >+++ b/koha-tmpl/opac-tmpl/prog/en/lib/jquery/jquery-ui.js >@@ -1,25 +1,29 @@ >-/*! jQuery UI - v1.8.20 - 2012-04-30 >+/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.core.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.20",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}})})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.21",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}})})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.widget.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.mouse.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent"))return a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(b){if(c)return;this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted)return b.preventDefault(),!0}return!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0,!0},_mouseMove:function(b){return!a.browser.msie||document.documentMode>=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent"))return a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(b){if(c)return;this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted)return b.preventDefault(),!0}return!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0,!0},_mouseMove:function(b){return!a.browser.msie||document.documentMode>=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.position.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?a.isFunction(b)?this.each(function(c){a(this).offset(b.call(this,c,a(this).offset()))}):this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.autocomplete.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.isMultiLine=this.element.is("textarea"),this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(b.options.disabled||b.element.propAttr("readOnly"))return;d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)===!1)return;return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this._response())},_response:function(){var a=this,b=++c;return function(d){b===c&&a.__response(d),a.pending--,a.pending||a.element.removeClass("ui-autocomplete-loading")}},__response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close()},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){return b.length&&b[0].label&&b[0].value?b:a.map(b,function(b){return typeof b=="string"?{label:b,value:b}:a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)},widget:function(){return this.menu.element},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(!a(c.target).closest(".ui-menu-item a").length)return;c.preventDefault(),b.select(c)}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){if(!this.active)return;this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active){this.activate(c,this.element.children(b));return}var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:first")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 >+(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.isMultiLine=this.element.is("textarea"),this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(b.options.disabled||b.element.propAttr("readOnly"))return;d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)===!1)return;return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this._response())},_response:function(){var a=this,b=++c;return function(d){b===c&&a.__response(d),a.pending--,a.pending||a.element.removeClass("ui-autocomplete-loading")}},__response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close()},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){return b.length&&b[0].label&&b[0].value?b:a.map(b,function(b){return typeof b=="string"?{label:b,value:b}:a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)},widget:function(){return this.menu.element},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(!a(c.target).closest(".ui-menu-item a").length)return;c.preventDefault(),b.select(c)}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){if(!this.active)return;this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active){this.activate(c,this.element.children(b));return}var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:first")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 > * https://github.com/jquery/jquery-ui > * Includes: jquery.ui.tabs.js > * Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >-(function(a,b){function e(){return++c}function f(){return++d}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.20"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){e()}:function(a){a.clientX&&c.rotate(null)});return a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate),this}})})(jQuery);; >\ No newline at end of file >+(function(a,b){function e(){return++c}function f(){return++d}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.21"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){e()}:function(a){a.clientX&&c.rotate(null)});return a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate),this}})})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 >+* https://github.com/jquery/jquery-ui >+* Includes: jquery.ui.datepicker.js >+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ >+(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);if(!c.length)return;c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);if($.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])||!d.length)return;d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover")})}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}$.extend($.ui,{datepicker:{version:"1.8.21"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);if(c.hasClass(this.markerClassName))return;this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a)},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$('<span class="'+this._appendClass+'">'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('<button type="button"></button>').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]),!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);if(c.hasClass(this.markerClassName))return;c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block")},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+g+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f),this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);return c&&!c.inline&&this._setDateFromField(c,b),c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(d){$.datepicker.log(d)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if($.datepicker._isDisabledDatepicker(a)||$.datepicker._lastInput==a)return;var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){return e|=$(this).css("position")=="fixed",!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();return b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0),b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!b||a&&b!=$.data(a,PROP_NAME))return;if(this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=function(){$.datepicker._tidyDialog(b)};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,e):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,e),c||e(),this._datepickerShowing=!1;var f=this._get(b,"onClose");f&&f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!$.datepicker._curInst)return;var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);if(this._isDisabledDatepicker(d[0]))return;this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e)},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if($(d).hasClass(this._unselectableClass)||this._isDisabledDatepicker(e[0]))return;var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;return c&&s++,c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;return r+=f[0].length,parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase())return f=c[0],r+=d.length,!1});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="'"&&!n("'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"'":n("'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;do{var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}while(!0)}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;return c&&m++,c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="'"&&!h("'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"'":h("'")?k+="'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;return c&&e++,c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="'"&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()==a.lastVal)return;var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;return b.setDate(b.getDate()+a),b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());return f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0)),this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){return a?(a.setHours(a.getHours()>12?a.getHours()+2:0),a):null},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', -"+i+", 'M');\""+' title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>":e?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', +"+i+", 'M');\""+' title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":e?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>",x=d?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?w:"")+(this._isInRange(a,v)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+a.id+"');\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+='<div class="ui-datepicker-group';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+P+'">'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var R=z?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+A[T]+'">'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+='<td class="'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!bb||G)&&ba[2]?' title="'+ba[2]+'"':"")+(bc?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?" ":bc?'<span class="ui-state-default">'+Y.getDate()+"</span>":'<a class="ui-state-default'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+'" href="#">'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),M+=Q}K+=M}return K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),a._keyEvent=!1,K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='<div class="ui-datepicker-title">',m="";if(f||!i)m+='<span class="ui-datepicker-month">'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?" ":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+='<span class="ui-datepicker-year">'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}return l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?" ":"")+m),l+="</div>",l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;return e=d&&e>d?d:e,e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));return b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth())),this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");return b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10),{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);return typeof a!="string"||a!="isDisabled"&&a!="getDate"&&a!="widget"?a=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b)):this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)}):$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.21",window["DP_jQuery_"+dpuuid]=$})(jQuery);; >\ No newline at end of file >diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt >index 050020b..cdd201b 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt >+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt >@@ -1,6 +1,5 @@ > [% INCLUDE 'doc-head-open.inc' %][% LibraryNameTitle or "Koha online" %] catalog › Placing a hold > [% INCLUDE 'doc-head-close.inc' %] >-[% INCLUDE 'calendar.inc' %] > <script type="text/javascript"> > // <![CDATA[ > var MSG_NO_COPY_SELECTED = _("Expecting a specific copy selection."); >@@ -318,40 +317,10 @@ > [% END %] > [% IF ( reserve_in_future ) %] > <td> >- <input name="reserve_date_[% bibitemloo.biblionumber %]" id="reserve_date_[% bibitemloo.biblionumber %]" size="10"> >+ <input name="reserve_date_[% bibitemloo.biblionumber %]" id="from" size="10" class="datepickerfrom"/> > <script language="JavaScript" type="text/javascript"> > //<![CDATA[ > $("#reserve_date_[% bibitemloo.biblionumber %]").attr( 'readonly', 'readonly' ); >- >- var cal_img = document.createElement('img'); >- cal_img.src = "[% themelang %]/lib/calendar/cal.gif"; >- cal_img.alt = "Show Calendar"; >- cal_img.border = "0"; >- cal_img.id = "CalendarReserveDate[% bibitemloo.biblionumber %]"; >- cal_img.style.cursor = "pointer"; >- document.getElementById("reserve_date_[% bibitemloo.biblionumber %]").parentNode.appendChild( cal_img ); >- >- function validate[% bibitemloo.biblionumber %](date) { >- var today = new Date(); >- if ( (date > today) || >- ( date.getDate() == today.getDate() && >- date.getMonth() == today.getMonth() && >- date.getFullYear() == today.getFullYear() ) ) { >- return false; >- } else { >- return true; >- } >- }; >- Calendar.setup( >- { >- inputField : "reserve_date_[% bibitemloo.biblionumber %]", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "CalendarReserveDate[% bibitemloo.biblionumber %]", >- disableFunc : validate[% bibitemloo.biblionumber %], >- dateStatusFunc : validate[% bibitemloo.biblionumber %], >- firstDay : [% CalendarFirstDayOfWeek %] >- } >- ); > //]]> > </script> > <p style="margin:.3em 2em;"> >@@ -360,33 +329,7 @@ > > [% END %] > [% IF ( bibitemloo.holdable ) %]<td> >- <input name="expiration_date_[% bibitemloo.biblionumber %]" id="expiration_date_[% bibitemloo.biblionumber %]" size="10" readonly="readonly" /> >- <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="CalendarExpirationDate_[% bibitemloo.biblionumber %]" style="cursor: pointer;" /> >- <script language="JavaScript" type="text/javascript"> >- //<![CDATA[ >- function validate1(date) { >- var today = new Date(); >- if ( (date > today) || >- ( date.getDate() == today.getDate() && >- date.getMonth() == today.getMonth() && >- date.getFullYear() == today.getFullYear() ) ) { >- return false; >- } else { >- return true; >- } >- }; >- Calendar.setup( >- { >- inputField : "expiration_date_[% bibitemloo.biblionumber %]", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "CalendarExpirationDate_[% bibitemloo.biblionumber %]", >- disableFunc : validate1, >- dateStatusFunc : validate1, >- firstDay : [% CalendarFirstDayOfWeek %] >- } >- ); >- //]]> >- </script> >+ <input name="expiration_date_[% bibitemloo.biblionumber %]" id="to" size="10" readonly="readonly" class="datepickerto" /> > <p style="margin:.3em 2em;"> > <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('expiration_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear date</a></p> > </td>[% END %] >diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt >index 0b8930f..6df6b74 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt >+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt >@@ -3,7 +3,6 @@ > [% INCLUDE 'doc-head-open.inc' %] > [% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog › Your library home > [% INCLUDE 'doc-head-close.inc' %] >-[% INCLUDE 'calendar.inc' %] > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.metadata.min.js"></script> > <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script> > <script type="text/JavaScript"> >@@ -46,6 +45,7 @@ $.tablesorter.addParser({ > $("#renewall").submit(); > }); > $("#checkoutst caption").append("<div id=\"renewcontrols\"><a id=\"renewselected_link\" href=\"#\">"+_("Renew selected")+"</a> <a id=\"renewall_link\" href=\"#\">"+_("Renew all")+"</a></div>");[% END %] >+ $( "#suspend_until" ).datepicker({ minDate: 1 }); // Require that "until date" be in the future > }); > //]]> > </script> >@@ -428,40 +428,7 @@ $.tablesorter.addParser({ > > [% IF AutoResumeSuspendedHolds %] > <label for="suspend_until"> until </label> >- <input name="suspend_until" id="suspend_until" readonly="readonly" size="10"> >- <script language="JavaScript" type="text/javascript"> >- //<![CDATA[ >- >- var cal_img = document.createElement('img'); >- cal_img.src = "[% themelang %]/lib/calendar/cal.gif"; >- cal_img.alt = "Show Calendar"; >- cal_img.border = "0"; >- cal_img.id = "CalendarSuspendUntil"; >- cal_img.style.cursor = "pointer"; >- document.getElementById("suspend_until").parentNode.appendChild( cal_img ); >- >- function validate(date) { >- var today = new Date(); >- if ( (date > today) || >- ( date.getDate() == today.getDate() && >- date.getMonth() == today.getMonth() && >- date.getFullYear() == today.getFullYear() ) ) { >- return false; >- } else { >- return true; >- } >- }; >- Calendar.setup( >- { >- inputField : "suspend_until", >- ifFormat : "[% DHTMLcalendar_dateformat %]", >- button : "CalendarSuspendUntil", >- disableFunc : validate, >- dateStatusFunc : validate >- } >- ); >- //]]> >- </script> >+ <input name="suspend_until" id="suspend_until" readonly="readonly" size="10" /> > <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('suspend_until').value='';return false;">Clear date</a></p> > [% END %] > </form> >-- >1.7.9.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 8181
:
10259
|
10365
|
10366
|
10371
|
10391