utils.js revision 3df9409a61b23dd736d9ce7bea6e4256bc449ff2
cd348e325366620fe047edcc849e3c9424828599Peter Bray * CDDL HEADER START
cd348e325366620fe047edcc849e3c9424828599Peter Bray * The contents of this file are subject to the terms of the
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Common Development and Distribution License (the "License").
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * You may not use this file except in compliance with the License.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * See LICENSE.txt included in this distribution for the specific
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * language governing permissions and limitations under the License.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * When distributing Covered Code, include this CDDL HEADER in each
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco * file and include the License file at LICENSE.txt.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * If applicable, add the following below this CDDL HEADER, with the
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * fields enclosed by brackets "[]" replaced with your own identifying
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray * information: Portions Copyright [yyyy] [name of copyright owner]
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * CDDL HEADER END
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Portions Copyright 2011 Jens Elkner.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Spaces plugin.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Inserts a dummy space between line number and the text so that on copy-paste
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * the white space is preserved.
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray * Internally listens on scroll events and autofills the spaces only for the visible
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco * IMPORTANT: This plugin is strictly dependent on ascending order of lines
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco * and on their attribute "name". It performs a binary search which boosts performance
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray * of this plugin for really long files.
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray * @author Krystof Tulinger
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco(function (w, $) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray var spaces = function () {
cd348e325366620fe047edcc849e3c9424828599Peter Bray callback: function () {
cd348e325366620fe047edcc849e3c9424828599Peter Bray var myOffset = inner.$collection.first().offset() ? inner.$collection.first().offset().top : 0
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var myHeight = inner.$collection.first().height() || 0
cd348e325366620fe047edcc849e3c9424828599Peter Bray var parentOffset = inner.options.$parent.offset() ? inner.options.$parent.offset().top : 0
cd348e325366620fe047edcc849e3c9424828599Peter Bray var parentHeight = inner.options.$parent.height() || 0
cd348e325366620fe047edcc849e3c9424828599Peter Bray // the first element in viewport
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco // the last element in viewport
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return $(a).attr("name") - key; // comparing the "name" attribute with the desired value
cd348e325366620fe047edcc849e3c9424828599Peter Bray indices.start = inner.binarySearch(inner.$collection, expectations.start, cmp);
cd348e325366620fe047edcc849e3c9424828599Peter Bray indices.end = inner.binarySearch(inner.$collection, expectations.end, cmp);
cd348e325366620fe047edcc849e3c9424828599Peter Bray /** cutoffs */
cd348e325366620fe047edcc849e3c9424828599Peter Bray indices.start = Math.min(inner.$collection.length - 1, indices.start);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray indices.end = Math.min(inner.$collection.length - 1, indices.end);
cd348e325366620fe047edcc849e3c9424828599Peter Bray /** calling callback for every element in the viewport */
cd348e325366620fe047edcc849e3c9424828599Peter Bray for (var i = indices.start; i <= indices.end; i++) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.options.callback.apply(inner.$collection[i])
cd348e325366620fe047edcc849e3c9424828599Peter Bray init: function () {
d7c1415de39f4b07c85828f49cd1ee7a2a19eb9eLubos Kosco inner.$collection = inner.options.$parent.find(inner.options.selector);
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var scrollHandler = function (e) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray setTimeout(inner.handleScrollEvent, inner.options.interval);
cd348e325366620fe047edcc849e3c9424828599Peter Bray .scroll() // fire the event if user has not scrolled
cd348e325366620fe047edcc849e3c9424828599Peter Bray inner.options = $.extend({}, inner.defaults, {$parent: $("#content")}, options)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return this;
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco $.spaces = new ($.extend(spaces, $.spaces ? $.spaces : {}));
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco(function(window, $) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var hash = function () {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray $(inner.format(inner.options.clickSelector, {parent: inner.options.parent})).click (function (e){
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray // shift pressed
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray return false
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var l = inner.getLinesParts(window.location.hash)
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco window.location.hash = "#" + Math.min(l[0], val) + "-" + Math.max(val, l[1])
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco window.location.hash = "#" + Math.min(l[0], val) + "-" + Math.max(l[0], val)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray return false
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco return (hash = hash.split("#")).length > 1 ? hash[1] : "";
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco if(s.length > 1 && inner.toInt(s[0]) && inner.toInt(s[1]))
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco for ( var i = Math.min(p[0],p[1]); i <= Math.max(p[0], p[1]); i ++ )
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco return [ p[0] ]
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray reload: function(e){
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray for ( var i = 0; i < inner.highlighted.length; i ++ ) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray // remove color
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray inner.highlighted[i].removeClass(inner.options.highlightedClass)
cd348e325366620fe047edcc849e3c9424828599Peter Bray // not a case of line highlighting
cd348e325366620fe047edcc849e3c9424828599Peter Bray var slc = inner.format(inner.options.linkSelectorTemplate, { "parent": inner.options.parent,
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var el = $(slc).addClass(inner.options.highlightedClass)
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray var args = Array.prototype.slice.call(arguments, 1);
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco args = args.length > 0 ? typeof args[0] === "object" ? args[0] : args : args;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return format.replace(/{([a-zA-Z0-9_-]+)}/g, function(match, number) {
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco scroll: function (){
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var lines = inner.getLinesParts(window.location.hash);
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco scrollTop: $(inner.format(inner.options.linkSelectorTemplate, {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray })).offset().top - $(inner.options.parent).offset().top
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray tooltip: function() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("<div>Did you know? You can select a range of lines<br /> by clicking on the other while holding shift key.</div>")
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(inner.format(inner.options.clickSelector, {parent: inner.options.parent}))
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco .click(function(e) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray var $el = $(this)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray setTimeout(function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return this;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.options = $.extend(inner.defaults, options, {})
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return this;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $.hash = new ($.extend(hash, $.hash ? $.hash : {}));
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // starting spaces plugin
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#sbox input[type='submit']").click(function (e) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > p.suggestions").hide(); // suggestions
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > p.pagetitle").hide(); // description
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > table, #results > ul").hide(); // results + empty
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > table + p, #results > ul + p").hide(); // results + empty timing
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // override the default onScroll positioning event if neccessary
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray onScroll: function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var posY = this.$input.offset().top - this.config.scrollTarget.scrollTop() + this.$input.outerHeight(),
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray selectionContainerWidth = this.$innerContainer.outerWidth(false) - parseInt(this.$selectionContainer.css('border-left-width'), 10) - parseInt(this.$selectionContainer.css('border-right-width'), 10);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (this.$innerContainer.css('display') !== 'block') {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // container has a certain width
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // make selection container a bit wider
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray selectionContainerWidth = Math.ceil(selectionContainerWidth * 1.2);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // no border radius on top
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .css('left', Math.floor(this.$container.offset().left))
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $('#project').searchableOptionList(searchableOptionListOptions);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray for(var i in this.domReady) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Resize the element with the ID 'content' so that it fills the whole browser
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * window (i.e. the space between the header and the bottom of the window) and
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * thus get rid off the scrollbar in the page header.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $('#content').css('top', $('body').outerHeight(true)).css('bottom', 0);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Get a parameter value from the URL.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * @param p the name of the parameter
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * @return the decoded value of parameter p
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // First split up the parameter list. That is, transform from
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // [ ["a", "b"], ["c","d"] ]
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray getParameter.params = window.location.search.substr(1).split("&").map(
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // Then look for the parameter.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray for (var i in params) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (params[i][0] === p && params[i].length > 1) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (h && h !== "") {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray content: function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var element = $(this);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var parts = title.split(/<br\/>(?=[a-zA-Z0-9]+:)/g);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("<dt>").text(definitions.shift().trim()).appendTo($el);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $.each(definitions.join("").split("<br/>"), function (i, el) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray //$('a.r').tooltip({ left: 5, showURL: false });
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var toggle_js = document.getElementById('toggle-annotate-by-javascript');
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var toggle_ss = document.getElementById('toggle-annotate');
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // When we move to a version of XHTML that supports the onscroll
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // attribute in the div element, we should add an onscroll attribute
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // in the generated XHTML in mast.jsp. For now, set it with jQuery.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ($('#whole_header') != null && $('#content') != null) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray function() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#project").autocomplete(projects, {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray minChars: 0,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray multiple: true,
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray multipleSeparator: ",",
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray //mustMatch: true,
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray matchContains: "word",
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray cacheLength:20,
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray //autoFill: false,
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray formatItem: function(row, i, max) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return (row != null) ? i + "/" + max + ": " + row[0] : "";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray formatMatch: function(row, i, max) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return (row != null) ? row[0] : "";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray formatResult: function(row) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return (row != null) ? row[0] : "";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray width: "300px"
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // TODO Bug 11749
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // var p = document.getElementById('project');
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // p.setAttribute("autocomplete", "off");
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // start state should ALWAYS be: first row: r1 hidden, r2 checked ;
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // second row: r1 clicked, (r2 hidden)(optionally)
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // I cannot say what will happen if they are not like that, togglediffs
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // will go mad !
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco $("#revisions input[type=radio]").click(togglediffs);
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco var link = window.location.pathname + "?a=true";
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray link += "&r=" + encodeURIComponent(document.rev);
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco // If a line is highlighted when "annotate" is clicked, we want to
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray // preserve the highlighting, but we don't want the page to scroll
70a0fa770eb06713d8ebf91093102044bc5799e0Lubos Kosco // to the highlighted line. So put the line number in a URL parameter
70a0fa770eb06713d8ebf91093102044bc5799e0Lubos Kosco // instead of in the hash.
70a0fa770eb06713d8ebf91093102044bc5799e0Lubos Kosco link += window.location.hash.substring(1, window.location.hash.length);
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray * Initialize defaults for list.jsp
cd348e325366620fe047edcc849e3c9424828599Peter Bray document.sym_div.style.left = get_sym_div_left() + "px";
cd348e325366620fe047edcc849e3c9424828599Peter Bray document.sym_div.style.height = get_sym_div_height() + "px";
cd348e325366620fe047edcc849e3c9424828599Peter Bray/* ------ Navigation window for definitions ------ */
cd348e325366620fe047edcc849e3c9424828599Peter Bray * Create the Navigation toggle link as well as its contents.
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco // var contents = "<input id=\"input_highlight\" name=\"input_highlight\"
cd348e325366620fe047edcc849e3c9424828599Peter Bray // class=\"q\"/>";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // contents += " ";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // contents += "<b><a href=\"#\" onclick=\"javascript:add_highlight();return
cd348e325366620fe047edcc849e3c9424828599Peter Bray // false;\" title=\"Add highlight\">Highlight</a></b><br/>";
cd348e325366620fe047edcc849e3c9424828599Peter Bray "<a href=\"#\" onclick=\"javascript:lsttoggle();\">[Close]</a><br/>"
cd348e325366620fe047edcc849e3c9424828599Peter Bray for ( var i = 0; i < symbol_classes.length; i++) {
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco if (i > 0) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray contents += "<b>" + symbol_class[0] + "</b><br/>";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray contents += "<a href=\"#" + line + "\" class=\"" + class_name + "\" onclick=\"lnshow(); return true;\">"
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return string.replace("&", "&").replace("<", "<").replace(">", ">");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .width() - (document.sym_div_width + document.sym_div_left_margin);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .height() - document.sym_div_top - document.sym_div_height_margin;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (document.sym_div_height > document.sym_div_height_max) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div_height = document.sym_div_height_max;
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco * Toggle the display of the 'Navigation' window used to highlight definitions.
cd348e325366620fe047edcc849e3c9424828599Peter Bray document.sym_div = document.createElement("div");
cd348e325366620fe047edcc849e3c9424828599Peter Bray document.sym_div.style.width = get_sym_div_width() + "px";
cd348e325366620fe047edcc849e3c9424828599Peter Bray document.sym_div.style.height = get_sym_div_height() + "px";
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco document.sym_div.style.top = get_sym_div_top() + "px";
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco document.sym_div.style.left = get_sym_div_left() + "px";
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco document.sym_div.innerHTML = get_sym_list_contents();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div.className = "sym_list_style_hide";
cd348e325366620fe047edcc849e3c9424828599Peter Bray document.sym_div.style.height = get_sym_div_height() + "px";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco document.sym_div.style.width = get_sym_div_width() + "px";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco document.sym_div.style.top = get_sym_div_top() + "px";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div.style.left = get_sym_div_left() + "px";
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray * Toggle the display of line numbers.
cd348e325366620fe047edcc849e3c9424828599Peter Bray/* ------ Highlighting ------ */
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco * An expensive Highlighter:
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Note: It will replace link's href contents as well, be careful.
cd348e325366620fe047edcc849e3c9424828599Peter Brayfunction HighlightKeywordsFullText(keywords) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var el = $("body");
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(keywords).each(
cd348e325366620fe047edcc849e3c9424828599Peter Bray function() {
cd348e325366620fe047edcc849e3c9424828599Peter Bray var pattern = new RegExp("("+this+")", ["gi"]);
cd348e325366620fe047edcc849e3c9424828599Peter Bray var rs = "<span style='background-color:#FFFF00;font-weight:bold;'"
cd348e325366620fe047edcc849e3c9424828599Peter Bray + ">$1</span>";
cd348e325366620fe047edcc849e3c9424828599Peter Bray el.html(el.html().replace(pattern, rs));
function add_highlight() {
function toggle_filelist() {
function toggle_revtags() {
function togglediffs() {
var cr2 = false;
var cr1 = false;
if (this.checked) {
cr1 = true;
if (cr2) {
if (this.checked) {
cr2=true;
if (!cr1) {
function togglerevs() {
function selectAllProjects() {
function invertAllProjects() {
function deselectAllProjects(){
function clearSearchFrom() {
(bgcolor === "rgb(255, 215, 0)" || bgcolor === "rgb(255,215,0)" || bgcolor === "#ffd700"); // gold. the last two cover IE
var header = [
function showIntelliWindow() {
var top;
var left;
function createIntelliWindow() {
function hideIntelliWindow() {
function createCapitionHTML() {
switch (symbolType) {
function unhighlightAll() {
return bgcolor === "rgb(255, 215, 0)" || bgcolor === "rgb(255,215,0)" || bgcolor === "#ffd700"; // gold. the last two cover IE
function scope_on_scroll() {
prev = c;
if (par === null) {