--- /dev/null
+\r
+var recordsHandled = 0;\r
+var recordsCache = [];\r
+var lowHitCount = 4;\r
+var isbnList = '';\r
+var googleBooksLink = true;\r
+buildOrgSel($('holdsCacheSel'), globalOrgTree, 0);\r
+\r
+var resultFetchAllRecords = false;\r
+var resultCompiledSearch = null;\r
+\r
+/* set up the event handlers */\r
+if( findCurrentPage() == MRESULT || findCurrentPage() == RRESULT ) {\r
+ G.evt.result.hitCountReceived.push(resultSetHitInfo);\r
+ G.evt.result.recordReceived.push(resultDisplayRecord, resultAddCopyCounts);\r
+ G.evt.result.copyCountsReceived.push(resultDisplayCopyCounts);\r
+ G.evt.result.allRecordsReceived.push(function(){unHideMe($('tehSideBar'));},function(){unHideMe($('results_view_span'));},resultBuildCaches,\r
+ function(){unHideMe($('result_info_2'))}, fetchGoogleBooksLink, fetchChiliFreshReviews, postResultsCollect);\r
+\r
+ attachEvt('result','lowHits',resultLowHits);\r
+ attachEvt('result','zeroHits',resultZeroHits);\r
+ attachEvt( "common", "locationUpdated", resultSBSubmit );\r
+ /* do this after we have ID's so the rank for mr pages will be correct */\r
+ attachEvt("result", "preCollectRecords", resultPaginate);\r
+}\r
+\r
+function resultSBSubmit(){searchBarSubmit();}\r
+\r
+/* returns the last 'index' postion ocurring in this page */\r
+function resultFinalPageIndex() {\r
+ if(getHitCount() < (getOffset() + getDisplayCount())) \r
+ return getHitCount() - 1;\r
+ return getOffset() + getDisplayCount() - 1;\r
+}\r
+\r
+function plausible_ident(s) {\r
+ s = s.replace(/^\s*(.+)\s*$/, '$1');\r
+ s = s.replace(/^(\S+)\s.*$/, '$1');\r
+ return s;\r
+}\r
+\r
+\r
+/* generic search method */\r
+function resultCollectSearchIds( type, method, handler ) {\r
+\r
+ var sort = (getSort() == SORT_TYPE_REL) ? null : getSort(); \r
+ var sortdir = (sort) ? ((getSortDir()) ? getSortDir() : SORT_DIR_ASC) : null;\r
+\r
+ var item_type;\r
+ var item_form;\r
+ var args = {};\r
+\r
+ if( type ) {\r
+ var form = parseForm(getForm());\r
+ item_type = form.item_type;\r
+ item_form = form.item_form;\r
+\r
+ } else {\r
+ item_type = (getItemType()) ? getItemType().split(/,/) : null;\r
+ item_form = (getItemForm()) ? getItemForm().split(/,/) : null;\r
+ }\r
+ \r
+ item_type=null;\r
+\r
+ var limit = (resultFetchAllRecords) ? 1000 : getDisplayCount();\r
+\r
+ if( getOffset() > 0 ) {\r
+ if( getHitCount() > 0 && (getOffset() + getDisplayCount()) > getHitCount() ) \r
+ limit = getHitCount() - getOffset();\r
+ }\r
+\r
+ var lasso = getLasso();\r
+\r
+ if (lasso) args.org_unit = -lasso;\r
+ else args.org_unit = getLocation();\r
+\r
+ args.depth = getDepth();\r
+ args.limit = limit;\r
+ args.offset = getOffset();\r
+ args.visibility_limit = 3000;\r
+ args.default_class = getStype();\r
+\r
+ if(sort) args.sort = sort;\r
+ if(sortdir) args.sort_dir = sortdir;\r
+ if(item_type) args.item_type = item_type;\r
+ if(item_form) args.item_form = item_form;\r
+ if(getAvail()) args.available = 1;\r
+ //args.format="marcxml";\r
+\r
+ if(getFacet()) args.facets = getFacet();\r
+\r
+ if(getAudience()) args.audience = getAudience().split(/,/);\r
+ if(getLitForm()) args.lit_form = getLitForm().split(/,/);\r
+ if(getLanguage()) args.language = getLanguage().split(/,/);\r
+ if(getBibLevel()) args.bib_level = getBibLevel().split(/,/);\r
+ if(getCopyLocs()) args.locations = getCopyLocs().split(/,/);\r
+ if(getPubdBefore()) args.before = getPubdBefore();\r
+ else if(getPubdAfter()) args.after = getPubdAfter();\r
+ else if(getPubdBetween()) args.between = getPubdBetween().split(/,/);\r
+\r
+ _debug('Search args: ' + js2JSON(args));\r
+ _debug('Raw query: ' + getTerm());\r
+\r
+ var req = new Request(method, args, getTerm(), 1);\r
+ req.callback(handler);\r
+ req.send();\r
+}\r
+\r
+\r
+\r
+\r
+\r
+/* set the search result info, number of hits, which results we're \r
+ displaying, links to the next/prev pages, etc. */\r
+function resultSetHitInfo() { \r
+\r
+ var lasso = getLasso();\r
+ if (!lasso) {\r
+ /* tell the user where the results are coming from */\r
+ var baseorg = findOrgUnit(getLocation());\r
+ var depth = getDepth();\r
+ var mydepth = findOrgDepth(baseorg);\r
+ if( findOrgDepth(baseorg) != depth ) {\r
+ var tmporg = baseorg;\r
+ while( mydepth > depth ) {\r
+ mydepth--;\r
+ tmporg = findOrgUnit(tmporg.parent_ou());\r
+ }\r
+ unHideMe($('including_results_for'));\r
+ try{$('including_results_location').appendChild(text(tmporg.name()));} catch(e){}\r
+ }\r
+ }\r
+\r
+\r
+ try{searchTimer.stop()}catch(e){}\r
+\r
+ //if( findCurrentPage() == MRESULT ) {\r
+ if( findCurrentPage() == MRESULT || \r
+\r
+ (findCurrentPage() == RRESULT &&\r
+ (\r
+ getRtype() == RTYPE_TITLE ||\r
+ getRtype() == RTYPE_AUTHOR ||\r
+ getRtype() == RTYPE_SUBJECT ||\r
+ getRtype() == RTYPE_SERIES ||\r
+ getRtype() == RTYPE_KEYWORD \r
+ )\r
+\r
+ ) ) {\r
+\r
+ if(getHitCount() <= lowHitCount && getTerm())\r
+ runEvt('result', 'lowHits');\r
+ }\r
+\r
+ if(getHitCount() == 0) {\r
+ runEvt('result', 'zeroHits');\r
+ return;\r
+ }\r
+\r
+\r
+ var pages = getHitCount() / getDisplayCount();\r
+ if(pages % 1) pages = parseInt(pages) + 1;\r
+\r
+ \r
+\r
+ var cpage = (getOffset()/getDisplayCount()) + 1;\r
+\r
+ G.ui.result.current_page.appendChild(text(cpage));\r
+ G.ui.result.num_pages.appendChild(text(pages)); /* the ) is dumb */\r
+\r
+ $('current_page2').appendChild(text(cpage));\r
+ $('num_pages2').appendChild(text(pages + ")")); /* the ) is dumb */\r
+\r
+ /* set the offsets */\r
+ var offsetEnd = getDisplayCount() + getOffset(); \r
+ if( getDisplayCount() > (getHitCount() - getOffset())) \r
+ offsetEnd = getHitCount();\r
+\r
+ G.ui.result.offset_end.appendChild(text(offsetEnd));\r
+ G.ui.result.offset_start.appendChild(text(getOffset() + 1));\r
+\r
+ $('offset_end2').appendChild(text(offsetEnd));\r
+ $('offset_start2').appendChild(text(getOffset() + 1));\r
+\r
+ G.ui.result.result_count.appendChild(text(getHitCount()));\r
+ unHideMe(G.ui.result.info);\r
+ unHideMe($('result_numbers1'));\r
+\r
+ $('result_count2').appendChild(text(getHitCount()));\r
+ unHideMe($('result_info_div2'));\r
+}\r
+\r
+function resultLowHits() {\r
+ showCanvas();\r
+ unHideMe($('result_low_hits'));\r
+ if(getHitCount() > 0)\r
+ unHideMe($('result_low_hits_msg'));\r
+\r
+ var words = [];\r
+ for(var key in resultCompiledSearch.searches) \r
+ words.push(resultCompiledSearch.searches[key].term);\r
+\r
+ var sreq = new Request(CHECK_SPELL, words.join(' '));\r
+ sreq.callback(resultSuggestSpelling);\r
+ sreq.send();\r
+\r
+ for(var key in resultCompiledSearch.searches) {\r
+ var areq = new Request(FETCH_CROSSREF, key, resultCompiledSearch.searches[key].term);\r
+ areq.callback(resultLowHitXRef);\r
+ areq.send();\r
+ }\r
+\r
+ if( !(getForm() == null || getForm() == 'all' || getForm() == "") ) {\r
+ var a = {};\r
+ a[PARAM_FORM] = "all";\r
+ $('low_hits_remove_format_link').setAttribute('href',buildOPACLink(a));\r
+ unHideMe($('low_hits_remove_format'));\r
+ }\r
+\r
+ resultSuggestSearchClass();\r
+\r
+ if(getTerm()) resultExpandSearch(); /* advanced search */\r
+}\r
+\r
+var lowHitsXRefSet = {};\r
+var lowHitsXRefLink;\r
+var lowHitsXRefLinkParent;\r
+function resultLowHitXRef(r) {\r
+ if(!lowHitsXRefLink){\r
+ lowHitsXRefLinkParent = $('low_hits_xref_link').parentNode;\r
+ lowHitsXRefLink = lowHitsXRefLinkParent.removeChild($('low_hits_xref_link'));\r
+ }\r
+ var res = r.getResultObject();\r
+ var arr = res.from;\r
+ arr.concat(res.also);\r
+ if(arr && arr.length > 0) {\r
+ unHideMe($('low_hits_cross_ref'));\r
+ var word;\r
+ var c = 0;\r
+ while( word = arr.shift() ) {\r
+\r
+ if (lowHitsXRefSet[word] == 1) continue;\r
+ lowHitsXRefSet[word] = 1;\r
+\r
+ if(c++ > 20) break;\r
+ var a = {};\r
+ a[PARAM_TERM] = word;\r
+ var template = lowHitsXRefLink.cloneNode(true);\r
+ template.setAttribute('href',buildOPACLink(a));\r
+ template.appendChild(text(word));\r
+ lowHitsXRefLinkParent.appendChild(template);\r
+ lowHitsXRefLinkParent.appendChild(text(' '));\r
+ }\r
+ }\r
+}\r
+\r
+function resultZeroHits() {\r
+ hideMe($('result_header'));\r
+ hideMe($('result_table_div'));\r
+ hideMe($('statusbar'));\r
+ $('rresults_page').style.width="690px";\r
+ unHideMe($('zero_search_hits'));\r
+ $('zero_hits_term').innerHTML = getTerm();\r
+ //showCanvas();\r
+ unHideMe($('result_low_hits'));\r
+ unHideMe($('result_zero_hits_msg'));\r
+ if(getTerm()) resultExpandSearch(); /* advanced search */\r
+}\r
+\r
+function resultExpandSearch() {\r
+ var top = findOrgDepth(globalOrgTree);\r
+ if(getDepth() == top) return;\r
+ unHideMe($('low_hits_expand_range'));\r
+ var par = $('low_hits_expand_link').parentNode;\r
+ var template = par.removeChild($('low_hits_expand_link'));\r
+\r
+ var bottom = getDepth();\r
+ while( top < bottom ) {\r
+ var a = {};\r
+ a[PARAM_DEPTH] = top;\r
+ var temp = template.cloneNode(true);\r
+ temp.appendChild(text(findOrgTypeFromDepth(top).opac_label()))\r
+ temp.setAttribute('href',buildOPACLink(a));\r
+ par.appendChild(temp);\r
+ top++;\r
+ }\r
+}\r
+\r
+function resultSuggestSearchClass() {\r
+ var stype = getStype();\r
+ if(stype == STYPE_KEYWORD) return;\r
+ var a = {}; var ref;\r
+ unHideMe($('low_hits_search_type'));\r
+ if(stype != STYPE_TITLE) {\r
+ ref = $('low_hits_title_search');\r
+ unHideMe(ref);\r
+ a[PARAM_STYPE] = STYPE_TITLE;\r
+ ref.setAttribute('href',buildOPACLink(a));\r
+ }\r
+ if(stype != STYPE_AUTHOR) {\r
+ ref = $('low_hits_author_search');\r
+ unHideMe(ref);\r
+ a[PARAM_STYPE] = STYPE_AUTHOR;\r
+ ref.setAttribute('href',buildOPACLink(a));\r
+ }\r
+ if(stype != STYPE_SUBJECT) {\r
+ ref = $('low_hits_subject_search');\r
+ unHideMe(ref);\r
+ a[PARAM_STYPE] = STYPE_SUBJECT;\r
+ ref.setAttribute('href',buildOPACLink(a));\r
+ }\r
+ if(stype != STYPE_KEYWORD) {\r
+ ref = $('low_hits_keyword_search');\r
+ unHideMe(ref);\r
+ a[PARAM_STYPE] = STYPE_KEYWORD;\r
+ ref.setAttribute('href',buildOPACLink(a));\r
+ }\r
+ if(stype != STYPE_SERIES) {\r
+ ref = $('low_hits_series_search');\r
+ unHideMe(ref);\r
+ a[PARAM_STYPE] = STYPE_SERIES;\r
+ ref.setAttribute('href',buildOPACLink(a));\r
+ }\r
+}\r
+\r
+function resultSuggestSpelling(r) {\r
+ var res = r.getResultObject();\r
+ var phrase = getTerm();\r
+ var words = phrase.split(/ /);\r
+\r
+ var newterm = "";\r
+\r
+ for( var w = 0; w < words.length; w++ ) {\r
+ var word = words[w];\r
+ var blob = grep(res, function(i){return (i.word == word);});\r
+ if( blob ) blob = blob[0];\r
+ else continue;\r
+ if( blob.word == word ) {\r
+ if( blob.suggestions && blob.suggestions[0] ) {\r
+ newterm += " " + blob.suggestions[0];\r
+ unHideMe($('did_you_mean'));\r
+ } else {\r
+ newterm += " " + word;\r
+ }\r
+ }\r
+ }\r
+ var cell = $('zero_hits_suggestions');\r
+ var s = res[0].suggestions;\r
+ for(var i in s) {\r
+ if(i==0) continue;\r
+ if(i==10) break; //limit suggestions\r
+ cell.appendChild(elem('a',{href:buildOPACLink({t:s[i]})},s[i]));\r
+ cell.appendChild(elem('br'));\r
+ }\r
+ if(newterm.toLowerCase().trim()!=getTerm().toLowerCase().trim()) unHideMe($('zero_hits_label1'));\r
+ if(res[0].suggestions && res[0].suggestions.length>0) unHideMe($('zero_hits_label2'));\r
+\r
+ var arg = {};\r
+ arg[PARAM_TERM] = newterm;\r
+ $('spell_check_link').setAttribute('href', buildOPACLink(arg));\r
+ $('spell_check_link').appendChild(text(newterm));\r
+}\r
+\r
+\r
+function resultPaginate() {\r
+ var o = getOffset();\r
+ var args = {};\r
+\r
+ if( !( ((o) + getDisplayCount()) >= getHitCount()) ) {\r
+\r
+ args[PARAM_OFFSET] = o + getDisplayCount();\r
+ args[PARAM_SORT] = SORT;\r
+ args[PARAM_SORT_DIR] = SORT_DIR;\r
+ args[PARAM_RLIST] = new CGI().param(PARAM_RLIST);\r
+\r
+ G.ui.result.next_link.setAttribute("href", buildOPACLink(args)); \r
+ addCSSClass(G.ui.result.next_link, config.css.result.nav_active);\r
+\r
+ $('next_link2').setAttribute("href", buildOPACLink(args)); \r
+ addCSSClass($('next_link2'), config.css.result.nav_active);\r
+\r
+ args[PARAM_OFFSET] = getHitCount() - (getHitCount() % getDisplayCount());\r
+\r
+ /* when hit count is divisible by display count, we have to adjust */\r
+ if( getHitCount() % getDisplayCount() == 0 ) \r
+ args[PARAM_OFFSET] -= getDisplayCount();\r
+ }\r
+\r
+ if( o > 0 ) {\r
+\r
+ var args = {};\r
+ args[PARAM_SORT] = SORT;\r
+ args[PARAM_SORT_DIR] = SORT_DIR;\r
+ args[PARAM_RLIST] = new CGI().param(PARAM_RLIST);\r
+\r
+ args[PARAM_OFFSET] = o - getDisplayCount();\r
+ G.ui.result.prev_link.setAttribute( "href", buildOPACLink(args)); \r
+ addCSSClass(G.ui.result.prev_link, config.css.result.nav_active);\r
+\r
+ $('prev_link2').setAttribute( "href", buildOPACLink(args)); \r
+ addCSSClass($('prev_link2'), config.css.result.nav_active);\r
+\r
+ args[PARAM_OFFSET] = 0;\r
+ G.ui.result.home_link.setAttribute( "href", buildOPACLink(args)); \r
+ addCSSClass(G.ui.result.home_link, config.css.result.nav_active);\r
+ }\r
+ \r
+ // pagination - google style\r
+ var pages = getHitCount() / getDisplayCount();\r
+ var cpage = (getOffset()/getDisplayCount()) + 1;\r
+ var start = 0;\r
+ pages = Math.floor(pages);\r
+ cpage = Math.floor(cpage);\r
+ var end = pages>9?8:pages;\r
+ \r
+ // narrow our window of visible page numbers to 9 - sets start and end pages for the loop\r
+ if(cpage>4) {\r
+ start = cpage-5;\r
+ end = cpage+3>pages?pages:cpage+3;\r
+ if(cpage+3>pages) { start = (cpage-5)-(cpage-pages+3); }\r
+ if(start<0) start=0;\r
+ }\r
+ \r
+ if(pages>0) {\r
+ var span = $('nav_pages');\r
+ var span2 = $('nav_pages2');\r
+ for(var i=start; i<=end; i++) {\r
+ var temp = elem('span',{style:'padding:0px 3px;'});\r
+ temp.style.padding='0px 3px';\r
+ args[PARAM_OFFSET] = getDisplayCount()*i;\r
+ if(i==cpage-1) { var link = text(i+1); temp.style.color="red" }\r
+ else var link = elem('a',{href:buildOPACLink(args)},i+1);\r
+ temp.appendChild(link);\r
+ span.appendChild(temp);\r
+ span2.appendChild(temp.cloneNode(true));\r
+ }\r
+ }\r
+ //////\r
+\r
+ if(getDisplayCount() < getHitCount()) {\r
+ unHideMe($('start_end_links_span'));\r
+ unHideMe($('start_end_links_span2'));\r
+ }\r
+\r
+ showCanvas();\r
+ try{searchTimer.stop()}catch(e){}\r
+}\r
+\r
+function buildunAPISpan (span, type, id) {\r
+ if(!span || !type || !id) return;\r
+ var cgi = new CGI();\r
+ var d = new Date();\r
+\r
+ addCSSClass(span,'unapi-id');\r
+\r
+ span.setAttribute(\r
+ 'title',\r
+ 'tag:' + cgi.server_name + ',' +\r
+ d.getFullYear() +\r
+ ':' + type + '/' + id\r
+ );\r
+}\r
+\r
+function unhideGoogleBooksLink (data) {\r
+ for ( var i in data ) {\r
+ //if (data[i].preview == 'noview') continue;\r
+\r
+ var gbspan = $n(document.documentElement, 'googleBooksLink-' + i);\r
+ var gba = $n(gbspan, "googleBooks-link");\r
+\r
+ gba.setAttribute(\r
+ 'href',\r
+ data[i].info_url\r
+ );\r
+ removeCSSClass( gbspan, 'hide_me' );\r
+ }\r
+}\r
+\r
+/* display the record info in the record display table 'pos' is the \r
+ zero based position the record should have in the display table */\r
+function resultDisplayRecord(rec, pos, is_mr) {\r
+ //fieldmapper.IDL.load(['mvr']);\r
+ if(rec == null || rec.__c) rec = new mvr(); /* so the page won't die if there was an error */\r
+ recordsHandled++;\r
+ recordsCache.push(rec);\r
+\r
+ var r = table.rows[pos + 1];\r
+ r.id += "_" + rec.doc_id();\r
+ var currentISBN = cleanISBN(rec.isbn());\r
+\r
+ if (googleBooksLink) {\r
+ var gbspan = $n(r, "googleBooksLink");\r
+ if (currentISBN && gbspan) {\r
+ gbspan.setAttribute('name', gbspan.getAttribute('name') + '-' + currentISBN );\r
+ if (isbnList) isbnList += ', ';\r
+ isbnList += currentISBN;\r
+ }\r
+ }\r
+\r
+ if (currentISBN && chilifresh && chilifresh != '(none)') {\r
+ var cfrow = $n(r, "chilifreshReview");\r
+ if (cfrow) {\r
+ removeCSSClass( cfrow, 'hide_me' );\r
+ }\r
+ var cflink = $n(r, "chilifreshReviewLink");\r
+ if (cflink) {\r
+ cflink.setAttribute(\r
+ 'id',\r
+ 'isbn_' + currentISBN\r
+ );\r
+ }\r
+ var cfdiv = $n(r, "chilifreshReviewResult");\r
+ if (cfdiv) {\r
+ cfdiv.setAttribute(\r
+ 'id',\r
+ 'chili_review_' + currentISBN\r
+ )\r
+ }\r
+ }\r
+\r
+ var pic = $n(r, config.names.result.item_jacket);\r
+ if (!pic) pic = elem("img");\r
+ //pic.setAttribute("src", buildISBNSrc(currentISBN));\r
+ pic.setAttribute("width",55);\r
+\r
+ var title_link = $n(r, config.names.result.item_title);\r
+ var author_link = $n(r, config.names.result.item_author);\r
+ var row_count = $n(r,"results_row_count");\r
+ var myListLink = $n(r,"result_my_list_link");\r
+ var reviewsLink = $n(r, 'reviews_and_more');\r
+ if(currentISBN) {\r
+ reviewsLink.href="http://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=KC72927&Password=CC14647&ItemKey="+currentISBN+"&Options=Y";\r
+ }\r
+\r
+ if( is_mr ) {\r
+ var onlyrec = onlyrecord[ getOffset() + pos ];\r
+ if(onlyrec) {\r
+ buildunAPISpan($n(r,'unapi'), 'biblio-record_entry', onlyrec);\r
+\r
+ var args = {};\r
+ args.page = RDETAIL;\r
+ args[PARAM_OFFSET] = 0;\r
+ args[PARAM_RID] = onlyrec;\r
+ args[PARAM_MRID] = rec.doc_id();\r
+ pic.parentNode.setAttribute("href", buildOPACLink(args));\r
+ title_link.setAttribute("href", buildOPACLink(args));\r
+ title_link.appendChild(text(normalize(truncate(rec.title(), 65))));\r
+ \r
+ } else {\r
+ buildunAPISpan($n(r,'unapi'), 'metabib-metarecord', rec.doc_id());\r
+\r
+ buildTitleLink(rec, title_link); \r
+ var args = {};\r
+ args.page = RRESULT;\r
+ args[PARAM_OFFSET] = 0;\r
+ args[PARAM_MRID] = rec.doc_id();\r
+ pic.parentNode.setAttribute("href", buildOPACLink(args));\r
+ }\r
+\r
+ } else {\r
+ buildunAPISpan($n(r,'unapi'), 'biblio-record_entry', rec.doc_id());\r
+\r
+ if(title_link) buildTitleDetailLink(rec, title_link); \r
+ var args = {};\r
+ args.page = RDETAIL;\r
+ args[PARAM_OFFSET] = 0;\r
+ args[PARAM_RID] = rec.doc_id();\r
+ pic.parentNode.setAttribute("href", buildOPACLink(args));\r
+\r
+ unHideMe($n(r,'place_hold_span'));\r
+ $n(r,'place_hold_link').setAttribute('href','javascript:holdsDrawEditor({record:"'+rec.doc_id()+'",type:"T"});');\r
+\r
+ /** BILL */\r
+ //dojo.require('openils.BibTemplate'); // -- this causes redundant requests per record - put in js_common.xml instead\r
+ setTimeout(\r
+ function () { \r
+ //new openils.BibTemplate({root : $n(r, 'bib_cn_list'), record : rec.doc_id()}).render();\r
+ new openils.BibTemplate({root : r, record : rec.doc_id()}).render();\r
+ },\r
+ 0\r
+ );\r
+ /** BILL */\r
+ }\r
+ \r
+ if(row_count) row_count.innerHTML = (pos+1)+getOffset();\r
+ if(myListLink) myListLink.setAttribute("href","javascript:addMyList("+rec.doc_id()+");")\r
+ title_link.setAttribute("title",rec.title());\r
+ buildSearchLink(STYPE_AUTHOR, rec.author(), author_link);\r
+\r
+ if(! is_mr ) {\r
+ $n(r, "results_pub_date").innerHTML = (!rec.pubdate())?"":rec.pubdate();\r
+ $n(r, "results_pub").innerHTML = (!rec.publisher())?"":rec.publisher();\r
+ $n(r, "results_isbn").innerHTML = (!currentISBN)?"":currentISBN;\r
+ $n(r, "results_edition").innerHTML = (!rec.edition())?"":rec.edition();\r
+ $n(r, "results_phys_desc").innerHTML = (!rec.physical_description())?"":rec.physical_description();\r
+ if(isInAnonList(parseInt(rec.doc_id()))) { \r
+ $n(r, 'result_my_list_link').innerHTML = '';\r
+ $n(r, 'result_my_list_link').appendChild(elem('img', {src:'/opac/skin/kcls/graphics/add_mylist_sel.gif'}, null));\r
+ }\r
+ \r
+ if(!isNull(rec.edition())) {\r
+ unHideMe( $n(r, "result_table_extra_span"));\r
+ $n(r, "result_table_edition_span").appendChild( text( rec.edition()) );\r
+ }\r
+ if(!isNull(rec.pubdate())) {\r
+ unHideMe( $n(r, "result_table_extra_span"));\r
+ unHideMe($n(r, "result_table_pub_span"));\r
+ $n(r, "result_table_pub_span").appendChild( text( rec.pubdate() ));\r
+ }\r
+ if(!isNull(rec.publisher()) ) {\r
+ unHideMe( $n(r, "result_table_extra_span"));\r
+ unHideMe($n(r, "result_table_pub_span"));\r
+ $n(r, "result_table_pub_span").appendChild( text( " " + rec.publisher() ));\r
+ }\r
+\r
+ if(!isNull(rec.physical_description()) ) {\r
+ unHideMe( $n(r, "result_table_extra_span"));\r
+ var t = " " + rec.physical_description();\r
+ //$n(r, "result_table_phys_span").appendChild( text(t.replace(/:.*/g,'')));\r
+ $n(r, "result_table_phys_span").appendChild( text(t));\r
+ }\r
+ }\r
+\r
+ resultBuildFormatIcons( r, rec, is_mr );\r
+ unHideMe(r);\r
+ runEvt("result", "recordDrawn", rec.doc_id(), title_link);\r
+\r
+ \r
+ if(resultPageIsDone()) {\r
+ runEvt('result', 'allRecordsReceived', recordsCache);\r
+ }\r
+}\r
+\r
+function _resultFindRec(id) {\r
+ for( var i = 0; i != recordsCache.length; i++ ) {\r
+ var rec = recordsCache[i];\r
+ if( rec && rec.doc_id() == id )\r
+ return rec;\r
+ }\r
+ return null;\r
+}\r
+\r
+\r
+function resultBuildFormatIcons( row, rec, is_mr ) {\r
+ var ress = "";\r
+ var imgEl = $n(row, "result_mat_type");\r
+ if(!imgEl) return;\r
+ \r
+ ress = getMarcData(rec.doc_id(),"998","d");\r
+ if(setFormatIcon(imgEl, ress)) unHideMe(imgEl);\r
+\r
+}\r
+\r
+function fetchGoogleBooksLink () {\r
+ return;\r
+ if (isbnList && googleBooksLink) {\r
+ var scriptElement = document.createElement("script");\r
+ scriptElement.setAttribute("id", "jsonScript");\r
+ scriptElement.setAttribute("src",\r
+ "https://books.google.com/books?bibkeys=" + \r
+ escape(isbnList) + "&jscmd=viewapi&callback=unhideGoogleBooksLink");\r
+ scriptElement.setAttribute("type", "text/javascript");\r
+ // make the request to Google Book Search\r
+ document.documentElement.firstChild.appendChild(scriptElement);\r
+ }\r
+}\r
+\r
+function resultPageIsDone(pos) {\r
+\r
+ return (recordsHandled == getDisplayCount() \r
+ || recordsHandled + getOffset() == getHitCount());\r
+}\r
+\r
+var resultCCHeaderApplied = false;\r
+\r
+/* -------------------------------------------------------------------- */\r
+/* dynamically add the copy count rows based on the org type 'countsrow' \r
+ is the row into which we will add TD's to hold the copy counts \r
+ This code generates copy count cells with an id of\r
+ 'copy_count_cell_<depth>_<pagePosition>' */\r
+function resultAddCopyCounts(rec, pagePosition) {\r
+\r
+ var r = table.rows[pagePosition + 1];\r
+ var countsrow = $n(r, config.names.result.counts_row );\r
+ var ccell = $n(countsrow, config.names.result.count_cell);\r
+\r
+ var nodes = orgNodeTrail(findOrgUnit(getLocation()));\r
+ var node = nodes[0];\r
+ var type = findOrgType(node.ou_type());\r
+ ccell.id = "copy_count_cell_" + type.depth() + "_" + pagePosition;\r
+ ccell.title = type.opac_label();\r
+ //addCSSClass(ccell, config.css.result.cc_cell_even);\r
+\r
+ var lastcell = ccell;\r
+ var lastheadcell = null;\r
+\r
+ var cchead = null;\r
+ var ccheadcell = null;\r
+ if(!resultCCHeaderApplied && !getLasso()) {\r
+ ccrow = $('result_thead_row');\r
+ ccheadcell = ccrow.removeChild($n(ccrow, "result_thead_ccell"));\r
+ var t = ccheadcell.cloneNode(true);\r
+ lastheadcell = t;\r
+ t.appendChild(text(type.opac_label()));\r
+ ccrow.appendChild(t);\r
+ resultCCHeaderApplied = true;\r
+ }\r
+}\r
+\r
+/* collect copy counts for a record using method 'methodName' */\r
+function resultCollectCopyCounts(rec, pagePosition, methodName) {\r
+ if(rec == null || rec.doc_id() == null) return;\r
+\r
+ var loc = getLasso();\r
+ if (loc) loc = -loc;\r
+ else loc= getLocation();\r
+\r
+ var req = new Request(methodName, loc, rec.doc_id(), getForm() );\r
+ req.request.userdata = [ rec, pagePosition ];\r
+ req.callback(resultHandleCopyCounts);\r
+ req.send();\r
+}\r
+\r
+function resultHandleCopyCounts(r) {\r
+ runEvt('result', 'copyCountsReceived', r.userdata[0], r.userdata[1], r.getResultObject()); \r
+}\r
+\r
+\r
+/* XXX Needs to understand Lasso copy counts... */\r
+/* display the collected copy counts */\r
+function resultDisplayCopyCounts(rec, pagePosition, copy_counts) {\r
+ if(copy_counts == null || rec == null) return;\r
+ var r = table.rows[pagePosition + 1];\r
+ var cnt_avail = $n(r, "copy_count_avail");\r
+ if(cnt_avail && copy_counts[0]) {\r
+ /*if(copy_counts[0].available)*/ cnt_avail.innerHTML = copy_counts[0].available+' cop'+(copy_counts[0].available==1?'y':'ies')+' available';\r
+ //else {\r
+ fieldmapper.standardRequest(['open-ils.circ','open-ils.circ.bre.holds.count'], {async:true, params:[rec.doc_id(), r.id], oncomplete: drawHoldsCount});\r
+ $n(r, 'copy_holds2').innerHTML = ' on first copy returned of '+copy_counts[0].count+' cop'+(copy_counts[0].count==1?'y':'ies');\r
+ //}\r
+ }\r
+}\r
+\r
+function drawHoldsCount(r) {\r
+ if(!r.params[1]) return;\r
+ var row = $(r.params[1]);\r
+ if(!row) return;\r
+ var span = $n(row, 'copy_holds');\r
+ var resp = r.recv().content();\r
+ span.innerHTML = resp+' hold'+(resp==1?'':'s')+' ';\r
+}\r
+\r
+function showDetailedInfo(bool) {\r
+ var simple_lbl = $('results_simple_lbl');\r
+ var simple_link = $('results_simple_link');\r
+ var detail_lbl = $('results_detail_lbl');\r
+ var detail_link = $('results_detail_link');\r
+ if(!simple_lbl || !simple_link || !detail_lbl || !detail_link) return;\r
+ \r
+ var tbls = dojo.query('.results_info_table',$('result_table'));\r
+ if(bool) {\r
+ tbls.forEach(function(node, index, arr){\r
+ unHideMe($n(node,'results_pub_tr'));\r
+ unHideMe($n(node,'results_isbn_tr'));\r
+ unHideMe($n(node,'results_edition_tr'));\r
+ unHideMe($n(node,'results_phys_desc_tr'));\r
+ });\r
+ hideMe(simple_lbl);\r
+ hideMe(detail_link);\r
+ unHideMe(simple_link);\r
+ unHideMe(detail_lbl);\r
+ } else {\r
+ tbls.forEach(function(node, index, arr){\r
+ hideMe($n(node,'results_pub_tr'));\r
+ hideMe($n(node,'results_isbn_tr'));\r
+ hideMe($n(node,'results_edition_tr'));\r
+ hideMe($n(node,'results_phys_desc_tr'));\r
+ });\r
+ unHideMe(simple_lbl);\r
+ unHideMe(detail_link);\r
+ hideMe(simple_link);\r
+ hideMe(detail_lbl);\r
+ }\r
+}\r
+\r
+function fetchChiliFreshReviews() {\r
+ if (chilifresh && chilifresh != '(none)') {\r
+ try { chili_init(); } catch(E) { dump(E + '\n'); }\r
+ }\r
+}\r
+\r
+function postResultsCollect() {\r
+ var it = getCacheValue('showHoldEditor');\r
+ if(it) {\r
+ setCacheValue('showHoldEditor', null);\r
+ holdsDrawEditor({record:it.record, type:it.type});\r
+ }\r
+}\r