<\/script>'):a=3D=3D"css"&&m.write('')};=0A=
L("google.loader.writeLoadTag",google[A].d);google[A].O=3Dfunction(a){O=3D=
a};L("google.loader.rfm",google[A].O);google[A].Q=3Dfunction(a){for(var =
b in a)typeof b=3D=3D"string"&&b&&b[r](0)=3D=3D":"&&!N[b]&&(N[b]=3Dnew =
U(b[B](1),a[b]))};L("google.loader.rpl",google[A].Q);google[A].P=3Dfuncti=
on(a){if((a=3Da.specs)&&a[x])for(var b=3D0;b=3D0;o--){var =
s=3Dc[o];e&&f.A(s);if(this.e[":"+s])c.splice(o,1),e&&this.f[":"+s][p](f);=
else =
i[p](s)}if(c[x]){b&&b.packages&&(b.packages=3Dc.sort()[C](","));for(o=3D0=
;o5?0:15E3)},fa=3Dfunct=
ion(){if(Z[x]){var =
a=3Dgoogle[A][u];a[t]("http:")=3D=3D0&&(a=3Da[q](/^http:/,"https:"));$(a+=
"/stats?"+Z[C]("&")+"&nc=3D"+(new Date)[w]()+"_"+=0A=
((new Date)[w]()-ea));Z.length=3D0}},$=3Dfunction(a){var b=3Dnew =
Image,c=3D$.G++;$.z[c]=3Db;b.onload=3Db.onerror=3Dfunction(){delete =
$.z[c]};b.src=3Da;b=3Dh};$.z=3D{};$.G=3D0;J("google.loader.recordStat",ca=
);J("google.loader.createImageForLogging",$);=0A=
=0A=
}) =
();google.loader.rm({"specs":["feeds","spreadsheets","gdata","visualizati=
on",{"name":"sharing","baseSpec":{"uri":"http://www.google.com/s2/sharing=
/js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"deferred=
":false,"params":{"language":{"string":"hl"}}}},"search","orkut","ads","e=
lements",{"name":"books","baseSpec":{"uri":"http://books.google.com/books=
/api.js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"defe=
rred":true,"params":{"callback":{"string":"callback"},"language":{"string=
":"hl"}}}},{"name":"friendconnect","baseSpec":{"uri":"http://www.google.c=
om/friendconnect/script/friendconnect.js","ssl":null,"key":{"string":"key=
"},"version":{"string":"v"},"deferred":false,"params":{}}},"identitytoolk=
it","ima",{"name":"maps","baseSpec":{"uri":"http://maps.google.com/maps?f=
ile\u003dgoogleapi","ssl":"https://maps-api-ssl.google.com/maps?file\u003=
dgoogleapi","key":{"string":"key"},"version":{"string":"v"},"deferred":tr=
ue,"params":{"callback":{"regex":"callback\u003d$1\u0026async\u003d2"},"l=
anguage":{"string":"hl"}}},"customSpecs":[{"uri":"http://maps.googleapis.=
com/maps/api/js","ssl":"https://maps.googleapis.com/maps/api/js","version=
":{"string":"v"},"deferred":true,"params":{"callback":{"string":"callback=
"},"language":{"string":"hl"}},"pattern":"^(3|3..*)$"}]},"payments","wave=
","annotations_v2","earth","language",{"name":"annotations","baseSpec":{"=
uri":"http://www.google.com/reviews/scripts/annotations_bootstrap.js","ss=
l":null,"key":{"string":"key"},"version":{"string":"v"},"deferred":true,"=
params":{"callback":{"string":"callback"},"language":{"string":"hl"},"cou=
ntry":{"string":"gl"}}}},"picker"]});=0A=
google.loader.rfm({":search":{"versions":{":1":"1",":1.0":"1"},"path":"/a=
pi/search/1.0/fae0e1376ca90c0e4315ed7983dc0004/","js":"default+ja.I.js","=
css":"default+ja.css","properties":{":JSHash":"fae0e1376ca90c0e4315ed7983=
dc0004",":NoOldNames":false,":Version":"1.0"}},":language":{"versions":{"=
:1":"1",":1.0":"1"},"path":"/api/language/1.0/ddf423149d96ffac1d808b06855=
d61d9/","js":"default+ja.I.js","properties":{":JSHash":"ddf423149d96ffac1=
d808b06855d61d9",":Version":"1.0"}},":feeds":{"versions":{":1":"1",":1.0"=
:"1"},"path":"/api/feeds/1.0/20ae69faacdde3b3282683c8b9c0a1f2/","js":"def=
ault+ja.I.js","css":"default+ja.css","properties":{":JSHash":"20ae69faacd=
de3b3282683c8b9c0a1f2",":Version":"1.0"}},":spreadsheets":{"versions":{":=
0":"1",":0.4":"1"},"path":"/api/spreadsheets/0.4/87ff7219e9f8a8164006cbf2=
8d5e911a/","js":"default.I.js","properties":{":JSHash":"87ff7219e9f8a8164=
006cbf28d5e911a",":Version":"0.4"}},":ima":{"versions":{":1":"1",":1.3":"=
1"},"path":"/api/ima/1.3/68356b26f09ba489e53c9a1bc9b1e922/","js":"default=
.I.js","properties":{":JSHash":"68356b26f09ba489e53c9a1bc9b1e922",":Versi=
on":"1.3"}},":wave":{"versions":{":1":"1",":1.0":"1"},"path":"/api/wave/1=
.0/3b6f7573ff78da6602dda5e09c9025bf/","js":"default.I.js","properties":{"=
:JSHash":"3b6f7573ff78da6602dda5e09c9025bf",":Version":"1.0"}},":annotati=
ons":{"versions":{":1":"1",":1.0":"1"},"path":"/api/annotations/1.0/ad156=
5d879cca9982c9467668024f1ac/","js":"default+ja.I.js","properties":{":JSHa=
sh":"ad1565d879cca9982c9467668024f1ac",":Version":"1.0"}},":earth":{"vers=
ions":{":1":"1",":1.0":"1"},"path":"/api/earth/1.0/109c7b2bae7fe6cc34ea87=
5176165d81/","js":"default.I.js","properties":{":JSHash":"109c7b2bae7fe6c=
c34ea875176165d81",":Version":"1.0"}},":picker":{"versions":{":1":"1",":1=
.0":"1"},"path":"/api/picker/1.0/ea5fa4e294a639c5349fa9e724a08b94/","js":=
"default.I.js","css":"default.css","properties":{":JSHash":"ea5fa4e294a63=
9c5349fa9e724a08b94",":Version":"1.0"}}});=0A=
google.loader.rpl({":scriptaculous":{"versions":{":1.8.3":{"uncompressed"=
:"scriptaculous.js","compressed":"scriptaculous.js"},":1.9.0":{"uncompres=
sed":"scriptaculous.js","compressed":"scriptaculous.js"},":1.8.2":{"uncom=
pressed":"scriptaculous.js","compressed":"scriptaculous.js"},":1.8.1":{"u=
ncompressed":"scriptaculous.js","compressed":"scriptaculous.js"}},"aliase=
s":{":1.8":"1.8.3",":1":"1.9.0",":1.9":"1.9.0"}},":yui":{"versions":{":2.=
6.0":{"uncompressed":"build/yuiloader/yuiloader.js","compressed":"build/y=
uiloader/yuiloader-min.js"},":2.9.0":{"uncompressed":"build/yuiloader/yui=
loader.js","compressed":"build/yuiloader/yuiloader-min.js"},":2.7.0":{"un=
compressed":"build/yuiloader/yuiloader.js","compressed":"build/yuiloader/=
yuiloader-min.js"},":2.8.0r4":{"uncompressed":"build/yuiloader/yuiloader.=
js","compressed":"build/yuiloader/yuiloader-min.js"},":2.8.2r1":{"uncompr=
essed":"build/yuiloader/yuiloader.js","compressed":"build/yuiloader/yuilo=
ader-min.js"},":2.8.1":{"uncompressed":"build/yuiloader/yuiloader.js","co=
mpressed":"build/yuiloader/yuiloader-min.js"},":3.3.0":{"uncompressed":"b=
uild/yui/yui.js","compressed":"build/yui/yui-min.js"}},"aliases":{":3":"3=
.3.0",":2":"2.9.0",":2.7":"2.7.0",":2.8.2":"2.8.2r1",":2.6":"2.6.0",":2.9=
":"2.9.0",":2.8":"2.8.2r1",":2.8.0":"2.8.0r4",":3.3":"3.3.0"}},":swfobjec=
t":{"versions":{":2.1":{"uncompressed":"swfobject_src.js","compressed":"s=
wfobject.js"},":2.2":{"uncompressed":"swfobject_src.js","compressed":"swf=
object.js"}},"aliases":{":2":"2.2"}},":ext-core":{"versions":{":3.1.0":{"=
uncompressed":"ext-core-debug.js","compressed":"ext-core.js"},":3.0.0":{"=
uncompressed":"ext-core-debug.js","compressed":"ext-core.js"}},"aliases":=
{":3":"3.1.0",":3.0":"3.0.0",":3.1":"3.1.0"}},":webfont":{"versions":{":1=
.0.2":{"uncompressed":"webfont_debug.js","compressed":"webfont.js"},":1.0=
.1":{"uncompressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.0=
":{"uncompressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.19"=
:{"uncompressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.6":{=
"uncompressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.18":{"=
uncompressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.5":{"un=
compressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.17":{"unc=
ompressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.4":{"uncom=
pressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.16":{"uncomp=
ressed":"webfont_debug.js","compressed":"webfont.js"},":1.0.3":{"uncompre=
ssed":"webfont_debug.js","compressed":"webfont.js"},":1.0.9":{"uncompress=
ed":"webfont_debug.js","compressed":"webfont.js"},":1.0.21":{"uncompresse=
d":"webfont_debug.js","compressed":"webfont.js"},":1.0.12":{"uncompressed=
":"webfont_debug.js","compressed":"webfont.js"},":1.0.22":{"uncompressed"=
:"webfont_debug.js","compressed":"webfont.js"},":1.0.13":{"uncompressed":=
"webfont_debug.js","compressed":"webfont.js"},":1.0.14":{"uncompressed":"=
webfont_debug.js","compressed":"webfont.js"},":1.0.15":{"uncompressed":"w=
ebfont_debug.js","compressed":"webfont.js"},":1.0.10":{"uncompressed":"we=
bfont_debug.js","compressed":"webfont.js"},":1.0.11":{"uncompressed":"web=
font_debug.js","compressed":"webfont.js"}},"aliases":{":1":"1.0.22",":1.0=
":"1.0.22"}},":mootools":{"versions":{":1.2.3":{"uncompressed":"mootools.=
js","compressed":"mootools-yui-compressed.js"},":1.3.1":{"uncompressed":"=
mootools.js","compressed":"mootools-yui-compressed.js"},":1.1.1":{"uncomp=
ressed":"mootools.js","compressed":"mootools-yui-compressed.js"},":1.2.4"=
:{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"}=
,":1.3.0":{"uncompressed":"mootools.js","compressed":"mootools-yui-compre=
ssed.js"},":1.2.1":{"uncompressed":"mootools.js","compressed":"mootools-y=
ui-compressed.js"},":1.2.2":{"uncompressed":"mootools.js","compressed":"m=
ootools-yui-compressed.js"},":1.3.2":{"uncompressed":"mootools.js","compr=
essed":"mootools-yui-compressed.js"},":1.2.5":{"uncompressed":"mootools.j=
s","compressed":"mootools-yui-compressed.js"},":1.4.0":{"uncompressed":"m=
ootools.js","compressed":"mootools-yui-compressed.js"},":1.1.2":{"uncompr=
essed":"mootools.js","compressed":"mootools-yui-compressed.js"},":1.4.1":=
{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"}}=
,"aliases":{":1":"1.1.2",":1.11":"1.1.1",":1.4":"1.4.1",":1.3":"1.3.2",":=
1.2":"1.2.5",":1.1":"1.1.2"}},":jqueryui":{"versions":{":1.6.0":{"uncompr=
essed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.0":{"uncompr=
essed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.2":{"uncompr=
essed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.1":{"uncompr=
essed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.9":{"uncompr=
essed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.15":{"uncomp=
ressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.14":{"uncom=
pressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.7":{"uncom=
pressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.13":{"unco=
mpressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.8":{"unco=
mpressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.12":{"unc=
ompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.11":{"un=
compressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.7.2":{"un=
compressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.5":{"un=
compressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.7.3":{"un=
compressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.10":{"u=
ncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.6":{"u=
ncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.7.0":{"u=
ncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.7.1":{"u=
ncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.4":{"u=
ncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.5.3":{"u=
ncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.5.2":{"u=
ncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.8.16":{"=
uncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"}},"aliases":=
{":1.8":"1.8.16",":1.7":"1.7.3",":1.6":"1.6.0",":1":"1.8.16",":1.5":"1.5.=
3",":1.8.3":"1.8.4"}},":chrome-frame":{"versions":{":1.0.2":{"uncompresse=
d":"CFInstall.js","compressed":"CFInstall.min.js"},":1.0.1":{"uncompresse=
d":"CFInstall.js","compressed":"CFInstall.min.js"},":1.0.0":{"uncompresse=
d":"CFInstall.js","compressed":"CFInstall.min.js"}},"aliases":{":1":"1.0.=
2",":1.0":"1.0.2"}},":jquery":{"versions":{":1.6.2":{"uncompressed":"jque=
ry.js","compressed":"jquery.min.js"},":1.3.1":{"uncompressed":"jquery.js"=
,"compressed":"jquery.min.js"},":1.6.1":{"uncompressed":"jquery.js","comp=
ressed":"jquery.min.js"},":1.3.0":{"uncompressed":"jquery.js","compressed=
":"jquery.min.js"},":1.6.4":{"uncompressed":"jquery.js","compressed":"jqu=
ery.min.js"},":1.6.3":{"uncompressed":"jquery.js","compressed":"jquery.mi=
n.js"},":1.3.2":{"uncompressed":"jquery.js","compressed":"jquery.min.js"}=
,":1.6.0":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.2=
.3":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.2.6":{"=
uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.4.3":{"uncomp=
ressed":"jquery.js","compressed":"jquery.min.js"},":1.4.4":{"uncompressed=
":"jquery.js","compressed":"jquery.min.js"},":1.5.1":{"uncompressed":"jqu=
ery.js","compressed":"jquery.min.js"},":1.5.0":{"uncompressed":"jquery.js=
","compressed":"jquery.min.js"},":1.5.2":{"uncompressed":"jquery.js","com=
pressed":"jquery.min.js"},":1.4.0":{"uncompressed":"jquery.js","compresse=
d":"jquery.min.js"},":1.4.1":{"uncompressed":"jquery.js","compressed":"jq=
uery.min.js"},":1.4.2":{"uncompressed":"jquery.js","compressed":"jquery.m=
in.js"}},"aliases":{":1":"1.6.4",":1.6":"1.6.4",":1.5":"1.5.2",":1.4":"1.=
4.4",":1.3":"1.3.2",":1.2":"1.2.6"}},":dojo":{"versions":{":1.3.1":{"unco=
mpressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js=
"},":1.1.1":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed=
":"dojo/dojo.xd.js"},":1.3.0":{"uncompressed":"dojo/dojo.xd.js.uncompress=
ed.js","compressed":"dojo/dojo.xd.js"},":1.6.1":{"uncompressed":"dojo/doj=
o.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.3.2":{"uncom=
pressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"=
},":1.6.0":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed"=
:"dojo/dojo.xd.js"},":1.2.3":{"uncompressed":"dojo/dojo.xd.js.uncompresse=
d.js","compressed":"dojo/dojo.xd.js"},":1.4.3":{"uncompressed":"dojo/dojo=
.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.5.1":{"uncomp=
ressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"}=
,":1.5.0":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":=
"dojo/dojo.xd.js"},":1.2.0":{"uncompressed":"dojo/dojo.xd.js.uncompressed=
.js","compressed":"dojo/dojo.xd.js"},":1.4.0":{"uncompressed":"dojo/dojo.=
xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.4.1":{"uncompr=
essed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"}}=
,"aliases":{":1":"1.6.1",":1.6":"1.6.1",":1.5":"1.5.1",":1.4":"1.4.3",":1=
.3":"1.3.2",":1.2":"1.2.3",":1.1":"1.1.1"}},":prototype":{"versions":{":1=
.7.0.0":{"uncompressed":"prototype.js","compressed":"prototype.js"},":1.6=
.0.2":{"uncompressed":"prototype.js","compressed":"prototype.js"},":1.6.1=
.0":{"uncompressed":"prototype.js","compressed":"prototype.js"},":1.6.0.3=
":{"uncompressed":"prototype.js","compressed":"prototype.js"}},"aliases":=
{":1.7":"1.7.0.0",":1.6.1":"1.6.1.0",":1":"1.7.0.0",":1.6":"1.6.1.0",":1.=
7.0":"1.7.0.0",":1.6.0":"1.6.0.3"}}});=0A=
}=0A=
if (window['google'] !=3D undefined && window['google']['loader'] !=3D =
undefined) {=0A=
if (!window['google']['search']) {=0A=
window['google']['search'] =3D {};=0A=
google.search.Version =3D '1.0';=0A=
google.search.NoOldNames =3D false;=0A=
google.search.JSHash =3D 'fae0e1376ca90c0e4315ed7983dc0004';=0A=
google.search.LoadArgs =3D =
'file\75uds.js\46v\0751.0\46key\75ABQIAAAAYdv3cMntEenoLdD4P0i2pRSj__hvNfe=
fWp7iG7bYLjIyeM7lcxSv3XWXwxlxOVzFJf-HAVRywibM9Q';=0A=
google.loader.ApiKey =3D =
'ABQIAAAAYdv3cMntEenoLdD4P0i2pRSj__hvNfefWp7iG7bYLjIyeM7lcxSv3XWXwxlxOVzF=
Jf-HAVRywibM9Q';=0A=
google.loader.KeyVerified =3D false;=0A=
google.loader.LoadFailure =3D true;=0A=
}=0A=
google.loader.writeLoadTag("script", google.loader.ServiceBase + =
"/api/search/1.0/fae0e1376ca90c0e4315ed7983dc0004/default+ja.I.js", =
false);=0A=
}=0A=
------=_NextPart_000_0000_01CC9184.5F9CE490
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.google.com/uds/solutions/newsbar/gsnewsbar.js
/**=0A=
* Copyright (c) 2008 Google Inc.=0A=
*=0A=
* You are free to copy and use this sample.=0A=
* License can be found here: =
http://code.google.com/apis/ajaxsearch/faq/#license=0A=
*/=0A=
=0A=
function GSnewsBar(barRoot, options) {=0A=
=0A=
// IE fadein/fadeout is disabled=0A=
// On IE6, when clear type is enabled, you MUST set a background color =
on=0A=
// the element being tweaked. This is totally impractical. If you dont =
do this=0A=
// the fonts look terrible/unreadable=0A=
//=0A=
// On IE7, they "fixed" the bug, but they did it by disable font =
smoothing so=0A=
// once again, the results are terrible. Fix is to just don't do this =
on IE=0A=
this.br_AgentContains_cache_ =3D {};=0A=
if (this.br_IsIE()) {=0A=
this.startupDelay =3D 50;=0A=
this.ieMode =3D true;=0A=
} else {=0A=
this.startupDelay =3D 0;=0A=
this.ieMode =3D false;=0A=
}=0A=
=0A=
this.CL_RESULTDIV =3D "resultDiv_gsnb";=0A=
this.CL_RESULTDIV_BOLD =3D "resultDiv_gsnb resultDivBold_gsnb";=0A=
// FF on win/mac has an interesting issue as well. As soon as opacity =
hits=0A=
// 100%, the font size seems to change by a pixel or so for many fonts.=0A=
// net result: visible jiggle. The "fix" is to never let ffwin/mac hit =
100%...=0A=
this.linkContainerClass =3D this.CL_RESULTDIV;=0A=
if (this.br_IsNav() && (this.br_IsWin() || this.br_IsMac()) ) {=0A=
if (this.br_IsMac()) {=0A=
this.linkContainerClass =3D this.CL_RESULTDIV_BOLD;=0A=
}=0A=
this.shortOpacityMode =3D true;=0A=
} else {=0A=
this.shortOpacityMode =3D false;=0A=
}=0A=
=0A=
this.setGlobals();=0A=
this.processArguments(barRoot, options);=0A=
this.adjustGlobals();=0A=
=0A=
this.buildSuperStructure();=0A=
this.buildSearchControl();=0A=
=0A=
// build handlers for mousein/mouseout watchers=0A=
// on this.resultsBox=0A=
if ( !this.verticalMode ) {=0A=
this.resultsBox.onmouseover =3D this.methodClosure(this,=0A=
=
GSnewsBar.prototype.setMouseIn,=0A=
[null]);=0A=
this.resultsBox.onmouseout =3D this.methodClosure(this,=0A=
=
GSnewsBar.prototype.setMouseOut,=0A=
[null]);=0A=
if (this.currentResultRoot) {=0A=
this.currentResultRoot.onmouseover =3D this.methodClosure(this,=0A=
=
GSnewsBar.prototype.setMouseIn,=0A=
[null]);=0A=
this.currentResultRoot.onmouseout =3D this.methodClosure(this,=0A=
=
GSnewsBar.prototype.setMouseOut,=0A=
[null]);=0A=
}=0A=
}=0A=
=0A=
// ie does not like this mode, so defer load on IE=0A=
if (this.ieMode || this.startupDelay !=3D 0) {=0A=
var bootCompleteClosure =3D this.methodClosure(this,=0A=
=
GSnewsBar.prototype.bootComplete,=0A=
[null]);=0A=
setTimeout(bootCompleteClosure, this.startupDelay);=0A=
} else {=0A=
this.bootComplete();=0A=
}=0A=
}=0A=
=0A=
GSnewsBar.prototype.bootComplete =3D function() {=0A=
// if we have an auto execute list, then start it up=0A=
if (this.autoExecuteMode) {=0A=
this.cycleTimeClosure =3D this.methodClosure(this,=0A=
=
GSnewsBar.prototype.cycleTimeout,=0A=
[null]);=0A=
=0A=
// if there is only a single item in the execute list, then=0A=
// disable autoExecuteMode...=0A=
if ( this.executeList.length =3D=3D 1 ||=0A=
this.cycleTime =3D=3D GSnewsBar.CYCLE_TIME_MANUAL ) {=0A=
this.switchToListItem(0);=0A=
} else {=0A=
this.cycleTimeout();=0A=
}=0A=
}=0A=
}=0A=
=0A=
// cycle time for selecting a news set=0A=
GSnewsBar.CYCLE_TIME_EXTRA_SHORT =3D 3000;=0A=
GSnewsBar.CYCLE_TIME_SHORT =3D 10000;=0A=
GSnewsBar.CYCLE_TIME_MEDIUM =3D 15000;=0A=
GSnewsBar.CYCLE_TIME_LONG =3D 30000;=0A=
GSnewsBar.CYCLE_TIME_MANUAL =3D 3000000;=0A=
=0A=
GSnewsBar.ONE_SECOND =3D 1000;=0A=
GSnewsBar.THREE_SECONDS =3D 3000;=0A=
GSnewsBar.FIVE_SECONDS =3D 5000;=0A=
GSnewsBar.TEN_SECONDS =3D 10000;=0A=
=0A=
// cycle mode=0A=
GSnewsBar.CYCLE_MODE_RANDOM =3D 1;=0A=
GSnewsBar.CYCLE_MODE_LINEAR =3D 2;=0A=
=0A=
GSnewsBar.MAX_CACHE_LIFETIME =3D 50;=0A=
GSnewsBar.MIN_CACHE_LIFETIME =3D 1;=0A=
GSnewsBar.DEFAULT_CACHE_LIFETIME =3D 1;=0A=
GSnewsBar.MAX_ERROR_COUNT =3D 1;=0A=
GSnewsBar.DEFAULT_QUERY =3D "Google";=0A=
GSnewsBar.MIN_STARTUP_DELAY =3D 50;=0A=
GSnewsBar.MAX_STARTUP_DELAY =3D 2000;=0A=
=0A=
// result style=0A=
GSnewsBar.RESULT_STYLE_EXPANDED =3D 1;=0A=
GSnewsBar.RESULT_STYLE_COMPRESSED =3D 2;=0A=
GSnewsBar.prototype.processArguments =3D function(barRoot, opt_options) {=0A=
this.totalFailures =3D 0;=0A=
this.retries =3D 0;=0A=
this.barRoot =3D barRoot;=0A=
this.statusRoot =3D null;=0A=
this.autoExecuteMode =3D false;=0A=
this.executeList =3D new Array();=0A=
this.cycleTime =3D GSnewsBar.CYCLE_TIME_MANUAL;=0A=
this.cycleMode =3D GSnewsBar.CYCLE_MODE_LINEAR;=0A=
this.cycleNext =3D 0;=0A=
this.cycleTimer =3D null;=0A=
this.verticalMode =3D true;=0A=
this.fadeTimer =3D null;=0A=
this.mouseInResultArea =3D false;=0A=
this.mouseOutCallFade =3D false;=0A=
this.linkTarget =3D GSearch.LINK_TARGET_SELF;=0A=
this.currentResultRoot =3D null;=0A=
this.currentResultContainer =3D null;=0A=
this.cacheLifetime =3D GSnewsBar.DEFAULT_CACHE_LIFETIME;=0A=
=0A=
this.fadeIncrement =3D 10;=0A=
this.fadeTime =3D 400;=0A=
this.fadeInCallback =3D GSnewsBar.methodCallback(this,=0A=
=
GSnewsBar.prototype.fadeIn);=0A=
this.fadeOutCallback =3D GSnewsBar.methodCallback(this,=0A=
=
GSnewsBar.prototype.fadeOut);=0A=
this.fadeOpacity =3D 0;=0A=
=0A=
// set defaults that are changable via options=0A=
this.resultSetSize =3D GSearch.SMALL_RESULTSET;=0A=
this.ST_TITLE =3D "In the news";=0A=
this.resultsBoxClass =3D this.CL_RESULTSBOX_EXPANDED;=0A=
this.verticalMode =3D true;=0A=
=0A=
if (opt_options) {=0A=
=0A=
// horizontal=0A=
if (opt_options.horizontal && opt_options.horizontal =3D=3D true ) {=0A=
this.verticalMode =3D false;=0A=
} else {=0A=
this.verticalMode =3D true;=0A=
}=0A=
=0A=
// option.largetResultSet=0A=
if (opt_options.largeResultSet && opt_options.largeResultSet =3D=3D =
true ) {=0A=
this.resultSetSize =3D GSearch.LARGE_RESULTSET;=0A=
} else {=0A=
this.resultSetSize =3D GSearch.SMALL_RESULTSET;=0A=
}=0A=
=0A=
// option.resultStyle=0A=
if (opt_options.resultStyle) {=0A=
if (opt_options.resultStyle =3D=3D =
GSnewsBar.RESULT_STYLE_EXPANDED) {=0A=
this.resultsBoxClass =3D this.CL_RESULTSBOX_EXPANDED;=0A=
} else if (opt_options.resultStyle =3D=3D =
GSnewsBar.RESULT_STYLE_COMPRESSED) {=0A=
this.resultsBoxClass =3D this.CL_RESULTSBOX_COMPRESSED;=0A=
}=0A=
}=0A=
=0A=
if (opt_options.linkTarget) {=0A=
this.linkTarget =3D opt_options.linkTarget;=0A=
}=0A=
=0A=
// if currentResult is specified AND we are in horizontal mode,=0A=
// then pick it up.=0A=
if (opt_options.currentResult && !this.verticalMode) {=0A=
this.currentResultRoot =3D opt_options.currentResult;=0A=
this.removeChildren(this.currentResultRoot);=0A=
}=0A=
=0A=
if (opt_options.title) {=0A=
this.ST_TITLE =3D opt_options.title;=0A=
}=0A=
=0A=
// startupDelay=0A=
if (opt_options.startupDelay &&=0A=
opt_options.startupDelay >=3D GSnewsBar.MIN_STARTUP_DELAY &&=0A=
opt_options.startupDelay <=3D GSnewsBar.MAX_STARTUP_DELAY) {=0A=
this.startupDelay =3D opt_options.startupDelay;=0A=
}=0A=
=0A=
// cacheLifetime=0A=
if (opt_options.cacheLifetime &&=0A=
opt_options.cacheLifetime >=3D GSnewsBar.MIN_CACHE_LIFETIME &&=0A=
opt_options.cacheLifetime <=3D GSnewsBar.MAX_CACHE_LIFETIME ) {=0A=
this.cacheLifetime =3D opt_options.cacheLifetime;=0A=
}=0A=
=0A=
// the auto execute list contains=0A=
// a cycleTime value, a cycleMode value, and an array=0A=
// of searchExpressions=0A=
if (opt_options.autoExecuteList) {=0A=
=0A=
// if specified and valid, then use it, otherwise=0A=
// use default set above=0A=
if (opt_options.autoExecuteList.cycleTime) {=0A=
var cycleTime =3D opt_options.autoExecuteList.cycleTime;=0A=
if (cycleTime =3D=3D GSnewsBar.CYCLE_TIME_EXTRA_SHORT ||=0A=
cycleTime =3D=3D GSnewsBar.CYCLE_TIME_SHORT ||=0A=
cycleTime =3D=3D GSnewsBar.CYCLE_TIME_MEDIUM ||=0A=
cycleTime =3D=3D GSnewsBar.CYCLE_TIME_LONG ||=0A=
cycleTime =3D=3D GSnewsBar.CYCLE_TIME_MANUAL ) {=0A=
this.cycleTime =3D cycleTime;=0A=
}=0A=
}=0A=
=0A=
// in vertical mode, cycleTime says how long=0A=
// between new searches. In horizontal mode,=0A=
// it's how long to keep a result up=0A=
if (!this.verticalMode) {=0A=
switch (this.cycleTime) {=0A=
case GSnewsBar.CYCLE_TIME_EXTRA_SHORT:=0A=
case GSnewsBar.CYCLE_TIME_SHORT:=0A=
this.cycleTime =3D GSnewsBar.THREE_SECONDS;=0A=
break;=0A=
=0A=
case GSnewsBar.CYCLE_TIME_MEDIUM:=0A=
case GSnewsBar.CYCLE_TIME_MANUAL:=0A=
this.cycleTime =3D GSnewsBar.FIVE_SECONDS;=0A=
break;=0A=
=0A=
case GSnewsBar.CYCLE_TIME_LONG:=0A=
this.cycleTime =3D GSnewsBar.TEN_SECONDS;=0A=
break;=0A=
}=0A=
if (this.ieMode) {=0A=
// since we are not fading in/out, lengthen the cycleTime by 1s=0A=
this.cycleTime +=3D GSnewsBar.ONE_SECOND;=0A=
}=0A=
}=0A=
=0A=
if (opt_options.autoExecuteList.cycleMode) {=0A=
var cycleMode =3D opt_options.autoExecuteList.cycleMode;=0A=
if (cycleMode =3D=3D GSnewsBar.CYCLE_MODE_RANDOM ||=0A=
cycleMode =3D=3D GSnewsBar.CYCLE_MODE_LINEAR) {=0A=
this.cycleMode =3D cycleMode;=0A=
}=0A=
}=0A=
=0A=
// now grab the list...=0A=
if (opt_options.autoExecuteList.executeList &&=0A=
opt_options.autoExecuteList.executeList.length > 0 ) {=0A=
// grab from the list=0A=
for (var i=3D0; i < =
opt_options.autoExecuteList.executeList.length; i++) {=0A=
this.executeList.push(=0A=
=
this.newListItem(opt_options.autoExecuteList.executeList[i]));=0A=
}=0A=
this.autoExecuteMode =3D true;=0A=
this.currentIndex =3D 0;=0A=
if (opt_options.autoExecuteList.statusRoot) {=0A=
this.statusRoot =3D opt_options.autoExecuteList.statusRoot;=0A=
}=0A=
}=0A=
}=0A=
=0A=
// horizontal mode MUST use autoExecute...=0A=
if (!this.verticalMode && this.autoExecuteMode =3D=3D false) {=0A=
this.autoExecuteMode =3D true;=0A=
this.currentIndex =3D 0;=0A=
this.cycleTime =3D GSnewsBar.THREE_SECONDS;=0A=
this.executeList.push(this.newListItem(GSnewsBar.DEFAULT_QUERY));=0A=
}=0A=
}=0A=
=0A=
}=0A=
=0A=
GSnewsBar.prototype.testForDefaultQuery =3D function() {=0A=
if (this.executeList.length =3D=3D 1 &&=0A=
this.executeList[0].query =3D=3D GSnewsBar.DEFAULT_QUERY) {=0A=
return true;=0A=
} else {=0A=
return false;=0A=
}=0A=
}=0A=
=0A=
GSnewsBar.prototype.resetAutoExecuteListItems =3D function(newList) {=0A=
if (this.autoExecuteMode && newList.length > 0) {=0A=
=0A=
// stop the timers...=0A=
this.clearCycleTimer();=0A=
this.clearFadeTimer();=0A=
=0A=
// clear the status area=0A=
if (this.statusRoot) {=0A=
this.removeChildren(this.statusRoot);=0A=
}=0A=
=0A=
// nuke the old list=0A=
this.executeList =3D new Array();=0A=
=0A=
// build the new list=0A=
for (var i=3D0; i < newList.length; i++) {=0A=
this.executeList.push(this.newListItem(newList[i]));=0A=
}=0A=
this.currentIndex =3D 0;=0A=
=0A=
if (this.statusRoot) {=0A=
this.populateStatusRoot();=0A=
}=0A=
=0A=
if ( this.executeList.length =3D=3D 1) {=0A=
this.switchToListItem(0);=0A=
} else {=0A=
this.cycleTimeout();=0A=
}=0A=
}=0A=
}=0A=
=0A=
GSnewsBar.prototype.adjustGlobals =3D function() {=0A=
// horizontal mode changes certain globals...=0A=
// - results are always compressed=0A=
if (this.verticalMode =3D=3D false) {=0A=
this.resultsBoxClass =3D this.CL_RESULTSBOX_COMPRESSED;=0A=
}=0A=
}=0A=
=0A=
GSnewsBar.prototype.setGlobals =3D function() {=0A=
=0A=
// superstructure boxes=0A=
this.CL_NEWSBARBOX =3D "newsBarBox_gsnb";=0A=
this.CL_NEWSBARBOXFULL =3D "newsBarBox_gsnb full_gsnb";=0A=
this.CL_NEWSBARBOXEMPTY =3D "newsBarBox_gsnb empty_gsnb";=0A=
this.CL_NEWSBARINNERBOX =3D "newsBarInnerBox_gsnb";=0A=
this.CL_VERTICAL =3D "vertical_gsnb";=0A=
this.CL_HORIZONTAL =3D "horizontal_gsnb";=0A=
=0A=
// title=0A=
this.CL_TITLEBOX =3D "titleBox_gsnb";=0A=
=0A=
// results=0A=
this.CL_RESULTSBOX_EXPANDED =3D "resultsBox_gsnb expanded_gsnb";=0A=
this.CL_RESULTSBOX_COMPRESSED =3D "resultsBox_gsnb compressed_gsnb";=0A=
this.CL_BRANDINGBOX =3D "brandingBox_gsnb";=0A=
this.CL_SNIPPET =3D "snippet_gsnb";=0A=
=0A=
// status=0A=
this.CL_STATUSBOXROOT =3D "statusBoxRoot_gsnb";=0A=
this.CL_STATUSBOX =3D "statusBox_gsnb";=0A=
this.CL_STATUSBOX_ONEITEM =3D "statusBox_gsnb oneitem_gsnb";=0A=
this.CL_STATUSITEMSEP =3D "statusItemSep_gsnb";=0A=
this.CL_STATUSITEM =3D "statusItem_gsnb";=0A=
this.CL_STATUSITEM_SELECTED =3D "statusItem_gsnb =
statusItemSelected_gsnb";=0A=
}=0A=
=0A=
GSnewsBar.prototype.getBarBoxClass =3D function(full) {=0A=
var baseClass =3D full ? this.CL_NEWSBARBOXFULL : =
this.CL_NEWSBARBOXEMPTY;=0A=
if (this.verticalMode) {=0A=
baseClass +=3D " " + this.CL_VERTICAL;=0A=
} else {=0A=
baseClass +=3D " " + this.CL_HORIZONTAL;=0A=
}=0A=
return baseClass;=0A=
}=0A=
=0A=
GSnewsBar.prototype.buildSuperStructure =3D function() {=0A=
=0A=
// create the newsBar box=0A=
this.removeChildren(this.barRoot);=0A=
this.barBox =3D this.createDiv(null, this.CL_NEWSBARBOX);=0A=
this.barRoot.appendChild(this.barBox);=0A=
this.innerBox =3D this.createDiv(null, this.CL_NEWSBARINNERBOX);=0A=
this.barBox.appendChild(this.innerBox);=0A=
=0A=
// add in the title, statusBox, resultsBox, and branding=0A=
=0A=
// title=0A=
this.titleBox =3D this.createDiv(this.ST_TITLE, this.CL_TITLEBOX);=0A=
this.innerBox.appendChild(this.titleBox);=0A=
=0A=
// optional statusRoot, statusBox=0A=
if (this.statusRoot =3D=3D null) {=0A=
this.statusRoot =3D this.createDiv(null, this.CL_STATUSBOXROOT);=0A=
this.innerBox.appendChild(this.statusRoot);=0A=
}=0A=
this.populateStatusRoot();=0A=
=0A=
// resultsBox=0A=
this.resultsBox =3D this.createDiv(null, this.resultsBoxClass);=0A=
this.innerBox.appendChild(this.resultsBox);=0A=
=0A=
if (this.currentResultRoot) {=0A=
this.currentResultContainer =3D this.createDiv(null,=0A=
=
this.CL_RESULTSBOX_EXPANDED);=0A=
this.currentResultRoot.appendChild(this.currentResultContainer);=0A=
}=0A=
=0A=
// branding=0A=
var branding =3D this.createDiv(null, this.CL_BRANDINGBOX);=0A=
this.barBox.appendChild(branding);=0A=
var orientation =3D GSearch.HORIZONTAL_BRANDING;=0A=
if (this.verticalMode =3D=3D false) {=0A=
orientation =3D GSearch.VERTICAL_BRANDING;=0A=
}=0A=
GSearch.getBranding(branding, orientation);=0A=
=0A=
this.cssSetClass(this.barBox, this.CL_NEWSBARBOXEMPTY);=0A=
}=0A=
=0A=
GSnewsBar.prototype.buildSearchControl =3D function() {=0A=
this.ns =3D new GnewsSearch();=0A=
this.ns.setResultSetSize(this.resultSetSize);=0A=
this.ns.setSearcherSrc("uds-nb-" + (this.verticalMode ? "vertical" : =
"horizontal"));=0A=
this.ns.setLinkTarget(this.linkTarget);=0A=
this.ns.setSearchCompleteCallback(this, =
GSnewsBar.prototype.searchComplete, [true]);=0A=
=0A=
this.nsBypass =3D new GnewsSearch();=0A=
this.nsBypass.setResultSetSize(this.resultSetSize);=0A=
this.nsBypass.setSearcherSrc("uds-nb-" + (this.verticalMode ? =
"vertical" : "horizontal"));=0A=
this.nsBypass.setLinkTarget(this.linkTarget);=0A=
this.nsBypass.setSearchCompleteCallback(this, =
GSnewsBar.prototype.searchComplete, [false]);=0A=
}=0A=
=0A=
GSnewsBar.prototype.execute =3D function(query) {=0A=
if (this.verticalMode =3D=3D false) {=0A=
this.clearFadeTimer();=0A=
this.resetAutoExecuteListItems([query]);=0A=
} else {=0A=
this.populateStatusRoot();=0A=
this.nsBypass.execute(query);=0A=
}=0A=
}=0A=
=0A=
GSnewsBar.prototype.executeInternal =3D function(query) {=0A=
this.ns.execute(query);=0A=
}=0A=
=0A=
GSnewsBar.prototype.clearAllResults =3D function() {=0A=
this.cssSetClass(this.barBox, this.CL_NEWSBARBOXEMPTY);=0A=
}=0A=
=0A=
GSnewsBar.prototype.searchComplete =3D function(fromListItem) {=0A=
var ns;=0A=
var cacheResults =3D false;=0A=
var currentListItem =3D null;=0A=
if (fromListItem) {=0A=
currentListItem =3D this.executeList[this.currentIndex];=0A=
if (currentListItem.cacheCount =3D=3D 0) {=0A=
cacheResults =3D true;=0A=
currentListItem.results =3D new Array();=0A=
}=0A=
ns =3D this.ns;=0A=
} else {=0A=
ns =3D this.nsBypass;=0A=
}=0A=
if ( ns.results && ns.results.length > 0) {=0A=
this.cssSetClass(this.barBox, this.getBarBoxClass(true));=0A=
this.removeChildren(this.resultsBox);=0A=
=0A=
if (!this.verticalMode) {=0A=
// for horizontal mode, nuke the old results=0A=
// and reset currentResultIndex=0A=
this.results =3D new Array();=0A=
this.currentResult =3D 0;=0A=
}=0A=
=0A=
// iterate over the results and capture the .html node=0A=
// and append into the resultBox, OR just capture so that=0A=
// we can fade it in/out=0A=
for (var i =3D 0; i < ns.results.length; i++) {=0A=
// if we are listItem based search, then cache results=0A=
if (cacheResults) {=0A=
currentListItem.cacheCount =3D 1;=0A=
=
currentListItem.results.push(GSnewsBar.cloneObject(ns.results[i]));=0A=
// reset error count based on sucessful search=0A=
currentListItem.errorCount =3D 0;=0A=
}=0A=
=0A=
var res =3D ns.results[i];=0A=
if (this.verticalMode) {=0A=
var resultDiv =3D this.createDiv(null, this.CL_RESULTDIV);=0A=
var node =3D res.html.cloneNode(true);=0A=
this.resultsBox.appendChild(resultDiv);=0A=
resultDiv.appendChild(node);=0A=
} else {=0A=
this.results[i] =3D res;=0A=
}=0A=
}=0A=
=0A=
// start the fadein, fadeout sequence=0A=
if (!this.verticalMode) {=0A=
this.linkContainer =3D this.createDiv(null, =
this.linkContainerClass);=0A=
this.resultsBox.appendChild(this.linkContainer);=0A=
this.link =3D document.createElement("a");=0A=
this.link.target =3D this.linkTarget;=0A=
this.snippet =3D this.createSpan(" ", this.CL_SNIPPET);=0A=
this.setHorizontalResultContent(=0A=
this.results[this.currentResult]);=0A=
this.setOpacity(this.linkContainer, 0);=0A=
this.linkContainer.appendChild(this.snippet);=0A=
this.linkContainer.appendChild(this.link);=0A=
this.fadeOpacity =3D 0;=0A=
this.fadeIn();=0A=
}=0A=
} else {=0A=
// no results, mark the container as empty=0A=
this.cssSetClass(this.barBox, this.getBarBoxClass(true));=0A=
// retry another search expression=0A=
if ( this.executeList.length =3D=3D 1 ||=0A=
this.cycleTime =3D=3D GSnewsBar.CYCLE_TIME_MANUAL ) {=0A=
if (this.retries > 1) {=0A=
=0A=
// we failed the default query. Don't let this get caught=0A=
// in a failure loop=0A=
if (this.testForDefaultQuery()) {=0A=
// stop the timers...=0A=
this.clearCycleTimer();=0A=
this.clearFadeTimer();=0A=
=0A=
// clear the status area=0A=
if (this.statusRoot) {=0A=
this.removeChildren(this.statusRoot);=0A=
}=0A=
return;=0A=
} else {=0A=
this.resetAutoExecuteListItems([GSnewsBar.DEFAULT_QUERY]);=0A=
this.retries =3D 0;=0A=
}=0A=
} else {=0A=
this.totalFailures++;=0A=
this.retries++;=0A=
}=0A=
this.switchToListItem(0);=0A=
} else {=0A=
=0A=
// this really means that this is a list item based search=0A=
// that should have worked and if it had worked would have=0A=
// produced results that we cache. in this case though, we=0A=
// got no results so mark this, and if we get too many on=0A=
// this term, throw away the search term=0A=
if (cacheResults) {=0A=
this.totalFailures++;=0A=
currentListItem.errorCount++;=0A=
// if we are getting excessive errors from this entry=0A=
// then reset the list without this entry=0A=
if (ns.completionStatus =3D=3D 200) {=0A=
currentListItem.errorCount =3D GSnewsBar.MAX_ERROR_COUNT + 1;=0A=
}=0A=
if (currentListItem.errorCount > GSnewsBar.MAX_ERROR_COUNT) {=0A=
var newList =3D new Array();=0A=
for (var i=3D0; i