--- /dev/null
+\r
+/* captures extraneous info from each record */\r
+\r
+var subjectCache = {};\r
+var authorCache = {};\r
+var seriesCache = {};\r
+\r
+function resultBuildCaches(records) {\r
+ for( var r in records ) {\r
+ var rec = records[r];\r
+ for( var s in rec.subject() ) \r
+ subjectCache[s] == null ? subjectCache[s] = 1 : subjectCache[s]++;\r
+ authorCache[rec.author()] = 1;\r
+ for( var s in rec.series() ) seriesCache[rec.series()[s]] = 1;\r
+ }\r
+}\r
+\r
+function resultSortSubjects(a, b) { return -(a.count - b.count); } /* sort in reverse */\r
+function resultDrawSubjects() {\r
+\r
+ var subjs = [];\r
+ for( var s in subjectCache )\r
+ subjs.push( { sub : s, count : subjectCache[s] } );\r
+ subjs.sort(resultSortSubjects);\r
+\r
+ var ss = [];\r
+ for( var s in subjs ) ss.push(subjs[s].sub);\r
+\r
+ resultDrawSidebarTrees( \r
+ STYPE_SUBJECT, \r
+ "subjectSidebarTree", ss, \r
+ $("subject_tree_sidebar"), \r
+ $("subject_sidebar_tree_div") );\r
+}\r
+\r
+function resultDrawAuthors() {\r
+ var auths = new Array();\r
+ for( var s in authorCache ) auths.push(s);\r
+\r
+ resultDrawSidebarTrees( \r
+ STYPE_AUTHOR, \r
+ "authorSidebarTree", auths.sort(), \r
+ $("author_tree_sidebar"), \r
+ $("author_sidebar_tree_div") );\r
+}\r
+\r
+function resultDrawSeries() {\r
+ var sers = new Array();\r
+ for( var s in seriesCache ) sers.push(s);\r
+ resultDrawSidebarTrees( \r
+ STYPE_SERIES, \r
+ "seriesSidebarTree", sers.sort(), \r
+ $("series_tree_sidebar"), \r
+ $("series_sidebar_tree_div") );\r
+}\r
+\r
+var IESux = true;\r
+\r
+function resultDrawSidebarTrees( stype, treeName, items, wrapperNode, destNode ) {\r
+ if(findCurrentPage()=="rdetail") return;\r
+ eval("tree = " + treeName);\r
+\r
+ var xrefCache = [];\r
+ var found = false;\r
+ var x = 0;\r
+ for( var i in items ) {\r
+\r
+ if(isNull(items[i])) continue;\r
+\r
+ /* again, IE is a turd */\r
+ if(IE) { if(x++ > 5) break; }\r
+ else { if(x++ > 7) break; }\r
+\r
+ found = true;\r
+\r
+ var item = normalize(truncate(items[i], 65));\r
+ var args = {};\r
+ var href = resultQuickLink( items[i], stype );\r
+ tree.addNode( stype + "_" + items[i], treeName + 'Root', item, href );\r
+\r
+// if( !IE ) resultFireXRefReq(treeName, stype, items[i]);\r
+\r
+ var a = {};\r
+ a.type = stype;\r
+ a.term = item;\r
+ xrefCache.push(a);\r
+ }\r
+\r
+ if(found) {\r
+ unHideMe(wrapperNode);\r
+// if(IE) resultFireXRefSingle(treeName, xrefCache, stype);\r
+ /* XXX */ // disabled auth lookups for now\r
+\r
+ if( DO_AUTHORITY_LOOKUPS ) {\r
+ resultFireXRefBatch(treeName, xrefCache, stype);\r
+ }\r
+ }\r
+}\r
+\r
+/* XXX */\r
+function resultFireXRefBatch(treeName, xrefCache, stype) {\r
+ var query = [];\r
+ for( var i = 0; i != xrefCache.length; i++ ) {\r
+ var topic = xrefCache[i];\r
+ query.push( [ topic.type, topic.term ] );\r
+ }\r
+ var req = new Request(FETCH_CROSSREF_BATCH, query);\r
+ var tree;\r
+ eval('tree=' + treeName);\r
+ req.request._tree = tree;\r
+ req.request._stype = stype;\r
+ req.callback(resultRenderXRefTree);\r
+ req.send();\r
+}\r
+\r
+var xrefCacheIndex = {};\r
+xrefCacheIndex['subject'] = 0;\r
+xrefCacheIndex['author'] = 0;\r
+xrefCacheIndex['series'] = 0;\r
+\r
+function resultHandleXRefResponse(r) {\r
+ resultFireXRefSingle( r._treename, r._cache, r._stype );\r
+ resultAppendCrossRef(r);\r
+}\r
+\r
+\r
+function resultFireXRefSingle( treeName, xrefCache, stype ) {\r
+ var i = xrefCacheIndex[stype]++;\r
+ if(xrefCache[i] == null) return;\r
+ var item = xrefCache[i].term;\r
+ var tree;\r
+ eval('tree=' + treeName);\r
+ var req = new Request(FETCH_CROSSREF, stype, item);\r
+ req.request._tree = tree;\r
+ req.request._item = item;\r
+ req.request._stype = stype;\r
+ req.request._cache = xrefCache;\r
+ req.request._treename = treeName;\r
+ req.callback(resultHandleXRefResponse);\r
+ req.send();\r
+}\r
+\r
+function resultFireXRefReq( treeName, stype, item ) {\r
+ var tree;\r
+ eval('tree=' + treeName);\r
+ var req = new Request(FETCH_CROSSREF, stype, item);\r
+ req.request._tree = tree;\r
+ req.request._item = item;\r
+ req.request._stype = stype;\r
+ req.callback(resultAppendCrossRef);\r
+ req.send();\r
+}\r
+\r
+\r
+function resultQuickLink( term, type ) {\r
+ var args = {};\r
+ if(SHOW_MR_DEFAULT) {\r
+ args.page = MRESULT;\r
+ } else {\r
+ args.page = RRESULT;\r
+ args[PARAM_RTYPE] = type;\r
+ }\r
+ args[PARAM_OFFSET] = 0;\r
+ args[PARAM_TERM] = term;\r
+ args[PARAM_STYPE] = type;\r
+ return buildOPACLink(args);\r
+}\r
+\r
+/* XXX */\r
+function resultRenderXRefTree(r) {\r
+ var tree = r._tree;\r
+ var res = r.getResultObject();\r
+ var stype = r._stype;\r
+\r
+ for( var c in res ) {\r
+ var cls = res[c];\r
+ for( var t in cls ) {\r
+ var term = res[c][t];\r
+ var froms = term['from'];\r
+ var alsos = term['also'];\r
+ var total = 0;\r
+\r
+ for( var i = 0; (total++ < 5 && i < froms.length); i++ ) {\r
+ var string = normalize(truncate(froms[i], 45));\r
+ if($(stype + '_' + froms[i])) continue;\r
+ tree.addNode(stype + '_' + froms[i], \r
+ stype + '_' + t, string, resultQuickLink(froms[i],stype));\r
+ }\r
+ for( var i = 0; (total++ < 10 && i < alsos.length); i++ ) {\r
+ var string = normalize(truncate(alsos[i], 45));\r
+ if($(stype + '_' + alsos[i])) continue;\r
+ tree.addNode(stype + '_' + alsos[i], \r
+ stype + '_' + t, string, resultQuickLink(alsos[i],stype));\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+\r
+/* Addes the see-from/see-also entries for this subject item */\r
+function resultAppendCrossRef(r) {\r
+ var tree = r._tree\r
+ var item = r._item\r
+ var stype = r._stype;\r
+ var result = r.getResultObject();\r
+ if(!result) return;\r
+ var froms = result['from'];\r
+ var alsos = result['also'];\r
+\r
+ var total = 0;\r
+\r
+ for( var i = 0; (total++ < 5 && i < froms.length); i++ ) \r
+ resultAddXRefItem( tree, item, stype, froms, i );\r
+\r
+ for( var i = 0; (total++ < 10 && i < alsos.length); i++ ) \r
+ resultAddXRefItem( tree, item, stype, alsos, i );\r
+}\r
+\r
+/**\r
+ * Adds a single entry into the see-from/also sidebar tree \r
+ */\r
+var collectedStrings = [];\r
+function resultAddXRefItem(tree, rootItem, stype, arr, idx) {\r
+\r
+ var string = normalize(truncate(arr[idx], 45));\r
+\r
+ if( string == rootItem ) return;\r
+\r
+ if( grep( collectedStrings, \r
+ function(a) { return (a == string); }) ) return;\r
+\r
+ if($(stype + '_' + arr[idx])) return;\r
+\r
+ tree.addNode(stype + '_' + arr[idx], \r
+ stype + '_' + rootItem, string, resultQuickLink(arr[idx],stype));\r
+\r
+ collectedStrings.push(string);\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r