window.onload = init; function init() { removeWhitespace(getSearchCriteriaBodyElement()); } function addSearchCriterion() { var rootElement = getSearchCriteriaBodyElement(); var criteriaCount = rootElement.childNodes.length; var row = createNewSearchCriteriumRow(criteriaCount + 1); rootElement.appendChild(row); resetControls(); } function deleteSearchCriterium(index) { var rootElement = getSearchCriteriaBodyElement(); var child = rootElement.childNodes[index]; rootElement.removeChild(child); resetControls(); } function getSearchCriteriaBodyElement() { return document.getElementById("search_criteria_body"); } function createNewSearchCriteriumRow(criteriumNr) { var row = document.createElement("tr"); row.appendChild(createNewSearchFieldCell(criteriumNr)); row.appendChild(createNewSearchRelationCell(criteriumNr)); row.appendChild(createNewSearchTermCell(criteriumNr)); row.appendChild(createNewSearchCriteriumDeleteCell(criteriumNr)); return row; } function createNewSearchFieldCell(criteriumNr) { var cell = document.createElement("td"); cell.appendChild(createNewSearchFieldInput(criteriumNr)); return cell; } function createNewSearchFieldInput(criteriumNr) { var input = document.createElement("select"); input.setAttribute("id", "search_field_" + criteriumNr + "_input"); input.setAttribute("name", "search_field_" + criteriumNr); input.appendChild(createSelectOption("1", "Title/Subtitle")); input.appendChild(createSelectOption("2", "Author")); input.appendChild(createSelectOption("3", "Keywords")); input.appendChild(createSelectOption("4", "Abstract")); input.appendChild(createSelectOption("5", "Full Text")); input.appendChild(createSelectOption("6", "Notes")); input.appendChild(createSelectOption("0", "*Any")); return input; } function createNewSearchRelationCell(criteriumNr) { var cell = document.createElement("td"); cell.appendChild(createNewSearchRelationInput(criteriumNr)); return cell; } function createNewSearchRelationInput(criteriumNr) { var input = document.createElement("select"); input.setAttribute("id", "search_relation_" + criteriumNr + "_input"); input.setAttribute("name", "search_relation_" + criteriumNr); input.appendChild(createSelectOption("2", "Contains")); input.appendChild(createSelectOption("3", "Does not contain")); input.appendChild(createSelectOption("0", "Matches")); input.appendChild(createSelectOption("1", "Does not match")); return input; } function createNewSearchTermCell(criteriumNr) { var cell = document.createElement("td"); cell.appendChild(createNewSearchTermInput(criteriumNr)); return cell; } function createNewSearchTermInput(criteriumNr) { var input = document.createElement("input"); input.setAttribute("type", "text"); input.setAttribute("id", "search_term_" + criteriumNr + "_input"); input.setAttribute("name", "search_term_" + criteriumNr); return input; } function createNewSearchCriteriumDeleteCell(criteriumNr) { var cell = document.createElement("td"); cell.appendChild(createNewSearchCriteriumDeleteLink(criteriumNr)); return cell; } function createNewSearchCriteriumDeleteLink(criteriumNr) { var link = document.createElement("a"); link.setAttribute("href", "#"); link.onclick = function(){deleteSearchCriterium(criteriumNr - 1);}; link.innerHTML = "delete"; return link; } function resetControls() { var rootElement = getSearchCriteriaBodyElement(); var criteriaCount = rootElement.childNodes.length; for(var i = 0; i < criteriaCount; i++) { var row = rootElement.childNodes[i]; setSearchCriteriumControlNames(row, i + 1, criteriaCount > 1); } displayMatchOptions(criteriaCount > 1); } function displayMatchOptions(visible) { var matchOptions = document.getElementById("match_options"); if(visible) { matchOptions.style.visibility = "visible"; } else { matchOptions.style.visibility = "hidden"; } } function setSearchCriteriumControlNames(row, criteriumNr, deleteVisible) { var input = row.childNodes[0].childNodes[0]; input.setAttribute("id", "search_field_" + criteriumNr + "_input"); input.setAttribute("name", "search_field_" + criteriumNr); input = row.childNodes[1].childNodes[0]; input.setAttribute("id", "search_relation_" + criteriumNr + "_input"); input.setAttribute("name", "search_relation_" + criteriumNr); input = row.childNodes[2].childNodes[0]; input.setAttribute("id", "search_term_" + criteriumNr + "_input"); input.setAttribute("name", "search_term_" + criteriumNr); var link = row.childNodes[3].childNodes[0]; link.onclick = function() {deleteSearchCriterium(criteriumNr - 1)}; if(deleteVisible) { link.style.visibility = "visible"; } else { link.style.visibility = "hidden"; } } function createSelectOption(value, text) { var option = document.createElement("option"); option.setAttribute("value", value); option.innerHTML = text; return option; } function viewDocument(documentId) { var url = "view_document.html?document_id=" + documentId; window.open(url, "Document", "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800px,height=600px,left=300,top=300"); } function removeWhitespace(element) { for(var i = 0; i < element.childNodes.length; i++) { if(!element.childNodes[i].tagName) { element.removeChild(element.childNodes[i]); i--; } else if(element.childNodes[i].childNodes.length > 0 && element.childNodes[i].tagName != "OPTION" && element.childNodes[i].tagName != "INPUT" && element.childNodes[i].tagName != "A") { removeWhitespace(element.childNodes[i]); } } } function openHelpPopup() { window.open("view_help.html", "Help", "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800px,height=600px,left=300,top=300"); } function openRequestPopup() { window.open("request.html", "Request", "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=700px,height=600px,left=300,top=300"); } function openRequestHelpPopup() { window.open("request_help.html", "RequestHelp", "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=700px,height=600px,left=300,top=300"); }