]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/javascript/opac/AdvancedSearchPage.js
0f4d5a94013233db05e5688757eacfaf84d59357
[working/Evergreen.git] / Open-ILS / src / javascript / opac / AdvancedSearchPage.js
1 AdvancedSearchPage.prototype                                    = new Page();
2 AdvancedSearchPage.prototype.constructor        = AdvancedSearchPage;
3 AdvancedSearchPage.baseClass                                    = Page.constructor;
4
5
6 var globalAdvancedSearchPage = null;
7
8 // ---------------------------------------------------------------------------------
9 // advanced search
10 // ---------------------------------------------------------------------------------
11 function AdvancedSearchPage() {
12
13         if(globalAdvancedSearchPage) 
14                 return globalAdvancedSearchPage;
15
16         this.searchBar = new SearchBarChunk();
17         globalAdvancedSearchPage = this;
18 }
19
20
21 AdvancedSearchPage.prototype.init = function() {
22         this.searchBarForm      = new SearchBarFormChunk();
23         this.searchBar                  = new SearchBarChunk();
24
25         this.advISBN                    = getById("adv_isbn");
26
27         /* global search */
28         this.globalSearchButton = getById("adv_global_search_button");
29         this.tcnText                            = getById("adv_tcn_text");
30         this.ISBNText                           = getById("adv_isbn_text");
31         this.barcodeText                        = getById("adv_barcode_text");
32         var refinedButton                       = getById("adv_search_refined_submit");
33
34         this.globalSearchButton.onclick = doGlobalSearch;
35         refinedButton.onclick = doGlobalSearch;
36         this.buildNavBox();
37 }
38
39 /* resets the page */
40 AdvancedSearchPage.prototype.reset = function() {
41         this.advISBN.focus();
42 }
43
44 AdvancedSearchPage.instance = function() {
45         if(globalAdvancedSearchPage) {
46                 return globalAdvancedSearchPage;
47         }
48         return new AdvancedSearchPage();
49 }
50
51 function doGlobalSearch() {
52
53         var obj = AdvancedSearchPage.instance();
54
55         if( obj.ISBNText.value != null 
56                         && obj.ISBNText.value.length > 1 ) {
57                 url_redirect( [ "target", "record_result", "page", "0",
58                                 "search", "global", "isbn", obj.ISBNText.value ] );
59                 /* do isbn search */
60         }
61
62         if( obj.tcnText.value != null 
63                         && obj.tcnText.value.length > 1 ) {
64                 url_redirect( [ "target", "record_result", "page", "0", 
65                                 "search", "global", "tcn", obj.tcnText.value ] );
66                 return;
67         }
68         if( obj.barcodeText.value != null 
69                         && obj.barcodeText.value.length > 1 ) {
70                 url_redirect( [ "target", "record_result", "page", "0", 
71                                 "search", "global", "barcode", obj.barcodeText.value ] );
72                 return;
73         }
74
75         var allWords = getById("adv_all_words").value;
76         var exactWords = getById("adv_exact_words").value;
77         var noneWords   = getById("adv_none_words").value;
78         var type = getById("adv_search_type").value;
79         if(allWords || exactWords || noneWords) {
80                 var search_string = obj.buildRefinedSearch(allWords, exactWords, noneWords);
81                 debug("Refined search string is [ " + search_string + " ] and type " + type);
82
83                 url_redirect ([ 
84                                 "target",                                       "mr_result",
85                                 "mr_search_type",                       type,
86                                 "mr_search_query",              search_string,
87                                 "page",                                         0
88                                 ]);
89
90         }
91
92 }
93
94 AdvancedSearchPage.prototype.buildRefinedSearch = 
95                         function(allWords, exactWords, noneWords) {
96         
97         var string = "";
98
99         if(allWords) {
100                 string = allWords;
101         }
102
103         if(exactWords) {
104                 if(exactWords.indexOf('"') > -1) 
105                         string += " " + exactWords;
106                 else 
107                         string += " \"" + exactWords + "\"";
108                 
109         }
110
111         if(noneWords) {
112                 var words = noneWords.split(" ");
113                 for(var i in words) 
114                         string += " -" + words[i];
115         }
116
117         return string;
118 }
119                 
120