1 |
// |
// |
2 |
// google.js |
// google.js |
3 |
// Google Highlighter |
// Google Highlighter |
4 |
// |
// |
5 |
// Copyright(C)2001 - 2003 |
// Copyright(C)2001 - 2003 |
6 |
// Cal Henderson <cal@iamcal.com> |
// Cal Henderson <cal@iamcal.com> |
7 |
// |
// |
8 |
// Thanks to Ian Beveridge for bugfixes |
// Thanks to Ian Beveridge for bugfixes |
9 |
// |
// |
10 |
// This code may be freely redistributed, |
// This code may be freely redistributed, |
11 |
// providing this message remains intact. |
// providing this message remains intact. |
12 |
// |
// |
13 |
|
|
14 |
var google_text_color = '#000000'; |
var google_text_color = '#000000'; |
15 |
|
|
16 |
var google_link_colors = new Array('#ffff66','#a0ffff','#99ff99','#ff9999','#ff66ff'); |
var google_link_colors = new Array('#ffff66','#a0ffff','#99ff99','#ff9999','#ff66ff'); |
17 |
|
|
18 |
function init_google(){ |
function init_google(){ |
19 |
var pattern = /google\./i; |
var pattern = /query=/i; |
20 |
if (pattern.exec(document.referrer) != null){ |
var url_args; |
21 |
var url_parts = document.referrer.split('?'); |
|
22 |
if (url_parts[1]){ |
if (pattern.exec(document.referrer) != null) { |
23 |
var url_args = url_parts[1].split('&'); |
var url_parts = document.referrer.split('?'); |
24 |
for(var i=0; i<url_args.length; i++){ |
if (url_parts[1]) url_args = url_parts[1]; |
25 |
var keyval = url_args[i].split('='); |
} else if (pattern.exec(location.search.substring(1)) != null) { |
26 |
if (keyval[0] == 'q'){ |
url_args = location.search.substring(1); |
27 |
go_google(decode_url(keyval[1])); |
} |
28 |
return; |
|
29 |
} |
if (url_args){ |
30 |
} |
url_args = url_args.split('&'); |
31 |
} |
for(var i=0; i<url_args.length; i++){ |
32 |
} |
var keyval = url_args[i].split('='); |
33 |
} |
if (keyval[0] == 'query'){ |
34 |
|
go_google(decode_url(keyval[1])); |
35 |
function decode_url(url){ |
return; |
36 |
return unescape(url.replace(/\+/g,' ')); |
} |
37 |
} |
} |
38 |
|
} |
39 |
function go_google(terms){ |
} |
40 |
terms = terms.replace(/\"/g,""); |
|
41 |
var terms_split = terms.split(' '); |
function decode_url(url){ |
42 |
var c = 0; |
return l2_unescape(url.replace(/\+/g,' ')); |
43 |
for(var i=0; i<terms_split.length; i++){ |
} |
44 |
highlight_goolge(terms_split[i], document.body,google_link_colors[c]); |
|
45 |
c = (c == google_link_colors.length-1)?0:c+1; |
function go_google(terms){ |
46 |
} |
terms = terms.replace(/\"/g,""); |
47 |
} |
var terms_split = terms.split(' '); |
48 |
|
var c = 0; |
49 |
function highlight_goolge(term, container, color){ |
for(var i=0; i<terms_split.length; i++){ |
50 |
var term_low = term.toLowerCase(); |
highlight_goolge(terms_split[i], document.body,google_link_colors[c]); |
51 |
|
c = (c == google_link_colors.length-1)?0:c+1; |
52 |
for(var i=0; i<container.childNodes.length; i++){ |
} |
53 |
var node = container.childNodes[i]; |
} |
54 |
|
|
55 |
if (node.nodeType == 3){ |
function highlight_goolge(term, container, color){ |
56 |
var data = node.data; |
var term_low = term.toLowerCase(); |
57 |
var data_low = data.toLowerCase(); |
|
58 |
if (data_low.indexOf(term_low) != -1){ |
for(var i=0; i<container.childNodes.length; i++){ |
59 |
//term found! |
var node = container.childNodes[i]; |
60 |
var new_node = document.createElement('SPAN'); |
|
61 |
node.parentNode.replaceChild(new_node,node); |
if (node.nodeType == 3){ |
62 |
var result; |
var data = node.data; |
63 |
while((result = data_low.indexOf(term_low)) != -1){ |
var data_low = data.toLowerCase(); |
64 |
new_node.appendChild(document.createTextNode(data.substr(0,result))); |
if (data_low.indexOf(term_low) != -1){ |
65 |
new_node.appendChild(create_node_google(document.createTextNode(data.substr(result,term.length)),color)); |
//term found! |
66 |
data = data.substr(result + term.length); |
var new_node = document.createElement('SPAN'); |
67 |
data_low = data_low.substr(result + term.length); |
node.parentNode.replaceChild(new_node,node); |
68 |
} |
var result; |
69 |
new_node.appendChild(document.createTextNode(data)); |
while((result = data_low.indexOf(term_low)) != -1){ |
70 |
} |
new_node.appendChild(document.createTextNode(data.substr(0,result))); |
71 |
}else{ |
new_node.appendChild(create_node_google(document.createTextNode(data.substr(result,term.length)),color)); |
72 |
//recurse |
data = data.substr(result + term.length); |
73 |
highlight_goolge(term, node, color); |
data_low = data_low.substr(result + term.length); |
74 |
} |
} |
75 |
} |
new_node.appendChild(document.createTextNode(data)); |
76 |
} |
} |
77 |
|
}else{ |
78 |
function create_node_google(child, color){ |
//recurse |
79 |
var node = document.createElement('SPAN'); |
highlight_goolge(term, node, color); |
80 |
node.style.backgroundColor = color; |
} |
81 |
node.style.color = google_text_color; |
} |
82 |
node.appendChild(child); |
} |
83 |
return node; |
|
84 |
} |
function create_node_google(child, color){ |
85 |
|
var node = document.createElement('SPAN'); |
86 |
|
node.style.backgroundColor = color; |
87 |
|
node.style.color = google_text_color; |
88 |
|
node.appendChild(child); |
89 |
|
return node; |
90 |
|
} |
91 |
|
|