Bug 25593: Terminology: Fix "There is no order for this biblio." on catalog detail...
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / commons.js
1 // Extends jQuery API
2 jQuery.extend({uniqueArray:function(array){
3     return $.grep(array, function(el, index) {
4         return index === $.inArray(el, array);
5     });
6 }});
7
8 function removeByValue(arr, val) {
9     for(var i=0; i<arr.length; i++) {
10         if(arr[i] == val) {
11             arr.splice(i, 1);
12             break;
13         }
14     }
15 }
16
17 function paramOfUrl( url, param ) {
18     param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
19     var regexS = "[\\?&]"+param+"=([^&#]*)";
20     var regex = new RegExp( regexS );
21     var results = regex.exec( url );
22     if( results == null ) {
23         return "";
24     } else {
25         return results[1];
26     }
27 }
28
29 function addBibToContext( bibnum ) {
30     bibnum = parseInt(bibnum, 10);
31     var bibnums = getContextBiblioNumbers();
32     bibnums.push(bibnum);
33     setContextBiblioNumbers( bibnums );
34     setContextBiblioNumbers( $.uniqueArray( bibnums ) );
35 }
36
37 function delBibToContext( bibnum ) {
38     var bibnums = getContextBiblioNumbers();
39     removeByValue( bibnums, bibnum );
40     setContextBiblioNumbers( $.uniqueArray( bibnums ) );
41 }
42
43 function setContextBiblioNumbers( bibnums ) {
44     $.cookie('bibs_selected', JSON.stringify( bibnums ));
45 }
46
47 function getContextBiblioNumbers() {
48     var r = $.cookie('bibs_selected');
49     if ( r ) {
50         return JSON.parse(r);
51     }
52     r = new Array();
53     return r;
54 }
55
56 function resetSearchContext() {
57     setContextBiblioNumbers( new Array() );
58 }
59
60 $(document).ready(function(){
61     // forms with action leading to search
62     $("form[action*='search.pl']").submit(function(){
63         resetSearchContext();
64     });
65     // any link to launch a search except navigation links
66     $("[href*='search.pl?']").not(".nav").not('.searchwithcontext').click(function(){
67         resetSearchContext();
68     });
69     // any link to a detail page from the results page.
70     $("#bookbag_form a[href*='detail.pl?']").click(function(){
71         resetSearchContext();
72     });
73 });