Search Results for caribbean heiress (2024)

'); addToAccordion('#detail_accordion'+detail, accordionHeader, accordionContent); NoveListSelectEnrichment(detailElement.childNodes[0].innerHTML); }}function NoveListSelectEnrichment(isbn) { if (typeof(novSelect) == 'undefined') { currentNovSelectAttempt++; if(currentNovSelectAttempt<= 10) { setTimeout("NoveListSelectEnrichment("+isbn+")", 250); } } else { novSelect.loadContentForISBN(String(isbn), novelistProfile, novelistPassword); }}// Important: Modifications to this file may be overwritten during an upgrade.// If you want to customize this widget and have those modifications persist through upgrades,// make a copy of this widget and make modifications to the copied widget.// You can then assign the copied widget to the detail or search result displays you want.if('undefined' === typeof eRC_PreviewButton) { eRC_PreviewButton = { ercPreviewButtonClass:'ercPreviewButton', addPreviewButtonToResult:function(resultId) { eRC_Base.getTitleData(function(data){ var hitlistOrDetail = 'detail'; if (resultId.match(/hitlist/)) { hitlistOrDetail = 'hitlist'; } var resultIndex = resultId.replace(hitlistOrDetail, ''); if(data && data.previews && data.previews.length > 0) { if (com_sirsi_ent_page.isMobile) { var ercPreviewActions = ResultActions.asyncResultActions['ERC_PREVIEW']; if (!ercPreviewActions) { ResultActions.asyncResultActions['ERC_PREVIEW'] = {}; ercPreviewActions = ResultActions.asyncResultActions['ERC_PREVIEW']; } ercPreviewActions['result' + resultIndex] = {'action': eRC_PreviewButton.getErcPreviewFormats}; // Show the preview button. ResultActions.updateResultAction('ERC_PREVIEW', 'result' + resultIndex, hitlistOrDetail, true, 'Preview'); } else { var resultNumber = resultId.match(/\d+/)[0]; if (hitlistOrDetail.match(/hitlist/)) { // add button to button column $J('#results_right' + resultId).append('

'); } else { // add button to button column $J('#detailActions' + resultId).append('

