Bug 7747 - Replace YUI autocomplete with jQueryUI
authorOwen Leonard <oleonard@myacpl.org>
Tue, 24 Apr 2012 14:49:15 +0000 (10:49 -0400)
committerPaul Poulain <paul.poulain@biblibre.com>
Thu, 31 May 2012 16:07:55 +0000 (18:07 +0200)
In order to facilitate a more painless process for converting
to jQueryUI I will submit separate patches for various "widgets,"
starting with Autocomplete.

This patch replaces all instances of YUI autocomplete with
a jQueryUI version. The patch includes an up-to-date version
of jQuery and jQueryUI libraries.

The patch also moves some markup in instances where it should
have been removed in favor of a different include.

To test, find the various autocomplete instances and confirm
that they are working:

 - Circulation search header autocomplete
 - Overdues patron attribute authorized value filter (must
   have patron attributes enabled, and a patron attribute
   defined which uses authorized values.
 - Authorities search plugin. Edit a MARC record and use
   an authorities plugin link to do a search for authority
   records.

Incomplete: There is a YUI autocomplete instance in a UNIMARC
plugin (unimarc_field_210c_bis.tt) which I couldn't figure out
how to test, even on a sandbox set up with UNIMARC. I could use
help with a follow-up.

http://bugs.koha-community.org/show_bug.cgi?id=7447
Signed-off-by: Liz Rea <wizzyrea@gmail.com>
Passes all tests outlined, is quite pretty.

Passes t xt

Signed-off-by: Ian Walls <koha.sekjal@gmail.com>
32 files changed:
authorities/ysearch.pl
circ/ypattrodue-attr-search-authvalue.pl
circ/ysearch.pl
koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
koha-tmpl/intranet-tmpl/prog/en/includes/auth-finder-search.inc
koha-tmpl/intranet-tmpl/prog/en/includes/budgets-admin-search.inc
koha-tmpl/intranet-tmpl/prog/en/includes/cat-search.inc
koha-tmpl/intranet-tmpl/prog/en/includes/cities-admin-search.inc
koha-tmpl/intranet-tmpl/prog/en/includes/contracts-admin-search.inc
koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc
koha-tmpl/intranet-tmpl/prog/en/includes/patron-search-box.inc
koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc
koha-tmpl/intranet-tmpl/prog/en/includes/roadtype-admin-search.inc
koha-tmpl/intranet-tmpl/prog/en/includes/suggestions-add-search.inc
koha-tmpl/intranet-tmpl/prog/en/includes/z3950-admin-search.inc
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_flat_75_ffffff_40x100.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_65_ffffff_1x400.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_75_dadada_1x400.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_95_fef1ec_1x400.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_222222_256x240.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_2e83ff_256x240.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_454545_256x240.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_888888_256x240.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_cd0a0a_256x240.png [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.css [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/jquery-ui.js [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt
koha-tmpl/intranet-tmpl/prog/img/loading-small.gif [new file with mode: 0644]

index 56ef8e2..1f7e5ef 100755 (executable)
@@ -3,6 +3,7 @@
 # This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
 
 # Copyright 2011 BibLibre
+# Parts copyright 2012 Athens County Public Libraries
 #
 # This file is part of Koha.
 #
@@ -43,7 +44,7 @@ if ( $auth_status ne "ok" ) {
     exit 0;
 }
 
-    my $searchstr = $query->param('query');
+    my $searchstr = $query->param('term');
     my $searchtype = $query->param('querytype');
     my @value;
     given ($searchtype) {
@@ -62,10 +63,17 @@ if ( $auth_status ne "ok" ) {
     my $startfrom = 0;
 
     my ( $results, $total ) = SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator, \@value, $startfrom * $resultsperpage, $resultsperpage, $authtypecode, $orderby );
+
+print "[";
+my $i = 0;
     foreach (@$results) {
-       my ($value) = $_->{'summary'};
-        # Removes new lines
-        $value =~ s/<br \/>/ /g;
-        $value =~ s/\n//g;
-       print nsb_clean($value) . "\n";
+        if($i > 0){ print ","; }
+        my ($value) = $_->{'summary'};
+            # Removes new lines
+            $value =~ s/<br \/>/ /g;
+            $value =~ s/\n//g;
+            $value = "{\"summary\":\"" . $value . "\"" . "}";
+        print nsb_clean($value) . "\n";
+        $i++;
     }
+print "]";
\ No newline at end of file
index f8d77c5..517c8c0 100755 (executable)
@@ -2,6 +2,7 @@
 
 # This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
 
+# Parts copyright 2012 Athens County Public Libraries
 # This file is part of Koha.
 #
 # Koha is free software; you can redistribute it and/or modify it under the
@@ -25,7 +26,7 @@ use C4::Auth qw/check_cookie_auth/;
 use C4::Debug;
 
 my $input    = new CGI;
-my $query    = $input->param('query');
+my $query    = $input->param('term');
 my $attrcode = $input->path_info || '';
 $attrcode =~ s|^/||;
 
@@ -45,8 +46,14 @@ my $sql = qq(SELECT authorised_value, lib description
                        AND v.lib like ?);
 my $sth = $dbh->prepare($sql);
 $sth->execute( $attrcode, "$query%" );
+
+print "[";
+my $i = 0;
 while ( my $rec = $sth->fetchrow_hashref ) {
     print STDERR ">> attrcode=$attrcode match '$query' ==> $rec->{description} ($rec->{authorised_value})\n" if $debug;
-    print "$rec->{description}\t$rec->{authorised_value}\n";
+    print "{\"description\":\"" . $rec->{description} . "\",\"" .
+    "authorised_value\":\"" . $rec->{authorised_value} . "\"" .
+    "}";
+    $i++;
 }
-
+print "]";
\ No newline at end of file
index beab6a1..8a48c51 100755 (executable)
@@ -3,6 +3,7 @@
 # This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
 
 # Copyright 2007 Tamil s.a.r.l.
+# Parts copyright 2010-2012 Athens County Public Libraries
 #
 # This file is part of Koha.
 #
@@ -32,7 +33,7 @@ use C4::Members;
 use C4::Auth qw/check_cookie_auth/;
 
 my $input   = new CGI;
-my $query   = $input->param('query');
+my $query   = $input->param('term');
 
 binmode STDOUT, ":encoding(UTF-8)";
 print $input->header(-type => 'text/plain', -charset => 'UTF-8');
@@ -42,11 +43,29 @@ if ($auth_status ne "ok") {
     exit 0;
 }
 
-print map $_->{surname} . ", " . $_->{firstname} . "\t" .
-          $_->{cardnumber} . "\t" .
-          $_->{address} . "\t" .
-          $_->{city} . "\t" .
-          $_->{zipcode} . "\t" .
-          $_->{country} .
-          "\n",
-          @{ Search($query, [qw(surname firstname cardnumber)], [10], [qw(surname firstname cardnumber address city zipcode country)]) };
+my $dbh = C4::Context->dbh;
+my $sql = qq(SELECT surname, firstname, cardnumber, address, city, zipcode, country
+             FROM borrowers
+             WHERE surname LIKE ?
+             OR firstname LIKE ?
+             OR cardnumber LIKE ?
+             ORDER BY surname, firstname
+             LIMIT 10);
+my $sth = $dbh->prepare( $sql );
+$sth->execute("$query%", "$query%", "$query%");
+
+print "[";
+my $i = 0;
+while ( my $rec = $sth->fetchrow_hashref ) {
+    if($i > 0){ print ","; }
+    print "{\"surname\":\"" . $rec->{surname} . "\",\"" .
+          "firstname\":\"".$rec->{firstname} . "\",\"" .
+          "cardnumber\":\"".$rec->{cardnumber} . "\",\"" .
+          "address\":\"".$rec->{address} . "\",\"" .
+          "city\":\"".$rec->{city} . "\",\"" .
+          "zipcode\":\"".$rec->{zipcode} . "\",\"" .
+          "country\":\"".$rec->{country} . "\"" .
+          "}";
+    $i++;
+}
+print "]";
\ No newline at end of file
index dcd9540..9db80fd 100644 (file)
@@ -2203,7 +2203,11 @@ div.pager {
        padding : .3em .5em .3em .5em;
        margin : .4em 0;
 }
-div.pager img {
+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; }
+
        vertical-align : middle;
 }
 div.pager img.last {
@@ -2243,3 +2247,19 @@ div#acqui_order_supplierlist > div.supplier > span.action {
 div#acqui_order_supplierlist > div.supplier > div.baskets {
     margin-top: 0.5em;
 }
+
+/* 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-loading {
+    background: #FFF url("../../img/loading-small.gif") right center no-repeat;
+}
index f3752b8..81e410a 100644 (file)
@@ -1,64 +1,90 @@
 <script type="text/javascript">
 //<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                "<\/div>"];
-            return (aMarkup.join(""));
-        };
 
+$(document).ready(function(){
     // marclist
-        this.marclistDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/authorities/ysearch.pl", ["\n", "\t"]);
-        this.marclistDS.scriptQueryAppend = "op=do_search&type=intranet&and_or=and&operator=contains&orderby=HeadingAsc&querytype=marclist";
-        this.marclistDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.marclistDS.maxCacheEntries = 60;
-        this.marclistDS.queryMatchSubset = false;
-
-        var myInput = document.getElementById('value_any');
-        var myContainer = document.getElementById('yvaluecontainermarclist');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.marclistDS);
-        this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-        this.oAutoComp.maxResultsDisplayed = 1000;
-
-
+    $( "#value_any" ).autocomplete({
+        source: function(request, response) {
+            $.ajax({
+                url: "/cgi-bin/koha/authorities/ysearch.pl",
+                dataType: "json",
+                data: {
+                    term: request.term,
+                    op: "do_search",
+                    type: "intranet",
+                    and_or: "and",
+                    operator: "contains",
+                    orderby: "HeadingAsc",
+                    querytype: "marclist"
+                },
+                success: function(data) {
+                    response( $.map( data, function( item ) {
+                            return {
+                                label: item.summary,
+                                value: item.summary
+                            }
+                        }));
+                }
+            });
+        },
+        minLength: 3,
+    });
     // mainentry
-    this.mainentryDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/authorities/ysearch.pl", ["\n", "\t"]);
-        this.mainentryDS.scriptQueryAppend = "op=do_search&type=intranet&and_or=and&operator=contains&orderby=HeadingAsc&querytype=mainentry";
-        this.mainentryDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.mainentryDS.maxCacheEntries = 60;
-        this.mainentryDS.queryMatchSubset = false;
-
-        var myInput = document.getElementById('value_main');
-        var myContainer = document.getElementById('yvaluecontainermainentry');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.mainentryDS);
-        this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-        this.oAutoComp.maxResultsDisplayed = 1000;
-
-
+    $( "#value_main" ).autocomplete({
+        source: function(request, response) {
+            $.ajax({
+                url: "/cgi-bin/koha/authorities/ysearch.pl",
+                dataType: "json",
+                data: {
+                    term: request.term,
+                    op: "do_search",
+                    type: "intranet",
+                    and_or: "and",
+                    operator: "contains",
+                    orderby: "HeadingAsc",
+                    querytype: "mainentry"
+                },
+                success: function(data) {
+                    response( $.map( data, function( item ) {
+                            return {
+                                label: item.summary,
+                                value: item.summary
+                            }
+                        }));
+                }
+            });
+        },
+        minLength: 3,
+    });
     // mainmainentry
-    this.mainentryDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/authorities/ysearch.pl", ["\n", "\t"]);
-        this.mainentryDS.scriptQueryAppend = "op=do_search&type=intranet&and_or=and&operator=contains&orderby=HeadingAsc&querytype=mainmainentry";
-        this.mainentryDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.mainentryDS.maxCacheEntries = 60;
-        this.mainentryDS.queryMatchSubset = false;
-
-        var myInput = document.getElementById('value_mainstr');
-        var myContainer = document.getElementById('yvaluecontainermainmainentry');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.mainentryDS);
-        this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-        this.oAutoComp.maxResultsDisplayed = 1000;
-
-
-}
+    $( "#value_mainstr" ).autocomplete({
+        source: function(request, response) {
+            $.ajax({
+                url: "/cgi-bin/koha/authorities/ysearch.pl",
+                dataType: "json",
+                data: {
+                    term: request.term,
+                    op: "do_search",
+                    type: "intranet",
+                    and_or: "and",
+                    operator: "contains",
+                    orderby: "HeadingAsc",
+                    querytype: "mainmainentry"
+                },
+                success: function(data) {
+                    response( $.map( data, function( item ) {
+                            return {
+                                label: item.summary,
+                                value: item.summary
+                            }
+                        }));
+                }
+            });
+        },
+        minLength: 3,
+    });
 });
+
 //]]>
 </script>
 
index 6f79e71..5cb753a 100644 (file)
@@ -1,49 +1,5 @@
 <div id="header" class="gradient">
 <h1 id="logo"><a href="/cgi-bin/koha/mainpage.pl">[% LibraryName %]</a></h1><!-- Begin Fund Admin Resident Search Box -->
-[% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "</small>",
-                "</div>"];
-            return (aMarkup.join(""));
-        };
-
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-    
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});
- //]]>
- </script>  [% END %][% END %]
 
 <div id="header_search">
     <div id="budgets_search" class="residentsearch">
@@ -66,43 +22,21 @@ YAHOO.util.Event.onContentReady("header_search", function() {
         </form>
     </div>
 
-       [% IF ( CAN_user_circulate ) %]
-       <div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post">
-    [% IF ( CircAutocompl ) %]
-    <div class="autocomplete">
-            <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" class="focus" type="text" />
-                <div id="yborrowercontainer"></div>
-                <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <input name="branch" value="[% branch %]" type="hidden" />
-                <input name="printer" value="" type="hidden" />
-            </div>
-        </div>
-       [% ELSE %]
-            <input id="findborrower" name="findborrower" size="40" class="focus" type="text" />
-            <input name="branch" value="[% branch %]" type="hidden" />
-            <input name="printer" value="" type="hidden" />
-            <input value="Submit" class="submit" type="submit" />
-       [% END %]
-    </form>
-       </div>  
-       [% END %]
-       
-       [% IF ( CAN_user_catalogue ) %]
-       <div id="catalog_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter search keywords:</p>
-               <form action="/cgi-bin/koha/catalogue/search.pl"  method="get" id="cat-search-block">
-                        <input type="text" name="q" id="search-form" size="40" value="" title="Enter the terms you wish to search for." class="form-text" />
-                               <input type="submit" value="Submit"  class="submit" />
-               </form>
-       </div>[% END %]
-                       <ul>
+[% INCLUDE 'patron-search-box.inc' %]
+
+    [% IF ( CAN_user_catalogue ) %]
+    <div id="catalog_search" class="residentsearch" style="display:none;">
+    <p class="tip">Enter search keywords:</p>
+        <form action="/cgi-bin/koha/catalogue/search.pl"  method="get" id="cat-search-block">
+             <input type="text" name="q" id="search-form" size="40" value="" title="Enter the terms you wish to search for." class="form-text" />
+                <input type="submit" value="Submit"  class="submit" />
+        </form>
+    </div>[% END %]
+            <ul>
             <li><a href="/cgi-bin/koha/admin/aqbudgets.pl#budgets_search">Search funds</a></li>
             [% IF ( CAN_user_circulate ) %]<li><a href="/cgi-bin/koha/circ/circulation.pl#circ_search">Check out</a></li>[% END %]
             [% IF ( CAN_user_catalogue ) %]<li><a href="/cgi-bin/koha/catalogue/search.pl#catalog_search">Search the catalog</a></li>[% END %]
-                       </ul>   
+            </ul>
 </div>
 </div>
 <!-- End Suggestions Resident Search Box -->
index 13a24fe..d813d17 100644 (file)
@@ -1,74 +1,9 @@
 <div class="gradient">
 <h1 id="logo"><a href="/cgi-bin/koha/mainpage.pl">[% LibraryName %]</a></h1><!-- Begin Catalogue Resident Search Box -->
-[% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "<\/small>",
-                "<\/div>"];
-            return (aMarkup.join(""));
-        };
-
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-    
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});    
-//]]>
-</script>[% END %][% END %]
 <div id="header_search">
-       [% IF ( CAN_user_circulate ) %]
-       <div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post" autocomplete="off">
-    [% IF ( CircAutocompl ) %]
-    <div class="autocomplete">
-            <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" type="text" />
-                <div id="yborrowercontainer"></div>
-                <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <input name="branch" value="[% branch %]" type="hidden" />
-                <input name="printer" value="" type="hidden" />
-            </div>
-        </div>
-       [% ELSE %]
-            <input id="findborrower" name="findborrower" size="40" type="text" />
-            <input name="branch" value="[% branch %]" type="hidden" />
-            <input name="printer" value="" type="hidden" />
-            <input value="Submit" class="submit" type="submit" />
-       [% END %]
-    </form>
-       </div>
-       [% END %]
-       
+
+[% INCLUDE 'patron-search-box.inc' %]
+
 [% IF ( CAN_user_circulate ) %]
 <div id="checkin_search" class="residentsearch" style="display:none;">
     <p class="tip">Scan a barcode to check in:</p>
index 81a0fbd..78ba751 100644 (file)
@@ -1,49 +1,5 @@
 <div id="header" class="gradient">
 <h1 id="logo"><a href="/cgi-bin/koha/mainpage.pl">[% LibraryName %]</a></h1><!-- Begin Cities Resident Search Box -->
-[% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "<\/small>",
-                "<\/div>"];
-            return (aMarkup.join(""));
-        };
-
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-    
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});    
-//]]>
-</script>[% END %][% END %]
 <div id="header_search">
        <div id="city_search" class="residentsearch">
     <p class="tip">City search:</p>
@@ -52,28 +8,9 @@ YAHOO.util.Event.onContentReady("header_search", function() {
                <input type="submit" name="submit" value="OK" class="submit" />
        </form>
        </div>
-       [% IF ( CAN_user_circulate ) %]
-       <div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post">
-    [% IF ( CircAutocompl ) %]
-    <div class="autocomplete">
-            <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" class="focus" type="text" />
-                <div id="yborrowercontainer"></div>
-                <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <input name="branch" value="[% branch %]" type="hidden" />
-                <input name="printer" value="" type="hidden" />
-            </div>
-        </div>
-       [% ELSE %]
-            <input id="findborrower" name="findborrower" size="40" class="focus" type="text" />
-            <input name="branch" value="[% branch %]" type="hidden" />
-            <input name="printer" value="" type="hidden" />
-            <input value="Submit" class="submit" type="submit" />
-       [% END %]
-    </form>
-       </div>[% END %]
+
+    [% INCLUDE 'patron-search-box.inc' %]
+
        [% IF ( CAN_user_catalogue ) %]
        <div id="catalog_search" class="residentsearch" style="display:none;">
        <p class="tip">Enter search keywords:</p>
index 2e57c11..6207e9d 100644 (file)
@@ -1,49 +1,6 @@
 
 <h1 id="logo"><a href="/cgi-bin/koha/mainpage.pl">[% LibraryName %]</a></h1><!-- Begin Patrons Admin Resident Search Box -->
-[% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "</small>",
-                "</div>"];
-            return (aMarkup.join(""));
-        };
 
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-    
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});    
-//]]>
-</script>[% END %][% END %]
 <div id="header_search">
        <div id="contract_description_search" class="residentsearch">
        <p class="tip">Search by contract name or/and description:</p>
@@ -52,28 +9,9 @@ YAHOO.util.Event.onContentReady("header_search", function() {
                <input type="submit" class="submit" name="search" value="Search" />
        </form> 
        </div>
-       [% IF ( CAN_user_circulate ) %]
-       <div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post">
-    [% IF ( CircAutocompl ) %]
-    <div class="autocomplete">
-            <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" class="focus" type="text" />
-                <div id="yborrowercontainer"></div>
-                <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <input name="branch" value="[% branch %]" type="hidden" />
-                <input name="printer" value="" type="hidden" />
-            </div>
-        </div>
-       [% ELSE %]
-            <input id="findborrower" name="findborrower" size="40" class="focus" type="text" />
-            <input name="branch" value="[% branch %]" type="hidden" />
-            <input name="printer" value="" type="hidden" />
-            <input value="Submit" class="submit" type="submit" />
-       [% END %]
-    </form>
-       </div>  [% END %]
+
+    [% INCLUDE 'patron-search-box.inc' %]
+
        [% IF ( CAN_user_catalogue ) %]
        <div id="catalog_search" class="residentsearch" style="display:none;">
        <p class="tip">Enter search keywords:</p>
index bc551ac..116d2e1 100644 (file)
@@ -1,5 +1,6 @@
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <link rel="shortcut icon" href="[% IF ( IntranetFavicon ) %][% IntranetFavicon %][% ELSE %][% themelang %]/includes/favicon.ico[% END %]" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/jquery/jquery-ui.css" />
 <link rel="stylesheet" type="text/css" href="[% themelang %]/lib/jquery/plugins/ui.tabs.css" />
 <link rel="stylesheet" type="text/css" media="print" href="[% themelang %]/css/print.css" />
 [% IF ( intranetstylesheet ) %]
@@ -10,6 +11,7 @@
 [% IF ( IntranetUserCSS ) %]<style type="text/css">[% IntranetUserCSS %]</style>[% END %]
 <script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/ui.tabs.js"></script>
+<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery-ui.js"></script>
 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.hotkeys.min.js"></script>
 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.cookie.min.js"></script>
 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.highlight-3.js"></script>
index 110434d..6b7e34a 100644 (file)
@@ -1,55 +1,32 @@
 [% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
 //<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "<\/small>",
-                "<\/div>"];
-            return (aMarkup.join(""));
-        };
+$(document).ready(function(){
+    $( "#findborrower" ).autocomplete({
+        source: "/cgi-bin/koha/circ/ysearch.pl",
+        minLength: 3,
+        select: function( event, ui ) {
+            $( "#findborrower" ).val( ui.item.cardnumber );
+            $("#patronsearch").submit();
+            return false;
+        }
+    })
+    .data( "autocomplete" )._renderItem = function( ul, item ) {
+        return $( "<li></li>" )
+        .data( "item.autocomplete", item )
+        .append( "<a>" + item.surname + ", " + item.firstname + " (" + item.cardnumber + ") <small>" + item.address + " " + item.city + " " + item.zipcode + " " + item.country + "</small></a>" )
+        .appendTo( ul );
+    };
 
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-    
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});    
+});
 //]]>
 </script>[% END %]
-       <div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post">
+    <div id="circ_search" class="residentsearch">
+    <p class="tip">Enter patron card number or partial name:</p>
+    <form action="/cgi-bin/koha/circ/circulation.pl" id="patronsearch" method="post">
     [% IF ( CircAutocompl ) %]
     <div class="autocomplete">
             <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" size="40" class="focus" type="text" /> <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <div id="yborrowercontainer"></div>
+                <input autocomplete="off" id="findborrower" name="findborrower" size="40" class="focus" type="text" /> <input id="autocsubmit" type="submit" class="submit" value="Submit" />
                 <input name="branch" value="[% branch %]" type="hidden" />
                 <input name="printer" value="" type="hidden" />
             [% IF ( stickyduedate ) %]
index 8bc7627..a346985 100644 (file)
@@ -1,49 +1,5 @@
 <div class="gradient">
 <h1 id="logo"><a href="/cgi-bin/koha/mainpage.pl">[% LibraryName %]</a></h1><!-- Begin Patrons Resident Search Box -->
-[% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "<\/small>",
-                "<\/div>"];
-            return (aMarkup.join(""));
-        };
-
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});
-//]]>
-</script>[% END %][% END %]
 <div id="header_search">
        <div id="patron_search" class="residentsearch">
        <p class="tip">Enter patron card number or partial name:</p>
@@ -85,28 +41,9 @@ YAHOO.util.Event.onContentReady("header_search", function() {
        [% END %]
 </form>
        </div>
-       [% IF ( CAN_user_circulate ) %]
-       <div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post" autocomplete="off">
-    [% IF ( CircAutocompl ) %]
-    <div class="autocomplete">
-            <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" type="text" />
-                <div id="yborrowercontainer"></div>
-                <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <input name="branch" value="[% branch %]" type="hidden" />
-                <input name="printer" value="" type="hidden" />
-            </div>
-        </div>
-       [% ELSE %]
-            <input id="findborrower" name="findborrower" size="40" type="text" />
-            <input name="branch" value="[% branch %]" type="hidden" />
-            <input name="printer" value="" type="hidden" />
-            <input value="Submit" class="submit" type="submit" />
-       [% END %]
-    </form>
-       </div>[% END %]
+
+    [% INCLUDE 'patron-search-box.inc' %]
+
        [% IF ( CAN_user_catalogue ) %]
        <div id="catalog_search" class="residentsearch" style="display:none;">
        <p class="tip">Enter search keywords:</p>
index 00169dc..46cd4d8 100644 (file)
@@ -1,50 +1,6 @@
 
 <div id="header" class="gradient">
 <h1 id="logo"><a href="/cgi-bin/koha/mainpage.pl">[% LibraryName %]</a></h1><!-- Begin Roads Resident Search Box -->
-[% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "<\/small>",
-                "<\/div>"];
-            return (aMarkup.join(""));
-        };
-
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-    
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});    
-//]]>
-</script>[% END %][% END %]
 <div id="header_search">
      <div id="roadtype_search" class="residentsearch ui-tabs-panel">
         <p class="tip">Road type search:</p>
@@ -53,29 +9,9 @@ YAHOO.util.Event.onContentReady("header_search", function() {
                <input type="submit" name="submit" value="OK" class="submit" />
        </form>
        </div>
-       [% IF ( CAN_user_circulate ) %]
-       <div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post">
-    [% IF ( CircAutocompl ) %]
-    <div class="autocomplete">
-            <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" class="focus" type="text" />
-                <div id="yborrowercontainer"></div>
-                <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <input name="branch" value="[% branch %]" type="hidden" />
-                <input name="printer" value="" type="hidden" />
-            </div>
-        </div>
-       [% ELSE %]
-            <input id="findborrower" name="findborrower" size="40" class="focus" type="text" />
-            <input name="branch" value="[% branch %]" type="hidden" />
-            <input name="printer" value="" type="hidden" />
-            <input value="Submit" class="submit" type="submit" />
-       [% END %]
-    </form>
-       </div>
-       [% END %]
+
+    [% INCLUDE 'patron-search-box.inc' %]
+
        [% IF ( CAN_user_catalogue ) %]
        <div id="catalog_search" class="residentsearch" style="display:none;">
        <p class="tip">Enter search keywords:</p>
index 95552d6..24f0f4f 100644 (file)
@@ -1,49 +1,5 @@
 
 <h1 id="logo"><a href="/cgi-bin/koha/mainpage.pl">[% LibraryName %]</a></h1><!-- Begin Suggestions Resident Search Box -->
-[% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "</small>",
-                "</div>"];
-            return (aMarkup.join(""));
-        };
-
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-    
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});
- //]]>
- </script>  [% END %][% END %]
 <div id="header_search">
        <div id="suggestions_search" class="residentsearch">
     <p class="tip">Suggestions search:</p>
@@ -55,29 +11,9 @@ YAHOO.util.Event.onContentReady("header_search", function() {
     <input type="submit" class="submit" value="Search" />
         </form>
        </div>
-[% IF ( CAN_user_circulate ) %]
-<div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post">
-    [% IF ( CircAutocompl ) %]
-    <div class="autocomplete">
-            <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" class="focus" type="text" />
-                <div id="yborrowercontainer"></div>
-                <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <input name="branch" value="[% branch %]" type="hidden" />
-                <input name="printer" value="" type="hidden" />
-            </div>
-        </div>
-       [% ELSE %]
-            <input id="findborrower" name="findborrower" size="40" class="focus" type="text" />
-            <input name="branch" value="[% branch %]" type="hidden" />
-            <input name="printer" value="" type="hidden" />
-            <input value="Submit" class="submit" type="submit" />
-       [% END %]
-    </form>
-</div>
-       [% END %]
+
+    [% INCLUDE 'patron-search-box.inc' %]
+
        [% IF ( CAN_user_catalogue ) %]
        <div id="catalog_search" class="residentsearch" style="display:none;">
        <p class="tip">Enter search keywords:</p>
index 18e1beb..b64b500 100644 (file)
@@ -1,49 +1,5 @@
 <div id="header" class="gradient">
 <h1 id="logo"><a href="/cgi-bin/koha/mainpage.pl">[% LibraryName %]</a></h1><!-- Begin z3950 Admin Resident Search Box -->
-[% IF ( CAN_user_circulate ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-YAHOO.util.Event.onContentReady("header_search", function() {
-    new function() {
-        // Define a custom formatter function
-        this.fnCustomFormatter = function(oResultItem, sQuery) {
-            var name        = oResultItem[0];
-            var cardnumber  = oResultItem[1];
-            var address     = oResultItem[2];
-            var city        = oResultItem[3];
-            var zip         = oResultItem[4];
-            var aMarkup = [
-                "<div class=\"sample-result\">",
-                name,
-                " (",
-                cardnumber,
-                ")<small> -- ",
-                address,
-                ", ",
-                city,
-                "</small>",
-                "</div>"];
-            return (aMarkup.join(""));
-        };
-
-        // Instantiate one XHR DataSource and define schema as an array:
-        //     ["Record Delimiter",
-        //     "Field Delimiter"]
-        this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ysearch.pl", ["\n", "\t"]);
-        this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-        this.oACDS.maxCacheEntries = 60;
-        this.oACDS.queryMatchSubset = true;
-    
-        // Instantiate first AutoComplete
-        var myInput = document.getElementById('findborrower');
-        var myContainer = document.getElementById('yborrowercontainer');
-        this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-        //this.oAutoComp.delimChar = ";";
-        //this.oAutoComp.queryDelay = 1;
-        this.oAutoComp.formatResult = this.fnCustomFormatter;
-}
-});    
-//]]>
-</script>[% END %][% END %]
 <div id="header_search">
        <div id="z3950_search" class="residentsearch">
     <p class="tip">Z39.50 server search:</p>
@@ -52,29 +8,9 @@ YAHOO.util.Event.onContentReady("header_search", function() {
                 <input type="submit" class="submit" name="search" value="Search" />
         </form>
        </div>
-       [% IF ( CAN_user_circulate ) %]
-<div id="circ_search" class="residentsearch" style="display:none;">
-       <p class="tip">Enter patron card number or partial name:</p>
-    <form action="/cgi-bin/koha/circ/circulation.pl" method="post">
- [% IF ( CircAutocompl ) %]
-    <div class="autocomplete">
-            <div id="borrowerautocomplete" class="autocomplete">
-                <input autocomplete="off" id="findborrower" name="findborrower" class="focus" type="text" />
-                <div id="yborrowercontainer"></div>
-                <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
-                <input name="branch" value="[% branch %]" type="hidden" />
-                <input name="printer" value="" type="hidden" />
-            </div>
-        </div>
-       [% ELSE %]
-            <input id="findborrower" name="findborrower" size="40" class="focus" type="text" />
-            <input name="branch" value="[% branch %]" type="hidden" />
-            <input name="printer" value="" type="hidden" />
-            <input value="Submit" class="submit" type="submit" />
-       [% END %]
-    </form>
-</div>
-       [% END %]
+
+    [% INCLUDE 'patron-search-box.inc' %]
+
        [% IF ( CAN_user_catalogue ) %]
        <div id="catalog_search" class="residentsearch" style="display:none;">
        <p class="tip">Enter search keywords:</p>
@@ -92,3 +28,4 @@ YAHOO.util.Event.onContentReady("header_search", function() {
 </div>
 </div>
 <!-- End Members Resident Search Box -->
+curr
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644 (file)
index 0000000..5b5dab2
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_flat_75_ffffff_40x100.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644 (file)
index 0000000..ac8b229
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644 (file)
index 0000000..ad3d634
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_65_ffffff_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644 (file)
index 0000000..42ccba2
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_75_dadada_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644 (file)
index 0000000..5a46b47
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_75_dadada_1x400.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644 (file)
index 0000000..86c2baa
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_95_fef1ec_1x400.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644 (file)
index 0000000..4443fdc
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644 (file)
index 0000000..7c9fa6c
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ
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 (file)
index 0000000..b273ff1
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_222222_256x240.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_2e83ff_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_2e83ff_256x240.png
new file mode 100644 (file)
index 0000000..09d1cdc
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_2e83ff_256x240.png differ
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 (file)
index 0000000..59bd45b
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_454545_256x240.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_888888_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_888888_256x240.png
new file mode 100644 (file)
index 0000000..6d02426
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_888888_256x240.png differ
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_cd0a0a_256x240.png b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_cd0a0a_256x240.png
new file mode 100644 (file)
index 0000000..2ab019b
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/images/ui-icons_cd0a0a_256x240.png differ
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
new file mode 100644 (file)
index 0000000..9cce3a6
--- /dev/null
@@ -0,0 +1,339 @@
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, 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/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.18
+ *
+ * Copyright 2011, 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/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.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 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 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 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 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 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 a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Autocomplete 1.8.18
+ *
+ * Copyright 2011, 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/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.18
+ *
+ * Copyright 2010, 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/Menu#theming
+ */
+.ui-menu {
+    list-style:none;
+    padding: 2px;
+    margin: 0;
+    display:block;
+    float: left;
+}
+.ui-menu .ui-menu {
+    margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+    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;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+    font-weight: normal;
+    margin: -1px;
+}
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
new file mode 100644 (file)
index 0000000..3b49f39
--- /dev/null
@@ -0,0 +1,49 @@
+/*!
+ * jQuery UI 1.8.18
+ *
+ * Copyright 2011, 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
+ */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",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;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);return/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){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)});return 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){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return 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)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;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return 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 Widget 1.8.18
+ *
+ * Copyright 2011, 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/Widget
+ */(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(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return 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;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return 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){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return 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}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return 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]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);/*!
+ * jQuery UI Mouse 1.8.18
+ *
+ * Copyright 2011, 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/Mouse
+ *
+ * Depends:
+ *     jquery.ui.widget.js
+ */(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")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){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){b.preventDefault();return!0}}!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;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){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));return!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 Position 1.8.18
+ *
+ * Copyright 2011, 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/Position
+ */(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;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];return 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){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){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];if(!c||!c.ownerDocument)return null;if(b)return this.each(function(){a.offset.setOffset(this,b)});return 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 Autocomplete 1.8.18
+ *
+ * Copyright 2011, 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/Autocomplete
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.widget.js
+ *     jquery.ui.position.js
+ */(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.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")){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._move("previous",c),c.preventDefault();break;case e.DOWN:b._move("next",c),c.preventDefault();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(){b.options.disabled||(b.selectedItem=null,b.previous=b.element.val())}).bind("blur.autocomplete",function(a){b.options.disabled||(clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150))}),this._initSource(),this.response=function(){return b._response.apply(b,arguments)},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,d,e;a.isArray(this.options.source)?(d=this.options.source,this.source=function(b,c){c(a.ui.autocomplete.filter(d,b.term))}):typeof this.options.source=="string"?(e=this.options.source,this.source=function(d,f){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:e,data:d,dataType:"json",context:{autocompleteRequest:++c},success:function(a,b){this.autocompleteRequest===c&&f(a)},error:function(){this.autocompleteRequest===c&&f([])}})}):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 this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this.response)},_response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close(),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},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){if(b.length&&b[0].label&&b[0].value)return b;return a.map(b,function(b){if(typeof b=="string")return{label:b,value:b};return 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);else{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}}),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){!a(c.target).closest(".ui-menu-item a").length||(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(){!this.active||(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));else{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();result=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10}),result.length||(result=this.element.children(".ui-menu-item:first")),this.activate(b,result)}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);
\ No newline at end of file
index 4440d49..46e2ffd 100644 (file)
@@ -1,73 +1,61 @@
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Circulation &rsaquo; Items overdue as of [% todaysdate %]</title>
 [% INCLUDE 'doc-head-close.inc' %]
-<script type="text/JavaScript" language="JavaScript">
-//<![CDATA[
-    function clone_parent(node) {
+<script type="text/javascript">
+ //<![CDATA[
+     function clone_parent(node) {
         var parent = node.parentNode;
-               var clone = parent.cloneNode(true);
+        var clone = parent.cloneNode(true);
+        parent.parentNode.insertBefore(clone, parent.nextSibling);
         $("a", clone).attr("style", "visibility: visible");
         $("input", clone).attr("value", "");
 
-               var theid = $("span", clone).attr("id") || "";
-               var parts = theid.match(/^pattrodue-getready-(.*)$/);
-               if (parts && parts.length > 1)
-               {
-                       var appendid = "-" + Math.floor(Math.random()*1000+1);
-                       $("span", clone).attr("id",theid+appendid);
 
-                       theid = $("input", clone).attr("id");
-                       $("input", clone).attr("id",theid+appendid);
+        var theid = $("span", clone).attr("id") || "";
+        var theid = $("span", clone).attr("id") || "";
+        var parts = theid.match(/^pattrodue-getready-(.*)$/);
+        if (parts && parts.length > 1)
+        {
+            var appendid = "-" + Math.floor(Math.random()*1000+1);
+            $("span", clone).attr("id",theid+appendid);
 
-                       theid = $("div[id]", clone).attr("id");
-                       $("div[id]", clone).attr("id",theid+appendid);
+            theid = $("input", clone).attr("id");
+            $("input", clone).attr("id",theid+appendid);
 
-                       var attrcode = $("script", clone).attr("x-code");
-                       var newsuffix = parts[1] + appendid;
-            [% IF ( CircAutocompl ) %]
-                create_auto_completion_responder(newsuffix,attrcode);
-            [% END %]
-               }
+            theid = $("div[id]", clone).attr("id");
+            $("div[id]", clone).attr("id",theid+appendid);
+
+            var attrcode = $("script", clone).attr("x-code");
+            var newsuffix = parts[1] + appendid;
+            create_auto_completion_responder(newsuffix,attrcode);
+        }
 
-        parent.parentNode.insertBefore(clone, parent.nextSibling);
     }
+
+
     function delete_parent(node) {
         var parent = node.parentNode;
         parent.parentNode.removeChild(parent);
     }
-    [% IF ( CircAutocompl ) %]
-       function create_auto_completion_responder(uniqueid,attrcode) {
-               YAHOO.util.Event.onContentReady("pattrodue-getready-"+uniqueid, function() {
-                       new function() {
-                               // Define a custom formatter function
-                               this.fnCustomFormatter = function(oResultItem, sQuery) {
-                                       var description = oResultItem[0];
-                                       var authorised_value = oResultItem[1];
-                                       var aMarkup = [
-                                               "<div class='pattrodue-result'>",
-                                               description,
-                                               " (",
-                                               authorised_value,
-                                               ")",
-                                               "</div>"];
-                                       return (aMarkup.join(""));
-                               };
-
-                               // Instantiate an XHR DataSource
-                               this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ypattrodue-attr-search-authvalue.pl/"+attrcode, ["\n", "\t"]);
-                               this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-                               this.oACDS.maxCacheEntries = 60;
-                               this.oACDS.queryMatchSubset = true;
 
-                               // Instantiate an AutoComplete Widget with uniqueid
-                               var myInput = document.getElementById('pattrodue-input-'+uniqueid);
-                               var myContainer = document.getElementById('pattrodue-container-'+uniqueid);
-                               this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
-                               this.oAutoComp.formatResult = this.fnCustomFormatter;
-                       }
-               });
+    function create_auto_completion_responder(uniqueid,attrcode) {
+       $("#pattrodue-getready-" + uniqueid).ready(function(){
+            $( "#pattrodue-input-" + uniqueid ).autocomplete({
+                source: "/cgi-bin/koha/circ/ypattrodue-attr-search-authvalue.pl/"+attrcode,
+                select: function( event, ui ) {
+                    $( "#pattrodue-input-"+uniqueid ).val( ui.item.description );
+                    return false;
+                }
+            })
+            .data( "autocomplete" )._renderItem = function( ul, item ) {
+                return $( "<li></li>" )
+                .data( "item.autocomplete", item )
+                .append( "<a>" + item.description + " (" + item.authorised_value + ")</a>" )
+                .appendTo( ul )
+                .css("font-size","90%").css("width","13em");
+            };
+        });
        }
-    [% END %]
 //]]>
 </script>
 <style type="text/css">
@@ -95,7 +83,8 @@
 
 [% ELSE %]
 
-<h2>[% nnoverdue %] [% IF ( noverdue_is_plural ) %]items[% ELSE %]item[% END %] overdue as of [% todaysdate %][% IF ( isfiltered ) %] (filtered)[% END %]</h2>
+<h2>[% nnoverdue %] [% IF ( noverdue_is_plural ) %]Items[% ELSE %]Item[% END %]
+overdue as of [% todaysdate %][% IF ( isfiltered ) %] <span style="font-size:70%;">(Filtered. <a href="/cgi-bin/koha/circ/overdue.pl">Reset filter</a>)</span>[% END %]</h2>
 
 <p>
     [% IF ( isfiltered ) %]
                <!-- domid cgivalue ismany isclone ordinal code description repeatable authorised_value_category -->
                <li>
                        <label>[% patron_attr_filter_loo.description %]:</label>
-            [% IF ( patron_attr_filter_loo.authorised_value_category AND CircAutocompl) %]
-                <script type="text/JavaScript" language="JavaScript" x-code="[% patron_attr_filter_loo.code |html %]">create_auto_completion_responder([% patron_attr_filter_loo.domid %],"[% patron_attr_filter_loo.code |html %]");</script>
+            [% IF ( patron_attr_filter_loo.authorised_value_category ) %]
+                <script type="text/javascript" x-code="[% patron_attr_filter_loo.code |html %]">create_auto_completion_responder([% patron_attr_filter_loo.domid %],"[% patron_attr_filter_loo.code |html %]");</script>
                                <span id="pattrodue-getready-[% patron_attr_filter_loo.domid %]">
                                                <div class="pattrodue-autocomplete">
                                                        <input autocomplete="off" id="pattrodue-input-[% patron_attr_filter_loo.domid %]" name="patron_attr_filter_[% patron_attr_filter_loo.code |html %]" value="[% patron_attr_filter_loo.cgivalue |html %]"  class="pattrodue-input" type="text" />
-                                                       <div id="pattrodue-container-[% patron_attr_filter_loo.domid %]" class="pattrodue-container"></div>
                                                </div>
                                </span>
                        [% ELSE %]
diff --git a/koha-tmpl/intranet-tmpl/prog/img/loading-small.gif b/koha-tmpl/intranet-tmpl/prog/img/loading-small.gif
new file mode 100644 (file)
index 0000000..d42f72c
Binary files /dev/null and b/koha-tmpl/intranet-tmpl/prog/img/loading-small.gif differ