From: Subject: Nav News Links Date: Wed, 29 Apr 2009 12:33:16 -0700 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C9C8C6.ABD591B0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C9C8C6.ABD591B0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: file://C:\Documents and Settings\randallb\My Documents\SI5\5.5 SP0.b\NavNewsLinks_55_B.htm =EF=BB=BF Nav News = Links

Lastest D-Tools News!

Documentation Wiki - Most Popular

Loading...=20
Product News
Loading...=20
Tech News
Loading...=20
Reports
Updated Reports
Loading...=20
------=_NextPart_000_0000_01C9C8C6.ABD591B0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.css .gfg-root { BORDER-RIGHT: #bccdf0 1px solid; BORDER-TOP: #bccdf0 1px solid; = FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-LEFT: #bccdf0 1px solid; = WIDTH: 100%; BORDER-BOTTOM: #bccdf0 1px solid; FONT-FAMILY: "Arial", = sans-serif; POSITION: relative; HEIGHT: auto; TEXT-ALIGN: center } .gfg-title { FONT-WEIGHT: bold; FONT-SIZE: 14px; OVERFLOW: hidden; COLOR: #3366cc; = LINE-HEIGHT: 1.4em; WHITE-SPACE: nowrap; BACKGROUND-COLOR: #e5ecf9 } .gfg-title A { COLOR: #3366cc } .gfg-subtitle { FONT-WEIGHT: bold; FONT-SIZE: 12px; MARGIN-BOTTOM: 5px; OVERFLOW: = hidden; COLOR: #3366cc; LINE-HEIGHT: 1.4em; WHITE-SPACE: nowrap; = BACKGROUND-COLOR: #e5ecf9 } .gfg-subtitle A { COLOR: #3366cc } .gfg-entry { MARGIN-TOP: 3px; OVERFLOW: hidden; WIDTH: 100%; POSITION: relative; = HEIGHT: 6.9em; BACKGROUND-COLOR: white; TEXT-ALIGN: left } .gfg-root .gfg-entry .gf-result { PADDING-RIGHT: 5px; PADDING-LEFT: 20px; WIDTH: auto; POSITION: = relative; HEIGHT: 100%; BACKGROUND-COLOR: white } .gfg-list { MARGIN-BOTTOM: 5px; OVERFLOW: hidden; POSITION: relative; TEXT-ALIGN: = left } .gfg-listentry { PADDING-RIGHT: 5px; PADDING-LEFT: 15px; MARGIN-LEFT: 5px; OVERFLOW: = hidden; LINE-HEIGHT: 1.5em; MARGIN-RIGHT: 5px; WHITE-SPACE: nowrap; = TEXT-OVERFLOW: ellipsis; -o-text-overflow: ellipsis } .gfg-listentry-odd { BACKGROUND-COLOR: #f6f6f6 } .gfg-listentry-even { =09 } .gfg-listentry-highlight { BACKGROUND-POSITION: left center; BACKGROUND-IMAGE: url(garrow.gif); = BACKGROUND-REPEAT: no-repeat } .gfg-root .gfg-entry .gf-result .gf-title { FONT-SIZE: 14px; MARGIN-BOTTOM: 2px; OVERFLOW: hidden; LINE-HEIGHT: = 1.2em; WHITE-SPACE: nowrap; TEXT-OVERFLOW: ellipsis; -o-text-overflow: = ellipsis } .gfg-root .gfg-entry .gf-result .gf-snippet { MARGIN-TOP: 3px; COLOR: #000000; HEIGHT: 3.8em } .gfg-horizontal-container { POSITION: relative } .gfg-horizontal-root { BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #aaaaaa 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 13px; PADDING-BOTTOM: = 5px; OVERFLOW: hidden; BORDER-LEFT: #aaaaaa 1px solid; MARGIN-RIGHT: = 80px; PADDING-TOP: 5px; BORDER-BOTTOM: #aaaaaa 1px solid; FONT-FAMILY: = "Arial", sans-serif; WHITE-SPACE: nowrap; POSITION: relative; HEIGHT: = 1.5em; TEXT-ALIGN: center; _height: 100% } .gfg-horizontal-root .gfg-title { BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 12px; PADDING-LEFT: = 10px; FONT-WEIGHT: bold; FLOAT: left; OVERFLOW: hidden; LINE-HEIGHT: = 1.5em; WHITE-SPACE: nowrap; BACKGROUND-COLOR: #ffffff } .gfg-horizontal-root .gfg-title A { COLOR: #444444; TEXT-DECORATION: none } .gfg-horizontal-root .gfg-entry { MARGIN-TOP: 0px; PADDING-LEFT: 10px; MARGIN-LEFT: 0px; OVERFLOW: = hidden; WIDTH: auto; POSITION: relative; HEIGHT: 1.5em; TEXT-ALIGN: left } .gfg-horizontal-root .gfg-entry .gf-result { OVERFLOW: hidden; WIDTH: 100%; LINE-HEIGHT: 1.5em; WHITE-SPACE: nowrap; = POSITION: relative; HEIGHT: 100%; BACKGROUND-COLOR: white } .gfg-horizontal-root .gfg-list { DISPLAY: none } .gfg-horizontal-root .gfg-entry .gf-result .gf-snippet { DISPLAY: none } .gfg-horizontal-root .gfg-entry .gf-result .gf-author { DISPLAY: none } .gfg-horizontal-root .gfg-entry .gf-result .gf-title { FLOAT: left; COLOR: #0000cc; MARGIN-RIGHT: 3px } .gfg-horizontal-root .gfg-entry .gf-result .gf-spacer { FLOAT: left } .gfg-horizontal-root .gfg-entry .gf-result .gf-spacer { DISPLAY: block; COLOR: #aaaaaa } .gfg-horizontal-root .gfg-entry .gf-result .gf-relativePublishedDate { DISPLAY: block; COLOR: #aaaaaa } .gfg-branding { RIGHT: 0px; OVERFLOW: hidden; WIDTH: 80px; WHITE-SPACE: nowrap; = POSITION: absolute; TOP: 0px; TEXT-ALIGN: left } .gfg-collapse-open { BACKGROUND-POSITION: center 50%; FLOAT: right; WIDTH: 17px; CURSOR: = pointer; BACKGROUND-REPEAT: no-repeat; HEIGHT: 20px } .gfg-collapse-closed { BACKGROUND-POSITION: center 50%; FLOAT: right; WIDTH: 17px; CURSOR: = pointer; BACKGROUND-REPEAT: no-repeat; HEIGHT: 20px } .gfg-collapse-open { BACKGROUND-IMAGE: url(arrow_open.gif) } .gfg-collapse-closed { BACKGROUND-IMAGE: url(arrow_close.gif) } .gfg-collapse-href { FLOAT: left } .clearFloat { CLEAR: both } ------=_NextPart_000_0000_01C9C8C6.ABD591B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.google.com/jsapi?key=ABQIAAAAysyHiD0ChoS5rPsFOstFuhR1BHvu_zNj6BL3dw2wolLITlPX-xRl2R6NMOaCpssg0PPkw8z79Us4MQ if (!window['google']) {=0A= window['google'] =3D {};=0A= }=0A= if (!window['google']['loader']) {=0A= window['google']['loader'] =3D {};=0A= google.loader.ServiceBase =3D 'http://www.google.com/uds';=0A= google.loader.GoogleApisBase =3D 'http://ajax.googleapis.com/ajax';=0A= google.loader.ApiKey =3D = 'ABQIAAAAysyHiD0ChoS5rPsFOstFuhR1BHvu_zNj6BL3dw2wolLITlPX-xRl2R6NMOaCpssg= 0PPkw8z79Us4MQ';=0A= google.loader.KeyVerified =3D true;=0A= google.loader.LoadFailure =3D false;=0A= google.loader.Secure =3D false;=0A= google.loader.ClientLocation =3D = {"latitude":37.775,"longitude":-122.419,"address":{"city":"San = Francisco","region":"CA","country":"USA","country_code":"US"}};=0A= google.loader.AdditionalParams =3D '';=0A= (function() {var = e=3Dfalse,g=3Dnull,h=3Dtrue,i=3DencodeURIComponent,j=3Dwindow,k=3Dgoogle,= l=3Dundefined,m=3Ddocument;function n(a,b){return a.load=3Db}var = o=3D"push",p=3D"length",q=3D"prototype",r=3D"setTimeout",t=3D"replace",u=3D= "charAt",v=3D"loader",w=3D"substring",z=3D"ServiceBase",A=3D"name",B=3D"g= etTime",C=3D"toLowerCase";function D(a){if(a in F)return F[a];return = F[a]=3Dnavigator.userAgent[C]().indexOf(a)!=3D-1}var F=3D{};function = G(a,b){var = c=3Dfunction(){};c.prototype=3Db[q];a.M=3Db[q];a.prototype=3Dnew c}=0A= function H(a,b){var = c=3Da.B||[];c=3Dc.concat(Array[q].slice.call(arguments,2));if(typeof = a.r!=3D"undefined")b=3Da.r;if(typeof a.q!=3D"undefined")a=3Da.q;var = d=3Dfunction(){var f=3Dc.concat(Array[q].slice.call(arguments));return = a.apply(b,f)};d.B=3Dc;d.r=3Db;d.q=3Da;return d}function I(a){var b=3Dnew = Error(a);b.toString=3Dfunction(){return this.message};return b}function = J(a,b){for(var = c=3Da.split(/\./),d=3Dj,f=3D0;f<\/script>");else(D("safari")||D("konqueror"))&&j[r](S,10)}P[o]= (a)}k[v].G=3Dfunction(){var = a=3Dj.event.srcElement;if(a.readyState=3D=3D"complete"){a.onreadystatecha= nge=3Dg;a.parentNode.removeChild(a);R()}};L("google.loader.domReady",k[v]= .G);var da=3D{loaded:h,complete:h};=0A= function S(){if(da[m.readyState])R();else P[p]>0&&j[r](S,10)}function = R(){for(var a=3D0;a<\/script>');else a=3D=3D"css"&&m.write('')};=0A= L("google.loader.writeLoadTag",k[v].d);k[v].H=3Dfunction(a){N=3Da};L("goo= gle.loader.rfm",k[v].H);k[v].J=3Dfunction(a){for(var b in a)if(typeof = b=3D=3D"string"&&b&&b[u](0)=3D=3D":"&&!M[b])M[b]=3Dnew = T(b[w](1),a[b])};L("google.loader.rpl",k[v].J);k[v].I=3Dfunction(a){if((a= =3Da.specs)&&a[p])for(var b=3D0;b=3D0;s--){var = x=3Dc[s];d&&f.C(x);if(this.b[":"+x]){c.splice(s,1);d&&this.b[":"+x][o](f)= }else = E[o](x)}if(c[p]){if(b&&b.packages)b.packages=3Dc.sort().join(",");if(!b&&= N[":"+this.a]!=3Dg&&N[":"+this.a].versions[":"+a]!=3Dg&&!k[v].AdditionalP= arams&&this.j){var y=3DN[":"+this.a];k[this.a]=3Dk[this.a]||{};for(var Q = in = y.properties)if(Q&&Q[u](0)=3D=3D":")k[this.a][Q[w](1)]=3Dy.properties[Q];= k[v].d("script",k[v][z]+=0A= y.path+y.js,d);y.css&&k[v].d("css",k[v][z]+y.path+y.css,d)}else = if(!b||!b.autoloaded)k[v].d("script",this.f(a,b),d);if(this.j){this.j=3De= ;this.c=3D(new = Date)[B]();if(this.c%100!=3D1)this.c=3D-1}for(s=3D0;s5?0:15000)}},ga=3Dfunction(){if(Z[p]){$(k[v][z]+"/stats?"+Z.join= ("&")+"&nc=3D"+(new Date)[B]()+"_"+((new = Date)[B]()-fa));Z.length=3D0}},$=3Dfunction(a){var b=3D=0A= new Image,c=3Dha++;ia[c]=3Db;b.onload=3Db.onerror=3Dfunction(){delete = ia[c]};b.src=3Da;b=3Dg},ia=3D{},ha=3D0;J("google.loader.recordStat",X);J(= "google.loader.createImageForLogging",$);=0A= =0A= }) = ();google.loader.rm({"specs":["feeds",{"name":"books","uri":"http://books= .google.com/books/api.js","ssl":null,"key":{"string":"key"},"version":{"s= tring":"v"},"deferred":true,"params":{"callback":{"string":"callback"},"l= anguage":{"string":"hl"}}},{"name":"friendconnect","uri":"http://www.goog= le.com/friendconnect/script/friendconnect.js","ssl":null,"key":{"string":= "key"},"version":{"string":"v"},"deferred":false,"params":{}},"spreadshee= ts","gdata","visualization",{"name":"sharing","uri":"http://www.google.co= m/s2/sharing/js","ssl":null,"key":{"string":"key"},"version":{"string":"v= "},"deferred":false,"params":{"language":{"string":"hl"}}},"search",{"nam= e":"maps","uri":"http://maps.google.com/maps?file\u003dgoogleapi","ssl":"= https://maps-api-ssl.google.com/maps?file\u003dgoogleapi","key":{"string"= :"key"},"version":{"string":"v"},"deferred":true,"params":{"callback":{"r= egex":"callback\u003d$1\u0026async\u003d2"},"language":{"string":"hl"}}},= "language","earth",{"name":"annotations","uri":"http://www.google.com/rev= iews/scripts/annotations_bootstrap.js","ssl":null,"key":{"string":"key"},= "version":{"string":"v"},"deferred":true,"params":{"callback":{"string":"= callback"},"language":{"string":"hl"},"country":{"string":"gl"}}},"ads","= elements"]});=0A= google.loader.rfm({":feeds":{"versions":{":1":"1",":1.0":"1"},"path":"/ap= i/feeds/1.0/d6955a57b581b65b269c5c11faa8a9d7/","js":"default+en.I.js","cs= s":"default.css","properties":{":JSHash":"d6955a57b581b65b269c5c11faa8a9d= 7",":Version":"1.0"}},":search":{"versions":{":1":"1",":1.0":"1"},"path":= "/api/search/1.0/9ef1cc8f70099f70f3bcc177f9328d10/","js":"default+en.I.js= ","css":"default.css","properties":{":JSHash":"9ef1cc8f70099f70f3bcc177f9= 328d10",":NoOldNames":false,":Version":"1.0"}},":language":{"versions":{"= :1":"1",":1.0":"1"},"path":"/api/language/1.0/9c8775e33e5fa842945550fd5f6= 2160a/","js":"default+en.I.js","properties":{":JSHash":"9c8775e33e5fa8429= 45550fd5f62160a",":Version":"1.0"}},":spreadsheets":{"versions":{":0":"1"= ,":0.1":"1"},"path":"/api/spreadsheets/0.1/217f714e2931810693cd980edd44ad= 05/","js":"default.I.js","properties":{":JSHash":"217f714e2931810693cd980= edd44ad05",":Version":"0.1"}},":annotations":{"versions":{":1":"1",":1.0"= :"1"},"path":"/api/annotations/1.0/2d5c6b4b6d5b6cf5a6eda70dd2f289d9/","js= ":"default+en.I.js","properties":{":JSHash":"2d5c6b4b6d5b6cf5a6eda70dd2f2= 89d9",":Version":"1.0"}},":earth":{"versions":{":1":"1",":1.0":"1"},"path= ":"/api/earth/1.0/bd6682f8238442cc68413f5aaa472775/","js":"default.I.js",= "properties":{":JSHash":"bd6682f8238442cc68413f5aaa472775",":Version":"1.= 0"}},":ads":{"versions":{":1":"1",":1.0":"1"},"path":"/api/ads/1.0/e7f58d= 7238e6936cf054f87419e6aae1/","js":"default.I.js","properties":{":JSHash":= "e7f58d7238e6936cf054f87419e6aae1",":Version":"1.0"}}});=0A= google.loader.rpl({":scriptaculous":{"versions":{":1.8.2":{"uncompressed"= :"scriptaculous.js","compressed":"scriptaculous.js"},":1.8.1":{"uncompres= sed":"scriptaculous.js","compressed":"scriptaculous.js"}},"aliases":{":1.= 8":"1.8.2",":1":"1.8.2"}},":yui":{"versions":{":2.6.0":{"uncompressed":"b= uild/yuiloader/yuiloader.js","compressed":"build/yuiloader/yuiloader-min.= js"},":2.7.0":{"uncompressed":"build/yuiloader/yuiloader.js","compressed"= :"build/yuiloader/yuiloader-min.js"}},"aliases":{":2":"2.7.0",":2.7":"2.7= .0",":2.6":"2.6.0"}},":swfobject":{"versions":{":2.1":{"uncompressed":"sw= fobject_src.js","compressed":"swfobject.js"}},"aliases":{":2":"2.1"}},":m= ootools":{"versions":{":1.2.1":{"uncompressed":"mootools.js","compressed"= :"mootools-yui-compressed.js"},":1.2.2":{"uncompressed":"mootools.js","co= mpressed":"mootools-yui-compressed.js"},":1.11":{"uncompressed":"mootools= .js","compressed":"mootools-yui-compressed.js"}},"aliases":{":1":"1.11"}}= ,":jqueryui":{"versions":{":1.6.0":{"uncompressed":"jquery-ui.js","compre= ssed":"jquery-ui.min.js"},":1.7.0":{"uncompressed":"jquery-ui.js","compre= ssed":"jquery-ui.min.js"},":1.7.1":{"uncompressed":"jquery-ui.js","compre= ssed":"jquery-ui.min.js"},":1.5.3":{"uncompressed":"jquery-ui.js","compre= ssed":"jquery-ui.min.js"},":1.5.2":{"uncompressed":"jquery-ui.js","compre= ssed":"jquery-ui.min.js"}},"aliases":{":1.7":"1.7.1",":1.6":"1.6.0",":1":= "1.7.1",":1.5":"1.5.3"}},":prototype":{"versions":{":1.6.0.2":{"uncompres= sed":"prototype.js","compressed":"prototype.js"},":1.6.0.3":{"uncompresse= d":"prototype.js","compressed":"prototype.js"}},"aliases":{":1":"1.6.0.3"= ,":1.6":"1.6.0.3"}},":jquery":{"versions":{":1.2.3":{"uncompressed":"jque= ry.js","compressed":"jquery.min.js"},":1.3.1":{"uncompressed":"jquery.js"= ,"compressed":"jquery.min.js"},":1.3.0":{"uncompressed":"jquery.js","comp= ressed":"jquery.min.js"},":1.3.2":{"uncompressed":"jquery.js","compressed= ":"jquery.min.js"},":1.2.6":{"uncompressed":"jquery.js","compressed":"jqu= ery.min.js"}},"aliases":{":1":"1.3.2",":1.3":"1.3.2",":1.2":"1.2.6"}},":d= ojo":{"versions":{":1.2.3":{"uncompressed":"dojo/dojo.xd.js.uncompressed.= js","compressed":"dojo/dojo.xd.js"},":1.1.1":{"uncompressed":"dojo/dojo.x= d.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.3.0":{"uncompre= ssed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},"= :1.2.0":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"d= ojo/dojo.xd.js"}},"aliases":{":1":"1.3.0",":1.3":"1.3.0",":1.2":"1.2.3","= :1.1":"1.1.1"}}});=0A= }=0A= ------=_NextPart_000_0000_01C9C8C6.ABD591B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.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= /**=0A= * @fileoverview A feed gadget based on the AJAX Feed API.=0A= * @author dcollison@google.com (Derek Collison)=0A= */=0A= =0A= /**=0A= * GFdynamicFeedControl=0A= * @param {String} feed The feed URL.=0A= * @param {String|Object} container Either the id string or the element = itself.=0A= * @param {Object} options Options map.=0A= * @constructor=0A= */=0A= =0A= function GFdynamicFeedControl(feedUrls, container, options) {=0A= // node elements.=0A= this.nodes =3D {};=0A= this.collapseElements =3D [];=0A= =0A= // the feeds.=0A= this.feeds =3D [];=0A= this.results =3D [];=0A= =0A= if (typeof feedUrls =3D=3D 'string') {=0A= this.feeds.push({url:feedUrls});=0A= } else if (typeof feedUrls =3D=3D 'object') {=0A= for (var i=3D0; i/g, '>');=0A= }=0A= }=0A= this.feeds.push(o);=0A= }=0A= }=0A= =0A= if (typeof container =3D=3D "string") {=0A= container =3D document.getElementById(container);=0A= }=0A= this.parseOptions_(options);=0A= this.setup_(container);=0A= }=0A= =0A= /*=0A= * Default time in milliseconds for the feed to be reloaded.=0A= * @type Number=0A= */=0A= GFdynamicFeedControl.DEFAULT_NUM_RESULTS =3D 4;=0A= /*=0A= * Default time in milliseconds for the feed to be reloaded.=0A= * @type Number=0A= */=0A= GFdynamicFeedControl.DEFAULT_FEED_CYCLE_TIME =3D 1800000;=0A= /*=0A= * Default display time in milliseconds for each entry.=0A= * @type Number=0A= */=0A= GFdynamicFeedControl.DEFAULT_DISPLAY_TIME =3D 5000;=0A= /*=0A= * Default fadeout transition time in milliseconds for each entry.=0A= * @type Number=0A= */=0A= GFdynamicFeedControl.DEFAULT_FADEOUT_TIME =3D 1000;=0A= /*=0A= * Default time between transition steps in milliseconds=0A= * @type Number=0A= */=0A= GFdynamicFeedControl.DEFAULT_TRANSISTION_STEP =3D 40;=0A= /*=0A= * Default hover time in milliseconds for each entry.=0A= * @type Number=0A= */=0A= GFdynamicFeedControl.DEFAULT_HOVER_TIME =3D 100;=0A= =0A= /**=0A= * Setup default option map and apply overrides from constructor.=0A= * @param {Object} options Options map.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.parseOptions_ =3D function(options) {=0A= // Default Options=0A= // TODO(dcollison) - implement Feed Cycle.=0A= this.options =3D {=0A= numResults : GFdynamicFeedControl.DEFAULT_NUM_RESULTS,=0A= feedCycleTime : GFdynamicFeedControl.DEFAULT_FEED_CYCLE_TIME,=0A= linkTarget : google.feeds.LINK_TARGET_BLANK,=0A= displayTime : GFdynamicFeedControl.DEFAULT_DISPLAY_TIME,=0A= transitionTime : GFdynamicFeedControl.DEFAULT_TRANSISTION_TIME,=0A= transitionStep : GFdynamicFeedControl.DEFAULT_TRANSISTION_STEP,=0A= fadeOutTime: GFdynamicFeedControl.DEFAULT_FADEOUT_TIME,=0A= scrollOnFadeOut : true,=0A= pauseOnHover : true,=0A= hoverTime : GFdynamicFeedControl.DEFAULT_HOVER_TIME,=0A= autoCleanup : true,=0A= transitionCallback : null,=0A= feedTransitionCallback : null,=0A= feedLoadCallback : null,=0A= collapseable : false,=0A= sortByDate : false,=0A= horizontal : false,=0A= stacked : false,=0A= title : null=0A= };=0A= =0A= if (options) {=0A= for (var o in this.options) {=0A= if (typeof options[o] !=3D 'undefined') {=0A= this.options[o] =3D options[o];=0A= }=0A= }=0A= }=0A= =0A= // Cant be collapseable unless stacked=0A= if(!this.options.stacked) {=0A= this.options.collapseable =3D false;=0A= }=0A= =0A= // Override strange/bad options=0A= this.options.displayTime =3D Math.max(200, this.options.displayTime);=0A= this.options.fadeOutTime =3D Math.max(0, this.options.fadeOutTime);=0A= =0A= // Calculated=0A= var ts =3D this.options.fadeOutTime / this.options.transitionStep;=0A= this.fadeOutDelta =3D Math.min(1, (1.0/ts));=0A= =0A= // Flag to start=0A= this.started =3D false;=0A= };=0A= =0A= /**=0A= * Basic setup.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.setup_ =3D function(container) {=0A= if (container =3D=3D null) return;=0A= this.nodes.container =3D container;=0A= =0A= // Browser fun.=0A= if (window.ActiveXObject) {=0A= this.ie =3D this[window.XMLHttpRequest ? 'ie7' : 'ie6'] =3D true;=0A= } else if (document.childNodes && !document.all && = !navigator.taintEnabled) {=0A= this.safari =3D true;=0A= } else if (document.getBoxObjectFor !=3D null) {=0A= this.gecko =3D true;=0A= }=0A= // The feedControl instance for generating entry HTML.=0A= this.feedControl =3D new google.feeds.FeedControl();=0A= this.feedControl.setLinkTarget(this.options.linkTarget);=0A= =0A= // The feeds=0A= this.expected =3D this.feeds.length;=0A= this.errors =3D 0;=0A= =0A= for (var i =3D 0; i < this.feeds.length; i++) {=0A= var feed =3D new google.feeds.Feed(this.feeds[i].url);=0A= feed.setResultFormat(google.feeds.Feed.JSON_FORMAT);=0A= feed.setNumEntries(this.options.numResults);=0A= feed.load(this.bind_(this.feedLoaded_, i));=0A= }=0A= };=0A= =0A= /**=0A= * Helper method to bind this instance correctly.=0A= * @param {Object} method function/method to bind.=0A= * @return {Function}=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.bind_ =3D function(method) {=0A= var self =3D this;=0A= var opt_args =3D [].slice.call(arguments, 1);=0A= return function() {=0A= var args =3D opt_args.concat([].slice.call(arguments));=0A= return method.apply(self, args);=0A= }=0A= };=0A= =0A= /**=0A= * Callback associated with the AJAX Feed api after load.=0A= * @param {Object} result Loaded result.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.feedLoaded_ =3D function(index, result) {=0A= if (this.options.feedLoadCallback) {=0A= this.options.feedLoadCallback(result);=0A= }=0A= if (result.error) {=0A= // Ignore failed feeds for the most part.=0A= // The user has control through the feedLoadCallback above=0A= // if they choose to do something more createive.=0A= // Only complain if we can't load anything.=0A= if (++this.errors >=3D this.expected) {=0A= this.nodes.container.innerHTML =3D 'Feed' + ((this.expected > = 1)?'s ':' ') +=0A= 'could not be loaded.';=0A= }=0A= return;=0A= }=0A= // Override of title option.=0A= if (this.feeds[index].title) {=0A= result.feed.title =3D this.feeds[index].title;=0A= }=0A= this.results.push(result);=0A= =0A= if (!this.started) {=0A= this.createSubContainers_();=0A= this.displayResult_(0);=0A= } else if (!this.options.horizontal && this.options.stacked) {=0A= this.addResult_(this.results.length-1);=0A= }=0A= };=0A= =0A= /**=0A= * Insert blog in correct place=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.sortByDate_ =3D function(resultIndex, = newTitle,=0A= newList) {=0A= // if sorting by date, insert it into the correct spot=0A= var newEntryDate =3D = this.results[resultIndex].feed.entries[0].publishedDate;=0A= var newEntryDateMS =3D Date.parse(newEntryDate);=0A= var insertIndex =3D null;=0A= =0A= for (var i =3D 0; i < this.results.length; i++) {=0A= var mostRecentPost =3D this.results[i].feed.entries[0].publishedDate;=0A= var mostRecentPostMS =3D Date.parse(mostRecentPost);=0A= if(newEntryDateMS > mostRecentPostMS) {=0A= insertIndex =3D i;=0A= break;=0A= }=0A= }=0A= =0A= // If it's most stale blog, just append as usual=0A= if(insertIndex =3D=3D null) {=0A= this.nodes.root.appendChild(newTitle);=0A= this.nodes.root.appendChild(newList);=0A= this.createListEntries_(resultIndex, newList);=0A= return;=0A= }=0A= =0A= // If it is fresher than a blog, insert to correct position=0A= var insertBeforeIndex =3D 2 + (insertIndex * 2);=0A= var swapToIndex =3D insertBeforeIndex + 2;=0A= var tempSwap =3D null;=0A= var myResultIndex =3D resultIndex + 1;=0A= =0A= var sectionsToChange =3D this.nodes.root.childNodes;=0A= var nodeToInsertBefore =3D sectionsToChange[insertBeforeIndex];=0A= =0A= this.nodes.root.insertBefore(newTitle, nodeToInsertBefore);=0A= this.nodes.root.insertBefore(newList, nodeToInsertBefore);=0A= =0A= this.results.splice(insertIndex, 0, this.results[resultIndex]);=0A= this.results.splice(myResultIndex, 1);=0A= =0A= var nodesToChangeClick =3D = sectionsToChange[swapToIndex].nextSibling.childNodes;=0A= =0A= this.createListEntries_(insertIndex, newList);=0A= =0A= // Keep freshest blog open first=0A= if(insertIndex =3D=3D 0) {=0A= this.displayResult_(0);=0A= }=0A= =0A= insertIndex +=3D 1;=0A= // Reset all of the onmousehover listeners to highlight corect index=0A= for (var i =3D swapToIndex; i < sectionsToChange.length; i +=3D 2) {=0A= var nodesToChangeClick =3D = sectionsToChange[i].nextSibling.childNodes;=0A= for (var j=3D0; j < nodesToChangeClick.length; j++) {=0A= nodesToChangeClick[j].onmouseover =3D = this.bind_(this.listMouseOver_, =0A= insertIndex, j);=0A= nodesToChangeClick[j].onmouseout =3D = this.bind_(this.listMouseOut_, =0A= insertIndex, j);=0A= }=0A= insertIndex++;=0A= }=0A= };=0A= =0A= /**=0A= * Setup to display the Result for stacked mode=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.addResult_ =3D function(resultIndex) {=0A= var result =3D this.results[resultIndex];=0A= var newTitle =3D this.createDiv_('gfg-subtitle');=0A= this.setTitle_(result.feed, newTitle);=0A= var newList =3D this.createDiv_('gfg-list');=0A= =0A= // add a collapseable button=0A= if(this.options.collapseable) {=0A= var collapseLink =3D document.createElement('div');=0A= newList.style.display =3D 'none';=0A= collapseLink.className =3D 'gfg-collapse-closed';=0A= newTitle.appendChild(collapseLink);=0A= collapseLink.onclick =3D this.toggleCollapse(this, newList, = collapseLink);=0A= this.collapseElements.push({=0A= list : newList,=0A= collapse : collapseLink=0A= });=0A= }=0A= =0A= =0A= var clearFloat =3D document.createElement('div');=0A= clearFloat.className =3D 'clearFloat';=0A= newTitle.appendChild(clearFloat);=0A= =0A= // If not sorting by date, add them as usual=0A= if(!this.options.sortByDate) {=0A= this.nodes.root.appendChild(newTitle);=0A= this.nodes.root.appendChild(newList);=0A= this.createListEntries_(resultIndex, newList);=0A= } else {=0A= this.sortByDate_(resultIndex, newTitle, newList);=0A= }=0A= =0A= };=0A= =0A= /**=0A= * Setup to display the Result=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.displayResult_ =3D function(resultIndex) {=0A= this.resultIndex =3D resultIndex;=0A= var result =3D this.results[resultIndex];=0A= if (this.options.feedTransitionCallback) {=0A= this.options.feedTransitionCallback(result);=0A= }=0A= if (this.options.title) {=0A= this.setPlainTitle_(this.options.title);=0A= } else {=0A= this.setTitle_(result.feed);=0A= }=0A= this.clearNode_(this.nodes.entry);=0A= =0A= if (this.started && !this.options.horizontal && this.options.stacked) {=0A= this.entries =3D result.feed.entries;=0A= } else {=0A= this.createListEntries_(resultIndex, this.nodes.list);=0A= }=0A= this.displayEntries_();=0A= }=0A= =0A= /**=0A= * Set the Title to just plaintext=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.setPlainTitle_ =3D function(title, = opt_element) {=0A= var el =3D opt_element || this.nodes.title;=0A= el.innerHTML =3D title;=0A= }=0A= =0A= /**=0A= * Set the Title=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.setTitle_ =3D function(resultFeed, = opt_element) {=0A= var el =3D opt_element || this.nodes.title;=0A= this.clearNode_(el);=0A= var link =3D document.createElement('a');=0A= link.target =3D google.feeds.LINK_TARGET_BLANK;=0A= link.href =3D resultFeed.link;=0A= link.className =3D 'gfg-collapse-href';=0A= link.innerHTML =3D resultFeed.title;=0A= el.appendChild(link);=0A= }=0A= =0A= GFdynamicFeedControl.prototype.toggleCollapse =3D function(feedControl, =0A= listReference, =0A= collapseLink) {=0A= return function() {=0A= var els =3D feedControl.collapseElements;=0A= for (var i=3D0; i < els.length; i++) {=0A= var el =3D els[i];=0A= el.list.style.display =3D 'none';=0A= el.collapse.className =3D 'gfg-collapse-closed';=0A= }=0A= listReference.style.display =3D 'block';=0A= collapseLink.className =3D 'gfg-collapse-open';=0A= }=0A= }=0A= =0A= /**=0A= * Create the list Entries=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.createListEntries_ =3D = function(resultIndex, node) {=0A= var entries =3D this.results[resultIndex].feed.entries;=0A= this.clearNode_(node);=0A= for (var i =3D 0; i < entries.length; i++) {=0A= this.feedControl.createHtml(entries[i]);=0A= var className =3D 'gfg-listentry ';=0A= className +=3D (i%2)?'gfg-listentry-even':'gfg-listentry-odd';=0A= var listEntry =3D this.createDiv_(className);=0A= var link =3D this.createLink_(entries[i].link,=0A= entries[i].title,=0A= this.options.linkTarget);=0A= listEntry.appendChild(link);=0A= if (this.options.pauseOnHover) {=0A= listEntry.onmouseover =3D this.bind_(this.listMouseOver_, = resultIndex, i);=0A= listEntry.onmouseout =3D this.bind_(this.listMouseOut_, = resultIndex, i);=0A= }=0A= entries[i].listEntry =3D listEntry;=0A= node.appendChild(listEntry);=0A= }=0A= if (node =3D=3D this.nodes.list) {=0A= this.entries =3D entries;=0A= }=0A= }=0A= =0A= /**=0A= * Begin to display the entries.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.displayEntries_ =3D function() {=0A= this.entryIndex =3D 0;=0A= this.displayCurrentEntry_();=0A= this.setDisplayTimer_();=0A= this.started =3D true;=0A= }=0A= =0A= /**=0A= * Display next entry.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.displayNextEntry_ =3D function() {=0A= // Check to see if we have been orphaned and need to cleanup..=0A= if (this.options.autoCleanup && this.isOrphaned_()) {=0A= this.cleanup_();=0A= return;=0A= }=0A= =0A= if (++this.entryIndex >=3D this.entries.length) {=0A= // End of list, see if we should rotate feeds..=0A= if (this.results.length > 1) {=0A= if (++this.resultIndex >=3D this.results.length) {=0A= this.resultIndex =3D 0;=0A= }=0A= this.displayResult_(this.resultIndex);=0A= return;=0A= } else {=0A= this.entryIndex =3D 0;=0A= }=0A= }=0A= =0A= if (this.options.transitionCallback) {=0A= this.options.transitionCallback(this.entries[this.entryIndex]);=0A= }=0A= this.displayCurrentEntry_();=0A= this.setDisplayTimer_();=0A= }=0A= =0A= /**=0A= * Display current entry.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.displayCurrentEntry_ =3D function() {=0A= this.clearNode_(this.nodes.entry);=0A= this.current =3D this.entries[this.entryIndex].html;=0A= this.current.style.top =3D '0px';=0A= this.nodes.entry.appendChild(this.current);=0A= this.createOverlay_();=0A= =0A= // Expand the blog who's post is being displayed=0A= if(this.options.collapseable) {=0A= var feedTitle =3D null;=0A= =0A= for (var i=3D0; i < this.results.length; i++) {=0A= if(this.results[i].feed.entries =3D=3D this.entries) {=0A= feedTitle =3D this.results[i].feed.title;=0A= }=0A= }=0A= =0A= var els =3D this.collapseElements;=0A= =0A= for (var i=3D0; i < els.length; i++) {=0A= var el =3D els[i];=0A= var divfeedTitle =3D el.collapse.previousSibling.innerHTML;=0A= var expandClicker =3D el.collapse;=0A= if(feedTitle =3D=3D divfeedTitle) {=0A= if(this.ie) {=0A= expandClicker.click();=0A= } else {=0A= expandClicker.onclick();=0A= }=0A= =0A= }=0A= }=0A= }=0A= =0A= if (this.currentList) {=0A= var className =3D 'gfg-listentry ';=0A= className +=3D (this.currentListIndex%2)?=0A= 'gfg-listentry-even':'gfg-listentry-odd';=0A= this.currentList.className =3D className;=0A= }=0A= this.currentList =3D this.entries[this.entryIndex].listEntry;=0A= this.currentListIndex =3D this.entryIndex;=0A= var className =3D 'gfg-listentry gfg-listentry-highlight ';=0A= className +=3D (this.currentListIndex%2)?=0A= 'gfg-listentry-even':'gfg-listentry-odd';=0A= this.currentList.className =3D className;=0A= }=0A= =0A= /**=0A= * Simulated mouse hover events for list entries.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.listMouseHover_ =3D function(resultIndex,=0A= listIndex) {=0A= var result =3D this.results[resultIndex];=0A= var listEntry =3D result.feed.entries[listIndex].listEntry;=0A= listEntry.selectTimer =3D null;=0A= this.clearTransitionTimer_();=0A= this.clearDisplayTimer_();=0A= this.resultIndex =3D resultIndex;=0A= this.entries =3D result.feed.entries;=0A= this.entryIndex =3D listIndex;=0A= this.displayCurrentEntry_();=0A= }=0A= =0A= /**=0A= * Mouse over events for list entries.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.listMouseOver_ =3D function(resultIndex,=0A= listIndex) {=0A= var result =3D this.results[resultIndex];=0A= var listEntry =3D result.feed.entries[listIndex].listEntry;=0A= var cb =3D this.bind_(this.listMouseHover_, resultIndex, listIndex);=0A= listEntry.selectTimer =3D setTimeout(cb, this.options.hoverTime);=0A= }=0A= =0A= /**=0A= * Mouse out events for list entries.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.listMouseOut_ =3D function(resultIndex, = listIndex) {=0A= var result =3D this.results[resultIndex];=0A= var listEntry =3D result.feed.entries[listIndex].listEntry;=0A= if (listEntry.selectTimer) {=0A= clearTimeout(listEntry.selectTimer);=0A= listEntry.selectTimer =3D null;=0A= } else {=0A= this.setDisplayTimer_();=0A= }=0A= }=0A= =0A= /**=0A= * Mouse over events for main entry.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.entryMouseOver_ =3D function(e) {=0A= this.clearDisplayTimer_();=0A= if (this.transitionTimer) {=0A= this.clearTransitionTimer_();=0A= this.displayCurrentEntry_();=0A= }=0A= }=0A= =0A= /**=0A= * Mouse out events for main entry.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.entryMouseOut_ =3D function(e) {=0A= this.setDisplayTimer_();=0A= }=0A= =0A= /**=0A= * Create the overlay div. This hack is for IE and transparency effects.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.createOverlay_ =3D function() {=0A= if (this.current =3D=3D null) return;=0A= // Create div lazily and hold on to it..=0A= if (this.overlay =3D=3D null) {=0A= var overlay =3D this.createDiv_('gfg-entry');=0A= overlay.style.position =3D 'absolute';=0A= overlay.style.top =3D '0px';=0A= overlay.style.left =3D '0px';=0A= this.overlay =3D overlay;=0A= }=0A= this.setOpacity_(this.overlay, 0);=0A= this.nodes.entry.appendChild(this.overlay);=0A= }=0A= =0A= /**=0A= * Sets the display timer.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.setDisplayTimer_ =3D function() {=0A= if (this.displayTimer) {=0A= this.clearDisplayTimer_();=0A= }=0A= var cb =3D this.bind_(this.setFadeOutTimer_);=0A= this.displayTimer =3D setTimeout(cb, this.options.displayTime);=0A= };=0A= =0A= /**=0A= * Class helper method for the time now in milliseconds=0A= * @private=0A= */=0A= GFdynamicFeedControl.timeNow =3D function() {=0A= var d =3D new Date();=0A= return d.getTime();=0A= };=0A= =0A= /**=0A= * Transition animation for fadeout. Cleanup when finished.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.fadeOutEntry_ =3D function() {=0A= if (this.overlay) {=0A= var delta =3D this.fadeOutDelta;=0A= var ts =3D this.options.transitionStep;=0A= var now =3D GFdynamicFeedControl.timeNow();=0A= var tick =3D now - this.lastTick;=0A= this.lastTick =3D now;=0A= delta *=3D (tick/ts);=0A= =0A= var op =3D this.overlay.opacity + delta;=0A= // Overlay opacity=0A= this.setOpacity_(this.overlay, op);=0A= // Scroll down=0A= if (this.options.scrollOnFadeOut && (op > .5)) {=0A= var r =3D (op-.5)*2;=0A= var newTop =3D Math.round(this.current.offsetHeight * r);=0A= this.current.style.top =3D newTop + 'px';=0A= }=0A= if (op < 1) return;=0A= }=0A= // Finished.=0A= this.clearTransitionTimer_();=0A= this.displayNextEntry_();=0A= };=0A= =0A= /**=0A= * Sets the transition timer for fadeout.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.setFadeOutTimer_ =3D function() {=0A= this.clearTransitionTimer_();=0A= this.lastTick =3D GFdynamicFeedControl.timeNow();=0A= var cb =3D this.bind_(this.fadeOutEntry_);=0A= this.transitionTimer =3D setInterval(cb, this.options.transitionStep);=0A= };=0A= =0A= /**=0A= * Clear the transition timer. Used to prevent leaks.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.clearTransitionTimer_ =3D function() {=0A= if (this.transitionTimer) {=0A= clearInterval(this.transitionTimer);=0A= this.transitionTimer =3D null;=0A= }=0A= };=0A= =0A= /**=0A= * Clear the display timer.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.clearDisplayTimer_ =3D function() {=0A= if (this.displayTimer) {=0A= clearTimeout(this.displayTimer);=0A= this.displayTimer =3D null;=0A= }=0A= };=0A= =0A= /**=0A= * Setup our own subcontainer to the user supplied container.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.createSubContainers_ =3D function() {=0A= var nodes =3D this.nodes;=0A= var container =3D this.nodes.container;=0A= =0A= this.clearNode_(container);=0A= if (this.options.horizontal) {=0A= container =3D this.createDiv_('gfg-horizontal-container');=0A= nodes.root =3D this.createDiv_('gfg-horizontal-root');=0A= this.nodes.container.appendChild(container);=0A= } else {=0A= nodes.root =3D this.createDiv_('gfg-root');=0A= }=0A= nodes.title =3D this.createDiv_('gfg-title');=0A= nodes.entry =3D this.createDiv_('gfg-entry');=0A= nodes.list =3D this.createDiv_('gfg-list');=0A= nodes.root.appendChild(nodes.title);=0A= nodes.root.appendChild(nodes.entry);=0A= =0A= if (!this.options.horizontal && this.options.stacked) {=0A= var newTitle =3D this.createDiv_('gfg-subtitle');=0A= nodes.root.appendChild(newTitle);=0A= this.setTitle_(this.results[0].feed, newTitle);=0A= =0A= if(this.options.collapseable) {=0A= var collapseLink =3D document.createElement('div');=0A= collapseLink.className =3D 'gfg-collapse-open';=0A= newTitle.appendChild(collapseLink);=0A= collapseLink.onclick =3D this.toggleCollapse(this, nodes.list, = collapseLink);=0A= this.collapseElements.push({=0A= list : nodes.list,=0A= collapse : collapseLink=0A= });=0A= nodes.list.style.display =3D 'block';=0A= }=0A= =0A= var clearFloat =3D document.createElement('div');=0A= clearFloat.className =3D 'clearFloat';=0A= newTitle.appendChild(clearFloat);=0A= }=0A= =0A= nodes.root.appendChild(nodes.list);=0A= container.appendChild(nodes.root);=0A= =0A= if (this.options.pauseOnHover) {=0A= nodes.entry.onmouseover =3D this.bind_(this.entryMouseOver_);=0A= nodes.entry.onmouseout =3D this.bind_(this.entryMouseOut_);=0A= }=0A= =0A= // Add Branding.=0A= if (this.options.horizontal) {=0A= nodes.branding =3D this.createDiv_('gfg-branding');=0A= google.feeds.getBranding(nodes.branding, = google.feeds.VERTICAL_BRANDING);=0A= container.appendChild(nodes.branding);=0A= }=0A= };=0A= =0A= /**=0A= * Helper method to properly clear a node and its children.=0A= * @param {Object} node Node to clear.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.clearNode_ =3D function(node) {=0A= if (node =3D=3D null) return;=0A= var child;=0A= while ((child =3D node.firstChild)) {=0A= node.removeChild(child);=0A= }=0A= };=0A= =0A= /**=0A= * Helper method to create a div with optional class and text.=0A= * @param {String} opt_className Optional className for the div.=0A= * @param {String} opt_text Optional text for the innerHTML.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.createDiv_ =3D function(opt_className, = opt_text) {=0A= var el =3D document.createElement("div");=0A= if (opt_text) {=0A= el.innerHTML =3D opt_text;=0A= }=0A= if (opt_className) { el.className =3D opt_className; }=0A= return el;=0A= };=0A= =0A= /**=0A= * Helper method to create a link with href and text.=0A= * @param {String} href Href URL=0A= * @param {String} text text for the link.=0A= * @param {String} opt_target Optional link target.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.createLink_ =3D function(href, text, = opt_target) {=0A= var link =3D document.createElement('a');=0A= link.href =3D href;=0A= link.innerHTML =3D text;=0A= if (opt_target) {=0A= link.target =3D opt_target;=0A= }=0A= return link;=0A= };=0A= =0A= /**=0A= * Cleanup results on being orphaned.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.clearResults_ =3D function() {=0A= for (var i=3D0; i < this.results.length; i++) {=0A= var result =3D this.results[i];=0A= var entries =3D result.feed.entries;=0A= for (var i =3D 0; i < entries.length; i++) {=0A= var entry =3D entries[i];=0A= entry.html =3D null;=0A= entry.listEntry.onmouseover =3D null;=0A= entry.listEntry.onmouseout =3D null;=0A= if (entry.listEntry.selectTimer) {=0A= clearTimeout(entry.listEntry.selectTimer);=0A= entry.listEntry.selectTimer =3D null;=0A= }=0A= entry.listEntry =3D null;=0A= }=0A= }=0A= }=0A= =0A= /**=0A= * Check for being orphaned.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.isOrphaned_ =3D function() {=0A= var root =3D this.nodes.root;=0A= var orphaned =3D false;=0A= if (!root || !root.parentNode) {=0A= orphaned =3D true;=0A= } else if (this.options.horizontal && !root.parentNode.parentNode) {=0A= orphaned =3D true;=0A= }=0A= return orphaned;=0A= }=0A= =0A= /**=0A= * Cleanup on being orphaned.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.cleanup_ =3D function() {=0A= this.started =3D false;=0A= // Timer Events.=0A= this.clearDisplayTimer_();=0A= this.clearTransitionTimer_();=0A= // Structures=0A= this.clearResults_();=0A= // Nodes=0A= this.clearNode_(this.nodes.root);=0A= this.nodes.container =3D null;=0A= }=0A= =0A= /**=0A= * Helper method to set opacity for nodes.. Also takes into account=0A= * visibility in general.=0A= * @param {Element} node element.=0A= * @param {Number} opacity alpha level.=0A= * @private=0A= */=0A= GFdynamicFeedControl.prototype.setOpacity_ =3D function(node, opacity) {=0A= if (node =3D=3D null) return;=0A= opacity =3D Math.max(0, Math.min(1, opacity));=0A= if (opacity =3D=3D 0) {=0A= if (node.style.visibility !=3D 'hidden') {=0A= node.style.visibility =3D 'hidden';=0A= }=0A= } else {=0A= if (node.style.visibility !=3D 'visible') {=0A= node.style.visibility =3D 'visible';=0A= }=0A= }=0A= if (this.ie) {=0A= var normalized =3D Math.round(opacity*100);=0A= node.style.filter =3D 'alpha(opacity=3D' + normalized + ')';=0A= }=0A= node.style.opacity =3D node.opacity =3D opacity;=0A= };=0A= =0A= GFgadget =3D GFdynamicFeedControl;=0A= ------=_NextPart_000_0000_01C9C8C6.ABD591B0--