Initial dev repository
[kcls-web.git] / opac / skin / login2 / js / advanced.js
diff --git a/opac/skin/login2/js/advanced.js b/opac/skin/login2/js/advanced.js
new file mode 100644 (file)
index 0000000..ebedf87
--- /dev/null
@@ -0,0 +1,170 @@
+/* advanced search interface */\r
+\r
+attachEvt("common", "run", advInit);\r
+\r
+function advInit() { \r
+\r
+       /* propogate these? */\r
+\r
+       depthSelInit(); \r
+       setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );\r
+       hideMe($('adv_quick_search_sidebar'));\r
+\r
+       /*\r
+       if(isXUL()) \r
+               setSelector($('adv_quick_type'), 'tcn'); */\r
+\r
+       setEnterFunc($('adv_quick_text'), advGenericSearch);\r
+       hideMe($('adv_marc_search_sidebar'));\r
+       //hideMe($('adv_global_search'));\r
+}\r
+\r
+function advAddMARC() {\r
+       var newt = $('adv_sdbar_table').cloneNode(true);\r
+       newt.id = "";\r
+       unHideMe($n(newt, 'crow'));\r
+       $n(newt, 'advanced.marc.tag').value = "";\r
+       $n(newt, 'advanced.marc.subfield').value = "";\r
+       $n(newt, 'advanced.marc.value').value = "";\r
+       $('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));\r
+}\r
+\r
+function advMARCRun() {\r
+\r
+       clearSearchParams();\r
+\r
+       var div = $('adv_marc_search_sidebar');\r
+       var tbodies = div.getElementsByTagName('tbody');\r
+       var searches = [];\r
+\r
+       for( var i = 0; i < tbodies.length; i++ ) {\r
+               var tbody = tbodies[i];\r
+               var val = advExtractMARC(tbody);\r
+               if(val) searches.push(val);\r
+       }\r
+\r
+       if(searches.length == 0) return;\r
+\r
+       var arg = {};\r
+       arg.page = RRESULT;\r
+       arg[PARAM_FORM] = 'all';\r
+       arg[PARAM_RTYPE] = RTYPE_MARC;\r
+       arg[PARAM_OFFSET] = 0;\r
+       arg[PARAM_DEPTH]        = depthSelGetDepth();\r
+       arg[PARAM_LOCATION]     = depthSelGetNewLoc();\r
+       arg[PARAM_SEARCHES] = js2JSON(searches);\r
+       arg[PARAM_ADVTYPE] = ADVTYPE_MARC;\r
+       arg[PARAM_TERM] = "";\r
+\r
+       goTo(buildOPACLink(arg));\r
+}\r
+\r
+\r
+/* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */\r
+function advExtractMARC(tbody) {\r
+       if(!tbody) return null;\r
+       var term = $n(tbody, 'advanced.marc.value').value;\r
+       if(!term) return null;\r
+\r
+       var subfield = $n(tbody, 'advanced.marc.subfield').value;\r
+       if(!subfield) subfield = "_";\r
+\r
+       var tag = $n(tbody, 'advanced.marc.tag').value;\r
+       if(!tag) return null;\r
+\r
+       return { 'term' : term.toLowerCase(), 'restrict' :  [ { 'tag' : tag, 'subfield' : subfield } ] };\r
+}\r
+\r
+function advGenericSearch() {\r
+       clearSearchParams();\r
+       var type = getSelectorVal($('adv_quick_type'));\r
+       \r
+       var term = $('adv_quick_text').value;\r
+       if(!term) return;\r
+\r
+       var arg = {};\r
+\r
+       switch(type) {\r
+\r
+               case 'isbn' :\r
+                       arg.page                                        = RRESULT;\r
+                       arg[PARAM_STYPE]                = "";\r
+                       arg[PARAM_TERM]         = "";\r
+                       arg[PARAM_RTYPE]                = RTYPE_ISBN;\r
+                       arg[PARAM_OFFSET]               = 0;\r
+                       arg[PARAM_ADVTERM]      = term.toLowerCase();\r
+                       break;\r
+               \r
+               case 'issn' :\r
+                       arg.page                                        = RRESULT;\r
+                       arg[PARAM_STYPE]                = "";\r
+                       arg[PARAM_TERM]         = "";\r
+                       arg[PARAM_ADVTERM]      = term.toLowerCase();\r
+                       arg[PARAM_OFFSET]               = 0;\r
+                       arg[PARAM_RTYPE]                = RTYPE_ISSN;\r
+                       break;\r
+\r
+               case 'tcn' :\r
+                       arg.page                                        = RRESULT;\r
+                       arg[PARAM_STYPE]                = "";\r
+                       arg[PARAM_TERM]         = "";\r
+                       arg[PARAM_ADVTERM]      = term;\r
+                       arg[PARAM_OFFSET]               = 0;\r
+                       arg[PARAM_RTYPE]                = RTYPE_TCN;\r
+                       break;\r
+\r
+        case 'barcode':\r
+            advFindBarcode(term);\r
+            break;\r
+\r
+\r
+               case 'cn':\r
+                       arg.page                        = CNBROWSE;\r
+                       arg[PARAM_CN]   = term;\r
+                       arg[PARAM_DEPTH]                = depthSelGetDepth();\r
+                       arg[PARAM_LOCATION]     = depthSelGetNewLoc();\r
+                       break;\r
+\r
+               case 'lccn':\r
+                       arg.page = RRESULT;\r
+                       arg[PARAM_FORM] = 'all'\r
+                       arg[PARAM_RTYPE] = RTYPE_MARC;\r
+                       arg[PARAM_OFFSET] = 0;\r
+                       arg[PARAM_DEPTH]        = depthSelGetDepth();\r
+                       arg[PARAM_LOCATION]     = depthSelGetNewLoc();\r
+                       arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(), \r
+                                       'restrict' :  [ { 'tag' : '010', 'subfield' : '_' } ] }]);\r
+                       arg[PARAM_ADVTYPE] = ADVTYPE_MARC;\r
+                       arg[PARAM_TERM] = "";\r
+                       break;\r
+\r
+\r
+               default: alert('not done');\r
+       }\r
+\r
+       if(arg.page) goTo(buildOPACLink(arg));\r
+}\r
+\r
+\r
+function advFindBarcode(barcode) {\r
+    var req = new Request(FETCH_BIB_ID_BY_BARCODE, barcode);\r
+    req.callback(advDrawBarcode);\r
+    req.request.alertEvent = false;\r
+    req.send();\r
+}\r
+\r
+function advDrawBarcode(r) {\r
+    titleid = r.getResultObject();\r
+    if(checkILSEvent(titleid)) {\r
+        alertId('myopac.copy.not.found');\r
+        return;\r
+    }\r
+    if(!titleid) return;\r
+    var args = {};\r
+    args.page = RDETAIL;\r
+    args[PARAM_RID] = titleid;\r
+    location.href = buildOPACLink(args);\r
+}\r
+\r
+\r
+\r