summaryrefslogtreecommitdiff
path: root/java/resources/IceGridAdmin/highlight.js
diff options
context:
space:
mode:
Diffstat (limited to 'java/resources/IceGridAdmin/highlight.js')
-rw-r--r--java/resources/IceGridAdmin/highlight.js502
1 files changed, 251 insertions, 251 deletions
diff --git a/java/resources/IceGridAdmin/highlight.js b/java/resources/IceGridAdmin/highlight.js
index 9666a57abb8..cce75a6ed66 100644
--- a/java/resources/IceGridAdmin/highlight.js
+++ b/java/resources/IceGridAdmin/highlight.js
@@ -1,251 +1,251 @@
-// ----------------------------------------------------------------------------
-// Zoom Search Engine 4.3 (27/6/2006)
-// Highlight & auto-scroll script
-//
-// email: zoom@wrensoft.com
-// www: http://www.wrensoft.com
-//
-// Copyright (C) Wrensoft 2006
-// ----------------------------------------------------------------------------
-// Use this script to allow your search matches to highlight and scroll to
-// the matched word on the actual web page where it was found.
-//
-// You will need to link to this JS file from each page of your site
-// which requires the "highlight/jump to matched word" feature.
-//
-// For example, you could paste the following HTML in your site's header or
-// footer:
-//
-// <style>.highlight { background: #FFFF40; }</style>
-// <script type="text/javascript" src="highlight.js"></script>
-//
-// Note: You will need to specify the correct path to "highlight.js" depending
-// on where the file is located.
-//
-// You will then need to modify the BODY tag on your page to include an "onLoad"
-// attribute, such as:
-//
-// <body onload="highlight();">
-//
-// If for some reason you can not modify the body tag of your page, an alternative
-// would be to put the following line after the </body> tag of your page:
-//
-// <script type="text/javascript">highlight();</script>
-//
-// For more information, consult the Users Guide and our support website at:
-// http://www.wrensoft.com/zoom/support
-//
-//
-// This script is licensed for use with the Zoom Search Engine. Original
-// development by Brett Alcock, VBasys Limited. To licence other applications
-// email highlight@vbasys.com with the subject "license".
-
-var CatchJSErrors = true;
-
-function catcherror() { return true; }
-if (CatchJSErrors)
-{
- window.onerror = catcherror;
-}
-
-function QueryString(key)
-{
- var value = null;
- for (var i=0;i<QueryString.keys.length;i++)
- {
- if (QueryString.keys[i]==key)
- {
- value = QueryString.values[i];
- break;
- }
- }
- return value;
-}
-
-function QueryString_Parse()
-{
- var query = window.location.search.substring(1);
- var pairs = query.split("&");
-
- for (var i=0;i<pairs.length;i++)
- {
- var pos = pairs[i].indexOf('=');
- if (pos >= 0)
- {
- var argname = pairs[i].substring(0,pos);
- var value = pairs[i].substring(pos+1);
- QueryString.keys[QueryString.keys.length] = argname;
- QueryString.values[QueryString.values.length] = value;
- }
- }
-}
-
-QueryString.keys = new Array();
-QueryString.values = new Array();
-
-QueryString_Parse();
-
-function getElement(id)
-{
- if (document.getElementById)
- return(document.getElementById(id));
- else if (document.all)
- return(document.all[id]);
-}
-
-function findPosY(obj)
-{
- var curtop = 0;
- if (obj.offsetParent)
- {
- while (obj.offsetParent)
- {
- curtop += obj.offsetTop
- obj = obj.offsetParent;
- }
- }
- else if (obj.y)
- curtop += obj.y;
- return curtop;
-}
-
-
-// regular expression version
-function SearchHiLite(text)
-{
- var SearchAsSubstring = 0;
- var hl;
-
- hl = QueryString("zoom_highlight");
- if (hl == "" || hl == null)
- {
- hl = QueryString("zoom_highlightsub");
- if (hl == "" || hl == null)
- return false;
- else
- SearchAsSubstring = 1;
- }
- if ((document.charset && document.charset == "utf-8") ||
- (document.characterSet && document.characterSet == "UTF-8"))
- hl = decodeURIComponent(hl);
- else
- hl = unescape(hl);
- hl = hl.toLowerCase();
-
- // create array of terms
- //var term = hl.split("+");
- var re = /\"(.*?)\"|[^\\+\"]+/g;
- var term = hl.match(re);
-
- // convert terms in regexp patterns
- for (var i=0;i<term.length;i++) // take each term in turn
- {
- if(term[i] != "")
- {
- if (term[i].indexOf("\"") != -1)
- {
- // contains double quotes
- term[i]=term[i].replace(/\"/g,"");
- term[i]=term[i].replace(/\+/g," ");
- }
- else
- {
- term[i]=term[i].replace(/\+/g,"");
- }
-
- if (term[i].indexOf("*") != -1 || term[i].indexOf("?") != -1)
- {
- // convert wildcard pattern to regexp
- term[i] = term[i].replace(/\\/g, " ");
- term[i] = term[i].replace(/\^/g, " ");
-
- //term[i] = term[i].replace(/\+/g, " "); // split on this so no point in looking
-
- term[i] = term[i].replace(/\#/g, " ");
- term[i] = term[i].replace(/\$/g, " ");
- term[i] = term[i].replace(/\./g, " ");
-
- // check if search term only contains only wildcards
- // if so, we will not attempt to highlight this term
- var wildcards = /\w/;
- if (wildcards.test(term[i]))
- {
- term[i] = term[i].replace(/\*/g, "[^\\s]*");
- term[i] = term[i].replace(/\?/g, "[^\\s]"); // insist upon one non whitespace
- }
- else
- term[i] = "";
- }
-
- if (term[i] != "")
- {
- if (SearchAsSubstring == 0)
- {
- term[i] = "(>[\\s]*|>[^<]+[\\b\\W])("+term[i]+")(<|[\\b\\W][^>]*<)";
- }
- else
- {
- // if term leads with wildcard then allow it to match preceeding text in word
- var strWB="";
- if(term[i].substr(0,7)=="[^\\s]*") strWB="\\b";
- term[i] = "(>|>[^<]+)"+strWB+"("+term[i]+")([^>]*<)";
- }
- }
- }
- }
-
- text=text.replace(/&amp;/ig, '&');
- text=text.replace(/&nbsp;/ig, '');
-
- for (var i=0;i<term.length;i++) // take each term in turn
- {
- if(term[i] != "")
- {
- // we need a loop for the main search to catch all between ><
- // and we add  before each found to ignore those done etc
- // todo: develop reliable single pass regexp and dispose of loop
- var l = 0;
- re = new RegExp(term[i], "gi");
- var count = 0; // just incase
- text = ">" + text + "<"; // temporary tag marks
- do
- {
- l=text.length;
- text=text.replace(re, '$1<span style="background:#FFFF40;" class="highlight" id="highlight" name="highlight">$2</span id="highlight">$3');
- count++;
- }
- //while(re.lastIndex>0 && count<100); lastIndex not set properly under netscape
- while(l!=text.length && count<100);
- text = text.substring(1, text.length-1); // remove temporary tags
- }
- }
- text = text.replace(eval("//g"), '');
- text = text.replace(eval("//g"), '&nbsp;');
-
- return(text);
-}
-
-function jumpHL()
-{
- var d=getElement("highlight");
- if(d)
- {
- var y=findPosY(d);
- // if element near top of page
- if(y < 100)
- window.scrollTo(0,0); // go to top of page
- else
- window.scrollTo(0,y-50); // show space of 50 above
- }
-}
-
-function highlight()
-{
- var x = document.body;
- if (x)
- {
- var strHTML=SearchHiLite(x.innerHTML);
- if (strHTML!=false) x.innerHTML = strHTML;
- jumpHL();
- }
-}
+// ----------------------------------------------------------------------------
+// Zoom Search Engine 4.3 (27/6/2006)
+// Highlight & auto-scroll script
+//
+// email: zoom@wrensoft.com
+// www: http://www.wrensoft.com
+//
+// Copyright (C) Wrensoft 2006
+// ----------------------------------------------------------------------------
+// Use this script to allow your search matches to highlight and scroll to
+// the matched word on the actual web page where it was found.
+//
+// You will need to link to this JS file from each page of your site
+// which requires the "highlight/jump to matched word" feature.
+//
+// For example, you could paste the following HTML in your site's header or
+// footer:
+//
+// <style>.highlight { background: #FFFF40; }</style>
+// <script type="text/javascript" src="highlight.js"></script>
+//
+// Note: You will need to specify the correct path to "highlight.js" depending
+// on where the file is located.
+//
+// You will then need to modify the BODY tag on your page to include an "onLoad"
+// attribute, such as:
+//
+// <body onload="highlight();">
+//
+// If for some reason you can not modify the body tag of your page, an alternative
+// would be to put the following line after the </body> tag of your page:
+//
+// <script type="text/javascript">highlight();</script>
+//
+// For more information, consult the Users Guide and our support website at:
+// http://www.wrensoft.com/zoom/support
+//
+//
+// This script is licensed for use with the Zoom Search Engine. Original
+// development by Brett Alcock, VBasys Limited. To licence other applications
+// email highlight@vbasys.com with the subject "license".
+
+var CatchJSErrors = true;
+
+function catcherror() { return true; }
+if (CatchJSErrors)
+{
+ window.onerror = catcherror;
+}
+
+function QueryString(key)
+{
+ var value = null;
+ for (var i=0;i<QueryString.keys.length;i++)
+ {
+ if (QueryString.keys[i]==key)
+ {
+ value = QueryString.values[i];
+ break;
+ }
+ }
+ return value;
+}
+
+function QueryString_Parse()
+{
+ var query = window.location.search.substring(1);
+ var pairs = query.split("&");
+
+ for (var i=0;i<pairs.length;i++)
+ {
+ var pos = pairs[i].indexOf('=');
+ if (pos >= 0)
+ {
+ var argname = pairs[i].substring(0,pos);
+ var value = pairs[i].substring(pos+1);
+ QueryString.keys[QueryString.keys.length] = argname;
+ QueryString.values[QueryString.values.length] = value;
+ }
+ }
+}
+
+QueryString.keys = new Array();
+QueryString.values = new Array();
+
+QueryString_Parse();
+
+function getElement(id)
+{
+ if (document.getElementById)
+ return(document.getElementById(id));
+ else if (document.all)
+ return(document.all[id]);
+}
+
+function findPosY(obj)
+{
+ var curtop = 0;
+ if (obj.offsetParent)
+ {
+ while (obj.offsetParent)
+ {
+ curtop += obj.offsetTop
+ obj = obj.offsetParent;
+ }
+ }
+ else if (obj.y)
+ curtop += obj.y;
+ return curtop;
+}
+
+
+// regular expression version
+function SearchHiLite(text)
+{
+ var SearchAsSubstring = 0;
+ var hl;
+
+ hl = QueryString("zoom_highlight");
+ if (hl == "" || hl == null)
+ {
+ hl = QueryString("zoom_highlightsub");
+ if (hl == "" || hl == null)
+ return false;
+ else
+ SearchAsSubstring = 1;
+ }
+ if ((document.charset && document.charset == "utf-8") ||
+ (document.characterSet && document.characterSet == "UTF-8"))
+ hl = decodeURIComponent(hl);
+ else
+ hl = unescape(hl);
+ hl = hl.toLowerCase();
+
+ // create array of terms
+ //var term = hl.split("+");
+ var re = /\"(.*?)\"|[^\\+\"]+/g;
+ var term = hl.match(re);
+
+ // convert terms in regexp patterns
+ for (var i=0;i<term.length;i++) // take each term in turn
+ {
+ if(term[i] != "")
+ {
+ if (term[i].indexOf("\"") != -1)
+ {
+ // contains double quotes
+ term[i]=term[i].replace(/\"/g,"");
+ term[i]=term[i].replace(/\+/g," ");
+ }
+ else
+ {
+ term[i]=term[i].replace(/\+/g,"");
+ }
+
+ if (term[i].indexOf("*") != -1 || term[i].indexOf("?") != -1)
+ {
+ // convert wildcard pattern to regexp
+ term[i] = term[i].replace(/\\/g, " ");
+ term[i] = term[i].replace(/\^/g, " ");
+
+ //term[i] = term[i].replace(/\+/g, " "); // split on this so no point in looking
+
+ term[i] = term[i].replace(/\#/g, " ");
+ term[i] = term[i].replace(/\$/g, " ");
+ term[i] = term[i].replace(/\./g, " ");
+
+ // check if search term only contains only wildcards
+ // if so, we will not attempt to highlight this term
+ var wildcards = /\w/;
+ if (wildcards.test(term[i]))
+ {
+ term[i] = term[i].replace(/\*/g, "[^\\s]*");
+ term[i] = term[i].replace(/\?/g, "[^\\s]"); // insist upon one non whitespace
+ }
+ else
+ term[i] = "";
+ }
+
+ if (term[i] != "")
+ {
+ if (SearchAsSubstring == 0)
+ {
+ term[i] = "(>[\\s]*|>[^<]+[\\b\\W])("+term[i]+")(<|[\\b\\W][^>]*<)";
+ }
+ else
+ {
+ // if term leads with wildcard then allow it to match preceeding text in word
+ var strWB="";
+ if(term[i].substr(0,7)=="[^\\s]*") strWB="\\b";
+ term[i] = "(>|>[^<]+)"+strWB+"("+term[i]+")([^>]*<)";
+ }
+ }
+ }
+ }
+
+ text=text.replace(/&amp;/ig, '&');
+ text=text.replace(/&nbsp;/ig, '');
+
+ for (var i=0;i<term.length;i++) // take each term in turn
+ {
+ if(term[i] != "")
+ {
+ // we need a loop for the main search to catch all between ><
+ // and we add  before each found to ignore those done etc
+ // todo: develop reliable single pass regexp and dispose of loop
+ var l = 0;
+ re = new RegExp(term[i], "gi");
+ var count = 0; // just incase
+ text = ">" + text + "<"; // temporary tag marks
+ do
+ {
+ l=text.length;
+ text=text.replace(re, '$1<span style="background:#FFFF40;" class="highlight" id="highlight" name="highlight">$2</span id="highlight">$3');
+ count++;
+ }
+ //while(re.lastIndex>0 && count<100); lastIndex not set properly under netscape
+ while(l!=text.length && count<100);
+ text = text.substring(1, text.length-1); // remove temporary tags
+ }
+ }
+ text = text.replace(eval("//g"), '');
+ text = text.replace(eval("//g"), '&nbsp;');
+
+ return(text);
+}
+
+function jumpHL()
+{
+ var d=getElement("highlight");
+ if(d)
+ {
+ var y=findPosY(d);
+ // if element near top of page
+ if(y < 100)
+ window.scrollTo(0,0); // go to top of page
+ else
+ window.scrollTo(0,y-50); // show space of 50 above
+ }
+}
+
+function highlight()
+{
+ var x = document.body;
+ if (x)
+ {
+ var strHTML=SearchHiLite(x.innerHTML);
+ if (strHTML!=false) x.innerHTML = strHTML;
+ jumpHL();
+ }
+}