'); } } } else { ResultActions.updateResultAction('ERC_PREVIEW', 'result' + resultIndex, hitlistOrDetail, false); } }, resultId); }, getErcPreviewFormats:function(resultIndex, hitlistOrDetail) { var resultId = hitlistOrDetail + resultIndex; eRC_Dialogs.openFormatDialog(function(selectedFormat) { if(!selectedFormat || selectedFormat.error) { return; } var message; if('DOWNLOAD' === selectedFormat.action) { message = 'Your download will start shortly.'; window.location.assign(selectedFormat.url); } else if('REDIRECT' === selectedFormat.action) { message = 'You will be redirected to your content.'; safeWindowOpen(selectedFormat.url, '_blank'); } if(message) { if (com_sirsi_ent_page.isMobile) { showMessageModal('Preview', [message], false); } else { eRC_Dialogs.openMessageDialog(null, resultId, {message:message, title:'Preview'}); } } }, resultId, true); } };}// Important: Modifications to this file may be overwritten during an upgrade.// If you want to customize this widget and have those modifications persist through upgrades,// make a copy of this widget and make modifications to the copied widget.// You can then assign the copied widget to the detail or search result displays you want.if('undefined' === typeof eRC_DownloadButton) { eRC_DownloadButton = { reloadNeeded:false, ercDownloadButtonClass:'ercDownloadButton', addButtonToResult:function(resultId) { eRC_Base.getTitleData(function(data) { eRC_DownloadButton.addValidButton(resultId, data); },resultId); }, //GUI callbacks handleDownloadButtonClick:function(resultIndex, hitlistOrDetail, params) { var resultId = hitlistOrDetail + resultIndex; if(params.needLogin) { com_sirsi_ent_login.loginFirst(function(needReload) { eRC_DownloadButton.reloadNeeded = needReload; eRC_Dialogs.openFormatDialog(function(format, duration) { eRC_DownloadButton.handleFormatResponse(resultId, format, duration, params.needPin); }, resultId); }); return; } eRC_Dialogs.openFormatDialog(function(format, duration) { eRC_DownloadButton.handleFormatResponse(resultId, format, duration, params.needPin); }, resultId); }, handleHoldButtonClick:function(resultIndex, hitlistOrDetail) { var resultId = hitlistOrDetail + resultIndex; com_sirsi_ent_login.loginFirst(function(needReload) { eRC_DownloadButton.reloadNeeded = needReload; eRC_Dialogs.openHoldDialog(function(emailHold, autoCheckout) { eRC_DownloadButton.handleEmailHoldResponse(resultId, emailHold, autoCheckout); }, resultId); }); }, handleFormatResponse:function(resultId, format, duration, needPin) { if(format && !format.error) { eRC_Dialogs.openAccountDialog(function(resourceRetrievalUrl) { eRC_DownloadButton.handleAccountDialogResponse(resultId, resourceRetrievalUrl, needPin); }, resultId, format, duration); } else { if(eRC_DownloadButton.reloadNeeded) { window.location.reload(); } } }, handleEmailHoldResponse:function(resultId, emailHold, autoCheckout) { if(emailHold && !emailHold.error) { eRC_Dialogs.showLoad(); eRC_Base.getPlaceHoldResponse(function(responseJson) { eRC_DownloadButton.handleHoldResponse(resultId, responseJson); }, resultId, emailHold, autoCheckout); } else { if(eRC_DownloadButton.reloadNeeded) { window.location.reload(); } } }, handleHoldResponse:function(resultId, responseJson) { // we might be using this, set it up com_sirsi_ent_strings.setStringFormatFunc_JavaStyle(); var title = 'Error'; var message; var action = function() {}; //a do-nothing function var error; if(!responseJson || responseJson.error) { error = true; message = 'There was a problem placing your hold. Please try again later or contact your library for assistance.'; if(responseJson && responseJson.error) { message = responseJson.error; } } else { title = 'Place Hold'; message = responseJson.message; } // we're done using this, revert com_sirsi_ent_strings.resetString_dot_format(); eRC_Dialogs.hideLoad(); if (com_sirsi_ent_page.isMobile) { showMessageModal(title, [message], error, function() { if(eRC_DownloadButton.reloadNeeded) { window.location.reload(); } }); } else { eRC_Dialogs.openMessageDialog(function() { if(eRC_DownloadButton.reloadNeeded) { window.location.reload(); } }, resultId, {message:message, title:title}, responseJson); } if(!error && eRC_Dialogs.messageDialogTimeoutMS) { setTimeout(function() { eRC_Dialogs.closeMessageDialog(resultId); }, eRC_Dialogs.messageDialogTimeoutMS); } action(); }, handleAccountDialogResponse:function(resultId, resourceRetrievalUrl, needPin) { if(resourceRetrievalUrl && !resourceRetrievalUrl.error) { eRC_Dialogs.showLoad(); eRC_Base.getDownloadResponse(function(responseJson) { eRC_DownloadButton.handleCheckoutResponse(resultId, responseJson); }, resourceRetrievalUrl, needPin); } else { eRC_Dialogs.openFormatDialog(function(format, duration, onlyOne) { if(onlyOne) { if(eRC_DownloadButton.reloadNeeded) { window.location.reload(); } } else { eRC_DownloadButton.handleFormatResponse(resultId, format, duration, needPin); } }, resultId); } }, handleCheckoutResponse:function(resultId, responseJson) { var title = 'Error'; var action = function() {}; //a do-nothing function var error; if (com_sirsi_ent_page.isMobile) { var buttonLabel; var buttonClick; var messages = []; if(!responseJson || responseJson.error) { error = true; messages.push(responseJson.error ? responseJson.error : 'There was an error communicating with eResource Central.'); if(responseJson && responseJson.description) { messages.push(responseJson.description); } } else if(responseJson.hasOwnProperty('success') && !responseJson.success) { error = true; messages.push(responseJson.message.value ? responseJson.message.value: 'There was an error communicating with eResource Central.'); if(responseJson && responseJson.description) { messages.push(responseJson.description); } } else if('SYNC' === responseJson.action) { title = 'Checkout'; messages.push(responseJson.message.value); } else if('DOWNLOAD' === responseJson.action) { title = 'Download'; messages.push('Your download will start shortly, or you may click the button below.'); action = function() { safeWindowOpen(responseJson.url, '_blank'); }; buttonLabel = 'Download'; buttonClick = "safeWindowOpen('" + responseJson.url + "', '_blank');"; } else if('REDIRECT' === responseJson.action) { title = 'Redirecting'; messages.push('You will be redirected to your content, or you may click the button below.'); action = function() { safeWindowOpen(responseJson.url, '_blank'); }; buttonLabel = 'Open Content'; buttonClick = "safeWindowOpen('" + responseJson.url + "', '_blank');"; } else if (responseJson.message) { error = true; messages.push(responseJson.message); } else if (responseJson.cause && responseJson.cause.message) { error = true; messages.push(responseJson.cause.message); } else { error = true; messages.push('There was an error accessing your title. Please try again later. If the problem persists, contact your library for assistance.'); } eRC_Dialogs.hideLoad(); showMessageModal(title, messages, error, function() { if(eRC_DownloadButton.reloadNeeded) { window.location.reload(); } }, false, buttonLabel, buttonClick); } else { var message; if(!responseJson || responseJson.error) { error = true; message = responseJson.error ? responseJson.error : 'There was an error communicating with eResource Central.'; if(responseJson && responseJson.description) { message += '

' + responseJson.description; } } else if(responseJson.hasOwnProperty('success') && !responseJson.success) { error = true; message = responseJson.message.value ? responseJson.message.value: 'There was an error communicating with eResource Central.'; if(responseJson && responseJson.description) { message += '

' + responseJson.description; } } else if('SYNC' === responseJson.action) { title = 'Checkout'; message = responseJson.message.value; } else if('DOWNLOAD' === responseJson.action) { title = 'Download'; message = 'Your download will start shortly, or you may click the button below.'; action = function() { safeWindowOpen(responseJson.url, '_blank'); }; message += '

'; } else if('REDIRECT' === responseJson.action) { if (responseJson.isIFrameDisplay) { title = 'Checkout'; message = '

'; } else { title = 'Redirecting'; message = 'You will be redirected to your content, or you may click the button below.'; action = function () { safeWindowOpen(responseJson.url, '_blank'); }; message += '

'; } } else if (responseJson.message) { error = true; message = responseJson.message; } else if (responseJson.cause && responseJson.cause.message) { error = true; message = responseJson.cause.message; } else { error = true; message = 'There was an error accessing your title. Please try again later. If the problem persists, contact your library for assistance.'; } eRC_Dialogs.hideLoad(); eRC_Dialogs.openMessageDialog(function() { if(eRC_DownloadButton.reloadNeeded) { window.location.reload(); } }, resultId, {message:message, title:title}, responseJson && 'SYNC' === responseJson.action, responseJson.isIFrameDisplay); } if(!error && eRC_Dialogs.messageDialogTimeoutMS) { setTimeout(function() { eRC_Dialogs.closeMessageDialog(resultId); }, eRC_Dialogs.messageDialogTimeoutMS); } action(); }, //helper funcs addValidButton:function(resultId, ercItem) { if(!resultId) { return; } var hitlistOrDetail = 'detail'; if(resultId.match(/hitlist/)) { hitlistOrDetail = 'hitlist'; } var resultIndex = resultId.replace(hitlistOrDetail, ''); if($J('#content.mobile').length) { var actionResultId = 'result' + resultIndex; if(!ercItem) { ResultActions.updateResultAction('ERC_FULL', actionResultId, hitlistOrDetail, false); return; } if(ercItem.status && 'OK' === ercItem.status && ercItem.formats && ercItem.formats.length > 0) { var ercDownloadOrHoldActions = ResultActions.asyncResultActions['ERC_FULL']; if(!ercDownloadOrHoldActions) { ResultActions.asyncResultActions['ERC_FULL'] = {}; ercDownloadOrHoldActions = ResultActions.asyncResultActions['ERC_FULL']; } var buttonLabel; if(ercItem.availability && ercItem.availability.available) { if (ercItem.availability.downloadText) { buttonLabel = ercItem.availability.downloadText; } else { buttonLabel = 'Download'; } var params = {}; for(var i = 0; i < ercItem.formats.length; i++) { var auth = ercItem.formats[i].authentication; if(auth && (auth.patronId || (auth.accountsUrl && (auth.ereaderAccount || auth.partnerAccount)))) { params['needLogin'] = true; if(auth.patronPin) { params['needPin'] = true; } break; } } ercDownloadOrHoldActions[actionResultId] = {'action': eRC_DownloadButton.handleDownloadButtonClick, 'params': params}; } else if (ercItem.holdable) { buttonLabel = 'Place Hold'; ercDownloadOrHoldActions[actionResultId] = {'action': eRC_DownloadButton.handleHoldButtonClick}; } else { ResultActions.updateResultAction('ERC_FULL', actionResultId, hitlistOrDetail, false); return; } // Show the button. ResultActions.updateResultAction('ERC_FULL', actionResultId, hitlistOrDetail, true, buttonLabel); } else { ResultActions.updateResultAction('ERC_FULL', actionResultId, hitlistOrDetail, false); } } else if(!ercItem) { return; } else if(ercItem.status && 'OK' === ercItem.status && ercItem.formats && ercItem.formats.length > 0) { var buttonLabel = 'Place Hold'; var onClickText = 'javascript: '; if(ercItem.availability && ercItem.availability.available) { if (ercItem.availability.downloadText) { buttonLabel = ercItem.availability.downloadText; } else { buttonLabel = 'Download'; } onClickText += "$(this).focus();eRC_DownloadButton.handleDownloadButtonClick('" + resultIndex + "','" + hitlistOrDetail + "',"; var params = {}; for(var i = 0; i < ercItem.formats.length; i++) { var auth = ercItem.formats[i].authentication; if(auth && (auth.patronId || (auth.accountsUrl && (auth.ereaderAccount || auth.partnerAccount)))) { params['needLogin'] = true; if(auth.patronPin) { params['needPin'] = true; } break; } } onClickText += JSON.stringify(params) + ");"; } else if (ercItem.holdable) { onClickText += "$(this).focus();eRC_DownloadButton.handleHoldButtonClick('" + resultIndex + "','" + hitlistOrDetail + "');"; } if(onClickText.substr(12)) { // if there's no onClick text besides 'javascript: ', don't bother with a button eRC_DownloadButton.showButton(resultId, buttonLabel, onClickText); } } }, showButton:function(resultId, displayText, onClickText) { var matches = resultId.match(/^(detail|hitlist)(\d+)$/); if (matches) { var buttonId = resultId+eRC_DownloadButton.ercDownloadButtonClass; var button = document.getElementById(buttonId); if(!button) { button = document.createElement('button'); button.setAttribute('id', buttonId); button.setAttribute('class', eRC_DownloadButton.ercDownloadButtonClass+' button'); var parentJsId; if('detail' === matches[1]) { parentJsId = '#detailActions' + matches[0]; } else { parentJsId = '#results_cell' + matches[2] + ' .results_right'; } $J(parentJsId).append(button); } button.innerHTML = displayText; button.setAttribute('onClick',onClickText); $J(button).show(); } }, };}function showHoldings(){if(window.location.href.indexOf('lm=TABS_DIGITAL')==-1){ //DO NOT RUN THIS ON THEIR DIGITAL CONTENT SEARCH TAB, WHERE SOME TITLES ARE FROM THE ILS// json calls to to retrieve location, library and item type policiesjQuery.getJSON('https://sdws06.sirsidynix.net/lmac_ilsws/rest/admin/lookupLocationPolicyList?clientID=DS_CLIENT&json=true&callback=?',function(data){LocationList=data.policyInfo; jQuery.getJSON('https://sdws06.sirsidynix.net/lmac_ilsws/rest/admin/lookupLibraryPolicyList?clientID=DS_CLIENT&json=true&callback=?',function(data){ LibraryList=data.policyInfo; jQuery.getJSON('https://sdws06.sirsidynix.net/lmac_ilsws/rest/admin/lookupItemTypePolicyList?clientID=DS_CLIENT&json=true&callback=?',function(data){ ItemTypeList=data.policyInfo; // wait for page to finish loading jQuery(window).ready(function(){ //jQuery('#results_wrapper').ready(function(){ // loops through each title in results and inserts link to detail display then holdings insertLinks(); }); }); });});} //END LIMIT CHECK}function insertLinks(){ // loop through dom for each item in results jQuery('div.cell_wrapper').each(function(){ // get the profile name var theProfile = com_sirsi_ent_page.friendlyUrl; theProfile = theProfile.toUpperCase(); //get the catkey var catKey=jQuery(this).find('.DOC_ID_value').text().split(':')[1]; var hitNum = jQuery(this).find('.results_cell').attr('id'); var hitNum = hitNum.replace(/results_cell/, ""); if (catKey > 0) { // insert a hook for later calls jQuery(this).find('div.results_bio').append(''); //jQuery(this).find('div.results_right').after('

'); // get item holdings data getCopies(catKey,theProfile, hitNum); } // end loop through dom });}function getCopies(catKey,theProfile, hitNum){var herelib;var branchlib;var nearlib;if (theProfile == "CARTERET") { herelib = "CARTERET"; branchlib = ""; nearlib = "";}else if (theProfile == "CLARK") { herelib = "CLARK"; branchlib = ""; nearlib = "WESTFIELD";}else if (theProfile == "CRANBURY") { herelib = "CRANBURY"; branchlib = ""; nearlib = "";}else if (theProfile == "DUNELLEN") { herelib = "DUNELLEN"; branchlib = ""; nearlib = "";}else if (theProfile == "CRANFORD") { herelib = "CRANFORD"; branchlib = ""; nearlib = "FANWOOD,SCOTCHPL";}else if (theProfile == "EDISONTOWNSHIP") { herelib = "EPL-MAIN"; branchlib = "EPL-NORTH,EPL-CLARA,EPL-BKM,"; nearlib = "METUCHEN,";}else if (theProfile == "EASTBRUNSWICK" || theProfile == "EASTBRUNS_OPAC") { herelib = "EASTB"; branchlib = ""; nearlib = "MILLTOWN,SPOTSWOOD,OB-CENTRAL,MONROE";}else if (theProfile == "ELIZABETH") { herelib = "ELIZMAIN"; branchlib = "ELIZELMORA,ELIZLACORT,ELIZPORT,"; nearlib = "ROSELLE,ROSPARK,KENILWORTH,CARTERET,SPRINGFIELD, ";}else if (theProfile == "FANWOOD") { herelib = "FANWOOD"; branchlib = ""; nearlib = "CRANFORD,SPRINGFIELD,SCOTCHPL";}else if (theProfile == "HPPL") { herelib = "HPPL"; branchlib = ""; nearlib = "EPL-MAIN,METUCHEN";}else if (theProfile == "JAMESBURG") { herelib = "JAMESBURG"; branchlib = ""; nearlib = "";}else if (theProfile == "KENILWORTH") { herelib = "KENILWORTH"; branchlib = ""; nearlib = "";}else if (theProfile == "KEYPORT") { herelib = "KEYPORT"; branchlib = ""; nearlib = "";}else if (theProfile == "LONGBRANCH") { herelib = "LBPL"; branchlib = "LBPL-ELBRN,"; nearlib = "";}else if (theProfile == "EDISONBKM") { herelib = "EPL-BKM"; branchlib = "EPL-MAIN,EPL-NORTH,EPL-CLARA,"; nearlib = "METUCHEN,";}else if (theProfile == "MATAWAN") { herelib = "MAPL"; branchlib = ""; nearlib = "OB-CENTRAL,OB-LH,KEYPORT,";}else if (theProfile == "MCC") { herelib = "MCC"; branchlib = ""; nearlib = "EPL-MAIN,EPL-NORTH,EPL-CLARA,";}else if (theProfile == "METUCHEN") { herelib = "METUCHEN"; branchlib = ""; nearlib = "EPL-MAIN,EPL-NORTH,EPL-CLARA,MCC,";}else if (theProfile == "MDSX") { herelib = "MDSX"; branchlib = ""; nearlib = "";}else if (theProfile == "PLAINFIELD" || theProfile == "PLAINFIELD_OPAC" || theProfile == "PLAINFIELD_OPAC_ADV") { herelib = "PLAINFIELD"; branchlib = ""; nearlib = "";}else if (theProfile == "MILLTOWN") { herelib = "MILLTOWN"; branchlib = ""; nearlib = "EASTB";}else if (theProfile == "MONROE") { herelib = "MONROE"; branchlib = "MONROE-BKM,"; nearlib = "EASTB,";}else if (theProfile == "NEWBRUNSWICK") { herelib = "NEWBRUNSWICK"; branchlib = ""; nearlib = "NORTHBRUNSWICK";}else if (theProfile == "NORTHBRUNSWICK") { herelib = "NOBR"; branchlib = ""; nearlib = "NEWBRUNSWICK,";}else if (theProfile == "OLDCENTRAL") { herelib = "OB-CENTRAL"; branchlib = "OB-LH,"; nearlib = "MAPL,KEYPORT,EASTB,";}else if (theProfile == "PERTH") { herelib = "PERTH"; branchlib = ""; nearlib = "";}else if (theProfile == "PISCATAWAY") { herelib = "PISC-KEN"; branchlib = "PISC-WES,"; nearlib = "EPL-MAIN,";}else if (theProfile == "PLAINSBORO") { herelib = "PLAINSBORO"; branchlib = ""; nearlib = "";}else if (theProfile == "REDBANK") { herelib = "RBANK"; branchlib = ""; nearlib = "LBPL,";}else if (theProfile == "ROSELLE") { herelib = "ROSELLE"; branchlib = ""; nearlib = "";}else if (theProfile == "ROSPARK") { herelib = "ROSPARK"; branchlib = ""; nearlib = "";}else if (theProfile == "SOUTHAMBOY") { herelib = "SAMB"; branchlib = ""; nearlib = "";}else if (theProfile == "SAYREVILLE") { herelib = "SAYREVILLE"; branchlib = ""; nearlib = "";}else if (theProfile == "SANDBOX") { herelib = "EASTB"; branchlib = ""; nearlib = "";}else if (theProfile == "LMXAC") { herelib = "LMXAC"; branchlib = ""; nearlib = "EPL-NORTH,EPL-CLARA,EPL-MAIN";}else if (theProfile == "SCOTCHPLAINS") { herelib = "SCOTCHPL"; branchlib = ""; nearlib = "CRANFORD,SPRINGFIELD,FANWOOD";}else if (theProfile == "SOUTHPLAINFIELD") { herelib = "SOPPL"; branchlib = ""; nearlib = "";}else if (theProfile == "SOUTHBRUNSWICK" || theProfile == "SOUTHBRUNSWICK_OPAC") { herelib = "SBPL-MAIN"; branchlib = "SBPL-BKM,"; nearlib = "";}else if (theProfile == "SOUTHRIVER") { herelib = "SRIVER"; branchlib = ""; nearlib = "";}else if (theProfile == "SPOTSWOOD") { herelib = "SPOTSWOOD"; branchlib = ""; nearlib = "MILLTOWN,EASTB,";}else if (theProfile == "SPRINGFIELD") { herelib = "SPRING"; branchlib = ""; nearlib = "";}else if (theProfile == "WESTFIELD") { herelib = "WESTFIELD"; branchlib = ""; nearlib = "CLARK";}else { herelib = "LMXAC"; branchlib = ""; nearlib = "";}// json call to web services api and loop through resultsjQuery.getJSON('https://sdws06.sirsidynix.net/lmac_ilsws/rest/standard/lookupTitleInfo?clientID=DS_CLIENT&titleID='+catKey+'&includeItemInfo=true&marcEntryFilter=full&json=true&callback=?',function(data){// create list for itemsvar itemsArray = [];// list for items at local library or group of libraries (based on profile)var itemsArrayTop = [];// list for items at local library or group of libraries (based on profile)var itemsArrayBranch = [];// list for items at related or nearby libraries (based on profile)var itemsArrayMiddle = [];// list for items that are eresourcesvar eresourcesArray = [];//jump down into array returned by jsonvar titleInfo = data.TitleInfo[0];var copyInfo = data.TitleInfo[0].CallInfo;//var mhldInfo = titleInfo.MarcHoldingsInfo;//if (mhldInfo) {// jQuery('#copies_'+catKey).before('

//

');// getMarcHoldings(catKey,mhldInfo,theProfile,hitNum,herelib,branchlib,nearlib);//}// loop through copyInfo array returned by jsonjQuery.each(copyInfo,function(i,value){// get library descriptionvar libID = this.libraryID;var LibraryDesc = getDescription(this.libraryID,LibraryList);// get call numbervar callInfo=this.callNumber;if (this.numberOfCopies > 0) {// loop through itemInfo array returned by jsonjQuery.each(value.ItemInfo,function(){// get home locationvar HomeLocDesc = getDescription(this.homeLocationID,LocationList);// get current locationvar CurrentLocDesc = getDescription(this.currentLocationID,LocationList);// get item typevar ItemTypeDesc = getDescription(this.itemTypeID,ItemTypeList);if (this.currentLocationID == "CHECKEDOUT") { CurrentLocDesc = "Checked Out";}if (this.reshelvingLocationID) { CurrentLocDesc = getDescription(this.reshelvingLocationID,LocationList);}// replace some annoying labels from Symphony policies with Enterprise friendly onesLibraryDesc = cleanupLibraryDesc(HomeLocDesc,LibraryDesc);HomeLocDesc = cleanupLocDesc(HomeLocDesc);ItemTypeDesc = cleanupItemTypeDesc(ItemTypeDesc);CurrentLocDesc = cleanupLocDesc(CurrentLocDesc);// get public note if it existsvar itemNote='';if (this.publicNote) {itemNote = ' ('+this.publicNote+')';}// create status if current and home location are not equalvar itemStatus='';if (CurrentLocDesc!=HomeLocDesc) {itemStatus = CurrentLocDesc;}else {itemStatus = HomeLocDesc;}// get due date and add to status// if (this.dueDate) {// var date = new Date(this.dueDate);// itemStatus = '--Due '+(date.getMonth()+1)+'/'+date.getDate()+'/'+ date.getFullYear();// }if (libID == herelib) { var thisLine = '

'+LibraryDesc+''+callInfo+'' + ItemTypeDesc +'' + itemNote + ''+itemStatus+'

'; itemsArrayTop.push(thisLine);}else if(branchlib.indexOf(libID + ',') > -1) { var thisLine = '

'+LibraryDesc+''+callInfo+'' + ItemTypeDesc +'' + itemNote +''+itemStatus+'

'; itemsArrayBranch.push(thisLine);}else if(nearlib.indexOf(libID + ',') > -1) { var thisLine = '

'+LibraryDesc+''+callInfo+'' + ItemTypeDesc +'' + itemNote +''+itemStatus+'

'; itemsArrayMiddle.push(thisLine);}else { var thisLine = '

'; itemsArray.push(thisLine);}// end json itemInfo loop});}else { // call number with zero copies ItemTypeDesc = "On Order"; itemNote = ""; itemStatus = " Being acquired by the library"; if (libID == herelib) { var thisLine = '

'+LibraryDesc+''+callInfo+'' + ItemTypeDesc +'' + itemNote + ''+itemStatus+'

'; itemsArrayTop.push(thisLine); } else if(branchlib.indexOf(libID + ',') > -1) { var thisLine = '

'+LibraryDesc+''+callInfo+'' + ItemTypeDesc +'' + itemNote +''+itemStatus+'

'; itemsArrayBranch.push(thisLine); } else if(nearlib.indexOf(libID + ',') > -1) { var thisLine = '

'+LibraryDesc+''+callInfo+'' + ItemTypeDesc +'' + itemNote +''+itemStatus+'

'; itemsArrayMiddle.push(thisLine); } else { var thisLine = '

'; itemsArray.push(thisLine); }}// end json copyInfo loop});//// sort lines by library//itemsArrayTop.sort(// function(a, b) {// if (a.toLowerCase() < b.toLowerCase()) return -1;// if (a.toLowerCase() > b.toLowerCase()) return 1;// return 0;// }//);//// sort lines by library//itemsArrayBranch.sort(// function(a, b) {// if (a.toLowerCase() < b.toLowerCase()) return -1;// if (a.toLowerCase() > b.toLowerCase()) return 1;// return 0;// }//);//// sort lines by library//itemsArrayMiddle.sort(// function(a, b) {// if (a.toLowerCase() < b.toLowerCase()) return -1;// if (a.toLowerCase() > b.toLowerCase()) return 1;// return 0;// }//);//// sort lines by libraryitemsArray.sort( function(a, b) { if (a.toLowerCase() < b.toLowerCase()) return -1; if (a.toLowerCase() > b.toLowerCase()) return 1; return 0; });if ((itemsArrayTop.length != 0)||(itemsArrayBranch.length != 0)||(itemsArrayMiddle.length !=0)||(itemsArray.length != 0)) {var itemsOutputTop = itemsArrayTop.join("\n");var itemsOutputBranch = itemsArrayBranch.join("\n");var itemsOutputMiddle = itemsArrayMiddle.join("\n");var itemsOutput = itemsArray.join("\n");//var moreCopiesCount = itemsArrayMiddle.length + itemsArray.length;var moreCopiesCount = itemsArray.length;jQuery('#startlink_'+catKey).remove();//var myheight = jQuery('div.results_bio').height();//jQuery('#copies_'+catKey).append('

');var divwidth = 625var tablewidth = 600;if(window.location.pathname.search("mylists") > 0) { divwidth = 585; tablewidth = 560;}jQuery('#copies_'+catKey).append('

');if ((itemsOutputTop != "" || itemsOutputBranch != "" || itemsOutputMiddle != "" || itemsOutput != "") && herelib != "CCS") { jQuery('#copies_'+catKey).append('

' + itemsOutputTop + itemsOutputBranch + itemsOutputMiddle + itemsOutput + '
libraryCall Numberitem typeitem notesstatus

');}// ### uncomment if this code replaces code on Details display, so as to always display other libraries' holdings//if (itemsArray.length !=0) {//jQuery('#startcopies_'+catKey).append('

See holdings at other libraries

');// } if (itemsArray.length !=0) { if (herelib != "CCS") { jQuery('#copies_'+catKey).after('

'); if (itemsArrayTop.length == 0 && itemsArrayMiddle == 0) { moreCopies(catKey); jQuery('.morecopies_'+catKey).show(); jQuery('#morelink_'+catKey).hide(); } } else {// jQuery('.morecopies_'+catKey).show(); } } var x1 = jQuery('#copies_' + catKey + ' .detailItems').offset().left; var y1 = jQuery('#copies_' + catKey + ' .detailItems').offset().top; var h1 = jQuery('#copies_' + catKey + ' .detailItems').outerHeight(true); var w1 = jQuery('#copies_' + catKey + ' .detailItems').outerWidth(true); var b1 = y1 + h1; var r1 = x1 + w1; var x2 = jQuery('#results_cell' + hitNum + ' .results_right').offset().left; var y2 = jQuery('#results_cell' + hitNum + ' .results_right').offset().top; var h2 = jQuery('#results_cell' + hitNum + ' .results_right').outerHeight(true); var w2 = jQuery('#results_cell' + hitNum + ' .results_right').outerWidth(true); var b2 = y2 + h2; var r2 = x2 + w2; if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2) { //jQuery('#copies_'+catKey).append('

'); } else { //jQuery('#copies_'+catKey).append('

'); jQuery('#copies_'+catKey+' .vertspacer').height(b2-y1+12); }}// end json getJSON loop});}function moreCopies(catKey){// executed when you click on the More Copies link// show the hidden copies// insert a Hide copies link// the style overflow visible part is to fix css problem in ie8jQuery('.morecopies_'+catKey).show();jQuery('#copies_'+catKey).before('

');jQuery('#morelink_'+catKey).hide();jQuery('.cell_wrapper').attr("style","overflow:visible/0;");return false;}function hideCopies(catKey){// executed when you click on the Hide Copies link// hide the additiontal copies// insert a More copies link// the style overflow visible part is to fix css problem in ie8jQuery('.morecopies_'+catKey).hide();jQuery('#morelink_'+catKey).show();jQuery('#lesslink_'+catKey).remove();jQuery('.cell_wrapper').attr("style","overflow:auto/0;");return false;}function getDescription (thisID,thisPolicy) {// routine to retrieve descriptive labels from policyvar thisDescription = '';for (var i = 0; i < thisPolicy.length; i++) {if (thisPolicy[i].policyID == thisID) {return thisPolicy[i].policyDescription;break;}}}function cleanupLocDesc(thisLocation) {// replace some annoying labels from Symphony policies with Enterprise friendly ones//thisLocation = thisLocation.replace(/UAA Learning Resources Center - /g,'');//thisLocation = thisLocation.replace(/UAA Learning Resources Center/g,'');return thisLocation;}function cleanupItemTypeDesc(ItemTypeDesc) {// replace some annoying labels from Symphony policies with Enterprise friendly ones//ItemTypeDesc = ItemTypeDesc.replace(/Trade Paperback/g,'Book');//ItemTypeDesc = ItemTypeDesc.replace(/Music or Spoken Word CD Set/g,'CD Set');return ItemTypeDesc;}function cleanupLibraryDesc (HomeLocDesc,LibraryDesc) {// replace some annoying labels from Symphony policies with Enterprise friendly ones//LibraryDesc = LibraryDesc.replace(/Egan Library/g,'Egan');//LibraryDesc = LibraryDesc.replace(/Mendenhall Valley/g,'Mendenhall');return LibraryDesc;}function getProfile() {// parse the profile url and convert to a profile name useful for sorting the holdingsvar urlParts = jQuery('#searchBoxHomeLink a').attr('href').split('/').length;var theProfile = jQuery('#searchBoxHomeLink a').attr('href').split('/')[urlParts - 2].toUpperCase();// theProfile = theProfile.replace(/ANCMUSEUM/g,'Anchorage Museum');// theProfile = theProfile.replace(/ASL/g,'State Library');theProfile = theProfile.replace(/UAAMATSU/g,'UAA Mat-Su');return theProfile;}function placeNoImageArt (rId) {var customImageName = 'no_image.gif'; //Put in the name of your custom imageif(document.getElementById('detailActions'+rId) != undefined){ jQuery('.detail_cover_art[src*="no_image.png"]').each(function(){ jQuery(this).attr('src', '/custom/web/'+customImageName); });}else{ jQuery('.results_img[src*="no_image.png"]').each(function(){ jQuery(this).attr('src', '/custom/web/'+customImageName); }); }}var locationMap={};var baseWsURL='https://sdws06.sirsidynix.net/lmac_ilsws/';var clientID='DS_CLIENT';var locationDone=false;var maxAttempts=40;var curAttempt=0;function startReshelvingDetail(rId){showReshelving(rId);}// WAIT FOR POLICIESfunction waitReshelvingItems (bibKey,hitNum) {if (locationDone==false){curAttempt++;if(curAttempt<=maxAttempts){setTimeout(function() { waitReshelvingItems(bibKey,hitNum); },500);}// if 2 }// if 1else{ getReshelving(bibKey,hitNum);}// else}// GET BIB IDfunction showReshelving(rId) {var hitNum = rId.split("detail")[1];var bibKey = $J('#'+rId+'_DOC_ID .DOC_ID_value').text().split(':')[1];var itemLibraryEvent = 'detail.detailavailabilityaccordions:lookuptitleinfo/ent:$002f$002fSD_ILS$002f0$002fSD_ILS:'+bibKey+'/ILS/'+hitNum; $J(document).ajaxComplete(function(e, xhr, detailCall) { var curEvent=detailCall.url; console.log(detailCall); if(curEvent.indexOf(itemLibraryEvent)!==-1){ getReshelvingPolicies(); waitReshelvingItems(bibKey,hitNum); } });}// GET RESHELVINGfunction getReshelving (bibKey,hitNum) {$J.getJSON(baseWsURL+'rest/standard/lookupTitleInfo?clientID='+clientID+'&titleID='+bibKey+'&includeItemInfo=true&includeOPACInfo=false&json=true&callback=?',function(data){for (i=0;i

.loadingDiv'); if(div.length < 1) { div = $J('').addClass('loadingDiv'); $J('body').append(div); } var backdrop = $J('body > .loadingBackdrop'); if(backdrop.length < 1) { backdrop = $J('').addClass('loadingBackdrop'); $J('body').append(backdrop); } backdrop.show(); div.show(); createSpinnersForSelector(div); }, hideLoad:function() { $J('.loadingBackdrop').hide(); $J('.loadingDiv').hide(); stopSpinnersForSelector($J('.loadingDiv')); }, expandRadioLabel:function(id, classes) { $J('#icon_' + id).toggleClass(classes); let description = document.getElementById("ercDescription_" + id); if(description.style.maxHeight) { description.style.maxHeight = null; } else { description.style.maxHeight = description.scrollHeight + "px"; } }, //format dialog functions findFormatDialog:function(callback, resultId, ercItem, isPreview) { if(!ercItem) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Missing or malformed eResource Central item data')); return; } var formats = isPreview ? ercItem.previews : ercItem.formats; if(!formats || formats.length < 1) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Missing or malformed eResource Central format data')); return; } if(formats.length === 1 || !ercItem.formatsUnique) { // Just one format to select, make it happen! eRC_Dialogs.hideLoad(); callback(formats[0], ercItem.drm, true); return; } var dialogId = eRC_Dialogs.makeId(isPreview ? eRC_Dialogs.previewDialogClass : eRC_Dialogs.formatDialogClass, resultId); var formatDialog = document.getElementById(dialogId); if(!formatDialog) { // We didn't find one, build it. eRC_Dialogs.showLoad(); formatDialog = eRC_Dialogs.buildFormatDialog(dialogId, ercItem, resultId, isPreview, callback); } formatDialog.setAttribute('value',''); // Ensure an empty value until one is selected. eRC_Dialogs.hideLoad(); $J(formatDialog).dialog('open'); }, buildFormatDialog:function(dialogId, ercItem, resultId, isPreview, callback) { if(!ercItem) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Missing or malformed eResource Central item data')); return; } var formats = isPreview ? ercItem.previews : ercItem.formats; var formatDiv = eRC_Dialogs.buildFormatDiv(dialogId, formats, resultId, isPreview); var dialog = document.createElement('div'); dialog.setAttribute('id', dialogId); dialog.setAttribute('class', (isPreview ? eRC_Dialogs.previewDialogClass : eRC_Dialogs.formatDialogClass)+' ercDialog'); var form = document.createElement('form'); form.on('submit', function(event) { event.preventDefault(); closeModal($J('#' + dialogId), true); eRC_Dialogs.getFormat(callback, eRC_Dialogs.getRadioFormat(dialogId)); }); form.appendChild(formatDiv); if(formats.length > eRC_Dialogs.shownFormatCount) { form.appendChild(eRC_Dialogs.buildExpanderHandle(dialogId)); } dialog.appendChild(form); var dlgButtonDiv = document.createElement('div'); dlgButtonDiv.setAttribute('class', 'ercDialogButtonsDiv buttonSection'); var buttonValue = isPreview ? 'Preview' : (ercItem.drm ? 'Check Out' : 'Download'); dlgButtonDiv.appendChild(eRC_Dialogs.buildPrimaryButton('submit', buttonValue, dialogId + '_okButton')); dlgButtonDiv.appendChild(eRC_Dialogs.buildCancelButton(dialogId)); form.appendChild(dlgButtonDiv); document.body.appendChild(dialog); var title = isPreview ? 'Preview Options' : (ercItem.drm ? 'Checkout Options' : 'Download Options'); openModal($J(dialog), title, { autoOpen: false, resizable: false, appendTo: null, allowAutofocus: true, keepAlive: true, close: function() { if(eRC_DownloadButton.reloadNeeded) { window.location.reload(); }} }, true); return dialog; }, buildFormatDiv:function(dialogId, formats, resultId, isPreview) { var formatDivId = eRC_Dialogs.makeId(dialogId, eRC_Dialogs.formatDivId); var formatDiv = document.createElement('div'); formatDiv.setAttribute('id', formatDivId); formatDiv.setAttribute('class', 'fieldSection ercFieldSection'); for(var i = 0; i < formats.length; i++) { var radioValue = (isPreview ? 'prev:' : 'down:') + resultId + ':' + formats[i].key; var isDisabled = formats[i].totalCopies && !formats[i].availableCopies; if (i > 0) { var hRule = document.createElement('hr'); var hrClass = 'ercFormatSep'; if (i >= eRC_Dialogs.shownFormatCount) { hrClass += ' hidden'; } hRule.setAttribute('class', hrClass); formatDiv.appendChild(hRule); } formatDiv.appendChild(eRC_Dialogs.buildRadioButton(dialogId, radioValue, formats[i].name, isDisabled, i)); } return formatDiv; }, //hold dialog functions findHoldDialog:function(callback, resultId, ercItem, responseJson) { if(!ercItem) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Missing or malformed eResource Central item data')); return; } var dialogId = eRC_Dialogs.makeId(eRC_Dialogs.holdDialogClass, resultId); var holdDialog = document.getElementById(dialogId); if(!holdDialog) { // We didn't find one, build it. eRC_Dialogs.showLoad(); holdDialog = eRC_Dialogs.buildHoldDialog(dialogId, ercItem, resultId, responseJson); } $J(holdDialog).find('.emailError').remove(); holdDialog.setAttribute('value',''); // Ensure an empty value until one is selected. $J(holdDialog).unbind('dialogclose').bind('dialogclose', function(event) { callback($J(holdDialog).val(), $J(holdDialog).find('input[id$=_autoCheckoutInput]').is(':checked')); }); eRC_Dialogs.hideLoad(); $J(holdDialog).dialog('open'); }, //responseJson could be the accounts call from erc or the email response, it's a bit overloaded buildHoldDialog:function(dialogId, ercItem, resultId, responseJson) { var dialog = document.createElement('div'); dialog.setAttribute('value',''); // Ensure an empty value until one is selected. dialog.setAttribute('id', dialogId); dialog.setAttribute('class', (eRC_Dialogs.holdDialogClass)+' ercDialog'); var holdDiv; if (com_sirsi_ent_page.isMobile) { eRC_Dialogs.addMobileHoldDiv(dialog, dialogId, ercItem, resultId, responseJson); } else { holdDiv = eRC_Dialogs.buildHoldDiv(dialogId, ercItem, resultId, responseJson); dialog.appendChild(holdDiv); } var makeableAccounts = []; if(responseJson.accountType) { for(var i = 0; i < responseJson.accountType.length; i++) { // JSON.parse(JSON.stringify(obj)) appears to be the fastest way to DEEP-copy an object // (see: http://jsperf.com/cloning-an-object/2) var account = JSON.parse(JSON.stringify(responseJson.accountType[i])); if(account.externalAccountUrl) { makeableAccounts.push(account); } } } var buttonHolder = document.createElement('div'); buttonHolder.setAttribute('class', 'ercDialogButtonsDiv buttonSection'); var buttonOnClick = 'javascript:$J(\'#' + dialogId + '\').val(eRC_Dialogs.getEmailHold(\'' + dialogId + '\',\'' + ercItem.id + '\')); if ($J(\'#' + dialogId + '\').val()) { closeModal($J(\'#' + dialogId + '\')); }'; buttonHolder.appendChild(eRC_Dialogs.buildPrimaryButton('button', 'Place Hold', dialogId + '_okButton', buttonOnClick)); dialog.appendChild(buttonHolder); if (com_sirsi_ent_page.isMobile) { buttonHolder.appendChild(eRC_Dialogs.buildCancelButton(dialogId)); var accountHolder = document.createElement('div') accountHolder.setAttribute('class', 'linkSection'); eRC_Dialogs.addAccountButtons(makeableAccounts, accountHolder, dialogId); dialog.appendChild(accountHolder); } else { eRC_Dialogs.addAccountButtons(makeableAccounts, buttonHolder, dialogId); buttonHolder.appendChild(eRC_Dialogs.buildCancelButton(dialogId)); } document.body.appendChild(dialog); openModal($J(dialog), 'Hold Options', {autoOpen: false, width: 'auto', resizable: false, appendTo: null, allowAutofocus: true, keepAlive: true}, true); return dialog; }, buildHoldDiv:function(dialogId, ercItem, resultId, responseJson) { var holdDivId = eRC_Dialogs.makeId(dialogId, eRC_Dialogs.holdDivId); var holdDiv = document.createElement('div'); holdDiv.setAttribute('id', holdDivId); var title = $J('#'+resultId+'_TITLE > .TITLE_value:first').text(); var format = $J('#'+resultId+'_FORMAT > .FORMAT_value').text(); var tbl = document.createElement('table'); tbl.setAttribute('id','holdTable'); tbl.setAttribute('class','holdsTable'); var thead = document.createElement('thead'); var tr = document.createElement('tr'); var th = document.createElement('th'); th.setAttribute('class','titleColumn'); var titleLabel = document.createTextNode('Title'); th.appendChild(titleLabel); tr.appendChild(th); th = document.createElement('th'); var formatLabel = document.createTextNode('Format'); th.appendChild(formatLabel); tr.appendChild(th); if (eRC_Dialogs.holdNeedsEmail) { th = document.createElement('th'); var emailLabel = document.createTextNode('Email Address'); th.appendChild(emailLabel); tr.appendChild(th); } if(ercItem['autoCheckoutSupported']) { th = document.createElement('th'); var autoCheckoutColumnLabel = document.createTextNode('Automatic Checkout'); th.appendChild(autoCheckoutColumnLabel); tr.appendChild(th); } thead.appendChild(tr); var tbody = document.createElement('tbody'); var tr1 = document.createElement('tr'); tr1.setAttribute('height','40'); tr1.setAttribute('valign','top'); var td = document.createElement('td'); td.setAttribute('class','titleCell'); var titleText = document.createTextNode(title); td.appendChild(titleText); tr1.appendChild(td); td = document.createElement('td'); td.setAttribute('class','formatCell'); var formatText = document.createTextNode(format); td.appendChild(formatText); tr1.appendChild(td); if (eRC_Dialogs.holdNeedsEmail) { td = document.createElement('td'); td.setAttribute('class','emailCell'); var emailInput = document.createElement("input"); emailInput.setAttribute('type','text'); emailInput.setAttribute('name','emailInput'); emailInput.setAttribute('class',dialogId+'_emailInput'); emailInput.setAttribute('size',30); if(responseJson.email) { emailInput.setAttribute('value', responseJson.email); } td.appendChild(emailInput); tr1.appendChild(td); } if(ercItem['autoCheckoutSupported']) { td = document.createElement('td'); td.setAttribute('class','autoCheckoutCell'); var autoCheckoutDiv = document.createElement('div'); var autoCheckoutInput = document.createElement("input"); autoCheckoutInput.setAttribute('type','checkbox'); autoCheckoutInput.setAttribute('name','autoCheckoutInput'); autoCheckoutInput.setAttribute('class',dialogId+'_autoCheckoutInput'); autoCheckoutInput.setAttribute('id',holdDivId+'_autoCheckoutInput'); autoCheckoutInput.setAttribute('size',30); autoCheckoutDiv.appendChild(autoCheckoutInput); var autoCheckoutLabel = document.createElement("label"); autoCheckoutLabel.setAttribute('for', holdDivId+'_autoCheckoutInput'); autoCheckoutLabel.setAttribute('class', 'cbLabel'); autoCheckoutLabel.innerText = "Automatically check out item when available"; autoCheckoutDiv.appendChild(autoCheckoutLabel); td.appendChild(autoCheckoutDiv); tr1.appendChild(td); } tbody.appendChild(tr1); tbl.appendChild(thead); tbl.appendChild(tbody); holdDiv.appendChild(tbl); return holdDiv; }, addMobileHoldDiv:function(dialog, dialogId, ercItem, resultId, responseJson) { var holdDivId = eRC_Dialogs.makeId(dialogId, eRC_Dialogs.holdDivId); var holdDiv = document.createElement('div'); holdDiv.setAttribute('id', holdDivId); holdDiv.setAttribute('class', 'holdsDiv'); var fieldList = document.createElement('div'); fieldList.setAttribute('class', 'fieldSection fieldList'); var title = $J('#'+resultId+'_TITLE > .TITLE_value:first').text(); var format = $J('#'+resultId+'_FORMAT > .FORMAT_value').text(); var titleFieldSection = document.createElement('div'); titleFieldSection.setAttribute('class','field'); var titleLabelDiv = document.createElement('div'); titleLabelDiv.setAttribute('class','label text-h5'); var titleLabel = document.createTextNode('Title'); titleLabelDiv.appendChild(titleLabel); titleFieldSection.appendChild(titleLabelDiv); var titleDiv = document.createElement('div'); titleDiv.setAttribute('class','fieldValue text-p'); var titleValue = document.createTextNode(title); titleDiv.appendChild(titleValue); titleFieldSection.appendChild(titleDiv); var formatFieldSection = document.createElement('div'); formatFieldSection.setAttribute('class','field'); var formatLabelDiv = document.createElement('div'); formatLabelDiv.setAttribute('class','label text-h5'); var formatLabel = document.createTextNode('Format'); formatLabelDiv.appendChild(formatLabel); formatFieldSection.appendChild(formatLabelDiv); var formatField = document.createElement('div'); formatField.setAttribute('class','fieldValue text-p'); var formatValue = document.createTextNode(format); formatField.appendChild(formatValue); formatFieldSection.appendChild(formatField); if (eRC_Dialogs.holdNeedsEmail) { var emailFieldSection = document.createElement('div'); emailFieldSection.setAttribute('class','fieldSection'); emailFieldSection.appendChild(eRC_Dialogs.buildLabel('Email Address', '')); var emailInput = document.createElement("input"); if(responseJson.email) { emailInput.setAttribute('value', responseJson.email); } emailInput.setAttribute('class', dialogId + '_emailInput fullwidth textbox'); emailFieldSection.appendChild(emailInput); } if(ercItem['autoCheckoutSupported']) { var autoCheckoutFieldSection = document.createElement('div'); autoCheckoutFieldSection.setAttribute('class','table fieldSection fullwidth'); var autoCheckoutDiv = document.createElement('div'); autoCheckoutDiv.setAttribute('class','checkbox-align'); var autoCheckoutInput = document.createElement("input"); autoCheckoutInput.setAttribute('type', 'checkbox'); autoCheckoutInput.setAttribute('name', 'autoCheckoutInput'); autoCheckoutInput.setAttribute('class', dialogId + '_autoCheckoutInput checkbox'); autoCheckoutInput.setAttribute('id', holdDivId + '_autoCheckoutInput'); var autoCheckoutLabel = document.createElement("label"); autoCheckoutLabel.setAttribute('for', holdDivId + '_autoCheckoutInput'); autoCheckoutLabel.setAttribute('class', 'label text-p checkbox-align'); autoCheckoutLabel.innerText = "Automatically check out item when available"; autoCheckoutDiv.appendChild(autoCheckoutInput); autoCheckoutFieldSection.appendChild(autoCheckoutDiv); autoCheckoutFieldSection.appendChild(autoCheckoutLabel); } fieldList.appendChild(titleFieldSection); fieldList.appendChild(formatFieldSection); holdDiv.appendChild(fieldList); dialog.appendChild(holdDiv); if (emailFieldSection) { dialog.appendChild(emailFieldSection); } if (autoCheckoutFieldSection) { dialog.appendChild(autoCheckoutFieldSection); } }, getEmailHold:function(dialogId,id) { if (!eRC_Dialogs.holdNeedsEmail) { return "@"; // This isn't a valid email address but that's okay, because we won't really use it } var dialog = $J('#' + dialogId); var emailField = dialog.find('.' + dialogId + '_emailInput'); var email = emailField.val().trim(); var regex = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/; if (regex.test(email) === true) { if (com_sirsi_ent_page.isMobile) { dialog.find('.errorSection').remove(); } return email; } else { if (dialog.find('.emailError').length === 0) { if (com_sirsi_ent_page.isMobile) { $J('#'+eRC_Dialogs.makeId(dialogId, eRC_Dialogs.holdDivId)).before(buildErrorDisplay(['Email addresses must match the pattern user@domain.extension'],'emailError')); } else { var span = document.createElement("span"); span.setAttribute('class','emailError'); $J('#'+eRC_Dialogs.makeId(dialogId, eRC_Dialogs.holdDivId)).before(span); $J('.emailError').text('Email addresses must match the pattern user@domain.extension'); } } return ""; } }, buildExpanderHandle:function(dialogId) { var expanderId = dialogId+'_expander'; var more = document.createElement('div'); more.setAttribute('id', expanderId); more.setAttribute('class', 'ercFormatExpander fieldSection'); more.setAttribute('onclick', '$J(\'#' + eRC_Dialogs.makeId(dialogId, eRC_Dialogs.formatDivClass) + ' .hidden\').each(function() { $J(this).removeClass("hidden"); }); $J(\'#' + expanderId + '\').hide();'); more.innerHTML = ''; return more; }, getRadioFormat:function(dialogId) { var key; $J('#'+dialogId+' .'+eRC_Dialogs.radioClass).each(function() { if(this.checked) { key = $J(this).val(); } }); return key; }, getFormat:function(callback, key) { var type = key.substring(0, key.indexOf(':')); key = key.substring(key.indexOf(':')+1); var resultId = key.substring(0, key.indexOf(':')); var formatKey = key.substring(key.indexOf(':')+1); eRC_Base.getTitleData(function(ercItem) { if(ercItem) { var formats = (type == 'prev') ? ercItem.previews : ercItem.formats; for(var i = 0; i < formats.length; i++) { if(formats[i].key == formatKey) { callback(formats[i], ercItem.drm); return; } } } callback(); }, resultId); }, //accounts dialog functions getSpecificAccountInputsClass:function(baseId) { return eRC_Dialogs.accountInputClass + baseId; }, findAccountsDialog:function(callback, resultId, format, responseJson, duration) { if(responseJson && responseJson.error) { eRC_Dialogs.openErrorMessageDialog(callback, responseJson); return; } if(!(responseJson && responseJson.accountType && responseJson.accountType.length > 0)) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Missing or malformed response for eResource Central getAccounts call')); return; } var baseId = format.key+resultId; var dialogId = eRC_Dialogs.accountDialogClass + baseId; var accountDialog = document.getElementById(dialogId); if(!accountDialog) { // We didn't find one, build it. eRC_Dialogs.showLoad(); accountDialog = eRC_Dialogs.buildAccountDialog(baseId, dialogId, format, responseJson, duration); } if (!com_sirsi_ent_page.isMobile) { for (var i = 0; i < responseJson.accountType.length; i++) { eRC_Dialogs.fillAccountSelectionOptions(baseId, responseJson.accountType[i]); } } // Clear this value (it will be set upon form validation). accountDialog.removeAttribute('value'); $J('.'+eRC_Dialogs.accountErrorDiv).hide(); eRC_Dialogs.hideLoad(); var dialogOptions = { autoOpen: true, resizable: false, appendTo: null, close: function(event) { callback(accountDialog.getAttribute('value')); }, keepAlive: true, allowAutofocus: true } openModal($J(accountDialog), 'Checkout', dialogOptions, true); }, // you can get to this dialog by downloading RBdigital (Record a books, which is part of one click digital) buildAccountDialog:function(baseId, dialogId, format, responseJson, duration) { var errorDiv = document.createElement('div'); errorDiv.setAttribute('id', eRC_Dialogs.accountErrorDiv + baseId); errorDiv.setAttribute('class', eRC_Dialogs.accountErrorDiv); errorDiv.setAttribute('style', 'display: none;'); errorDiv.innerHTML = 'Error! The following fields are either missing or invalid.'; var formId = eRC_Dialogs.accountFormClass + baseId; var form = document.createElement('form'); form.setAttribute('id', formId); form.setAttribute('class', eRC_Dialogs.accountFormClass); form.setAttribute('onsubmit', 'javascript: eRC_Dialogs.handleAccountFormSubmit(\'' + baseId + '\', \'' + format.url + '\'); return false;'); var makeableAccounts = []; for(var i = 0; i < responseJson.accountType.length; i++) { // JSON.parse(JSON.stringify(obj)) appears to be the fastest way to DEEP-copy an object // (see: http://jsperf.com/cloning-an-object/2) var account = JSON.parse(JSON.stringify(responseJson.accountType[i])); if(format.authentication.ereaderAccount === account.key) { account.type = 'ereaderAccount'; } if(format.authentication.partnerAccount === account.key) { account.type = 'partnerAccount'; } if(!account.type) { return null; } if(account.externalAccountUrl) { makeableAccounts.push(account); } var accountDiv = eRC_Dialogs.buildAccountDiv(baseId, account); if(accountDiv) { form.appendChild(accountDiv); } } var slider = eRC_Dialogs.buildDurationSelector(baseId, duration); if(slider) { form.appendChild(slider); } var buttonHolder = document.createElement('div'); buttonHolder.setAttribute('class', 'ercDialogButtonsDiv buttonSection'); buttonHolder.appendChild(eRC_Dialogs.buildPrimaryButton('submit', 'Check Out')); form.appendChild(buttonHolder); if (com_sirsi_ent_page.isMobile) { buttonHolder.appendChild(eRC_Dialogs.buildCancelButton(dialogId)); var accountHolder = document.createElement('div') accountHolder.setAttribute('class', 'linkSection'); eRC_Dialogs.addAccountButtons(makeableAccounts, accountHolder, dialogId); form.appendChild(accountHolder); } else { eRC_Dialogs.addAccountButtons(makeableAccounts, buttonHolder, dialogId); } var accountDialog = document.createElement('div'); accountDialog.setAttribute('id', dialogId); accountDialog.setAttribute('class', eRC_Dialogs.accountDialogClass+' ercDialog'); accountDialog.appendChild(errorDiv); accountDialog.appendChild(form); document.body.appendChild(accountDialog); if (!com_sirsi_ent_page.isMobile) { // UI/UX recommended having a default for the selector, so leaving this for nonmobile $J('#' + formId + ' select').each(function () { this.selectedIndex = -1 }); } $J('#' + eRC_Dialogs.accountErrorDiv + baseId).hide(); return accountDialog; }, buildAccountDiv:function(baseId, account) { if(!(account && account.key)) { return null; } // we're going to be using this, set it up com_sirsi_ent_strings.setStringFormatFunc_JavaStyle(); var accountId = eRC_Dialogs.makeId(baseId, account.key); var accountDiv = document.createElement('div'); accountDiv.setAttribute('id', eRC_Dialogs.accountDivClass+accountId); accountDiv.setAttribute('class', eRC_Dialogs.accountDivClass + ' fieldSection'); var heading = document.createElement('h3'); heading.setAttribute('class', 'ercAcctDialogHeading headerField'); heading.innerHTML = String.format('Enter %s Account', account.name); accountDiv.appendChild(heading); var inputId = eRC_Dialogs.accountInputClass + accountId; var comboDiv = document.createElement('div'); var comboInput = document.createElement('input'); comboInput.setAttribute('id', inputId); comboInput.setAttribute('type', 'text'); comboInput.setAttribute('name', account.type); comboInput.setAttribute('autocomplete', 'off'); if (com_sirsi_ent_page.isMobile) { comboDiv.setAttribute('class', 'fieldSection'); var labelText = 'Username:'; if (labelText.indexOf(':') > 0) { labelText = labelText.substr(0, labelText.indexOf(':')) } comboDiv.appendChild(eRC_Dialogs.buildLabel(labelText, inputId)); comboInput.setAttribute('class', 'ercAccountSelectInput textbox fullwidth'); } else { accountDiv.appendChild(eRC_Dialogs.buildLabel('Username:', inputId)); comboInput.setAttribute('class', 'ercAccountSelectInput ' + eRC_Dialogs.getSpecificAccountInputsClass(baseId)); var selectId = eRC_Dialogs.accountSelectClass + accountId; var comboSelect = document.createElement('select'); comboSelect.setAttribute('id', selectId); comboSelect.setAttribute('tabindex', -1); comboSelect.setAttribute('class', eRC_Dialogs.accountSelectClass); comboSelect.setAttribute('onchange', 'javascript:document.getElementById(\'' + inputId + '\').value=document.getElementById(\'' + selectId + '\').value;'); $J(comboInput).keyup(function(e){ if(e && e.keyCode == 40) { $J(comboSelect).focus().click(); } comboSelect.selectedIndex = -1; }); comboDiv.appendChild(comboSelect); } comboDiv.appendChild(comboInput); accountDiv.appendChild(comboDiv); // provide a required password field, but only if actually required if (true === account.passwordRequired) { var passwordFieldId = 'ercAccountPasswordField' + accountId; var fieldHolder; var inputClass; if (com_sirsi_ent_page.isMobile) { fieldHolder = document.createElement('div'); fieldHolder.setAttribute('class', 'fieldSection'); accountDiv.appendChild(fieldHolder); } else { fieldHolder = accountDiv; } fieldHolder.appendChild(eRC_Dialogs.buildLabel('Password:', passwordFieldId)); var passwordField = document.createElement('input'); passwordField.setAttribute('type', 'password'); passwordField.setAttribute('id', passwordFieldId); passwordField.setAttribute('class', eRC_Dialogs.accountInputClass + ' textbox fullwidth ' + eRC_Dialogs.getSpecificAccountInputsClass(baseId)); passwordField.setAttribute('name', account.type + 'Pw'); fieldHolder.appendChild(passwordField); } // we're done using this, revert com_sirsi_ent_strings.resetString_dot_format(); return accountDiv; }, buildDurationSelector:function(baseId, duration) { if(!(duration && duration.maxCheckout)) { return null; } var defaultDays = duration.defaultCheckout ? duration.defaultCheckout : duration.maxCheckout; var durationId = eRC_Dialogs.makeId(eRC_Dialogs.durationId, baseId); var label = document.createElement('div'); var checkoutClass = 'ercCheckoutDiv'; if (com_sirsi_ent_page.isMobile) { checkoutClass += ' fieldSection'; if(duration.maxCheckout === duration.minCheckout) { label.setAttribute('class', 'label text-h5'); checkoutClass += ' field'; } else { label.setAttribute('class', 'label text-p'); } var labelText = 'Checkout duration:'; if (labelText.indexOf(':') > 0) { labelText = labelText.substr(0, labelText.indexOf(':')) } labelText += ' (day(s))'; label.innerHTML = labelText; } else { label.setAttribute('class', 'ercCheckoutLabel'); label.innerHTML = 'Checkout duration:'; } var checkout = document.createElement('div'); checkout.setAttribute('id', 'ercCheckout_' + baseId); checkout.setAttribute('class', checkoutClass); checkout.appendChild(label); var currentDays = document.createElement('span'); currentDays.setAttribute('id', durationId); currentDays.innerHTML = defaultDays; var selection = document.createElement('div'); if (com_sirsi_ent_page.isMobile) { selection.setAttribute('class', 'fieldValue text-p'); } else { selection.setAttribute('class', 'ercCheckoutSelection'); } selection.innerHTML = ' day(s)'; selection.insertBefore(currentDays, selection.childNodes[0]); if(duration.maxCheckout === duration.minCheckout) { checkout.appendChild(selection); } else { if (com_sirsi_ent_page.isMobile) { // non mobile slider is not mobile friendly, make a dropdown var min = duration.minCheckout ? duration.minCheckout : 1; var selectorId = 'ercSelector_' + baseId; var selector = document.createElement('select'); selector.setAttribute('id', selectorId); selector.setAttribute('blankOption', 'NEVER'); selector.setAttribute('class', 'checkoutTimeSelector dropDown fullwidth'); for (var i = duration.minCheckout; i <= duration.maxCheckout; i++) { var option = document.createElement('option'); option.setAttribute('value', i); if (i == duration.minCheckout) { option.setAttribute('selected', 'true'); option.selected } option.innerHTML = i; selector.appendChild(option); } selector.setAttribute('value', duration.minCheckout); checkout.appendChild(selector); var iArrow = document.createElement('i'); iArrow.setAttribute('class', 'fa fa-caret-down select-arrow'); iArrow.setAttribute('aria-hidden', 'true'); checkout.appendChild(iArrow); } else { // original non mobile slider var min = duration.minCheckout ? duration.minCheckout : 1; var minSpan = document.createElement('span'); minSpan.setAttribute('class', 'ercMinDays'); minSpan.innerHTML = min; var maxSpan = document.createElement('span'); maxSpan.setAttribute('class', 'ercMaxDays'); maxSpan.innerHTML = duration.maxCheckout; var selectorId = 'ercSelector_' + baseId; var selector = document.createElement('div'); selector.setAttribute('id', selectorId); selector.setAttribute('class', 'checkoutTimeSelector'); var slider = document.createElement('div'); slider.setAttribute('class', 'ercCheckoutSlider'); slider.appendChild(minSpan); slider.appendChild(maxSpan); slider.appendChild(selector); slider.appendChild(selection); checkout.appendChild(slider); $J(selector).slider({ min:min, max:duration.maxCheckout, value:defaultDays, slide: function( event, ui ) { document.getElementById(durationId).innerHTML = ui.value; } }); } } return checkout; }, buildPrimaryButton: function(inputType, buttonLabel, buttonId, buttonClick) { var primaryButton = document.createElement('input'); primaryButton.setAttribute('type', inputType); primaryButton.setAttribute('value', buttonLabel); if (com_sirsi_ent_page.isMobile) { primaryButton.setAttribute('class', 'button fullwidth'); } else { primaryButton.setAttribute('class', eRC_Dialogs.primaryButtonClass + ' ' + eRC_Dialogs.dialogButtonClass); } if(buttonId) { primaryButton.setAttribute('id', buttonId); } if(buttonClick) { primaryButton.setAttribute('onclick', buttonClick); } return primaryButton; }, buildCancelButton: function(dialogId) { var cancelButton = document.createElement('input'); cancelButton.setAttribute('type', 'button'); cancelButton.setAttribute('id', dialogId + '_cancelButton'); cancelButton.setAttribute('onclick', 'javascript:closeModal($J(\'#' + dialogId + '\'));$J(".errorSection").remove();'); cancelButton.setAttribute('value', 'Cancel'); if (com_sirsi_ent_page.isMobile) { cancelButton.setAttribute('class', 'button fullwidth cancel'); } else { cancelButton.setAttribute('class', eRC_Dialogs.secondaryButtonClass + ' ' + eRC_Dialogs.dialogButtonClass); } return cancelButton; }, buildLabel: function(labelText, labelFor) { var labelElement = document.createElement('label'); labelElement.innerHTML = labelText; if(labelFor) { labelElement.setAttribute('for', labelFor); } if (com_sirsi_ent_page.isMobile) { var labelHolder = document.createElement('div'); labelHolder.setAttribute('class', 'label text-p'); labelHolder.appendChild(labelElement); return labelHolder; } else { labelElement.setAttribute('class', eRC_Dialogs.accountLabelClass); return labelElement; } }, buildRadioButton: function(dialogId, radioValue, formatNameText, isDisabled, radioIndex) { let radioId = eRC_Dialogs.makeId(eRC_Dialogs.radioClass, eRC_Dialogs.makeId(dialogId, radioIndex)); let radio = document.createElement('input'); radio.setAttribute('type', 'radio'); radio.setAttribute('name', eRC_Dialogs.makeId(eRC_Dialogs.radioName, dialogId)); radio.setAttribute('id', radioId); radio.setAttribute('class', eRC_Dialogs.radioClass + ' v-middle radio'); radio.setAttribute('value', radioValue); if(radioIndex === 0) { radio.setAttribute('checked', 'checked'); } if(isDisabled) { radio.setAttribute('disabled', 'disabled'); } let label = document.createElement('label'); label.setAttribute('for', radioId); let formatDiv = document.createElement('div'); formatDiv.setAttribute("class", "ercCollapsible"); //get format details let formatDetails = eRC_Base.getFormatDetails(formatNameText); if(formatDetails) { radio.className += ' formatDescription'; //used to distinguish from hold modal let idBase = eRC_Dialogs.makeId(dialogId, radioIndex); let icon = document.createElement('i'); let accessibleVia = document.createElement('div'); let description = document.createElement('p'); icon.setAttribute("class", com_sirsi_ent_page.isMobile ? "fa fa-angle-down fa-2x" : "fa fa-caret-right"); label.setAttribute("onclick", "eRC_Dialogs.expandRadioLabel('" + idBase + "'," + ( com_sirsi_ent_page.isMobile ? "'fa-angle-up fa-angle-down'" : "'fa-caret-right fa-caret-down'") + ")"); radio.addEventListener("keydown", event => { if(event.key === ' ' || event.code === 'Space') { eRC_Dialogs.expandRadioLabel(idBase, com_sirsi_ent_page.isMobile ? 'fa-angle-up fa-angle-down' : 'fa-caret-right fa-caret-down') } }); if(com_sirsi_ent_page.isMobile) { description.appendChild(document.createElement('br')); } description.append(eRC_Base.createAnchorTextLinks(formatDetails.description, formatDetails.descriptionParams)); icon.setAttribute("id", "icon_" + idBase); icon.setAttribute("aria-hidden", "true"); formatDiv.appendChild(document.createTextNode(formatDetails.type + " (" + formatNameText + ")")); accessibleVia.append(eRC_Base.createAnchorTextLinks(formatDetails.accessibleVia, formatDetails.accessibleViaParams)); accessibleVia.setAttribute("class", "ercAccessibleVia"); description.setAttribute("class", "ercDescriptionContent"); description.setAttribute("id", "ercDescription_" + idBase); label.appendChild(icon); label.appendChild(formatDiv); label.appendChild(accessibleVia); label.appendChild(description); } else { formatDiv.appendChild(document.createTextNode(formatNameText)); label.appendChild(formatDiv); } let radioRowClass = eRC_Dialogs.formatDivClass + ' ' + eRC_Dialogs.makeId(dialogId, eRC_Dialogs.formatDivClass); if(radioIndex >= eRC_Dialogs.shownFormatCount) { radioRowClass += ' hidden'; } let radioHolder; if (com_sirsi_ent_page.isMobile) { label.setAttribute('class', 'text-p label checkbox-align'); radioRowClass += ' radioRow table fullwidth'; radioHolder = document.createElement('div'); radioHolder.setAttribute('class', 'checkbox-align ' + (formatDetails ? ' formatDescription' : '')); radioHolder.appendChild(radio); } else { let labelClass = 'ercRadioLabel'; if(isDisabled) { labelClass += ' disabledLabel'; } label.setAttribute('class', labelClass); radioHolder = radio; } var radioRow = document.createElement('div'); radioRow.setAttribute('id', eRC_Dialogs.makeId(eRC_Dialogs.formatRadioId, eRC_Dialogs.makeId(dialogId, radioIndex))); radioRow.setAttribute('class', radioRowClass); radioRow.appendChild(radioHolder); radioRow.appendChild(label); return radioRow; }, //this function builds buttons (and a link) and add to the div based on the accounts passed in addAccountButtons:function(accounts, parentElement, dialogId) { // we're going to be using this, set it up com_sirsi_ent_strings.setStringFormatFunc_JavaStyle(); if (com_sirsi_ent_page.isMobile) { for (var i = 0; i < accounts.length; i++) { var linkDiv = document.createElement('div'); linkDiv.setAttribute('class', 'linkWrapper'); var onClickText = 'javascript: safeWindowOpen("' + accounts[i].externalAccountUrl + '", "_blank"); return false;'; var accountLink = document.createElement('a'); accountLink.setAttribute('href', "#"); accountLink.setAttribute('onclick', onClickText); accountLink.innerHTML = String.format('Create %s Account', accounts[i].name); linkDiv.appendChild(accountLink); parentElement.appendChild(linkDiv); } } else { // leave non mobile as is for (var i = 0; i < accounts.length; i++) { var onClickText = 'javascript: safeWindowOpen("' + accounts[i].externalAccountUrl + '", "_blank"); return false;'; var newButton = document.createElement('button'); newButton.setAttribute('class', eRC_Dialogs.secondaryButtonClass + ' ' + eRC_Dialogs.dialogButtonClass); newButton.setAttribute('onclick', onClickText); newButton.innerHTML = String.format('Create %s Account', accounts[i].name); parentElement.appendChild(newButton); } } // we're done using this, revert com_sirsi_ent_strings.resetString_dot_format(); }, fillAccountSelectionOptions:function(baseId, account) { var accountId = eRC_Dialogs.makeId(baseId, account.key); var comboSelect = document.getElementById(eRC_Dialogs.accountSelectClass+accountId); while (comboSelect.hasChildNodes()) { comboSelect.removeChild(comboSelect.lastChild); } for (var i = 0; i < account.account.length; i++) { var acct = account.account[i]; var option = document.createElement('option'); option.setAttribute('value', acct.id); if(acct.isDefault) { document.getElementById(eRC_Dialogs.accountInputClass+accountId).value = acct.id; } option.innerHTML = acct.id; comboSelect.appendChild(option); } comboSelect.selectedIndex = -1; $J('#'+eRC_Dialogs.accountDivClass+accountId+' input').first().select(); }, handleAccountFormSubmit:function(baseId, formatUrl) { var data = formatUrl + '?'; var proceed = true; // looking for input that starts with input class because tapestry puts random junk on the end. $J('input[id^="'+eRC_Dialogs.accountInputClass+'"]').each(function() { var value = this.value; if(value){ data += this.getAttribute('name') + '=' + value + '&'; } else { $J('#' + eRC_Dialogs.accountErrorDiv + baseId).show(); proceed = false; } }); if(proceed) { var duration = document.getElementById(eRC_Dialogs.makeId(eRC_Dialogs.durationId, baseId)); if(duration && duration.innerHTML) { data += 'duration=' + duration.innerHTML + '&'; } document.getElementById(eRC_Dialogs.accountDialogClass+baseId).setAttribute('value',data.substring(0, data.length - 1)); closeModal($J('#' + eRC_Dialogs.accountDialogClass + baseId)); } }, //API functions openFormatDialog:function(callback, resultId, isPreview) { if(!(resultId && 'function' === typeof callback)) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Function call made with one or more invalid parameters: "callback", "resultId"')); return; } if(eRC_DownloadButton.reloadNeeded) { closeModal($J('#loginModal')); } var ercChildInfo = eRC_Dialogs.getErcChildInfo(resultId); if (ercChildInfo) { eRC_Dialogs.findFormatDialog(callback, resultId, ercChildInfo, isPreview); } else { eRC_Base.getTitleData(function(ercItem) { if (ercItem) { eRC_Dialogs.findFormatDialog(callback, resultId, ercItem, isPreview); } }, resultId); } }, getErcChildInfo:function(hitlistOrDetailResultId) { var resultId = hitlistOrDetailResultId.replace('detail', ''); // Don't replace hitlist, because we only want to use child info for detail actions. if (typeof ErcChildRecordRiver != 'undefined' && ErcChildRecordRiver.titleChildInfo && ErcChildRecordRiver.titleChildInfo[resultId]) { // Get active child index from the appropriate carousel for this result. var activeChildId = $J('#jsChildCarousel_' + resultId).find('.erc_child_image_div.active').attr('id'); if (activeChildId) { var childIndex = activeChildId.substring(activeChildId.lastIndexOf('_') + 1); var childData = ErcChildRecordRiver.titleChildInfo[resultId]; if(typeof childData != 'undefined' && childData) { return childData.children[childIndex]; } } } return null; }, openHoldDialog:function(callback, resultId) { if(!(resultId && 'function' === typeof callback)) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Function call made with one or more invalid parameters: "callback", "resultId"')); return; } eRC_Dialogs.showLoad(); eRC_Base.getTitleData(function(ercItem) { eRC_Dialogs.openEmailDialog(callback, resultId, ercItem); }, resultId); }, openEmailDialog:function(callback, resultId, ercItem) { if(!(resultId && 'function' === typeof callback)) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Function call made with one or more invalid parameters: "callback", "resultId"')); return; } // TODO Replace these when eRC adds in a flag to the availability response to tell us when the vendor needs an email address. eRC_Dialogs.holdNeedsEmail = ercItem.id.indexOf("OVERDRIVE") === 0 || ercItem.id.indexOf("BAKER_TAYLOR") === 0 || ercItem.id.indexOf("CANTOOKSTATION") === 0; if (eRC_Dialogs.holdNeedsEmail) { eRC_Base.getHoldEmail(function(responseJson) { eRC_Dialogs.findHoldDialog(callback, resultId, ercItem, responseJson); }, resultId); } else { var auth = ercItem.formats[0].authentication; //I'm using the first format here, as there's no format selection for holds if(auth.accountsUrl) { eRC_Base.getAccountsResponse(function(responseJson) { eRC_Dialogs.findHoldDialog(callback, resultId, ercItem, responseJson); }, auth.accountsUrl); } else { eRC_Dialogs.findHoldDialog(callback, resultId, ercItem, {}); } } }, openAccountDialog:function(callback, resultId, format, duration) { // the patron MUST be logged in for this function to work var isValidFormat = format && format.key && format.url && format.authentication; if(!(resultId && isValidFormat && 'function' === typeof callback)) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Function call made with one or more invalid parameters: "callback", "resultId", "format"')); return; } var auth = format.authentication; if(!(auth.partnerAccount || auth.ereaderAccount)) { // No more authentication needed, make it happen! callback(format.url); return; } if(!(auth.accountsUrl)) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Missing eResource Central getAccounts URL')); return; } eRC_Dialogs.showLoad(); eRC_Base.getAccountsResponse(function(responseJson) { eRC_Dialogs.findAccountsDialog(callback, resultId, format, responseJson, duration); }, auth.accountsUrl); }, openMessageDialog: function(callback, resultId, messageInfo, showEReadersLink, isIframe) { if(!(resultId && messageInfo && messageInfo.message)) { eRC_Dialogs.openErrorMessageDialog(callback, eRC_Dialogs.makeError('Error! Function call made with one or more invalid parameters: "resultId", "messageInfo"')); return; } eRC_Dialogs.closeMessageDialog(resultId); eRC_Dialogs.showLoad(); var dialogId = eRC_Dialogs.makeId(eRC_Dialogs.messageClass, resultId); var msgDialog = document.getElementById(dialogId); if(!msgDialog) { msgDialog = document.createElement('div'); msgDialog.setAttribute('id', dialogId); var closeButton = document.createElement('a'); closeButton.setAttribute('class',eRC_Dialogs.primaryButtonClass+' '+eRC_Dialogs.dialogButtonClass); closeButton.setAttribute('href', '#'); closeButton.setAttribute('onclick','javascript:eRC_Dialogs.closeMessageDialog(\'' + resultId + '\');'); closeButton.innerHTML = 'Close'; msgDialog.appendChild(closeButton); document.body.appendChild(msgDialog); } var messageId = eRC_Dialogs.makeId(eRC_Dialogs.messageClass, resultId); var message = document.getElementById(messageId); if(!message) { message = document.createElement('div'); message.setAttribute('id', messageId); message.setAttribute('class', eRC_Dialogs.messageClass); msgDialog.insertBefore(message, msgDialog.childNodes[0]); } message.innerHTML = messageInfo.message; eRC_Dialogs.hideLoad(); var title = messageInfo.title ? messageInfo.title : ''; var dialogOptions = { dialogClass:eRC_Dialogs.formatDialogClass, resizable: false, close: callback, appendTo: null, allowAutofocus: true }; if (isIframe) { dialogOptions.width = 'auto'; } openModal($J('#'+dialogId), title, dialogOptions, false); }, closeMessageDialog:function(resultId) { if(resultId) { var dialogId = '#'+eRC_Dialogs.makeId(eRC_Dialogs.messageClass, resultId); // check if initialized before trying to close if ($J(dialogId).hasClass("ui-dialog-content") && $J(dialogId).dialog("isOpen")) { $J('#' + eRC_Dialogs.makeId(eRC_Dialogs.messageClass, resultId)).dialog('close'); } } }, // All parameters are required, and response MUST have a 'error' message object! // Also, you should likely never edit this function; you've been warned. openErrorMessageDialog:function(callback, response) { if(response.error) { $J('.'+eRC_Dialogs.messageClass).each(function() { $J(this).dialog('close'); }); if (com_sirsi_ent_page.isMobile) { showMessageModal('Error', [response.error], true, function() { if('function' === typeof callback) { callback(response); } }); } else { eRC_Dialogs.openMessageDialog(function() { if('function' === typeof callback) { callback(response); } }, 'ercErrorDialog', {title:'Error', message:response.error}); } } else { if('function' === typeof callback) { callback(response); } } }, closeErrorMessageDialog:function(resultId) { eRC_Dialogs.closeMessageDialog(resultId); }, };}/** HTML Widget to Add a Permalink Button to Results, Detail and My List displays **//** Type: Button **//** Code: PERMALINK **//** Name: Permalink **//** Description: Adds a permalink button to results and detail screen. **//** Button Text: Permalink **//** Select fields for use in the widget: Document ID **//** Localized Strings: PROMPT //Text to instruct user **//** to do Ctrl + C to copy the permalink. **//***********************************************************************************//***** Bound Javascript Function *****/createPermalink/***** Custom JavaScript *****/function createPermalink (rId) {var enterpriseURL = window.location.toString();enterpriseURL = enterpriseURL.split("/client")[0];var currentProfile = com_sirsi_ent_page.friendlyUrl;var currentLanguage = com_sirsi_ent_page.localeCode;var bibKey = jQuery('#'+rId+'_DOC_ID .DOC_ID_value').text();var permalink = enterpriseURL+'/client/'+currentLanguage+'/'+currentProfile+'/search/detailnonmodal/ent:$002f$002fSD_ILS$002f0$002f'+bibKey+'/one';var promptText = "do ctrl+c to copy the permalink";prompt(promptText,permalink);}/*** 10 JAN 2020: correction added so that single indicators don't trim in the HTML, and thus always appear as indicator 1 ***//*** 7 MARCH 2019: Fixed bugs, and upgraded to support 5.0.1 mobile themeThis uses the ROA Web Services 'GUEST' role to query bib data without a token. Your Web Services must be version 2015.08 or higher. See variables within the getBibRoa function below you should set. Also, some CSS should be added to clean up the look. At a minimum, something like this should be in your theme or custom CSS file:.marc_table td{ background-color:#fff!important; text-align:left!important;}.marc_tag_header, .marc_tag_data{ color:#0A1084;}.marc_ind_header, .marc_ind_data{ color:#6D2315;}.nonmobile .marc_tag_header, .nonmobile .marc_tag_data { min-width:35px;}.nonmobile .marc_ind_header, .nonmobile .marc_ind_data{ min-width:35px;}.marc_subfield_code { color:#47156D; padding-right: 5px;}.marc_subfield_data { padding-right: 5px; overflow-wrap: break-word; word-break: break-word;}****/function getBibRoa(rId){/*Fill in the wsBaseUrl variable with your own Web Services URL (which you can copy from the Enterprise Admin console at Manage General Configuration -> Manage Web Services. It should end with a slash (for example: "http://blah.sirsi.net/blah_ilsws/"); you must be using the ROA Web Services, version 2015.08 or higher*/var wsBaseUrl='https://sdws06.sirsidynix.net/lmac_ilsws/';/*Fill in a valid clientId, which can be found in your Web Services admin tool. DS_CLIENT is a default that works on most systems. */var clientId="DS_CLIENT";/***the origApp can be any single word you want. It's just used as another ROA Web Services logging marker***/var origApp='showmarc';/***defining a subfield delimiter character (using a decimal ascii value)***/var subfieldDelimiter= '‡';/***defining fixed field tags (to determine when to not use subfield delimiter)***/var fixedFieldTags=['000','001','003','005','006','007','008'];/***In the tagExclusions array, comma separate any tags you don't want to display***/var tagExclusions=['596', '991','999']; if (typeof jQuery.ui == 'undefined') { reload_jqueryui(rId); return false; }var catKey=jQuery('#'+rId+'_DOC_ID').text().split(':')[1];var htmlOutput='
';var marcUrl=wsBaseUrl+'catalog/bib/key/'+catKey+'?includeFields=*';jQuery.ajax({ type: 'GET', url: marcUrl, dataType: 'json', headers: { "Accept": "application/json","Content-Type":"application/json","SD-Preferred-Role":"GUEST", "x-sirs-clientID":clientId,"sd-originating-app-id":origApp},success: function(marcdata) { bibTag=marcdata.fields.bib.fields;var marcOutput='

';jQuery.each(bibTag,function(tagIndex){var curTag=this.tag;/***add tag exclusion stuff***/if(jQuery.inArray(curTag,tagExclusions)!==-1){ return; }var curInd=(this.inds!==undefined)?this.inds:'&nbsp';if(curInd.trim().length>0){curInd=curInd.replace(' ','_');}htmlOutput+='

';htmlOutput+='
TagInd.Subfields
'+curTag+''+curInd+'';jQuery.each(bibTag[tagIndex].subfields,function(subfieldIndex){ if(jQuery.inArray(curTag,fixedFieldTags)==-1){var subfieldCode=''+subfieldDelimiter+this.code.toString();}else{var subfieldCode='';}var subfieldData=this.data;if (subfieldCode != '') { htmlOutput+=''+subfieldCode+''+subfieldData+'';}else { htmlOutput+=''+subfieldData+'';}});//end each subfield});//end each taghtmlOutput+='
';if ($J('.mobile').length > 0) {// $J('#'+rId+'_htmlWidget').append('

' + htmlOutput + '

');//openModal($J('#'+rId+'_marcview'), 'MARC for record # '+catKey, {width:500, maxHeight:700}, true);/***begin jqueryui dialog***/ $J(function() {$J(htmlOutput).dialog({width:'97%',maxHeight:700,hide: { effect: "scale", duration: 750 },title:'MARC for record # '+catKey,modal:true,buttons:{Ok: function(){$J(this).dialog("close");}}});});setTimeout(function(){$J('#marc_table_'+catKey).parent().css('background-color',"#fff");$J('#marc_table_'+catKey).parent().addClass('floatingModal');$J('#marc_table_'+catKey).siblings('.ui-dialog-titlebar').addClass('text-h2');$J('#marc_table_'+catKey).siblings('.ui-dialog-buttonpane').find('.ui-dialog-buttonset').addClass('okButton');$J('#marc_table_'+catKey).siblings('.ui-dialog-buttonpane').find('button').addClass('button fullwidth').removeClass('ui-button ui-corner-all ui-widget');$J('#marc_table_'+catKey).parent().css('top', "18%");$J('#marc_table_'+catKey).css('max-height',"350px");},100);/***end jQueryUI dialog****/}else {/***begin jqueryui dialog***/ $J(function() {$J(htmlOutput).dialog({width:500,maxHeight:700,hide: { effect: "scale", duration: 750 },title:'MARC for record # '+catKey,modal:true,buttons:{Ok: function(){$J(this).dialog("close");}}});});/***end jQueryUI dialog****/}},error: function (xhr, ajaxOptions, thrownError) { console.log('Error occurred of status ' + xhr.status + ', message is ' + thrownError); }});//end ajax()}//end getbibRoafunction reload_jqueryui(rId){jQuery.getScript( "/client/js/ui/jquery.ui.core.js", function( data, textStatus, jqxhr ) { getBibRoa(rId);});}// Important: Modifications to this file may be overwritten during an upgrade.// If you want to customize this widget and have those modifications persist through upgrades,// make a copy of this widget and make modifications to the copied widget.// You can then assign the copied widget to the detail or search result displays you want.if('undefined' === typeof eRC_Base) { eRC_Base = { //variables ercIds:[], ercTitleData:[], ercFormats:[], titleWaitingCallbacks:[], titlesReady:false, titleAjaxCallsOut:0, //initialization addErcId:function(rId) { var ercId = eRC_Base.getErcIdFromDom(rId); if(ercId) { eRC_Base.ercIds.push({'ercId':ercId,'resultId':rId}); } }, getErcIdFromDom:function (rId) { return $J('#'+rId+'_ERC_ID > .ERC_ID_value').text(); }, //loading the data loadTheData:function() { var idString = ''; for(var i = 0; i < eRC_Base.ercIds.length; i++) { var idVal = eRC_Base.ercIds[i]; if(idString.indexOf(idVal) === -1) { idString += ','+idVal.ercId; } } if(idString.length > 0) { idString = idString.substr(1); } if(idString) { var titlesUrl = addPathParams(com_sirsi_ent_widgets.URLS.eRC.titleInfoUrl, encodeAsTapestry(idString)); eRC_Base.titleAjaxCallsOut++; new AjaxHandler(null, titlesUrl, null, eRC_Base.handleTitlesResponse, null, true).invokeAjax(); } else { eRC_Base.titlesReady = true; } }, handleTitlesResponse:function(response) { eRC_Base.titleAjaxCallsOut--; if((typeof eRC_Base.ercTitleData !== 'undefined') && eRC_Base.ercTitleData) { if ((typeof response.responseJSON !== 'undefined')) { // could the response be undefined? What should we do in that scenario? if(response.responseJSON.eResourceList) { response.responseJSON.eResourceList.forEach(function (er) { eRC_Base.ercTitleData.push(er); }); } if(response.responseJSON.eFormatList) { response.responseJSON.eFormatList.forEach(function (er) { if(!eRC_Base.ercFormats.contains(er)) { eRC_Base.ercFormats.push(er); } }); } } } else { if (response.responseJSON) { eRC_Base.ercTitleData = response.responseJSON.eResourceList; eRC_Base.ercFormats = response.responseJSON.eFormatList; } } eRC_Base.titlesReady = true; var unCalled = []; for(var i = 0; i < eRC_Base.titleWaitingCallbacks.length; i++) { var callback = eRC_Base.titleWaitingCallbacks[i]; var data = eRC_Base.getData(callback.ercId); if(data || eRC_Base.titleAjaxCallsOut == 0) { callback.callback(data); } else { unCalled.push(callback); } } eRC_Base.titleWaitingCallbacks = unCalled; }, getSingleTitle:function(eResourceId) { var titlesUrl = addPathParams(com_sirsi_ent_widgets.URLS.eRC.titleInfoUrl, encodeAsTapestry(eResourceId)); eRC_Base.titleAjaxCallsOut++; new AjaxHandler(null, titlesUrl, null, eRC_Base.handleTitlesResponse, null, true).invokeAjax(); }, //functions getData:function(ercDocumentId) { if (!ercDocumentId) { return; } if (eRC_Base.ercTitleData) { var eResourceList = eRC_Base.ercTitleData; for (var i = 0; i < eResourceList.length; i++) { if (eResourceList[i].id == ercDocumentId) { return eResourceList[i]; } } } //we didn't find it, so request it. // but don't request it if we've already got too many callouts still pending if (eRC_Base.titleAjaxCallsOut < 50) { eRC_Base.getSingleTitle(ercDocumentId); } }, getErcId:function(resultId, isRetry) { if(!resultId) { return; } for(var i = 0; i < eRC_Base.ercIds.length; i++) { var ercId = eRC_Base.ercIds[i]; if(ercId.resultId == resultId) { return ercId.ercId; } } //we might have never seen this result id before. //so, add it to the list (which should pull the ercId from the dom) //and then try again. if(!isRetry) { eRC_Base.addErcId(resultId); return eRC_Base.getErcId(resultId, true); } }, getFormatDetails:function(formatName) { for(format of eRC_Base.ercFormats) { if(format.format === formatName) { return format; } } return null; }, createAnchorTextLinks:function(string, linkInfo) { let div = document.createElement('div'); //linkInfo in an object with keys {replacement, text, and link} if (linkInfo && linkInfo.length > 0) { let regx = /\{[A-Za-z0-9.]+\}/g; let index = 0; string.replace(regx, (match, offset) => { let obj = this.findLinkMatch(linkInfo, match); //append everything before the link div.append(document.createTextNode(string.substring(index, offset))); if(obj) { let a = document.createElement("a"); a.appendChild(document.createTextNode(obj.text)); a.setAttribute("href", "//" + obj.url); a.setAttribute("target", "_blank"); div.append(a); } index = offset + match.length; } ); if(index < string.length -1) { div.append(document.createTextNode(string.substr(index))); } } else { div.append(document.createTextNode(string)); } return div; }, findLinkMatch:function(linkInfo, match) { for(let i = 0; i < linkInfo.length; i++) { if(linkInfo[i].replacement === match) { return linkInfo[i]; } } }, //'API' functions getTitleData:function(callbackFunction, resultId) { var data; // we need to limit the call outs to a reasonable number so that we don't overwhelm the system resources. if(eRC_Base.titlesReady && eRC_Base.titleAjaxCallsOut < 200) { data = eRC_Base.getData(eRC_Base.getErcId(resultId)); } if(data) { callbackFunction(data); } else { eRC_Base.titleWaitingCallbacks.push({'callback':callbackFunction,'ercId':eRC_Base.getErcId(resultId)}); } }, getAccountsResponse:function(callbackFunction, ercAccountsUrl) { var getAccountsUrl = addPathParams(com_sirsi_ent_widgets.URLS.eRC.accountsUrl, encodeAsTapestry(ercAccountsUrl)); new AjaxHandler(null, getAccountsUrl, null, function(response) { callbackFunction(response.responseJSON) }, null, true).invokeAjax(); }, getDownloadResponse:function(callbackFunction, ercResourceUrl, needPin) { var downloadUrl = addPathParams(com_sirsi_ent_widgets.URLS.eRC.getEResourceUrl, encodeAsTapestry(ercResourceUrl)+'/'+!!needPin); new Ajax.Request(downloadUrl, { onSuccess:function(response) { callbackFunction(response.responseJSON) }, onException: Tapestry.ajaxFailureHandler, onFailure: Tapestry.ajaxFailureHandler, asynchronous: true }); }, getPlaceHoldResponse:function(callbackFunction, resultId, emailHold, autoCheckout) { if(typeof autoCheckout !== 'boolean') { autoCheckout = false; } var array = emailHold.split("@"); // tapestry doesn't want us to pass @ characters, so let's split the email address // tapestry doesn't like empty params, so we need to use encodeAsTapestry to pass special values (like empty strings) var getHoldUrl = addPathParams(com_sirsi_ent_widgets.URLS.eRC.placeHoldUrl, encodeAsTapestry(eRC_Base.getErcId(resultId)) + '/' + encodeAsTapestry(array[0]) + '/' + encodeAsTapestry(array[1]) + '/' + autoCheckout); new AjaxHandler(null, getHoldUrl, null, function(response) { callbackFunction(response.responseJSON) }, null, true).invokeAjax(); }, getHoldEmail:function(callbackFunction, resultId) { var getHoldEmail = addPathParams(com_sirsi_ent_widgets.URLS.eRC.emailHoldUrl, encodeAsTapestry(eRC_Base.getErcId(resultId))); new AjaxHandler(null, getHoldEmail, null, function(response) { callbackFunction(response.responseJSON) }, null, true).invokeAjax(); }, fixErcIds:function(sortedDocIds) { // we want to maintain the new sort order var newErcIds = []; if (eRC_Base.ercIds && eRC_Base.ercIds.length > 0) { var ercIdIndex = 0; if (sortedDocIds) { for (var idIndex = 0; idIndex < sortedDocIds.length; idIndex++) { var docId = sortedDocIds[idIndex]; for (var ercIdIndex = 0; ercIdIndex < eRC_Base.ercIds.length; ercIdIndex++) { var currentErcIdObject = eRC_Base.ercIds[ercIdIndex]; var containsErcId = docId.indexOf(currentErcIdObject.ercId); if (containsErcId !== -1) { var currentErcId = currentErcIdObject.ercId; newErcIds.push({'ercId': currentErcId, 'resultId': 'hitlist' + idIndex}); break; } } } } else { var processedResultIdSet = []; var resultIdMap = new Map(); for (var i = 0; i < eRC_Base.ercIds.length; i++) { var ercIdObject = eRC_Base.ercIds[i]; if (!processedResultIdSet.contains(ercIdObject.resultId)) { var resultId = ercIdObject.resultId; var ercId = $J('#' + resultId + '_ERC_ID > .ERC_ID_value').text(); resultIdMap.set(ercId, resultId); processedResultIdSet.push(currentResultId); } } var keys = resultIdMap.keys; for (var j = 0; j < keys.length; j++) { var currentResultId = resultIdMap.get(keys[j]); newErcIds.push({'ercId': j, 'resultId': currentResultId}); } } } eRC_Base.ercIds = newErcIds; }, reorderErcIds:function(docId, destinationIndex, keepItem) { if (eRC_Base.ercIds) { var ercIdFound = false; var ercId, currentIndex; var processedResultIdSet = []; var destination = keepItem ? destinationIndex : eRC_Base.ercIds.length; //check if it's even in the list, otherwise don't worry about it for (var ercIndex = 0; ercIndex < eRC_Base.ercIds.length; ercIndex++) { var currentErcIdObject = eRC_Base.ercIds[ercIndex]; var containsErcId = docId.indexOf(currentErcIdObject.ercId); if (containsErcId !== -1) { ercIdFound = true; ercId = currentErcIdObject.ercId; // remove 'hitlist' to get list index currentIndex = currentErcIdObject.resultId.toString().substring(7); } if (!processedResultIdSet.contains(currentErcIdObject.resultId)) { processedResultIdSet.push(currentErcIdObject.resultId); } } if ('undefined' !== typeof currentIndex) { eRC_Base.adjustResultIds(currentIndex, destination, ercIdFound, ercId, processedResultIdSet.length, keepItem); } else { eRC_Base.fixErcIds(null); } } }, // keepItem - boolean - whether or not we're keeping the item (delete, then no; move, then no; reorder, then yes) adjustResultIds:function(currentResultId, destinationResultId, ercIdInList, ercId, hitlistSize, keepItem) { var newErcIds = []; var processedResultIdSet = []; var currentPosition = currentResultId; var destinationPosition = destinationResultId; var smallerIndex = currentPosition < destinationPosition ? currentPosition : destinationPosition; var upperIndex = currentPosition < destinationPosition ? destinationPosition : currentPosition; // set values before moved items for (var index = 0; index < smallerIndex; index++) { var loopResultId = eRC_Base.getResultIdFromPosition(index); if (eRC_Base.getErcId(loopResultId) && !(eRC_Base.getErcId(loopResultId) === ercId)) { newErcIds.push({'ercId': eRC_Base.getErcId(loopResultId), 'resultId': loopResultId}); } } // put item in list where it goes if it was in the list if (ercIdInList && keepItem) { newErcIds.push({'ercId': ercId, 'resultId': eRC_Base.getResultIdFromPosition(destinationResultId)}); } // set values of moved items if ((currentPosition < destinationPosition) || !keepItem) { var nextPosition = currentResultId; // pull everyone up one while (nextPosition < destinationPosition) { var resultId = nextPosition; var nextErcId = eRC_Base.getNextErcId(resultId); if (nextErcId) { newErcIds.push({'ercId': nextErcId, 'resultId': eRC_Base.getResultIdFromPosition(resultId)}); } nextPosition++; } } else { // push everyone down one var nextPosition = destinationPosition; while (nextPosition < currentPosition) { var nextResultId = eRC_Base.getResultIdFromPosition(nextPosition); var nextErcId = eRC_Base.getErcId(nextResultId, false); if (nextErcId) { newErcIds.push({'ercId': nextErcId, 'resultId': eRC_Base.getResultIdFromPosition(nextPosition + 1)}); } nextPosition++; } } // set values after moved items for (var index = upperIndex + 1; index < hitlistSize; index++) { var loopResultId = eRC_Base.getResultIdFromPosition(index); if (eRC_Base.getErcId(loopResultId)) { newErcIds.push({'ercId': eRC_Base.getErcId(loopResultId, false), 'resultId': loopResultId}); } } eRC_Base.ercIds = newErcIds; }, getResultIdFromPosition:function(position) { return 'hitlist' + position; }, getNextErcId:function(resultId) { var position = parseInt(resultId) + 1; var newResultId = eRC_Base.getResultIdFromPosition(position); return eRC_Base.getErcId(newResultId, false); } }; $J(function() { eRC_Base.loadTheData(); });}function collapseFacets() { // Hide facet columns initially $J('.searchLimitsColumn').hide(); // Add Dropdown Caret to All Facet Titles $J('.searchLimitsColumn .facet .facetTitleRow .facetTitle').prepend(''); // Fix spacing of collapsed facets $J('.searchLimitsColumn .facetTitleRow').css('margin-bottom','0px'); $J('.searchLimitsColumn .facetTitle').css('margin-bottom','0px'); $J('.searchLimitsColumn').show(); // Add Dropdown Caret to All Breadcrumb Sections $J('.searchLimitsColumn .breadCrumbsContainer .breadCrumbs .facetTitle').prepend(''); $J('.searchLimitsColumn #breadCrumbsContainer .breadCrumbs .facetTitle').prepend(''); //// Hide Library facet content // Wrap Library Facet Elements in Div (Only Elements That Should Be Hidden) $J('.searchLimitsColumn .facet form[id^="facet"]').each(function() { $J(this).find(' > div').not('.facetTitleRow').wrapAll(''); }); // Add Class to Newly Created Div, Append Clearer Div, and Hide Div $J('.searchLimitsColumn .facet form > div').not('.facetTitleRow').each(function() { $J(this).addClass('facet-info').append('').hide(); }); //// Create toggle for Library facet accordion content // Display/Hide Filter Choices for Library Results $J('.searchLimitsColumn .facet').each(function() { $J(this).find('> form .facetTitleRow').click(function() { $J(this).parent().find('.facet-info').slideToggle('slow', function() { if ($J(this).css('display') == 'none') { $J(this).parent().find('> .facetTitleRow .facetTitle > i').replaceWith(''); if ($J(this).find('> form').attr('id') !== 'facetFormPUBDATE') { $J(this).parent().find('.limitcolumn_button button[value=Include]').hide(); $J(this).parent().find('.limitcolumn_button button[value=Exclude]').hide(); } else { $J(this).parent().find('.limitcolumn_button button[value=Include]').show(); $J(this).parent().find('.limitcolumn_button button[value=Exclude]').show(); } $J(this).parent().find('.facetTitle').css('font-weight', '400'); var facetNumber = $J(this).find('input[type="checkbox"]:checked').length; if ($J(facetNumber).length > 0) { $J(this).parent().find('.facetTitleRow').css({ 'border-bottom': '0' }); $J(this).parent().find('.facetTitleRow').append('

Selected: ' + facetNumber + '

'); } else { $J(this).parent().find('.facetTitleRow').css({ 'border-bottom': '0' }); } } else { $J(this).parent().find('> .facetTitleRow .facetTitle > i').replaceWith(''); $J(this).parent().find('.limitcolumn_button button[value=Include]').show(); $J(this).parent().find('.limitcolumn_button button[value=Exclude]').show(); $J(this).css('padding-top','10px'); $J(this).parent().find('.facetTitleRow').css({ 'border-bottom': 'solid 1px #dedede' }); $J(this).parent().find('.facetTitle').css('font-weight', '600'); $J(this).parent().find('.facetTitleRow .facets-selected').remove(); } }); }); }); //// Create toggle for Library facet accordion content // Add margin to bottom of last breadcrumb $J('.searchLimitsColumn .limitcolumn_wrapper').find('.breadCrumbsContainer:last').css('margin-bottom', '10px'); $J('.searchLimitsColumn .limitcolumn_wrapper').find('#breadCrumbsContainer:last').css('margin-bottom', '10px'); $J('.searchLimitsColumn, .rightSearchLimitsColumn').show(); if ($J('.searchLimitsColumn #breadCrumbsContainer').text() == "") { $J('.searchLimitsColumn #breadCrumbsContainer').css('margin-bottom', '0'); } // Hide facet include/exclude buttons $J('.searchLimitsColumn .facet').each(function() { $J(this).css('padding-bottom','5px'); if ($J(this).find('> form').attr('id') !== 'facetFormPUBDATE') { $J(this).find('.limitcolumn_button').hide(); } }); // Move include/exclude buttons $J('.searchLimitsColumn .facet').each(function() { $J(this).find('.limitcolumn_button').appendTo($J(this).find('.facet-info')); }); // Show include/exclude when checkboxes are checked (hide if none are checked) $J('.searchLimitsColumn .facet').each(function() { $J(this).find('.facetItem input[type="checkbox"]').change(function() { if ($J(this).parentsUntil('.facet').find('input[type="checkbox"]:checked').length > 0) { $J(this).parentsUntil('.facet').find('.limitcolumn_button').show(); } else { $J(this).parentsUntil('.facet').find('.limitcolumn_button').hide(); } if ($J('.limitcolumn_wrapper').find('.facet > form').has('input[type="checkbox"]:checked').length > 1) { // Animate overlay $J('#include-exclude-overlay').addClass('overlay-visible'); $J('#clear-all-filters').click(function() { $J('#include-exclude-overlay').removeClass('overlay-visible'); $J('.facet').find('input[type="checkbox"]:checked').each(function() { this.checked = false; }); }); } else { $J('#include-exclude-overlay').removeClass('overlay-visible'); } }); }); }function chkOwn(rID) {// Identify Library Profile based on ULR Value.var chk1 = document.URL;var chk2 = chk1.split("/");var LibName = chk2[5];var cellnm = rID.split('hitlist');var hitnm = cellnm[1];//var ercButtonChk = 'hitlist' + hitnm + 'ercDownloadButton';//console.log(ercButtonChk);// Identify Page beyond 1var pgchk = jQuery('#CurrentPagetop').text();var pgchkval = pgchk.valueOf();//alert(pgchkval);var chkhit = hitnm.valueOf();//cellnumr = parseInt(chkhit) + ((pgchkval -1) * 12);cellnumr = parseInt(chkhit);//alert(cellnumr);// Get Cat key from DOC IDvar docuid = (jQuery('#'+rID+'_DOC_ID .DOC_ID_value').text()).split(':') ;var catKey = docuid[1] ;//alert(chkhit);var cellchk = '#results_cell' + cellnumr;//alert(cellchk);jQuery.getJSON('https://sdws06.sirsidynix.net/lmac_ilsws/rest/standard/lookupTitleInfo?clientID=DS_CLIENT&titleID=' + catKey+'&includeItemInfo=true&json=true&callback=?',function(zz){callinf = zz.TitleInfo[0].CallInfo;var htmlOutput='';var cntem=0;jQuery.each(callinf,function(entryIndex,entry) {var libID;var library;libID = this.libraryID;console.log('LIBRARYID: ' + libID + ' LibName: ' + LibName + ' CellNum: ' + cellnm + ' hitnm: ' + hitnm);//alert(libID);//alert(hitnm);//alert(LibName);//The LibID is the ILS policy name for the Library.//LibName is the Enterprise profile name extracted from the browser window.//LibName: pisc-wes = https://lmac.ent.sirsi.net/client/en_US/pisc-wesif ((libID == "CARTERET") && (LibName == "carteret")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "CLARK") && (LibName == "clark")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "CRANBURY") && (LibName == "cranbury")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "CRANFORD") && (LibName == "cranford")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "DUNELLEN") && (LibName == "dunellen")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "ELIZMAIN") && (LibName == "elizabeth")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "ELIZLACORT") && (LibName == "elizabeth")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "ELIZPORT") && (LibName == "elizabeth")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "ELIZELMORA") && (LibName == "elizabeth")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "EPL-BKM") && (LibName == "edisonbkm")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "EPL-CLARA") && (LibName == "edisontownship")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "EPL-MAIN") && (LibName == "tabstest")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "EPL-MAIN") && (LibName == "edisontownship")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "EPL-NORTH") && (LibName == "edisontownship")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "EASTB") && (LibName == "eastbrunswick")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "FANWOOD") && (LibName == "fanwood")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "HPPL") && (LibName == "hppl")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "JAMESBURG") && (LibName == "jamesburg")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "KENILWORTH") && (LibName == "kenilworth")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "KEYPORT") && (LibName == "keyport")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "LBPL") && (LibName == "longbranch")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "LBPL-ELBRN") && (LibName == "longbranch")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "LMXAC") && (LibName == "lmxac")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "MAPL") && (LibName == "matawan")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "MCC") && (LibName == "mcc")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "MDSX") && (LibName == "middlesex")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "METUCHEN") && (LibName == "metuchen")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "MILLTOWN") && (LibName == "milltown")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "MONROE") && (LibName == "monroe")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "MONROE-BKM") && (LibName == "monroe")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "NEWBRUNS") && (LibName == "newbrunswick")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "NOBR") && (LibName == "northbrunswick")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "OB-CENTRAL") && (LibName == "oldcentral")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "OB-LH") && (LibName == "oldcentral")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "PERTH") && (LibName == "perth")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "PISC-KEN") && (LibName == "piscataway")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "PISC-WES") && (LibName == "piscataway")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "PISC-WES") && (LibName == "pisc-wes")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "PLAINFIELD") && (LibName == "plainfield")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "PLAINFIELD") && (LibName == "plainfield_OPAC")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "PLAINFIELD") && (LibName == "plainfield_OPAC_ADV")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "PLAINSBORO") && (LibName == "plainsboro")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "RBANK") && (LibName == "redbank")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "ROSELLE") && (LibName == "roselle")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "ROSPARK") && (LibName == "rospark")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "EASTB") && (LibName == "sandbox")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SAMB") && (LibName == "southamboy")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SAYREVILLE") && (LibName == "sayreville")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SBPL-BKM") && (LibName == "southbrunswick")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SBPL-MAIN") && (LibName == "southbrunswick")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SCOTCHPL") && (LibName == "scotchplains")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SPOTSWOOD") && (LibName == "spotswood")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SOPPL") && (LibName == "southplainfield")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SRIVER") && (LibName == "southriver")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "SPRING") && (LibName == "springfield")) {jQuery(cellchk).css("background-color","#BCF5A9");}if ((libID == "WESTFIELD") && (LibName == "westfield")) {jQuery(cellchk).css("background-color","#BCF5A9");}});}); //var chkcover = jQuery('.displayElementText highlightMe ELECTRONIC_ACCESS').text();//console.log(chkcover);}// Important: Modifications to this file may be overwritten during an upgrade.// If you want to customize this widget and have those modifications persist through upgrades,// make a copy of this widget and make modifications to the copied widget.// You can then assign the copied widget to the detail or search result displays you want.var novelistUrl = "https://imageserver.ebscohost.com/novelistselect/ns2init.js";//The location of the NoveList jsvar novelistProfile = "ebplinf.main.novselent"; //This is your profile as provided by Novelistvar novelistPassword = "dGJyMOPY8Uyzrq4A"; //This is your password as provided by Novelistvar currentNovSelectAttempt = 1;function goNovelist(detail){ var detailIndex=""; if(detail!=undefined) { detailIndex = "detail"+detail; } else { detail=""; } if (typeof(novSelect) == 'undefined') { novelistScript = new Element('script', { type: 'text/javascript', id: 'EIT', src: ''+novelistUrl+''}); $J('body').append(novelistScript); } var detailElement = document.getElementById(detailIndex + '_ISBN'); if(detailElement && detailElement.hasChildNodes()) { var accordionHeader = $J('

Novelist Content

'); var accordionContent = $J('
'); addToAccordion('#detail_accordion'+detail, accordionHeader, accordionContent); NoveListSelectEnrichment(detailElement.childNodes[0].innerHTML); }}function NoveListSelectEnrichment(isbn) { if (typeof(novSelect) == 'undefined') { currentNovSelectAttempt++; if(currentNovSelectAttempt<= 10) { setTimeout("NoveListSelectEnrichment("+isbn+")", 250); } } else { novSelect.loadContentForISBN(String(isbn), novelistProfile, novelistPassword); }}

30 Results Found

Select All

123

000000000000LONGBRANCH_PUBLIC

Select a list

The following items were successfully added.

    There was an error while adding the following items. Please try again.

      One or more items could not be added because you are not logged in.

      1.

      A Caribbean Heiress in Paris

      by

      Adriana Herrera

      Format:

      Electronic Resources

      Cover Image URL

      https://cover.hoopladigital.com/hpc_9781488214349_270.jpeg

      Electronic Resources

      HOOPLA:14698943

      A Caribbean Heiress in Paris

      2.

      A Caribbean Heiress in Paris

      by

      Adriana Herrera

      Format:

      Electronic Resources

      Cover Image URL

      https://cover.hoopladigital.com/hqn_9780369706294_270.jpeg

      Electronic Resources

      HOOPLA:15274031

      A Caribbean Heiress in Paris

      View Other Search Results

      3.

      A Caribbean Heiress in Paris

      by

      Herrera, Adriana,

      Publication

      2022

      Language

      English

      Format:

      Books

      Page Number

      336 PAGES ;

      ISBN

      9781335427519

      Available:

      SD_ILS:2583291

      9781335427519

      Old Bridge Public Library-Central~1

      Cranford Public Library~1

      New Brunswick Public Library~1

      Plainfield Public Library~1

      Westfield Memorial Library~1

      Plainsboro Public Library~1

      Scotch Plains Public Library~1

      TEST!!!

      4.

      A Caribbean heiress in Paris

      A Caribbean heiress in Paris

      by

      Herrera, Adriana (Romance author),

      Publication

      2022

      Language

      English

      Format:

      Books

      Page Number

      362 PAGES ;

      ISBN

      9781335639844

      Available:

      SD_ILS:2579034

      9781335639844

      Spotswood Public Library~1

      Monroe Township Library~1

      Cranford Public Library~1

      South River Public Library~1

      Matawan Aberdeen Public Library~1

      Highland Park Public Library~1

      Elizabeth Main Library~1

      TEST!!!

      5.

      A Caribbean heiress in Paris

      A Caribbean heiress in Paris

      by

      Herrera, Adriana (Romance author),

      Publication

      2023

      Language

      English

      Format:

      Other

      Page Number

      1 AUDIO MEDIA PLAYER (10 HR., 30 MIN.) :

      ISBN

      9798822669123

      Available:

      SD_ILS:2703287

      9798822669123

      TEST!!!

      6.

      A Caribbean heiress in Paris

      by

      Herrera, Adriana (Romance author),

      Publication

      2022

      Language

      English

      Format:

      Books

      Edition

      Large print edition.

      Page Number

      539 PAGES (LARGE PRINT) ;

      ISBN

      9798885783798

      Available:

      SD_ILS:2683772

      9798885783798

      Old Bridge Public Library-Central~1

      Plainfield Public Library~1

      North Brunswick Public Library~1

      TEST!!!

      7.

      Escapade [electronic resource]

      Escapade [electronic resource]

      by

      Palmer, Diana,

      Freading Click here

      Publication

      2018

      Language

      English

      Format:

      Electronic Resources

      Page Number

      1 ONLINE RESOURCE (384 PAGES)

      ISBN

      9781488096372

      Available:

      SD_ILS:2690153

      9781488096372

      ~0

      TEST!!!

      8.

      The Unspeakable Perk

      First Title value, for Searching

      The Unspeakable Perk

      First Author value, for Searching

      Adams, Samuel Hopkins

      Format

      eBook

      Electronic Format

      PLAIN TEXT

      Excerpt:

      Caribbean Area -- Fiction

      eBook

      GUTENBERG:etext5009

      The Unspeakable Perk

      9.

      Alliance with His Stolen Heiress

      by

      San Andres, Lydia

      Format:

      Electronic Resources

      Cover Image URL

      https://cover.hoopladigital.com/hqn_9780369730268_270.jpeg

      Electronic Resources

      HOOPLA:15272947

      Alliance with His Stolen Heiress

      10.

      Free to Be Me

      by

      Nicholls, Peter

      Format:

      Electronic Resources

      Cover Image URL

      https://cover.hoopladigital.com/csp_9780645795561_270.jpeg

      Electronic Resources

      HOOPLA:16199748

      Free to Be Me

      Why a Life Ethic is Replacing the Work Ethic

      11.

      by

      Jackson, Brenda

      Format:

      eBook

      Electronic Format:

      HTML, ADOBE EPUB, KINDLE

      Cover Image URL

      https://img1.od-cdn.com/ImageType-200/1071-1/{6F8CA4DB-BFED-4EA0-AEF9-7F71FD499AF3}Img200.jpg https://img1.od-cdn.com/ImageType-100/1071-1/{6F8CA4DB-BFED-4EA0-AEF9-7F71FD499AF3}Img100.jpg

      eBook

      OVERDRIVE:6f8ca4db-bfed-4ea0-aef9-7f71fd499af3

      Stranded with the Tempting Stranger & The Executive's Surprise Baby

      12.

      Escapade

      by

      Palmer, Diana

      Format:

      eBook

      Electronic Format:

      HTML, ADOBE EPUB, KINDLE

      Cover Image URL

      https://img1.od-cdn.com/ImageType-100/2363-1/{2B5FB962-7F68-48DC-8574-096DA2A7544C}IMG100.JPG https://img1.od-cdn.com/ImageType-200/2363-1/{2B5FB962-7F68-48DC-8574-096DA2A7544C}IMG200.JPG

      eBook

      OVERDRIVE:2b5fb962-7f68-48dc-8574-096da2a7544c

      Escapade

      Select All

      123

      30 Results Found

      Search Results for caribbean heiress (2024)
      Top Articles
      Latest Posts
      Article information

      Author: Stevie Stamm

      Last Updated:

      Views: 6033

      Rating: 5 / 5 (60 voted)

      Reviews: 83% of readers found this page helpful

      Author information

      Name: Stevie Stamm

      Birthday: 1996-06-22

      Address: Apt. 419 4200 Sipes Estate, East Delmerview, WY 05617

      Phone: +342332224300

      Job: Future Advertising Analyst

      Hobby: Leather crafting, Puzzles, Leather crafting, scrapbook, Urban exploration, Cabaret, Skateboarding

      Introduction: My name is Stevie Stamm, I am a colorful, sparkling, splendid, vast, open, hilarious, tender person who loves writing and wants to share my knowledge and understanding with you.