/******************************************************************************* * Copyright (c) 2012, Directors of the Tyndale STEP Project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * Neither the name of the Tyndale House, Cambridge (www.TyndaleHouse.com) * nor the names of its contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ /** * Sets up the logic around intialisation, displaying and retrieving * values from the interlinear popup. * * The popup displays a list of checkboxes, one for each version containing * strong numbers. Selecting one or more of the checkboxes, causes the passasge * display to be displayed one line under another, e.g. * KJV - The blah * Byz - The blah * * @param an array of Bible versions that contain strong numbers */ function InterlinearPopup(versionsFromServer, passageId, interlinearPopup) { this.passageId = passageId; this.interlinearPopup = $(interlinearPopup); //sets up the checkboxes in the popup var self = this; //first set up the passage id this.interlinearPopup.attr("passage-id", this.passageId); //the interelinear popup is now dependant on the set of versions shown: this.interlinearPopup.hear("version-list-refresh", function(selfElement, versions) { self.refreshCheckBoxes(versions); }); this.interlinearPopup.hear("version-changed-" + this.passageId, function() { self.refreshCheckBoxes(); }); //now do the handlers this.refreshCheckBoxes(versionsFromServer); this.addShowHandler(); } /** * sets up all the checkboxes */ InterlinearPopup.prototype.refreshCheckBoxes = function(versionsFromServer) { var strongedVersions = []; var ii = 0; //delete current popup $("table", this.interlinearPopup).remove(); //if we've been passed in versions, then store if(versionsFromServer) { //iterate through all versions for those that have strong numbers $.each(versionsFromServer, function(index, item) { var showingText = "[" + item.initials + "] " + item.name; if(item.hasStrongs) { strongedVersions[ii++] = { label: showingText, value: item.initials}; } }); this.versions = strongedVersions; } this.createCheckboxes(this.versions); this.addHandlersToCheckboxes(); this.addAllOptionsHandler(); }; /** * creates all the checkboxes, one per strong version * @param strongedVersions the list of strong versions */ InterlinearPopup.prototype.createCheckboxes = function(strongedVersions) { var ii = 0; var allOptionsValue = ""; var allCheckBoxes = ""; var interlinearChoices = $(".interlinearChoices", this.interlinearPopup); var displayedVersion = $(".passageContainer[passage-id = " + this.passageId +"] .passageVersion").val(); var row = 0; for(ii = 0 ; ii < strongedVersions.length; ii++) { var longName = strongedVersions[ii].label; var shortName = longName.length > 20 ? shortenName(longName, 20) : longName; var disabledOption = displayedVersion == strongedVersions[ii].value; var disabledCheckBox = disabledOption ? "disabled='disabled' " : ""; var disabledLabel = disabledOption ? "inactive" : ""; //created a checkbox for this, that adds the text if checked to the input if((ii % 2) == 0) { allCheckBoxes += "