utils.js revision 3df9409a61b23dd736d9ce7bea6e4256bc449ff2
cd348e325366620fe047edcc849e3c9424828599Peter Bray/*
cd348e325366620fe047edcc849e3c9424828599Peter Bray * CDDL HEADER START
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco *
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 *
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * See LICENSE.txt included in this distribution for the specific
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * language governing permissions and limitations under the License.
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray *
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]
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray *
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * CDDL HEADER END
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray/*
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray *
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Portions Copyright 2011 Jens Elkner.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray/**
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Spaces plugin.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray *
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Inserts a dummy space between line number and the text so that on copy-paste
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * the white space is preserved.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray *
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray * Internally listens on scroll events and autofills the spaces only for the visible
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco * elements.
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco *
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 *
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray * @author Krystof Tulinger
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray */
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco(function (w, $) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray var spaces = function () {
cd348e325366620fe047edcc849e3c9424828599Peter Bray var inner = {
cd348e325366620fe047edcc849e3c9424828599Peter Bray defaults: {
cd348e325366620fe047edcc849e3c9424828599Peter Bray interval: 750,
cd348e325366620fe047edcc849e3c9424828599Peter Bray selector: "a.l, a.hl",
cd348e325366620fe047edcc849e3c9424828599Peter Bray $parent: null,
cd348e325366620fe047edcc849e3c9424828599Peter Bray callback: function () {
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco if (!$(this).hasClass("selected")) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray $(this).addClass("selected");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(this).text($(this).text() + " ");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray options: {},
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $collection: $(),
cd348e325366620fe047edcc849e3c9424828599Peter Bray initialized: false,
cd348e325366620fe047edcc849e3c9424828599Peter Bray lock: false,
cd348e325366620fe047edcc849e3c9424828599Peter Bray binarySearch: function (array, key, compare) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray var lo = 0,
cd348e325366620fe047edcc849e3c9424828599Peter Bray hi = array.length - 1,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray mid,
cd348e325366620fe047edcc849e3c9424828599Peter Bray element,
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco cmp;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray while (lo <= hi) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray mid = ((lo + hi) >> 1);
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco cmp = compare(array[mid], key)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray if (cmp === 0) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray return mid;
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray } else if (cmp < 0) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray lo = mid + 1;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } else {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray hi = mid - 1;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return -1;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
cd348e325366620fe047edcc849e3c9424828599Peter Bray handleScrollEvent: function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.lock = false;
cd348e325366620fe047edcc849e3c9424828599Peter Bray
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
cd348e325366620fe047edcc849e3c9424828599Peter Bray var expectations = {
cd348e325366620fe047edcc849e3c9424828599Peter Bray // the first element in viewport
cd348e325366620fe047edcc849e3c9424828599Peter Bray start: Math.floor(
cd348e325366620fe047edcc849e3c9424828599Peter Bray Math.abs(
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray Math.min(myOffset - parentOffset, 0)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ) / myHeight
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ),
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco // the last element in viewport
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray end: Math.ceil(
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco (Math.abs(
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray Math.min(myOffset - parentOffset, 0)
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco ) + parentHeight
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ) / myHeight
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ),
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray };
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var indices = {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray start: 0,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray end: inner.$collection.length
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray };
b34561d2c3d92fac37dbced05ba6a8738e3d20e9Lubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var cmp = function (a, key) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return $(a).attr("name") - key; // comparing the "name" attribute with the desired value
5e6c91d7e77062129cd0b6ac8aaa546dff216419Lubos Kosco };
5e6c91d7e77062129cd0b6ac8aaa546dff216419Lubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray indices.start = inner.binarySearch(inner.$collection, expectations.start, cmp);
cd348e325366620fe047edcc849e3c9424828599Peter Bray indices.end = inner.binarySearch(inner.$collection, expectations.end, cmp);
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray /** cutoffs */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray indices.start = Math.max(0, indices.start);
cd348e325366620fe047edcc849e3c9424828599Peter Bray indices.start = Math.min(inner.$collection.length - 1, indices.start);
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray if (indices.end === -1)
cd348e325366620fe047edcc849e3c9424828599Peter Bray indices.end = inner.$collection.length - 1;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray indices.end = Math.min(inner.$collection.length - 1, indices.end);
cd348e325366620fe047edcc849e3c9424828599Peter Bray
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 }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
cd348e325366620fe047edcc849e3c9424828599Peter Bray init: function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray if (inner.initialized) {
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco return;
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco }
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco
d7c1415de39f4b07c85828f49cd1ee7a2a19eb9eLubos Kosco inner.$collection = inner.options.$parent.find(inner.options.selector);
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco if (inner.$collection.length <= 0) {
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco return;
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var scrollHandler = function (e) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray if (inner.lock) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return;
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.lock = true;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray setTimeout(inner.handleScrollEvent, inner.options.interval);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray };
cd348e325366620fe047edcc849e3c9424828599Peter Bray inner.options.$parent
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .scroll(scrollHandler)
cd348e325366620fe047edcc849e3c9424828599Peter Bray .resize(scrollHandler)
cd348e325366620fe047edcc849e3c9424828599Peter Bray .scroll() // fire the event if user has not scrolled
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.initialized = true;
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray };
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray this.init = function (options) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray inner.options = $.extend({}, inner.defaults, {$parent: $("#content")}, options)
cd348e325366620fe047edcc849e3c9424828599Peter Bray inner.init();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return this;
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco };
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco $.spaces = new ($.extend(spaces, $.spaces ? $.spaces : {}));
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray})(window, window.jQuery);
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco(function(window, $) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var hash = function () {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var inner = {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco self: this,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray initialized: false,
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco highlighted: [],
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco defaults: {
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco highlightedClass: 'target',
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco linkSelectorTemplate: '{parent} a[name={n}]',
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco clickSelector: '{parent} a.l, {parent} a.hl',
cd348e325366620fe047edcc849e3c9424828599Peter Bray parent: 'div#src',
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray autoScroll: true,
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray autoScrollDuration: 500,
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco tooltip: true
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray },
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco options: {},
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco $tooltip: null,
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco bindClickHandler: function() {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray $(inner.format(inner.options.clickSelector, {parent: inner.options.parent})).click (function (e){
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray if(e.shiftKey) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray // shift pressed
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var val = inner.toInt($(this).attr("name"))
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray if(!val){
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray return false
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var l = inner.getLinesParts(window.location.hash)
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco if(l.length == 2) {
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco window.location.hash = "#" + Math.min(l[0], val) + "-" + Math.max(val, l[1])
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco } else if ( l.length == 1){
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco window.location.hash = "#" + Math.min(l[0], val) + "-" + Math.max(l[0], val)
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco }
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray return false
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco }
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray return true
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray })
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray },
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray getHashParts: function (hash) {
ba2e31d47682cf0d28fe7a33f5c0d226a21aee17Lubos Kosco if(!hash || hash == "")
ba2e31d47682cf0d28fe7a33f5c0d226a21aee17Lubos Kosco return hash;
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco return (hash = hash.split("#")).length > 1 ? hash[1] : "";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray getLinesParts: function ( hashPart ) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray hashPart = inner.getHashParts(hashPart)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (!hashPart || hashPart == "")
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco return hashPart;
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco var s = hashPart.split("-")
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco if(s.length > 1 && inner.toInt(s[0]) && inner.toInt(s[1]))
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco return [ inner.toInt(s[0]), inner.toInt(s[1]) ]
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco if(s.length > 0 && inner.toInt(s[0]))
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco return [ inner.toInt(s[0]) ]
cd348e325366620fe047edcc849e3c9424828599Peter Bray return []
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray lines: function (urlPart) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray p = inner.getLinesParts(urlPart)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if(p.length == 2) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var l = [];
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco for ( var i = Math.min(p[0],p[1]); i <= Math.max(p[0], p[1]); i ++ )
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco l.push(i);
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco return l;
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco } else if (p.length == 1){
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco return [ p[0] ]
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray return [];
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray },
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
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)
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray inner.highlighted = []
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray var lines = inner.lines(window.location.hash);
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray if(lines.length < 1) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray // not a case of line highlighting
cd348e325366620fe047edcc849e3c9424828599Peter Bray return
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray for ( var i = 0; i < lines.length; i ++ ) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray // color
cd348e325366620fe047edcc849e3c9424828599Peter Bray var slc = inner.format(inner.options.linkSelectorTemplate, { "parent": inner.options.parent,
cd348e325366620fe047edcc849e3c9424828599Peter Bray "n": lines[i] } );
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray var el = $(slc).addClass(inner.options.highlightedClass)
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray inner.highlighted.push(el)
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray }
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco },
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray format: function(format) {
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) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray return typeof args[number] != 'undefined'
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ? args[number]
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray : match
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray });
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray toInt: function (string) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return parseInt(string)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco scroll: function (){
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if(!inner.options.autoScroll)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var lines = inner.getLinesParts(window.location.hash);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if(lines.length > 0) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var line = lines[0] // first line
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#content").animate({
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco scrollTop: $(inner.format(inner.options.linkSelectorTemplate, {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray parent: inner.options.parent,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray n: line
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray })).offset().top - $(inner.options.parent).offset().top
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }, inner.options.autoScrollDuration);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray tooltip: function() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if(!inner.options.tooltip)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.$tooltip = inner.$tooltip ?
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.$tooltip :
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 .appendTo($("body"))
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .hide()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .addClass("tooltip")
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .addClass("diff_navigation_style")
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(inner.format(inner.options.clickSelector, {parent: inner.options.parent}))
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco .click(function(e) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray if(!inner.options.tooltip)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return
cd348e325366620fe047edcc849e3c9424828599Peter Bray // show box
cd348e325366620fe047edcc849e3c9424828599Peter Bray var $el = $(this)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray setTimeout(function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.$tooltip
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .show()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .stop()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .fadeIn()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .fadeOut( 5000 )
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .offset({
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray top: $el.offset().top + 20,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray left: $el.offset().left + $el.width() + 5
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray });
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }, 300);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.options.tooltip = false;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray })
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } // inner
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray this.init = function (options) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ( inner.initialized ) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return this;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.options = $.extend(inner.defaults, options, {})
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(window).on("hashchange", inner.reload)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.reload()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.tooltip()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.bindClickHandler()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.scroll()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray inner.initialized = true
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return this;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $.hash = new ($.extend(hash, $.hash ? $.hash : {}));
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}) (window, window.jQuery);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray$(document).ready(function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#content").scroll(scope_on_scroll);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#dirlist").tablesorter({
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray sortList: [[0, 0]],
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray cancelSelection: true,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray headers: {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray 1: {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray sorter: 'text'
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray 3: {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray sorter: 'dates'
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray 4: {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray sorter: 'groksizes'
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray });
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // starting spaces plugin
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $.spaces.init()
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $.hash.init({parent: "pre"})
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#sbox input[type='submit']").click(function (e) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#footer").not(".main_page").hide(); // footer
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > p.suggestions").hide(); // suggestions
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > p.pagetitle").hide(); // description
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > p.slider").hide(); // pagination
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > h3").hide(); // error
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > table, #results > ul").hide(); // results + empty
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("#results > table + p, #results > ul + p").hide(); // results + empty timing
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray })
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var searchableOptionListOptions = {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray maxHeight: '300px',
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray showSelectionBelowList: false,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray showSelectAll: false,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray maxShow: 30,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray resultsContainer: $("#ltbl"),
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco events: {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // override the default onScroll positioning event if neccessary
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray onScroll: function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
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
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 } else {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // no border radius on top
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray this.$selectionContainer
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .css('border-top-right-radius', 'initial');
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (this.$actionButtons) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray this.$actionButtons
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .css('border-top-right-radius', 'initial');
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray this.$selectionContainer
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .css('top', Math.floor(posY))
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .css('left', Math.floor(this.$container.offset().left))
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .css('width', selectionContainerWidth);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray };
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $('#project').searchableOptionList(searchableOptionListOptions);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray});
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
2b024356b830395446c55f50f9f724a63612e578Lubos Koscodocument.pageReady = [];
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braydocument.domReady = [];
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braywindow.onload = function() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray for(var i in document.pageReady) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.pageReady[i]();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray$(document).ready(function() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray for(var i in this.domReady) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.domReady[i]();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray});
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray/**
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 */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction resizeContent() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (document.adjustContent != 0) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $('#content').css('top', $('body').outerHeight(true)).css('bottom', 0);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray/**
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Get a parameter value from the URL.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray *
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * @param p the name of the parameter
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * @return the decoded value of parameter p
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction getParameter(p) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // First split up the parameter list. That is, transform from
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // ?a=b&c=d
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // to
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // [ ["a", "b"], ["c","d"] ]
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (getParameter.params === undefined) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray getParameter.params = window.location.search.substr(1).split("&").map(
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray function (x) { return x.split("="); });
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var params = getParameter.params;
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 return decodeURIComponent(params[i][1]);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return undefined;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction domReadyMast() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (!window.location.hash) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var h = getParameter("h");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (h && h !== "") {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray window.location.hash = h;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } else {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $('#content').focus();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (document.annotate) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $('a.r').tooltip({
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray content: function () {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var element = $(this);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var title = element.attr("title") || ""
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var parts = title.split(/<br\/>(?=[a-zA-Z0-9]+:)/g);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (parts.length <= 0)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return "";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var $el = $("<dl>");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray for (var i = 0; i < parts.length; i++) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var definitions = parts[i].split(":");
cd348e325366620fe047edcc849e3c9424828599Peter Bray if (definitions.length < 2)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray continue;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $("<dt>").text(definitions.shift().trim()).appendTo($el);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var $dd = $("<dd>");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $.each(definitions.join("").split("<br/>"), function (i, el) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $dd.append(el.trim());
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $dd.append($("<br/>"));
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray });
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $dd.appendTo($el);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return $el;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray })
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
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray toggle_js.style.display = 'inline';
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray toggle_ss.style.display = 'none';
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
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 $("#content").scroll(scope_on_scroll);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction pageReadyMast() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.adjustContent = 0;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ($('#whole_header') != null && $('#content') != null) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.adjustContent = 1;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray resizeContent();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(window).resize(
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray function() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray resizeContent();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray );
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction domReadyMenu() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var projects = document.projects;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var sbox = document.getElementById('sbox');
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray/*
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 max: 200,
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 },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray formatMatch: function(row, i, max) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return (row != null) ? row[0] : "";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray formatResult: function(row) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return (row != null) ? row[0] : "";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray },
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray width: "300px"
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray });
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco*/
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // TODO Bug 11749
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // var p = document.getElementById('project');
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco // p.setAttribute("autocomplete", "off");
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco}
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscofunction domReadyHistory() {
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);
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco togglediffs();
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco togglerevs();
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco}
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Brayfunction get_annotations() {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco var link = window.location.pathname + "?a=true";
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray if (document.rev) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray link += "&r=" + encodeURIComponent(document.rev);
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco if (window.location.hash) {
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 += "&h=";
70a0fa770eb06713d8ebf91093102044bc5799e0Lubos Kosco link += window.location.hash.substring(1, window.location.hash.length);
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco window.location = link;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Brayfunction toggle_annotations() {
cd348e325366620fe047edcc849e3c9424828599Peter Bray $(document.body).toggleClass("blame-hidden");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco/** list.jsp */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray/**
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray * Initialize defaults for list.jsp
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray */
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Koscofunction pageReadyList() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div_width = 240;
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray document.sym_div_height_max = 480;
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco document.sym_div_top = 100;
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco document.sym_div_left_margin = 40;
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco document.sym_div_height_margin = 40;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.highlight_count = 0;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $(window).resize(function() {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco if (document.sym_div_shown == 1) {
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 }
cd348e325366620fe047edcc849e3c9424828599Peter Bray });
cd348e325366620fe047edcc849e3c9424828599Peter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray/* ------ Navigation window for definitions ------ */
cd348e325366620fe047edcc849e3c9424828599Peter Bray/**
cd348e325366620fe047edcc849e3c9424828599Peter Bray * Create the Navigation toggle link as well as its contents.
cd348e325366620fe047edcc849e3c9424828599Peter Bray */
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction get_sym_list_contents() {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco // var contents = "<input id=\"input_highlight\" name=\"input_highlight\"
cd348e325366620fe047edcc849e3c9424828599Peter Bray // class=\"q\"/>";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // contents += "&nbsp;&nbsp;";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray // contents += "<b><a href=\"#\" onclick=\"javascript:add_highlight();return
cd348e325366620fe047edcc849e3c9424828599Peter Bray // false;\" title=\"Add highlight\">Highlight</a></b><br/>";
cd348e325366620fe047edcc849e3c9424828599Peter Bray var contents =
cd348e325366620fe047edcc849e3c9424828599Peter Bray "<a href=\"#\" onclick=\"javascript:lsttoggle();\">[Close]</a><br/>"
cd348e325366620fe047edcc849e3c9424828599Peter Bray if (typeof get_sym_list != 'function') {
cd348e325366620fe047edcc849e3c9424828599Peter Bray return contents;
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray var symbol_classes = get_sym_list();
cd348e325366620fe047edcc849e3c9424828599Peter Bray for ( var i = 0; i < symbol_classes.length; i++) {
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco if (i > 0) {
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco contents += "<br/>";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco var symbol_class = symbol_classes[i];
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var class_name = symbol_class[1];
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco var symbols = symbol_class[2];
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray contents += "<b>" + symbol_class[0] + "</b><br/>";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray for (var j = 0; j < symbols.length; j++) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var symbol = symbols[j][0];
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray var line = symbols[j][1];
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray contents += "<a href=\"#" + line + "\" class=\"" + class_name + "\" onclick=\"lnshow(); return true;\">"
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco + escape_html(symbol) + "</a><br/>";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return contents;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction escape_html(string) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return string.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction get_sym_div_left() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div_left = $(window)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .width() - (document.sym_div_width + document.sym_div_left_margin);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return document.sym_div_left;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction get_sym_div_height() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div_height = $(window)
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray .height() - document.sym_div_top - document.sym_div_height_margin;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (document.sym_div_height > document.sym_div_height_max) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div_height = document.sym_div_height_max;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return document.sym_div_height;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfunction get_sym_div_top() {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray return document.sym_div_top;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Koscofunction get_sym_div_width() {
cd348e325366620fe047edcc849e3c9424828599Peter Bray return document.sym_div_width;
cd348e325366620fe047edcc849e3c9424828599Peter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray/**
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco * Toggle the display of the 'Navigation' window used to highlight definitions.
cd348e325366620fe047edcc849e3c9424828599Peter Bray */
cd348e325366620fe047edcc849e3c9424828599Peter Brayfunction lsttoggle() {
cd348e325366620fe047edcc849e3c9424828599Peter Bray if (document.sym_div == null) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray document.sym_div = document.createElement("div");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div.id = "sym_div";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div.className = "sym_list_style";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div.style.margin = "0px auto";
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
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco document.sym_div.innerHTML = get_sym_list_contents();
cd348e325366620fe047edcc849e3c9424828599Peter Bray
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco document.body.appendChild(document.sym_div);
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco document.sym_div_shown = 1;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } else if (document.sym_div_shown == 1) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div.className = "sym_list_style_hide";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div_shown = 0;
cd348e325366620fe047edcc849e3c9424828599Peter Bray } else {
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";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div.className = "sym_list_style";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray document.sym_div_shown = 1;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco/**
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray * Toggle the display of line numbers.
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray */
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Brayfunction lntoggle() {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $(document.body).toggleClass("lines-hidden");
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco}
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Koscofunction lnshow() {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $(document.body).removeClass("lines-hidden");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray/* ------ Highlighting ------ */
cd348e325366620fe047edcc849e3c9424828599Peter Bray/**
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco * An expensive Highlighter:
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray * Note: It will replace link's href contents as well, be careful.
cd348e325366620fe047edcc849e3c9424828599Peter Bray */
cd348e325366620fe047edcc849e3c9424828599Peter Bray/* Not used.
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));
}
);
// HighlightKeywordsFullText(["nfstcpsock"]);
}
*/
/**
* Highlight keywords by changeing the style of matching tags.
*/
function HighlightKeyword(keyword) {
var high_colors = [ "#ffff66", "#ffcccc", "#ccccff", "#99ff99", "#cc66ff" ];
var pattern = "a:contains('" + keyword + "')";
$(pattern).css({
'text-decoration' : 'underline',
'background-color' : high_colors[document.highlight_count
% high_colors.length],
'font-weight' : 'bold'
});
document.highlight_count++;
}
//Test: HighlightKeyword('timeval');
/**
* Highlight the text given as value of the element with the ID "input_highlight" .
* @see HighlightKeyword
*/
function add_highlight() {
var tbox = document.getElementById('input_highlight');
HighlightKeyword(tbox.value);
}
function toggle_filelist() {
$("div").each(
function() {
if (this.className == "filelist") {
this.setAttribute("style", "display: none;");
this.className = "filelist-hidden";
} else if (this.className == "filelist-hidden") {
this.setAttribute("style", "display: inline;");
this.className = "filelist";
}
}
);
}
function toggle_revtags() {
$("tr").each(
function() {
if (this.className == "revtags") {
this.setAttribute("style", "display: none;");
this.className = "revtags-hidden";
} else if (this.className == "revtags-hidden") {
this.setAttribute("style", "display: table-row;");
this.className = "revtags";
}
}
);
$("span").each(
function() {
if (this.className == "revtags") {
this.setAttribute("style", "display: none;");
this.className = "revtags-hidden";
} else if (this.className == "revtags-hidden") {
this.setAttribute("style", "display: inline;");
this.className = "revtags";
}
}
);
}
function togglediffs() {
var cr2 = false;
var cr1 = false;
$("#revisions input[type=radio]").each(
function() {
if (this.name=="r1") {
if (this.checked) {
cr1 = true;
return true;
}
if (cr2) {
this.disabled = ''
} else {
this.disabled = 'true'
}
} else if (this.name=="r2") {
if (this.checked) {
cr2=true;
return true;
}
if (!cr1) {
this.disabled = ''
} else {
this.disabled = 'true'
}
}
}
);
}
/**
* Function to toggle revision message length for long revision messages
*/
function togglerevs() {
$(".rev-toggle-a").click(function() {
var toggleState = $(this).closest("p").attr("data-toggle-state");
var thisCell = $(this).closest("td");
if (toggleState == "less") {
$(this).closest("p").attr("data-toggle-state", "more");
thisCell.find(".rev-message-summary").addClass("rev-message-hidden");
thisCell.find(".rev-message-full").removeClass("rev-message-hidden");
$(this).html("... show less");
}
else if (toggleState == "more") {
$(this).closest("p").attr("data-toggle-state", "less");
thisCell.find(".rev-message-full").addClass("rev-message-hidden");
thisCell.find(".rev-message-summary").removeClass("rev-message-hidden");
$(this).html("show more ...");
}
return false;
});
}
function selectAllProjects() {
$("#project").searchableOptionList().selectAll();
}
function invertAllProjects() {
$("#project").searchableOptionList().invert();
}
function deselectAllProjects(){
$("#project").searchableOptionList().deselectAll();
}
function clearSearchFrom() {
$("#sbox input[type='text']").each(function () {
$(this).val("");
});
$("#type :selected").prop("selected", false);
}
// Intelligence Window code starts from here
document.onmousemove = function(event) {
event = event || window.event; // cover IE
document.intelliWindowMouseX = event.clientX;
document.intelliWindowMouseY = event.clientY;
};
$(document).keypress(function(e) {
if (document.activeElement.id === 'search' ||
typeof document.intelliWindow === 'undefined') {
return true;
}
if (e.which === 49) { // '1' pressed
if (document.intelliWindow.className === "intelli_window_style") {
hideIntelliWindow();
} else if (document.intelliWindow.className === "intelli_window_style_hide") {
showIntelliWindow();
}
}
if (e.which === 50) { // '2' pressed
var symbol = document.intelliWindow.symbol;
var highlighted_symbols_with_same_name = $("a").filter(function(index) {
var bgcolor = $(this).css("background-color");
return $(this).text() === symbol &&
(bgcolor === "rgb(255, 215, 0)" || bgcolor === "rgb(255,215,0)" || bgcolor === "#ffd700"); // gold. the last two cover IE
})
if (highlighted_symbols_with_same_name.length === 0) {
highlightSymbol(symbol);
} else {
unhighlightSymbol(symbol);
}
}
return true;
});
function onMouseOverSymbol(symbol, symbolType) {
updateIntelliWindow(symbol, symbolType);
}
function updateIntelliWindow(symbol, symbolType) {
if (!document.intelliWindow) {
createIntelliWindow();
}
var header = [
createCapitionHTML(),
createSymbolHTML(symbol),
createDescriptionHTML(symbolType),
].join("");
document.intelliWindow.innerHTML = header + createActionHTML(symbol, symbolType);
document.intelliWindow.symbol = symbol;
}
function showIntelliWindow() {
var iw = document.intelliWindow;
iw.className = "intelli_window_style";
var top;
var left;
if (document.intelliWindowMouseY + iw.offsetHeight + 20 > $(window).height()) {
top = $(window).height() - iw.offsetHeight - 20;
} else {
top = document.intelliWindowMouseY;
}
if (document.intelliWindowMouseX + iw.offsetWidth + 20 > $(window).width()) {
left = $(window).width() - iw.offsetWidth - 20;
} else {
left = document.intelliWindowMouseX;
}
iw.style.top = top + "px";
iw.style.left = left + "px";
}
function createIntelliWindow() {
document.intelliWindow = document.createElement("div");
document.intelliWindow.id = "intelli_win";
document.body.appendChild(document.intelliWindow);
hideIntelliWindow();
}
function hideIntelliWindow() {
document.intelliWindow.className = "intelli_window_style_hide";
}
function createCapitionHTML() {
return '<a onclick="hideIntelliWindow()">[Close]</a><br/><b>Intelligence Window</b><br/>';
}
function createSymbolHTML(symbol) {
return "<i><h2>" + symbol + "</h2></i>";
}
function createDescriptionHTML(symbolType) {
switch (symbolType) {
case "def":
return "A declaration or definition.<hr/>";
case "defined-in-file":
return "A symbol declared or defined in this file.<hr/>";
case "undefined-in-file":
return "A symbol declared or defined elsewhere.<hr/>";
default:
// should not happen
return "Something I have no idea about.<hr/>";
}
}
function createActionHTML(symbol, symbolType) {
var escapedSymbol = escapeSingleQuote(symbol);
var project = $("input[name='project']").val();
return [
"In current file:<br/><ul>",
"<li><a onclick=\"highlightSymbol('", escapedSymbol, "')\">Highlight <b><i>", symbol,
"</i></b></a>.</li>",
"<li><a onclick=\"unhighlightSymbol('", escapedSymbol, "')\">Unhighlight <b><i>", symbol,
"</i></b></a>.</li>",
"<li><a onclick=\"unhighlightAll()\">Unhighlight all.</li></ul>",
"In project ", project, ":<br/><ul>",
"<li><a onclick=\"intelliWindowSearch('defs=', '", escapedSymbol, "', '", symbolType,
"')\">Search for definitions of <i><b>", symbol,
"</b></i>.</a></li>",
"<li><a onclick=\"intelliWindowSearch('refs=', '", escapedSymbol, "', '", symbolType,
"')\">Search for references of <i><b>", symbol,
"</b></i>.</a></li>",
"<li><a onclick=\"intelliWindowSearch('q=', '", escapedSymbol, "', '", symbolType,
"')\">Do a full search with <i><b>", symbol,
"</b></i>.</a></li>",
"<li><a onclick=\"intelliWindowSearch('path=', '", escapedSymbol, "', '", symbolType,
"')\">Search for file names that contain <i><b>", symbol,
"</b></i>.</a></li></ul>",
"<a onclick=\"googleSymbol('", escapedSymbol, "')\">Google <b><i>", symbol, "</i></b>.</a>"
].join("");
}
function highlightSymbol(symbol) {
var symbols_with_same_name = $("a").filter(function(index) {
return $(this).text() === symbol;
})
symbols_with_same_name.css("background-color", "rgb(255, 215, 0)"); // gold
return false;
}
function unhighlightSymbol(symbol) {
var symbols_with_same_name = $("a").filter(function(index) {
return $(this).text() === symbol;
})
symbols_with_same_name.css("background-color", "rgb(255, 255, 255)"); // white
return false;
}
function unhighlightAll() {
$("a").filter(function(index) {
var bgcolor = $(this).css("background-color");
return bgcolor === "rgb(255, 215, 0)" || bgcolor === "rgb(255,215,0)" || bgcolor === "#ffd700"; // gold. the last two cover IE
}).css("background-color", "rgb(255, 255, 255)"); // white
return false;
}
function intelliWindowSearch(param, symbol, symbolType) {
var contextPath = $("#contextpath").val();
var project = $("input[name='project']").val();
var url = contextPath + "/s?" + param + symbol + "&project=" + project;
window.open(url, '_blank');
return false;
}
function googleSymbol(symbol) {
var url = "https://www.google.com/search?q=" + symbol;
window.open(url, '_blank');
return false;
}
function escapeSingleQuote(string) {
return string.replace("'", "\\'");
}
var scope_visible = 0;
var scope_text = '';
/**
* Fold or unfold a function definition.
*/
function fold(id) {
var i = document.getElementById(id + "_fold_icon").children[0];
i.className = i.className === 'fold-icon' ? 'unfold-icon' : 'fold-icon';
$("#" + id + "_fold").toggle('fold');
}
/**
* Function that is called when the #content div element is scrolled. Checks
* if the top of the page is inside a function scope. If so, update the
* scope element to show the name of the function and a link to its definition.
*/
function scope_on_scroll() {
var cnt = document.getElementById("content");
var scope_cnt = document.getElementById("scope_content");
var y = cnt.getBoundingClientRect().top + 2;
var c = document.elementFromPoint(15, y+1);
scope_cnt.innerHTML = '';
if (c.className === "l" || c.className === "hl") {
prev = c;
var par = c.parentNode;
while( par.className !== 'scope-body' && par.className !== 'scope-head' ) {
par = par.parentNode;
if (par === null) {
return ;
}
}
var head = par.className === 'scope-body' ? par.previousSibling : par;
var sig = head.children[0];
scope_cnt.innerHTML = '<a href="#' + head.id + '">' + sig.innerHTML + '</a>';
}
}