<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4429718890665821796</id><updated>2012-01-15T19:27:25.147-05:00</updated><title type='text'>HOLYOKE FIRST</title><subtitle type='html'>By: Councilor At Large Kevin A. Jourdain</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://holyokefirst.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default?start-index=101&amp;max-results=100'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>163</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-7726953840632425831</id><published>2012-01-15T19:24:00.000-05:00</published><updated>2012-01-15T19:24:43.407-05:00</updated><title type='text'>City Council Committee Appointments for 2012-2013</title><content type='html'>&lt;strong&gt;Ordinance&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Lisi, Chair&lt;br /&gt;Alexander, Vice-Chair&lt;br /&gt;Vacon&lt;br /&gt;Vega&lt;br /&gt;Ferreira&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Finance&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;McGee, Chair&lt;br /&gt;Vacon, Vice-Chair&lt;br /&gt;Tallman&lt;br /&gt;Soto&lt;br /&gt;Leahy&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Public Safety&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Soto, Chair&lt;br /&gt;Murphy, Vice-Chair&lt;br /&gt;Ferreira&lt;br /&gt;Lebron-Martinez&lt;br /&gt;Bartley&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Public Service&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Tallman, Chair&lt;br /&gt;Leahy, Vice-Chair&lt;br /&gt;McGiverin&lt;br /&gt;Murphy&lt;br /&gt;Bartley&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Redevelopment&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Vega, Chair&lt;br /&gt;McGiverin, Vice-Chair&lt;br /&gt;Alexander&lt;br /&gt;Lebron-Martinez&lt;br /&gt;Bresnahan&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Joint Committee of City Council and School Committee&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Lebron-Martinez, Chair&lt;br /&gt;Vega&lt;br /&gt;Ferreira&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Personnel&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Jourdain, Chair&lt;br /&gt;Vacon&lt;br /&gt;Soto&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cable Television&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Jourdain, Chair&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-7726953840632425831?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7726953840632425831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7726953840632425831'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2012/01/city-council-committee-appointments-for.html' title='City Council Committee Appointments for 2012-2013'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-4894133719841362125</id><published>2012-01-15T19:18:00.000-05:00</published><updated>2012-01-15T19:18:01.325-05:00</updated><title type='text'></title><content type='html'>&lt;h1 class="entry-title"&gt;Holyoke City Council President Kevin Jourdain appoints new committee leaders&lt;/h1&gt;&lt;div class="author_info"&gt;&lt;a href="http://connect.masslive.com/user/mplaisance/index.html"&gt;&lt;img alt="Mike Plaisance, The Republican" height="40" original="http://media.masslive.com/avatars/1828073.png" src="http://media.masslive.com/avatars/1828073.png" width="40" /&gt;&lt;/a&gt;&lt;span class="author_byline"&gt; By                &lt;span class="author vcard"&gt;&lt;a class="fn" href="http://connect.masslive.com/user/mplaisance/index.html"&gt;&lt;span style="color: #305cb6;"&gt;        Mike Plaisance, The Republican&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="source-org vcard" style="display: none; visibility: hidden;"&gt;&lt;span class="org fn"&gt;The Republican&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a class="follow" href=""&gt;&lt;span style="color: #305cb6; font-size: xx-small;"&gt;Follow&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="clear"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;!-- --&gt;&lt;/span&gt;&lt;!-- --&gt;&lt;/div&gt;&lt;div class="box_bottom_right"&gt;&lt;!-- --&gt;&lt;/div&gt;&lt;div class="entry-content"&gt;&lt;div class="entry_widget_small entry_widget_left"&gt;&lt;span class="adv-photo-small"&gt;&lt;img alt="102611 kevin jourdain mug.jpg" class="adv-photo" height="193" original="http://media.masslive.com/breakingnews/photo/10445955-small.jpg" src="http://media.masslive.com/breakingnews/photo/10445955-small.jpg" width="155" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry_widget_small entry_widget_left"&gt;&lt;span class="adv-photo-small"&gt;&lt;span class="photo-data"&gt;&lt;span class="caption"&gt;Kevin Jourdain&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry_widget_small entry_widget_left"&gt;&lt;span class="adv-photo-small"&gt;&lt;span class="photo-data"&gt;&lt;span class="caption"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="photo-bottom-left"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;span class="photo-bottom-right"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://topics.masslive.com/tag/holyoke/index.html"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;HOLYOKE &lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;– The change sweeping through city government that has featured a new mayor has now struck the City Council committees. &lt;br /&gt;&lt;br /&gt;Council President &lt;a href="http://topics.masslive.com/tag/kevin-jourdain/index.html" target="_blank&amp;quot;"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;Kevin A. Jourdain&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;, the first new president of the city’s legislative body since 1986, said Wednesday he has appointed new chairmen for four of the five main council committees. &lt;br /&gt;&lt;br /&gt;Committees are where debates take place about how to spend taxpayer dollars, and it’s where public hearings are held if a restaurant wants to install a drive-up window. &lt;br /&gt;&lt;br /&gt;Recommendations are made in the committees about whether to allow spending, establish laws, grant requests for zone changes and special permits and hire department heads and other employees. &lt;br /&gt;&lt;br /&gt;Committee decisions are recommendations subject to vote by the full City Council. &lt;br /&gt;&lt;br /&gt;Jourdain was elected by the 15-member council to be the new president on Jan. 3. &lt;br /&gt;&lt;br /&gt;Jourdain scored an 8-7 win over Councilor at Large &lt;a href="http://topics.masslive.com/tag/joseph-mcgiverin/index.html" target="_blank&amp;quot;"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;Joseph M. McGiverin&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;, who had been president 26 straight years. &lt;br /&gt;&lt;br /&gt;Chairmanships were based on a combination of experience, qualifications and whether councilors supported him for council president, he said. &lt;br /&gt;&lt;br /&gt;The only returning chairman is Ward 6 Councilor &lt;a href="http://topics.masslive.com/tag/todd-mcgee/index.html" target="_blank&amp;quot;"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;Todd A. McGee&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;, who will continue heading the Finance Committee. McGee voted for McGiverin for president and is the only councilor who did so to get a chairmanship from Jourdain. &lt;br /&gt;&lt;br /&gt;“He did a very good job overseeing Finance,” Jourdain said. “Although he didn’t vote for me as president, he did that more out of a loyalty to Joe rather than anything against me.” &lt;br /&gt;&lt;br /&gt;Councilors are paid $10,000 a year each and there’s no additional pay for being a chairman. Each councilor belongs to two or three committees.&lt;br /&gt;&lt;div class="entry_widget_small entry_widget_left" id="asset-8091592"&gt;&lt;span class="adv-photo-small"&gt;&lt;img alt="Lisi1.jpg" class="adv-photo" height="233" original="http://media.masslive.com/politics_impact/photo/8091592-small.jpg" src="http://media.masslive.com/politics_impact/photo/8091592-small.jpg" style="display: block;" width="155" /&gt;&lt;span class="photo-data"&gt;&lt;span class="byline"&gt;&lt;/span&gt;&lt;span class="caption"&gt;Rebecca Lisi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry_widget_small entry_widget_left"&gt;&lt;span class="adv-photo-small"&gt;&lt;span class="photo-data"&gt;&lt;span class="caption"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="photo-bottom-left"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;span class="photo-bottom-right"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Councilor at Large &lt;a href="http://topics.masslive.com/tag/rebecca-lisi/index.html" target="_blank&amp;quot;"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;Rebecca Lisi&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt; is chairwoman of the Ordinance Committee, taking over from former Ward 2 Councilor &lt;a href="http://topics.masslive.com/tag/diosdado-lopez/index.html" target="_blank&amp;quot;"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;Diosdado Lopez&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;, who didn’t run for reelection. &lt;br /&gt;&lt;br /&gt;“She’s a very organized person, so I think she’s going to be great there,” Jourdain said. &lt;br /&gt;&lt;br /&gt;The Ordinance Committee is arguably the busiest, considering proposed bylaws and holding hearings that last multiple hours. &lt;br /&gt;&lt;br /&gt;Lisi said she has contacted department heads to get information on issues to update members of her committee. &lt;br /&gt;&lt;br /&gt;“I’m really honored to have been given the position,” Lisi said. &lt;br /&gt;&lt;br /&gt;New Ward 2 Councilor &lt;a href="http://topics.masslive.com/tag/anthony-soto/index.html" target="_blank&amp;quot;"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;Anthony Soto&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt; is the new Public Safety Committee chairman. Former Councilor at Large Patricia C. Devine, the previous chairwoman, was defeated in the Nov. 8 election. &lt;br /&gt;&lt;br /&gt;Jourdain said he chose Soto because of his public safety experience as a former member of the Fire Commission and to give a voice to Ward 2 and Hispanics on such issues. &lt;br /&gt;&lt;br /&gt;Councilor at Large &lt;a href="http://topics.masslive.com/tag/peter-tallman/index.html" target="_blank&amp;quot;"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;Peter R. Tallman&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt; is new chairman of the Public Service Committee, taking over from Councilor at Large James M. Leahy. &lt;br /&gt;&lt;br /&gt;“Pete’s as honorable a person as you’re going to meet,” Jourdain said. &lt;br /&gt;&lt;br /&gt;The committee will be busy reviewing prospective appointees of new Mayor Alex B. Morse, who took office Jan. 3, Jourdain said. &lt;br /&gt;&lt;br /&gt;Leahy said his ejection as chairman was unsurprising, given his support for McGiverin. But he said the council loses without having McGiverin’s experience as a chairman. &lt;br /&gt;&lt;br /&gt;“I do think that overlooking Joe for a chairmanship probably wasn’t the right thing to do,” Leahy said. &lt;br /&gt;&lt;br /&gt;Jourdain said that as with the council presidency, it was time for a change. &lt;br /&gt;&lt;br /&gt;“I just felt it’s time to give new people an opportunity,” Jourdain said. &lt;br /&gt;&lt;br /&gt;McGiverin is vice chairman of the Redevelopment Committee, which could be busy dealing with casino gambling issues. &lt;br /&gt;&lt;br /&gt;“That’s the president’s prerogative,” McGiverin said. “I’m looking forward to serving on the Redevelopment Committee because I think there’s going to be a lot going on.” &lt;br /&gt;&lt;br /&gt;Councilor at Large &lt;a href="http://topics.masslive.com/tag/aaron-vega/index.html" target="_blank&amp;quot;"&gt;&lt;strong&gt;&lt;span style="color: #305cb6;"&gt;Aaron M. Vega&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt; is new chairman of the Redevelopment Committee, Jourdain’s former chairmanship. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-4894133719841362125?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4894133719841362125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4894133719841362125'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2012/01/holyoke-city-council-president-kevin.html' title=''/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-3337586980889192010</id><published>2012-01-15T19:14:00.000-05:00</published><updated>2012-01-15T19:14:57.355-05:00</updated><title type='text'>Council President Kevin A. Jourdain's Speech to the City Council upon his election!</title><content type='html'>&lt;div align="center" class="MsoNormal" style="margin: 0in 0in 10pt; text-align: center;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;City Council President Speech&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center" class="MsoNormal" style="margin: 0in 0in 10pt; text-align: center;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;January 3, 2012&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 200%; margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 200%;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I would like to thank my colleagues for the tremendous honor and privilege to serve as President.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;On January 6, 1986, Joe McGiverin was first elected as President of the City Council and since that time he has served the city with honor and distinction.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;I truly thank him for his past leadership.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;He holds the record for longest service as President and it is a record that I fully expect will never be broken.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Certainly not by me, for I have pledged not to serve longer than 6 years as President, if you wish to have me even that long. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 200%; margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 200%;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The Legislative Branch of Holyoke City Government has taken many forms and names over the last 139 years.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;During that time, what has been constant is that the people of Holyoke have turned to us to be a positive force for good, to rise above the city’s challenges and be their voice.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;In us, average citizens drawn from the community, is placed enormous authority.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;With the overwhelming vote to defeat the proposed Charter Change and its desired change in the balance of power, the people of Holyoke have spoken clearly that they turn to the City Council to be the vanguard against an overbearing government.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;That our government will not spend more than it brings in and will act in a financially responsible manner.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;That City Hall and all of the employees who are privileged to serve will act with transparency and integrity.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;That government is the servant and the citizens its master and never the other way around.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;It is our scared duty and oath to uphold these principles and the Ordinances of our city and the Constitution of our great nation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 200%; margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 200%;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The people of Holyoke have placed great faith in a 22 year man named Alex Morse to lead our city as Mayor.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;I am reminded that I as a young man of 22 was first elected a member of this body.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;I am no longer 22 but I still share the same passion, energy and idealism that first drew me to be a servant of the people.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Each of us is called to aid our new Mayor to be a success, for the Mayor to succeed means that Holyoke succeeds.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The youngest Councilor ever elected serving alongside the youngest Mayor ever elected: it certainly will be interesting.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 200%; margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 200%;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Over the new term, we are privileged to have a body composed of so many bright and distinguished members.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Each of our talents will be put to the test.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Many new people will be called to positions of leadership.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;As we craft law and policy for the city, let us do so with wisdom and reflection.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Let us do so, however, with bold leadership.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The solutions to our city’s problems require us to think outside of the box and not be afraid to take bold positions.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Where we know something is wrong, we must fix it.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Previous generations of Holyokers faced challenges similar to or greater than ours and they succeeded.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;They were the makers of a proud history.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;It is now our turn to be makers of law and makers of history.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Let it be said by our children and grandchildren, that we served faithfully and left the city much better than we received it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 200%; margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 200%;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I wish everyone the best of success and look forward to serving with each of you.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 200%; margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 200%;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;May Almighty God keep Holyoke within His Divine Providence and may He Bless the work of our new Mayor and City Council.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-3337586980889192010?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3337586980889192010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3337586980889192010'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2012/01/council-president-kevin-jourdains.html' title='Council President Kevin A. Jourdain&apos;s Speech to the City Council upon his election!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-993936047404862287</id><published>2012-01-04T05:37:00.000-05:00</published><updated>2012-01-04T05:37:53.581-05:00</updated><title type='text'>Kevin Jourdain elected President of the Holyoke City Council!</title><content type='html'>&lt;img alt="masslive.com" src="http://media.masslive.com/design/baseline/img/logo_mass_print.gif" /&gt;&lt;br /&gt;&lt;div id="PrintContainer"&gt;&lt;h1 class="entry-title"&gt;Kevin Jourdain elected Holyoke City Council president following Mayor Alex Morse swearing-in&lt;/h1&gt;&lt;h5&gt;Published: Tuesday, January 03, 2012,  8:55 PM     Updated: &lt;span class="updated" title="2012-01-04T03:14:13Z"&gt;Tuesday, January 03, 2012, 10:14 PM&lt;/span&gt;&lt;/h5&gt;&lt;div class="author_info"&gt;&lt;img alt="Mike Plaisance, The Republican" height="40" src="http://media.masslive.com/avatars/1828073.png" width="40" /&gt;&lt;span class="author_byline"&gt; By                &lt;span class="author vcard"&gt;&lt;strong&gt;        Mike Plaisance, The Republican&lt;/strong&gt;&lt;/span&gt;&lt;span class="source-org vcard" style="display: none; visibility: hidden;"&gt;&lt;span class="org fn"&gt;The Republican&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="clear"&gt;&lt;!-- --&gt;&lt;/div&gt;&lt;div class="entry-content"&gt;&lt;div class="entry_widget_large entry_widget_right"&gt;&lt;span class="adv-photo-large"&gt;&lt;img alt="inaug.JPG" class="adv-photo" height="286" src="http://media.masslive.com/breakingnews/photo/10408451-large.jpg" width="380" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry_widget_large entry_widget_right"&gt;&lt;span class="adv-photo-large"&gt;&lt;span class="photo-data"&gt;&lt;span class="byline"&gt;Staff Photo by John Suchocki&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry_widget_large entry_widget_right"&gt;&lt;span class="adv-photo-large"&gt;&lt;span class="photo-data"&gt;&lt;span class="byline"&gt;&lt;/span&gt;&lt;span class="caption"&gt;Mayor Alex B. Morse turns to the audience of supporters after being sworn in during the Inauguration ceremony at Holyoke High school Tuesday.  Over Morse's right shoulder is Kevin A. Jourdain, who was elected new CIty Council president. Councilor James M. Leahy is over Morse's left shoulder.&lt;/span&gt;&lt;/span&gt;&lt;span class="photo-bottom-left"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;span class="photo-bottom-right"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;HOLYOKE&lt;/strong&gt; – Mayor &lt;strong&gt;Alex B. Morse &lt;/strong&gt;was sworn into office Tuesday as the youngest mayor in city history at age 22, and the changes soon began, all around City Hall. &lt;br /&gt;&lt;br /&gt;The 15-member City Council elected its first new president in nearly three decades, choosing Councilor at Large &lt;strong&gt;Kevin A. Jourdain&lt;/strong&gt; over Councilor at Large &lt;strong&gt;Joseph M. McGiverin&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;McGiverin had been president for 26 straight years. &lt;br /&gt;&lt;br /&gt;Jourdain – who pledged to be a bold council president – edged McGiverin, 8-7, on the second ballot of voting in City Council Chambers. &lt;br /&gt;&lt;br /&gt;The theme continued Tuesday night with the School Committee electing Devin M. Sheehan, one of the board’s youngest, to be committee vice chairman. The mayor is chairman of the School Committee, and practice has been that the vice chairman runs meetings.  &lt;br /&gt;Morse appointed Elizabeth Rodriguez-Ross as the new city solicitor, replacing &lt;strong&gt;Lisa A. Ball&lt;/strong&gt;. The solicitor’s yearly salary is $75,823. &lt;br /&gt;&lt;br /&gt;Morse also fired Jeanette Berrios as city personnel director because he said she was unqualified for the job, and made city staff attorney Adam Pudelko the new personnel director. The personnel director’s yearly salary is $60,600. &lt;br /&gt;&lt;br /&gt;The city solicitor and personnel director appointments are subject to City Council confirmation. &lt;br /&gt;&lt;br /&gt;Ball was city solicitor and Berrios was acting personnel director under former Mayor Elaine A. Pluta, whom Morse defeated in the Nov. 8 election.&lt;br /&gt;&lt;div&gt;&lt;div class="embeddedMedia entry_widget_large entry_widget_left" id="ss10408174"&gt;&lt;div class="mt-enclosure mt-enclosure-photo" style="display: inline;"&gt;&lt;div class="adv-slideshow"&gt;&lt;img alt="The 2012 Holyoke Inaugural ceremony" class="adv-photo" height="210" src="http://media.masslive.com/republican/photo/2012/01/10408197-large.jpg" width="380" /&gt;&lt;div class="slideshow-data"&gt;&lt;span class="byline"&gt;&lt;strong&gt;John Suchocki, The Republican&lt;/strong&gt;&lt;/span&gt;&lt;span class="caption"&gt;01/03/12 - Holyoke - Flanked by members of the City Council and School Committee Mayor Alex B. Morse gives his Inaugural Address during the Inauguration ceremony at Holyoke High school.&lt;/span&gt;&lt;div class="slideshow_carousel"&gt;&lt;span class="ss_next10408174 next right"&gt;&lt;!-- --&gt;&lt;/span&gt;&lt;span class="ss_prev10408174 prev left"&gt;&lt;!-- --&gt;&lt;/span&gt;&lt;div id="slideshow10408174"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="photo-bottom-left"&gt;&lt;!-- --&gt;&lt;/span&gt;&lt;span class="photo-bottom-right"&gt;&lt;!-- --&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;  /* &lt;![CDATA[ */  embedSlideshow(4502, 10408174, 'holyoke_inaugural_ceremony', '&amp;align=left');  /* ]]&gt; */  &lt;/script&gt; &lt;/div&gt;&lt;/div&gt;Councilors such as Jourdain and others &lt;strong&gt;have argued Berrios, of Springfield, was unqualified under city law&lt;/strong&gt; to be personnel director. She lacks a bachelor’s degree, isn’t a city resident and lacks at least five years experience as a personnel director, assistant director or administrator, such officials have said, though she worked in the office for more than 15 years. &lt;br /&gt;&lt;br /&gt;Berrios couldn’t be reached for comment. &lt;br /&gt;&lt;br /&gt;Morse said his office staff at City Hall will consist of Chief of Staff Dori Dean, who was his campaign manager, Executive Assistant Tessa Murphy-Romboletti and aide Nilka M. Ortiz, the lone holdover from Pluta’s staff. &lt;br /&gt;&lt;br /&gt;Morse said Dean, Murphy-Romboletti and Ortiz each will be paid $40,764 a year. &lt;br /&gt;Other changes in city jobs and on boards and commissions will be coming, Morse said.&lt;br /&gt;&lt;br /&gt;Morse, in inaugural remarks, pledged commitment to improving education, economic development and public safety, along with a dedication to trying to unify the different factions of the city. &lt;br /&gt;&lt;br /&gt;“Let us remember that we all want what’s best for our hometown. And that in no other city in this nation are the people more considerate, generous and compassionate,” Morse said. &lt;br /&gt;&lt;br /&gt;The day marked a departure from “the old ways of doing politics in this city,” said Morse, who said the city’s strongest asset was its people. &lt;br /&gt;&lt;br /&gt;“Today, we rededicate ourselves to the betterment of this community. We will not achieve every goal we desire in just one election or even one mayoral term. But I have no doubt that we will meet these challenges – boldly, fearlessly, and with the proud, fighting spirit that defines our people,” Morse said. &lt;br /&gt;&lt;div&gt;&lt;div class="embeddedMedia entry_widget_large entry_widget_left"&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;He wants to “rebrand” the city that, because of its former paper mills, was known as the Paper City, and have it be called the Digital City, he said, because of the $165 million &lt;strong&gt;high-performance computing center&lt;/strong&gt; being built downtown. The center will be an academic research facility with partners that include Harvard University, Massachusetts Institute of Technology and the University of Massachusetts.&lt;br /&gt;&lt;br /&gt;Despite the spirit of newness and the 18-hour days of vigor that Morse brings, the problems in the path of the change he envisioned are deep. Holyoke’s poverty rate is more than 28 percent. The city population is about 40,000. More than 10 percent of the population is unemployed. &lt;br /&gt;&lt;br /&gt;Only 26 percent of students in grades pre-kindergarten to Grade 3 are able to read at their grade levels. A major reason for that is English is the second language for the largely Hispanic enrollment. &lt;br /&gt;&lt;br /&gt;Morse told the packed high school auditorium he was mindful of his limitations in dealing with such challenges, but also confident. &lt;br /&gt;&lt;br /&gt;“Lest we forget, we are Holyoke. As long as we remember that, there is no way we can fail,” he said. &lt;br /&gt;&lt;br /&gt;Morse announced his candidacy for mayor when he was 21 and midway through his senior year at Brown University, in Providence, R.I. He graduated in May with a degree in urban studies. &lt;br /&gt;&lt;br /&gt;The ceremony at Holyoke High School included swearing in of the City Council and School Committee.&lt;br /&gt;&lt;br /&gt;Lt. Gov. &lt;strong&gt;Timothy P. Murray&lt;/strong&gt; was master of ceremonies for the inaugural event. &lt;br /&gt;&lt;br /&gt;Among officials who attended were U.S. Rep. &lt;strong&gt;John W. Olver&lt;/strong&gt;, D-Amherst, &lt;strong&gt;Brian P. Lees&lt;/strong&gt;, clerk of Hampden Superior Court, state Sen. &lt;strong&gt;Michael R. Knapik,&lt;/strong&gt; R-Westfield, and state Rep. &lt;strong&gt;Michael F. Kane&lt;/strong&gt;, D-Holyoke. &lt;br /&gt;&lt;br /&gt;Jourdain’s elevation to president capped &lt;strong&gt;weeks of lobbying&lt;/strong&gt; of councilors by himself and McGiverin, whom Jourdain had tried previously to unseat.&lt;br /&gt;&lt;br /&gt;Jourdain said it was beyond the acceptable time for a change. McGiverin said he understood and enjoyed the public role of City Council president and wished to continue. &lt;br /&gt;&lt;br /&gt;“As we craft law and policy for the city, let us do so with wisdom and reflection,” Jourdain said. “Let us do so, however, with bold leadership. The solutions to our city’s problems require us to think outside of the box and not be afraid to take bold positions.” &lt;br /&gt;&lt;br /&gt;Jourdain and McGiverin split the votes of the six new councilors. Jourdain got votes from Gladys Lebron-Martinez, who replaces Donald R. Welch as Ward 1 councilor; Anthony Soto, who takes over as Ward 2 councilor from Diosdado Lopez; and Gordon P. Alexander, who takes over as Ward 7 councilor from John P. O’Neill. &lt;br /&gt;&lt;br /&gt;McGiverin received votes from new Ward 3 Councilor David K. Bartley, who replaces Anthony M. Keane; new Ward 4 Councilor Jason P. Ferreira, who replaces Timothy W. Purington; and new Councilor at Large Daniel B. Bresnahan. &lt;br /&gt;&lt;br /&gt;Also backing Jourdain, besides himself, were Ward 5 Councilor Linda L. Vacon and councilors at large Rebecca Lisi, Peter R. Tallman and Aaron M. Vega. &lt;br /&gt;&lt;br /&gt;McGiverin received votes from Ward 6 Councilor Todd A. McGee and councilors at large James M. Leahy, Brenna E. Murphy and himself. &lt;br /&gt;&lt;br /&gt;The first vote for council president resulted in a lack of majority for any candidate. Jourdain got seven votes, McGiverin six and Vega two.&lt;br /&gt;&lt;div class="entry_widget_small entry_widget_left"&gt;&lt;span class="adv-photo-small"&gt;&lt;img alt="McGiverin.jpg" class="adv-photo" height="212" src="http://media.masslive.com/politics_impact/photo/8091329-small.jpg" width="155" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry_widget_small entry_widget_left"&gt;&lt;span class="adv-photo-small"&gt;&lt;span class="photo-data"&gt;&lt;span class="caption"&gt;Joseph McGiverin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry_widget_small entry_widget_left"&gt;&lt;span class="adv-photo-small"&gt;&lt;span class="photo-data"&gt;&lt;span class="caption"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="photo-bottom-left"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;span class="photo-bottom-right"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;After the council presidency was decided with the second ballot, McGiverin walked across the floor to shake Jourdain’s hand. &lt;br /&gt;&lt;br /&gt;At the podium, McGiverin stood with Jourdain, said he will retire the gavel he has used as president so Jourdain can wield his own gavel and pledged support to Jourdain. &lt;br /&gt;&lt;br /&gt;Jourdain praised McGiverin’s service but made clear his tenure will be different. &lt;br /&gt;&lt;br /&gt;“He holds the record for longest service as president and it is a record I fully expect will never be broken. Certainly not by me, for I have pledged not to serve longer than six years as president, if you wish to have me even that long,” Jourdain said. &lt;br /&gt;&lt;br /&gt;McGiverin said later, “I’d be lying to you if I said I wasn’t disappointed. But the president has to have a majority of the City Council behind him. I don’t think in my heart it was personal. It was a decision for something different.”&lt;br /&gt;&lt;br /&gt;Visibility is a main feature of being council president. The president runs City Council meetings that are held the first and third Tuesday of the month. &lt;br /&gt;&lt;br /&gt;That includes determining which councilors can speak based on the order in which they raised their hands, ensuring decorum if debate gets testy and making sure council rules are followed. &lt;br /&gt;&lt;br /&gt;One of Jourdain’s first duties will be to choose the chairmen of the council committees. Certain chairmanships are sought after because of their own visibility and at least perceived importance, such as Finance, Public Safety and Ordinance. &lt;br /&gt;&lt;br /&gt;Jourdain said he will announce committee chairmen in a few weeks. &lt;br /&gt;&lt;br /&gt;City councilors are paid $10,000 a year each. &lt;br /&gt;&lt;br /&gt;The School Committee consists of 10 members, including the mayor as chairman. Joshua A. Garcia is the new Ward 1 School Committee member, filling the seat held by Lebron-Martinez. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Yvonne S. Garcia&lt;/strong&gt; kept the Ward 2 school board seat with a write-in campaign, but didn’t attend the inauguration. She couldn’t be reached later. &lt;br /&gt;&lt;br /&gt;Other returning School Committee members are Dennis W. Birks Jr., Ward 3, Cesar A. Lopez, Ward 4, Devin M. Sheehan, Ward 5, William R. Collamore, Ward 6 and Margaret M. Boulais, Ward 7, and at-large member Howard B. Greaney Jr. &lt;br /&gt;&lt;br /&gt;The School Committee has two at-large members with staggered, four-year terms. At-large member Michael J. Moriarty wasn’t up for reelection in November and has two years left in his term. &lt;br /&gt;&lt;br /&gt;School Committee members get $5,000 a year.&lt;/div&gt;&lt;div class="clear"&gt;&lt;!-- --&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;   /* &lt;![CDATA[ */   jQuery("#ss10408174").click(function(){    jQuery.cookie("ssReferrer", "10408174|http://www.masslive.com/news/index.ssf/2012/01/kevin_jourdain_elected_holyoke.html", { path: '/', domain: 'masslive.com' });   });   /* ]]&gt; */   &lt;/script&gt; &lt;/div&gt;&lt;div class="copy"&gt;© &lt;span id="year"&gt;2012&lt;/span&gt; masslive.com. All rights reserved.&lt;/div&gt;&lt;script type="text/javascript"&gt;﻿///////////    SEARCH    ///////////var g_aEng;var g_loc;// Initialize namespace, use existing contextvar searchshield = searchshield || {};searchshield.clockUrl;// constantssearchshield.SCORE_SS_SAFE  = 1;searchshield.SCORE_SS_CAUTION = 2;searchshield.SCORE_SS_WARNING = 3;searchshield.SCORE_SS_BLOCK  = 4;searchshield.SCORE_SS_VERISIGN = 7;searchshield.BLOCK_NONE  = 0;searchshield.BLOCK_NORMAL = 1;searchshield.BLOCK_PHISH = 2;searchshield.BLOCK_YAHOO = 3;searchshield.XPLCHECK_RESULT_SEV_NONE = 0;searchshield.XPLCHECK_RESULT_SEV_LOW = 1;searchshield.XPLCHECK_RESULT_SEV_MED = 2;searchshield.XPLCHECK_RESULT_SEV_BLOCK = 3;searchshield.VERISIGN_SPLIT_NOTEST  = 0;searchshield.VERISIGN_SPLIT_TESTA  = 1;searchshield.VERISIGN_SPLIT_TESTB  = 2;searchshield.needLivePhishCheck = false;searchshield.allowedSites = [];searchshield.enabled = function (doc){ var result = searchshield.avgCallFunc(doc, 'GetSearchEnabled'); return (result == '1' ? 1 : 0);};searchshield.init = function (doc){ if ((doc == null) || (doc.location == null) || (doc.location.href.search(/about:/) != -1))  return; if (!searchshield.enabled(doc))  return; if (!g_aEng)  g_aEng = searchshield.Search.prototype.detectEngine(doc.location.href); if (!g_aEng)  return; // init search object (not declared or is null) if (typeof xplSearch === 'undefined') {  // global  xplSearch = new searchshield.Search();  // reset the links added flag  xplSearch.new_links = false;  xplSearch.doc = doc;  xplSearch.href = xplSearch.doc.location.href;  xplSearch.uri = searchshield.parseLink(xplSearch.href);    xplSearch.engine = new searchshield[g_aEng+'SearchEngine'](xplSearch)  xplSearch.addEngine(xplSearch.engine);  searchshield.launch(doc); } if (doc.location.href != g_loc) {  g_loc = doc.location.href;  if ((typeof xplSearch !== 'undefined') &amp;&amp; (xplSearch != null))   searchshield.launch(doc); }};searchshield.launch = function (doc){ // IE specific check searchshield.quirksMode = (self.top.document.compatMode == 'BackCompat'); searchshield.docMode = parseInt(navigator.userAgent.split('MSIE')[1]);   if ((self === top) &amp;&amp; (self.document === doc)) {  if (!xplSearch.engine)   return;  // set verdict display config  xplSearch.engine.setRatingsConfig(doc);  // init the alert popup  searchshield.initPopupAlert(doc);  if (xplSearch.engine.type != 'inline')  {   // save function reference for memory clean up later   var fn = function(event){avglsflyover.hide(null)};   //hide flyover if these events occur   window.detachEvent('onscroll', fn);   window.attachEvent('onscroll', fn);   doc.detachEvent('onkeydown', fn);   doc.attachEvent('onkeydown', fn);  }    // only start monitor on top doc  searchshield.avgPageMonitor.start(doc); } return;};// search monitors and processors - doc is always top most documentsearchshield.avgPageMonitor = { previousUrl: null, start: function(doc){  searchshield.avgPageMonitor.stop();  searchshield.avgPageMonitor.process(doc);  searchshield.avgPageMonitor.timeoutID = window.setTimeout(function(){searchshield.avgPageMonitor.start(doc)}, 1000); }, process: function(doc){  var currentUrl = doc.location.href;  var refresh = 0;  if (this.previousUrl != currentUrl) {   this.previousUrl = currentUrl;   avgreport.scanResult(doc, currentUrl);   refresh = (xplSearch.engine.name == 'google') ? 1 : 0;  }  searchshield.avgProcessSearch(doc, refresh); }, stop: function(){  if (searchshield.avgPageMonitor.timeoutID)  {   window.clearTimeout(searchshield.avgPageMonitor.timeoutID);   delete searchshield.avgPageMonitor.timeoutID;  } }};searchshield.avgProcessSearch = function (doc, refresh){ // doc may be about:Tabs or about:Blank if (!doc)  return;   if (!searchshield.enabled(doc))  return; if (!searchshield.clockUrl)  searchshield.clockUrl = searchshield.avgCallFunc(doc, 'GetIconUrl', '0');   xplSearch.clockUrl = searchshield.clockUrl if (!xplSearch.engine)  return; // get result links xplSearch.links = []; var links = searchshield.avgGetSearchLinks(doc, xplSearch.engine, refresh); searchshield.needLivePhishCheck = false; for (var i=0; i &lt; links.length; i++) {  var isPhishing = searchshield.avglsCheckandUpdate(links[i]);  if (isPhishing)   searchshield.needLivePhishCheck = true; }  if (searchshield.needLivePhishCheck) {  var prev = '1';  if ( xplSearch.engine.type == 'inline' )   prev = '0';  searchshield.avgCallFunc(doc, 'GetPhishingResults', prev);  searchshield.needLivePhishCheck = false; } else if (links.length &gt; 0 &amp;&amp; xplSearch.engine.type != 'inline') {  searchshield.avgCallFunc(doc, 'FinalScanComplete'); }  // attach click handlers for popup alerts doc.body.detachEvent("onclick", searchshield.blockClick); doc.body.attachEvent("onclick", searchshield.blockClick);  doc.body.detachEvent("ondblclick", searchshield.blockClick); doc.body.attachEvent("ondblclick", searchshield.blockClick);};searchshield.avgGetSearchLinks = function (doc, engine, refresh){ if (!doc.body)  return; var alltags = doc.body.getElementsByTagName('a'); for (var i = 0; i &lt; alltags.length; i++) {  if ( !refresh )  { // no checked test if refreshing - google   if (alltags[i].getAttribute('avglschecked'))    continue;  }    // mark search result anchor so it isn't processed repeatedly  alltags[i].setAttribute('avglschecked', '1');  // ignore linked resources  if (alltags[i].tagName == 'LINK')   continue;  // ignore in-page bookmarks and javascript  if ((!alltags[i].href) ||   (alltags[i].href.charAt(0) == '#') || // in-page bookmark   (alltags[i].href.indexOf("javascript") == 0))   continue;     // ignore verdicts  if (/XPLSS_/.test(alltags[i].id))   continue;  // ignore flyover anchors  if (/avgthreatlabs/.test(alltags[i].host))   continue;     var href = engine.includeLink(alltags[i]);  if (!href)   continue;    var newNode = engine.search.addLink(alltags[i], href);  engine.addImage(newNode, engine.search.clockUrl, false); }  // recursivesly process all frames var docFrames = doc.frames; if (docFrames &amp;&amp; engine.processFrames) {  for (var j = 0; j &lt; docFrames.length; j++)  {   var attr;   var frameDoc;   try {    attr = docFrames[j].frameElement.className;    frameDoc = docFrames[j].document;   }   catch(err){}   //TODO: make frame processing an engine function or at least make exclusions an engine property   // 'editable' frame it's probably a gmail reply   if (attr &amp;&amp; (attr.indexOf("editable") != -1))    continue;   if (frameDoc)    searchshield.avgGetSearchLinks(frameDoc, engine, 0);  } }  return engine.search.links;};searchshield.avglsCheckandUpdate = function (linkNode){ if (!xplSearch)  return; // element is the search result anchor var element = linkNode.element; var href = linkNode.href; var result = searchshield.avgCallFunc(xplSearch.doc, 'CheckSite', href, element.href); if (result == null)  return;  var resultParse = result.split('::'); var phishing  = resultParse[0];  // if phishing then rest of array does not exist. if (phishing == 1)  return true; if (resultParse.length &lt; 8)  return;  var hash   = resultParse[1]; var score   = resultParse[2]; var new_image = resultParse[3]; var alt_image = resultParse[4]; var flyover   = resultParse[5]; var click_thru= resultParse[6]; var altClick_thru = resultParse[7]; // iterate to get verdict anchor nextElem = element.nextSibling; while (nextElem) {  if (nextElem.nodeType == 1 &amp;&amp; nextElem.id &amp;&amp; (nextElem.id.indexOf("XPLSS_") != -1))   break;  nextElem = nextElem.nextSibling; }  return xplSearch.engine.updateImage(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru);};// click event handler - shows popup for links of caution and warning severitysearchshield.blockClick = function(event){ if (!event)  event = window.event;   // no action needed if click is not the left mouse button if (event.button != 0)  return;   var anchor = searchshield.getAnchorNode(event.srcElement,         function(node) {return ((node.tagName.charAt(0) == "H") ||              (node.tagName.charAt(0) == "D") ||              (node.tagName.charAt(0) == "T"))} );  if ((anchor == null) || (anchor.href == null))  return true;  // ignore if anchor is on an xpl verdict if (!!anchor.id) {  if (anchor.id.indexOf('LXPLSS_') == 0)   return true;    if (anchor.id.indexOf('XPLSS_INTR') == 0)  {   searchshield.allowedSites.push(searchshield.GetDomain(anchor.href));   return true;  } }  // VeriSign A/B Split reporting - only for VerSign domains var avglschecked = anchor.getAttribute("avglschecked"); if (avglschecked &amp;&amp; avglschecked != 1) {  var sPos = avglschecked.indexOf("S");  var hash = (sPos &gt; -1) ? avglschecked.substring(0, sPos) : null;  var split = (sPos &gt; -1) ? avglschecked.substring(sPos+1) : null;  if (hash &amp;&amp; split &amp;&amp; split != searchshield.VERISIGN_SPLIT_NOTEST)  {   // check updated verdict anchor for verisign domain   var d = event.srcElement.ownerDocument;   if (d.getElementById("LXPLSS_" + hash + "U" + searchshield.SCORE_SS_VERISIGN))   {    searchshield.avgCallFunc(d, "RecordVSClick", hash, d.location.href);   }  } } var link = anchor.href; var verdict = searchshield.getAvgImage(anchor); var score = -1; var img_id = ''; if (verdict != null) {  score = verdict.score;  img_id = verdict.rawId; }  // show popup alert (upper left) if ((score &gt;= searchshield.SCORE_SS_CAUTION) &amp;&amp; (score &lt;= searchshield.SCORE_SS_WARNING)) {  // prevent this click from going any further  var search_hash = searchshield.avgCallFunc(document, 'GetHash', document.location.href);  searchshield.ShowPopupAlert(document, link, img_id, search_hash);  // if possible, stop the event from going any further  searchshield.cancelEvent(event);  return false; }  return true;};// called by native to update phishing linkssearchshield.updatePhishingLinks = function (results){ if (!results)  return; if (!xplSearch)  return; var engine = xplSearch.engine; var resultParse = results.split("::"); var resultsLength = resultParse[0]; for (var i=0; i &lt; resultsLength; i++) {  var idx = i*7;  var hash   = resultParse[idx+1];  var score   = resultParse[idx+2];  var new_image = resultParse[idx+3];  var alt_image = resultParse[idx+4];  var flyover   = resultParse[idx+5];  var click_thru= resultParse[idx+6];  var altClick_thru = resultParse[idx+7];  engine.updateImage(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru); }};searchshield.getAvgImage = function (element){ var obj = {}; obj.img = xplSearch.engine.getImgElement(element); obj.score = -1;  //parse the score from the id if (obj.img != null &amp;&amp; obj.img.id) {  var pos = !!obj.img.id ? obj.img.id.indexOf('U') + 1 : -1;  obj.score = (pos &lt; 1) ? -1 : obj.img.id.charAt(pos);  obj.rawId = obj.img.id.substring(0,pos-1); }  return obj;};searchshield.GetScannedLink = function (link){ if (!xplSearch || !(xplSearch.links instanceof Array))  return link; // look for the link we scanned based on original element for (var i = 0; i &lt; xplSearch.links.length; i++) {  if (xplSearch.links[i].element.href == link)   return xplSearch.links[i].href; } // else return the incoming link return link;};searchshield.previouslyScanned = function (links, hash){ for (var i = 0; i &lt; links.length; i++) {  if ((links[i] != null) &amp;&amp; (links[i].hash != null) &amp;&amp;    (links[i].hash == hash) &amp;&amp; (links[i].checked == true))   return true; } return false;};searchshield.initPopupAlert = function (doc){ // check if it exists first if (doc.getElementById("XPLSS_PopupAlert"))  return; // create a div to use for the popup itself, hide for now var popup_div = doc.createElement("DIV"); popup_div.setAttribute("id", "XPLSS_PopupAlert"); popup_div.style.position = "absolute"; popup_div.style.zIndex = "10000"; doc.body.appendChild(popup_div);};searchshield.initFlyover = function (doc, engine){ // create in top doc only if (doc !== window.top.document)  doc = window.top.document; // check if it exists first if ((doc == null) || (doc.getElementById("XPLSS_Flyover")))  return; // create a div to use for the flyover itself, hide for now var flyover_div = doc.createElement("DIV"); flyover_div.setAttribute("id", "XPLSS_Flyover"); flyover_div.style.position = "absolute"; flyover_div.style.zIndex = "10000"; doc.body.appendChild(flyover_div); // create a layer for the image var trans_div = doc.createElement("DIV"); trans_div.setAttribute("id", "XPLSS_Trans"); trans_div.style.position = "absolute"; trans_div.style.zIndex = "9999"; doc.body.appendChild(trans_div);};searchshield.ShowPopupAlert = function (doc, link, hash, search){ // build the content var popup_content = searchshield.avgCallFunc(doc, 'BuildPopupAlert', hash, search); if (popup_content == null || popup_content == "")  return; // get the div var div = doc.getElementById("XPLSS_PopupAlert"); div.innerHTML = searchshield.CleanupHTML(popup_content); // set position, account for scrolling var zoom = searchshield.zoomLevel(); var pageOffsetX = Math.round(doc.documentElement.scrollLeft/zoom); var pageOffsetY = Math.round(doc.documentElement.scrollTop/zoom);  div.style.left = 10 + pageOffsetX + "px"; div.style.top = 10 + pageOffsetY + "px";  // TODO: the event handler function doesn't exist so, is this even necessary? //div.attachEvent("onmouseout", HidePopupAlert); // set the link //var data = doc.getElementById("avgalertpopurl"); //if (data) //  data.innerHTML = escape(link); // set visibility div.style.visibility = "visible"; //navigate to the link after timed delay // TODO: Bug 31707 - make this open a new tab/window setTimeout(function(){doc.location.assign(link)}, 3000);};searchshield.avgCallFunc = function (doc, name /*, param1..., paramN*/){ // get the data element var avg_ls_data = (typeof gAvgDataElement !== 'undefined') ? gAvgDataElement : doc.getElementById("avglsdata"); if ((avg_ls_data == null) || (name == null))  return;  // save the data element gAvgDataElement = avg_ls_data; // for some reason you can't fire and event on an element with no parent node if (avg_ls_data.parentNode == null)  return; // set the attributes avg_ls_data.setAttribute("function", name);  // set variable length of optional parameter attributes var pcnt = 0; for (var i=2; i &lt; arguments.length; i++)  avg_ls_data.setAttribute("param"+(++pcnt), String(arguments[i])); avg_ls_data.fireEvent("onrowenter"); // get the result return avg_ls_data.getAttribute("result"); };// general use functions - begin// DOM Functionssearchshield.getAnchorNode = function (node, filterFunc){ // filterFunc should return a boolean if (!filterFunc || !filterFunc instanceof Function)  return null;   // go up the dom tree starting at node and look for anchor  // before hitting a header, div or table element  while ((node != null)   &amp;&amp;   (node.tagName != null) &amp;&amp;    (node.tagName != "A")) {  if (filterFunc(node))  {   node = null;   break;  }  node = node.parentNode; } return node;};searchshield.getDocuments = function (frame, frameArray){ // recursively get all embedded frames/docs frameArray.push(frame.document); var frames = frame.frames; for (var i = 0; i &lt; frames.length; i++) {  // recurse on each frame  searchshield.getDocuments(frames[i], frameArray); } return frameArray;};searchshield.NextSiblingNode = function (element){ var TEXTNODE = 3; var ParentNode = element.parentNode; if (!ParentNode)  return; var NextSibling = ParentNode.nextSibling; while (NextSibling) {  if (NextSibling.nodeType != TEXTNODE)   return NextSibling;  NextSibling = NextSibling.nextSibling; } return;};searchshield.getParentNodeByAttribute = function (attrName, attrValue, node, maxDepth){ if (!node)  return null;  var maxLoop = maxDepth ? maxDepth : 1; var pNode = node.parentNode;  if (!pNode)  return null;  for(; 0 &lt; maxLoop; maxLoop--)  {  if ((pNode[attrName]) &amp;&amp;    (pNode[attrName].toLowerCase() === attrValue.toLowerCase()))   {   return pNode;  }  pNode = pNode.parentNode;  if (!pNode)   return null; } return null;};searchshield.getParentNodeByClassName = function (className, node, maxDepth) { return searchshield.getParentNodeByAttribute("className", className, node, maxDepth);};searchshield.getParentNodeById = function (id, node, maxDepth){ return searchshield.getParentNodeByAttribute("id", id, node, maxDepth);};searchshield.getParentNodeByTagName = function (tagName, node, attrName) { // find parent node by tag name and optional attribute name if (!tagName || !node || !node.parentNode)  return null; tagName = tagName.toUpperCase(); while ((node != null) &amp;&amp; (node.nodeType != 9)) {  // if attrName is not provided just return TRUE  if (node.nodeName == tagName)  {   var nodeHasAttribute = !!attrName ? node[attrName] : true;   if (nodeHasAttribute)    return node;  }     node = node.parentNode; }  // no div return null;};searchshield.getHrefFromCiteElement = function (tag){ var rtnHtml; var tp = tag.parentNode; var tgpn = tp ? tp.parentNode : null; if (!tgpn)  return; lastChildElem = tgpn.lastChild; while ((lastChildElem != null) &amp;&amp; (lastChildElem.nodeName != 'SPAN') &amp;&amp; (lastChildElem.nodeName != 'DIV')) {  lastChildElem = lastChildElem.previousSibling; }  if (lastChildElem)  rtnHtml = lastChildElem.getElementsByTagName('cite')[0];  if (rtnHtml)  rtnHtml = rtnHtml.innerHTML;  return rtnHtml;};searchshield.getHrefFromSpanElement = function (tag){ var rtnHtml;  var tp = tag.parentNode; var tgpn = tp ? tp.parentNode : null; if (!tgpn)  return; siblingElem = tgpn.nextSibling; while ((siblingElem != null) &amp;&amp; (siblingElem.nodeName != 'SPAN') &amp;&amp; (siblingElem.className != 'site')) {  siblingElem = siblingElem.nextSibling;  if (siblingElem &amp;&amp; siblingElem.className  &amp;&amp; (siblingElem.className.match(/res[13]/)))   break; }  if (siblingElem)  rtnHtml = siblingElem.getElementsByTagName('a')[0];  if (rtnHtml)  rtnHtml = rtnHtml.innerHTML;  return rtnHtml;};searchshield.getTopLevelDocument = function (doc){ // return the top level document for the given doc, could be itself // TODO: determine a method of doing this for IE, if necessary  // don't check about:blank if (doc &amp;&amp; ((doc.location.href == "about:blank") || (doc.location.href == "about:Tabs")))  return doc; // Check if already a top level document for (var i = 0; i &lt; gBrowser.browsers.length; i++) {  if (doc == gBrowser.browsers[i].contentDocument)   return doc; } // Not a top level, check all frames  var documents; for (var j = 0; j &lt; gBrowser.browsers.length; j++) {  // get all docs for each browser  documents = searchshield.getDocuments(gBrowser.browsers[j].contentWindow, new Array());  for (var k = 0; k &lt; documents.length; k++)  {   // check if doc is from current browser   if (doc == documents[k])   {    // it is, return the top level doc for this browser    return gBrowser.browsers[j].contentDocument;   }  } }  return doc;};searchshield.getTopLevelWindow = function (){ // TODO: determine a method of doing this for IE, if necessary return mediator.getMostRecentWindow("navigator:browser");};//Event functionssearchshield.addListener = function (object, evtType, listener, useCapture){ useCapture = !!useCapture; if (object.addEventListener) {  object.addEventListener(evtType, listener, useCapture);  return true; } else if (object.attachEvent) {   object.attachEvent("on"+evtType, listener);   return true; }  return false;};searchshield.cancelEvent = function (event){ event.cancelBubble = true; event.returnValue = false;};searchshield.doEvent = function (evtObj, evtTarget, evtName, evtType, bubbles, cancelable){ bubbles  = !!bubbles; cancelable = !!cancelable;  if (document.createEvent) {  var evt = document.createEvent("Events");  evt.initEvent(evtName, bubbles, cancelable);  evtTarget.dispatchEvent(evt);  return true; } else if (document.createEventObject) {  var evt = document.createEventObject(evtObj);  evtTarget.fireEvent("on" + evtType, evt);  return true; }  return false;};searchshield.removeListener = function (object, evtType, listener, useCapture){ useCapture = !!useCapture;  if (object.removeEventListener) {  object.removeEventListener(evtType, listener, useCapture);  return true; } else if (object.detachEvent) {   object.detachEvent(evtType, listener);   return true; }  return false;};// HTML functionssearchshield.CleanupHTML = function (data){ if (data == null)  return data; // cleanup html data, replace any new lines data = data.replace(/\r/g, ""); data = data.replace(/\n/g, ""); // escape any single quotes data = data.replace(/'/g, "\\'"); return data;};searchshield.removeHtmlTags = function (str){ var re = new RegExp('(&lt;[^&gt;]+&gt;)','g'); var strStr = new String(str); if (!!strStr)  return strStr.replace(re, ''); else  return str; };// Browser functionssearchshield.elementSize = function (element){ //returns an array [sizeX, sizeY]  var elemX; var elemY;  elemX = parseInt(element.offsetWidth); elemY = parseInt(element.offsetHeight)  return [elemX, elemY];};searchshield.GetFullBoundingRect = function (element){ if (!element) return; // get bounding rect for incoming element var elementRect = element.getBoundingClientRect(); var nextImg = null; var nextImgRect = null; // first check for another non-TextNode element after this one var siblingElement = searchshield.NextSiblingNode(element); if ( siblingElement &amp;&amp;   siblingElement.firstChild &amp;&amp;   siblingElement.id &amp;&amp;   siblingElement.id.indexOf("XPLSS_") != -1) {  nextImg = siblingElement.firstChild;    nextImgRect = nextImg.getBoundingClientRect();  } else {  return elementRect; }  if ((nextImgRect.top &gt;= elementRect.bottom) &amp;&amp;   (nextImgRect.left &lt;= elementRect.left)) { // images appear to be on seperate lines  return elementRect; } // else merge the rects together into a new one var newRect = new function() { this.top=0; this.left=0; this.right=0; this.bottom=0; this.mid=0;}; newRect.top = Math.min(elementRect.top, nextImgRect.top); newRect.left= Math.min(elementRect.left, nextImgRect.left); newRect.right=Math.max(elementRect.right, nextImgRect.right); newRect.bottom=Math.max(elementRect.bottom, nextImgRect.bottom); newRect.mid = Math.min(elementRect.right, nextImgRect.left);  return newRect;};searchshield.offsetLeft = function (element){ var offset = 0; while (element) {  offset += element.offsetLeft;  element = element.offsetParent; } return offset;};searchshield.offsetTop = function (element){ var offset = 0; while (element) {  offset += element.offsetTop;   element = element.offsetParent; } return offset;};searchshield.scrollSize = function (imageElem){ // returns an array [scrollX, scrollY, hasParentFrame] var scrollX; var scrollY; var hasParentFrame;  // firefox if (window.pageXOffset &amp;&amp; window.pageYOffset) {  scrollX = window.pageXOffset;  scrollY = window.pageYOffset; } else if (document.documentElement || document.body) {  scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;  scrollY = document.documentElement.scrollTop || document.body.scrollTop;  if (imageElem)  {   var frames = document.frames;   if (frames)   {    for (var i=0; i &lt; frames.length; i++)    {     var img;     try {      img = frames[i].document.getElementById(imageElem.id);     }     catch(domErr){}     if (img != null)     {      scrollX = frames[i].document.documentElement.scrollLeft;      scrollY = frames[i].document.documentElement.scrollTop;      hasParentFrame = true;      break;     }    }   }  } } else {  scrollX = 0;  scrollY = 0; }  return [parseInt(scrollX,10), parseInt(scrollY,10), hasParentFrame];};searchshield.viewPortSize = function (){ // returns an array [width, height, scrollYWidth], where scrollYWidth is always 0 for IE var scrollXWidth  = 19; var scrollYWidth  = 0; // 0 for Microsoft IE var scrollBarX  = false; var windowX; var windowY;  // firefox if (window.innerWidth &amp;&amp; window.innerHeight) {  //TODO: validate this block if implemented for firefox    windowX = window.innerWidth - scrollXWidth;  windowY = window.innerHeight;  try  {   scrollYWidth = Math.floor(Math.abs(window.innerHeight - document.documentElement.clientHeight)) + 1;   scrollBarX = (document.documentElement.clientWidth &lt; document.documentElement.scrollWidth);  }  catch(err){}  if (scrollBarX &amp;&amp; !scrollYWidth)   scrollYWidth = 18; //normally 17 (+1 top border)      } else if (document.documentElement || document.body)  {  windowX = (document.documentElement.clientWidth || document.body.clientWidth) - scrollXWidth;  windowY = document.documentElement.clientHeight || document.body.clientHeight; } else {  windowX = 0;  windowY = 0; } return [windowX, windowY, scrollYWidth];};searchshield.zoomLevel = function (){  var level = 1;  if (document.body.getBoundingClientRect) {   // rect is only in physical pixel size before IE8    var rect = document.body.getBoundingClientRect();   level = Math.round (((rect.right - rect.left) / (document.body.offsetWidth)) * 100) / 100;  }    return level;};// Href functionssearchshield.checkUrl = function (url){ // cleanup a url, make sure there is a protocol on the front for scanning try {  // trim  url = url.replace(/^\s+/, "").replace(/\s+$/, "");  // if no protocol, add http:// to it   if (url.indexOf("://") == -1)   url = "http://" + url; } catch(err){} return url;};searchshield.DoesURLContain = function (url, contain){ if ((url == null) || (url.length &lt; 1))  return false; // breakup the url to check var parts = url.split('/'); if (parts.length &lt; 3)  return false; var domain= parts[2].toLowerCase(); if (domain.indexOf(contain) &gt; -1)  return true; return false;};searchshield.FilterUrl = function (url, filter){ if (!url || (url.length &lt; 1))  return false;  if (!filter || !(filter instanceof Array))   return false;   var parts = url.split('/'); if ((parts == null) || (parts.length &lt; 3))  return false; var domain = parts[2]; for (var i = 0; i &lt; filter.length; i++) {  if (domain.indexOf(filter[i]) != -1)   return true; } return false;};searchshield.GetDomain = function (url){ if (url != null) {  // get url domain  var parts = url.split('/');  if ((parts != null) &amp;&amp; (parts.length &gt;= 3))  {   return parts[2].toLowerCase();  } }  return url;};searchshield.getUrlContents = function (url) { if (url == null)  return null; // don't query if local url if (url.indexOf("linkscanner://") != -1)  return null; try  {  req = new XMLHttpRequest();  req.open("GET", url, false);  req.send(null);  if (req.status == 200)   return req.responseText;  else   return null; }  catch (err) {  // nothing to do  return null; }};searchshield.parseLink = function (href, simpleMode){ var uri    = {}; var parameter = {   complex: {    pattern: /^(?:([a-z]+):(?:([a-z]*):)?\/\/)?(?:([^:@]*)(?::([^:@]*))?@)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?::(\d+))?(?:([^:\?\#]+))?(?:\?([^\#]+))?(?:\#([^\s]+))?$/i,    element: ['source','scheme','subscheme','user','pass','host','port','path','query','fragment']    },   simple: {    pattern: /^(?:([a-z]+):\/\/)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?:\/)([^:\?]+)?(?:([\?|\#])([^\?]+))?$/i,    element: ['source','scheme','host','path','delimiter','query']   }  }; var mode = simpleMode !== false ? 'simple' : 'complex'; var pattern = parameter[mode].pattern; var element = parameter[mode].element;  if (!href)  return uri; var matches = href.match(pattern);  if (matches) {  // --------------------  // iterate over the matches array and populate uri properties  // using the respective element parameter as the name.  // NOTE: set raw property type as String to make inArray()  // work properly with instanceof.  // --------------------  for (var i=0; i &lt; matches.length; i++)   uri[element[i]] = new String(matches[i] || "");    // --------------------  // create an array, hostArray, from host, for example,  // host="www.google.com" and hostArray=["www","google","com"]  // --------------------  uri.hostArray = uri.host.split(".");    // --------------------  // create an array, qsArray, from query, for example,  // query='hl=en&amp;q=javascript&amp;btnG=Search&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai='  // qsArray=[{hl:'en'},{q:javascript}, ... ,(qs_rfai:''}]  //  // $0=entire match, $1=capture 1, $2=capture 2  // must include $0 even though it is unused so  // the replace works properly  // --------------------  uri.qsArray  = searchshield.parseQuery(uri.query); }  //non-standard urls require a fail-safe that relies on simply splitting the href function splitLink(href) {  // split the href on '/'  var linkParts = href.split("/");  // need domain and path  if ((linkParts == null) || (linkParts.length &lt; 2))   return false;   var uri = {   delimiter: (linkParts[3]).substring(0,1),   host: linkParts[2],   hostArray: (linkParts[2]).split('.'),   path: (linkParts[3]).substring(1),   qsArray: [],   query: '',   scheme: (linkParts[0]).substring(0, linkParts[0].length-1),   source: href   };  return uri; } if (!uri.host)  uri = splitLink(href); return uri;};searchshield.parseQuery = function (qs){ var qsArray = []; qs.replace(/(?:^|&amp;)([^&amp;=]*)=?([^&amp;]*)/g,      function ($0, $1, $2) {      if ($1) qsArray[$1] = $2;     } );  return qsArray;};// general functionssearchshield.arrayKeys = function (array){ var keys = new Array(); for(k in array)  keys.push(k); return keys;};searchshield.inArray = function (key, array, caseSensitive, exactMatch){ if (! array instanceof Array)  return false;  if (caseSensitive !== true)  caseSensitive = false;   if (exactMatch !== false)  exactMatch = true;  if (key instanceof String) {  for (var i=0; i &lt; array.length; i++)  {   var k = caseSensitive ? key.valueOf() : key.valueOf().toLowerCase();   var a = caseSensitive ? array[i] : array[i].toLowerCase();   if(exactMatch &amp;&amp; k === a)    return true;   else if (!exactMatch &amp;&amp; (-1 !== k.indexOf(a)))    return true;  } } else if (key instanceof Array) {  for (var i=0; i &lt; array.length; i++)   for (var j=0; j &lt; key.length; j++)   {    var k = caseSensitive ? key[j] : key[j].toLowerCase();    var a = caseSensitive ? array[i] : array[i].toLowerCase();    if (exactMatch &amp;&amp; k === a)     return true;    else if (!exactMatch &amp;&amp; (-1 !== k.indexOf(a)))     return true;   } } return false;};searchshield.getClickHandlerParams = function(clickHandler){ var re = /((?:'[^']*')|[\w]*)(?:,|\))/ig; var chParams = []; clickHandler.replace(re,   function($0, $1, $2){   if ($1)    chParams.push($1);  } );  return chParams;};// general use functions - end// Search constructorsearchshield.Search = function(){ this.doc    = null; this.engine   = null; this.engines   = null; this.links    = null; this.uri    = null; this.searchHash  = null; this.checkUrl   = null; this.useLocalImgs  = null; this.clockUrl   = null; // create engine list (actually key/value object will be used) this.engineList  = {};};searchshield.Search.prototype.getSearchNames = function(){ // order is important var names =  [  'Google',  'AVGGoogle',  'AltaVista',  'AVGYahoo',  'Yahoo',  'Bing',  'MSN', // MSN redirects to BING  'Baidu',  'Earthlink',  'AOL',  'Ask',  'Yandex',  'Seznam',  'Webhledani',  'eBay',///temp  'Digg',  'Slashdot',  'Twitter',  'GMail',  'Facebook',  'MySpace' ]; return names;};searchshield.Search.prototype.detectEngine = function(href){ if (!href)  return; var aEng = searchshield.Search.prototype.getSearchNames(); var aEngLen = aEng.length; for (var i=0; i &lt; aEngLen; i++) {  if (searchshield[aEng[i] + 'SearchEngine'].prototype.validSearch(href))   return aEng[i]; } return;};searchshield.Search.prototype.addEngine = function(engine){ if (!this.engines)  this.engines = new Array();  this.engines.push(engine);};searchshield.Search.prototype.addLink = function(inElement, inHref){ if (!this.links)  this.links = new Array(); var hrefHash; try {  hrefHash = searchshield.avgCallFunc(this.doc, 'GetHash', inHref); } catch (e){} var newNode = {   element: inElement,   href:   inHref,   hash:  hrefHash,   search:  this.searchHash  };  this.links.push(newNode);  return newNode;}// process the search result page after all search engines have been addedsearchshield.Search.prototype.process = function(doc){ // only process when searchshield is enabled if (!searchshield.enabled(doc))  return;   this.doc = doc; this.href = this.doc.location.href; this.uri = searchshield.parseLink(this.href); try {  this.searchHash  = searchshield.avgCallFunc(this.doc, 'GetHash', this.href);  // get any previously active engine  this.engine  = this.engineList[this.searchHash.toString()]; } catch (e) {} /*  Process Steps: 1. Add all supported search engines 2. Identify the active search engine 3. Get all document links and add AVG images  */  // STEP 1 - Add all supported search engines if (!this.engines) {  var aEng = xplSearch.getSearchNames();  var aEngLen = aEng.length;  for (var i=0; i &lt; aEngLen; i++)  {   xplSearch.addEngine(new searchshield[aEng[i]+'SearchEngine'](this));  } }  // search the engines if we didn't find one if (!this.engine) {  // STEP 2 - Identify the active search engine  var engLen = this.engines.length;  for (var i = 0; i &lt; engLen; i++)  {   if (this.engines[i].validSearch())   {    this.engine  = this.engines[i];    break;   }  }    // create a new engine instance to store  this.engineList[this.searchHash.toString()] = this.engine;    // init this search, if &lt; 1 either an error or disabled  //var sdkInit = 0;  //try {  // sdkInit = xpl_sdk.SXPL_InitSearch(this.href);  //}  //catch(e){}  //if (sdkInit &lt; 1)  // return false; } // return immediately if there is not an active search engine if (!this.engine)  return false;  try {   // base url to check for icons  this.checkUrl  = searchshield.avgCallFunc(this.doc, 'GetIconUrl', '1');  // check if using linked or local icons  this.useLocalImgs = !searchshield.getUrlContents(this.checkUrl);  // get the clock url  this.clockUrl  = searchshield.avgCallFunc(this.doc, 'GetIconUrl', '0'); } catch(e){}   // STEP 3 - Get all document links and add AVG images var alltags = this.doc.getElementsByTagName("*"); // this method works for IE, FF and Chrome for (var i=0; i &lt; alltags.length; i++) {  // ignore verdicts  if (alltags[i].id &amp;&amp; (alltags[i].id.indexOf("LXPLSS_") != -1))   continue;   //should the link be included?  Make sure includeLink always returns an href else FALSE,  var href = this.engine.includeLink(alltags[i]);   if (!href)   continue;  var newNode = this.addLink(alltags[i], href);  this.engine.addImage(newNode, this.clockUrl, false); } return (this.links ? this.links.length : false);};////////////////    SEARCH    ////////////////////////////////    SEARCH ENGINE    ////////////////// Interface for a SearchEngine objectsearchshield.SearchEngine = function(search){ this.search = search; this.type = 'standard'; this.processFrames = false; this.new_links  = true; this.onlyPrimaries = true; this.inline = {  clockImage: "linkscanner://clock12.png",  image: [ "linkscanner://safe12.png",     "linkscanner://caution12.png",     "linkscanner://warning12.png",     "linkscanner://blocked12.png"    ],  color: {   classname: ["green","yellow","orange","red"],   border: ["#00A120", "#EAA500", "#F57301", "#D20003"],   background: ["#C3E5CA", "#FEEFAE", "#FFD3B0", "#F5D4C1"]  } }; this.filter_urls = [  "ad.doubleclick.net", "ads1.revenue.net", "aslads.ask.com",  "bluestreak.com", "clickbacktrack.net", "clickbank.net",  "clickboothlnk.com", "clickmanager.com", "clickserve.cc-dt.com",  "dartsearch.net", "clicktraxmedia.com", "clk.atdmt.com",  "dpi-digialphoto.com", "feedpoint.net", "hypertracker.com",  "jdoqocy.com", "kqzyfj.com", "m1428.ic-live.com",  "mediaplex.com", "mr.mdmngr.com", "n339.asp-cc.com",  "offeredby.net", "offerweb.com", "pinktrax.com",  "pinktrax.com", "pixel1523.everesttech.net", "qckjmp.com",  "r.rd06.com", "revenuewire.net", "s0b.bluestreak.com",  "s2.srtk.net", "servedby.advertising.com", "store.yahoo.com",  "tf8.cpcmanager.com", "thetoptracker.com", "track.searchignite.com",  "tracking.searchmarketing.com", "www.dpbolvw.net", "www.rkdms.com",  "www.yellowbookleads.com"  ]; this.shortened_urls = [  "3.ly", "bit.ly", "is.gd", "tr.im", "short.to", "tiny.cc", "tinyurl.com", "lnk.ms", "msplinks.com", "t.co", "qr.net"  ]; this.showCleanVerdicts  = true; this.showLowRiskVerdicts = true; this.showMedRiskVerdicts = true; this.VeriSignSplit   = searchshield.VERISIGN_SPLIT_NOTEST;};searchshield.SearchEngine.prototype.flyoverExists = function (doc){ return !!doc.getElementById("XPLSS_Flyover");};searchshield.SearchEngine.prototype.inlineExists = function (doc){ return !!doc.getElementById("XPLSS_InlineFlyover");};searchshield.SearchEngine.prototype.validSearch = function(href) { return false; };searchshield.SearchEngine.prototype.includeLink = function(link) { return false; };searchshield.SearchEngine.prototype.insertNodes = function(node, doc){ var element = node.element; var parentNode = node.element.parentNode; if (parentNode == null) {  // try and find element again based on the hash  element = doc.getElementById("xplid_" + node.hash);  parentNode = !!element ? element.parentNode : null; } var insertNode = !!element ? element.nextSibling : null; while ((insertNode   != null) &amp;&amp;    (insertNode.tagName != null) &amp;&amp;    (insertNode.tagName == "SPAN")) {  insertNode = insertNode.nextSibling; }  return [insertNode, parentNode];};searchshield.SearchEngine.prototype.addImage = function(node, image, hidden){ var element = node.element; var hash = node.hash; var score  = node.score; // set verdict display configuration var doc = element.ownerDocument; if (this.type != 'inline' &amp;&amp; !doc.getElementById('XPLSS_Flyover'))  searchshield.initFlyover(doc, this); // get the proper insertion point for the image var insertNodes = this.insertNodes(node, doc); var insertNode = insertNodes[0]; var parentNode = insertNodes[1]; if (!parentNode)  return; // see if we already have an image if ((insertNode  != null) &amp;&amp;   (insertNode.id != null) &amp;&amp;   (insertNode.id.indexOf("XPLSS_") &gt; -1)) {  return; } // mark search result anchor so it isn't processed repeatedly if (score == undefined)  element.setAttribute("avglschecked", hash + "S" + this.VeriSignSplit); // create a new image var img = doc.createElement('img'); img.src = image; img.id = "XPLSS_" + hash; img.style.borderStyle = "none"; img.style.margin = "0 3px";  // for IE, specify these style attributes to prevent inadvertent inheritance from parent if (img.width &amp;&amp; img.height) {  img.style.width = img.width + 'px';  img.style.height = img.height + 'px'; }  // apply custom element styles this.updateElementStyle(img, this.addImageStyle);  // create the link element  var anchor = doc.createElement("A"); anchor.setAttribute("id", "LXPLSS_" + hash); if ((hidden != null) &amp;&amp; (hidden == true)) { // hiding the parent will also hide its child nodes  anchor.style.display = "none"; }  // Default anchor styles //Over-ride possible border style with inline declaration anchor.style.borderStyle = "none"; // apply custom element styles this.updateElementStyle(anchor, this.addAnchorStyle); if (score == searchshield.SCORE_SS_VERISIGN) {  anchor.style.textDecoration = "none";  anchor.style.background = "none repeat scroll 0 0 transparent"; } // append the image to the link anchor.appendChild(img); // insert the node as either a sibling or a child if (insertNode != null)  parentNode.insertBefore(anchor, insertNode); else  parentNode.appendChild(anchor);   return anchor;};searchshield.SearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru){  var updated = false;  var frameDoc  = this.search.doc;  var docFrames = frameDoc.frames;  var frameElem;  if (docFrames &amp;&amp; this.processFrames)  {   for (var i=0; i &lt; docFrames.length; i++)   {    try {     if (docFrames[i].document.getElementById(hash))     {      frameElem = docFrames[i].frameElement;      frameDoc = docFrames[i].document;      break;     }    }     catch(err){}   }  }  while ((element = frameDoc.getElementById(hash)) != null)  {   // check configuration to determine if verdict display property   var showVerdict = true;      var nSeverity = Number(score - 1);   switch (nSeverity)   {    case searchshield.XPLCHECK_RESULT_SEV_LOW:     showVerdict = this.showLowRiskVerdicts;     break;    case searchshield.XPLCHECK_RESULT_SEV_MED:     showVerdict = this.showMedRiskVerdicts;     break;    case searchshield.XPLCHECK_RESULT_SEV_NONE:     showVerdict = this.showCleanVerdicts;     break;    default:     if (score == searchshield.SCORE_SS_VERISIGN)      showVerdict = this.showCleanVerdicts;     break;   }      // remove image if no url specified   if ((!showVerdict) || (image == null) || (image.length &lt; 1))   {    // hide the parent anchor node    element.parentNode.style.display = "none";    // mark the id as being hidden (element is the image)    element.id = element.id + "H";    updated = true;        // if not a verisign score    if (score != searchshield.SCORE_SS_VERISIGN)     continue;   }   // cleanup flyover, replace any new lines or single quotes   flyover = searchshield.CleanupHTML(flyover);   // mark the id as having been updated   element.id = element.id + "U" + score;   element.src = image;   element.attachEvent("onmouseover", function(e){avglsflyover.popup(e, hash, search, flyover)});   element.attachEvent("onmouseout", function(e){avglsflyover.hide(e)});   // check for attribute updates (elementAttribute is an associative array (i.e., object)   if (this.elementAttribute)   {    for (a in this.elementAttribute)    {     if(this.elementAttribute[a])      element.setAttribute(a, this.elementAttribute[a]);    }   }   // To dynamically reduce verdict image size if it causes its container to scroll   // when not showing alt images determine if the element containing   // the verdict image is scrolling and decrease the image size by   // the scroll amount (min size is 80% or original)   var reduceBy = 0.8;   var scrl  = 0;   if (!alt_image || this.omitAltImage || this.VeriSignSplit == searchshield.VERISIGN_SPLIT_TESTB)   {    try{     var maxLoop = 5;     var cN = element.parentNode.parentNode;  //image-&gt;anchor-&gt;containerNodes...     while (cN &amp;&amp; maxLoop--)     {      if (cN.tagName == "DIV" || cN.tagName == "SPAN")      {       // get object height depending on ie document mode       var clientHeight = (cN.clientHeight == 0 ||         (this.search.doc.documentMode &amp;&amp; this.search.doc.documentMode &lt; 8)) ?         cN.offsetHeight :         cN.clientHeight;       scrl = cN.scrollHeight - clientHeight;       break;      }      cN = cN.parentNode;     }     if (0 &lt; scrl)     {      var eH = (element.height - scrl)/element.height;      if (reduceBy &gt; eH)       eH = reduceBy;            var newDim = Math.ceil(eH*element.height);            element.height = newDim;      element.width = newDim;            element.style.height = newDim + "px";      element.style.width = newDim + "px";     }    }    catch(e){}   }   // set default style attributes   element.style.display  = "";      // if verisign icon showing move our icon up for better centering of the 2   // except for IE7 browser - it does not like this style   try {    var ieVersion = parseFloat(navigator.appVersion.split("MSIE")[1]);    if (alt_image &amp;&amp; (alt_image.length &gt; 0) &amp;&amp; ieVersion != 7)     element.style.verticalAlign = "10%";   }   catch(err){};   // apply custom element styles   this.updateElementStyle(element, this.updateImageStyle)   // update the click thru   var link = this.search.doc.getElementById("L" + hash);   if (link)   {    link.href = click_thru;    link.id = link.id + "U" + score;   }   updated = true;   // add the alternate image if supplied BUT not on avg yahoo   if ((alt_image)    &amp;&amp;     (alt_image.length &gt; 0) &amp;&amp;     (!this.omitAltImage) &amp;&amp;    (this.VeriSignSplit != searchshield.VERISIGN_SPLIT_TESTB))   {    var vhash = hash.substring(hash.indexOf("_")+1);    // create a temporary link node    var tmp_node = {      element: element.parentNode,      href:  altClick_thru,      hash:  vhash + "VU" + score,      search:  this.searchHash,      score:  score     };    var altAnchor = this.addImage(tmp_node, alt_image, false);    if (altAnchor &amp;&amp; altAnchor.firstChild)    {     altAnchor.firstChild.setAttribute("onmouseover", "");     altAnchor.href = altClick_thru;    }   }  }    if (updated != false)  {   this.resizeFrame(frameElem);   return true;  } return false;};searchshield.SearchEngine.prototype.updateElementStyle = function (element, elementStyle){ if (elementStyle) { // a NULL attribte value will unset it  for(attr in elementStyle)  {   try {    if (element.style.setAttribute)     element.style.setAttribute(attr, elementStyle[attr]);    else     element.style[attr] = elementStyle[attr];   } catch(err){}  } }};searchshield.SearchEngine.prototype.resizeFrame = function (frameElem){ // resize frame to prevent unwanted scrolling after inserting verdicts // ignore inline and non-frame engines if ((this.type == 'inline') || (!this.processFrames))  return; // ensure all required elements are available if ((frameElem == null) || (frameElem.style == null) || (frameElem.contentWindow == null))  return; // if frame is scrolling vertically then resize var frameHeight = parseInt(frameElem.style.height, 10); if (!isNaN(frameHeight) &amp;&amp; (frameHeight &lt; frameElem.contentWindow.document.body.scrollHeight))  frameElem.style.height = frameElem.contentWindow.document.body.scrollHeight + 'px'; return;};searchshield.SearchEngine.prototype.getImgElement = function (element){ // return an xpl img element associated with a given element if (element == null)  return null; // go up the parent tree looking for a header or div while ( (element.parentNode != null) &amp;&amp;    (element.tagName.charAt(0) != "H") &amp;&amp;    (element.tagName.charAt(0) != "D") &amp;&amp;   (element.tagName.charAt(0) != "T") ) {  element = element.parentNode; } // if all the way to the top, nothing if ((element.tagName == "HTML") || (element == null))  return null; // get image tags, if none we are done var imgTags = element.getElementsByTagName("IMG"); if ((imgTags == null) || (imgTags.Length &lt; 1))  return null; for (var i = 0; i &lt; imgTags.length; i++) {  if ((imgTags[i].id == null) || (imgTags[i].id.indexOf("XPLSS_") == -1))   continue;  return imgTags[i]; } // else didn't find anything return null;};searchshield.SearchEngine.prototype.setRatingsConfig = function (doc){ // get verdict configuration, need at least severity var results = searchshield.avgCallFunc(doc, 'GetRatingsConfig'); var parts = !!results ? results.split('::') : null; if (parts != null &amp;&amp; parts.length &gt;= 5) { //if set to default then get config value  if (this.showCleanVerdicts === true)   this.showCleanVerdicts  = (parseInt(parts[0]) == 1) ? true : false;     if (this.showLowRiskVerdicts === true)   this.showLowRiskVerdicts = (parseInt(parts[1]) == 1) ? true : false;    if (this.showMedRiskVerdicts === true)   this.showMedRiskVerdicts = (parseInt(parts[2]) == 1) ? true : false;     this.VeriSignSplit = (parseInt(parts[4])); }  return true;};searchshield.SearchEngine.prototype.init_inline_ratings = function (doc){ if ((doc == null) || (doc.getElementById("XPLSS_InlineFlyover")))  return; if (!searchshield.quirksMode) {  // create style for inline flyovers  var styleTag = doc.createElement("style");  styleTag.setAttribute("id","avgILFOStyle");    var headTag = doc.getElementsByTagName("head")[0];  headTag.appendChild(styleTag);  var inline_style = styleTag.styleSheet;  // stub in the base image name as the url  inline_style.addRule(".avgILFO", "background: url(linkscanner://default_inline_border_tl.png) no-repeat top left;");  inline_style.addRule(".avgILFO", "width:0px; font-size:0px; z-index:9999; visibility:hidden; position:absolute; left:-5000px;");    inline_style.addRule(".avgILFO_content", "background: url(linkscanner://default_inline_border_r.png) top right repeat-y;");  inline_style.addRule(".avgILFO_content","font-size:10px; color:black; padding:0px 10px; text-align:left; word-wrap:break-word; line-height:130%");    inline_style.addRule(".avgILFO_head", "background: url(linkscanner://default_inline_border_tr.png) no-repeat top right;");  inline_style.addRule(".avgILFO_head", "width:0px; height:5px;");  inline_style.addRule(".avgILFO_head div","height:5px;");   inline_style.addRule(".avgILFO_foot", "background: url(linkscanner://default_inline_border_bl.png) no-repeat bottom left");  inline_style.addRule(".avgILFO_foot", "height:5px;");    inline_style.addRule(".avgILFO_foot div", "background: url(linkscanner://default_inline_border_br.png) no-repeat bottom right");  inline_style.addRule(".avgILFO_foot div", "height:5px; width:0px;"); }  try {   // create the popup box  var box = doc.createElement("DIV");  if (searchshield.quirksMode)  {   box.style.visibility = "hidden";   box.style.position = "absolute";   box.style.left = "-5000px";  }  box.setAttribute("id", "XPLSS_InlineFlyover");  box.setAttribute("class", "avgILFO");  doc.body.appendChild(box);  box = null; } catch(boxErr){}};searchshield.SearchEngine.prototype.show_inline_ratings = function (doc, node, image){  var href = node.href; var anchor = node.element; if ((href == null) || (href.length &lt; 1))  return;   if (avglsinlineflyover.imageExists(anchor))  return;  // mark search result anchor so it isn't processed repeatedly anchor.setAttribute("avglschecked", "1");  // get verdict  this.display_inline(doc, anchor, href, node, false);};searchshield.SearchEngine.prototype.display_inline = function (doc, anchor, href, node, update, min_severity){ // min_severity is the lowest severity to display, so setting it to // 1 would not display safe icons  var results = searchshield.avgCallFunc(doc, 'MalsiteCheck', href); if (results == null)  return;  var parts = results.split('::');  // need at least severity if (parts == null)  return;    var nSeverity = parseInt(parts[0]);  if (!update &amp;&amp; nSeverity == searchshield.XPLCHECK_RESULT_SEV_NONE) {  var shortUrl = searchshield.FilterUrl(href, this.shortened_urls);  if (shortUrl)  { // shortened url verdicts display later   var engine = this;   anchor.attachEvent("onmouseover", function(event){avglsinlineflyover.mouseOverHandler(event, doc, engine)});   return;  } }  // severity -1 signifies sb.dat load failure if ( nSeverity == -1 )  nSeverity = searchshield.XPLCHECK_RESULT_SEV_NONE; //blacklist url var blShortUrl = false; if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_BLOCK) {  var shortUrl = searchshield.FilterUrl(href, this.shortened_urls);  if (shortUrl)   blShortUrl = true; }  // need xlated cat tag and category if (parts.length &lt; 3)  return; // check the minimum to display if ((min_severity != null) &amp;&amp; (nSeverity &lt; min_severity))  return;   if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_LOW &amp;&amp; !this.showLowRiskVerdicts) {  if (update)   this.avg_ls_inline_hide_verdict(anchor);    return; }  if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_MED &amp;&amp; !this.showMedRiskVerdicts) {  if (update)   this.avg_ls_inline_hide_verdict(anchor);    return; } if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_NONE &amp;&amp; !this.showCleanVerdicts)  {  if (update)   this.avg_ls_inline_hide_verdict(anchor);     return; } if (update)  this.update_inline_image(anchor, nSeverity, parts); else  this.add_inline_image(doc, anchor, nSeverity, parts, blShortUrl);};searchshield.SearchEngine.prototype.avg_ls_inline_hide_verdict = function (anchor){ var image = avglsinlineflyover.getImage(anchor); if (image) {  image.style.display = "none";  if (image.parentNode &amp;&amp; image.parentNode.id == "avg_ls_anch")   image.parentNode.style.display = "none"; }};searchshield.SearchEngine.prototype.update_inline_image = function (anchor, nSeverity, aRisk){ // update the image already in the page if (anchor &amp;&amp; anchor.firstChild) {  var html  = '';  var image = '';   if (aRisk != null &amp;&amp; nSeverity != null)  {   var riskCategory = aRisk[1];   var riskName  = aRisk[2];   var bgColor   = this.inline.color.background[nSeverity];   var borderColor  = this.inline.color.border[nSeverity];   image    = this.inline.image[nSeverity];   html    = avglsinlineflyover.build(riskCategory, riskName, bgColor, borderColor);  }    var imageElem = anchor.firstChild;  imageElem.src = image;    if ( html &amp;&amp; html.length &gt; 0 )  {   imageElem.setAttribute("title", "");   imageElem.attachEvent("onmouseover", function(e){avglsinlineflyover.popup(e, html, nSeverity)});   imageElem.attachEvent("onmouseout", function(e){avglsinlineflyover.hide(e)});  } }};// add the image to the pagesearchshield.SearchEngine.prototype.add_inline_image = function (doc, anchor, nSeverity, aRisk, blShortUrl){ if (anchor == null || anchor.parentNode == null)  return null; // get the proper insertion point for the image var insertNode = anchor.nextSibling; while ((insertNode   != null) &amp;&amp;    (insertNode.tagName != null) &amp;&amp;    (insertNode.tagName == "SPAN")) {  insertNode= insertNode.nextSibling; }  // see if we already have an image anchor if ((insertNode  != null) &amp;&amp;   (insertNode.id != null) &amp;&amp;   (insertNode.id == "avg_ls_anch")) {  return null; } var html  = ''; var image = this.inline.clockImage;  if (aRisk != null &amp;&amp; nSeverity != null) {  var riskCategory = aRisk[1];  var riskName  = aRisk[2];  var bgColor   = this.inline.color.background[nSeverity];  var borderColor  = this.inline.color.border[nSeverity];  image    = this.inline.image[nSeverity];  var blUrl;  if (blShortUrl)  {   var aRiskName = riskName.split(':');   var sUrl = searchshield.checkUrl(aRiskName[1]);   blUrl = {};   blUrl.riskNameLabel = aRiskName[0] + ': ';   blUrl.riskCategory = riskCategory;   blUrl.bgColor = bgColor;   blUrl.borderColor = borderColor;   blUrl.sUrl = sUrl;  }  else  {   html = avglsinlineflyover.build(riskCategory, riskName, bgColor, borderColor);  } } doc = anchor.ownerDocument; var img   = doc.createElement("img"); img.src   = image; img.setAttribute("id","avg_ls_image"); img.style.width = "12px"; img.style.height = "12px"; img.style.border = "none"; img.style.padding = "0 3px"; img.style.margin = "0";  if ((html &amp;&amp; html.length &gt; 0) || (blUrl != undefined)) {  img.setAttribute("title", "");  img.attachEvent("onmouseover", function(e){avglsinlineflyover.popup(e, html, nSeverity, blUrl)});  img.attachEvent("onmouseout", function(e){avglsinlineflyover.hide(e)}); } // create the link element  var newAnchor = doc.createElement("A"); newAnchor.setAttribute("id", "avg_ls_anch"); newAnchor.style.display = "inline-block"; newAnchor.style.background = "none repeat scroll 0 0 transparent";  newAnchor.appendChild(img); img = null; // insert the node as either a sibling or a child if (insertNode != null)  anchor.parentNode.insertBefore(newAnchor, insertNode); else  anchor.parentNode.appendChild(newAnchor);    return newAnchor;  };////////////////    SEARCH ENGINE    ///////////////////////////////    GOOGLE SEARCH ENGINE    ///////////////searchshield.GoogleSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.onlyPrimaries = false;};searchshield.GoogleSearchEngine.prototype = new searchshield.SearchEngine();searchshield.GoogleSearchEngine.prototype.constructor = searchshield.GoogleSearchEngine;searchshield.GoogleSearchEngine.prototype.name = "google"; // the name by which the search engine is known (always lowercase)searchshield.GoogleSearchEngine.prototype.validSearch = function(href) { var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host;  // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For Google the host must match: // .google.com  OR // .google.com.XX OR // .google.co.XX OR // .google.XX  where XX is a country code // one special case is www.googe.off.ai (Anguilla) // Where any subdomain can come before the top level domain if ( /(\.(?:google|mozilla)\.(?:com|(?:co|off)\.[a-z]{2}|[a-z]{2}))/i.test(domain) ) {  //check the path  if ((path.indexOf("search?") == 0) ||   (path.indexOf("sponsoredlinks?") == 0) ||   (path.indexOf("webhp?") == 0) ||   (path.indexOf("webhp#") == 0) ||   (path.indexOf("#q=") == 0) ||   (path.indexOf("#hl=") == 0) ||   (path.indexOf("#sclient=") == 0))  {   return true;  } } return false;};searchshield.GoogleSearchEngine.prototype.includeLink = function(tag){ var href = ""; var outHref = false; var findStr = ""; // check for interstitials if (searchshield.DoesURLContain(tag.href, this.search.uri.host)) {  findStr = this.search.uri.host + "/interstitial?";  if (tag.className == "l" &amp;&amp; tag.href)  {   if (tag.href.indexOf(findStr) != -1)   {    findStr = "?url=";    var pos = tag.href.indexOf(findStr);    if (pos !== -1)    {     pos += 5;     outHref = tag.href.substring(pos);     if (searchshield.FilterUrl(outHref, this.filter_urls))      return false;            return outHref;    }   }  }  if (tag.className == "sla")  {   findStr = "/url?q=";   urlPos = tag.href.indexOf(findStr);   if (urlPos != -1)   {    urlPos += 7;    outHref = tag.href.substring(urlPos);    return outHref;   }  }    // if an ad id  if ((tag.id.indexOf("pa") == 0) || (tag.id.indexOf("an") == 0) ||   (tag.className == "resultLink"))  {   var urlPos = -1;    // ads now need unescaping   href = unescape(tag.href);   findStr= "/url?sa=";   if (href.indexOf(findStr) != -1)   { // first kind, locate real url    findStr= "&amp;q=http";    urlPos = href.indexOf(findStr);    if (urlPos != -1)     urlPos += 3; // puts it on the http   }   if (urlPos == -1)   {    findStr = "/pagead/iclk?sa=";    if (href.indexOf(findStr) != -1)    { // second kind, locate real url     findStr = "&amp;adurl=http";     urlPos = href.indexOf(findStr);     if (urlPos != -1)      urlPos += 7; // puts it on the http    }   }   if (urlPos == -1)   {    if (href.indexOf("/aclk?sa=") != -1)    { // third kind     urlPos = href.indexOf("&amp;q=http");     if (urlPos != -1)      urlPos += 3; // puts it on the http     else     {      urlPos  = href.indexOf("&amp;lp=http");      if (urlPos != -1)       urlPos += 4;      else      {       findStr = "&amp;adurl=http";       urlPos = href.indexOf(findStr);       if (urlPos != -1)        urlPos += 7; // puts it on the http      }           }    }   }   if (urlPos == -1)   {    if (href.indexOf("/url?cad=") != -1)    { // fourth kind     urlPos = href.indexOf("&amp;q=http");     if (urlPos != -1)      urlPos += 3; // puts it on the http    }   }   if (urlPos != -1)   {    outHref = href.substring(urlPos);    // the destination url is in the href string of this redirector    if (outHref.indexOf('xg4ken.com') &gt; -1)    {     urlPos = (unescape(outHref)).indexOf('url[]=') + 6;     var destUrl = (unescape(outHref)).substring(urlPos);     if (searchshield.FilterUrl(destUrl, this.filter_urls))     {      var destUrl = searchshield.getHrefFromCiteElement(tag);      if (destUrl)       return searchshield.checkUrl(searchshield.removeHtmlTags(destUrl));      return false;     }     return destUrl;    }    // filtered url but can get destination from href string    if (outHref.indexOf('altfarm.mediaplex.com') &gt; -1)    {     var tmpoh = unescape(outHref);     var destUrl = tmpoh.substring(tmpoh.indexOf('DURL=')+5);     if (destUrl != null)     {      var destUrl = unescape(destUrl);      return destUrl;     }    }    // extract any fragment text, shouldn't be unescaped    var pound = outHref.indexOf("#");     if (pound != -1)    {     var fragment = outHref.substring(pound);     outHref = outHref.substring(0, pound);     outHref = unescape(outHref);     outHref += fragment;     if (searchshield.FilterUrl(outHref, this.filter_urls))      return false;     return outHref;    }    outHref = unescape(outHref);    if (outHref.indexOf("?") == -1)    {     var ampPos = outHref.indexOf("&amp;");     if (ampPos != -1)      outHref = outHref.substring(0, ampPos);    }        if (searchshield.FilterUrl(outHref, this.filter_urls))    {     var destUrl = searchshield.getHrefFromCiteElement(tag);     if (destUrl)      return searchshield.checkUrl(searchshield.removeHtmlTags(destUrl));     return false;    }    return outHref;   }  }  // recommended link - use following to see one  // http://www.google.cz/search?hl=cs&amp;q=warey&amp;btnG=Hledat&amp;lr=lang_cs  // elem parent class = r  // href must contain - url? and q=http  var parentNode = tag.parentNode;  if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == "r"))  {   href = tag.href;   if (href &amp;&amp; (href.indexOf("/url?") != -1))   {    // locate the real url    var urlPos = href.indexOf("q=http");    if (urlPos != -1)    {     urlPos += 2;     outHref = href.substring(urlPos);     // include entire param up to '&amp;'     var ampPos = outHref.indexOf("&amp;");     if (ampPos != -1)      outHref = outHref.substring(0, ampPos);     return outHref;    }   }  } } // no link to self else if (tag.className &amp;&amp; (tag.className.charAt(0) == "l" || tag.className == "sla")) {  // check for any images on the link  if (0 === tag.getElementsByTagName("IMG").length)   return tag.href; } // special case for ie6 results else if (searchshield.docMode == 6 || searchshield.docMode == 7) {  var parentNodeClass = tag.parentNode ? tag.parentNode.className : '';  if ((tag.className == '') &amp;&amp; (parentNodeClass == 'r'))  {   return tag.href;  } } // else nothing return false;};///////////////    GOOGLE    //////////////////////////////    AVG GOOGLE SEARCH ENGINE    ///////////////searchshield.AVGGoogleSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.onlyPrimaries = false;};searchshield.AVGGoogleSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AVGGoogleSearchEngine.prototype.constructor = searchshield.AVGGoogleSearchEngine;searchshield.AVGGoogleSearchEngine.prototype.name = "avggoogle"; // the name by which the search engine is known (always lowercase)searchshield.AVGGoogleSearchEngine.prototype.validSearch = function(href) { var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var domain  = uri.host;  // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; if  (domain.indexOf("search.avg.com") &gt; -1) {   // ads link back to google  return true; }  return false;};searchshield.AVGGoogleSearchEngine.prototype.includeLink = function(tag){ var outHref = false; var findStr = ""; // check for interstitials if (searchshield.DoesURLContain(tag.href, "google.com")) {  // link back to self - DIV elem GrandParent class of res1 or res3 is Sponsored Link   var parentNode = tag.parentNode;  if (parentNode)  {   var grandParentNode = tag.parentNode.parentNode;   if (grandParentNode)   {    if ((grandParentNode.tagName == "DIV") &amp;&amp;      ((grandParentNode.className.toLowerCase() == "res1") ||     (grandParentNode.className.toLowerCase() == "res3")))    {     var urlPos = -1;      // ads now need unescaping     href = unescape(tag.href);     if (urlPos == -1)     {      if (href.indexOf("/aclk?sa=") != -1)      {        findStr = "&amp;adurl=http";       urlPos = href.indexOf(findStr);       if (urlPos != -1)        urlPos += 7; // puts it on the http              }     }     if (urlPos != -1)     {      outHref = href.substring(urlPos);      // the destination url is in the href string of this redirector      if (outHref.indexOf('xg4ken.com') &gt; -1)      {       urlPos = (unescape(outHref)).indexOf('url[]=') + 6;       var destUrl = (unescape(outHref)).substring(urlPos);       if (searchshield.FilterUrl(destUrl, this.filter_urls))       {        var destUrl = searchshield.getHrefFromCiteElement(tag);        if (destUrl)         return searchshield.checkUrl(searchshield.removeHtmlTags(destUrl));        return false;       }       return destUrl;      }      // filtered url but can get destination from href string      if (outHref.indexOf('altfarm.mediaplex.com') &gt; -1)      {       var tmpoh = unescape(outHref);       var destUrl = tmpoh.substring(tmpoh.indexOf('DURL=')+5);       if (destUrl != null)       {        var destUrl = unescape(destUrl);        return destUrl;       }      }          // extract any fragment text, shouldn't be unescaped      var pound = outHref.indexOf("#");       if (pound != -1)      {       var fragment = outHref.substring(pound);       outHref = outHref.substring(0, pound);       outHref = unescape(outHref);       outHref += fragment;       if (searchshield.FilterUrl(outHref, this.filter_urls))        return false;       return outHref;      }      outHref = unescape(outHref);      if (outHref.indexOf("?") == -1)      {       var ampPos = outHref.indexOf("&amp;");       if (ampPos != -1)        outHref = outHref.substring(0, ampPos);      }          if (searchshield.FilterUrl(outHref, this.filter_urls))      {       var destUrl = searchshield.getHrefFromCiteElement(tag);       if (destUrl)        return searchshield.checkUrl(searchshield.removeHtmlTags(destUrl));       return false;      }      return outHref;     }    }   }  } }    // no link to self else {  var parentNode = tag.parentNode;  if (parentNode)  {   var grandParentNode = tag.parentNode.parentNode;   if (grandParentNode)   {    if ((grandParentNode.tagName == "DIV") &amp;&amp;      (grandParentNode.className.toLowerCase() == "res2"))    {     // check for any images on the link     if (0 === tag.getElementsByTagName("IMG").length)      return tag.href;    }   }  } } // else nothing return false;}///////////////    AVG GOOGLE    //////////////////////////////    YAHOO SEARCH ENGINE    ///////////////searchshield.YahooSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false;};searchshield.YahooSearchEngine.prototype = new searchshield.SearchEngine();searchshield.YahooSearchEngine.prototype.constructor = searchshield.YahooSearchEngine;searchshield.YahooSearchEngine.prototype.name = "yahoo";searchshield.YahooSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For Yahoo the host must match: // search.yahoo.com  OR // xx.search.yahoo.com where xx is the country code OR // search.yahoo.co.jp OR // for Yahoo China: one.cn.yahoo.com, search.cn.yahoo.com or www.yahoo.cn if ((domain.match(/search\.yahoo\.co(?:m|\.jp)/i) ||  domain.match(/(?:search|one)\.cn\.yahoo\.com/i) ||  domain.match(/www\.yahoo\.cn/i)) &amp;&amp;   path.match(/^(?:search[;?]|s\?)/i)) {  return true; } return false;};searchshield.YahooSearchEngine.prototype.includeLink = function(tag){ var href  = ""; var outHref  = ""; var findStr  = ""; // yahoo likes to encode the url href = unescape(tag.href); if ((tag.className.indexOf("yschttl") != -1) ||   (tag.className.indexOf("spt") != -1)) {  var da = href.indexOf("**");  var ad = href.indexOf("*-");  if (da != -1)   outHref = href.substring(da+2);  else if (ad != -1)   outHref = href.substring(ad+2);  else   outHref = href ;     if (outHref.toLowerCase().indexOf("overture.") !== -1)   return false; } else if ((tag.tagName)   &amp;&amp;     (tag.tagName === "A")  &amp;&amp;     (!tag.className)) {  var tagParent = tag.parentNode;    // if anchor without className then search parentNodes  if ((tagParent) &amp;&amp;   (tagParent.tagName !== "EM") &amp;&amp;   (searchshield.getParentNodeByClassName("yst-web", tag, 4)))  {   // China Yahoo support   outHref = href;  }    else if ((tagParent) &amp;&amp;    (tagParent.tagName === "H3") &amp;&amp;    (!!searchshield.getParentNodeById("WS2m",tag, 5)))  {   // Japan Yahoo support   var da = href.indexOf("**");   if (da == -1)    outHref = href;   else    outHref = href.substring(da+2);  }  else if ((tagParent) &amp;&amp;    (tagParent.className !== "c") &amp;&amp;    (tagParent.parentNode.id !== "fpn") &amp;&amp;    (!!searchshield.getParentNodeByClassName("ymc", tag, 7)))  {   // Korea Yahoo support - when not caught by yschttl   var da = href.indexOf("**");   if (da !== -1)    outHref = href.substring(da+2);  } } else if (!this.onlyPrimaries) {  findStr = "&amp;yargs=";  var yargs = href.indexOf(findStr);  if (yargs != -1)  {   outHref = href.substring(yargs+findStr.length);   // check for prefix   if (outHref.indexOf("://") == -1)    outHref = "http://" + outHref;   // if inside an &lt;i&gt;, probably a paypal link, don't include   if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == "I"))    return false;  }  } // filter domains // split the url based on '/' var parts = !!outHref ? outHref.split('/') : null; // Filter out domains that match any of the search engine's names if (!parts || !parts[2])  return false;   var domain = parts[2]; if ((domain.indexOf("rdrjp.yahoo.com") != -1) ||  (domain.indexOf("rdrkrs.yahoo.com") != -1) ||  (domain.indexOf("rdrtpe.yahoo.com") != -1) ||  (domain.indexOf("rdrird.yahoo.com") != -1) ||  (domain.indexOf("rdrhk2.yahoo.com") != -1) ||  (domain.indexOf("rdrsg1.yahoo.com") != -1) ||  (domain.indexOf("rdrin2.yahoo.com") != -1) ||  (domain.indexOf("rdre1.yahoo.com") != -1) ||  (domain.indexOf("rdrw1.yahoo.com") != -1)  ) {  return false; } // set for yahoo to get parent node for image insertion var hash = searchshield.avgCallFunc(this.doc, 'GetHash', outHref); tag.setAttribute("id", "xplid_" + hash); return outHref;};///////////////    YAHOO SEARCH ENGINE    //////////////////////////////    AVG YAHOO SEARCH ENGINE    ///////////////searchshield.AVGYahooSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.omitAltImage = true; this.updateImageStyle = {  verticalAlign: null };};searchshield.AVGYahooSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AVGYahooSearchEngine.prototype.constructor = searchshield.AVGYahooSearchEngine;searchshield.AVGYahooSearchEngine.prototype.name = "avgyahoo";searchshield.AVGYahooSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; //path may be 'avg/search' or 'search' var pathArray = uri.path.split("/"); var avg = pathArray[0]; // re stitch the uri path and query elements // to use existing logic var path = (undefined == pathArray[1]) ? pathArray[0] : pathArray[1];  path += uri.delimiter + uri.query; // For AVG Yahoo classic the host must match: // yhs.search.yahoo.com OR // .yhs.search.yahoo.com if (domain.indexOf("yhs.search.yahoo.co") != -1) {  if ((avg == "avg") &amp;&amp;   ((path.indexOf("search?") == 0) ||    (path.indexOf("search;") == 0)))  {   return true;  } }  // also support new metro version which DOESN'T  // contain /avg so avg split part is path // valid domains are: // search.yahoo.com,  // xx.search.yahoo.com and // search.yahoo.co.xx if (domain.indexOf("search.yahoo.co") != -1)  {  // path (split avg) must start with search and  // contain the avg toolbar parameter  if (((path.indexOf("search?") == 0) ||   (path.indexOf("search;") == 0)) &amp;&amp;   (path.indexOf("fr=yhs-avg") != -1))  {   return true;  } } return false;};searchshield.AVGYahooSearchEngine.prototype.includeLink = function(tag){ var href  = ""; var outHref  = ""; var findStr  = ""; if (this.search.doc.body.className.toLowerCase() != "standard") { // handle as std Yahoo results page  return searchshield.YahooSearchEngine.prototype.includeLink(tag); }  // yahoo likes to encode the url href = unescape(tag.href); if (tag.target == "_top") {  var da = href.indexOf("**");  if (da != -1)   outHref = href.substring(da+2);  else   outHref = href ;  if (outHref.toLowerCase().indexOf("overture.") !== -1)   return false; } else if (!this.onlyPrimaries) {  findStr = "&amp;yargs=";  var yargs = href.indexOf(findStr);  if (yargs != -1)  {   outHref = href.substring(yargs+findStr.length);   // check for prefix   if (outHref.indexOf("://") == -1)    outHref = "http://" + outHref;   // if inside an &lt;i&gt;, probably a paypal link, don't include   if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == "I"))    return false;  }  } // filter domains // split the url based on '/' var parts = outHref.split('/'); // Filter out domains that match any of the search engine's names if (!parts[2])  return false;   var domain = parts[2]; if ((domain.indexOf("rdrjp.yahoo.com") != -1) ||  (domain.indexOf("rdrkrs.yahoo.com") != -1) ||  (domain.indexOf("rdrtpe.yahoo.com") != -1) ||  (domain.indexOf("rdrird.yahoo.com") != -1) ||  (domain.indexOf("rdrhk2.yahoo.com") != -1) ||  (domain.indexOf("rdrsg1.yahoo.com") != -1) ||  (domain.indexOf("rdrin2.yahoo.com") != -1) ||  (domain.indexOf("rdre1.yahoo.com") != -1) ||  (domain.indexOf("rdrw1.yahoo.com") != -1)  ) {  return false; } return outHref;};///////////////    AVG YAHOO SEARCH ENGINE    //////////////////////////////    MSN SEARCH ENGINE    ///////////////searchshield.MSNSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.onlyPrimaries = false;};searchshield.MSNSearchEngine.prototype = new searchshield.SearchEngine();searchshield.MSNSearchEngine.prototype.constructor = searchshield.MSNSearchEngine;searchshield.MSNSearchEngine.prototype.name = "msn";searchshield.MSNSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For MSN the host must match: // search.msn.com  OR // search.live.com if (domain.indexOf("search.msn.co") &gt; -1) {  if (domain.charAt(13) == 'm')   hostMatch = true;  else if ((domain.charAt(13) == '.') &amp;&amp; (domain.length == 16))   hostMatch = true; } else if (domain.indexOf("search.live.co") &gt; -1) {  if (domain.charAt(14) == 'm')   hostMatch = true;  else if ((domain.charAt(14) == '.') &amp;&amp; (domain.length == 17))   hostMatch = true; }  if (hostMatch) {  if (path.indexOf("results.aspx") == 0)   return true; } return false;};searchshield.MSNSearchEngine.prototype.includeLink = function(tag){ var outHref = false;  // these don't seem common from Firefox, but they are in IE if (searchshield.DoesURLContain(tag.href, "g.msn.co")) {  var qPos = tag.href.indexOf("?");  if (qPos != -1)  {   var postPart = tag.href.substring(qPos+1);   var dblAmp = postPart.indexOf("&amp;&amp;");   if (dblAmp != -1)   {    outHref = postPart.substring(0, dblAmp);    return outHref;   }  } } else if (searchshield.DoesURLContain(tag.href, "r.msn.co")) {  var element = tag;  var parentNode = tag.parentNode;  // top links - check for a CITE  var spanElements = element.getElementsByTagName("CITE");  if ((spanElements != null)    &amp;&amp;    (spanElements.length &gt; 0))  {   outHref = spanElements[0].innerHTML;   // replace any nbsp's   outHref = outHref.replace("&amp;nbsp;", " ");   // url is after the last space in the html, after the '-'   var space_pos = outHref.lastIndexOf(" ");   if (space_pos != -1)    outHref = outHref.slice(space_pos + 1);   outHref = searchshield.checkUrl(outHref);   return outHref;  }    // side links   if (element.lastChild != null)  {   outHref = element.lastChild.innerHTML;   if ( outHref != null)   {    outHref = searchshield.checkUrl(outHref);    return outHref;   }  } } else if (searchshield.DoesURLContain(tag.href, this.search.uri.host)     ||    searchshield.DoesURLContain(tag.href, ".live.com")     ||    searchshield.DoesURLContain(tag.href, "msn.")      ||    searchshield.DoesURLContain(tag.href, "msnscache.com")    ||    searchshield.DoesURLContain(tag.href, "advertising.microsoft.co") ||    searchshield.DoesURLContain(tag.href, "javascript:")    ||    searchshield.DoesURLContain(tag.href, "go.microsoft.co")   ||    searchshield.DoesURLContain(tag.href, "hotmail.co")) {  // not a link  return false; } else if (tag.id.toLowerCase() == "trademarks") {  // don't link the trademark at the bottom of the page  return false; } else {  // include it  return tag.href; }};///////////////    MSN SEARCH ENGINE    //////////////////////////////    BING SEARCH ENGINE    ///////////////searchshield.BingSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.BingSearchEngine.prototype = new searchshield.SearchEngine();searchshield.BingSearchEngine.prototype.constructor = searchshield.BingSearchEngine;searchshield.BingSearchEngine.prototype.name = "bing";searchshield.BingSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query;  // For bing the host must match: // www.bing.com or www.bing.net // xx.bing.com or xx.bing.net where xx is a country code // bing.com.xx where xx is a country code // bing.search.xxxx.net where xxxx may be something like daum if ((domain.indexOf("www.bing.com") !== -1) ||  (domain.indexOf("www.bing.net") !== -1) ||  (domain.indexOf("bing.net") !== -1)) {  hostMatch = true; } else if ((domain.indexOf("bing.search.") !== -1) &amp;&amp;     (domain.indexOf(".net") === (domain.length-4)))  { //bing.search.xxxx.net  hostMatch = true; } else { // xx.bing.com or bing.com.xx  var domainLen = domain.length;  var tldPos = domain.indexOf(".bing.com");  if (tldPos &gt; -1)  {   if ((domainLen - tldPos) == 9)    hostMatch = true;  }  }  if (hostMatch) {  var displayStyle = (domain == 'bing.search.daum.net') ? 'inline-block' : 'inline';  this.addAnchorStyle = {   display: displayStyle  };    if (path.indexOf("search?") == 0)   return true; } return false;};searchshield.BingSearchEngine.prototype.includeLink = function(tag){ var outHref = false; if (tag.tagName == 'IMG') { //no images   return false; }   if (tag.href.charAt(0) == '/') { //no relative links  return false; } if (/trademarks/i.test(tag.id)) {  // don't link the trademark at the bottom of the page  return false; }  if ((tag.parentNode) &amp;&amp; (/sc_stc/i.test(tag.parentNode.id))) { // don't verdict the social sites - our verdict doesn't fit  return false; } else if (!!searchshield.getParentNodeByClassName("sw_t",tag,3)) { // no links in page header  return false; } else if (searchshield.DoesURLContain(tag.href, "r.msn.co") ||    searchshield.DoesURLContain(tag.href, "overture.com")) { // france has r.msn.co and italy has overture.com sponsored links  // with the link in CITE element    var spanElements = null;    // top links - check for a CITE  spanElements = tag.getElementsByTagName("CITE");  if ((spanElements == null) || (spanElements.length &lt;= 0))  {   if (tag.parentNode &amp;&amp; tag.parentNode.parentNode)    spanElements = tag.parentNode.parentNode.getElementsByTagName("CITE");  }    if ((spanElements != null) &amp;&amp; (spanElements.length &gt; 0))  {   outHref = spanElements[0].innerHTML;   if (outHref != null)   {    // replace any nbsp's    outHref = outHref.replace("&amp;nbsp;", " ");    // url is after the last space in the html, after the '-'    var space_pos = outHref.lastIndexOf(" ");    if (space_pos != -1)     outHref = outHref.slice(space_pos + 1);    outHref = searchshield.checkUrl(outHref);    // save the link    return outHref;   }  }    // side links   if (tag.lastChild != null)  {   outHref = tag.lastChild.innerHTML;   if (outHref != null)   {    outHref = searchshield.checkUrl(outHref);    // save the link    return outHref;   }  } } // no sponsored links for now  else if (searchshield.DoesURLContain(tag.href, this.search.uri.host) ||   searchshield.DoesURLContain(tag.href, ".live.com")    ||   searchshield.DoesURLContain(tag.href, ".bing.com")    ||   searchshield.DoesURLContain(tag.href, ".bing.net")    ||   searchshield.DoesURLContain(tag.href, ".daum.net")    ||   searchshield.DoesURLContain(tag.href, ".gmarket.co")   ||   searchshield.DoesURLContain(tag.href, ".multimap.com")   ||   searchshield.DoesURLContain(tag.href, "msn.")     ||   searchshield.DoesURLContain(tag.href, "ms.ciao.")    ||   searchshield.DoesURLContain(tag.href, "ms.ciao-")    ||   searchshield.DoesURLContain(tag.href, "advertising.microsoft.co") ||   searchshield.DoesURLContain(tag.href, "javascript:")    ||   searchshield.DoesURLContain(tag.href, "go.microsoft.co")   ||   searchshield.DoesURLContain(tag.href, "hotmail.co")     ||   searchshield.DoesURLContain(tag.href, "cc.bingj.com")    ||   searchshield.DoesURLContain(tag.href, "microsofttranslator.com") ||   searchshield.DoesURLContain(tag.href, ".engkoo.com")    ||   searchshield.DoesURLContain(tag.href, "sealinfo.verisign.com")  ||   searchshield.DoesURLContain(tag.href, "explabs.com")    ||   searchshield.DoesURLContain(tag.href, "onlinehelp.microsoft.com") ||   searchshield.DoesURLContain(tag.href, ".myoverture")) {  // not a link  return false; } else  return tag.href;};searchshield.BingSearchEngine.prototype.addImage = function(node, image, hidden){ var element = node.element; var parentNode  = node.element.parentNode; var grandParentNode = !!parentNode ? parentNode.parentNode : null; // if there are redundant links in the same grandparent then skip them if (!!grandParentNode) {  gpChildren = grandParentNode.childNodes;  for (var i=0; i &lt; gpChildren.length; i++)  {   if (!!element.href &amp;&amp; gpChildren[i].tagName == "A" &amp;&amp; gpChildren[i].href == element.href)    return;  } } var parent = searchshield.SearchEngine.prototype.addImage; return parent.call(this, node, image, hidden);};///////////////    BING SEARCH ENGINE    //////////////////////////////    BAIDU SEARCH ENGINE    ///////////////searchshield.BaiduSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.updateImageStyle = {  verticalAlign: null };};searchshield.BaiduSearchEngine.prototype = new searchshield.SearchEngine();searchshield.BaiduSearchEngine.prototype.constructor = searchshield.BaiduSearchEngine;searchshield.BaiduSearchEngine.prototype.name = "baidu";searchshield.BaiduSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query;  if (domain == "www.baidu.com" || path.indexOf("testBaidu") !== -1)  hostMatch = true;   if (hostMatch) {  if (path.indexOf("s?") == 0)   return true; } return false;};searchshield.BaiduSearchEngine.prototype.includeLink = function(tag){    if (tag.className &amp;&amp; tag.className == "m")   return false;  if (searchshield.DoesURLContain(tag.href, this.search.uri.host))   return false;  else   {   // no link to self   var traverseElement = tag.parentNode;   while ( traverseElement &amp;&amp; traverseElement.className != "tbody")   {    if (traverseElement.className == "f")     return tag.href;    traverseElement = traverseElement.parentNode;   }      return false;  }};///////////////    BAIDU SEARCH ENGINE    //////////////////////////////    EARTHLINK SEARCH ENGINE    ///////////////searchshield.EarthlinkSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.onlyPrimaries = false; this.addAnchorStyle = {  position: "static" };};searchshield.EarthlinkSearchEngine.prototype = new searchshield.SearchEngine();searchshield.EarthlinkSearchEngine.prototype.constructor = searchshield.EarthlinkSearchEngine;searchshield.EarthlinkSearchEngine.prototype.name = "earthlink";searchshield.EarthlinkSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For EarthLink the host must match: // search.earthlink.net if (("search.earthlink.net" == domain) &amp;&amp;  (path.indexOf("search?") == 0)) {  return true; } return false;};searchshield.EarthlinkSearchEngine.prototype.includeLink = function(tag){ var outHref = ""; var findStr = ""; // check for an anchor if (tag.tagName == "A") {  // check for sponsored  if (tag.id.indexOf("a") == 0)  {   var q = tag.href.indexOf("&amp;q=");   var qlen = 3;   if (q == -1)   {    q = tag.href.indexOf("&amp;adurl=");    qlen = 7;    if (q == -1)     return false;   }   // find end of url   var end = tag.href.indexOf("&amp;", q+qlen);   if (end &lt; 0)    end = tag.href.length;   // add the link   outHref = tag.href.substring(q+qlen, end);      if (searchshield.FilterUrl(outHref, this.filter_urls))    return false;       return outHref;  }  // don't search url's to self  if ((tag.href.indexOf("://") == -1) || searchshield.DoesURLContain(tag.href, this.search.uri.host))   return false;  // if a normal web result add it  if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == "H3") &amp;&amp;   tag.parentNode.parentNode &amp;&amp; (tag.parentNode.parentNode.tagName == "LI") &amp;&amp;   tag.parentNode.parentNode.parentNode &amp;&amp; (tag.parentNode.parentNode.parentNode.tagName == "UL"))  {   if (searchshield.FilterUrl(tag.href, this.filter_urls))    return false;       return tag.href;  } }  return false;};///////////////    EARTHLINK SEARCH ENGINE    //////////////////////////////    AOL SEARCH ENGINE    ///////////////searchshield.AOLSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);  this.addImageStyle = {  display: "inline" }; this.addAnchorStyle = {  display: null }; this.updateImageStyle = {  verticalAlign: null,  display: "inline" };};searchshield.AOLSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AOLSearchEngine.prototype.constructor = searchshield.AOLSearchEngine;searchshield.AOLSearchEngine.prototype.name = "aol";searchshield.AOLSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain = uri.host; //path may be 'aol/search' or 'search' var pathArray = uri.path.split("/"); var aol = pathArray[0]; // re stitch the uri path and query elements // to use existing logic var path = (undefined == pathArray[1]) ? pathArray[0] : pathArray[1];  path += uri.delimiter + uri.query; if (/search\.aol\.com/.test(domain)) {  if ((aol == "aol") &amp;&amp;   (path.indexOf("search?") == 0))  {   return true;  } }  return false;};searchshield.AOLSearchEngine.prototype.includeLink = function(tag){ if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  // sponsored links - google if ((tag.className) &amp;&amp; (tag.className.indexOf("slLink topAnchor") != -1)) { //parse for embedded href  if (tag.href.indexOf("/aclk?sa=") == -1)   return false;  var adurl = tag.href.indexOf("&amp;adurl=http");  // if an adurl the destination href can be acquired from the onclick handler  if (adurl != -1)  {   var destUrl;   var clickHandler = tag.getAttribute('onclick');   if (clickHandler != null)   {    // the destination href is the 2nd parameter (zero-based array)    destUrl = searchshield.getClickHandlerParams(clickHandler)[1];    if (destUrl != null)    {     destUrl = searchshield.removeHtmlTags(destUrl.replace(/'/g,''));     return searchshield.checkUrl(destUrl);    }   }  }  return false; } if (tag.className == "find")  return tag.href;   return false;};searchshield.AOLSearchEngine.prototype.insertNodes = function(node, doc){ var element = node.element; var score = node.score; if (element &amp;&amp; element.className &amp;&amp; element.className.indexOf("slLink") != -1) { //sponsored links only  // for alt image  if (score == searchshield.SCORE_SS_VERISIGN)   return [element.nextSibling, element.parentNode];  // for verdict image  var cN = element.childNodes;  var cnLen = cN.length;  for (var i=0; i &lt; cnLen; i++)  {   if ((cN[i].nodeType == 1) &amp;&amp;     (cN[i].nodeName == 'SPAN') &amp;&amp;     ((cN[i].className == 'title') || (cN[i].className == 'durl')))    return [cN[i].nextSibling, cN[i].parentNode];  } } var parent = searchshield.SearchEngine.prototype.insertNodes; return parent.call(this, node, doc);};///////////////    AOL SEARCH ENGINE    //////////////////////////////    ASK SEARCH ENGINE    ///////////////searchshield.AskSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.AskSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AskSearchEngine.prototype.constructor = searchshield.AskSearchEngine;searchshield.AskSearchEngine.prototype.name = "ask";searchshield.AskSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query;  if ("www.ask.com" == domain) {  if (path.indexOf("web?") == 0)   return true; } return false;};searchshield.AskSearchEngine.prototype.includeLink = function(tag){ var outHref = ""; var findStr = ""; if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  if ((tag.className) &amp;&amp; (tag.className.indexOf("nu") != -1) &amp;&amp; (tag.className.indexOf("info") == -1))  {  // exclude green links  if ((tag.firstChild) &amp;&amp;   (tag.firstChild.className) &amp;&amp;   (tag.firstChild.className.indexOf('attrib') == 0))  {   return false;  }  // ads link to google with class nu  findStr = "www.google.com";  if (tag.href.indexOf(findStr) != 0)  {   if (tag.href.indexOf(findStr + "/aclk?sa=") != -1)   {     findStr = "&amp;adurl=http";    var pos = tag.href.indexOf(findStr);    if (pos != -1)    {     pos += 7;     outHref = tag.href.substring(pos);     outHref = unescape(outHref);     if (searchshield.FilterUrl(outHref, this.filter_urls))       return false;     return outHref;    }   }  }  else  { // ad not to google just use href   outHref = tag.href;   if (searchshield.FilterUrl(outHref, this.filter_urls))    return false;   return outHref;  } } // primary results have class containing title or L2 ( Wikipedia links ) else if ((tag.className) &amp;&amp; ((tag.className.indexOf("title") != -1) || (tag.className.toLowerCase() == "l2"))) {  outHref = tag.href;  if (searchshield.FilterUrl(outHref, this.filter_urls))   return false;  return outHref; }  return false;};///////////////    ASK SEARCH ENGINE    //////////////////////////////    ALTAVISTA SEARCH ENGINE    ///////////////searchshield.AltaVistaSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.AltaVistaSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AltaVistaSearchEngine.prototype.constructor = searchshield.AltaVistaSearchEngine;searchshield.AltaVistaSearchEngine.prototype.name = "altavista";searchshield.AltaVistaSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host;  // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; // www.atlavista.com ---&gt; now http://us.yhs4.search.yahoo.com/yhs/search?fr=altavista&amp;fr=altavista&amp;itag=ody&amp;q=warez&amp;kgs=1&amp;kls=0 // xx.altavista.com where xx is a country code var hostMatch = false; if ("www.altavista.com" == domain) {  hostMatch = true; } else {  // xx.altavista.com  var pDest = domain.indexOf(".altavista.com");  if ((pDest != -1 ) &amp;&amp; ((domain.length - pDest) == 14))  {   hostMatch = true;  }  else  {   // a reference to altavista must be present in yahoo search url   var pRef = (uri.qsArray.fr &amp;&amp; uri.qsArray.fr == 'altavista');   pDest = domain.indexOf("search.yahoo.com");   if (pDest != -1 &amp;&amp; pRef)    hostMatch = true;  } } if (hostMatch) {  //path must start with web/results?  if ((path.indexOf("yhs/search?") == 0) ||   (path.indexOf("search;") == 0)  ||   (path.indexOf("yhs/search;") == 0) ||   (path.indexOf("web/results?") == 0)||   (path.indexOf("fr=altavista") != -1))  {   return true;  } }  return false;};searchshield.AltaVistaSearchEngine.prototype.includeLink = function(tag){ var outHref = ""; var findStr = ""; // initial checks if ((!tag.href) ||   (tag.href.charAt(0) == '#') ||  (tag.href.indexOf("javascript:") == 0)) {  return false; }   if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  var spnsdLinks = searchshield.getParentNodeByTagName("DIV", tag, "className"); if ((spnsdLinks) &amp;&amp;  (spnsdLinks.className.indexOf('ads') &gt; -1)) // sponsored links {  if (!tag.parentNode)   return false;  // parse ads for em tag  var baseNode;  if (spnsdLinks.className.indexOf('ads horiz') &gt; -1) // horizontal ads sections   baseNode = tag.parentNode.parentNode;  else   baseNode = tag.parentNode;    if (!baseNode || !baseNode.lastChild || baseNode.lastChild.tagName != 'EM')   return false;  var outHref = searchshield.removeHtmlTags(baseNode.lastChild.innerHTML);  return outHref; }  if ((tag.className == "spt") ||   (tag.className == "res") ||  (tag.className == "yschttl spt")) {  findStr = "/**";  var pos = tag.href.indexOf(findStr);  if (pos != -1)  {   pos += 3;   outHref = tag.href.substring(pos);   outHref = unescape(outHref);      // no results for overture.com &amp; no yahoo domains   chkHref = outHref.toLowerCase();   if (chkHref.indexOf("overture.") != -1)    return false;   // split the url based on '/'   var parts = outHref.split('/');   // only need a domain   if ((parts != null) &amp;&amp; (parts[2] != null))   {    var domain = parts[2];    if ((domain.indexOf("rdrjp.yahoo.com") != -1) ||     (domain.indexOf("rdrkrs.yahoo.com") != -1) ||     (domain.indexOf("rdrtpe.yahoo.com") != -1) ||     (domain.indexOf("rdrird.yahoo.com") != -1) ||     (domain.indexOf("rdrhk2.yahoo.com") != -1) ||     (domain.indexOf("rdrsg1.yahoo.com") != -1) ||     (domain.indexOf("rdrin2.yahoo.com") != -1) ||     (domain.indexOf("rdre1.yahoo.com") != -1) ||     (domain.indexOf("rdrw1.yahoo.com") != -1)  )    {     return false    }   }   return outHref;  }  else  {   return tag.href;  } }  return false;};searchshield.AltaVistaSearchEngine.prototype.getImgElement = function (element){ while (element != null)  {  element = element.nextSibling;  if (element != null)  {   if ((element.id == null) || (element.id.indexOf("LXPLSS_") == -1))   {   // not our id but hit another anchor no verdict    if (element.tagName == "A")    {     element = null;     break;    }   }   else if (element.tagName == "A")    break;  } }   var rtnElem = !!element ? element.firstChild : element; return rtnElem;};///////////////    ALTAVISTA SEARCH ENGINE    //////////////////////////////    YANDEX SEARCH ENGINE    ///////////////searchshield.YandexSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.YandexSearchEngine.prototype = new searchshield.SearchEngine();searchshield.YandexSearchEngine.prototype.constructor = searchshield.YandexSearchEngine;searchshield.YandexSearchEngine.prototype.name = "yandex";searchshield.YandexSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.match(/yandex\.com|by|kz|ru|ua/i)) &amp;&amp;  (path.indexOf("yandsearch?") == 0)) {  return true; }  return false;};searchshield.YandexSearchEngine.prototype.includeLink = function(tag){ if (tag.href.indexOf("/search") != -1) {  return false; }  if (searchshield.DoesURLContain(tag.href, this.search.uri.host) ||  searchshield.DoesURLContain(tag.href, ".yandex.net")  ||  searchshield.DoesURLContain(tag.href, ".yandex.ru")   ||  searchshield.DoesURLContain(tag.href, "moikrug.ru")   ||  searchshield.DoesURLContain(tag.href, "ya.ru")    ||  searchshield.DoesURLContain(tag.href, ".yandex.com")  ||  searchshield.DoesURLContain(tag.href, "yandex.st")) {  return false; }   parentNode = tag.parentNode; if ((tag.parentNode)   &amp;&amp;   (tag.parentNode.parentNode) &amp;&amp;  (tag.parentNode.parentNode.className.toLowerCase() == "moreinfo")) {  return false; }  return tag.href;};searchshield.YandexSearchEngine.prototype.getImgElement = function (element){ while (element != null)  {  element = element.nextSibling;  if (element != null)  {   if ((element.id == null) || (element.id.indexOf("LXPLSS_") == -1))   {   // not our id but hit another anchor no verdict    if (element.tagName == "A")    {     element = null;     break;    }   }   else if (element.tagName == "A")    break;  } }   var rtnElem = !!element ? element.firstChild : element; return rtnElem;};///////////////    YANDEX SEARCH ENGINE    //////////////////////////////    SEZNAM SEARCH ENGINE    ///////////////searchshield.SeznamSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.elementAttribute = {  width: "18",  height: "18" }; this.updateImageStyle = {  width: "18px",  height: "18px" };};searchshield.SeznamSearchEngine.prototype = new searchshield.SearchEngine();searchshield.SeznamSearchEngine.prototype.constructor = searchshield.SeznamSearchEngine;searchshield.SeznamSearchEngine.prototype.name = "seznam";searchshield.SeznamSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("search.seznam.cz") &gt; -1) &amp;&amp;  ((path.indexOf("?") == 0) || (path.indexOf("svet") == 0))) {  return true; }  return false;};searchshield.SeznamSearchEngine.prototype.includeLink = function(tag){ if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  var parentNode = tag.parentNode; if (parentNode) {  var grandParentNode = tag.parentNode.parentNode;  if ((parentNode.tagName == "SPAN") &amp;&amp;    ((parentNode.className.toLowerCase() == "sklik-url") ||   (parentNode.className.toLowerCase() == "sklik-title")))  { // locate the real url and unencode it   var urlPos = tag.href.indexOf("&amp;url=http");   if (urlPos != -1)   {    urlPos += 5;     outHref = tag.href.substring(urlPos);    outHref = unescape(outHref);    return outHref;   }  }  else if (grandParentNode)   {   var greatGrandParentNode = tag.parentNode.parentNode.parentNode;   if ((grandParentNode.tagName == "DIV") &amp;&amp;    ((grandParentNode.className.toLowerCase() == "text") || (grandParentNode.className.toLowerCase() == "hlasky otz")))   { // standard link    return tag.href;   }   else if (greatGrandParentNode &amp;&amp; greatGrandParentNode.tagName == "DIV" &amp;&amp;     (greatGrandParentNode.className.toLowerCase() == "hotlinks"))    { // hint link    return tag.href;   }     } }  return false;};///////////////    SEZNAM SEARCH ENGINE    //////////////////////////////    WEBHLEDANI SEARCH ENGINE    ///////////////searchshield.WebhledaniSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.WebhledaniSearchEngine.prototype = new searchshield.SearchEngine();searchshield.WebhledaniSearchEngine.prototype.constructor = searchshield.WebhledaniSearchEngine;searchshield.WebhledaniSearchEngine.prototype.name = "webhledani";searchshield.WebhledaniSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("webhledani.cz") &gt; -1) &amp;&amp;  (path.indexOf("results.aspx?") == 0)) {  return true; }  return false;};searchshield.WebhledaniSearchEngine.prototype.includeLink = function(tag){ if (tag.href.indexOf("/redir.aspx?") != -1) {  var ancestorNode;  // sponsored link  if ((ancestorNode = searchshield.getParentNodeByClassName("results sponsored", tag, 3)) != null)  {   if ((ancestorNode = searchshield.getParentNodeByClassName("res1", tag, 2)) != null)   {        var spanSibling = ancestorNode.nextSibling;    while (spanSibling.nodeName != 'SPAN')    {     spanSibling = spanSibling.nextSibling;     if (spanSibling.nodeName == 'DIV' || spanSibling.className == 'res1')     {      spanSibling = null;      break;     }    }    if (spanSibling)      outHref = spanSibling.innerHTML;   }   if (outHref)    return searchshield.checkUrl(searchshield.removeHtmlTags(outHref));   }   if ((ancestorNode = searchshield.getParentNodeByClassName("right-sponsored", tag, 3)) != null)  {   var outHref;   if ((ancestorNode = searchshield.getParentNodeByClassName("res3", tag, 2)) != null)   {        var spanSibling = ancestorNode.nextSibling;    while (spanSibling.nodeName != 'SPAN')    {     spanSibling = spanSibling.nextSibling;     if (spanSibling.nodeName == 'DIV' || spanSibling.className == 'res3')     {      spanSibling = null;      break;     }    }    if (spanSibling)      outHref = spanSibling.innerHTML;   }   if (outHref)    return searchshield.checkUrl(searchshield.removeHtmlTags(outHref));   }  // result link  if (searchshield.getParentNodeByClassName("results", tag, 3) != null)  {   if ((ancestorNode = searchshield.getParentNodeByClassName("res2", tag, 2)) != null)   {    if (tag.parentNode &amp;&amp; (tag.parentNode.nodeName != 'P'))     return getLinkHref(ancestorNode);   }  } } return false; function getLinkHref(aNode) {  var spanElems = aNode.getElementsByTagName('span');  for (var i=0; i &lt; spanElems.length; i++)  {   if (spanElems[i].className != 'site')    continue;   var outAnchor = spanElems[i].getElementsByTagName('a')[0];   if (outAnchor == null)    outAnchor = spanElems[i];   return searchshield.checkUrl(searchshield.removeHtmlTags(outAnchor.innerHTML));  }  return false; }};///////////////    WEBHLEDANI SEARCH ENGINE    //////////////////////////////    EBAY SEARCH ENGINE    ///////////////searchshield.eBaySearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.eBaySearchEngine.prototype = new searchshield.SearchEngine();searchshield.eBaySearchEngine.prototype.constructor = searchshield.eBaySearchEngine;searchshield.eBaySearchEngine.prototype.name = "ebay";searchshield.eBaySearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // shop.ebay.xx // shop.xxxx.ebay.xx like shop.benl.ebay.be // search.auction.co.kr  var path = uri.path + uri.delimiter + uri.query;  if ((domain.indexOf("shop.ebay") &gt; -1) ||  (domain.indexOf("shop.benl.ebay") &gt; -1)) {  if ((path.indexOf("?_from=") == 0) ||   (path.indexOf("i.html") &gt; -1))  {   return true;  } }  // ebay.se if ((domain.indexOf("search.eim.ebay") &gt; -1) &amp;&amp;  ((path.indexOf("?kw=") &gt; -1) || (path.indexOf("?ev=") &gt; -1))) {  return true; }  if ((domain.indexOf("search.auction.co.kr") &gt; -1 ) &amp;&amp;  ((path.indexOf("?keyword=") &gt; -1))) {  // would normally set these properties in the constructor or in an  // overriding function but they're only required for this domain     // links are in iframes  this.processFrames = true;    // must downsize verdicts for proper display  this.elementAttribute = {   width: "16",   height: "16"  };  this.updateImageStyle = {   width: "16px",   height: "16px"  };    return true; } // latin america ebay // listado.mercadolibre.com.xx or listado.mercadolibre.co.xx //   or listado.mercadolibre.xx or //   category.mercadolibre.com.xx or listado.mercadolibre.xx/category // lista.mercadolivre.com.xx or lista.mercadolivre.com.xx/category if ((domain.indexOf("www.") == -1) &amp;&amp;  ((domain.indexOf(".mercadolibre.") &gt; -1 ) ||   (domain.indexOf(".mercadolivre.") &gt; -1 )))  {  return true; } return false;};searchshield.eBaySearchEngine.prototype.includeLink = function(tag){ var parentNode = null; var outHref = false;  if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  if ( tag.href.indexOf(".ebayrtm.com/clk?") &gt; -1 ) {  if ( tag.title == null || tag.title.length &lt; 0 )   return false;       outHref = searchshield.removeHtmlTags(tag.title);  if (outHref.indexOf(" ") == -1)  { // no spaces   if (outHref.indexOf(".") &gt; -1)   { // at least one dot     if (outHref.indexOf(this.search.uri.host) == -1)    { // no host     if (outHref.toLowerCase().indexOf("ebay.com") == -1)     {      return outHref;     }    }   }  }    } // ebay.se - Google ads parentNode = tag.parentNode; if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == "google-ad-link")) {  if (tag.href.indexOf("/aclk?sa=") != -1)  {    findStr = "&amp;adurl=http";   var urlPos = tag.href.indexOf(findStr);   if (urlPos != -1)   {    urlPos += 7; // puts it on the http    outHref = tag.href.substring(urlPos);        // extract any fragment text, shouldn't be unescaped    var pound = outHref.indexOf("#");     if (pound != -1)    {     var fragment = outHref.substring(pound);     outHref = outHref.substring(0, pound);     outHref = unescape(outHref);     outHref += fragment;     if (searchshield.FilterUrl(outHref, this.filter_urls))      return false;     return outHref;    }    outHref = unescape(outHref);    if (outHref.indexOf("?") == -1)    {     var ampPos = outHref.indexOf("&amp;");     if (ampPos != -1)      outHref = outHref.substring(0, ampPos);    }        if (searchshield.FilterUrl(outHref, this.filter_urls))     return false;    return outHref;   }  } }  // auction.co.kr parentNode = tag.parentNode; if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == "link")) {  if (tag.href.indexOf("adcr.naver.com") &gt; -1)  {   outHref = tag.innerText;   if ((outHref == null) || (outHref.length &lt; 0))    return false;       return outHref;  } }  // latin america ebay if ( tag.href.toLowerCase().indexOf("clickcounter?") &gt; -1 ) {  var spanElements = tag.getElementsByTagName("span");  if ((spanElements != null)    &amp;&amp;    (spanElements.length &gt; 0))  {   if ( spanElements[0].className.toLowerCase() == "mclics-url" )   {    outHref = spanElements[0].innerHTML;    if ( outHref == null || outHref.length &lt; 0 )     return false;    outHref = searchshield.removeHtmlTags(outHref);    if (outHref.indexOf(" ") == -1)    { // no spaces     if (outHref.indexOf(".") &gt; -1)     { // at least one dot       if ((outHref.toLowerCase().indexOf("mercadolibre") == -1) &amp;&amp;        (outHref.toLowerCase().indexOf("mercadolivre") == -1))       {       return outHref;      }     }    }   }  } }  return false;};///////////////    EBAY SEARCH ENGINE    //////////////////////////////    DIGG SEARCH ENGINE    ///////////////searchshield.DiggSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.new_links = false;};searchshield.DiggSearchEngine.prototype = new searchshield.SearchEngine();searchshield.DiggSearchEngine.prototype.constructor = searchshield.DiggSearchEngine;searchshield.DiggSearchEngine.prototype.name = "digg";searchshield.DiggSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query;  if ((domain.indexOf("digg.com") &gt; -1) &amp;&amp;  (path.indexOf("/ad") == -1)) {  return true; }  return false;};searchshield.DiggSearchEngine.prototype.includeLink = function(tag){ var outHref = false; var findStr = "";  if ((tag.parentNode) &amp;&amp;  (tag.parentNode.className.toLowerCase() == "digg-count")) {  return false; }  if (searchshield.DoesURLContain(tag.href, this.search.uri.host)) {  if (tag.className &amp;&amp; tag.className.indexOf('source') != -1)  {   findStr = "/search?q=site:";   var urlPos = tag.href.indexOf(findStr);   if (urlPos != -1)   {    urlPos += 15;    outHref = tag.href.substring(urlPos);    return outHref;   }  } }  return false;};searchshield.DiggSearchEngine.prototype.addImage = function(node, image, hidden){ // remove style that is set when alt image is applied this.addAnchorStyle = {  background: "none" };   var parent = searchshield.SearchEngine.prototype.addImage; return parent.call(this, node, image, hidden);};///////////////    DIGG SEARCH ENGINE    //////////////////////////////    SLASHDOT SEARCH ENGINE    ///////////////searchshield.SlashdotSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.new_links = false; this.type = 'inline';};searchshield.SlashdotSearchEngine.prototype = new searchshield.SearchEngine();searchshield.SlashdotSearchEngine.prototype.constructor = searchshield.SlashdotSearchEngine;searchshield.SlashdotSearchEngine.prototype.name = "slashdot";searchshield.SlashdotSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query;  if (domain.indexOf("slashdot.org") != -1) {  return true; }  return false;};searchshield.SlashdotSearchEngine.prototype.includeLink = function(tag){ if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;   if ( tag.href.indexOf("mailto:") != -1 )  return false;   if ( tag.href.indexOf("slashdot.org") != -1 )  return false;   if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == "DIV")) {  if (tag.parentNode.id.indexOf("text-") != -1)  {   return tag.href;  } } else if ( tag.parentNode &amp;&amp; tag.parentNode.parentNode &amp;&amp; tag.parentNode.parentNode.tagName == "DIV" ) {  if ( tag.parentNode.parentNode.id.indexOf("text-") != -1 )  {   return tag.href;  } } return false;};searchshield.SlashdotSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;  this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};///////////////    SLASHDOT SEARCH ENGINE    //////////////////////////////    TWITTER SEARCH ENGINE    ///////////////searchshield.TwitterSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.new_links = false; this.type = 'inline';};searchshield.TwitterSearchEngine.prototype = new searchshield.SearchEngine();searchshield.TwitterSearchEngine.prototype.constructor = searchshield.TwitterSearchEngine;searchshield.TwitterSearchEngine.prototype.name = "twitter";searchshield.TwitterSearchEngine.prototype.twitter_filter_urls = ["twitpic.com", "twitterfeed.com", "twitter.peoplebrowsr.com"];searchshield.TwitterSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; if (domain.indexOf("twitter.com") != -1) {  return true; }  return false;};searchshield.TwitterSearchEngine.prototype.includeLink = function(tag){ if (tag.className == 'twitter-timeline-link') {  // can't pass the tag's href if domain is t.co cause then new posts  // will not get an immediate verdict even if it has a dangerous link  if (tag.href.indexOf('/t.co/') != -1)  {   // the tag's inner text may be truncated and end in the    // unicode suspension character (i.e., ...) and it cannot    // be used.   if (tag.innerText.charCodeAt(tag.innerText.length-1) == 8230)   {    // older posts may not always have data-expanded-url    var destUrl = tag.getAttribute('data-expanded-url');    if (!!destUrl)     return destUrl;    var finalUrl = searchshield.avgCallFunc(document, 'GetFinalUrl', tag.href);    return finalUrl;   }   return searchshield.checkUrl(tag.innerText);  }  return tag.href; } return false;};searchshield.TwitterSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;   this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};///////////////    TWITTER SEARCH ENGINE    //////////////////////////////    GMAIL SEARCH ENGINE    ///////////////searchshield.GMailSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.processFrames = true; this.showCleanVerdicts  = false; this.type = 'inline';};searchshield.GMailSearchEngine.prototype = new searchshield.SearchEngine();searchshield.GMailSearchEngine.prototype.constructor = searchshield.GMailSearchEngine;searchshield.GMailSearchEngine.prototype.name = "gmail"; // the name by which the search engine is known (always lowercase)searchshield.GMailSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var domain  = uri.host;  // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("mail.google.") != -1) ||   (domain.indexOf("gmail.") != -1)) {  return true; } return false;};searchshield.GMailSearchEngine.prototype.includeLink = function(tag){ if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false; // don't mark anything but http:// if (tag.href.indexOf("mailto") == 0)  return false; var parentDiv = searchshield.getParentNodeByTagName("DIV", tag, "className"); if ((parentDiv) &amp;&amp;  ((parentDiv.className == "ii gt") || // mail message body   (parentDiv.className == "mv") || // top sponsored links   (parentDiv.className == "vb") || // right sponsored links   (parentDiv.className == "im") || // inside quotes   (parentDiv.className == "gmail_quote") || // quote   (parentDiv.className == "msg") // basic html mode   )) // right ads {  // parse for any ads  var newHref = this.parseAdUrl(tag.href);  return newHref; }  return false;};searchshield.GMailSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;   this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};searchshield.GMailSearchEngine.prototype.parseAdUrl = function(href){ if (!href)  return href; // check for google ad var regex = "^http(s)?\:\/\/([a-zA-Z0-9]+)\.googlesyndication\.com.+\&amp;adurl\=(.+)"; var re = new RegExp(regex); var matches = href.match(re); if (matches &amp;&amp; (matches.length &gt;= 4)) {  // else we want the fourth value  var match = matches[3];  if (match &amp;&amp; (match.length &gt; 0))   return match } return href;};///////////////    GMAIL SEARCH ENGINE    //////////////////////////////    FACEBOOK SEARCH ENGINE    ///////////////searchshield.FacebookSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.type = 'inline';};searchshield.FacebookSearchEngine.prototype = new searchshield.SearchEngine();searchshield.FacebookSearchEngine.prototype.constructor = searchshield.FacebookSearchEngine;searchshield.FacebookSearchEngine.prototype.name = "facebook"; // the name by which the search engine is known (always lowercase)searchshield.FacebookSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; if (uri.host.indexOf("www.facebook.com") != -1)   return true; return false;};searchshield.FacebookSearchEngine.prototype.includeLink = function(tag){ if (!tag.href || (tag.href.indexOf('facebook.com') &gt; -1) || (tag.href.indexOf('ak.fbcdn.net') &gt; -1))  return false;  return tag.href};searchshield.FacebookSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;   this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};///////////////    FACEBOOK SEARCH ENGINE    //////////////////////////////    MYSPACE SEARCH ENGINE    ///////////////searchshield.MySpaceSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.type = 'inline';};searchshield.MySpaceSearchEngine.prototype = new searchshield.SearchEngine();searchshield.MySpaceSearchEngine.prototype.constructor = searchshield.MySpaceSearchEngine;searchshield.MySpaceSearchEngine.prototype.name = "myspace"; // the name by which the search engine is known (always lowercase)searchshield.MySpaceSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; if (uri.host.indexOf("www.myspace.com") != -1)   return true; return false;};searchshield.MySpaceSearchEngine.prototype.includeLink = function(tag){ // related domains do not get verdicts if (/myspace/.test(tag.hostname) || /myspace/.test(tag.href))  return false; if (/msplinks\.com/i.test(tag.href))  return searchshield.checkUrl(tag.innerText);  return tag.href;};searchshield.MySpaceSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;   this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};///////////////    MYSPACE SEARCH ENGINE    //////////////////////////////    AVG TOOLBAR REPORTING    ///////////////var avgreport = { BLOCK_SEVERITY: 3, scanResult: function (doc, url, foundUrl, ip) {  // report scan end only if surf enabled  if ('1' != searchshield.avgCallFunc(doc, 'GetSurfEnabled'))   return;    // for now native is handling the interstitial   var results = searchshield.avgCallFunc(doc, 'MalsiteCheck', url);  if ( results == null )   return;    var parts = results.split('::');    // need at least severity  if (parts == null)   return;  if (!ip)   ip = "";     // use a block severity if foundUrl is given  var severity = !!foundUrl ? avgreport.BLOCK_SEVERITY : parseInt(parts[0], 10);  var category = "";  var threat  = "";  // fill in the category and threat if something was found  if (severity &gt; 0)  {   category = parts[2];   threat  = parts[4];  }//  else//   return;    var scan_result = searchshield.avgCallFunc(doc, 'ReportScanResult', url, url, threat, category, ip, severity);  var scan_end = avgreport.scanEnd(doc, url);    return (scan_result &amp;&amp; scan_end); }, scanEnd: function (doc, url) {  return searchshield.avgCallFunc(doc, 'ReportScanEnd', url); }, GetInterstitialIP: function (interstitial) {  // simple regex to pull the IP address  var regex = /(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)/;  var match = regex.exec(interstitial);  if (!match)   return '';  return match[0]; }}///////////////    AVG TOOLBAR REPORTING    //////////////////////////////    FLYOVERS    ///////////////var avglsflyover = { count: 0, poppedUp: false, poppedElement: null, reset: function () {  avglsflyover.count = 0;  avglsflyover.poppedUp = false;  avglsflyover.poppedElement = null; }, popup: function (event, hash, search, flyover) {  if (!event)   event = window.event;  var div = document.getElementById("XPLSS_Flyover");  if (div == null)   return;  // establish target element and get its containing document object  // in case verdict is inside a frame  var eventTarget = event.srcElement;  var frameDoc = eventTarget.ownerDocument;  // if the element is the clock, don't pop over it  if ((eventTarget.src != null) &amp;&amp; (eventTarget.src.indexOf("clock.gif") != -1))   return;    // save the element we popped over  avglsflyover.poppedElement = eventTarget;  // if no flyover get it  if ((flyover == null) || (flyover == ""))  {   flyover = searchshield.avgCallFunc(frameDoc, 'BuildFlyover', hash);   if (!flyover)    return;   // cleanup flyover, replace any new lines   flyover = flyover.replace(/\r/g, "");   flyover = flyover.replace(/\n/g, "");   // escape any single quotes   flyover = flyover.replace(/'/g, "&amp;#39;");  }  // set the html in the layer  div.innerHTML = flyover;  // needed to prevent the flyover from hiding inadvertantly in IE7  if (searchshield.docMode == 7) {   div.style.backgroundColor = "#fff";  }  // there is an unwanted text node that causes vertical misalignment of flyover  if (div.firstChild.nodeType == 3)   div.removeChild(div.firstChild);    avglsflyover.poppedUp = true;  // reset display count  avglsflyover.count = 0;  avglsflyover.position(); }, hide: function (event) {  var frameDoc = document || top.document;  var div = frameDoc.getElementById("XPLSS_Flyover");  if ((div == null) || (div.style == null) || (div.style.visibility == "hidden"))   return;  var trans_div = frameDoc.getElementById("XPLSS_Trans");  if ((trans_div == null) || (trans_div.style == null) || (trans_div.style.visibility == "hidden"))   return;  // scroll and keydown events will pass a null event by design  // toElement will be null when mousing out of frameelement containing a verdict  if (event == null || event.toElement == null)  {   return;  }  if (trans_div.contains(event.toElement) || div.contains(event.toElement))   return;  // if the toElement is a cooresponding alt image then don't hide  // use try/catch because toElement will be null when mousing out of frame  try {   if (!!event.toElement.id &amp;&amp; !!event.srcElement.id)   {    if (event.toElement.id.indexOf(event.srcElement.id.substring(0,event.srcElement.id.length-2)) == 0)     return;      if (event.srcElement.id == 'XPLSS_Trans' &amp;&amp; /XPLSS_\d+VU\d/.test(event.toElement.id))     return;   }  }  catch(err){}  // hide and move somewhere off screen (negative offsets)  div.style.visibility = "hidden";  div.style.left = "-2100px";  div.style.top  = "-2100px";  trans_div.style.visibility = "hidden";  trans_div.style.left = "-2100px";  trans_div.style.top  = "-2100px";  return true; }, position: function () {  if (!avglsflyover.poppedUp || (avglsflyover.poppedElement == null))   return;  var flyover = document.getElementById("XPLSS_Flyover");  if (flyover == null)   return;  // relative position of flyover in relation to icon  var locateX = 0;  // 0=left, 1=right  var locateY = 0;  // 0=above, 1=below, 2=beside icon   // get window sizes  var winSize  = searchshield.viewPortSize();  var windowX  = winSize[0];  var windowY  = winSize[1];  // get the exact size of the flyover  var flyoverSize  = searchshield.elementSize(flyover);  var flyoverX  = flyoverSize[0];  var flyoverY  = flyoverSize[1];  var verdictWidth = 0;  if (avglsflyover.poppedElement &amp;&amp; avglsflyover.poppedElement.width)   verdictWidth = avglsflyover.poppedElement.width;    // get the bounding rect for image(s)  var imgRect = searchshield.GetFullBoundingRect(avglsflyover.poppedElement);  // half width/height of element bounding rect  var halfX = (imgRect.right - imgRect.left) / 2;  var halfY = (imgRect.bottom- imgRect.top) / 2;  // element the mouse is over, get the center position  var posX = searchshield.offsetLeft(avglsflyover.poppedElement) + halfX;  var posY = searchshield.offsetTop(avglsflyover.poppedElement) + halfY;  // if a verdict is inside a frame must get offsets for the frame element  var docFrames = document.frames;  if (docFrames)  {   for (var i=0; i &lt; docFrames.length; i++)   {    try {     var frameElem = docFrames[i].frameElement;     if (frameElem.contentWindow.document.getElementById(avglsflyover.poppedElement.id))     {      posX += searchshield.offsetLeft(frameElem);      posY += searchshield.offsetTop(frameElem);      break;     }    }    catch(frmErr){}   }  }  var transXOffset = 0;  if (imgRect.mid == undefined)   transXOffset = -1 * halfX;  else   transXOffset = ((imgRect.right + imgRect.left) / 2) - imgRect.mid;    // normalize pos to 0  -- get amount of scrolling in browser window  var scroll   = searchshield.scrollSize();  var pageOffsetX  = scroll[0];  var pageOffsetY  = scroll[1];  posX -= pageOffsetX;  posY -= pageOffsetY;  // setup the offsets  var offsetX = posX;  var offsetY = posY;  // calc where to display on page  if ((windowX - posX) &gt; posX)  {   // right   offsetX += halfX;   locateX = 1;  }  else  {   //left   offsetX -= (flyoverX + halfX);  }  if ((windowY - posY) &gt; posY)  {   // below   if (posY &lt; (windowY/4))   {    offsetY -= halfY;    locateY = 1;   }   else   {    offsetY -= (flyoverY / 2);    locateY = 2;   }  }  else  {   // above   if ((windowY - posY) &lt; (windowY/4))   {    offsetY -= (flyoverY - halfY);   }   else   {    offsetY -= (flyoverY / 2);    locateY = 2;   }  }  // make sure we aren't off the screen  if (offsetY &lt; 0)   offsetY = 0;  if ((offsetY + flyoverY) &gt; windowY)   offsetY = windowY - flyoverY;  // add page offsets back  offsetX += pageOffsetX;  offsetY += pageOffsetY;  posX += pageOffsetX;  posY += pageOffsetY;  var paddedOffsetX = 0; //provide space between icon and flyover  var padX = 3;  if (locateX == 0)   paddedOffsetX = offsetX - padX;  else   paddedOffsetX = offsetX + padX;  // set where to put the flyover  flyover.style.top = offsetY + "px";  flyover.style.left = paddedOffsetX + "px";  // set where to put the transparent layer  var trans = document.getElementById("XPLSS_Trans");  if (trans != null)  {   var trans_left = 0;   var trans_top  = 0;   var trans_width= 0;   var trans_height = 0;   // transparent layer should overlap verdict image   if (locateX == 0)    trans_left = posX - flyoverX - halfX;  // left    else    trans_left = posX - transXOffset - verdictWidth; // right   trans.style.left = trans_left + "px";   trans.style.top  = offsetY + "px";   trans.style.width = flyoverX + verdictWidth + "px";   trans.style.height = flyoverY + "px";  }  avglsflyover.display(); }, display: function () {  avglsflyover.count++;  if (avglsflyover.count == 1)  {   var flyover = document.getElementById("XPLSS_Flyover");   if (flyover == null)    return;   // show the flyover, must use a little count to tell, crazy stuff   flyover.style.visibility = "visible";   flyover.onmouseout = function(){    avglsflyover.hide(event);   };   // show the transparent layer   var trans_div = document.getElementById("XPLSS_Trans");   if (trans_div == null)    return;   trans_div.style.visibility = "visible";   trans_div.onmouseout = function(){    avglsflyover.hide(event);   };   avglsflyover.poppedUp = false;  } }, show: function () {  var div = document.getElementById("XPLSS_Flyover");  if (div == null)   return;  div.style.visibility = "visible";  var trans_div = document.getElementById("XPLSS_Trans");  if (trans_div == null)   return;  trans_div.style.visible = "visible"; }};var avglsinlineflyover = { build: function (riskCategory, riskName, bgColor, borderColor) {  var html = '';  html += '&lt;div class="avgILFO_head"&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="avgILFO_content"&gt;';  html += '&lt;img src=linkscanner://LS_Logo_Results.gif /&gt;';  html += riskCategory + '';  html += riskName + '';  html += '&lt;/div&gt;&lt;div class="avgILFO_foot"&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;';  return html; }, popup: function (event, flyover, nSeverity, blUrl) {  //set verdict info  var div = document.getElementById('XPLSS_InlineFlyover');  if (div == null)   return;    // blUrl is an object for a blacklisted short url  // when it is passed get the final url   if (blUrl != undefined)  {   var finalUrl = searchshield.avgCallFunc(document, 'GetFinalUrl', blUrl.sUrl);   var riskUrl = blUrl.sUrl;   if ((finalUrl) &amp;&amp; (searchshield.FilterUrl(finalUrl, xplSearch.engine.shortened_urls)))    finalUrl = avglsinlineflyover.getUrlFromQueryString(finalUrl);   var riskName = blUrl.riskNameLabel + finalUrl;   flyover = avglsinlineflyover.build(blUrl.riskCategory, riskName, blUrl.bgColor, blUrl.borderColor);  }  div.innerHTML = flyover;  div.style.width = "auto";  //reset width  div.style.position = "absolute";  if (searchshield.quirksMode || searchshield.docMode &lt;= 7)  {   var className = xplSearch.engine.inline.color.classname[nSeverity];   var imgBase = "linkscanner://" + className + "_inline_border_";   var divWidth = searchshield.elementSize(div)[0];   //round up to nearest 10 to avoid intentional wrapping in div   var flyoverWidth = divWidth + (10 - Math.ceil(10*((divWidth/10) - Math.floor(divWidth/10))));   var ilfoDivs = div.getElementsByTagName("div");   if (ilfoDivs &amp;&amp; ilfoDivs.length == 5)   {    //div.style.fontSize = "10px";    div.style.backgroundImage = "url(" + imgBase + "tl.png)";    div.style.backgroundPosition = "0 0";    div.style.backgroundRepeat = "no-repeat";    div.style.width = flyoverWidth + "px";    div.style.zIndex = "9999";       // avgILFO_head    ilfoDivs[0].style.backgroundImage = "url(" + imgBase + "tr.png)";    ilfoDivs[0].style.backgroundPosition = "top right";    ilfoDivs[0].style.backgroundRepeat = "no-repeat";    ilfoDivs[0].style.width = flyoverWidth + "px";    ilfoDivs[0].style.height = "5px";    // avgILFO_head div    ilfoDivs[1].style.height = "5px";       // avgILFO_content    ilfoDivs[2].style.backgroundImage = "url(" + imgBase + "r.png)";    ilfoDivs[2].style.backgroundPosition = "top right";    ilfoDivs[2].style.backgroundRepeat = "repeat-y";    ilfoDivs[2].style.fontSize = "10px";    ilfoDivs[2].style.color = "black";    ilfoDivs[2].style.padding = "0px 10px";    ilfoDivs[2].style.textAlign = "left";    ilfoDivs[2].style.wordWrap = "break-word";    ilfoDivs[2].style.lineHeight = "130%";    // avgILFO_foot    ilfoDivs[3].style.backgroundImage = "url(" + imgBase + "bl.png)";    ilfoDivs[3].style.backgroundPosition = "bottom left";    ilfoDivs[3].style.backgroundRepeat = "no-repeat";    ilfoDivs[3].style.height = "5px";       // avgILFO_foot div    ilfoDivs[4].style.backgroundImage = "url(" + imgBase + "br.png)";    ilfoDivs[4].style.backgroundPosition = "bottom right";    ilfoDivs[4].style.backgroundRepeat = "no-repeat";    ilfoDivs[4].style.width = flyoverWidth + "px";    ilfoDivs[4].style.height = "5px";   }   else   {    div.style.fontSize = "10px";    div.style.backgroundColor = xplSearch.engine.inline.color.background[nSeverity];    div.style.border = xplSearch.engine.inline.color.border[nSeverity] + " solid 3px";    div.style.padding = "3px 8px";   }  }  else  {   // apply updated styles for new flyover content   var sheets = document.styleSheets;   for (var i=0; i &lt; sheets.length; i++)   {    if (sheets[i].id &amp;&amp; sheets[i].id == "avgILFOStyle")    {     var avgILFOStyle = sheets[i];     break;    }   }   if (typeof(avgILFOStyle) !== "undefined")   {    var className = xplSearch.engine.inline.color.classname[nSeverity];    var divWidth = searchshield.elementSize(div)[0];    //round up to nearest 10 to avoid intentional wrapping in div    var flyoverWidth = divWidth + (10 - Math.ceil(10*((divWidth/10) - Math.floor(divWidth/10))));    var rules = avgILFOStyle.rules;    for (var i=0; i &lt; rules.length; i++)    {     var bgImg = rules[i].style.backgroundImage;     var selText = rules[i].selectorText.toLowerCase();     if (bgImg)     {      var bgImgStyle = bgImg.replace(/default/, className);      rules[i].style.backgroundImage = bgImgStyle;     }     if (((selText == ".avgilfo") ||      (selText == ".avgilfo_head") ||      (selText == ".avgilfo_foot div")) &amp;&amp;      (rules[i].style.width) &amp;&amp; (rules[i].style.width == "0px"))     {      rules[i].style.width = (flyoverWidth) + "px";     }    }   }  }  if (!event)   event = window.event;     var eventTarget = event.srcElement;  avglsinlineflyover.position(eventTarget); }, hide: function (event) {  if (!event)   event = window.event;     var div = document.getElementById("XPLSS_InlineFlyover");  if (div == null)   return;     div.style.visibility = "hidden"; //invisible  div.style.left = "-5000px";  if (!searchshield.quirksMode)  {   // reset flyover styles   var sheets = document.styleSheets;   for (var i=0; i &lt; sheets.length; i++)   {    if (sheets[i].id &amp;&amp; sheets[i].id == "avgILFOStyle")    {     var avgILFOStyle = sheets[i];     break;    }   }   if (typeof(avgILFOStyle) !== "undefined")   {    var rules = avgILFOStyle.rules;    for (var i=0; i &lt; rules.length; i++)    {     var bgImg = rules[i].style.backgroundImage;     var selText = rules[i].selectorText.toLowerCase();     if (bgImg)     {       var bgImgStyle = bgImg.replace(/:\/\/([a-z]+)_/i, '://default_');      rules[i].style.backgroundImage = bgImgStyle;     }     if (((selText == ".avgilfo") ||      (selText == ".avgilfo_head") ||      (selText == ".avgilfo_foot div")) &amp;&amp;      (rules[i].style.width))     {      rules[i].style.width = "0px";     }    }   }  } }, position: function (imageElem) {  var flyover = document.getElementById('XPLSS_InlineFlyover');  if (flyover == null)   return;     // relative position of flyover in relation to icon  var locateX = 0;  // 0=left, 1=right  var locateY = 0;  // 0=above, 1=below, 2=beside icon        // get window sizes  var winSize  = searchshield.viewPortSize();  var windowX  = winSize[0];  var windowY  = winSize[1];  // Must know if there is a horizontal scroll bar for Firefox  // for proper flyover positioning near bottom edge  var scrollYWidth  = winSize[2];  var scrollBarX  = winSize[2] &gt; 0 ? true : false;  // get the exact size of the flyover  var flyoverSize  = searchshield.elementSize(flyover);  var flyoverX  = flyoverSize[0];  var flyoverY  = flyoverSize[1];    flyover.style.width = flyoverX + "px";    // get the bounding rect for image(s)  var imgRect = imageElem.getBoundingClientRect();  // half width/height (center) of element bounding rect  var halfX = (imgRect.right - imgRect.left) / 2;  var halfY = (imgRect.bottom- imgRect.top) / 2;  // element the mouse is over, get the center position  var posX = searchshield.offsetLeft(imageElem) + halfX;  var posY = searchshield.offsetTop(imageElem) + halfY;    var pageOffsetX = 0;  var pageOffsetY = 0;  var hasParentFrame = false;  // normalize pos to 0  -- get amount of scrolling in browser window  var scroll  = searchshield.scrollSize(imageElem);  pageOffsetX  = scroll[0];  pageOffsetY  = scroll[1];  hasParentFrame = scroll[2];    posX -= pageOffsetX;  posY -= pageOffsetY;  //compensate for Firefox 3  if (posX &lt; imgRect.left)   posX = imgRect.left+halfX;  // setup the offsets  var offsetX = posX;  var offsetY = posY;  // calc where to display on page  if ((windowX - posX) &gt; posX)  {   // right   //offsetX += halfX;   offsetX = imgRect.right + 3;   locateX = 1;  }  else  {   //left   //offsetX -= (flyoverX + halfX);   offsetX = imgRect.left - flyoverX - 3;  }  if ((windowY - posY) &gt; posY)  {   // below   if (posY &lt; (windowY/4))   {    offsetY -= halfY;    locateY = 1;   }   else   {    offsetY -= (flyoverY / 2) - halfY;    locateY = 2;   }  }  else  {   // above   if ((windowY - posY) &lt; (windowY/4))   {    offsetY -= (flyoverY - halfY);   }   else   {    offsetY -= (flyoverY / 2) + halfY;    locateY = 2;   }  }  // make sure we aren't off the screen  if (offsetY &lt; 0)   offsetY = 0;  if ((offsetY + flyoverY) &gt; windowY)  {   offsetY = windowY - flyoverY;  }  else if (scrollBarX &amp;&amp; ((windowY - (posY + halfY)) &lt; scrollYWidth))  { //verdict overlaps the horizontal scrollbar   offsetY = windowY - (flyoverY + scrollYWidth);  }  // add page offsets back - if not in frame  if (!hasParentFrame)  {   offsetX += pageOffsetX;   offsetY += pageOffsetY;  }  //posX += pageOffsetX;  //posY += pageOffsetY;  //var paddedOffsetX = 0; //provide space between icon and flyover  //var padX = 3;  //if (locateX == 0)  // paddedOffsetX = offsetX - padX;  //else  // paddedOffsetX = offsetX + padX;  // set where to put the flyover  flyover.style.top = offsetY + "px";  flyover.style.left = offsetX + "px";  avglsinlineflyover.display(); }, display: function () {  var div = document.getElementById('XPLSS_InlineFlyover');  if (div == null)   return;    // show the flyover  div.style.visibility = "visible"; }, imageExists: function(element) {  if (element)  {   // check next siblings children   var sibling = element.nextSibling;      if ((sibling == null) || (sibling.getElementsByTagName == null))    return false;      var images = sibling.getElementsByTagName("IMG");   if (images == null)    return false;   for (var i = 0; i &lt; images.length; i++)   {    if (images[i].id == "avg_ls_image")     return true;   }  }  return false; }, getImage: function (anchor) {  if (anchor)  {   var imageElem = null;   var images = anchor.getElementsByTagName("img");   if (images == null)    return imageElem;   for (var i = 0; i &lt; images.length; i++)   {    if (images[i].id == "avg_ls_image")    {     imageElem = images[i];     break;      }       }   return imageElem;  }   }, getUrlFromQueryString: function (inUrl) {  var url = inUrl;  var uri = searchshield.parseLink(unescape(inUrl));  if (uri.source != null)  { // regexp failed so used split to parse url   var qsUrl = uri.source.indexOf("?url=");   if (qsUrl != -1)    url = uri.source.substring(qsUrl + 5);   else    url = uri.source;  }  else if ((uri.qsArray.url != null) &amp;&amp; (uri.qsArray.url.length &gt; 0))  {   url = uri.qsArray.url;  }  return url; }, mouseOverHandler: function (e, doc, engine) {  if (e &amp;&amp; e.srcElement &amp;&amp; e.srcElement.href)  {   // need to keep a reference to the function registered    // by the listener to be able to remove it.   var handlerFunc = arguments.callee;   var element = e.srcElement;   var href = e.srcElement.href;   // need an engine      if (!engine)    return;   // check if it has an image already   if (avglsinlineflyover.imageExists(element))    return;   // add the image, returns the anchor not the image   var new_element = engine.add_inline_image(doc, element, null, null);   // do the check and update in the background   setTimeout(function() {avglsinlineflyover.checkAndUpdate(doc, element, new_element, engine, handlerFunc)}, 1);  } }, checkAndUpdate: function (doc, element, new_element, engine, handlerFunc) {  if (!engine)   return;  try {   // remove the listener and get final url   element.detachEvent("onmouseover", handlerFunc, false);   var finalUrl = searchshield.avgCallFunc(doc, 'GetFinalUrl', element.href);  }  catch(e) {}  if ((typeof(finalUrl) != 'undefined') &amp;&amp; finalUrl)  {   // if still a tiny url check for final url embedded in querystring   if (searchshield.FilterUrl(finalUrl, engine.shortened_urls) &amp;&amp;     (finalUrl.indexOf("?url=") != -1))   {    finalUrl = avglsinlineflyover.getUrlFromQueryString(finalUrl);   }   // update the verdict   engine.display_inline(doc, new_element, finalUrl, null, true);  }  else  {   engine.avg_ls_inline_hide_verdict(new_element);  } }};///////////////    FLYOVERS    ///////////////(function(){ setTimeout( function() {  try {   if ((self == top) &amp;&amp; top.document) {    searchshield.init(top.document, 1);   }  }  catch(e){return;} }, 1 ); return;})();&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-993936047404862287?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/993936047404862287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/993936047404862287'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2012/01/kevin-jourdain-elected-president-of.html' title='Kevin Jourdain elected President of the Holyoke City Council!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-2848085887490337360</id><published>2011-12-31T03:43:00.000-05:00</published><updated>2011-12-31T03:43:13.363-05:00</updated><title type='text'>Councilor Jourdain seeks Presidency of City Council on January 3</title><content type='html'>&lt;img alt="masslive.com" src="http://media.masslive.com/design/baseline/img/logo_mass_print.gif" /&gt;&lt;br /&gt;&lt;div id="PrintContainer"&gt;&lt;h1 class="entry-title"&gt;Holyoke Councilor Kevin Jourdain hoping to replace Joseph McGiverin as council president after 26 years&lt;/h1&gt;&lt;h5 class="updated" title="2011-12-28T17:15:00Z"&gt;Published: Wednesday, December 28, 2011, 12:15 PM &lt;/h5&gt;&lt;div class="author_info"&gt;&lt;img alt="Mike Plaisance, The Republican" height="40" src="http://media.masslive.com/avatars/1828073.png" width="40" /&gt;&lt;span class="author_byline"&gt; By                &lt;span class="author vcard"&gt;&lt;strong&gt;        Mike Plaisance, The Republican&lt;/strong&gt;&lt;/span&gt;&lt;span class="source-org vcard" style="display: none; visibility: hidden;"&gt;&lt;span class="org fn"&gt;The Republican&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="clear"&gt;&lt;!-- --&gt;&lt;/div&gt;&lt;div class="entry-content"&gt;&lt;div class="entry_widget_large entry_widget_left" id="asset-10391051"&gt;&lt;span class="adv-photo-large"&gt;&lt;img alt="Kevin Jourdain Joseph McGiverin 2011.jpg" class="adv-photo" height="305" src="http://media.masslive.com/breakingnews/photo/10391051-large.jpg" width="380" /&gt;&lt;span class="photo-data"&gt;&lt;span class="caption"&gt;Holyoke City Council president Joseph M. McGiverin, left, and Kevin A. Jourdain are poised to face off for presidency of the council.&lt;/span&gt;&lt;/span&gt;&lt;span class="photo-bottom-left"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;span class="photo-bottom-right"&gt;&lt;!-- IE6 HACK --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;strong&gt;HOLYOKE &lt;/strong&gt;– Veteran councilors &lt;strong&gt;Joseph M. McGiverin&lt;/strong&gt; and &lt;strong&gt;Kevin A. Jourdain&lt;/strong&gt; are going for the gavel as they head to a Jan. 3 vote for presidency of the &lt;strong&gt;City Council.&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;McGiverin, who has been council president for 26 straight years and on the council since 1980, wants another term. He said Dec. 22 he has commitments from at least six of the 15 councilors, meaning himself and five others. &lt;br /&gt;&lt;br /&gt;Jourdain, a councilor since January 1994, has tried to unseat McGiverin before. He said last week he was confident of victory this time because he has eight councilors who will vote for him, including himself. &lt;br /&gt;&lt;br /&gt;Neither would disclose which councilors they believe are committed to them. &lt;br /&gt;&lt;br /&gt;The council will meet to vote on a president at City Hall at about 11 a.m. on Jan. 3. &lt;br /&gt;&lt;br /&gt;That will come after the 10 a.m. inauguration ceremonies at Holyoke High School at 500 Beech St. The ceremony will feature the swearing-in of&lt;strong&gt; Alex B. Morse&lt;/strong&gt;, currently the mayor-elect. &lt;br /&gt;&lt;br /&gt;The council president is a position of visibility. In City Council Chambers, the president runs the meetings that are held the first and third Tuesday of the month. &lt;br /&gt;&lt;br /&gt;Running a City Council meeting includes determining which councilors can speak based on the order in which they raised their hands, ensuring decorum if debate gets testy and making sure council rules are followed. That can include requiring that a vote take place on an amendment that has been offered to a motion before voting on the motion itself. &lt;br /&gt;&lt;br /&gt;Outside City Hall, the council president represents the city’s legislative body in meetings with the mayor and other government entities, as well as gatherings of civic and other groups. &lt;br /&gt;&lt;br /&gt;Jourdain said a change is needed because 26 years is too long for someone to be council president. &lt;br /&gt;&lt;br /&gt;“I just think that’s time for a breath of fresh air,” Jourdain said. &lt;br /&gt;&lt;br /&gt;The council needs more structure and among improvements he would make are ensuring better meeting minutes are kept, he said. &lt;br /&gt;&lt;br /&gt;He also said that with Morse pledging to be a bold mayor, the City Council also should be bold. &lt;br /&gt;&lt;br /&gt;“I’ll be out there and people will know what I do,” Jourdain said. &lt;br /&gt;&lt;br /&gt;McGiverin said he wants another term as president because he does the role as it should be done. &lt;br /&gt;&lt;br /&gt;“I don’t manipulate the role of the presidency to my agenda, I manipulate my role to the agenda of the City Council. I use a positive voice. Do I try to defuse controversial situations with humor? Yes. &lt;br /&gt;&lt;br /&gt;“I do my best to make sure meetings are fair....I enjoy doing it. I enjoy very much the public role of being president of the City Council,” McGiverin said. &lt;br /&gt;&lt;br /&gt;The incoming council will consist of nine returning members and six newcomers, with the newcomers in particular getting lobbied by Jourdain and McGiverin. &lt;br /&gt;&lt;br /&gt;Among the &lt;strong&gt;duties of the City Council&lt;/strong&gt; are to consider in the spring the mayor’s proposed budget, in which councilors can cut, but not add to, the spending plan. &lt;br /&gt;&lt;br /&gt;All city spending requires council approval. The council also sets the property tax rate and holds public hearings and votes on zone-change and special permit requests. &lt;/div&gt;&lt;div class="clear"&gt;&lt;!-- --&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="copy"&gt;© &lt;span id="year"&gt;2011&lt;/span&gt; masslive.com. All rights reserved.&lt;/div&gt;&lt;script type="text/javascript"&gt;﻿///////////    SEARCH    ///////////var g_aEng;var g_loc;// Initialize namespace, use existing contextvar searchshield = searchshield || {};searchshield.clockUrl;// constantssearchshield.SCORE_SS_SAFE  = 1;searchshield.SCORE_SS_CAUTION = 2;searchshield.SCORE_SS_WARNING = 3;searchshield.SCORE_SS_BLOCK  = 4;searchshield.SCORE_SS_VERISIGN = 7;searchshield.BLOCK_NONE  = 0;searchshield.BLOCK_NORMAL = 1;searchshield.BLOCK_PHISH = 2;searchshield.BLOCK_YAHOO = 3;searchshield.XPLCHECK_RESULT_SEV_NONE = 0;searchshield.XPLCHECK_RESULT_SEV_LOW = 1;searchshield.XPLCHECK_RESULT_SEV_MED = 2;searchshield.XPLCHECK_RESULT_SEV_BLOCK = 3;searchshield.VERISIGN_SPLIT_NOTEST  = 0;searchshield.VERISIGN_SPLIT_TESTA  = 1;searchshield.VERISIGN_SPLIT_TESTB  = 2;searchshield.needLivePhishCheck = false;searchshield.allowedSites = [];searchshield.enabled = function (doc){ var result = searchshield.avgCallFunc(doc, 'GetSearchEnabled'); return (result == '1' ? 1 : 0);};searchshield.init = function (doc){ if ((doc == null) || (doc.location == null) || (doc.location.href.search(/about:/) != -1))  return; if (!searchshield.enabled(doc))  return; if (!g_aEng)  g_aEng = searchshield.Search.prototype.detectEngine(doc.location.href); if (!g_aEng)  return; // init search object (not declared or is null) if (typeof xplSearch === 'undefined') {  // global  xplSearch = new searchshield.Search();  // reset the links added flag  xplSearch.new_links = false;  xplSearch.doc = doc;  xplSearch.href = xplSearch.doc.location.href;  xplSearch.uri = searchshield.parseLink(xplSearch.href);    xplSearch.engine = new searchshield[g_aEng+'SearchEngine'](xplSearch)  xplSearch.addEngine(xplSearch.engine);  searchshield.launch(doc); } if (doc.location.href != g_loc) {  g_loc = doc.location.href;  if ((typeof xplSearch !== 'undefined') &amp;&amp; (xplSearch != null))   searchshield.launch(doc); }};searchshield.launch = function (doc){ // IE specific check searchshield.quirksMode = (self.top.document.compatMode == 'BackCompat'); searchshield.docMode = parseInt(navigator.userAgent.split('MSIE')[1]);   if ((self === top) &amp;&amp; (self.document === doc)) {  if (!xplSearch.engine)   return;  // set verdict display config  xplSearch.engine.setRatingsConfig(doc);  // init the alert popup  searchshield.initPopupAlert(doc);  if (xplSearch.engine.type != 'inline')  {   // save function reference for memory clean up later   var fn = function(event){avglsflyover.hide(null)};   //hide flyover if these events occur   window.detachEvent('onscroll', fn);   window.attachEvent('onscroll', fn);   doc.detachEvent('onkeydown', fn);   doc.attachEvent('onkeydown', fn);  }    // only start monitor on top doc  searchshield.avgPageMonitor.start(doc); } return;};// search monitors and processors - doc is always top most documentsearchshield.avgPageMonitor = { previousUrl: null, start: function(doc){  searchshield.avgPageMonitor.stop();  searchshield.avgPageMonitor.process(doc);  searchshield.avgPageMonitor.timeoutID = window.setTimeout(function(){searchshield.avgPageMonitor.start(doc)}, 1000); }, process: function(doc){  var currentUrl = doc.location.href;  var refresh = 0;  if (this.previousUrl != currentUrl) {   this.previousUrl = currentUrl;   avgreport.scanResult(doc, currentUrl);   refresh = (xplSearch.engine.name == 'google') ? 1 : 0;  }  searchshield.avgProcessSearch(doc, refresh); }, stop: function(){  if (searchshield.avgPageMonitor.timeoutID)  {   window.clearTimeout(searchshield.avgPageMonitor.timeoutID);   delete searchshield.avgPageMonitor.timeoutID;  } }};searchshield.avgProcessSearch = function (doc, refresh){ // doc may be about:Tabs or about:Blank if (!doc)  return;   if (!searchshield.enabled(doc))  return; if (!searchshield.clockUrl)  searchshield.clockUrl = searchshield.avgCallFunc(doc, 'GetIconUrl', '0');   xplSearch.clockUrl = searchshield.clockUrl if (!xplSearch.engine)  return; // get result links xplSearch.links = []; var links = searchshield.avgGetSearchLinks(doc, xplSearch.engine, refresh); searchshield.needLivePhishCheck = false; for (var i=0; i &lt; links.length; i++) {  var isPhishing = searchshield.avglsCheckandUpdate(links[i]);  if (isPhishing)   searchshield.needLivePhishCheck = true; }  if (searchshield.needLivePhishCheck) {  var prev = '1';  if ( xplSearch.engine.type == 'inline' )   prev = '0';  searchshield.avgCallFunc(doc, 'GetPhishingResults', prev);  searchshield.needLivePhishCheck = false; } else if (links.length &gt; 0 &amp;&amp; xplSearch.engine.type != 'inline') {  searchshield.avgCallFunc(doc, 'FinalScanComplete'); }  // attach click handlers for popup alerts doc.body.detachEvent("onclick", searchshield.blockClick); doc.body.attachEvent("onclick", searchshield.blockClick);  doc.body.detachEvent("ondblclick", searchshield.blockClick); doc.body.attachEvent("ondblclick", searchshield.blockClick);};searchshield.avgGetSearchLinks = function (doc, engine, refresh){ if (!doc.body)  return; var alltags = doc.body.getElementsByTagName('a'); for (var i = 0; i &lt; alltags.length; i++) {  if ( !refresh )  { // no checked test if refreshing - google   if (alltags[i].getAttribute('avglschecked'))    continue;  }    // mark search result anchor so it isn't processed repeatedly  alltags[i].setAttribute('avglschecked', '1');  // ignore linked resources  if (alltags[i].tagName == 'LINK')   continue;  // ignore in-page bookmarks and javascript  if ((!alltags[i].href) ||   (alltags[i].href.charAt(0) == '#') || // in-page bookmark   (alltags[i].href.indexOf("javascript") == 0))   continue;     // ignore verdicts  if (/XPLSS_/.test(alltags[i].id))   continue;  // ignore flyover anchors  if (/avgthreatlabs/.test(alltags[i].host))   continue;     var href = engine.includeLink(alltags[i]);  if (!href)   continue;    var newNode = engine.search.addLink(alltags[i], href);  engine.addImage(newNode, engine.search.clockUrl, false); }  // recursivesly process all frames var docFrames = doc.frames; if (docFrames &amp;&amp; engine.processFrames) {  for (var j = 0; j &lt; docFrames.length; j++)  {   var attr;   var frameDoc;   try {    attr = docFrames[j].frameElement.className;    frameDoc = docFrames[j].document;   }   catch(err){}   //TODO: make frame processing an engine function or at least make exclusions an engine property   // 'editable' frame it's probably a gmail reply   if (attr &amp;&amp; (attr.indexOf("editable") != -1))    continue;   if (frameDoc)    searchshield.avgGetSearchLinks(frameDoc, engine, 0);  } }  return engine.search.links;};searchshield.avglsCheckandUpdate = function (linkNode){ if (!xplSearch)  return; // element is the search result anchor var element = linkNode.element; var href = linkNode.href; var result = searchshield.avgCallFunc(xplSearch.doc, 'CheckSite', href, element.href); if (result == null)  return;  var resultParse = result.split('::'); var phishing  = resultParse[0];  // if phishing then rest of array does not exist. if (phishing == 1)  return true; if (resultParse.length &lt; 8)  return;  var hash   = resultParse[1]; var score   = resultParse[2]; var new_image = resultParse[3]; var alt_image = resultParse[4]; var flyover   = resultParse[5]; var click_thru= resultParse[6]; var altClick_thru = resultParse[7]; // iterate to get verdict anchor nextElem = element.nextSibling; while (nextElem) {  if (nextElem.nodeType == 1 &amp;&amp; nextElem.id &amp;&amp; (nextElem.id.indexOf("XPLSS_") != -1))   break;  nextElem = nextElem.nextSibling; }  return xplSearch.engine.updateImage(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru);};// click event handler - shows popup for links of caution and warning severitysearchshield.blockClick = function(event){ if (!event)  event = window.event;   // no action needed if click is not the left mouse button if (event.button != 0)  return;   var anchor = searchshield.getAnchorNode(event.srcElement,         function(node) {return ((node.tagName.charAt(0) == "H") ||              (node.tagName.charAt(0) == "D") ||              (node.tagName.charAt(0) == "T"))} );  if ((anchor == null) || (anchor.href == null))  return true;  // ignore if anchor is on an xpl verdict if (!!anchor.id) {  if (anchor.id.indexOf('LXPLSS_') == 0)   return true;    if (anchor.id.indexOf('XPLSS_INTR') == 0)  {   searchshield.allowedSites.push(searchshield.GetDomain(anchor.href));   return true;  } }  // VeriSign A/B Split reporting - only for VerSign domains var avglschecked = anchor.getAttribute("avglschecked"); if (avglschecked &amp;&amp; avglschecked != 1) {  var sPos = avglschecked.indexOf("S");  var hash = (sPos &gt; -1) ? avglschecked.substring(0, sPos) : null;  var split = (sPos &gt; -1) ? avglschecked.substring(sPos+1) : null;  if (hash &amp;&amp; split &amp;&amp; split != searchshield.VERISIGN_SPLIT_NOTEST)  {   // check updated verdict anchor for verisign domain   var d = event.srcElement.ownerDocument;   if (d.getElementById("LXPLSS_" + hash + "U" + searchshield.SCORE_SS_VERISIGN))   {    searchshield.avgCallFunc(d, "RecordVSClick", hash, d.location.href);   }  } } var link = anchor.href; var verdict = searchshield.getAvgImage(anchor); var score = -1; var img_id = ''; if (verdict != null) {  score = verdict.score;  img_id = verdict.rawId; }  // show popup alert (upper left) if ((score &gt;= searchshield.SCORE_SS_CAUTION) &amp;&amp; (score &lt;= searchshield.SCORE_SS_WARNING)) {  // prevent this click from going any further  var search_hash = searchshield.avgCallFunc(document, 'GetHash', document.location.href);  searchshield.ShowPopupAlert(document, link, img_id, search_hash);  // if possible, stop the event from going any further  searchshield.cancelEvent(event);  return false; }  return true;};// called by native to update phishing linkssearchshield.updatePhishingLinks = function (results){ if (!results)  return; if (!xplSearch)  return; var engine = xplSearch.engine; var resultParse = results.split("::"); var resultsLength = resultParse[0]; for (var i=0; i &lt; resultsLength; i++) {  var idx = i*7;  var hash   = resultParse[idx+1];  var score   = resultParse[idx+2];  var new_image = resultParse[idx+3];  var alt_image = resultParse[idx+4];  var flyover   = resultParse[idx+5];  var click_thru= resultParse[idx+6];  var altClick_thru = resultParse[idx+7];  engine.updateImage(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru); }};searchshield.getAvgImage = function (element){ var obj = {}; obj.img = xplSearch.engine.getImgElement(element); obj.score = -1;  //parse the score from the id if (obj.img != null &amp;&amp; obj.img.id) {  var pos = !!obj.img.id ? obj.img.id.indexOf('U') + 1 : -1;  obj.score = (pos &lt; 1) ? -1 : obj.img.id.charAt(pos);  obj.rawId = obj.img.id.substring(0,pos-1); }  return obj;};searchshield.GetScannedLink = function (link){ if (!xplSearch || !(xplSearch.links instanceof Array))  return link; // look for the link we scanned based on original element for (var i = 0; i &lt; xplSearch.links.length; i++) {  if (xplSearch.links[i].element.href == link)   return xplSearch.links[i].href; } // else return the incoming link return link;};searchshield.previouslyScanned = function (links, hash){ for (var i = 0; i &lt; links.length; i++) {  if ((links[i] != null) &amp;&amp; (links[i].hash != null) &amp;&amp;    (links[i].hash == hash) &amp;&amp; (links[i].checked == true))   return true; } return false;};searchshield.initPopupAlert = function (doc){ // check if it exists first if (doc.getElementById("XPLSS_PopupAlert"))  return; // create a div to use for the popup itself, hide for now var popup_div = doc.createElement("DIV"); popup_div.setAttribute("id", "XPLSS_PopupAlert"); popup_div.style.position = "absolute"; popup_div.style.zIndex = "10000"; doc.body.appendChild(popup_div);};searchshield.initFlyover = function (doc, engine){ // create in top doc only if (doc !== window.top.document)  doc = window.top.document; // check if it exists first if ((doc == null) || (doc.getElementById("XPLSS_Flyover")))  return; // create a div to use for the flyover itself, hide for now var flyover_div = doc.createElement("DIV"); flyover_div.setAttribute("id", "XPLSS_Flyover"); flyover_div.style.position = "absolute"; flyover_div.style.zIndex = "10000"; doc.body.appendChild(flyover_div); // create a layer for the image var trans_div = doc.createElement("DIV"); trans_div.setAttribute("id", "XPLSS_Trans"); trans_div.style.position = "absolute"; trans_div.style.zIndex = "9999"; doc.body.appendChild(trans_div);};searchshield.ShowPopupAlert = function (doc, link, hash, search){ // build the content var popup_content = searchshield.avgCallFunc(doc, 'BuildPopupAlert', hash, search); if (popup_content == null || popup_content == "")  return; // get the div var div = doc.getElementById("XPLSS_PopupAlert"); div.innerHTML = searchshield.CleanupHTML(popup_content); // set position, account for scrolling var zoom = searchshield.zoomLevel(); var pageOffsetX = Math.round(doc.documentElement.scrollLeft/zoom); var pageOffsetY = Math.round(doc.documentElement.scrollTop/zoom);  div.style.left = 10 + pageOffsetX + "px"; div.style.top = 10 + pageOffsetY + "px";  // TODO: the event handler function doesn't exist so, is this even necessary? //div.attachEvent("onmouseout", HidePopupAlert); // set the link //var data = doc.getElementById("avgalertpopurl"); //if (data) //  data.innerHTML = escape(link); // set visibility div.style.visibility = "visible"; //navigate to the link after timed delay // TODO: Bug 31707 - make this open a new tab/window setTimeout(function(){doc.location.assign(link)}, 3000);};searchshield.avgCallFunc = function (doc, name /*, param1..., paramN*/){ // get the data element var avg_ls_data = (typeof gAvgDataElement !== 'undefined') ? gAvgDataElement : doc.getElementById("avglsdata"); if ((avg_ls_data == null) || (name == null))  return;  // save the data element gAvgDataElement = avg_ls_data; // for some reason you can't fire and event on an element with no parent node if (avg_ls_data.parentNode == null)  return; // set the attributes avg_ls_data.setAttribute("function", name);  // set variable length of optional parameter attributes var pcnt = 0; for (var i=2; i &lt; arguments.length; i++)  avg_ls_data.setAttribute("param"+(++pcnt), String(arguments[i])); avg_ls_data.fireEvent("onrowenter"); // get the result return avg_ls_data.getAttribute("result"); };// general use functions - begin// DOM Functionssearchshield.getAnchorNode = function (node, filterFunc){ // filterFunc should return a boolean if (!filterFunc || !filterFunc instanceof Function)  return null;   // go up the dom tree starting at node and look for anchor  // before hitting a header, div or table element  while ((node != null)   &amp;&amp;   (node.tagName != null) &amp;&amp;    (node.tagName != "A")) {  if (filterFunc(node))  {   node = null;   break;  }  node = node.parentNode; } return node;};searchshield.getDocuments = function (frame, frameArray){ // recursively get all embedded frames/docs frameArray.push(frame.document); var frames = frame.frames; for (var i = 0; i &lt; frames.length; i++) {  // recurse on each frame  searchshield.getDocuments(frames[i], frameArray); } return frameArray;};searchshield.NextSiblingNode = function (element){ var TEXTNODE = 3; var ParentNode = element.parentNode; if (!ParentNode)  return; var NextSibling = ParentNode.nextSibling; while (NextSibling) {  if (NextSibling.nodeType != TEXTNODE)   return NextSibling;  NextSibling = NextSibling.nextSibling; } return;};searchshield.getParentNodeByAttribute = function (attrName, attrValue, node, maxDepth){ if (!node)  return null;  var maxLoop = maxDepth ? maxDepth : 1; var pNode = node.parentNode;  if (!pNode)  return null;  for(; 0 &lt; maxLoop; maxLoop--)  {  if ((pNode[attrName]) &amp;&amp;    (pNode[attrName].toLowerCase() === attrValue.toLowerCase()))   {   return pNode;  }  pNode = pNode.parentNode;  if (!pNode)   return null; } return null;};searchshield.getParentNodeByClassName = function (className, node, maxDepth) { return searchshield.getParentNodeByAttribute("className", className, node, maxDepth);};searchshield.getParentNodeById = function (id, node, maxDepth){ return searchshield.getParentNodeByAttribute("id", id, node, maxDepth);};searchshield.getParentNodeByTagName = function (tagName, node, attrName) { // find parent node by tag name and optional attribute name if (!tagName || !node || !node.parentNode)  return null; tagName = tagName.toUpperCase(); while ((node != null) &amp;&amp; (node.nodeType != 9)) {  // if attrName is not provided just return TRUE  if (node.nodeName == tagName)  {   var nodeHasAttribute = !!attrName ? node[attrName] : true;   if (nodeHasAttribute)    return node;  }     node = node.parentNode; }  // no div return null;};searchshield.getHrefFromCiteElement = function (tag){ var rtnHtml; var tp = tag.parentNode; var tgpn = tp ? tp.parentNode : null; if (!tgpn)  return; lastChildElem = tgpn.lastChild; while ((lastChildElem != null) &amp;&amp; (lastChildElem.nodeName != 'SPAN') &amp;&amp; (lastChildElem.nodeName != 'DIV')) {  lastChildElem = lastChildElem.previousSibling; }  if (lastChildElem)  rtnHtml = lastChildElem.getElementsByTagName('cite')[0];  if (rtnHtml)  rtnHtml = rtnHtml.innerHTML;  return rtnHtml;};searchshield.getHrefFromSpanElement = function (tag){ var rtnHtml;  var tp = tag.parentNode; var tgpn = tp ? tp.parentNode : null; if (!tgpn)  return; siblingElem = tgpn.nextSibling; while ((siblingElem != null) &amp;&amp; (siblingElem.nodeName != 'SPAN') &amp;&amp; (siblingElem.className != 'site')) {  siblingElem = siblingElem.nextSibling;  if (siblingElem &amp;&amp; siblingElem.className  &amp;&amp; (siblingElem.className.match(/res[13]/)))   break; }  if (siblingElem)  rtnHtml = siblingElem.getElementsByTagName('a')[0];  if (rtnHtml)  rtnHtml = rtnHtml.innerHTML;  return rtnHtml;};searchshield.getTopLevelDocument = function (doc){ // return the top level document for the given doc, could be itself // TODO: determine a method of doing this for IE, if necessary  // don't check about:blank if (doc &amp;&amp; ((doc.location.href == "about:blank") || (doc.location.href == "about:Tabs")))  return doc; // Check if already a top level document for (var i = 0; i &lt; gBrowser.browsers.length; i++) {  if (doc == gBrowser.browsers[i].contentDocument)   return doc; } // Not a top level, check all frames  var documents; for (var j = 0; j &lt; gBrowser.browsers.length; j++) {  // get all docs for each browser  documents = searchshield.getDocuments(gBrowser.browsers[j].contentWindow, new Array());  for (var k = 0; k &lt; documents.length; k++)  {   // check if doc is from current browser   if (doc == documents[k])   {    // it is, return the top level doc for this browser    return gBrowser.browsers[j].contentDocument;   }  } }  return doc;};searchshield.getTopLevelWindow = function (){ // TODO: determine a method of doing this for IE, if necessary return mediator.getMostRecentWindow("navigator:browser");};//Event functionssearchshield.addListener = function (object, evtType, listener, useCapture){ useCapture = !!useCapture; if (object.addEventListener) {  object.addEventListener(evtType, listener, useCapture);  return true; } else if (object.attachEvent) {   object.attachEvent("on"+evtType, listener);   return true; }  return false;};searchshield.cancelEvent = function (event){ event.cancelBubble = true; event.returnValue = false;};searchshield.doEvent = function (evtObj, evtTarget, evtName, evtType, bubbles, cancelable){ bubbles  = !!bubbles; cancelable = !!cancelable;  if (document.createEvent) {  var evt = document.createEvent("Events");  evt.initEvent(evtName, bubbles, cancelable);  evtTarget.dispatchEvent(evt);  return true; } else if (document.createEventObject) {  var evt = document.createEventObject(evtObj);  evtTarget.fireEvent("on" + evtType, evt);  return true; }  return false;};searchshield.removeListener = function (object, evtType, listener, useCapture){ useCapture = !!useCapture;  if (object.removeEventListener) {  object.removeEventListener(evtType, listener, useCapture);  return true; } else if (object.detachEvent) {   object.detachEvent(evtType, listener);   return true; }  return false;};// HTML functionssearchshield.CleanupHTML = function (data){ if (data == null)  return data; // cleanup html data, replace any new lines data = data.replace(/\r/g, ""); data = data.replace(/\n/g, ""); // escape any single quotes data = data.replace(/'/g, "\\'"); return data;};searchshield.removeHtmlTags = function (str){ var re = new RegExp('(&lt;[^&gt;]+&gt;)','g'); var strStr = new String(str); if (!!strStr)  return strStr.replace(re, ''); else  return str; };// Browser functionssearchshield.elementSize = function (element){ //returns an array [sizeX, sizeY]  var elemX; var elemY;  elemX = parseInt(element.offsetWidth); elemY = parseInt(element.offsetHeight)  return [elemX, elemY];};searchshield.GetFullBoundingRect = function (element){ if (!element) return; // get bounding rect for incoming element var elementRect = element.getBoundingClientRect(); var nextImg = null; var nextImgRect = null; // first check for another non-TextNode element after this one var siblingElement = searchshield.NextSiblingNode(element); if ( siblingElement &amp;&amp;   siblingElement.firstChild &amp;&amp;   siblingElement.id &amp;&amp;   siblingElement.id.indexOf("XPLSS_") != -1) {  nextImg = siblingElement.firstChild;    nextImgRect = nextImg.getBoundingClientRect();  } else {  return elementRect; }  if ((nextImgRect.top &gt;= elementRect.bottom) &amp;&amp;   (nextImgRect.left &lt;= elementRect.left)) { // images appear to be on seperate lines  return elementRect; } // else merge the rects together into a new one var newRect = new function() { this.top=0; this.left=0; this.right=0; this.bottom=0; this.mid=0;}; newRect.top = Math.min(elementRect.top, nextImgRect.top); newRect.left= Math.min(elementRect.left, nextImgRect.left); newRect.right=Math.max(elementRect.right, nextImgRect.right); newRect.bottom=Math.max(elementRect.bottom, nextImgRect.bottom); newRect.mid = Math.min(elementRect.right, nextImgRect.left);  return newRect;};searchshield.offsetLeft = function (element){ var offset = 0; while (element) {  offset += element.offsetLeft;  element = element.offsetParent; } return offset;};searchshield.offsetTop = function (element){ var offset = 0; while (element) {  offset += element.offsetTop;   element = element.offsetParent; } return offset;};searchshield.scrollSize = function (imageElem){ // returns an array [scrollX, scrollY, hasParentFrame] var scrollX; var scrollY; var hasParentFrame;  // firefox if (window.pageXOffset &amp;&amp; window.pageYOffset) {  scrollX = window.pageXOffset;  scrollY = window.pageYOffset; } else if (document.documentElement || document.body) {  scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;  scrollY = document.documentElement.scrollTop || document.body.scrollTop;  if (imageElem)  {   var frames = document.frames;   if (frames)   {    for (var i=0; i &lt; frames.length; i++)    {     var img;     try {      img = frames[i].document.getElementById(imageElem.id);     }     catch(domErr){}     if (img != null)     {      scrollX = frames[i].document.documentElement.scrollLeft;      scrollY = frames[i].document.documentElement.scrollTop;      hasParentFrame = true;      break;     }    }   }  } } else {  scrollX = 0;  scrollY = 0; }  return [parseInt(scrollX,10), parseInt(scrollY,10), hasParentFrame];};searchshield.viewPortSize = function (){ // returns an array [width, height, scrollYWidth], where scrollYWidth is always 0 for IE var scrollXWidth  = 19; var scrollYWidth  = 0; // 0 for Microsoft IE var scrollBarX  = false; var windowX; var windowY;  // firefox if (window.innerWidth &amp;&amp; window.innerHeight) {  //TODO: validate this block if implemented for firefox    windowX = window.innerWidth - scrollXWidth;  windowY = window.innerHeight;  try  {   scrollYWidth = Math.floor(Math.abs(window.innerHeight - document.documentElement.clientHeight)) + 1;   scrollBarX = (document.documentElement.clientWidth &lt; document.documentElement.scrollWidth);  }  catch(err){}  if (scrollBarX &amp;&amp; !scrollYWidth)   scrollYWidth = 18; //normally 17 (+1 top border)      } else if (document.documentElement || document.body)  {  windowX = (document.documentElement.clientWidth || document.body.clientWidth) - scrollXWidth;  windowY = document.documentElement.clientHeight || document.body.clientHeight; } else {  windowX = 0;  windowY = 0; } return [windowX, windowY, scrollYWidth];};searchshield.zoomLevel = function (){  var level = 1;  if (document.body.getBoundingClientRect) {   // rect is only in physical pixel size before IE8    var rect = document.body.getBoundingClientRect();   level = Math.round (((rect.right - rect.left) / (document.body.offsetWidth)) * 100) / 100;  }    return level;};// Href functionssearchshield.checkUrl = function (url){ // cleanup a url, make sure there is a protocol on the front for scanning try {  // trim  url = url.replace(/^\s+/, "").replace(/\s+$/, "");  // if no protocol, add http:// to it   if (url.indexOf("://") == -1)   url = "http://" + url; } catch(err){} return url;};searchshield.DoesURLContain = function (url, contain){ if ((url == null) || (url.length &lt; 1))  return false; // breakup the url to check var parts = url.split('/'); if (parts.length &lt; 3)  return false; var domain= parts[2].toLowerCase(); if (domain.indexOf(contain) &gt; -1)  return true; return false;};searchshield.FilterUrl = function (url, filter){ if (!url || (url.length &lt; 1))  return false;  if (!filter || !(filter instanceof Array))   return false;   var parts = url.split('/'); if ((parts == null) || (parts.length &lt; 3))  return false; var domain = parts[2]; for (var i = 0; i &lt; filter.length; i++) {  if (domain.indexOf(filter[i]) != -1)   return true; } return false;};searchshield.GetDomain = function (url){ if (url != null) {  // get url domain  var parts = url.split('/');  if ((parts != null) &amp;&amp; (parts.length &gt;= 3))  {   return parts[2].toLowerCase();  } }  return url;};searchshield.getUrlContents = function (url) { if (url == null)  return null; // don't query if local url if (url.indexOf("linkscanner://") != -1)  return null; try  {  req = new XMLHttpRequest();  req.open("GET", url, false);  req.send(null);  if (req.status == 200)   return req.responseText;  else   return null; }  catch (err) {  // nothing to do  return null; }};searchshield.parseLink = function (href, simpleMode){ var uri    = {}; var parameter = {   complex: {    pattern: /^(?:([a-z]+):(?:([a-z]*):)?\/\/)?(?:([^:@]*)(?::([^:@]*))?@)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?::(\d+))?(?:([^:\?\#]+))?(?:\?([^\#]+))?(?:\#([^\s]+))?$/i,    element: ['source','scheme','subscheme','user','pass','host','port','path','query','fragment']    },   simple: {    pattern: /^(?:([a-z]+):\/\/)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?:\/)([^:\?]+)?(?:([\?|\#])([^\?]+))?$/i,    element: ['source','scheme','host','path','delimiter','query']   }  }; var mode = simpleMode !== false ? 'simple' : 'complex'; var pattern = parameter[mode].pattern; var element = parameter[mode].element;  if (!href)  return uri; var matches = href.match(pattern);  if (matches) {  // --------------------  // iterate over the matches array and populate uri properties  // using the respective element parameter as the name.  // NOTE: set raw property type as String to make inArray()  // work properly with instanceof.  // --------------------  for (var i=0; i &lt; matches.length; i++)   uri[element[i]] = new String(matches[i] || "");    // --------------------  // create an array, hostArray, from host, for example,  // host="www.google.com" and hostArray=["www","google","com"]  // --------------------  uri.hostArray = uri.host.split(".");    // --------------------  // create an array, qsArray, from query, for example,  // query='hl=en&amp;q=javascript&amp;btnG=Search&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai='  // qsArray=[{hl:'en'},{q:javascript}, ... ,(qs_rfai:''}]  //  // $0=entire match, $1=capture 1, $2=capture 2  // must include $0 even though it is unused so  // the replace works properly  // --------------------  uri.qsArray  = searchshield.parseQuery(uri.query); }  //non-standard urls require a fail-safe that relies on simply splitting the href function splitLink(href) {  // split the href on '/'  var linkParts = href.split("/");  // need domain and path  if ((linkParts == null) || (linkParts.length &lt; 2))   return false;   var uri = {   delimiter: (linkParts[3]).substring(0,1),   host: linkParts[2],   hostArray: (linkParts[2]).split('.'),   path: (linkParts[3]).substring(1),   qsArray: [],   query: '',   scheme: (linkParts[0]).substring(0, linkParts[0].length-1),   source: href   };  return uri; } if (!uri.host)  uri = splitLink(href); return uri;};searchshield.parseQuery = function (qs){ var qsArray = []; qs.replace(/(?:^|&amp;)([^&amp;=]*)=?([^&amp;]*)/g,      function ($0, $1, $2) {      if ($1) qsArray[$1] = $2;     } );  return qsArray;};// general functionssearchshield.arrayKeys = function (array){ var keys = new Array(); for(k in array)  keys.push(k); return keys;};searchshield.inArray = function (key, array, caseSensitive, exactMatch){ if (! array instanceof Array)  return false;  if (caseSensitive !== true)  caseSensitive = false;   if (exactMatch !== false)  exactMatch = true;  if (key instanceof String) {  for (var i=0; i &lt; array.length; i++)  {   var k = caseSensitive ? key.valueOf() : key.valueOf().toLowerCase();   var a = caseSensitive ? array[i] : array[i].toLowerCase();   if(exactMatch &amp;&amp; k === a)    return true;   else if (!exactMatch &amp;&amp; (-1 !== k.indexOf(a)))    return true;  } } else if (key instanceof Array) {  for (var i=0; i &lt; array.length; i++)   for (var j=0; j &lt; key.length; j++)   {    var k = caseSensitive ? key[j] : key[j].toLowerCase();    var a = caseSensitive ? array[i] : array[i].toLowerCase();    if (exactMatch &amp;&amp; k === a)     return true;    else if (!exactMatch &amp;&amp; (-1 !== k.indexOf(a)))     return true;   } } return false;};searchshield.getClickHandlerParams = function(clickHandler){ var re = /((?:'[^']*')|[\w]*)(?:,|\))/ig; var chParams = []; clickHandler.replace(re,   function($0, $1, $2){   if ($1)    chParams.push($1);  } );  return chParams;};// general use functions - end// Search constructorsearchshield.Search = function(){ this.doc    = null; this.engine   = null; this.engines   = null; this.links    = null; this.uri    = null; this.searchHash  = null; this.checkUrl   = null; this.useLocalImgs  = null; this.clockUrl   = null; // create engine list (actually key/value object will be used) this.engineList  = {};};searchshield.Search.prototype.getSearchNames = function(){ // order is important var names =  [  'Google',  'AVGGoogle',  'AltaVista',  'AVGYahoo',  'Yahoo',  'Bing',  'MSN', // MSN redirects to BING  'Baidu',  'Earthlink',  'AOL',  'Ask',  'Yandex',  'Seznam',  'Webhledani',  'eBay',///temp  'Digg',  'Slashdot',  'Twitter',  'GMail',  'Facebook',  'MySpace' ]; return names;};searchshield.Search.prototype.detectEngine = function(href){ if (!href)  return; var aEng = searchshield.Search.prototype.getSearchNames(); var aEngLen = aEng.length; for (var i=0; i &lt; aEngLen; i++) {  if (searchshield[aEng[i] + 'SearchEngine'].prototype.validSearch(href))   return aEng[i]; } return;};searchshield.Search.prototype.addEngine = function(engine){ if (!this.engines)  this.engines = new Array();  this.engines.push(engine);};searchshield.Search.prototype.addLink = function(inElement, inHref){ if (!this.links)  this.links = new Array(); var hrefHash; try {  hrefHash = searchshield.avgCallFunc(this.doc, 'GetHash', inHref); } catch (e){} var newNode = {   element: inElement,   href:   inHref,   hash:  hrefHash,   search:  this.searchHash  };  this.links.push(newNode);  return newNode;}// process the search result page after all search engines have been addedsearchshield.Search.prototype.process = function(doc){ // only process when searchshield is enabled if (!searchshield.enabled(doc))  return;   this.doc = doc; this.href = this.doc.location.href; this.uri = searchshield.parseLink(this.href); try {  this.searchHash  = searchshield.avgCallFunc(this.doc, 'GetHash', this.href);  // get any previously active engine  this.engine  = this.engineList[this.searchHash.toString()]; } catch (e) {} /*  Process Steps: 1. Add all supported search engines 2. Identify the active search engine 3. Get all document links and add AVG images  */  // STEP 1 - Add all supported search engines if (!this.engines) {  var aEng = xplSearch.getSearchNames();  var aEngLen = aEng.length;  for (var i=0; i &lt; aEngLen; i++)  {   xplSearch.addEngine(new searchshield[aEng[i]+'SearchEngine'](this));  } }  // search the engines if we didn't find one if (!this.engine) {  // STEP 2 - Identify the active search engine  var engLen = this.engines.length;  for (var i = 0; i &lt; engLen; i++)  {   if (this.engines[i].validSearch())   {    this.engine  = this.engines[i];    break;   }  }    // create a new engine instance to store  this.engineList[this.searchHash.toString()] = this.engine;    // init this search, if &lt; 1 either an error or disabled  //var sdkInit = 0;  //try {  // sdkInit = xpl_sdk.SXPL_InitSearch(this.href);  //}  //catch(e){}  //if (sdkInit &lt; 1)  // return false; } // return immediately if there is not an active search engine if (!this.engine)  return false;  try {   // base url to check for icons  this.checkUrl  = searchshield.avgCallFunc(this.doc, 'GetIconUrl', '1');  // check if using linked or local icons  this.useLocalImgs = !searchshield.getUrlContents(this.checkUrl);  // get the clock url  this.clockUrl  = searchshield.avgCallFunc(this.doc, 'GetIconUrl', '0'); } catch(e){}   // STEP 3 - Get all document links and add AVG images var alltags = this.doc.getElementsByTagName("*"); // this method works for IE, FF and Chrome for (var i=0; i &lt; alltags.length; i++) {  // ignore verdicts  if (alltags[i].id &amp;&amp; (alltags[i].id.indexOf("LXPLSS_") != -1))   continue;   //should the link be included?  Make sure includeLink always returns an href else FALSE,  var href = this.engine.includeLink(alltags[i]);   if (!href)   continue;  var newNode = this.addLink(alltags[i], href);  this.engine.addImage(newNode, this.clockUrl, false); } return (this.links ? this.links.length : false);};////////////////    SEARCH    ////////////////////////////////    SEARCH ENGINE    ////////////////// Interface for a SearchEngine objectsearchshield.SearchEngine = function(search){ this.search = search; this.type = 'standard'; this.processFrames = false; this.new_links  = true; this.onlyPrimaries = true; this.inline = {  clockImage: "linkscanner://clock12.png",  image: [ "linkscanner://safe12.png",     "linkscanner://caution12.png",     "linkscanner://warning12.png",     "linkscanner://blocked12.png"    ],  color: {   classname: ["green","yellow","orange","red"],   border: ["#00A120", "#EAA500", "#F57301", "#D20003"],   background: ["#C3E5CA", "#FEEFAE", "#FFD3B0", "#F5D4C1"]  } }; this.filter_urls = [  "ad.doubleclick.net", "ads1.revenue.net", "aslads.ask.com",  "bluestreak.com", "clickbacktrack.net", "clickbank.net",  "clickboothlnk.com", "clickmanager.com", "clickserve.cc-dt.com",  "dartsearch.net", "clicktraxmedia.com", "clk.atdmt.com",  "dpi-digialphoto.com", "feedpoint.net", "hypertracker.com",  "jdoqocy.com", "kqzyfj.com", "m1428.ic-live.com",  "mediaplex.com", "mr.mdmngr.com", "n339.asp-cc.com",  "offeredby.net", "offerweb.com", "pinktrax.com",  "pinktrax.com", "pixel1523.everesttech.net", "qckjmp.com",  "r.rd06.com", "revenuewire.net", "s0b.bluestreak.com",  "s2.srtk.net", "servedby.advertising.com", "store.yahoo.com",  "tf8.cpcmanager.com", "thetoptracker.com", "track.searchignite.com",  "tracking.searchmarketing.com", "www.dpbolvw.net", "www.rkdms.com",  "www.yellowbookleads.com"  ]; this.shortened_urls = [  "3.ly", "bit.ly", "is.gd", "tr.im", "short.to", "tiny.cc", "tinyurl.com", "lnk.ms", "msplinks.com", "t.co", "qr.net"  ]; this.showCleanVerdicts  = true; this.showLowRiskVerdicts = true; this.showMedRiskVerdicts = true; this.VeriSignSplit   = searchshield.VERISIGN_SPLIT_NOTEST;};searchshield.SearchEngine.prototype.flyoverExists = function (doc){ return !!doc.getElementById("XPLSS_Flyover");};searchshield.SearchEngine.prototype.inlineExists = function (doc){ return !!doc.getElementById("XPLSS_InlineFlyover");};searchshield.SearchEngine.prototype.validSearch = function(href) { return false; };searchshield.SearchEngine.prototype.includeLink = function(link) { return false; };searchshield.SearchEngine.prototype.insertNodes = function(node, doc){ var element = node.element; var parentNode = node.element.parentNode; if (parentNode == null) {  // try and find element again based on the hash  element = doc.getElementById("xplid_" + node.hash);  parentNode = !!element ? element.parentNode : null; } var insertNode = !!element ? element.nextSibling : null; while ((insertNode   != null) &amp;&amp;    (insertNode.tagName != null) &amp;&amp;    (insertNode.tagName == "SPAN")) {  insertNode = insertNode.nextSibling; }  return [insertNode, parentNode];};searchshield.SearchEngine.prototype.addImage = function(node, image, hidden){ var element = node.element; var hash = node.hash; var score  = node.score; // set verdict display configuration var doc = element.ownerDocument; if (this.type != 'inline' &amp;&amp; !doc.getElementById('XPLSS_Flyover'))  searchshield.initFlyover(doc, this); // get the proper insertion point for the image var insertNodes = this.insertNodes(node, doc); var insertNode = insertNodes[0]; var parentNode = insertNodes[1]; if (!parentNode)  return; // see if we already have an image if ((insertNode  != null) &amp;&amp;   (insertNode.id != null) &amp;&amp;   (insertNode.id.indexOf("XPLSS_") &gt; -1)) {  return; } // mark search result anchor so it isn't processed repeatedly if (score == undefined)  element.setAttribute("avglschecked", hash + "S" + this.VeriSignSplit); // create a new image var img = doc.createElement('img'); img.src = image; img.id = "XPLSS_" + hash; img.style.borderStyle = "none"; img.style.margin = "0 3px";  // for IE, specify these style attributes to prevent inadvertent inheritance from parent if (img.width &amp;&amp; img.height) {  img.style.width = img.width + 'px';  img.style.height = img.height + 'px'; }  // apply custom element styles this.updateElementStyle(img, this.addImageStyle);  // create the link element  var anchor = doc.createElement("A"); anchor.setAttribute("id", "LXPLSS_" + hash); if ((hidden != null) &amp;&amp; (hidden == true)) { // hiding the parent will also hide its child nodes  anchor.style.display = "none"; }  // Default anchor styles //Over-ride possible border style with inline declaration anchor.style.borderStyle = "none"; // apply custom element styles this.updateElementStyle(anchor, this.addAnchorStyle); if (score == searchshield.SCORE_SS_VERISIGN) {  anchor.style.textDecoration = "none";  anchor.style.background = "none repeat scroll 0 0 transparent"; } // append the image to the link anchor.appendChild(img); // insert the node as either a sibling or a child if (insertNode != null)  parentNode.insertBefore(anchor, insertNode); else  parentNode.appendChild(anchor);   return anchor;};searchshield.SearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru){  var updated = false;  var frameDoc  = this.search.doc;  var docFrames = frameDoc.frames;  var frameElem;  if (docFrames &amp;&amp; this.processFrames)  {   for (var i=0; i &lt; docFrames.length; i++)   {    try {     if (docFrames[i].document.getElementById(hash))     {      frameElem = docFrames[i].frameElement;      frameDoc = docFrames[i].document;      break;     }    }     catch(err){}   }  }  while ((element = frameDoc.getElementById(hash)) != null)  {   // check configuration to determine if verdict display property   var showVerdict = true;      var nSeverity = Number(score - 1);   switch (nSeverity)   {    case searchshield.XPLCHECK_RESULT_SEV_LOW:     showVerdict = this.showLowRiskVerdicts;     break;    case searchshield.XPLCHECK_RESULT_SEV_MED:     showVerdict = this.showMedRiskVerdicts;     break;    case searchshield.XPLCHECK_RESULT_SEV_NONE:     showVerdict = this.showCleanVerdicts;     break;    default:     if (score == searchshield.SCORE_SS_VERISIGN)      showVerdict = this.showCleanVerdicts;     break;   }      // remove image if no url specified   if ((!showVerdict) || (image == null) || (image.length &lt; 1))   {    // hide the parent anchor node    element.parentNode.style.display = "none";    // mark the id as being hidden (element is the image)    element.id = element.id + "H";    updated = true;        // if not a verisign score    if (score != searchshield.SCORE_SS_VERISIGN)     continue;   }   // cleanup flyover, replace any new lines or single quotes   flyover = searchshield.CleanupHTML(flyover);   // mark the id as having been updated   element.id = element.id + "U" + score;   element.src = image;   element.attachEvent("onmouseover", function(e){avglsflyover.popup(e, hash, search, flyover)});   element.attachEvent("onmouseout", function(e){avglsflyover.hide(e)});   // check for attribute updates (elementAttribute is an associative array (i.e., object)   if (this.elementAttribute)   {    for (a in this.elementAttribute)    {     if(this.elementAttribute[a])      element.setAttribute(a, this.elementAttribute[a]);    }   }   // To dynamically reduce verdict image size if it causes its container to scroll   // when not showing alt images determine if the element containing   // the verdict image is scrolling and decrease the image size by   // the scroll amount (min size is 80% or original)   var reduceBy = 0.8;   var scrl  = 0;   if (!alt_image || this.omitAltImage || this.VeriSignSplit == searchshield.VERISIGN_SPLIT_TESTB)   {    try{     var maxLoop = 5;     var cN = element.parentNode.parentNode;  //image-&gt;anchor-&gt;containerNodes...     while (cN &amp;&amp; maxLoop--)     {      if (cN.tagName == "DIV" || cN.tagName == "SPAN")      {       // get object height depending on ie document mode       var clientHeight = (cN.clientHeight == 0 ||         (this.search.doc.documentMode &amp;&amp; this.search.doc.documentMode &lt; 8)) ?         cN.offsetHeight :         cN.clientHeight;       scrl = cN.scrollHeight - clientHeight;       break;      }      cN = cN.parentNode;     }     if (0 &lt; scrl)     {      var eH = (element.height - scrl)/element.height;      if (reduceBy &gt; eH)       eH = reduceBy;            var newDim = Math.ceil(eH*element.height);            element.height = newDim;      element.width = newDim;            element.style.height = newDim + "px";      element.style.width = newDim + "px";     }    }    catch(e){}   }   // set default style attributes   element.style.display  = "";      // if verisign icon showing move our icon up for better centering of the 2   // except for IE7 browser - it does not like this style   try {    var ieVersion = parseFloat(navigator.appVersion.split("MSIE")[1]);    if (alt_image &amp;&amp; (alt_image.length &gt; 0) &amp;&amp; ieVersion != 7)     element.style.verticalAlign = "10%";   }   catch(err){};   // apply custom element styles   this.updateElementStyle(element, this.updateImageStyle)   // update the click thru   var link = this.search.doc.getElementById("L" + hash);   if (link)   {    link.href = click_thru;    link.id = link.id + "U" + score;   }   updated = true;   // add the alternate image if supplied BUT not on avg yahoo   if ((alt_image)    &amp;&amp;     (alt_image.length &gt; 0) &amp;&amp;     (!this.omitAltImage) &amp;&amp;    (this.VeriSignSplit != searchshield.VERISIGN_SPLIT_TESTB))   {    var vhash = hash.substring(hash.indexOf("_")+1);    // create a temporary link node    var tmp_node = {      element: element.parentNode,      href:  altClick_thru,      hash:  vhash + "VU" + score,      search:  this.searchHash,      score:  score     };    var altAnchor = this.addImage(tmp_node, alt_image, false);    if (altAnchor &amp;&amp; altAnchor.firstChild)    {     altAnchor.firstChild.setAttribute("onmouseover", "");     altAnchor.href = altClick_thru;    }   }  }    if (updated != false)  {   this.resizeFrame(frameElem);   return true;  } return false;};searchshield.SearchEngine.prototype.updateElementStyle = function (element, elementStyle){ if (elementStyle) { // a NULL attribte value will unset it  for(attr in elementStyle)  {   try {    if (element.style.setAttribute)     element.style.setAttribute(attr, elementStyle[attr]);    else     element.style[attr] = elementStyle[attr];   } catch(err){}  } }};searchshield.SearchEngine.prototype.resizeFrame = function (frameElem){ // resize frame to prevent unwanted scrolling after inserting verdicts // ignore inline and non-frame engines if ((this.type == 'inline') || (!this.processFrames))  return; // ensure all required elements are available if ((frameElem == null) || (frameElem.style == null) || (frameElem.contentWindow == null))  return; // if frame is scrolling vertically then resize var frameHeight = parseInt(frameElem.style.height, 10); if (!isNaN(frameHeight) &amp;&amp; (frameHeight &lt; frameElem.contentWindow.document.body.scrollHeight))  frameElem.style.height = frameElem.contentWindow.document.body.scrollHeight + 'px'; return;};searchshield.SearchEngine.prototype.getImgElement = function (element){ // return an xpl img element associated with a given element if (element == null)  return null; // go up the parent tree looking for a header or div while ( (element.parentNode != null) &amp;&amp;    (element.tagName.charAt(0) != "H") &amp;&amp;    (element.tagName.charAt(0) != "D") &amp;&amp;   (element.tagName.charAt(0) != "T") ) {  element = element.parentNode; } // if all the way to the top, nothing if ((element.tagName == "HTML") || (element == null))  return null; // get image tags, if none we are done var imgTags = element.getElementsByTagName("IMG"); if ((imgTags == null) || (imgTags.Length &lt; 1))  return null; for (var i = 0; i &lt; imgTags.length; i++) {  if ((imgTags[i].id == null) || (imgTags[i].id.indexOf("XPLSS_") == -1))   continue;  return imgTags[i]; } // else didn't find anything return null;};searchshield.SearchEngine.prototype.setRatingsConfig = function (doc){ // get verdict configuration, need at least severity var results = searchshield.avgCallFunc(doc, 'GetRatingsConfig'); var parts = !!results ? results.split('::') : null; if (parts != null &amp;&amp; parts.length &gt;= 5) { //if set to default then get config value  if (this.showCleanVerdicts === true)   this.showCleanVerdicts  = (parseInt(parts[0]) == 1) ? true : false;     if (this.showLowRiskVerdicts === true)   this.showLowRiskVerdicts = (parseInt(parts[1]) == 1) ? true : false;    if (this.showMedRiskVerdicts === true)   this.showMedRiskVerdicts = (parseInt(parts[2]) == 1) ? true : false;     this.VeriSignSplit = (parseInt(parts[4])); }  return true;};searchshield.SearchEngine.prototype.init_inline_ratings = function (doc){ if ((doc == null) || (doc.getElementById("XPLSS_InlineFlyover")))  return; if (!searchshield.quirksMode) {  // create style for inline flyovers  var styleTag = doc.createElement("style");  styleTag.setAttribute("id","avgILFOStyle");    var headTag = doc.getElementsByTagName("head")[0];  headTag.appendChild(styleTag);  var inline_style = styleTag.styleSheet;  // stub in the base image name as the url  inline_style.addRule(".avgILFO", "background: url(linkscanner://default_inline_border_tl.png) no-repeat top left;");  inline_style.addRule(".avgILFO", "width:0px; font-size:0px; z-index:9999; visibility:hidden; position:absolute; left:-5000px;");    inline_style.addRule(".avgILFO_content", "background: url(linkscanner://default_inline_border_r.png) top right repeat-y;");  inline_style.addRule(".avgILFO_content","font-size:10px; color:black; padding:0px 10px; text-align:left; word-wrap:break-word; line-height:130%");    inline_style.addRule(".avgILFO_head", "background: url(linkscanner://default_inline_border_tr.png) no-repeat top right;");  inline_style.addRule(".avgILFO_head", "width:0px; height:5px;");  inline_style.addRule(".avgILFO_head div","height:5px;");   inline_style.addRule(".avgILFO_foot", "background: url(linkscanner://default_inline_border_bl.png) no-repeat bottom left");  inline_style.addRule(".avgILFO_foot", "height:5px;");    inline_style.addRule(".avgILFO_foot div", "background: url(linkscanner://default_inline_border_br.png) no-repeat bottom right");  inline_style.addRule(".avgILFO_foot div", "height:5px; width:0px;"); }  try {   // create the popup box  var box = doc.createElement("DIV");  if (searchshield.quirksMode)  {   box.style.visibility = "hidden";   box.style.position = "absolute";   box.style.left = "-5000px";  }  box.setAttribute("id", "XPLSS_InlineFlyover");  box.setAttribute("class", "avgILFO");  doc.body.appendChild(box);  box = null; } catch(boxErr){}};searchshield.SearchEngine.prototype.show_inline_ratings = function (doc, node, image){  var href = node.href; var anchor = node.element; if ((href == null) || (href.length &lt; 1))  return;   if (avglsinlineflyover.imageExists(anchor))  return;  // mark search result anchor so it isn't processed repeatedly anchor.setAttribute("avglschecked", "1");  // get verdict  this.display_inline(doc, anchor, href, node, false);};searchshield.SearchEngine.prototype.display_inline = function (doc, anchor, href, node, update, min_severity){ // min_severity is the lowest severity to display, so setting it to // 1 would not display safe icons  var results = searchshield.avgCallFunc(doc, 'MalsiteCheck', href); if (results == null)  return;  var parts = results.split('::');  // need at least severity if (parts == null)  return;    var nSeverity = parseInt(parts[0]);  if (!update &amp;&amp; nSeverity == searchshield.XPLCHECK_RESULT_SEV_NONE) {  var shortUrl = searchshield.FilterUrl(href, this.shortened_urls);  if (shortUrl)  { // shortened url verdicts display later   var engine = this;   anchor.attachEvent("onmouseover", function(event){avglsinlineflyover.mouseOverHandler(event, doc, engine)});   return;  } }  // severity -1 signifies sb.dat load failure if ( nSeverity == -1 )  nSeverity = searchshield.XPLCHECK_RESULT_SEV_NONE; //blacklist url var blShortUrl = false; if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_BLOCK) {  var shortUrl = searchshield.FilterUrl(href, this.shortened_urls);  if (shortUrl)   blShortUrl = true; }  // need xlated cat tag and category if (parts.length &lt; 3)  return; // check the minimum to display if ((min_severity != null) &amp;&amp; (nSeverity &lt; min_severity))  return;   if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_LOW &amp;&amp; !this.showLowRiskVerdicts) {  if (update)   this.avg_ls_inline_hide_verdict(anchor);    return; }  if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_MED &amp;&amp; !this.showMedRiskVerdicts) {  if (update)   this.avg_ls_inline_hide_verdict(anchor);    return; } if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_NONE &amp;&amp; !this.showCleanVerdicts)  {  if (update)   this.avg_ls_inline_hide_verdict(anchor);     return; } if (update)  this.update_inline_image(anchor, nSeverity, parts); else  this.add_inline_image(doc, anchor, nSeverity, parts, blShortUrl);};searchshield.SearchEngine.prototype.avg_ls_inline_hide_verdict = function (anchor){ var image = avglsinlineflyover.getImage(anchor); if (image) {  image.style.display = "none";  if (image.parentNode &amp;&amp; image.parentNode.id == "avg_ls_anch")   image.parentNode.style.display = "none"; }};searchshield.SearchEngine.prototype.update_inline_image = function (anchor, nSeverity, aRisk){ // update the image already in the page if (anchor &amp;&amp; anchor.firstChild) {  var html  = '';  var image = '';   if (aRisk != null &amp;&amp; nSeverity != null)  {   var riskCategory = aRisk[1];   var riskName  = aRisk[2];   var bgColor   = this.inline.color.background[nSeverity];   var borderColor  = this.inline.color.border[nSeverity];   image    = this.inline.image[nSeverity];   html    = avglsinlineflyover.build(riskCategory, riskName, bgColor, borderColor);  }    var imageElem = anchor.firstChild;  imageElem.src = image;    if ( html &amp;&amp; html.length &gt; 0 )  {   imageElem.setAttribute("title", "");   imageElem.attachEvent("onmouseover", function(e){avglsinlineflyover.popup(e, html, nSeverity)});   imageElem.attachEvent("onmouseout", function(e){avglsinlineflyover.hide(e)});  } }};// add the image to the pagesearchshield.SearchEngine.prototype.add_inline_image = function (doc, anchor, nSeverity, aRisk, blShortUrl){ if (anchor == null || anchor.parentNode == null)  return null; // get the proper insertion point for the image var insertNode = anchor.nextSibling; while ((insertNode   != null) &amp;&amp;    (insertNode.tagName != null) &amp;&amp;    (insertNode.tagName == "SPAN")) {  insertNode= insertNode.nextSibling; }  // see if we already have an image anchor if ((insertNode  != null) &amp;&amp;   (insertNode.id != null) &amp;&amp;   (insertNode.id == "avg_ls_anch")) {  return null; } var html  = ''; var image = this.inline.clockImage;  if (aRisk != null &amp;&amp; nSeverity != null) {  var riskCategory = aRisk[1];  var riskName  = aRisk[2];  var bgColor   = this.inline.color.background[nSeverity];  var borderColor  = this.inline.color.border[nSeverity];  image    = this.inline.image[nSeverity];  var blUrl;  if (blShortUrl)  {   var aRiskName = riskName.split(':');   var sUrl = searchshield.checkUrl(aRiskName[1]);   blUrl = {};   blUrl.riskNameLabel = aRiskName[0] + ': ';   blUrl.riskCategory = riskCategory;   blUrl.bgColor = bgColor;   blUrl.borderColor = borderColor;   blUrl.sUrl = sUrl;  }  else  {   html = avglsinlineflyover.build(riskCategory, riskName, bgColor, borderColor);  } } doc = anchor.ownerDocument; var img   = doc.createElement("img"); img.src   = image; img.setAttribute("id","avg_ls_image"); img.style.width = "12px"; img.style.height = "12px"; img.style.border = "none"; img.style.padding = "0 3px"; img.style.margin = "0";  if ((html &amp;&amp; html.length &gt; 0) || (blUrl != undefined)) {  img.setAttribute("title", "");  img.attachEvent("onmouseover", function(e){avglsinlineflyover.popup(e, html, nSeverity, blUrl)});  img.attachEvent("onmouseout", function(e){avglsinlineflyover.hide(e)}); } // create the link element  var newAnchor = doc.createElement("A"); newAnchor.setAttribute("id", "avg_ls_anch"); newAnchor.style.display = "inline-block"; newAnchor.style.background = "none repeat scroll 0 0 transparent";  newAnchor.appendChild(img); img = null; // insert the node as either a sibling or a child if (insertNode != null)  anchor.parentNode.insertBefore(newAnchor, insertNode); else  anchor.parentNode.appendChild(newAnchor);    return newAnchor;  };////////////////    SEARCH ENGINE    ///////////////////////////////    GOOGLE SEARCH ENGINE    ///////////////searchshield.GoogleSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.onlyPrimaries = false;};searchshield.GoogleSearchEngine.prototype = new searchshield.SearchEngine();searchshield.GoogleSearchEngine.prototype.constructor = searchshield.GoogleSearchEngine;searchshield.GoogleSearchEngine.prototype.name = "google"; // the name by which the search engine is known (always lowercase)searchshield.GoogleSearchEngine.prototype.validSearch = function(href) { var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host;  // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For Google the host must match: // .google.com  OR // .google.com.XX OR // .google.co.XX OR // .google.XX  where XX is a country code // one special case is www.googe.off.ai (Anguilla) // Where any subdomain can come before the top level domain if ( /(\.(?:google|mozilla)\.(?:com|(?:co|off)\.[a-z]{2}|[a-z]{2}))/i.test(domain) ) {  //check the path  if ((path.indexOf("search?") == 0) ||   (path.indexOf("sponsoredlinks?") == 0) ||   (path.indexOf("webhp?") == 0) ||   (path.indexOf("webhp#") == 0) ||   (path.indexOf("#q=") == 0) ||   (path.indexOf("#hl=") == 0) ||   (path.indexOf("#sclient=") == 0))  {   return true;  } } return false;};searchshield.GoogleSearchEngine.prototype.includeLink = function(tag){ var href = ""; var outHref = false; var findStr = ""; // check for interstitials if (searchshield.DoesURLContain(tag.href, this.search.uri.host)) {  findStr = this.search.uri.host + "/interstitial?";  if (tag.className == "l" &amp;&amp; tag.href)  {   if (tag.href.indexOf(findStr) != -1)   {    findStr = "?url=";    var pos = tag.href.indexOf(findStr);    if (pos !== -1)    {     pos += 5;     outHref = tag.href.substring(pos);     if (searchshield.FilterUrl(outHref, this.filter_urls))      return false;            return outHref;    }   }  }  if (tag.className == "sla")  {   findStr = "/url?q=";   urlPos = tag.href.indexOf(findStr);   if (urlPos != -1)   {    urlPos += 7;    outHref = tag.href.substring(urlPos);    return outHref;   }  }    // if an ad id  if ((tag.id.indexOf("pa") == 0) || (tag.id.indexOf("an") == 0) ||   (tag.className == "resultLink"))  {   var urlPos = -1;    // ads now need unescaping   href = unescape(tag.href);   findStr= "/url?sa=";   if (href.indexOf(findStr) != -1)   { // first kind, locate real url    findStr= "&amp;q=http";    urlPos = href.indexOf(findStr);    if (urlPos != -1)     urlPos += 3; // puts it on the http   }   if (urlPos == -1)   {    findStr = "/pagead/iclk?sa=";    if (href.indexOf(findStr) != -1)    { // second kind, locate real url     findStr = "&amp;adurl=http";     urlPos = href.indexOf(findStr);     if (urlPos != -1)      urlPos += 7; // puts it on the http    }   }   if (urlPos == -1)   {    if (href.indexOf("/aclk?sa=") != -1)    { // third kind     urlPos = href.indexOf("&amp;q=http");     if (urlPos != -1)      urlPos += 3; // puts it on the http     else     {      urlPos  = href.indexOf("&amp;lp=http");      if (urlPos != -1)       urlPos += 4;      else      {       findStr = "&amp;adurl=http";       urlPos = href.indexOf(findStr);       if (urlPos != -1)        urlPos += 7; // puts it on the http      }           }    }   }   if (urlPos == -1)   {    if (href.indexOf("/url?cad=") != -1)    { // fourth kind     urlPos = href.indexOf("&amp;q=http");     if (urlPos != -1)      urlPos += 3; // puts it on the http    }   }   if (urlPos != -1)   {    outHref = href.substring(urlPos);    // the destination url is in the href string of this redirector    if (outHref.indexOf('xg4ken.com') &gt; -1)    {     urlPos = (unescape(outHref)).indexOf('url[]=') + 6;     var destUrl = (unescape(outHref)).substring(urlPos);     if (searchshield.FilterUrl(destUrl, this.filter_urls))     {      var destUrl = searchshield.getHrefFromCiteElement(tag);      if (destUrl)       return searchshield.checkUrl(searchshield.removeHtmlTags(destUrl));      return false;     }     return destUrl;    }    // filtered url but can get destination from href string    if (outHref.indexOf('altfarm.mediaplex.com') &gt; -1)    {     var tmpoh = unescape(outHref);     var destUrl = tmpoh.substring(tmpoh.indexOf('DURL=')+5);     if (destUrl != null)     {      var destUrl = unescape(destUrl);      return destUrl;     }    }    // extract any fragment text, shouldn't be unescaped    var pound = outHref.indexOf("#");     if (pound != -1)    {     var fragment = outHref.substring(pound);     outHref = outHref.substring(0, pound);     outHref = unescape(outHref);     outHref += fragment;     if (searchshield.FilterUrl(outHref, this.filter_urls))      return false;     return outHref;    }    outHref = unescape(outHref);    if (outHref.indexOf("?") == -1)    {     var ampPos = outHref.indexOf("&amp;");     if (ampPos != -1)      outHref = outHref.substring(0, ampPos);    }        if (searchshield.FilterUrl(outHref, this.filter_urls))    {     var destUrl = searchshield.getHrefFromCiteElement(tag);     if (destUrl)      return searchshield.checkUrl(searchshield.removeHtmlTags(destUrl));     return false;    }    return outHref;   }  }  // recommended link - use following to see one  // http://www.google.cz/search?hl=cs&amp;q=warey&amp;btnG=Hledat&amp;lr=lang_cs  // elem parent class = r  // href must contain - url? and q=http  var parentNode = tag.parentNode;  if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == "r"))  {   href = tag.href;   if (href &amp;&amp; (href.indexOf("/url?") != -1))   {    // locate the real url    var urlPos = href.indexOf("q=http");    if (urlPos != -1)    {     urlPos += 2;     outHref = href.substring(urlPos);     // include entire param up to '&amp;'     var ampPos = outHref.indexOf("&amp;");     if (ampPos != -1)      outHref = outHref.substring(0, ampPos);     return outHref;    }   }  } } // no link to self else if (tag.className &amp;&amp; (tag.className.charAt(0) == "l" || tag.className == "sla")) {  // check for any images on the link  if (0 === tag.getElementsByTagName("IMG").length)   return tag.href; } // special case for ie6 results else if (searchshield.docMode == 6 || searchshield.docMode == 7) {  var parentNodeClass = tag.parentNode ? tag.parentNode.className : '';  if ((tag.className == '') &amp;&amp; (parentNodeClass == 'r'))  {   return tag.href;  } } // else nothing return false;};///////////////    GOOGLE    //////////////////////////////    AVG GOOGLE SEARCH ENGINE    ///////////////searchshield.AVGGoogleSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.onlyPrimaries = false;};searchshield.AVGGoogleSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AVGGoogleSearchEngine.prototype.constructor = searchshield.AVGGoogleSearchEngine;searchshield.AVGGoogleSearchEngine.prototype.name = "avggoogle"; // the name by which the search engine is known (always lowercase)searchshield.AVGGoogleSearchEngine.prototype.validSearch = function(href) { var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var domain  = uri.host;  // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; if  (domain.indexOf("search.avg.com") &gt; -1) {   // ads link back to google  return true; }  return false;};searchshield.AVGGoogleSearchEngine.prototype.includeLink = function(tag){ var outHref = false; var findStr = ""; // check for interstitials if (searchshield.DoesURLContain(tag.href, "google.com")) {  // link back to self - DIV elem GrandParent class of res1 or res3 is Sponsored Link   var parentNode = tag.parentNode;  if (parentNode)  {   var grandParentNode = tag.parentNode.parentNode;   if (grandParentNode)   {    if ((grandParentNode.tagName == "DIV") &amp;&amp;      ((grandParentNode.className.toLowerCase() == "res1") ||     (grandParentNode.className.toLowerCase() == "res3")))    {     var urlPos = -1;      // ads now need unescaping     href = unescape(tag.href);     if (urlPos == -1)     {      if (href.indexOf("/aclk?sa=") != -1)      {        findStr = "&amp;adurl=http";       urlPos = href.indexOf(findStr);       if (urlPos != -1)        urlPos += 7; // puts it on the http              }     }     if (urlPos != -1)     {      outHref = href.substring(urlPos);      // the destination url is in the href string of this redirector      if (outHref.indexOf('xg4ken.com') &gt; -1)      {       urlPos = (unescape(outHref)).indexOf('url[]=') + 6;       var destUrl = (unescape(outHref)).substring(urlPos);       if (searchshield.FilterUrl(destUrl, this.filter_urls))       {        var destUrl = searchshield.getHrefFromCiteElement(tag);        if (destUrl)         return searchshield.checkUrl(searchshield.removeHtmlTags(destUrl));        return false;       }       return destUrl;      }      // filtered url but can get destination from href string      if (outHref.indexOf('altfarm.mediaplex.com') &gt; -1)      {       var tmpoh = unescape(outHref);       var destUrl = tmpoh.substring(tmpoh.indexOf('DURL=')+5);       if (destUrl != null)       {        var destUrl = unescape(destUrl);        return destUrl;       }      }          // extract any fragment text, shouldn't be unescaped      var pound = outHref.indexOf("#");       if (pound != -1)      {       var fragment = outHref.substring(pound);       outHref = outHref.substring(0, pound);       outHref = unescape(outHref);       outHref += fragment;       if (searchshield.FilterUrl(outHref, this.filter_urls))        return false;       return outHref;      }      outHref = unescape(outHref);      if (outHref.indexOf("?") == -1)      {       var ampPos = outHref.indexOf("&amp;");       if (ampPos != -1)        outHref = outHref.substring(0, ampPos);      }          if (searchshield.FilterUrl(outHref, this.filter_urls))      {       var destUrl = searchshield.getHrefFromCiteElement(tag);       if (destUrl)        return searchshield.checkUrl(searchshield.removeHtmlTags(destUrl));       return false;      }      return outHref;     }    }   }  } }    // no link to self else {  var parentNode = tag.parentNode;  if (parentNode)  {   var grandParentNode = tag.parentNode.parentNode;   if (grandParentNode)   {    if ((grandParentNode.tagName == "DIV") &amp;&amp;      (grandParentNode.className.toLowerCase() == "res2"))    {     // check for any images on the link     if (0 === tag.getElementsByTagName("IMG").length)      return tag.href;    }   }  } } // else nothing return false;}///////////////    AVG GOOGLE    //////////////////////////////    YAHOO SEARCH ENGINE    ///////////////searchshield.YahooSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false;};searchshield.YahooSearchEngine.prototype = new searchshield.SearchEngine();searchshield.YahooSearchEngine.prototype.constructor = searchshield.YahooSearchEngine;searchshield.YahooSearchEngine.prototype.name = "yahoo";searchshield.YahooSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For Yahoo the host must match: // search.yahoo.com  OR // xx.search.yahoo.com where xx is the country code OR // search.yahoo.co.jp OR // for Yahoo China: one.cn.yahoo.com, search.cn.yahoo.com or www.yahoo.cn if ((domain.match(/search\.yahoo\.co(?:m|\.jp)/i) ||  domain.match(/(?:search|one)\.cn\.yahoo\.com/i) ||  domain.match(/www\.yahoo\.cn/i)) &amp;&amp;   path.match(/^(?:search[;?]|s\?)/i)) {  return true; } return false;};searchshield.YahooSearchEngine.prototype.includeLink = function(tag){ var href  = ""; var outHref  = ""; var findStr  = ""; // yahoo likes to encode the url href = unescape(tag.href); if ((tag.className.indexOf("yschttl") != -1) ||   (tag.className.indexOf("spt") != -1)) {  var da = href.indexOf("**");  var ad = href.indexOf("*-");  if (da != -1)   outHref = href.substring(da+2);  else if (ad != -1)   outHref = href.substring(ad+2);  else   outHref = href ;     if (outHref.toLowerCase().indexOf("overture.") !== -1)   return false; } else if ((tag.tagName)   &amp;&amp;     (tag.tagName === "A")  &amp;&amp;     (!tag.className)) {  var tagParent = tag.parentNode;    // if anchor without className then search parentNodes  if ((tagParent) &amp;&amp;   (tagParent.tagName !== "EM") &amp;&amp;   (searchshield.getParentNodeByClassName("yst-web", tag, 4)))  {   // China Yahoo support   outHref = href;  }    else if ((tagParent) &amp;&amp;    (tagParent.tagName === "H3") &amp;&amp;    (!!searchshield.getParentNodeById("WS2m",tag, 5)))  {   // Japan Yahoo support   var da = href.indexOf("**");   if (da == -1)    outHref = href;   else    outHref = href.substring(da+2);  }  else if ((tagParent) &amp;&amp;    (tagParent.className !== "c") &amp;&amp;    (tagParent.parentNode.id !== "fpn") &amp;&amp;    (!!searchshield.getParentNodeByClassName("ymc", tag, 7)))  {   // Korea Yahoo support - when not caught by yschttl   var da = href.indexOf("**");   if (da !== -1)    outHref = href.substring(da+2);  } } else if (!this.onlyPrimaries) {  findStr = "&amp;yargs=";  var yargs = href.indexOf(findStr);  if (yargs != -1)  {   outHref = href.substring(yargs+findStr.length);   // check for prefix   if (outHref.indexOf("://") == -1)    outHref = "http://" + outHref;   // if inside an &lt;i&gt;, probably a paypal link, don't include   if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == "I"))    return false;  }  } // filter domains // split the url based on '/' var parts = !!outHref ? outHref.split('/') : null; // Filter out domains that match any of the search engine's names if (!parts || !parts[2])  return false;   var domain = parts[2]; if ((domain.indexOf("rdrjp.yahoo.com") != -1) ||  (domain.indexOf("rdrkrs.yahoo.com") != -1) ||  (domain.indexOf("rdrtpe.yahoo.com") != -1) ||  (domain.indexOf("rdrird.yahoo.com") != -1) ||  (domain.indexOf("rdrhk2.yahoo.com") != -1) ||  (domain.indexOf("rdrsg1.yahoo.com") != -1) ||  (domain.indexOf("rdrin2.yahoo.com") != -1) ||  (domain.indexOf("rdre1.yahoo.com") != -1) ||  (domain.indexOf("rdrw1.yahoo.com") != -1)  ) {  return false; } // set for yahoo to get parent node for image insertion var hash = searchshield.avgCallFunc(this.doc, 'GetHash', outHref); tag.setAttribute("id", "xplid_" + hash); return outHref;};///////////////    YAHOO SEARCH ENGINE    //////////////////////////////    AVG YAHOO SEARCH ENGINE    ///////////////searchshield.AVGYahooSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.omitAltImage = true; this.updateImageStyle = {  verticalAlign: null };};searchshield.AVGYahooSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AVGYahooSearchEngine.prototype.constructor = searchshield.AVGYahooSearchEngine;searchshield.AVGYahooSearchEngine.prototype.name = "avgyahoo";searchshield.AVGYahooSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; //path may be 'avg/search' or 'search' var pathArray = uri.path.split("/"); var avg = pathArray[0]; // re stitch the uri path and query elements // to use existing logic var path = (undefined == pathArray[1]) ? pathArray[0] : pathArray[1];  path += uri.delimiter + uri.query; // For AVG Yahoo classic the host must match: // yhs.search.yahoo.com OR // .yhs.search.yahoo.com if (domain.indexOf("yhs.search.yahoo.co") != -1) {  if ((avg == "avg") &amp;&amp;   ((path.indexOf("search?") == 0) ||    (path.indexOf("search;") == 0)))  {   return true;  } }  // also support new metro version which DOESN'T  // contain /avg so avg split part is path // valid domains are: // search.yahoo.com,  // xx.search.yahoo.com and // search.yahoo.co.xx if (domain.indexOf("search.yahoo.co") != -1)  {  // path (split avg) must start with search and  // contain the avg toolbar parameter  if (((path.indexOf("search?") == 0) ||   (path.indexOf("search;") == 0)) &amp;&amp;   (path.indexOf("fr=yhs-avg") != -1))  {   return true;  } } return false;};searchshield.AVGYahooSearchEngine.prototype.includeLink = function(tag){ var href  = ""; var outHref  = ""; var findStr  = ""; if (this.search.doc.body.className.toLowerCase() != "standard") { // handle as std Yahoo results page  return searchshield.YahooSearchEngine.prototype.includeLink(tag); }  // yahoo likes to encode the url href = unescape(tag.href); if (tag.target == "_top") {  var da = href.indexOf("**");  if (da != -1)   outHref = href.substring(da+2);  else   outHref = href ;  if (outHref.toLowerCase().indexOf("overture.") !== -1)   return false; } else if (!this.onlyPrimaries) {  findStr = "&amp;yargs=";  var yargs = href.indexOf(findStr);  if (yargs != -1)  {   outHref = href.substring(yargs+findStr.length);   // check for prefix   if (outHref.indexOf("://") == -1)    outHref = "http://" + outHref;   // if inside an &lt;i&gt;, probably a paypal link, don't include   if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == "I"))    return false;  }  } // filter domains // split the url based on '/' var parts = outHref.split('/'); // Filter out domains that match any of the search engine's names if (!parts[2])  return false;   var domain = parts[2]; if ((domain.indexOf("rdrjp.yahoo.com") != -1) ||  (domain.indexOf("rdrkrs.yahoo.com") != -1) ||  (domain.indexOf("rdrtpe.yahoo.com") != -1) ||  (domain.indexOf("rdrird.yahoo.com") != -1) ||  (domain.indexOf("rdrhk2.yahoo.com") != -1) ||  (domain.indexOf("rdrsg1.yahoo.com") != -1) ||  (domain.indexOf("rdrin2.yahoo.com") != -1) ||  (domain.indexOf("rdre1.yahoo.com") != -1) ||  (domain.indexOf("rdrw1.yahoo.com") != -1)  ) {  return false; } return outHref;};///////////////    AVG YAHOO SEARCH ENGINE    //////////////////////////////    MSN SEARCH ENGINE    ///////////////searchshield.MSNSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.onlyPrimaries = false;};searchshield.MSNSearchEngine.prototype = new searchshield.SearchEngine();searchshield.MSNSearchEngine.prototype.constructor = searchshield.MSNSearchEngine;searchshield.MSNSearchEngine.prototype.name = "msn";searchshield.MSNSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For MSN the host must match: // search.msn.com  OR // search.live.com if (domain.indexOf("search.msn.co") &gt; -1) {  if (domain.charAt(13) == 'm')   hostMatch = true;  else if ((domain.charAt(13) == '.') &amp;&amp; (domain.length == 16))   hostMatch = true; } else if (domain.indexOf("search.live.co") &gt; -1) {  if (domain.charAt(14) == 'm')   hostMatch = true;  else if ((domain.charAt(14) == '.') &amp;&amp; (domain.length == 17))   hostMatch = true; }  if (hostMatch) {  if (path.indexOf("results.aspx") == 0)   return true; } return false;};searchshield.MSNSearchEngine.prototype.includeLink = function(tag){ var outHref = false;  // these don't seem common from Firefox, but they are in IE if (searchshield.DoesURLContain(tag.href, "g.msn.co")) {  var qPos = tag.href.indexOf("?");  if (qPos != -1)  {   var postPart = tag.href.substring(qPos+1);   var dblAmp = postPart.indexOf("&amp;&amp;");   if (dblAmp != -1)   {    outHref = postPart.substring(0, dblAmp);    return outHref;   }  } } else if (searchshield.DoesURLContain(tag.href, "r.msn.co")) {  var element = tag;  var parentNode = tag.parentNode;  // top links - check for a CITE  var spanElements = element.getElementsByTagName("CITE");  if ((spanElements != null)    &amp;&amp;    (spanElements.length &gt; 0))  {   outHref = spanElements[0].innerHTML;   // replace any nbsp's   outHref = outHref.replace("&amp;nbsp;", " ");   // url is after the last space in the html, after the '-'   var space_pos = outHref.lastIndexOf(" ");   if (space_pos != -1)    outHref = outHref.slice(space_pos + 1);   outHref = searchshield.checkUrl(outHref);   return outHref;  }    // side links   if (element.lastChild != null)  {   outHref = element.lastChild.innerHTML;   if ( outHref != null)   {    outHref = searchshield.checkUrl(outHref);    return outHref;   }  } } else if (searchshield.DoesURLContain(tag.href, this.search.uri.host)     ||    searchshield.DoesURLContain(tag.href, ".live.com")     ||    searchshield.DoesURLContain(tag.href, "msn.")      ||    searchshield.DoesURLContain(tag.href, "msnscache.com")    ||    searchshield.DoesURLContain(tag.href, "advertising.microsoft.co") ||    searchshield.DoesURLContain(tag.href, "javascript:")    ||    searchshield.DoesURLContain(tag.href, "go.microsoft.co")   ||    searchshield.DoesURLContain(tag.href, "hotmail.co")) {  // not a link  return false; } else if (tag.id.toLowerCase() == "trademarks") {  // don't link the trademark at the bottom of the page  return false; } else {  // include it  return tag.href; }};///////////////    MSN SEARCH ENGINE    //////////////////////////////    BING SEARCH ENGINE    ///////////////searchshield.BingSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.BingSearchEngine.prototype = new searchshield.SearchEngine();searchshield.BingSearchEngine.prototype.constructor = searchshield.BingSearchEngine;searchshield.BingSearchEngine.prototype.name = "bing";searchshield.BingSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query;  // For bing the host must match: // www.bing.com or www.bing.net // xx.bing.com or xx.bing.net where xx is a country code // bing.com.xx where xx is a country code // bing.search.xxxx.net where xxxx may be something like daum if ((domain.indexOf("www.bing.com") !== -1) ||  (domain.indexOf("www.bing.net") !== -1) ||  (domain.indexOf("bing.net") !== -1)) {  hostMatch = true; } else if ((domain.indexOf("bing.search.") !== -1) &amp;&amp;     (domain.indexOf(".net") === (domain.length-4)))  { //bing.search.xxxx.net  hostMatch = true; } else { // xx.bing.com or bing.com.xx  var domainLen = domain.length;  var tldPos = domain.indexOf(".bing.com");  if (tldPos &gt; -1)  {   if ((domainLen - tldPos) == 9)    hostMatch = true;  }  }  if (hostMatch) {  var displayStyle = (domain == 'bing.search.daum.net') ? 'inline-block' : 'inline';  this.addAnchorStyle = {   display: displayStyle  };    if (path.indexOf("search?") == 0)   return true; } return false;};searchshield.BingSearchEngine.prototype.includeLink = function(tag){ var outHref = false; if (tag.tagName == 'IMG') { //no images   return false; }   if (tag.href.charAt(0) == '/') { //no relative links  return false; } if (/trademarks/i.test(tag.id)) {  // don't link the trademark at the bottom of the page  return false; }  if ((tag.parentNode) &amp;&amp; (/sc_stc/i.test(tag.parentNode.id))) { // don't verdict the social sites - our verdict doesn't fit  return false; } else if (!!searchshield.getParentNodeByClassName("sw_t",tag,3)) { // no links in page header  return false; } else if (searchshield.DoesURLContain(tag.href, "r.msn.co") ||    searchshield.DoesURLContain(tag.href, "overture.com")) { // france has r.msn.co and italy has overture.com sponsored links  // with the link in CITE element    var spanElements = null;    // top links - check for a CITE  spanElements = tag.getElementsByTagName("CITE");  if ((spanElements == null) || (spanElements.length &lt;= 0))  {   if (tag.parentNode &amp;&amp; tag.parentNode.parentNode)    spanElements = tag.parentNode.parentNode.getElementsByTagName("CITE");  }    if ((spanElements != null) &amp;&amp; (spanElements.length &gt; 0))  {   outHref = spanElements[0].innerHTML;   if (outHref != null)   {    // replace any nbsp's    outHref = outHref.replace("&amp;nbsp;", " ");    // url is after the last space in the html, after the '-'    var space_pos = outHref.lastIndexOf(" ");    if (space_pos != -1)     outHref = outHref.slice(space_pos + 1);    outHref = searchshield.checkUrl(outHref);    // save the link    return outHref;   }  }    // side links   if (tag.lastChild != null)  {   outHref = tag.lastChild.innerHTML;   if (outHref != null)   {    outHref = searchshield.checkUrl(outHref);    // save the link    return outHref;   }  } } // no sponsored links for now  else if (searchshield.DoesURLContain(tag.href, this.search.uri.host) ||   searchshield.DoesURLContain(tag.href, ".live.com")    ||   searchshield.DoesURLContain(tag.href, ".bing.com")    ||   searchshield.DoesURLContain(tag.href, ".bing.net")    ||   searchshield.DoesURLContain(tag.href, ".daum.net")    ||   searchshield.DoesURLContain(tag.href, ".gmarket.co")   ||   searchshield.DoesURLContain(tag.href, ".multimap.com")   ||   searchshield.DoesURLContain(tag.href, "msn.")     ||   searchshield.DoesURLContain(tag.href, "ms.ciao.")    ||   searchshield.DoesURLContain(tag.href, "ms.ciao-")    ||   searchshield.DoesURLContain(tag.href, "advertising.microsoft.co") ||   searchshield.DoesURLContain(tag.href, "javascript:")    ||   searchshield.DoesURLContain(tag.href, "go.microsoft.co")   ||   searchshield.DoesURLContain(tag.href, "hotmail.co")     ||   searchshield.DoesURLContain(tag.href, "cc.bingj.com")    ||   searchshield.DoesURLContain(tag.href, "microsofttranslator.com") ||   searchshield.DoesURLContain(tag.href, ".engkoo.com")    ||   searchshield.DoesURLContain(tag.href, "sealinfo.verisign.com")  ||   searchshield.DoesURLContain(tag.href, "explabs.com")    ||   searchshield.DoesURLContain(tag.href, "onlinehelp.microsoft.com") ||   searchshield.DoesURLContain(tag.href, ".myoverture")) {  // not a link  return false; } else  return tag.href;};searchshield.BingSearchEngine.prototype.addImage = function(node, image, hidden){ var element = node.element; var parentNode  = node.element.parentNode; var grandParentNode = !!parentNode ? parentNode.parentNode : null; // if there are redundant links in the same grandparent then skip them if (!!grandParentNode) {  gpChildren = grandParentNode.childNodes;  for (var i=0; i &lt; gpChildren.length; i++)  {   if (!!element.href &amp;&amp; gpChildren[i].tagName == "A" &amp;&amp; gpChildren[i].href == element.href)    return;  } } var parent = searchshield.SearchEngine.prototype.addImage; return parent.call(this, node, image, hidden);};///////////////    BING SEARCH ENGINE    //////////////////////////////    BAIDU SEARCH ENGINE    ///////////////searchshield.BaiduSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.updateImageStyle = {  verticalAlign: null };};searchshield.BaiduSearchEngine.prototype = new searchshield.SearchEngine();searchshield.BaiduSearchEngine.prototype.constructor = searchshield.BaiduSearchEngine;searchshield.BaiduSearchEngine.prototype.name = "baidu";searchshield.BaiduSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query;  if (domain == "www.baidu.com" || path.indexOf("testBaidu") !== -1)  hostMatch = true;   if (hostMatch) {  if (path.indexOf("s?") == 0)   return true; } return false;};searchshield.BaiduSearchEngine.prototype.includeLink = function(tag){    if (tag.className &amp;&amp; tag.className == "m")   return false;  if (searchshield.DoesURLContain(tag.href, this.search.uri.host))   return false;  else   {   // no link to self   var traverseElement = tag.parentNode;   while ( traverseElement &amp;&amp; traverseElement.className != "tbody")   {    if (traverseElement.className == "f")     return tag.href;    traverseElement = traverseElement.parentNode;   }      return false;  }};///////////////    BAIDU SEARCH ENGINE    //////////////////////////////    EARTHLINK SEARCH ENGINE    ///////////////searchshield.EarthlinkSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.onlyPrimaries = false; this.addAnchorStyle = {  position: "static" };};searchshield.EarthlinkSearchEngine.prototype = new searchshield.SearchEngine();searchshield.EarthlinkSearchEngine.prototype.constructor = searchshield.EarthlinkSearchEngine;searchshield.EarthlinkSearchEngine.prototype.name = "earthlink";searchshield.EarthlinkSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var hostMatch = false; var domain  = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For EarthLink the host must match: // search.earthlink.net if (("search.earthlink.net" == domain) &amp;&amp;  (path.indexOf("search?") == 0)) {  return true; } return false;};searchshield.EarthlinkSearchEngine.prototype.includeLink = function(tag){ var outHref = ""; var findStr = ""; // check for an anchor if (tag.tagName == "A") {  // check for sponsored  if (tag.id.indexOf("a") == 0)  {   var q = tag.href.indexOf("&amp;q=");   var qlen = 3;   if (q == -1)   {    q = tag.href.indexOf("&amp;adurl=");    qlen = 7;    if (q == -1)     return false;   }   // find end of url   var end = tag.href.indexOf("&amp;", q+qlen);   if (end &lt; 0)    end = tag.href.length;   // add the link   outHref = tag.href.substring(q+qlen, end);      if (searchshield.FilterUrl(outHref, this.filter_urls))    return false;       return outHref;  }  // don't search url's to self  if ((tag.href.indexOf("://") == -1) || searchshield.DoesURLContain(tag.href, this.search.uri.host))   return false;  // if a normal web result add it  if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == "H3") &amp;&amp;   tag.parentNode.parentNode &amp;&amp; (tag.parentNode.parentNode.tagName == "LI") &amp;&amp;   tag.parentNode.parentNode.parentNode &amp;&amp; (tag.parentNode.parentNode.parentNode.tagName == "UL"))  {   if (searchshield.FilterUrl(tag.href, this.filter_urls))    return false;       return tag.href;  } }  return false;};///////////////    EARTHLINK SEARCH ENGINE    //////////////////////////////    AOL SEARCH ENGINE    ///////////////searchshield.AOLSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);  this.addImageStyle = {  display: "inline" }; this.addAnchorStyle = {  display: null }; this.updateImageStyle = {  verticalAlign: null,  display: "inline" };};searchshield.AOLSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AOLSearchEngine.prototype.constructor = searchshield.AOLSearchEngine;searchshield.AOLSearchEngine.prototype.name = "aol";searchshield.AOLSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain = uri.host; //path may be 'aol/search' or 'search' var pathArray = uri.path.split("/"); var aol = pathArray[0]; // re stitch the uri path and query elements // to use existing logic var path = (undefined == pathArray[1]) ? pathArray[0] : pathArray[1];  path += uri.delimiter + uri.query; if (/search\.aol\.com/.test(domain)) {  if ((aol == "aol") &amp;&amp;   (path.indexOf("search?") == 0))  {   return true;  } }  return false;};searchshield.AOLSearchEngine.prototype.includeLink = function(tag){ if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  // sponsored links - google if ((tag.className) &amp;&amp; (tag.className.indexOf("slLink topAnchor") != -1)) { //parse for embedded href  if (tag.href.indexOf("/aclk?sa=") == -1)   return false;  var adurl = tag.href.indexOf("&amp;adurl=http");  // if an adurl the destination href can be acquired from the onclick handler  if (adurl != -1)  {   var destUrl;   var clickHandler = tag.getAttribute('onclick');   if (clickHandler != null)   {    // the destination href is the 2nd parameter (zero-based array)    destUrl = searchshield.getClickHandlerParams(clickHandler)[1];    if (destUrl != null)    {     destUrl = searchshield.removeHtmlTags(destUrl.replace(/'/g,''));     return searchshield.checkUrl(destUrl);    }   }  }  return false; } if (tag.className == "find")  return tag.href;   return false;};searchshield.AOLSearchEngine.prototype.insertNodes = function(node, doc){ var element = node.element; var score = node.score; if (element &amp;&amp; element.className &amp;&amp; element.className.indexOf("slLink") != -1) { //sponsored links only  // for alt image  if (score == searchshield.SCORE_SS_VERISIGN)   return [element.nextSibling, element.parentNode];  // for verdict image  var cN = element.childNodes;  var cnLen = cN.length;  for (var i=0; i &lt; cnLen; i++)  {   if ((cN[i].nodeType == 1) &amp;&amp;     (cN[i].nodeName == 'SPAN') &amp;&amp;     ((cN[i].className == 'title') || (cN[i].className == 'durl')))    return [cN[i].nextSibling, cN[i].parentNode];  } } var parent = searchshield.SearchEngine.prototype.insertNodes; return parent.call(this, node, doc);};///////////////    AOL SEARCH ENGINE    //////////////////////////////    ASK SEARCH ENGINE    ///////////////searchshield.AskSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.AskSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AskSearchEngine.prototype.constructor = searchshield.AskSearchEngine;searchshield.AskSearchEngine.prototype.name = "ask";searchshield.AskSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query;  if ("www.ask.com" == domain) {  if (path.indexOf("web?") == 0)   return true; } return false;};searchshield.AskSearchEngine.prototype.includeLink = function(tag){ var outHref = ""; var findStr = ""; if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  if ((tag.className) &amp;&amp; (tag.className.indexOf("nu") != -1) &amp;&amp; (tag.className.indexOf("info") == -1))  {  // exclude green links  if ((tag.firstChild) &amp;&amp;   (tag.firstChild.className) &amp;&amp;   (tag.firstChild.className.indexOf('attrib') == 0))  {   return false;  }  // ads link to google with class nu  findStr = "www.google.com";  if (tag.href.indexOf(findStr) != 0)  {   if (tag.href.indexOf(findStr + "/aclk?sa=") != -1)   {     findStr = "&amp;adurl=http";    var pos = tag.href.indexOf(findStr);    if (pos != -1)    {     pos += 7;     outHref = tag.href.substring(pos);     outHref = unescape(outHref);     if (searchshield.FilterUrl(outHref, this.filter_urls))       return false;     return outHref;    }   }  }  else  { // ad not to google just use href   outHref = tag.href;   if (searchshield.FilterUrl(outHref, this.filter_urls))    return false;   return outHref;  } } // primary results have class containing title or L2 ( Wikipedia links ) else if ((tag.className) &amp;&amp; ((tag.className.indexOf("title") != -1) || (tag.className.toLowerCase() == "l2"))) {  outHref = tag.href;  if (searchshield.FilterUrl(outHref, this.filter_urls))   return false;  return outHref; }  return false;};///////////////    ASK SEARCH ENGINE    //////////////////////////////    ALTAVISTA SEARCH ENGINE    ///////////////searchshield.AltaVistaSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.AltaVistaSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AltaVistaSearchEngine.prototype.constructor = searchshield.AltaVistaSearchEngine;searchshield.AltaVistaSearchEngine.prototype.name = "altavista";searchshield.AltaVistaSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host;  // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; // www.atlavista.com ---&gt; now http://us.yhs4.search.yahoo.com/yhs/search?fr=altavista&amp;fr=altavista&amp;itag=ody&amp;q=warez&amp;kgs=1&amp;kls=0 // xx.altavista.com where xx is a country code var hostMatch = false; if ("www.altavista.com" == domain) {  hostMatch = true; } else {  // xx.altavista.com  var pDest = domain.indexOf(".altavista.com");  if ((pDest != -1 ) &amp;&amp; ((domain.length - pDest) == 14))  {   hostMatch = true;  }  else  {   // a reference to altavista must be present in yahoo search url   var pRef = (uri.qsArray.fr &amp;&amp; uri.qsArray.fr == 'altavista');   pDest = domain.indexOf("search.yahoo.com");   if (pDest != -1 &amp;&amp; pRef)    hostMatch = true;  } } if (hostMatch) {  //path must start with web/results?  if ((path.indexOf("yhs/search?") == 0) ||   (path.indexOf("search;") == 0)  ||   (path.indexOf("yhs/search;") == 0) ||   (path.indexOf("web/results?") == 0)||   (path.indexOf("fr=altavista") != -1))  {   return true;  } }  return false;};searchshield.AltaVistaSearchEngine.prototype.includeLink = function(tag){ var outHref = ""; var findStr = ""; // initial checks if ((!tag.href) ||   (tag.href.charAt(0) == '#') ||  (tag.href.indexOf("javascript:") == 0)) {  return false; }   if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  var spnsdLinks = searchshield.getParentNodeByTagName("DIV", tag, "className"); if ((spnsdLinks) &amp;&amp;  (spnsdLinks.className.indexOf('ads') &gt; -1)) // sponsored links {  if (!tag.parentNode)   return false;  // parse ads for em tag  var baseNode;  if (spnsdLinks.className.indexOf('ads horiz') &gt; -1) // horizontal ads sections   baseNode = tag.parentNode.parentNode;  else   baseNode = tag.parentNode;    if (!baseNode || !baseNode.lastChild || baseNode.lastChild.tagName != 'EM')   return false;  var outHref = searchshield.removeHtmlTags(baseNode.lastChild.innerHTML);  return outHref; }  if ((tag.className == "spt") ||   (tag.className == "res") ||  (tag.className == "yschttl spt")) {  findStr = "/**";  var pos = tag.href.indexOf(findStr);  if (pos != -1)  {   pos += 3;   outHref = tag.href.substring(pos);   outHref = unescape(outHref);      // no results for overture.com &amp; no yahoo domains   chkHref = outHref.toLowerCase();   if (chkHref.indexOf("overture.") != -1)    return false;   // split the url based on '/'   var parts = outHref.split('/');   // only need a domain   if ((parts != null) &amp;&amp; (parts[2] != null))   {    var domain = parts[2];    if ((domain.indexOf("rdrjp.yahoo.com") != -1) ||     (domain.indexOf("rdrkrs.yahoo.com") != -1) ||     (domain.indexOf("rdrtpe.yahoo.com") != -1) ||     (domain.indexOf("rdrird.yahoo.com") != -1) ||     (domain.indexOf("rdrhk2.yahoo.com") != -1) ||     (domain.indexOf("rdrsg1.yahoo.com") != -1) ||     (domain.indexOf("rdrin2.yahoo.com") != -1) ||     (domain.indexOf("rdre1.yahoo.com") != -1) ||     (domain.indexOf("rdrw1.yahoo.com") != -1)  )    {     return false    }   }   return outHref;  }  else  {   return tag.href;  } }  return false;};searchshield.AltaVistaSearchEngine.prototype.getImgElement = function (element){ while (element != null)  {  element = element.nextSibling;  if (element != null)  {   if ((element.id == null) || (element.id.indexOf("LXPLSS_") == -1))   {   // not our id but hit another anchor no verdict    if (element.tagName == "A")    {     element = null;     break;    }   }   else if (element.tagName == "A")    break;  } }   var rtnElem = !!element ? element.firstChild : element; return rtnElem;};///////////////    ALTAVISTA SEARCH ENGINE    //////////////////////////////    YANDEX SEARCH ENGINE    ///////////////searchshield.YandexSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.YandexSearchEngine.prototype = new searchshield.SearchEngine();searchshield.YandexSearchEngine.prototype.constructor = searchshield.YandexSearchEngine;searchshield.YandexSearchEngine.prototype.name = "yandex";searchshield.YandexSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.match(/yandex\.com|by|kz|ru|ua/i)) &amp;&amp;  (path.indexOf("yandsearch?") == 0)) {  return true; }  return false;};searchshield.YandexSearchEngine.prototype.includeLink = function(tag){ if (tag.href.indexOf("/search") != -1) {  return false; }  if (searchshield.DoesURLContain(tag.href, this.search.uri.host) ||  searchshield.DoesURLContain(tag.href, ".yandex.net")  ||  searchshield.DoesURLContain(tag.href, ".yandex.ru")   ||  searchshield.DoesURLContain(tag.href, "moikrug.ru")   ||  searchshield.DoesURLContain(tag.href, "ya.ru")    ||  searchshield.DoesURLContain(tag.href, ".yandex.com")  ||  searchshield.DoesURLContain(tag.href, "yandex.st")) {  return false; }   parentNode = tag.parentNode; if ((tag.parentNode)   &amp;&amp;   (tag.parentNode.parentNode) &amp;&amp;  (tag.parentNode.parentNode.className.toLowerCase() == "moreinfo")) {  return false; }  return tag.href;};searchshield.YandexSearchEngine.prototype.getImgElement = function (element){ while (element != null)  {  element = element.nextSibling;  if (element != null)  {   if ((element.id == null) || (element.id.indexOf("LXPLSS_") == -1))   {   // not our id but hit another anchor no verdict    if (element.tagName == "A")    {     element = null;     break;    }   }   else if (element.tagName == "A")    break;  } }   var rtnElem = !!element ? element.firstChild : element; return rtnElem;};///////////////    YANDEX SEARCH ENGINE    //////////////////////////////    SEZNAM SEARCH ENGINE    ///////////////searchshield.SeznamSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.elementAttribute = {  width: "18",  height: "18" }; this.updateImageStyle = {  width: "18px",  height: "18px" };};searchshield.SeznamSearchEngine.prototype = new searchshield.SearchEngine();searchshield.SeznamSearchEngine.prototype.constructor = searchshield.SeznamSearchEngine;searchshield.SeznamSearchEngine.prototype.name = "seznam";searchshield.SeznamSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("search.seznam.cz") &gt; -1) &amp;&amp;  ((path.indexOf("?") == 0) || (path.indexOf("svet") == 0))) {  return true; }  return false;};searchshield.SeznamSearchEngine.prototype.includeLink = function(tag){ if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  var parentNode = tag.parentNode; if (parentNode) {  var grandParentNode = tag.parentNode.parentNode;  if ((parentNode.tagName == "SPAN") &amp;&amp;    ((parentNode.className.toLowerCase() == "sklik-url") ||   (parentNode.className.toLowerCase() == "sklik-title")))  { // locate the real url and unencode it   var urlPos = tag.href.indexOf("&amp;url=http");   if (urlPos != -1)   {    urlPos += 5;     outHref = tag.href.substring(urlPos);    outHref = unescape(outHref);    return outHref;   }  }  else if (grandParentNode)   {   var greatGrandParentNode = tag.parentNode.parentNode.parentNode;   if ((grandParentNode.tagName == "DIV") &amp;&amp;    ((grandParentNode.className.toLowerCase() == "text") || (grandParentNode.className.toLowerCase() == "hlasky otz")))   { // standard link    return tag.href;   }   else if (greatGrandParentNode &amp;&amp; greatGrandParentNode.tagName == "DIV" &amp;&amp;     (greatGrandParentNode.className.toLowerCase() == "hotlinks"))    { // hint link    return tag.href;   }     } }  return false;};///////////////    SEZNAM SEARCH ENGINE    //////////////////////////////    WEBHLEDANI SEARCH ENGINE    ///////////////searchshield.WebhledaniSearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.WebhledaniSearchEngine.prototype = new searchshield.SearchEngine();searchshield.WebhledaniSearchEngine.prototype.constructor = searchshield.WebhledaniSearchEngine;searchshield.WebhledaniSearchEngine.prototype.name = "webhledani";searchshield.WebhledaniSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("webhledani.cz") &gt; -1) &amp;&amp;  (path.indexOf("results.aspx?") == 0)) {  return true; }  return false;};searchshield.WebhledaniSearchEngine.prototype.includeLink = function(tag){ if (tag.href.indexOf("/redir.aspx?") != -1) {  var ancestorNode;  // sponsored link  if ((ancestorNode = searchshield.getParentNodeByClassName("results sponsored", tag, 3)) != null)  {   if ((ancestorNode = searchshield.getParentNodeByClassName("res1", tag, 2)) != null)   {        var spanSibling = ancestorNode.nextSibling;    while (spanSibling.nodeName != 'SPAN')    {     spanSibling = spanSibling.nextSibling;     if (spanSibling.nodeName == 'DIV' || spanSibling.className == 'res1')     {      spanSibling = null;      break;     }    }    if (spanSibling)      outHref = spanSibling.innerHTML;   }   if (outHref)    return searchshield.checkUrl(searchshield.removeHtmlTags(outHref));   }   if ((ancestorNode = searchshield.getParentNodeByClassName("right-sponsored", tag, 3)) != null)  {   var outHref;   if ((ancestorNode = searchshield.getParentNodeByClassName("res3", tag, 2)) != null)   {        var spanSibling = ancestorNode.nextSibling;    while (spanSibling.nodeName != 'SPAN')    {     spanSibling = spanSibling.nextSibling;     if (spanSibling.nodeName == 'DIV' || spanSibling.className == 'res3')     {      spanSibling = null;      break;     }    }    if (spanSibling)      outHref = spanSibling.innerHTML;   }   if (outHref)    return searchshield.checkUrl(searchshield.removeHtmlTags(outHref));   }  // result link  if (searchshield.getParentNodeByClassName("results", tag, 3) != null)  {   if ((ancestorNode = searchshield.getParentNodeByClassName("res2", tag, 2)) != null)   {    if (tag.parentNode &amp;&amp; (tag.parentNode.nodeName != 'P'))     return getLinkHref(ancestorNode);   }  } } return false; function getLinkHref(aNode) {  var spanElems = aNode.getElementsByTagName('span');  for (var i=0; i &lt; spanElems.length; i++)  {   if (spanElems[i].className != 'site')    continue;   var outAnchor = spanElems[i].getElementsByTagName('a')[0];   if (outAnchor == null)    outAnchor = spanElems[i];   return searchshield.checkUrl(searchshield.removeHtmlTags(outAnchor.innerHTML));  }  return false; }};///////////////    WEBHLEDANI SEARCH ENGINE    //////////////////////////////    EBAY SEARCH ENGINE    ///////////////searchshield.eBaySearchEngine = function(search){ searchshield.SearchEngine.call(this, search);};searchshield.eBaySearchEngine.prototype = new searchshield.SearchEngine();searchshield.eBaySearchEngine.prototype.constructor = searchshield.eBaySearchEngine;searchshield.eBaySearchEngine.prototype.name = "ebay";searchshield.eBaySearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // shop.ebay.xx // shop.xxxx.ebay.xx like shop.benl.ebay.be // search.auction.co.kr  var path = uri.path + uri.delimiter + uri.query;  if ((domain.indexOf("shop.ebay") &gt; -1) ||  (domain.indexOf("shop.benl.ebay") &gt; -1)) {  if ((path.indexOf("?_from=") == 0) ||   (path.indexOf("i.html") &gt; -1))  {   return true;  } }  // ebay.se if ((domain.indexOf("search.eim.ebay") &gt; -1) &amp;&amp;  ((path.indexOf("?kw=") &gt; -1) || (path.indexOf("?ev=") &gt; -1))) {  return true; }  if ((domain.indexOf("search.auction.co.kr") &gt; -1 ) &amp;&amp;  ((path.indexOf("?keyword=") &gt; -1))) {  // would normally set these properties in the constructor or in an  // overriding function but they're only required for this domain     // links are in iframes  this.processFrames = true;    // must downsize verdicts for proper display  this.elementAttribute = {   width: "16",   height: "16"  };  this.updateImageStyle = {   width: "16px",   height: "16px"  };    return true; } // latin america ebay // listado.mercadolibre.com.xx or listado.mercadolibre.co.xx //   or listado.mercadolibre.xx or //   category.mercadolibre.com.xx or listado.mercadolibre.xx/category // lista.mercadolivre.com.xx or lista.mercadolivre.com.xx/category if ((domain.indexOf("www.") == -1) &amp;&amp;  ((domain.indexOf(".mercadolibre.") &gt; -1 ) ||   (domain.indexOf(".mercadolivre.") &gt; -1 )))  {  return true; } return false;};searchshield.eBaySearchEngine.prototype.includeLink = function(tag){ var parentNode = null; var outHref = false;  if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;  if ( tag.href.indexOf(".ebayrtm.com/clk?") &gt; -1 ) {  if ( tag.title == null || tag.title.length &lt; 0 )   return false;       outHref = searchshield.removeHtmlTags(tag.title);  if (outHref.indexOf(" ") == -1)  { // no spaces   if (outHref.indexOf(".") &gt; -1)   { // at least one dot     if (outHref.indexOf(this.search.uri.host) == -1)    { // no host     if (outHref.toLowerCase().indexOf("ebay.com") == -1)     {      return outHref;     }    }   }  }    } // ebay.se - Google ads parentNode = tag.parentNode; if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == "google-ad-link")) {  if (tag.href.indexOf("/aclk?sa=") != -1)  {    findStr = "&amp;adurl=http";   var urlPos = tag.href.indexOf(findStr);   if (urlPos != -1)   {    urlPos += 7; // puts it on the http    outHref = tag.href.substring(urlPos);        // extract any fragment text, shouldn't be unescaped    var pound = outHref.indexOf("#");     if (pound != -1)    {     var fragment = outHref.substring(pound);     outHref = outHref.substring(0, pound);     outHref = unescape(outHref);     outHref += fragment;     if (searchshield.FilterUrl(outHref, this.filter_urls))      return false;     return outHref;    }    outHref = unescape(outHref);    if (outHref.indexOf("?") == -1)    {     var ampPos = outHref.indexOf("&amp;");     if (ampPos != -1)      outHref = outHref.substring(0, ampPos);    }        if (searchshield.FilterUrl(outHref, this.filter_urls))     return false;    return outHref;   }  } }  // auction.co.kr parentNode = tag.parentNode; if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == "link")) {  if (tag.href.indexOf("adcr.naver.com") &gt; -1)  {   outHref = tag.innerText;   if ((outHref == null) || (outHref.length &lt; 0))    return false;       return outHref;  } }  // latin america ebay if ( tag.href.toLowerCase().indexOf("clickcounter?") &gt; -1 ) {  var spanElements = tag.getElementsByTagName("span");  if ((spanElements != null)    &amp;&amp;    (spanElements.length &gt; 0))  {   if ( spanElements[0].className.toLowerCase() == "mclics-url" )   {    outHref = spanElements[0].innerHTML;    if ( outHref == null || outHref.length &lt; 0 )     return false;    outHref = searchshield.removeHtmlTags(outHref);    if (outHref.indexOf(" ") == -1)    { // no spaces     if (outHref.indexOf(".") &gt; -1)     { // at least one dot       if ((outHref.toLowerCase().indexOf("mercadolibre") == -1) &amp;&amp;        (outHref.toLowerCase().indexOf("mercadolivre") == -1))       {       return outHref;      }     }    }   }  } }  return false;};///////////////    EBAY SEARCH ENGINE    //////////////////////////////    DIGG SEARCH ENGINE    ///////////////searchshield.DiggSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.new_links = false;};searchshield.DiggSearchEngine.prototype = new searchshield.SearchEngine();searchshield.DiggSearchEngine.prototype.constructor = searchshield.DiggSearchEngine;searchshield.DiggSearchEngine.prototype.name = "digg";searchshield.DiggSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query;  if ((domain.indexOf("digg.com") &gt; -1) &amp;&amp;  (path.indexOf("/ad") == -1)) {  return true; }  return false;};searchshield.DiggSearchEngine.prototype.includeLink = function(tag){ var outHref = false; var findStr = "";  if ((tag.parentNode) &amp;&amp;  (tag.parentNode.className.toLowerCase() == "digg-count")) {  return false; }  if (searchshield.DoesURLContain(tag.href, this.search.uri.host)) {  if (tag.className &amp;&amp; tag.className.indexOf('source') != -1)  {   findStr = "/search?q=site:";   var urlPos = tag.href.indexOf(findStr);   if (urlPos != -1)   {    urlPos += 15;    outHref = tag.href.substring(urlPos);    return outHref;   }  } }  return false;};searchshield.DiggSearchEngine.prototype.addImage = function(node, image, hidden){ // remove style that is set when alt image is applied this.addAnchorStyle = {  background: "none" };   var parent = searchshield.SearchEngine.prototype.addImage; return parent.call(this, node, image, hidden);};///////////////    DIGG SEARCH ENGINE    //////////////////////////////    SLASHDOT SEARCH ENGINE    ///////////////searchshield.SlashdotSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.new_links = false; this.type = 'inline';};searchshield.SlashdotSearchEngine.prototype = new searchshield.SearchEngine();searchshield.SlashdotSearchEngine.prototype.constructor = searchshield.SlashdotSearchEngine;searchshield.SlashdotSearchEngine.prototype.name = "slashdot";searchshield.SlashdotSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query;  if (domain.indexOf("slashdot.org") != -1) {  return true; }  return false;};searchshield.SlashdotSearchEngine.prototype.includeLink = function(tag){ if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false;   if ( tag.href.indexOf("mailto:") != -1 )  return false;   if ( tag.href.indexOf("slashdot.org") != -1 )  return false;   if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == "DIV")) {  if (tag.parentNode.id.indexOf("text-") != -1)  {   return tag.href;  } } else if ( tag.parentNode &amp;&amp; tag.parentNode.parentNode &amp;&amp; tag.parentNode.parentNode.tagName == "DIV" ) {  if ( tag.parentNode.parentNode.id.indexOf("text-") != -1 )  {   return tag.href;  } } return false;};searchshield.SlashdotSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;  this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};///////////////    SLASHDOT SEARCH ENGINE    //////////////////////////////    TWITTER SEARCH ENGINE    ///////////////searchshield.TwitterSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.new_links = false; this.type = 'inline';};searchshield.TwitterSearchEngine.prototype = new searchshield.SearchEngine();searchshield.TwitterSearchEngine.prototype.constructor = searchshield.TwitterSearchEngine;searchshield.TwitterSearchEngine.prototype.name = "twitter";searchshield.TwitterSearchEngine.prototype.twitter_filter_urls = ["twitpic.com", "twitterfeed.com", "twitter.peoplebrowsr.com"];searchshield.TwitterSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false;  var domain= uri.host; if (domain.indexOf("twitter.com") != -1) {  return true; }  return false;};searchshield.TwitterSearchEngine.prototype.includeLink = function(tag){ if (tag.className == 'twitter-timeline-link') {  // can't pass the tag's href if domain is t.co cause then new posts  // will not get an immediate verdict even if it has a dangerous link  if (tag.href.indexOf('/t.co/') != -1)  {   // the tag's inner text may be truncated and end in the    // unicode suspension character (i.e., ...) and it cannot    // be used.   if (tag.innerText.charCodeAt(tag.innerText.length-1) == 8230)   {    // older posts may not always have data-expanded-url    var destUrl = tag.getAttribute('data-expanded-url');    if (!!destUrl)     return destUrl;    var finalUrl = searchshield.avgCallFunc(document, 'GetFinalUrl', tag.href);    return finalUrl;   }   return searchshield.checkUrl(tag.innerText);  }  return tag.href; } return false;};searchshield.TwitterSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;   this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};///////////////    TWITTER SEARCH ENGINE    //////////////////////////////    GMAIL SEARCH ENGINE    ///////////////searchshield.GMailSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.processFrames = true; this.showCleanVerdicts  = false; this.type = 'inline';};searchshield.GMailSearchEngine.prototype = new searchshield.SearchEngine();searchshield.GMailSearchEngine.prototype.constructor = searchshield.GMailSearchEngine;searchshield.GMailSearchEngine.prototype.name = "gmail"; // the name by which the search engine is known (always lowercase)searchshield.GMailSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; var domain  = uri.host;  // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("mail.google.") != -1) ||   (domain.indexOf("gmail.") != -1)) {  return true; } return false;};searchshield.GMailSearchEngine.prototype.includeLink = function(tag){ if (searchshield.DoesURLContain(tag.href, this.search.uri.host))  return false; // don't mark anything but http:// if (tag.href.indexOf("mailto") == 0)  return false; var parentDiv = searchshield.getParentNodeByTagName("DIV", tag, "className"); if ((parentDiv) &amp;&amp;  ((parentDiv.className == "ii gt") || // mail message body   (parentDiv.className == "mv") || // top sponsored links   (parentDiv.className == "vb") || // right sponsored links   (parentDiv.className == "im") || // inside quotes   (parentDiv.className == "gmail_quote") || // quote   (parentDiv.className == "msg") // basic html mode   )) // right ads {  // parse for any ads  var newHref = this.parseAdUrl(tag.href);  return newHref; }  return false;};searchshield.GMailSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;   this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};searchshield.GMailSearchEngine.prototype.parseAdUrl = function(href){ if (!href)  return href; // check for google ad var regex = "^http(s)?\:\/\/([a-zA-Z0-9]+)\.googlesyndication\.com.+\&amp;adurl\=(.+)"; var re = new RegExp(regex); var matches = href.match(re); if (matches &amp;&amp; (matches.length &gt;= 4)) {  // else we want the fourth value  var match = matches[3];  if (match &amp;&amp; (match.length &gt; 0))   return match } return href;};///////////////    GMAIL SEARCH ENGINE    //////////////////////////////    FACEBOOK SEARCH ENGINE    ///////////////searchshield.FacebookSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.type = 'inline';};searchshield.FacebookSearchEngine.prototype = new searchshield.SearchEngine();searchshield.FacebookSearchEngine.prototype.constructor = searchshield.FacebookSearchEngine;searchshield.FacebookSearchEngine.prototype.name = "facebook"; // the name by which the search engine is known (always lowercase)searchshield.FacebookSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; if (uri.host.indexOf("www.facebook.com") != -1)   return true; return false;};searchshield.FacebookSearchEngine.prototype.includeLink = function(tag){ if (!tag.href || (tag.href.indexOf('facebook.com') &gt; -1) || (tag.href.indexOf('ak.fbcdn.net') &gt; -1))  return false;  return tag.href};searchshield.FacebookSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;   this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};///////////////    FACEBOOK SEARCH ENGINE    //////////////////////////////    MYSPACE SEARCH ENGINE    ///////////////searchshield.MySpaceSearchEngine = function(search){ searchshield.SearchEngine.call(this, search); this.showCleanVerdicts = false; this.type = 'inline';};searchshield.MySpaceSearchEngine.prototype = new searchshield.SearchEngine();searchshield.MySpaceSearchEngine.prototype.constructor = searchshield.MySpaceSearchEngine;searchshield.MySpaceSearchEngine.prototype.name = "myspace"; // the name by which the search engine is known (always lowercase)searchshield.MySpaceSearchEngine.prototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search)  uri = searchshield.parseLink(href); else  uri = this.search.uri; if(!uri || !uri.host)  return false; if (uri.host.indexOf("www.myspace.com") != -1)   return true; return false;};searchshield.MySpaceSearchEngine.prototype.includeLink = function(tag){ // related domains do not get verdicts if (/myspace/.test(tag.hostname) || /myspace/.test(tag.href))  return false; if (/msplinks\.com/i.test(tag.href))  return searchshield.checkUrl(tag.innerText);  return tag.href;};searchshield.MySpaceSearchEngine.prototype.addImage = function(node, image, hidden){ var doc   = this.search.doc;   this.init_inline_ratings(doc); this.show_inline_ratings(doc, node, image);};///////////////    MYSPACE SEARCH ENGINE    //////////////////////////////    AVG TOOLBAR REPORTING    ///////////////var avgreport = { BLOCK_SEVERITY: 3, scanResult: function (doc, url, foundUrl, ip) {  // report scan end only if surf enabled  if ('1' != searchshield.avgCallFunc(doc, 'GetSurfEnabled'))   return;    // for now native is handling the interstitial   var results = searchshield.avgCallFunc(doc, 'MalsiteCheck', url);  if ( results == null )   return;    var parts = results.split('::');    // need at least severity  if (parts == null)   return;  if (!ip)   ip = "";     // use a block severity if foundUrl is given  var severity = !!foundUrl ? avgreport.BLOCK_SEVERITY : parseInt(parts[0], 10);  var category = "";  var threat  = "";  // fill in the category and threat if something was found  if (severity &gt; 0)  {   category = parts[2];   threat  = parts[4];  }//  else//   return;    var scan_result = searchshield.avgCallFunc(doc, 'ReportScanResult', url, url, threat, category, ip, severity);  var scan_end = avgreport.scanEnd(doc, url);    return (scan_result &amp;&amp; scan_end); }, scanEnd: function (doc, url) {  return searchshield.avgCallFunc(doc, 'ReportScanEnd', url); }, GetInterstitialIP: function (interstitial) {  // simple regex to pull the IP address  var regex = /(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)/;  var match = regex.exec(interstitial);  if (!match)   return '';  return match[0]; }}///////////////    AVG TOOLBAR REPORTING    //////////////////////////////    FLYOVERS    ///////////////var avglsflyover = { count: 0, poppedUp: false, poppedElement: null, reset: function () {  avglsflyover.count = 0;  avglsflyover.poppedUp = false;  avglsflyover.poppedElement = null; }, popup: function (event, hash, search, flyover) {  if (!event)   event = window.event;  var div = document.getElementById("XPLSS_Flyover");  if (div == null)   return;  // establish target element and get its containing document object  // in case verdict is inside a frame  var eventTarget = event.srcElement;  var frameDoc = eventTarget.ownerDocument;  // if the element is the clock, don't pop over it  if ((eventTarget.src != null) &amp;&amp; (eventTarget.src.indexOf("clock.gif") != -1))   return;    // save the element we popped over  avglsflyover.poppedElement = eventTarget;  // if no flyover get it  if ((flyover == null) || (flyover == ""))  {   flyover = searchshield.avgCallFunc(frameDoc, 'BuildFlyover', hash);   if (!flyover)    return;   // cleanup flyover, replace any new lines   flyover = flyover.replace(/\r/g, "");   flyover = flyover.replace(/\n/g, "");   // escape any single quotes   flyover = flyover.replace(/'/g, "&amp;#39;");  }  // set the html in the layer  div.innerHTML = flyover;  // needed to prevent the flyover from hiding inadvertantly in IE7  if (searchshield.docMode == 7) {   div.style.backgroundColor = "#fff";  }  // there is an unwanted text node that causes vertical misalignment of flyover  if (div.firstChild.nodeType == 3)   div.removeChild(div.firstChild);    avglsflyover.poppedUp = true;  // reset display count  avglsflyover.count = 0;  avglsflyover.position(); }, hide: function (event) {  var frameDoc = document || top.document;  var div = frameDoc.getElementById("XPLSS_Flyover");  if ((div == null) || (div.style == null) || (div.style.visibility == "hidden"))   return;  var trans_div = frameDoc.getElementById("XPLSS_Trans");  if ((trans_div == null) || (trans_div.style == null) || (trans_div.style.visibility == "hidden"))   return;  // scroll and keydown events will pass a null event by design  // toElement will be null when mousing out of frameelement containing a verdict  if (event == null || event.toElement == null)  {   return;  }  if (trans_div.contains(event.toElement) || div.contains(event.toElement))   return;  // if the toElement is a cooresponding alt image then don't hide  // use try/catch because toElement will be null when mousing out of frame  try {   if (!!event.toElement.id &amp;&amp; !!event.srcElement.id)   {    if (event.toElement.id.indexOf(event.srcElement.id.substring(0,event.srcElement.id.length-2)) == 0)     return;      if (event.srcElement.id == 'XPLSS_Trans' &amp;&amp; /XPLSS_\d+VU\d/.test(event.toElement.id))     return;   }  }  catch(err){}  // hide and move somewhere off screen (negative offsets)  div.style.visibility = "hidden";  div.style.left = "-2100px";  div.style.top  = "-2100px";  trans_div.style.visibility = "hidden";  trans_div.style.left = "-2100px";  trans_div.style.top  = "-2100px";  return true; }, position: function () {  if (!avglsflyover.poppedUp || (avglsflyover.poppedElement == null))   return;  var flyover = document.getElementById("XPLSS_Flyover");  if (flyover == null)   return;  // relative position of flyover in relation to icon  var locateX = 0;  // 0=left, 1=right  var locateY = 0;  // 0=above, 1=below, 2=beside icon   // get window sizes  var winSize  = searchshield.viewPortSize();  var windowX  = winSize[0];  var windowY  = winSize[1];  // get the exact size of the flyover  var flyoverSize  = searchshield.elementSize(flyover);  var flyoverX  = flyoverSize[0];  var flyoverY  = flyoverSize[1];  var verdictWidth = 0;  if (avglsflyover.poppedElement &amp;&amp; avglsflyover.poppedElement.width)   verdictWidth = avglsflyover.poppedElement.width;    // get the bounding rect for image(s)  var imgRect = searchshield.GetFullBoundingRect(avglsflyover.poppedElement);  // half width/height of element bounding rect  var halfX = (imgRect.right - imgRect.left) / 2;  var halfY = (imgRect.bottom- imgRect.top) / 2;  // element the mouse is over, get the center position  var posX = searchshield.offsetLeft(avglsflyover.poppedElement) + halfX;  var posY = searchshield.offsetTop(avglsflyover.poppedElement) + halfY;  // if a verdict is inside a frame must get offsets for the frame element  var docFrames = document.frames;  if (docFrames)  {   for (var i=0; i &lt; docFrames.length; i++)   {    try {     var frameElem = docFrames[i].frameElement;     if (frameElem.contentWindow.document.getElementById(avglsflyover.poppedElement.id))     {      posX += searchshield.offsetLeft(frameElem);      posY += searchshield.offsetTop(frameElem);      break;     }    }    catch(frmErr){}   }  }  var transXOffset = 0;  if (imgRect.mid == undefined)   transXOffset = -1 * halfX;  else   transXOffset = ((imgRect.right + imgRect.left) / 2) - imgRect.mid;    // normalize pos to 0  -- get amount of scrolling in browser window  var scroll   = searchshield.scrollSize();  var pageOffsetX  = scroll[0];  var pageOffsetY  = scroll[1];  posX -= pageOffsetX;  posY -= pageOffsetY;  // setup the offsets  var offsetX = posX;  var offsetY = posY;  // calc where to display on page  if ((windowX - posX) &gt; posX)  {   // right   offsetX += halfX;   locateX = 1;  }  else  {   //left   offsetX -= (flyoverX + halfX);  }  if ((windowY - posY) &gt; posY)  {   // below   if (posY &lt; (windowY/4))   {    offsetY -= halfY;    locateY = 1;   }   else   {    offsetY -= (flyoverY / 2);    locateY = 2;   }  }  else  {   // above   if ((windowY - posY) &lt; (windowY/4))   {    offsetY -= (flyoverY - halfY);   }   else   {    offsetY -= (flyoverY / 2);    locateY = 2;   }  }  // make sure we aren't off the screen  if (offsetY &lt; 0)   offsetY = 0;  if ((offsetY + flyoverY) &gt; windowY)   offsetY = windowY - flyoverY;  // add page offsets back  offsetX += pageOffsetX;  offsetY += pageOffsetY;  posX += pageOffsetX;  posY += pageOffsetY;  var paddedOffsetX = 0; //provide space between icon and flyover  var padX = 3;  if (locateX == 0)   paddedOffsetX = offsetX - padX;  else   paddedOffsetX = offsetX + padX;  // set where to put the flyover  flyover.style.top = offsetY + "px";  flyover.style.left = paddedOffsetX + "px";  // set where to put the transparent layer  var trans = document.getElementById("XPLSS_Trans");  if (trans != null)  {   var trans_left = 0;   var trans_top  = 0;   var trans_width= 0;   var trans_height = 0;   // transparent layer should overlap verdict image   if (locateX == 0)    trans_left = posX - flyoverX - halfX;  // left    else    trans_left = posX - transXOffset - verdictWidth; // right   trans.style.left = trans_left + "px";   trans.style.top  = offsetY + "px";   trans.style.width = flyoverX + verdictWidth + "px";   trans.style.height = flyoverY + "px";  }  avglsflyover.display(); }, display: function () {  avglsflyover.count++;  if (avglsflyover.count == 1)  {   var flyover = document.getElementById("XPLSS_Flyover");   if (flyover == null)    return;   // show the flyover, must use a little count to tell, crazy stuff   flyover.style.visibility = "visible";   flyover.onmouseout = function(){    avglsflyover.hide(event);   };   // show the transparent layer   var trans_div = document.getElementById("XPLSS_Trans");   if (trans_div == null)    return;   trans_div.style.visibility = "visible";   trans_div.onmouseout = function(){    avglsflyover.hide(event);   };   avglsflyover.poppedUp = false;  } }, show: function () {  var div = document.getElementById("XPLSS_Flyover");  if (div == null)   return;  div.style.visibility = "visible";  var trans_div = document.getElementById("XPLSS_Trans");  if (trans_div == null)   return;  trans_div.style.visible = "visible"; }};var avglsinlineflyover = { build: function (riskCategory, riskName, bgColor, borderColor) {  var html = '';  html += '&lt;div class="avgILFO_head"&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="avgILFO_content"&gt;';  html += '&lt;img src=linkscanner://LS_Logo_Results.gif /&gt;';  html += riskCategory + '';  html += riskName + '';  html += '&lt;/div&gt;&lt;div class="avgILFO_foot"&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;';  return html; }, popup: function (event, flyover, nSeverity, blUrl) {  //set verdict info  var div = document.getElementById('XPLSS_InlineFlyover');  if (div == null)   return;    // blUrl is an object for a blacklisted short url  // when it is passed get the final url   if (blUrl != undefined)  {   var finalUrl = searchshield.avgCallFunc(document, 'GetFinalUrl', blUrl.sUrl);   var riskUrl = blUrl.sUrl;   if ((finalUrl) &amp;&amp; (searchshield.FilterUrl(finalUrl, xplSearch.engine.shortened_urls)))    finalUrl = avglsinlineflyover.getUrlFromQueryString(finalUrl);   var riskName = blUrl.riskNameLabel + finalUrl;   flyover = avglsinlineflyover.build(blUrl.riskCategory, riskName, blUrl.bgColor, blUrl.borderColor);  }  div.innerHTML = flyover;  div.style.width = "auto";  //reset width  div.style.position = "absolute";  if (searchshield.quirksMode || searchshield.docMode &lt;= 7)  {   var className = xplSearch.engine.inline.color.classname[nSeverity];   var imgBase = "linkscanner://" + className + "_inline_border_";   var divWidth = searchshield.elementSize(div)[0];   //round up to nearest 10 to avoid intentional wrapping in div   var flyoverWidth = divWidth + (10 - Math.ceil(10*((divWidth/10) - Math.floor(divWidth/10))));   var ilfoDivs = div.getElementsByTagName("div");   if (ilfoDivs &amp;&amp; ilfoDivs.length == 5)   {    //div.style.fontSize = "10px";    div.style.backgroundImage = "url(" + imgBase + "tl.png)";    div.style.backgroundPosition = "0 0";    div.style.backgroundRepeat = "no-repeat";    div.style.width = flyoverWidth + "px";    div.style.zIndex = "9999";       // avgILFO_head    ilfoDivs[0].style.backgroundImage = "url(" + imgBase + "tr.png)";    ilfoDivs[0].style.backgroundPosition = "top right";    ilfoDivs[0].style.backgroundRepeat = "no-repeat";    ilfoDivs[0].style.width = flyoverWidth + "px";    ilfoDivs[0].style.height = "5px";    // avgILFO_head div    ilfoDivs[1].style.height = "5px";       // avgILFO_content    ilfoDivs[2].style.backgroundImage = "url(" + imgBase + "r.png)";    ilfoDivs[2].style.backgroundPosition = "top right";    ilfoDivs[2].style.backgroundRepeat = "repeat-y";    ilfoDivs[2].style.fontSize = "10px";    ilfoDivs[2].style.color = "black";    ilfoDivs[2].style.padding = "0px 10px";    ilfoDivs[2].style.textAlign = "left";    ilfoDivs[2].style.wordWrap = "break-word";    ilfoDivs[2].style.lineHeight = "130%";    // avgILFO_foot    ilfoDivs[3].style.backgroundImage = "url(" + imgBase + "bl.png)";    ilfoDivs[3].style.backgroundPosition = "bottom left";    ilfoDivs[3].style.backgroundRepeat = "no-repeat";    ilfoDivs[3].style.height = "5px";       // avgILFO_foot div    ilfoDivs[4].style.backgroundImage = "url(" + imgBase + "br.png)";    ilfoDivs[4].style.backgroundPosition = "bottom right";    ilfoDivs[4].style.backgroundRepeat = "no-repeat";    ilfoDivs[4].style.width = flyoverWidth + "px";    ilfoDivs[4].style.height = "5px";   }   else   {    div.style.fontSize = "10px";    div.style.backgroundColor = xplSearch.engine.inline.color.background[nSeverity];    div.style.border = xplSearch.engine.inline.color.border[nSeverity] + " solid 3px";    div.style.padding = "3px 8px";   }  }  else  {   // apply updated styles for new flyover content   var sheets = document.styleSheets;   for (var i=0; i &lt; sheets.length; i++)   {    if (sheets[i].id &amp;&amp; sheets[i].id == "avgILFOStyle")    {     var avgILFOStyle = sheets[i];     break;    }   }   if (typeof(avgILFOStyle) !== "undefined")   {    var className = xplSearch.engine.inline.color.classname[nSeverity];    var divWidth = searchshield.elementSize(div)[0];    //round up to nearest 10 to avoid intentional wrapping in div    var flyoverWidth = divWidth + (10 - Math.ceil(10*((divWidth/10) - Math.floor(divWidth/10))));    var rules = avgILFOStyle.rules;    for (var i=0; i &lt; rules.length; i++)    {     var bgImg = rules[i].style.backgroundImage;     var selText = rules[i].selectorText.toLowerCase();     if (bgImg)     {      var bgImgStyle = bgImg.replace(/default/, className);      rules[i].style.backgroundImage = bgImgStyle;     }     if (((selText == ".avgilfo") ||      (selText == ".avgilfo_head") ||      (selText == ".avgilfo_foot div")) &amp;&amp;      (rules[i].style.width) &amp;&amp; (rules[i].style.width == "0px"))     {      rules[i].style.width = (flyoverWidth) + "px";     }    }   }  }  if (!event)   event = window.event;     var eventTarget = event.srcElement;  avglsinlineflyover.position(eventTarget); }, hide: function (event) {  if (!event)   event = window.event;     var div = document.getElementById("XPLSS_InlineFlyover");  if (div == null)   return;     div.style.visibility = "hidden"; //invisible  div.style.left = "-5000px";  if (!searchshield.quirksMode)  {   // reset flyover styles   var sheets = document.styleSheets;   for (var i=0; i &lt; sheets.length; i++)   {    if (sheets[i].id &amp;&amp; sheets[i].id == "avgILFOStyle")    {     var avgILFOStyle = sheets[i];     break;    }   }   if (typeof(avgILFOStyle) !== "undefined")   {    var rules = avgILFOStyle.rules;    for (var i=0; i &lt; rules.length; i++)    {     var bgImg = rules[i].style.backgroundImage;     var selText = rules[i].selectorText.toLowerCase();     if (bgImg)     {       var bgImgStyle = bgImg.replace(/:\/\/([a-z]+)_/i, '://default_');      rules[i].style.backgroundImage = bgImgStyle;     }     if (((selText == ".avgilfo") ||      (selText == ".avgilfo_head") ||      (selText == ".avgilfo_foot div")) &amp;&amp;      (rules[i].style.width))     {      rules[i].style.width = "0px";     }    }   }  } }, position: function (imageElem) {  var flyover = document.getElementById('XPLSS_InlineFlyover');  if (flyover == null)   return;     // relative position of flyover in relation to icon  var locateX = 0;  // 0=left, 1=right  var locateY = 0;  // 0=above, 1=below, 2=beside icon        // get window sizes  var winSize  = searchshield.viewPortSize();  var windowX  = winSize[0];  var windowY  = winSize[1];  // Must know if there is a horizontal scroll bar for Firefox  // for proper flyover positioning near bottom edge  var scrollYWidth  = winSize[2];  var scrollBarX  = winSize[2] &gt; 0 ? true : false;  // get the exact size of the flyover  var flyoverSize  = searchshield.elementSize(flyover);  var flyoverX  = flyoverSize[0];  var flyoverY  = flyoverSize[1];    flyover.style.width = flyoverX + "px";    // get the bounding rect for image(s)  var imgRect = imageElem.getBoundingClientRect();  // half width/height (center) of element bounding rect  var halfX = (imgRect.right - imgRect.left) / 2;  var halfY = (imgRect.bottom- imgRect.top) / 2;  // element the mouse is over, get the center position  var posX = searchshield.offsetLeft(imageElem) + halfX;  var posY = searchshield.offsetTop(imageElem) + halfY;    var pageOffsetX = 0;  var pageOffsetY = 0;  var hasParentFrame = false;  // normalize pos to 0  -- get amount of scrolling in browser window  var scroll  = searchshield.scrollSize(imageElem);  pageOffsetX  = scroll[0];  pageOffsetY  = scroll[1];  hasParentFrame = scroll[2];    posX -= pageOffsetX;  posY -= pageOffsetY;  //compensate for Firefox 3  if (posX &lt; imgRect.left)   posX = imgRect.left+halfX;  // setup the offsets  var offsetX = posX;  var offsetY = posY;  // calc where to display on page  if ((windowX - posX) &gt; posX)  {   // right   //offsetX += halfX;   offsetX = imgRect.right + 3;   locateX = 1;  }  else  {   //left   //offsetX -= (flyoverX + halfX);   offsetX = imgRect.left - flyoverX - 3;  }  if ((windowY - posY) &gt; posY)  {   // below   if (posY &lt; (windowY/4))   {    offsetY -= halfY;    locateY = 1;   }   else   {    offsetY -= (flyoverY / 2) - halfY;    locateY = 2;   }  }  else  {   // above   if ((windowY - posY) &lt; (windowY/4))   {    offsetY -= (flyoverY - halfY);   }   else   {    offsetY -= (flyoverY / 2) + halfY;    locateY = 2;   }  }  // make sure we aren't off the screen  if (offsetY &lt; 0)   offsetY = 0;  if ((offsetY + flyoverY) &gt; windowY)  {   offsetY = windowY - flyoverY;  }  else if (scrollBarX &amp;&amp; ((windowY - (posY + halfY)) &lt; scrollYWidth))  { //verdict overlaps the horizontal scrollbar   offsetY = windowY - (flyoverY + scrollYWidth);  }  // add page offsets back - if not in frame  if (!hasParentFrame)  {   offsetX += pageOffsetX;   offsetY += pageOffsetY;  }  //posX += pageOffsetX;  //posY += pageOffsetY;  //var paddedOffsetX = 0; //provide space between icon and flyover  //var padX = 3;  //if (locateX == 0)  // paddedOffsetX = offsetX - padX;  //else  // paddedOffsetX = offsetX + padX;  // set where to put the flyover  flyover.style.top = offsetY + "px";  flyover.style.left = offsetX + "px";  avglsinlineflyover.display(); }, display: function () {  var div = document.getElementById('XPLSS_InlineFlyover');  if (div == null)   return;    // show the flyover  div.style.visibility = "visible"; }, imageExists: function(element) {  if (element)  {   // check next siblings children   var sibling = element.nextSibling;      if ((sibling == null) || (sibling.getElementsByTagName == null))    return false;      var images = sibling.getElementsByTagName("IMG");   if (images == null)    return false;   for (var i = 0; i &lt; images.length; i++)   {    if (images[i].id == "avg_ls_image")     return true;   }  }  return false; }, getImage: function (anchor) {  if (anchor)  {   var imageElem = null;   var images = anchor.getElementsByTagName("img");   if (images == null)    return imageElem;   for (var i = 0; i &lt; images.length; i++)   {    if (images[i].id == "avg_ls_image")    {     imageElem = images[i];     break;      }       }   return imageElem;  }   }, getUrlFromQueryString: function (inUrl) {  var url = inUrl;  var uri = searchshield.parseLink(unescape(inUrl));  if (uri.source != null)  { // regexp failed so used split to parse url   var qsUrl = uri.source.indexOf("?url=");   if (qsUrl != -1)    url = uri.source.substring(qsUrl + 5);   else    url = uri.source;  }  else if ((uri.qsArray.url != null) &amp;&amp; (uri.qsArray.url.length &gt; 0))  {   url = uri.qsArray.url;  }  return url; }, mouseOverHandler: function (e, doc, engine) {  if (e &amp;&amp; e.srcElement &amp;&amp; e.srcElement.href)  {   // need to keep a reference to the function registered    // by the listener to be able to remove it.   var handlerFunc = arguments.callee;   var element = e.srcElement;   var href = e.srcElement.href;   // need an engine      if (!engine)    return;   // check if it has an image already   if (avglsinlineflyover.imageExists(element))    return;   // add the image, returns the anchor not the image   var new_element = engine.add_inline_image(doc, element, null, null);   // do the check and update in the background   setTimeout(function() {avglsinlineflyover.checkAndUpdate(doc, element, new_element, engine, handlerFunc)}, 1);  } }, checkAndUpdate: function (doc, element, new_element, engine, handlerFunc) {  if (!engine)   return;  try {   // remove the listener and get final url   element.detachEvent("onmouseover", handlerFunc, false);   var finalUrl = searchshield.avgCallFunc(doc, 'GetFinalUrl', element.href);  }  catch(e) {}  if ((typeof(finalUrl) != 'undefined') &amp;&amp; finalUrl)  {   // if still a tiny url check for final url embedded in querystring   if (searchshield.FilterUrl(finalUrl, engine.shortened_urls) &amp;&amp;     (finalUrl.indexOf("?url=") != -1))   {    finalUrl = avglsinlineflyover.getUrlFromQueryString(finalUrl);   }   // update the verdict   engine.display_inline(doc, new_element, finalUrl, null, true);  }  else  {   engine.avg_ls_inline_hide_verdict(new_element);  } }};///////////////    FLYOVERS    ///////////////(function(){ setTimeout( function() {  try {   if ((self == top) &amp;&amp; top.document) {    searchshield.init(top.document, 1);   }  }  catch(e){return;} }, 1 ); return;})();&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-2848085887490337360?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='text/html' href='http://www.masslive.com/news/index.ssf/2011/12/holyoke_councilor_kevin_jourda_2.html' length='0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2848085887490337360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2848085887490337360'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/12/councilor-jourdain-seeks-presidency-of.html' title='Councilor Jourdain seeks Presidency of City Council on January 3'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-8097477137260851470</id><published>2011-11-18T03:18:00.001-05:00</published><updated>2011-11-24T23:39:18.231-05:00</updated><title type='text'>FULL ELECTION RESULTS FROM NOVEMBER 8, 2011</title><content type='html'>&lt;strong&gt;MAYOR&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ALEX MORSE&amp;nbsp; 5121&lt;/strong&gt;&lt;br /&gt;ELAINE PLUTA 4513&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CITY COUNCILOR AT LARGE&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;KEVIN JOURDAIN 5029&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;PETER TALLMAN 4834&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;AARON VEGA 4697&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;JOSEPH MCGIVERIN 4675&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;BRENNA MURPHY 4528&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;DANIEL BRESNAHAN 4264&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;JAMES LEAHY 4252&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;REBECCA LISI 4213&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;PATRICIA DEVINE 3886&lt;br /&gt;JOHN WHELIHAN 3675&lt;br /&gt;YASSER MENWER 1706&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CITY COUNCILOR WARD ONE&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;GLADYS LEBRON-MARTINEZ 425&lt;/strong&gt;&lt;br /&gt;DONALD WELCH 223&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CITY COUNCILOR WARD TWO&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ANTHONY SOTO 453&lt;/strong&gt;&lt;br /&gt;GLORIA ROSADO 207&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CITY COUNCILOR WARD THREE&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DAVID BARTLEY 1096&lt;/strong&gt;&lt;br /&gt;RICHARD PURCELL 587&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CITY COUNCILOR WARD FOUR&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;JASON FERREIRA&amp;nbsp; 414&lt;/strong&gt;&lt;br /&gt;LIBBY HERNANDEZ&amp;nbsp; 397&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CITY COUNCILOR WARD SEVEN&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;GORDON ALEXANDER 1195&lt;/strong&gt;&lt;br /&gt;ALAN FLETCHER 827&lt;br /&gt;&lt;br /&gt;COUNCILORS LINDA VACON (WARD 5) AND TODD MCGEE (WARD 6) WERE BOTH UNOPPOSED.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;BALLOT QUESTION 1 ON NEW CITY CHARTER&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NO 5015&lt;/strong&gt;&lt;br /&gt;YES 3749&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-8097477137260851470?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8097477137260851470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8097477137260851470'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/11/full-election-results-from-november-8.html' title='FULL ELECTION RESULTS FROM NOVEMBER 8, 2011'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-7793966901489764923</id><published>2011-11-18T02:58:00.000-05:00</published><updated>2011-11-18T02:58:36.000-05:00</updated><title type='text'>Charter Change Question goes down in overwhelming defeat!</title><content type='html'>Voters rejected by overwhelming numbers the proposal to abolish our current charter and replace with a new 53 page charter which would have made the Mayor's office even more powerful than it already is.&amp;nbsp; Throughout the city voters could inherently tell something was not right about the proposal to not change but completely replace our current city charter.&amp;nbsp; The Charter Commission led by some with their own agenda attempted to take enornmous amounts of checks and balances, as well as, voter power away from the people of the city.&amp;nbsp; Voters saw right through their plan and said their proposal&amp;nbsp;went way too far.&lt;br /&gt;&lt;br /&gt;The final vote was 5013 NO votes (57%) and only 3739 YES votes&amp;nbsp;(43%) despite an organized push in favor of it by the Chamber of Commerce and Business Taxpayers Association.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-7793966901489764923?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7793966901489764923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7793966901489764923'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/11/charter-change-question-goes-down-in.html' title='Charter Change Question goes down in overwhelming defeat!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-8919189755716510519</id><published>2011-11-18T02:49:00.000-05:00</published><updated>2011-11-18T02:49:44.210-05:00</updated><title type='text'>City Councilor Kevin Jourdain Tops Ticket in race for Councilor At Large!  Thanks Voters for their vote of confidence!</title><content type='html'>City Councilor At Large Kevin Jourdain thanked thousands of voters who honored him with their vote for re-election this past Tuesday.&amp;nbsp; Councilor Jourdain received 5019 votes and scored a first place victory in the race for City Councilor At Large.&amp;nbsp; "I am truly humbled by the broad base of support that came out for me in all 7 wards of the city.&amp;nbsp; My fellow Holyokers really responded to my strong message of fiscal responsibility, economic development, public safety and government accountability," stated Jourdain.&lt;br /&gt;&lt;br /&gt;Councilor Jourdain said the victory is particularly gratifying considering the high quality of the other candidates that the voters had to choose from.&lt;br /&gt;&lt;br /&gt;Councilor Jourdain congratulated Mayor-Elect Alex Morse on his victory and looked forward to working with him to solve the city's challenges.&amp;nbsp; Jourdain further praised Mayor Elaine Pluta for a job well done and for a lifetime of love and committment to the people of Holyoke.&amp;nbsp; "I have had the pleasure to serve with Elaine for nearly two decades and she has a record of accomplishment that any politician would be proud to have.&amp;nbsp; Elaine and her husband Ted are Holyokers through and through.&amp;nbsp; She has served the city with exceptional loyalty and fidelity and leaves the city in strong fiscal order.&amp;nbsp; I wish her the very best into the future," commented Jourdain.&lt;br /&gt;&lt;br /&gt;Councilor Jourdain was first elected in 1993 and is the youngest person ever elected to the position of Councilor At Large in city history.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-8919189755716510519?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8919189755716510519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8919189755716510519'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/11/city-councilor-kevin-jourdain-tops.html' title='City Councilor Kevin Jourdain Tops Ticket in race for Councilor At Large!  Thanks Voters for their vote of confidence!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-8122876975495832344</id><published>2011-11-01T17:09:00.000-04:00</published><updated>2011-11-01T17:09:20.583-04:00</updated><title type='text'>PIONEER VALLEY CENTRAL LABOR COUNCIL, AFL-CIO ENDORSES KEVIN JOURDAIN FOR RE-ELECTION!</title><content type='html'>Holyoke - City Councilor At Large Kevin Jourdain announced today that he was proud to receive the endorsement of the Pioneer Valley Central Labor Council, AFL-CIO for his candidacy for Re-Election as City Councilor At Large.&amp;nbsp; Councilor Jourdain has been working hard for Holyoke's working families for many years and for common sense principles on the Holyoke City Council.&amp;nbsp; Councilor Jourdain thanks&amp;nbsp;the working people of the greater Holyoke area for their strong support and looks forward to continuing to grow and improve the City of Holyoke over the next term.&lt;br /&gt;&lt;br /&gt;Please remember to vote Kevin Jourdain for Councilor At Large on November 8.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-8122876975495832344?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8122876975495832344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8122876975495832344'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/11/pioneer-valley-central-labor-council.html' title='PIONEER VALLEY CENTRAL LABOR COUNCIL, AFL-CIO ENDORSES KEVIN JOURDAIN FOR RE-ELECTION!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-8699922604285494034</id><published>2011-10-19T18:14:00.000-04:00</published><updated>2011-10-19T18:14:23.091-04:00</updated><title type='text'>Re-Elect Kevin Jourdain: Holyoke's Fiscal Watchdog!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-1nMZwST-Lu0/Tp9Lj9BokPI/AAAAAAAAAOc/Eu8W5FnnWAw/s1600/Jourdain+Flyer+Page+1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-1nMZwST-Lu0/Tp9Lj9BokPI/AAAAAAAAAOc/Eu8W5FnnWAw/s320/Jourdain+Flyer+Page+1.jpg" width="251" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-EWM926hOtoc/Tp9Ls5wkIGI/AAAAAAAAAOk/M0mcVqMv7RI/s1600/Jourdain+Flyer+Page+2+horizontal.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="253" src="http://3.bp.blogspot.com/-EWM926hOtoc/Tp9Ls5wkIGI/AAAAAAAAAOk/M0mcVqMv7RI/s320/Jourdain+Flyer+Page+2+horizontal.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-8699922604285494034?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8699922604285494034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8699922604285494034'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/10/re-elect-kevin-jourdain-holyokes-fiscal.html' title='Re-Elect Kevin Jourdain: Holyoke&apos;s Fiscal Watchdog!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-1nMZwST-Lu0/Tp9Lj9BokPI/AAAAAAAAAOc/Eu8W5FnnWAw/s72-c/Jourdain+Flyer+Page+1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-9201899116465966570</id><published>2011-10-10T22:37:00.000-04:00</published><updated>2011-10-10T22:37:21.077-04:00</updated><title type='text'>Inside the fine print of the Mammoth Booklet coming in the Mail - a risky proposal.</title><content type='html'>&lt;div align="center" class="MsoNormal" style="margin: 0in 0in 10pt; text-align: center;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;VOTE NO on the Proposed Charter Change: Holyoke cannot afford this risky proposal!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;Dear Fellow Voter:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;u&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;There is going to be a referendum question on this year’s ballot that proposes to change our City Charter and would:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;u&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;Weaken Voter Power:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Voters will no longer elect the City Clerk or City Treasurer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Voters will no longer elect a majority of their City Councilors&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Only vote for the Mayor every 4 years not every 2 years which could be problematic especially if you get someone who is not doing a good job.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;u&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;Eliminate Checks and Balances:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;We already have a very strong Mayor: we should not consolidate nearly all power in one person!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Proposes to weaken the City Council and make the Mayor even more powerful&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Mayor would appoint the Assessors, Tax Collector, Auditor and Treasurer instead of the City Council therefore eliminating the independence of their financial oversight roles.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Abolishes most city commissions including the Public Works and Fire Commissions and gives those powers to the Mayor.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Also makes the Mayor a member of most remaining commissions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Allows the Mayor to abolish or create any city department without the Council having the opportunity to amend the proposal.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Terms of office of city department heads are eliminated and they would serve at pleasure of the Mayor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Recommends eliminating non-political civil service independence for city employees&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Allows the Mayor to appoint a majority of the future commissions who will review our city charter and our city ordinances.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;u&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;Make Expensive Changes we cannot afford in these tough economic times:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Gives the Mayor a 14% pay raise from $85,000 to $97,000 per year.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Creates a New Chief Financial Officer position appointed by the Mayor that would likely cost over $100,000 per year.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;The proposed new charter is a risky exploration into a new form of government which no one fully knows for sure how it would work and could be the source of expensive future litigation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;u&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;Make other foolish changes:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;The War Memorial Commission would no longer be made up exclusively of veterans.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Makes it harder for citizens to run for office and get on the ballot.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 1in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;Eliminates Residency Requirements for city department heads.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div align="center" class="MsoNormal" style="margin: 0in 0in 10pt; text-align: center;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;Instead of making some simple common sense changes the voters could easily understand, the Charter Commission scrapped our entire charter for a new 53 page confusing and harmful form of government.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Their proposal is so complex and confusing that it reads more like mortgage then a referendum.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Holyoke’s voters deserve better!&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div align="center" class="MsoNormal" style="margin: 0in 0in 10pt; text-align: center;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;Please Vote NO on the Proposed Charter Change and protect our city!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-9201899116465966570?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/9201899116465966570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/9201899116465966570'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/10/inside-fine-print-of-mammoth-booklet.html' title='Inside the fine print of the Mammoth Booklet coming in the Mail - a risky proposal.'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-5051786436564371413</id><published>2011-10-07T20:01:00.002-04:00</published><updated>2011-10-07T20:24:31.387-04:00</updated><title type='text'>Straight Talk about the Holyoke City Charter:</title><content type='html'>&lt;span style="font-size: large;"&gt;&lt;strong&gt;One of the Myths about the Holyoke City Charter is that the document is too old to still be practical for our current needs.&lt;/strong&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;I ask you to consider the following facts before you vote on this radical proposal to change our city government:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;There are 3 Foundational Documents that impact the City of Holyoke:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;Federal Level:&lt;/strong&gt; US Constitution which was drafted in large measure by James Madison - it was Ratified on &lt;strong&gt;June 21, 1788.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;State Level:&lt;/strong&gt;&amp;nbsp; The Massachusetts Constitution which was drafted John Adams, Samuel Adams and James Bowdoin was Ratified on &lt;strong&gt;June 15, 1780.&lt;/strong&gt;&amp;nbsp; It is the oldest active Constitution in the world!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;City Level:&lt;/strong&gt; The Holyoke City Charter was Ratified in &lt;strong&gt;1896.&lt;/strong&gt;&amp;nbsp; &lt;u&gt;108 years younger than US Constitution and 116 years younger than the Massachusetts Constitution.&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;The Holyoke City Charter has been amended no less than 30 times.&amp;nbsp; The Massachusetts Constitution has been amended 120 times and the US Constitution has been amended 27 times.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;The Holyoke City Charter like its accompanying other Constitutions is a concise and powerful statement of the checks and balances of government.&amp;nbsp; The new proposed Charter disgards balance to make way for an Uber-Powerful Mayor and a government less accountable to the electorate.&amp;nbsp; To accomplish this task, the new proposed Charter is filled with sweeping and confusing legalese (I am a lawyer by the way) and is now 53 pages of changes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Unless you as a voter fundamentally understand those 53 pages of legalese and their sweeping&amp;nbsp;ramifications, please&amp;nbsp;do not just vote to abolish our current form of government.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Consider first that we should make careful amendments to the current document.&amp;nbsp; Our predecessors in reviewing our foundational documents never just abolished them but carefully amended them.&amp;nbsp; I suggest we do that as well.&amp;nbsp; &lt;u&gt;Those amendments can either be crafted by the City Council and Mayor or brought individually before the voters.&amp;nbsp;&lt;/u&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;This careful approach that respects checks and balances has served us well since the founding of our Republic and November 8th should be no exception.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-5051786436564371413?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5051786436564371413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5051786436564371413'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/10/straight-talk-about-holyoke-city.html' title='Straight Talk about the Holyoke City Charter:'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-5106952399521194214</id><published>2011-10-06T21:32:00.002-04:00</published><updated>2011-10-06T21:49:22.887-04:00</updated><title type='text'>Charter Change Summary</title><content type='html'>&lt;span style="font-size: large;"&gt;Many voters have been asking me for a summary of the 106 Page Booklet that they will be receiving from the Charter Commission.&amp;nbsp; Personally, I think it is very unfair of the Commission to have made so many changes that the voters are expected to digest a document loaded with very substantial changes that reads like mortgage loaded with legalese.&amp;nbsp; For the convenience of the voters I have developed the following summary:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;The current charter of the city is completely abolished and substituted by a new proposed charter.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The Mayor’s salary shall be increased by 14% from $85,000 to $97,000 per year. The power of the Mayor will become much stronger.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The separation of powers between the City Council and Mayor will change.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The City Council’s appointments over the financial oversight positions of Assessors, Tax Collector and Auditor will all be given over to the Mayor.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The Mayor will also have the power to add or delete any city department and the City Council will not be permitted to amend the Mayor’s proposal but may only approve or disapprove the entire proposal. The Public Works Commission and Fire Commission are abolished and those powers are transferred to the Mayor. The Mayor will become a member of most remaining commissions.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The War Memorial Commission will no longer be exclusively composed of veterans.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Current provisions requiring residency for certain department heads will be eliminated.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Terms of office of numerous appointed officials will be eliminated and those individuals will serve as employees at will under the Mayor.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The Mayor’s term of office will also be expanded from a 2-year term to a 4-year term. The City Clerk and City Treasurer will no longer be elected by voters but will become appointed.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;A new Chief Financial Officer position, which reports to the Mayor, will be created at a significant cost to the city.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Effective at the 2013 municipal election, individual voters will no longer be able to elect a majority of the members of the city council.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The City Council will be reduced from 15 members consisting of 7 members elected by a ward and 8 members elected at-large to a body of 11 members maintaining the same number of wards but eliminating 4 of the 8 at-large members.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Individual voters shall no longer elect 9 of 15 members (8 at-large and 1 ward) but only 5 of 11 members (4 at-large and 1 ward).&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The School Committee will continue to be a 9 member body consisting of 7 members representing wards and 2 members elected at-large.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;The City Council and School Committee will continue to serve 2-year terms.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Signature requirements for municipal candidates will increase between 100% and 400% depending on the office.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;A new process will be created to allow voters to petition the City Council to put items on the agenda, to initiate referendum to reverse measures adopted by the City Council or School Committee, and they may also initiate a recall procedure for any elected official.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;If adopted, numerous Special Acts adopted by the City Council and Mayor in past will be repealed.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The charter will be reviewed every 10 years and the ordinances will be reviewed every 5 years.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The Mayor will control a majority of the appointments to the review commissions.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: large;"&gt;Please take the Holyoke First Charter Change Poll to let your fellow Holyokers know how you feel!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-5106952399521194214?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5106952399521194214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5106952399521194214'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/10/charter-change-summary.html' title='Charter Change Summary'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-2344285609608978729</id><published>2011-10-06T21:28:00.001-04:00</published><updated>2011-10-06T21:28:16.035-04:00</updated><title type='text'></title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-2344285609608978729?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2344285609608978729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2344285609608978729'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/10/blog-post.html' title=''/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-1878267856030585784</id><published>2011-09-13T23:53:00.000-04:00</published><updated>2011-09-13T23:53:12.731-04:00</updated><title type='text'></title><content type='html'>&lt;h1 class="entry-title"&gt;Holyoke City Councilor Kevin Jourdain ready to speak up for 10th term&lt;/h1&gt;&lt;div class="author_info"&gt;&lt;span class="author_byline"&gt; By                &lt;span class="author vcard"&gt;&lt;a class="fn" href="http://connect.masslive.com/user/mplaisance/index.html"&gt;        Mike Plaisance, The Republican&lt;/a&gt;&lt;/span&gt;&lt;span class="source-org vcard" style="display: none; visibility: hidden;"&gt;&lt;span class="org fn"&gt;masslive.com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry-content"&gt;&lt;div class="entry_widget_small entry_widget_right" id="asset-9994853"&gt;&lt;span class="adv-photo-small"&gt;&lt;img alt="jourdain.JPG" class="adv-photo" height="194" src="http://media.masslive.com/politics_impact/photo/9994853-small.jpg" width="155" /&gt;&lt;span class="photo-data"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry_widget_small entry_widget_right" id="asset-9994853"&gt;&lt;span class="adv-photo-small"&gt;&lt;span class="photo-data"&gt;&lt;span class="byline"&gt;&lt;/span&gt;&lt;span class="caption"&gt;Holyoke City Councilor at Large Kevin A. Jourdain&lt;/span&gt;&lt;/span&gt;&lt;span class="photo-bottom-left"&gt;&lt;/span&gt;&lt;span class="photo-bottom-right"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://topics.masslive.com/tag/holyoke/index.html"&gt;HOLYOKE&lt;/a&gt; – City Councilor at Large &lt;a href="http://topics.masslive.com/tag/kevin-jourdain/index.html" target="_blank&amp;quot;"&gt;Kevin A. Jourdain &lt;/a&gt;is running for a 10th term in the Nov. 8 election because he said he enjoys using his booming voice to speak up for people. &lt;br /&gt;&lt;br /&gt;“That’s what is my drive to do this, that I think I can make a difference for my neighbors, that they feel they have someone to turn to,” Jourdain, 39, said Monday. &lt;br /&gt;&lt;br /&gt;Jourdain has been a councilor since January 1994. &lt;br /&gt;&lt;br /&gt;He is one of 11 candidates, including all current incumbents, vying for the eight at large seats. The 15-member council includes seven ward councilors. &lt;br /&gt;&lt;br /&gt;When the council sets the property tax rate each December, it’s a staple that &lt;a href="http://www.masslive.com/news/index.ssf/2009/12/holyoke_property_owners_to_see.html"&gt;Jourdain will argue&lt;/a&gt; that while business owners also are struggling, they are better equipped than homeowners to absorb an increase. Homeowners, and especially senior citizens, can’t pay more, he said. &lt;br /&gt;&lt;br /&gt;“These folks have nowhere to turn. That’s medication that doesn’t get purchased, that’s food that’s not on the table, and I’m extremely sensitive to that,” Jourdain said. &lt;br /&gt;&lt;br /&gt;Jourdain is chairman of the council Redevelopment Committee, which supervised the redistricting of the seven voting wards without wholesale changes. He called for delinquent sewer bills to be collected before rate-payers’ bills are increased and he is on the mayor’s property tax reduction task force. &lt;br /&gt;&lt;br /&gt;Jourdain is senior financial analyst at the Sisters of Providence Health System and is a lawyer with an office at 472 Appleton St. He and his wife Shari, a bridal consultant at Macy’s here, have three children. &lt;br /&gt;&lt;b&gt;&lt;br /&gt;His reelection announcement is Thursday from 6 to 8 p.m. at the Wherehouse? restaurant on Lyman Street. The suggested donation is $20. &lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-1878267856030585784?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1878267856030585784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1878267856030585784'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/09/holyoke-city-councilor-kevin-jourdain.html' title=''/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-1977315289551921663</id><published>2011-09-10T01:40:00.000-04:00</published><updated>2011-09-10T01:40:25.898-04:00</updated><title type='text'>Councilor Jourdain Campaign Kickoff on September 15th</title><content type='html'>City Councilor At Large Kevin A. Jourdain proudly announces the Kickoff of his Re-Election Campaign on Thursday, September 15, 2011 from 6-8:30pm at the Wherehouse located at 109 Lyman Street.&amp;nbsp; All Citizens are cordially invited and encouraged to attend.&lt;br /&gt;&lt;br /&gt;There is a suggested donation of $20 pp.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-1977315289551921663?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1977315289551921663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1977315289551921663'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/09/councilor-jourdain-campaign-kickoff-on.html' title='Councilor Jourdain Campaign Kickoff on September 15th'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-2214371319833913416</id><published>2011-04-05T05:24:00.000-04:00</published><updated>2011-04-05T05:24:08.796-04:00</updated><title type='text'>Holyoke fires Council on Aging employee after finding $17,500 missing</title><content type='html'>Holyoke fires Council on Aging employee after finding $17,500 missing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By Mike Plaisance, The Republican The Republican &lt;br /&gt;&lt;br /&gt;HOLYOKE – An employee of the Council on Aging has been fired and about $17,500 that was determined to be missing has been recovered, officials said Monday. &lt;br /&gt;&lt;br /&gt;Police Chief Anthony R. Scott and City Treasurer Jon D. Lumbra said Friday their departments both investigated the case in March. &lt;br /&gt;&lt;br /&gt;City Solicitor Lisa A. Ball said Monday no arrests have been made and the investigation has ended. Scott declined to say why no arrests were made and referred questions to Ball. &lt;br /&gt;&lt;br /&gt;She declined to identify the employee but said funds were recovered by claiming money from the employee’s retirement account. &lt;br /&gt;&lt;br /&gt;“There was a matter that was brought to my attention. The employee was disciplined and the city was made whole,” Ball said. &lt;br /&gt;&lt;br /&gt;The case involved meals provided to senior citizens at the War Memorial, 310 Appleton St., through the School Department lunch program, she said. Such meals are provided for a fee at various off-school sites. &lt;br /&gt;&lt;br /&gt;The case raises questions about oversight. Kathleen A. Bowler, executive director of the Council on Aging, School Superintendent David L. Dupont hadn’t returned calls seeking comment as of late Monday afternoon. &lt;br /&gt;&lt;br /&gt;School Committee member Devin M. Sheehan said he will raise the issue at Monday’s School Committee meeting and request an extensive audit of the lunch program. &lt;br /&gt;&lt;br /&gt;“This is concerning School Department funds. It’s the School Department’s money. I don’t know why this is being treated so hush-hush,” Sheehan said. &lt;br /&gt;&lt;br /&gt;Of the current enrollment of about 5,900 students, more than 70 percent qualify for free meals in the schools because of the city’s high poverty rate. &lt;br /&gt;&lt;br /&gt;The number of students who eat breakfast in the schools varies per building, from a low of 10 percent at Holyoke High School to a high of 66 percent at E.N. White School, according to figures from the start of the school year. &lt;br /&gt;&lt;br /&gt;Lunch participation is higher district wide, with a low of 37 percent at Metcalf School to a high of 94 percent at Morgan School. &lt;br /&gt;&lt;br /&gt;The city recently changed lunch vendors fromChartwells School Dining Services, of Braintree, to Sodexo Group, of Gaithersburg, Md., Sheehan said. &lt;br /&gt;&lt;br /&gt;Under the school lunch vendor contract, the city is supposed to get a yearly profit of $150,000 in revenue from the sales of meals, officials have said.&lt;br /&gt;&lt;br /&gt;© 2011 masslive.com. All rights reserved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-2214371319833913416?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2214371319833913416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2214371319833913416'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2011/04/holyoke-fires-council-on-aging-employee.html' title='Holyoke fires Council on Aging employee after finding $17,500 missing'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-7172564424761242132</id><published>2010-12-14T01:04:00.000-05:00</published><updated>2010-12-14T01:04:06.355-05:00</updated><title type='text'>Councilor Jourdain sworn in as Attorney At Law in Massachusetts and Connecticut!</title><content type='html'>City Councilor Kevin Jourdain, upon graduating law school Magna Cum Laude, passed both the Massachusetts and Connecticut Bar exams this Summer.&amp;nbsp; On November 1, Councilor Jourdain was sworn into the Connecticut Bar in a beautiful ceremony in Hartford, CT. On November 29, he was sworn into the Massachusetts Bar in another magnificant ceremony in Historic Faneuil Hall in Boston, MA.&lt;br /&gt;&lt;br /&gt;Councilor Jourdain opened the Law Office of Kevin A. Jourdain, Esq. located at 472 Appleton Street in Holyoke in shared space with the great law firm of Brunault, Proulx and McGuinness.&amp;nbsp; If anyone may be in need of legal services or advice, please do not hesitate to contact him at (413) 539-8000 for assistance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-7172564424761242132?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7172564424761242132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7172564424761242132'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/12/councilor-jourdain-sworn-in-as-attorney.html' title='Councilor Jourdain sworn in as Attorney At Law in Massachusetts and Connecticut!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-6074290622805856664</id><published>2010-09-04T22:10:00.003-04:00</published><updated>2010-09-04T22:10:13.267-04:00</updated><title type='text'>70% of Holyoke First Readers oppose a $300 fine for feeding a cat</title><content type='html'>In an exclusive Holyoke First poll, Holyoke First readers opposed by a 70-30 margin, the imposition of a proposed $300 fine for the feeding of a stray cat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-6074290622805856664?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/6074290622805856664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/6074290622805856664'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/09/70-of-holyoke-first-readers-oppose-300.html' title='70% of Holyoke First Readers oppose a $300 fine for feeding a cat'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-945263252128482394</id><published>2010-09-04T22:08:00.000-04:00</published><updated>2010-09-04T22:08:22.455-04:00</updated><title type='text'>Meeting Notes from June 15, 2010 Meeting</title><content type='html'>Meeting Notes from June 15, 2010 Meeting&lt;br /&gt;&lt;br /&gt;Noteworthy Points:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;City Council adopted the FY 2011 Fiscal Year Budget on a vote of 11-3.&amp;nbsp; Councilors Keane, Vacon and Welch voted NO.&amp;nbsp; Councilor McGee was absent.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;There were numerous amendments which I will detail in a future Holyoke First posting.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;City Council adopted a new ordinance relative to the feeding of stray or feral cats by a 13-1 vote.&amp;nbsp; Councilor Devine voted NO.&amp;nbsp; Councilor McGee was absent.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Kathy Anderson and the Holyoke Redevelopment Authority requested a joint meeting on Holyoke's new Urban Renewal Plan with the Redevelopment Committee of the City Council.&amp;nbsp; The meeting was held on August 30, 2010 and was a very productive meeting.&amp;nbsp; The new Urban Renewal Plan will be released in Spring 2011.&lt;/li&gt;&lt;li&gt;The much discussed Chicken Ordinance proposed by Councilors Purington and Lisi was given leave to withdraw.&lt;/li&gt;&lt;li&gt;The City Council approved $30,000 to repair the stain glass windows in City Hall&lt;/li&gt;&lt;li&gt;The City Council approved $31,500 for a new ride around truck for the Building Commissioner.&amp;nbsp; The vehicle requested is a Hybrid Ford Escape with off road capabilities.&amp;nbsp; The vehicle is very high end and well beyond that which is needed to get him around for his inspections. He certainly does not need a four wheel off road vehicle for his appointments.&amp;nbsp; Nevertheless, the City Council approved the funding by a vote of 11-3. Most Holyoke taxpayers do not get the pleasure of affording such a luxurious vehicle so neither should our department heads.&amp;nbsp; Councilors Jourdain, Vacon and Vega voted NO.&amp;nbsp; Councilor McGee was absent.&amp;nbsp; Subsequent to this vote, I have requested the Purchasing Director to review the proposal to ensure we need to spend this much and he said he will get something to meet the department's needs for the best price.&lt;/li&gt;&lt;li&gt;The City Council unanimously adopted the full funding needed to fund our much needed new Senior Center to be located at the former site of the Anne McHugh School on Sargeant Street.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-945263252128482394?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/945263252128482394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/945263252128482394'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/09/meeting-notes-from-june-15-2010-meeting.html' title='Meeting Notes from June 15, 2010 Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-339167963896721263</id><published>2010-09-04T18:41:00.000-04:00</published><updated>2010-09-04T18:41:13.557-04:00</updated><title type='text'>Meeting Notes from June 1, 2010 Meeting</title><content type='html'>Meeting Notes from June 1, 2010 Meeting&lt;br /&gt;&lt;br /&gt;Noteworthy Items:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;City Council accepted the provisions of the Holyoke Canal Walk Phase 2 Grant to continue the work on the Holyoke Canal Walk which is blossoming under Mayor Pluta's leadership to becoming a nice revitalization project to our downtown.&amp;nbsp; This will help Holyoke showcase its unique mills and canal system.&lt;/li&gt;&lt;li&gt;City Council received a report from the Redevelopment Committee that I chair regarding how the Cisco Group will be establishing a pilot neighborhood revitalization project in the city and will also being helping the city to think of innovative ways for us to improve our technology infrastructure within the city.&lt;/li&gt;&lt;li&gt;City Council requested that the Mayor fill the numerous vacancies to the Reserve Police Officers list.&amp;nbsp; These Reserve Officers significantly help in our overall public safety strategy and the list is nearly exhausted.&lt;/li&gt;&lt;li&gt;DPW was requested by me to install a flagpole and flag at the new Jones Ferry River Access Center to make sure the USA is properly respected at our new facility.&lt;/li&gt;&lt;li&gt;City Council adopted a resolution recognizing Tim Moskal for his great accomplishment of becoming an Eagle Scout.&lt;/li&gt;&lt;li&gt;The City Council adopted along with the School Committee a joint committee of 6 members with 3 members from each body to discuss important initiatives and issues of the 2 bodies.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Subsequent to the meeting, President of City Council Joe McGiverin appointed Councilors Jourdain, O'Neill and Vega to serve as the Council's representatives.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-339167963896721263?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/339167963896721263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/339167963896721263'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/09/meeting-notes-from-june-1-2010-meeting.html' title='Meeting Notes from June 1, 2010 Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-6037951995681489421</id><published>2010-09-04T18:27:00.000-04:00</published><updated>2010-09-04T18:27:54.210-04:00</updated><title type='text'>Meeting Notes from May 18, 2010 Meeting</title><content type='html'>Meeting Notes from May 18, 2010 Meeting&lt;br /&gt;&lt;br /&gt;Noteworthy Items&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;City Council received a letter from the Board of Assessors that the Holyoke Geriatric Authority is $60,000 in arrears on their Property Tax Payment for the Years 2009-2010.&lt;/li&gt;&lt;li&gt;City Council passed a new ordinance prohibiting the sale, exchange and distribution of cigarette lighters and matches to minors and prohibiting the self service display of cigarette lighters and matches on a 13-1 vote.&amp;nbsp; Councilor Welch voted NO and Councilor O'Neill was absent.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-6037951995681489421?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/6037951995681489421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/6037951995681489421'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/09/meeting-notes-from-may-18-2010-meeting.html' title='Meeting Notes from May 18, 2010 Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-5107069232209424754</id><published>2010-09-04T18:20:00.000-04:00</published><updated>2010-09-04T18:20:32.200-04:00</updated><title type='text'>Meeting Notes for May 4, 2010 Meeting</title><content type='html'>Meeting Notes for May 4, 2010 Meeting&lt;br /&gt;&lt;br /&gt;Noteworthy Items:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The City Council approved up to $5.5 million in bonding for a new Holyoke Public Library.&amp;nbsp; The vote was 14-1 with only Councilor Devine voting NO&lt;/li&gt;&lt;li&gt;Odette Czaplicki was re-appointed by the Mayor and unanimously confirmed by the City Council to another 3 year term on the Board of Registrars of Voters. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-5107069232209424754?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5107069232209424754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5107069232209424754'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/09/meeting-notes-for-may-4-2010-meeting.html' title='Meeting Notes for May 4, 2010 Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-6281645540243355358</id><published>2010-06-25T22:42:00.000-04:00</published><updated>2010-06-25T22:42:17.001-04:00</updated><title type='text'>Holyoke Fireworks Set for Friday July 2 !!!</title><content type='html'>The City of Holyoke, through our sponsor the Holyoke Gas and Electric Department, will be celebrating our Nation's Independence Day in style.&amp;nbsp; Holyoke Community College will once again host our Independence celebration beginning at 6pm on Friday, July 2.&amp;nbsp; As soon as it gets dark, get ready for the best fireworks show in the area!&lt;br /&gt;&lt;br /&gt;I wish you and your family a relaxing and happy Fourth of July Weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-6281645540243355358?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/6281645540243355358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/6281645540243355358'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/06/holyoke-fireworks-set-for-friday-july-2.html' title='Holyoke Fireworks Set for Friday July 2 !!!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-7949364818572880835</id><published>2010-05-27T22:18:00.000-04:00</published><updated>2010-05-27T22:18:08.583-04:00</updated><title type='text'>Meeting Notes for March 16, 2010 Meeting</title><content type='html'>&lt;span style="font-size: large;"&gt;Meeting Notes for March 16, 2010 Meeting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Noteworthy Items:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Pat Higgins was confirmed to another 5yr term on the Holyoke Housing Authority Commission.&amp;nbsp; Pat has a long and proud history on behalf of the people of the city and I was proud to vote for him.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Gordon Alexander, Bruce Mitchell and Carol Walsh were appointed to 3 year terms on the Historical Commission. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Sandra Swan was appointed to a 1 year term to the Council on Aging Commission&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Council passed a new ordinance prohibiting trucks from using their engine brakes in the city by a vote of 11-4.&amp;nbsp; I opposed this bad idea because City Councilors know nothing about operating tractor trailer trucks and have no business telling trucks how to operate their braking and safety systems in Holyoke or anywhere else.&amp;nbsp; Trucks have brakes for reason and to use them when needed. The vote on this measure was as follows:&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;YES: Devine, Keane, Lisi, Lopez, McGee, McGiverin, Murphy, O'Neill, Purington, Tallman, Welch&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;NO: Jourdain, Leahy, Vacon, Vega&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;City Council unanimously approved the Redevelopment Committee recommendations to Mayor Pluta for the use of Community Development Block Grants Funds in the amount of $1.343 million and HOME Grant Funds of $1.208 million. My Redevelopment committee members worked on these recommendations and came up with a great work product that was thoughtful and effective.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-7949364818572880835?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7949364818572880835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7949364818572880835'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/05/meeting-notes-for-march-16-2010-meeting.html' title='Meeting Notes for March 16, 2010 Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-4744615813417093128</id><published>2010-05-27T22:05:00.000-04:00</published><updated>2010-05-27T22:05:01.518-04:00</updated><title type='text'>Meeting Notes from March 2, 2010 Meeting</title><content type='html'>&lt;span style="font-size: large;"&gt;Meeting Notes from March 2, 2010 Meeting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Noteworthy Items:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Election of 2 year seat on the Whiting Street Fund. Maria Burke elected on first ballot. Maria Burke received 10 votes. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Election of 1 year seat on the Whiting Street Fund. John Pietrzykowski elected with 9 votes on 2nd ballot.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Creation of a new temporary Munis Administrator Position to oversee the upgrades of the Munis system in city government. The position was approved by a vote of 12-3. The votes was as follows:&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;YES: Devine, Jourdain, Lisi, Lopez, McGee, McGiverin, Murphy, Purington, Tallman, Vacon, Vega and Welch&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;NO: Keane, Leahy, O'Neill&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;City accepted a grant for $350,000 for the Smart Growth Zoning Incentive from the state that can be used to update Master Plan and help with downtown revitalization&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;A special permit was approved to allow a Taco Bell to be located in K-Mart Plaza.&amp;nbsp; K-Mart also promised to repair their parking lot as part of the project.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;We approved a proclamation for Auxilary Police Chief Ron Dietrich recognizing his 50 years of dedicated service to the city.&amp;nbsp; He is a great guy.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Councilors Lopez and Purington filed an order to address the feeding of feral cats.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-4744615813417093128?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4744615813417093128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4744615813417093128'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/05/meeting-notes-from-march-2-2010-meeting.html' title='Meeting Notes from March 2, 2010 Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-3693279435555425785</id><published>2010-05-27T21:47:00.001-04:00</published><updated>2010-05-27T21:49:04.050-04:00</updated><title type='text'>Meeting Notes from February 16, 2010 Meeting</title><content type='html'>&lt;span style="font-size: large;"&gt;Meeting Notes for February 16, 2010 Meeting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Noteworthy Items:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Attorney Lisa Ball of Holyoke was confirmed as City Solicitor on a vote of 11-2. The votes was as follows:&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;YES: Jourdain, Keane, Leahy, McGiverin, Murphy, O'Neill, Purington, Tallman, Vacon, Vega and Welch&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;NO: Devine, McGee&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;ABSENT: Lisi, Lopez&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-3693279435555425785?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3693279435555425785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3693279435555425785'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/05/meeting-notes-from-february-16-2010.html' title='Meeting Notes from February 16, 2010 Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-6460388158685180168</id><published>2010-05-27T21:35:00.002-04:00</published><updated>2010-06-14T01:04:25.272-04:00</updated><title type='text'>Kevin Jourdain earns Juris Doctorate from Massachusetts School of Law</title><content type='html'>&lt;span style="font-size: large;"&gt;On June 4, 2010, City Councilor Kevin A. Jourdain will receive his Juris Doctorate, Magna Cum Laude,&amp;nbsp;from the Massachusetts School of Law at Andover. Councilor Jourdain stated, "It is a great relief to complete my studies and I especially thankful to my family who were so supportive of me throughout the last three years. I received a top notch education and have gained an even deeper appreciation for the laws of our great state and nation."&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-6460388158685180168?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/6460388158685180168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/6460388158685180168'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/05/kevin-jourdain-earns-juris-doctorate.html' title='Kevin Jourdain earns Juris Doctorate from Massachusetts School of Law'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-4702814284570535174</id><published>2010-05-27T21:25:00.001-04:00</published><updated>2010-05-27T21:26:40.958-04:00</updated><title type='text'>Holyoke Community College Awards City Councilor Kevin Jourdain with its 2010 Distinguished Service Award!</title><content type='html'>I was very grateful for a great honor from a great school that has a special place in our community and to me personally.&amp;nbsp; Holyoke is very lucky indeed to have such a wonderful college community of bright students and eneregtic staff and faculty in our midst. &lt;br /&gt;&lt;br /&gt;There was a very kind inscription to the DSA award in the program:&lt;br /&gt;&lt;br /&gt;"The odds were against you when you ran for Holyoke City Councilor at age 21. You were inexperienced and unconnected, just a few months past your own college commencement cerenmony. But along with a bachelor's degree in political science and economics, you had faith in yourself and faith that the city you loved could overcome its challenges. So you pounded the pavement, knocked on doors, handed out campaign fliers. In January 1994, you became the youngest Councilor ever elected. You have held the position ever since, even while earning a Master of Business Administration degree and Juris Doctorate, even while starting a family that now includes three children under age seven, even while advancing as a finance professional to your current position of senior financial analyst for the Sisters of Providence Health System.&amp;nbsp; During your tenure, tens of millions of dollars have been spent to renovate Holyoke's schools, fire stations, ball fields, sidewalks, sewers, and roads.&amp;nbsp; A new library has been planned.&amp;nbsp; An $80-$100 million computer center has been slated to open in the future, projected to make Massachusetts a leader in high performance computing for scientists and bring as many as 1,000 jobs to the region.&amp;nbsp; Federal High-Speed rail funds have been secured to develop a train station that will put Holyoke on the Amtrak line between New Haven and St. Albans, Vermont.&amp;nbsp; Renovationsare nearly complete in the former fire department headquarters on Maple Street; soon the building will reopen as the four-story Holyoke Multimodal Transportation Center, housing a new bus terminal, a daycare and preschool program, and an adult literacy program run by HCC.&amp;nbsp; With investments like these, you have revitalized Holyoke and positioned it for continued growth.&amp;nbsp; At the same time, you have been a fiscal watchdog, taking care to build a rainy day reserve and avoiding excessive bonds that would compromise the city's financial future.&amp;nbsp; In short, you've performed an impressive financial balancing act for the city, and you've repeated it with equal success for HCC. When former Governor Romney asked you to become a college trustee in 2006, you quickly agreed to support an institution you had long admired as&amp;nbsp;a partner in building your city and region.&amp;nbsp; You supported vital spending at HCC, such as initiatives to reach out to more minority students in your city; you simultaneously protected rainy day funds and worked hard to keep student fees as low as possible.&amp;nbsp; You were part of the grand opening for the Kittredge Center for Business and Workforce Development and played a vital role in shaping it as a major regional resource.&amp;nbsp; In 2008, BusinessWest named you one of the "Top 40 Young Professionals under 40 in Western Massachusetts." We second that nomination today, acknowledging you as one of Holyoke's most dedicated public servants and presenting you with a 2010 Distinguished Service Award."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-4702814284570535174?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4702814284570535174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4702814284570535174'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/05/holyoke-community-college-awards-city.html' title='Holyoke Community College Awards City Councilor Kevin Jourdain with its 2010 Distinguished Service Award!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-3099860350609115808</id><published>2010-05-27T20:21:00.001-04:00</published><updated>2010-05-27T20:22:41.742-04:00</updated><title type='text'>Councilors Jourdain and Vacon file Common Sense Substitute Amendment to Proposed $300 Cat Feeding Ban</title><content type='html'>&lt;b&gt;Sec. 14-1.  Definitions.&lt;/b&gt;&lt;br /&gt;As used in this chapter, the following terms shall mean:&lt;br /&gt;&lt;br /&gt;Animal:  Any living creature, including domestic or exotic (i.e. dog, cat, horse, cow, sheep, goat, pig, fowl, ferret, iguana, snake, etc.).  &lt;br /&gt;&lt;br /&gt;Animal control officer/inspector of animals:  Any person designated by the board of health who is responsible for enforcing and implementing the Holyoke Code of Ordinances and state and federal law relating to the control, impoundment, and disposition of animals.  &lt;br /&gt;&lt;br /&gt;Animal exhibition:  Any spectacle, display, act or event other than circuses, in which animals are used.  &lt;br /&gt;&lt;br /&gt;Animal shelter:  Any facility operated by a humane society, a county or municipal agency, or its authorized agents for the purpose of impounding or caring for animals held under the authority of this chapter or any law of the Commonwealth of Massachusetts.  &lt;br /&gt;&lt;br /&gt;At large:  When an animal strays off the premises of the owner, and is not under the control of the owner or a member of owner's immediate family either by leash, cord, chain or other restraint. Any animal found to be outside of its natural habitat and not under the owner's control shall be deemed to be at large.  &lt;br /&gt;&lt;br /&gt;Circus:  A commercial variety show featuring animal acts for public entertainment.  &lt;br /&gt;&lt;br /&gt;Commercial animal establishment:  Any pet shop, grooming shop, auction, zoological park, circus, performing animal exhibition or kennel.  &lt;br /&gt;&lt;br /&gt;Dangerous dog or animal:  Any dog or animal that:  &lt;br /&gt;&lt;br /&gt;1. Inflicts bite(s) without causing serious bodily injury on human or &lt;br /&gt;domestic animals without provocation on public or private property;&lt;br /&gt;2.  Chases or approaches a person on public or private property without provocation, in a menacing fashion or an apparent attitude of attack;&lt;br /&gt;3.    In the opinion of the animal control officer, constitutes a threat to public health or safety; or has exhibited a tendency to do any act which might endanger the safety, health or well-being of any person or animal without sufficient provocation for such act;&lt;br /&gt;4.    Possesses a known propensity, tendency or disposition to attack, cause injury, or to otherwise threaten the safety of human beings or other animals without provocation.&lt;br /&gt;&lt;br /&gt;Grooming shop:  Any commercial establishment where animals are bathed, clipped or otherwise groomed. &lt;br /&gt;&lt;br /&gt;Guard dogs:  Dogs which meet the provisions of M.G.L.A. c. 129, § 39b.  &lt;br /&gt;&lt;br /&gt;Humane officer:  Any person designated by the Commonwealth of Massachusetts, a county government, a municipal government or a humane society as a law enforcement officer who is qualified to perform such duties under M.G.L.A. c. 147, § 10.  &lt;br /&gt;&lt;br /&gt;Kennel:  Any premises wherein any person, partnership or corporation engages in the business of boarding, breeding, buying, letting for hire, training for a fee, or selling dogs, or engages in training dogs for guard or sentry purposes, or every pack or collection of more than three dogs three months old or over owned or kept on a single premises irrespective of the purpose for which they are maintained.  &lt;br /&gt;&lt;br /&gt;Licensing authority:  The city clerk, as provided by the General Laws of the commonwealth.  &lt;br /&gt;&lt;br /&gt;Owner:  Any person, partnership, or corporation owning, keeping or harboring one or more animals. An animal shall be deemed to be harbored if it is fed or sheltered for 48 hours.  &lt;br /&gt;&lt;br /&gt;Pet:  Any nonfarm animal kept for pleasure.  &lt;br /&gt;&lt;br /&gt;Physical restraint:  Dogs must be on a leash not to exceed six feet and controlled by an adult physically capable of controlling such dog.  &lt;br /&gt;&lt;br /&gt;Rendering center:  A facility that properly disposes of sick, injured or deceased animals in a humane fashion.  &lt;br /&gt;&lt;br /&gt;Serious bodily injury:  Bodily injury which involves a substantial risk of death, unconsciousness, extreme physical pain, protracted and obvious disfigurement or loss or impairment of bodily function.  &lt;br /&gt;&lt;br /&gt;Veterinary hospital or clinic:  Any establishment maintained and operated by a licensed veterinarian for surgery, diagnosis, and treatment of diseases and injuries of animals.  &lt;br /&gt;&lt;br /&gt;Vicious dog or animal:    &lt;br /&gt;1.    Any dog or animal that has inflicted serious bodily injury on or killed a human being without provocation on public or private property.&lt;br /&gt;2. Any dog or animal that has inflicted serious bodily injury on or killed another animal without provocation on public or private property.&lt;br /&gt;3. Any dog or animal harbored on property known for drug trafficking or gang activity or on property where such activity is taking place and used specifically for the protection of illicit, illegal or criminal activities.&lt;br /&gt;4. Any dog or animal trained, owned or harbored primarily or in part for the purpose of fighting other animals.&lt;br /&gt;5. Any dog or animal for which the animal inspector or the director of health has a verified report of having attacked or bitten any person and caused serious bodily injury shall be considered a vicious dog or animal.&lt;br /&gt;6. A dog or animal will not be classified as "vicious" if the threat, injury or damage was sustained by a person who, at the time of attack, was unlawfully on the property with the intent to commit a crime or tort upon the premises occupied by the owner of the dog or animal, was tormenting, abusing, or assaulting the dog or animal or if the dog or animal was defending or protecting its owner from unjustified attack or assault.&lt;br /&gt;&lt;br /&gt;Wild animal:  Any raccoon, skunk, fox, lynx, and other similar warm-blooded animal and poisonous and non-poisonous reptiles, normally found in the wild.  &lt;br /&gt;&lt;br /&gt;Zoological park:  Any facility, other than a pet shop or kennel, displaying or exhibiting one or more species of domesticated or nondomesticated animals, operated by a person, partnership, corporation or government agency.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Sec. 14-17 Nuisances Prohibited&lt;/b&gt;&lt;br /&gt;(a) No owner shall knowingly allow a public nuisance to be created on his/her property as the result of any animal(s), domestic or wild.&lt;br /&gt;(b) Animals shall be considered a public nuisance including, but not limited to, the following instances:&lt;br /&gt;(1) Any animal or group of animals that molest or attack passerby, passing vehicles or other animals without provocation.&lt;br /&gt;(2) Any animal or group of animals that trespass repeatedly on school grounds or private property; are repeatedly at large three or more times; or damage private or public property.&lt;br /&gt;(3) Any animal or group of animals which through accumulated waste or other reason cause offensive odors detectable from any right-of-way- or adjoining properties.&lt;br /&gt;(4) Any animal or group of animals which tests positive for a transmittable disease such as feline leukemia or parvo and interact with other animals in such a manner as to increase the likelihood of the spread of the disease. &lt;br /&gt;(5) Any animal or group of animals which bark, whine, howl or makes any noises natural to its species in an excessive, continuous or untimely fashion so as to disturb the peace. Any individual or group who allows a dog to bark so as to disturb the peace shall be subject to the fines set forth in Section 54-15 (bb) of the City of Holyoke Code of Ordinances.&lt;br /&gt;&lt;br /&gt;(c) If any of the above circumstances are found upon complaint received by the Animal Control Officer or the Board of Health and confirmed upon inspection, the Animal Control Officer or the Board of Health or its agents may issue a written order to the person or persons having control of the premises to correct the offending conditions. &lt;br /&gt;&lt;br /&gt;(d) This section shall be enforced in accordance with Sections 14-6 and 14-7 of the City of Holyoke Code of Ordinances, and the procedures set forth in M.G.L. Ch. 40, § 21D. Unless otherwise provide for herein, any person who fails to comply with a written order or any other provision of this section shall be subject to a fine of $10.00 per day for the first offense, $50.00 for the second offense and $100.00 for the third and each subsequent offense. Each day that the violation continues shall be deemed a separate offense. In addition to any civil or criminal penalties, any license to keep animals may be revoked. &lt;br /&gt;&lt;br /&gt;(e) Upon the issuance of a 3rd offense, the animal control officer or board of health and/or their agents shall remove the offending animal that is creating a nuisance as defined by this section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Section 14-18 Outdoor Feeding and/or Sheltering of Feral or Stray Cats&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;(a) Outdoor feeding and or sheltering permitted. The outdoor feeding and/or sheltering of feral or stray cats is hereby permitted on any public or private property unless the feeding and/or sheltering shall create a nuisance as defined in Section 14.17.  &lt;br /&gt;(b) Definitions. For purposes of this section,&lt;br /&gt;Feeding shall mean the provision of food, water or other substance left outside of any building or structure.&lt;br /&gt;&lt;br /&gt;Feral cat shall mean one that exists in an untamed state, or one that has returned to an untamed state and is no longer considered domesticated, or one that was previously residing in a domesticated home and has been abandoned by its prior owner.&lt;br /&gt;&lt;br /&gt;Stray cat shall mean one that was previously residing in a domesticated home and has been abandoned by it’s prior owner.&lt;br /&gt;&lt;br /&gt;Sheltering shall mean the provision of any type of shelter, whether temporary or permanent that a cat may enter, outside of the primary structure on the property.&lt;br /&gt;&lt;br /&gt;(c) Penalties and Enforcement. This section shall be enforced by the Board of Health, the Animal Control Officer and their agents in accordance with Sections 14-6 and 14-7 of the City of Holyoke Code of Ordinances and the procedures set forth in M.G.L. Ch. 40, Sec. 21D.&lt;br /&gt;i. Following an investigation by the Board of Health, Animal Control Officer or their agents, anyone who is found to be feeding and/or sheltering feral or homeless cats in violation of this section shall immediately be issued a cease and desist order.&lt;br /&gt;&lt;br /&gt;ii. In the event that a person fails to comply with a cease and desist order, the Board of Health, Animal Control Officer and their agents shall have the right to seize and remove any feral or homeless casts from the property.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-3099860350609115808?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3099860350609115808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3099860350609115808'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/05/councilors-jourdain-and-vacon-file.html' title='Councilors Jourdain and Vacon file Common Sense Substitute Amendment to Proposed $300 Cat Feeding Ban'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-2867843118439799877</id><published>2010-05-04T00:16:00.000-04:00</published><updated>2010-05-04T00:16:30.219-04:00</updated><title type='text'>Holyoke City Council Portrait circa 1948</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Ocicw3mP2BU/S9-e8q1_gwI/AAAAAAAAAN4/6f0SAYeNPK0/s1600/Holyoke+City+Council+circa+1948.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://3.bp.blogspot.com/_Ocicw3mP2BU/S9-e8q1_gwI/AAAAAAAAAN4/6f0SAYeNPK0/s400/Holyoke+City+Council+circa+1948.jpg" tt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Thought you might enjoy this great picture of the Holyoke City Council taken circa 1948 inside the Council chambers.&amp;nbsp; For those that think 15 Councilors is too many, you might notice that there were quite a few councilors more than 15 in those days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-2867843118439799877?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2867843118439799877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2867843118439799877'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/05/holyoke-city-council-portrait-circa.html' title='Holyoke City Council Portrait circa 1948'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Ocicw3mP2BU/S9-e8q1_gwI/AAAAAAAAAN4/6f0SAYeNPK0/s72-c/Holyoke+City+Council+circa+1948.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-5684349775345333225</id><published>2010-04-25T17:39:00.000-04:00</published><updated>2010-04-25T17:39:51.147-04:00</updated><title type='text'>Finance Committee reviews Library Construction Proposals</title><content type='html'>&lt;strong&gt;Holyoke City Council Finance Committee takes $15 million step toward a new library&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By Mike Plaisance, The Republican &lt;br /&gt;&lt;br /&gt;April 22, 2010, 9:32PM&lt;br /&gt;&lt;br /&gt;HOLYOKE – The City Council will vote on May 4 whether to approve borrowing $15 million to renovate the Holyoke Public Library under a plan councilors referred to the mayor on Thursday. &lt;br /&gt;But officials said among the numerous issues to be resolved are how much control the city would have over the library, which currently is a private, nonprofit corporation. &lt;br /&gt;&lt;br /&gt;The discussion came in a two-hour meeting of the council Finance Committee at City Hall. &lt;br /&gt;&lt;br /&gt;The $15 million is a figure needed to trigger receipt of tax credits that will be sold to investors to help fund the library renovation. The $15 million is not necessarily the amount that the city will borrow and have to pay interest on over a 20-year loan, officials said. &lt;br /&gt;&lt;br /&gt;Most of the project, in fact, would be paid for not with borrowing but with a state grant, funds from the library endowment and fund-raising, officials said. &lt;br /&gt;&lt;br /&gt;The motion the council Finance Committee approved by a vote of 4-0 caps the city’s actual borrowing commitment at $5.5 million.&lt;br /&gt;&lt;br /&gt;Still, councilors said, the city is taking on a burden of debt, however important the library project. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;“Just so everyone’s clear about this: That’s an enormous payment. This is a very serious commitment on the part of the city,” committee member Kevin A. Jourdain said.&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;“It’s a tremendous amount of money” for a worthy project, council President Joseph M. McGiverin said. &lt;br /&gt;&lt;br /&gt;Said Terry Plum, president of the library board of directors: “The library and the city have been partners for 100 years, so I’m looking at this as a new partnership.” &lt;br /&gt;&lt;br /&gt;But, he said, time is tight. &lt;br /&gt;&lt;br /&gt;The library board has a $4.5 million grant from the state Board of Library Commissioners. But the grant is contingent on library officials demonstrating by June 15 that they can raise the rest of the money and that the community supports the project. The community support includes City Council authorization for borrowing, officials said. &lt;br /&gt;&lt;br /&gt;The 108-year-old library at 335 Maple St. has various problems. There's water damage from leaks, mold and air quality issues, cracks in the stone exterior and inadequate space for children’s services, public computers and archives. &lt;br /&gt;&lt;br /&gt;The plan is to increase the current 25,000 square feet to 39,000 square feet. A final decision has yet to be made about whether that means building a new library or an addition to the existing one. &lt;br /&gt;&lt;br /&gt;One of the concerns of councilors about the library project is the uncertainty about exactly how much money can be expected from investors willing to buy the tax credits. Such credits are attractive to investors because in return for the cash they pay into a project, they later get a federal tax reduction, or credit.&lt;br /&gt;&lt;br /&gt;The larger the investment from those buying tax credits, the lower the financial burden on the city and the less the library’s board of directors must tap into the $5 million endowment, officials said. &lt;br /&gt;&lt;br /&gt;The committee’s motion was referred to Mayor Elaine A. Pluta, who supports the project. Proposals for borrowing money must come from the mayor.&lt;br /&gt;&lt;br /&gt;The motion also sets as a condition a requirement that the documents detailing the borrowing contain a surety, or pledge, that the library board will commit $2.5 million to the project either from fund-raising or the endowment. &lt;br /&gt;&lt;br /&gt;The Holyoke Public Library gets a yearly appropriation from the city of more than $500,000 to cover salaries of the 21-person staff and utilities.&lt;br /&gt;&lt;br /&gt;Discussions have included the possibility of the city taking over the library as a new department, given the city's financial commitment to the project. &lt;br /&gt;&lt;br /&gt;But Plum and other officials, including Councilor John J. O'Neill said Thursday the preference would be for some separation to be maintained with a governance consisting of a board with a majority of members appointed by the mayor.&lt;br /&gt;&lt;br /&gt;© 2010 masslive.com. All rights reserved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-5684349775345333225?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5684349775345333225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5684349775345333225'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/04/finance-committee-reviews-library.html' title='Finance Committee reviews Library Construction Proposals'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-3809518459245582061</id><published>2010-04-25T17:33:00.000-04:00</published><updated>2010-04-25T17:33:03.321-04:00</updated><title type='text'>Updated Story on OCD Audit</title><content type='html'>Holyoke awaits audit decision&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sunday, April 25, 2010 &lt;br /&gt;&lt;br /&gt;By MIKE PLAISANCE&lt;br /&gt;&lt;br /&gt;mplaisance@repub.com&lt;br /&gt;&lt;br /&gt;HOLYOKE - The city is still waiting to hear whether it must repay federal grants used to build seven duplexes, but one councilor says the city should attempt to get the money from the developer if a repayment is ordered. &lt;br /&gt;&lt;br /&gt;"It's a big problem," Ward 2 Councilor Diosdado Lopez said recently. &lt;br /&gt;&lt;br /&gt;Lopez has filed an order to place the responsibility for $288,000, which the federal government says was overpayment on construction of seven duplexes, on the nonprofit Olde Holyoke Development. &lt;br /&gt;&lt;br /&gt;Olde Holyoke Development received 26 of the 39 loans processed here under one of the programs audited by the Housing and Urban Development department. Olde Holyoke officials said the city and Olde Holyoke Development abided by all federal guidelines and regulations. &lt;br /&gt;&lt;br /&gt;The audit issued on Nov. 23 found that there was "ineligible, unreasonable or unnecessary" use of $3.87 million in federal funds in relation to construction and demolition. The audit covered July 2006 to June 2009. &lt;br /&gt;&lt;br /&gt;City officials say the Community Development Office has abided by federal rules and that some of the disagreements are due to the city and the federal agency using different calculation formulas. &lt;br /&gt;&lt;br /&gt;Lopez' order to have Olde Holyoke Development be responsible if a repayment is ordered is being studied in the Redevelopment Committee. &lt;br /&gt;&lt;br /&gt;William H. Murphy, administrator of the city Community Development Office, told councilors a few weeks ago that it would be about a month before the city learns whether it must repay any money. &lt;br /&gt;&lt;br /&gt;Spokeswoman Rhonda M. Siciliano said the federal agency is continuing the review of the Holyoke audit and doesn't have a time frame for when that will be done. &lt;br /&gt;&lt;br /&gt;The audit said building the duplexes should have cost about $1.75 million, based on the calculations of "a specialist with expertise in estimating construction costs," but the city paid more than $2 million. &lt;br /&gt;&lt;br /&gt;The audit said the federal appraiser in determining what the seven duplexes should have cost used the "universal standards" of data from the Marshall &amp;amp; Swift company, of Los Angeles, Calif. The company's Web site says it provides the most current and accurate building cost data available. &lt;br /&gt;&lt;br /&gt;Murphy, Deputy Administrator Linda B. McQuade and Richard P. Courchesne, Olde Holyoke Development president, said construction costs for the duplexes were based on the real costs of home construction in this area. The costs also included Energy Star upgrades, which consist of guidelines for energy efficiency set by the U.S. Environmental Protection Agency, they said. &lt;br /&gt;&lt;br /&gt;The auditor said the appraiser's determinations included the maximum allowable calculations for energy efficiencies. &lt;br /&gt;&lt;br /&gt;In response to Lopez' order about repayment being the obligation of Olde Holyoke Development, Courchesne said everything was done properly. Every home his organization built has a mortgage and a promissory note, he said. &lt;br /&gt;&lt;br /&gt;"In the 30 years we've been working with the city, they've never paid anything back to HUD and my opinion is they won't have to this time, either," Courchesne said. &lt;br /&gt;&lt;br /&gt;Between 1975 and 2009, Olde Holyoke Development built 158 homes, mostly duplexes, that have a total assessed value of nearly $21 million, he said. &lt;br /&gt;&lt;br /&gt;McQuade declined to comment specifically on Lopez' order. But she said the city and Olde Holyoke Development abided by all regulations, despite the audit's findings, and she was eager for a resolution to the 16-month-long review. &lt;br /&gt;&lt;br /&gt;"I'd like it to be over with. They walked into the office in December 2008, so, yes, I'll be happy when it's over with," McQuade said. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Chairman Kevin A. Jourdain said the Redevelopment Committee will deal with the issue again once federal officials determine the finalized audit. &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Lopez' proposal to have Olde Holyoke Development pay the bill if money must be returned could be an option, Jourdain said, but that will depend on what the federal government ultimately decides was done wrong. &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;"If it's something Olde Holyoke did, then that's a reasonable request," but not if the fault lies with the city, Jourdain said.&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;Councilor at Large Aaron M. Vega said he was concerned about the questions the audit raises about how federal money is used. &lt;br /&gt;&lt;br /&gt;"And you don't know, is it just the tip of the iceberg, is there more out there?" Vega said. &lt;br /&gt;&lt;br /&gt;The dispute between city and federal officials over how funding was used leaves councilors confused, Ward 1 Councilor Donald R. Welch said. &lt;br /&gt;&lt;br /&gt;"It's an interpretation of words, and I'm not an auditor, so it's hard to say," Welch said. &lt;br /&gt;&lt;br /&gt;Another dispute between the federal auditor and the city again lies with the seven duplexes Olde Holyoke Development built using city-issued Community Development Block Grants. The auditor said the city exceeded by nearly $1 million the allowed subsidies to Olde Holyoke Development. &lt;br /&gt;&lt;br /&gt;But McQuade said the auditor failed to account for the approximately $700,000 that the eventual owners of the properties paid to buy them. &lt;br /&gt;&lt;br /&gt;The remaining $332,105 was devoted to demolition costs, a use which a 1979 amendment to regulations allowed despite the auditor's assertion that use of the money to raze buildings was prohibited, McQuade said. &lt;br /&gt;&lt;br /&gt;The Community Development Office is adamant they did things right and monitored Olde Holyoke Development, she said. &lt;br /&gt;&lt;br /&gt;"The $330,000 was for demolition," McQuade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-3809518459245582061?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3809518459245582061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3809518459245582061'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/04/updated-story-on-ocd-audit.html' title='Updated Story on OCD Audit'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-2616271694426398595</id><published>2010-02-13T02:34:00.000-05:00</published><updated>2010-02-13T02:34:38.835-05:00</updated><title type='text'>Attorney Lisa Ball appointed City Solicitor</title><content type='html'>Attorney Lisa Ball of Holyoke was appointed to the Top Legal Job in the city by Mayor Pluta. She is slated to come up for a confirmation vote on February 16, 2010.&amp;nbsp;&amp;nbsp; As promised in my previous meeting notes, I have attached Mayor Pluta's appointment letter and Attorney Ball's clearance letter from the Ethics Commission to serve in this capacity.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Ocicw3mP2BU/S3ZUeejGDaI/AAAAAAAAANY/1YoCj4NJI6g/s1600-h/legal+opinion0001_Page_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ct="true" height="320" src="http://4.bp.blogspot.com/_Ocicw3mP2BU/S3ZUeejGDaI/AAAAAAAAANY/1YoCj4NJI6g/s320/legal+opinion0001_Page_1.jpg" width="238" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Ocicw3mP2BU/S3ZUvZj0KII/AAAAAAAAANg/AWRQT81bLhk/s1600-h/legal+opinion0001_Page_2.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ct="true" src="http://2.bp.blogspot.com/_Ocicw3mP2BU/S3ZUvZj0KII/AAAAAAAAANg/AWRQT81bLhk/s320/legal+opinion0001_Page_2.jpg" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_Ocicw3mP2BU/S3ZVBS0aSVI/AAAAAAAAANo/KkDvA9UqQAM/s1600-h/legal+opinion0001_Page_3.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ct="true" src="http://4.bp.blogspot.com/_Ocicw3mP2BU/S3ZVBS0aSVI/AAAAAAAAANo/KkDvA9UqQAM/s320/legal+opinion0001_Page_3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Ocicw3mP2BU/S3ZVLrM-cFI/AAAAAAAAANw/quGV3vqVB6s/s1600-h/legal+opinion0001_Page_4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ct="true" src="http://1.bp.blogspot.com/_Ocicw3mP2BU/S3ZVLrM-cFI/AAAAAAAAANw/quGV3vqVB6s/s320/legal+opinion0001_Page_4.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-2616271694426398595?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2616271694426398595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2616271694426398595'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/02/attorney-lisa-ball-appointed-city.html' title='Attorney Lisa Ball appointed City Solicitor'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Ocicw3mP2BU/S3ZUeejGDaI/AAAAAAAAANY/1YoCj4NJI6g/s72-c/legal+opinion0001_Page_1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-1218252928521873144</id><published>2010-02-13T01:58:00.000-05:00</published><updated>2010-02-13T01:58:04.714-05:00</updated><title type='text'>Meeting Notes from February 2, 2010 City Council Meeting</title><content type='html'>The City Council did not meet at its regularly scheduled meeting of January 19, 2010 because of the special US Senate election which elected Sen. Scott Brown (R-MA).&amp;nbsp; The Council met on February 2, 2010 and items of note are as follows:&lt;br /&gt;&lt;br /&gt;Olivia Mausel was confirmed for her re-appointment to a 3 year term to the Historical Commission.&lt;br /&gt;John McAndrew was confirmed for his re-appointment to a 3 year term to the Parks &amp;amp; Recreation Commission.&lt;br /&gt;Marilyn Sanabria was confirmed for her re-appointment to a 5 year term to the Holyoke Housing Authority&lt;br /&gt;&lt;br /&gt;The Mayor appointed Lisa Ball of Holyoke to be the new City Solicitor and her appointment was referred to the Public Service Committee for an interview.&amp;nbsp; Attorney Ball also filed an Ethics Commission statement with the Council which I will post on Holyoke First for review by the citizens.&lt;br /&gt;&lt;br /&gt;Council approved a $30,000 Transfer request to fund the on-going Fiscal Year 2008 audit of the Treasurer's office.&lt;br /&gt;&lt;br /&gt;Council approved a $6,000 Transfer request for additional part-time assistance in the Treasurer's office.&lt;br /&gt;&lt;br /&gt;Council approved bond re-authorization for $2.8 million in municipal bonds at lower interest rates for the purpose of saving the taxpayers tens of thousands of dollars in interest charges.&lt;br /&gt;&lt;br /&gt;Council approved 2 new taxi cab licenses for a taxi company in the city named Aaron's Transportation.&lt;br /&gt;&lt;br /&gt;Council adopted a Resolution filed by Councilor Lisi in support of the Extended Producer Responsibility bill (H-833).&amp;nbsp; This law is already in effect in 20 states and the law is designed to enhance recycling efforts in the Commonwealth.&amp;nbsp; The Council resolution was a non-binding order encouraging adoption of the law by the state legislature.&amp;nbsp; The Resolution was adopted by a vote of 8 yea and 5 nay.&amp;nbsp; The roll call was:&lt;br /&gt;Yes: Jourdain, Keane, Lisi, Lopez, McGiverin, O'Neill, Tallman, Vega&lt;br /&gt;No: Devine, McGee, Murphy, Vacon, Welch&lt;br /&gt;Absent: Leahy, Purington&lt;br /&gt;&lt;br /&gt;The Council adopted a resolution commending James Lavelle, Manager of Holyoke Gas &amp;amp; Electric for receiving Buisness West's "Top Entrepreneur Award" for 2009.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-1218252928521873144?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1218252928521873144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1218252928521873144'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/02/meeting-notes-from-february-2-2010-city.html' title='Meeting Notes from February 2, 2010 City Council Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-3673172638197569249</id><published>2010-02-13T01:32:00.000-05:00</published><updated>2010-02-13T01:32:28.972-05:00</updated><title type='text'>Councilor Jourdain Appointed Chairman of Redevelopment Committee!</title><content type='html'>City Council President Joseph McGiverin announced his appointments to all of the 5 Standing Committees of the City Council.&amp;nbsp; President McGiverin announced the return of 3 Chairs and the selection of 2 new Chairs.&amp;nbsp; He selected Ward 2 Councilor Diosdado Lopez to chair the Ordinance Committee and Councilor At Large Kevin Jourdain to chair the Redevelopment Committee.&amp;nbsp; Councilor Jourdain released the following statement upon selection for this important post, "Firstly, I have served with Councilor McGiverin for the past 16 years and I am very thankful to him for selecting me for this important chairmanship.&amp;nbsp; The City of Holyoke's future is tied to its ability to grow and develop.&amp;nbsp; The Redevelopment Committee will oversee a continued re-birth of our community economically and civicly and I am honored to support the numerous projects, such as the new high tech computing center, that are coming to Holyoke. I look forward to working with the other members of the committee and City Council, as well as, Mayor Pluta&amp;nbsp;to deliver real results for the people of our great city!"&amp;nbsp; Councilors Lopez and Jourdain are 2nd and 3rd respectively in seniority on the City Council behind President McGiverin.&amp;nbsp; Councilor Jourdain also pointed out that he maintained his important seat on the powerful Finance Committee and will continue his Fiscal Watchdog role on that committee.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The 2010-2011 Committee Assignments&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ordinance:&lt;/strong&gt; Lopez, O'Neill, Keane, Purington, Lisi&lt;br /&gt;&lt;strong&gt;Finance:&lt;/strong&gt; McGee, Tallman, Leahy, O'Neill, Jourdain&lt;br /&gt;&lt;strong&gt;Public Safety:&lt;/strong&gt; Devine, Tallman, Purington, Vega, Murphy&lt;br /&gt;&lt;strong&gt;Public Service:&lt;/strong&gt; Leahy, Welch, Lisi, Murphy, Vacon&lt;br /&gt;&lt;strong&gt;Redevelopment:&lt;/strong&gt; Jourdain, Welch, Keane, Vacon, Vega&lt;br /&gt;(The first name listed is Chair and the second name listed is Vice-Chair)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ad-Hoc Cmte on Personnel:&lt;/strong&gt; McGiverin, Devine, Purington&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-3673172638197569249?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3673172638197569249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3673172638197569249'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/02/councilor-jourdain-appointed-chairman.html' title='Councilor Jourdain Appointed Chairman of Redevelopment Committee!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-5256532655540057021</id><published>2010-02-13T00:50:00.000-05:00</published><updated>2010-02-13T00:50:56.843-05:00</updated><title type='text'>Meeting Notes for January 5, 2010 Meeting</title><content type='html'>Our First Meeting as a newly constituted City Council with our&amp;nbsp;3 new members of Brenna Murphy, Aaron Vega and Linda Vacon was held on January 5, 2010.&amp;nbsp; Of note at the meeting was:&lt;br /&gt;&lt;br /&gt;The City Council reappointed Deborah Brunelle as Assessor for a 3 year term. &lt;br /&gt;Mark Naidorf was re-appointed to a 3 year term on the Water Commission.&lt;br /&gt;&lt;br /&gt;The Council received a request from Mayor Pluta to create a PR24 position ($55,000) to create a 18 month assignment for a new Munis Administrator position.&amp;nbsp; This new position was sent to the Ordinance Committee.&amp;nbsp; It is argued that this position is needed in order to enable the city to upgrade its current Munis software and fully open up all of the many accountability features of the powerful Munis software program.&lt;br /&gt;&lt;br /&gt;An additional request from the City Treasurer for $30,000 to continue the auditing of the Treasurer's office books was referred to the Finance Committee.&lt;br /&gt;&lt;br /&gt;The City Council re-adopted its standing rules from last term for this term.&amp;nbsp; There was a discussion about changing the meeting time from 7:30pm to 7:00pm. An order to do this is currently in the Ordinance Committee. A motion was made to remove the time change order from committee by Councilor Devine. Her motion was defeated by a vote of 7 yea and 8 nay (10 was required). &lt;br /&gt;Roll Call as follows:&lt;br /&gt;Yes: Devine, Leahy, McGee, Murphy, O'Neill, Tallman, Vega&lt;br /&gt;No: Jourdain, Keane, Lisi, Lopez, McGiverin, Purington, Vacon, Welch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-5256532655540057021?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5256532655540057021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/5256532655540057021'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/02/meeting-notes-for-january-5-2010.html' title='Meeting Notes for January 5, 2010 Meeting'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-7425287471222651162</id><published>2010-01-09T21:54:00.001-05:00</published><updated>2010-01-09T21:55:56.497-05:00</updated><title type='text'>Here's a Picture of Your New Holyoke City Council for 2010-2011!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Ocicw3mP2BU/S0lBBHKv3ZI/AAAAAAAAAMc/2j4MSu-dVoc/s1600-h/Group+City+Council+Picture+1-4-10.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://3.bp.blogspot.com/_Ocicw3mP2BU/S0lBBHKv3ZI/AAAAAAAAAMc/2j4MSu-dVoc/s400/Group+City+Council+Picture+1-4-10.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Credit: Dennis Hohenberger&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-7425287471222651162?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7425287471222651162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7425287471222651162'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2010/01/heres-picture-of-your-new-city-council.html' title='Here&apos;s a Picture of Your New Holyoke City Council for 2010-2011!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Ocicw3mP2BU/S0lBBHKv3ZI/AAAAAAAAAMc/2j4MSu-dVoc/s72-c/Group+City+Council+Picture+1-4-10.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-8173838531487418458</id><published>2009-12-22T19:39:00.000-05:00</published><updated>2009-12-22T19:39:38.632-05:00</updated><title type='text'>Inauguration Day Schedule January 4, 2010</title><content type='html'>The Inauguration of City Officials will take place on Monday, January 4, 2010. &lt;br /&gt;&lt;br /&gt;The Schedule is:&lt;br /&gt;&lt;br /&gt;9:00am Blessing Mass at Holy Cross Church&lt;br /&gt;&lt;br /&gt;10:00am Inauguration Ceremony at City Hall&lt;br /&gt;&lt;br /&gt;I hope that you can attend. You will enjoy this special ceremony very much as we celebrate the greatness of Holyoke and our democracy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-8173838531487418458?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8173838531487418458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/8173838531487418458'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/12/inauguration-day-schedule-january-4.html' title='Inauguration Day Schedule January 4, 2010'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-837929486259187589</id><published>2009-12-22T18:48:00.000-05:00</published><updated>2009-12-22T18:48:43.884-05:00</updated><title type='text'>Mayor-Elect Pluta announces Inaugural Ball Plans</title><content type='html'>The Honorable Mayor-Elect Elaine Pluta announced that she is hosting the 2010 Inaugural Ball on Saturday, January 23, 2010 from 6pm to 11pm.  The Ball will be held at the Log Cabin Banquet &amp; Meeting House located at 500 Easthampton Rd, Holyoke, MA 01040. The event is Semi-Formal attire and a donation of $60 per person in requested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-837929486259187589?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/837929486259187589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/837929486259187589'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/12/mayor-elect-pluta-announces-inaugural.html' title='Mayor-Elect Pluta announces Inaugural Ball Plans'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-2585675090355479885</id><published>2009-12-20T00:37:00.000-05:00</published><updated>2009-12-20T00:37:28.369-05:00</updated><title type='text'>Governor on hiring spree while cutting programs for Holyoke Soliders' Home</title><content type='html'>&lt;b&gt;Critics slam Deval Patrick over hiring spree&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;1,300 jobs filled in ’09&lt;br /&gt;By Joe Dwinell and Hillary Chabot &lt;br /&gt;Tuesday, December 15, 2009 &lt;br /&gt;http://www.bostonherald.com &lt;br /&gt;&lt;br /&gt;The Patrick administration filled more than 1,300 state jobs this year - including a librarian for cons, a painter for hospitals and a “game biologist” - in a hiring frenzy that has watchdogs questioning whether the governor has a tight grip on hiring in the face of a dire fiscal crisis.&lt;br /&gt;&lt;br /&gt;A Herald payroll analysis also indicates scores of the lucky job-seekers also gave generously to Gov. Deval Patrick’s election campaign.&lt;br /&gt;&lt;br /&gt;The hiring flurry is alarming state budget observers who slammed the governor for dishing out plum posts - including 20 that carry salaries of $100,000 or more - with no apparent rhyme or reason.&lt;br /&gt;&lt;br /&gt;“In the middle of this fiscal meltdown there should be a close scrutiny of new hires, and that doesn’t seem to be reflected here,” said Michael Widmer, executive director of the business-based Massachusetts Taxpayers Association.&lt;br /&gt;&lt;br /&gt;The list of new hires obtained by the Herald shows jobs spread out across executive offices:&lt;br /&gt;&lt;br /&gt;A $78,000-a-year teacher and a $47,400-a-year librarian for the Department of Correction, two of 200 prison employees hired; &lt;br /&gt;&lt;br /&gt;A $31,000-a-year painter for the Department of Public Health, which also added a physician specialist for $210,500 - the top-paid hire this year; &lt;br /&gt;&lt;br /&gt;A $44,307-a-year game biologist for the Department of Fish and Game; &lt;br /&gt;&lt;br /&gt;And a $206,000-a-year commissioner of higher education and a $117,000 elementary education administrator. &lt;br /&gt;&lt;br /&gt;In all, the state has added $46 million in new hires from January to November, the Herald review shows.&lt;br /&gt;&lt;br /&gt;The governor’s aides defended their actions, noting that the administration has since laid off 236 of the recent hires.&lt;br /&gt;&lt;br /&gt;“The vast majority of new workers have been hired to backfill necessary or critical positions,” said Secretary of Administration and Finance Jay Gonzalez in a statement.&lt;br /&gt;&lt;br /&gt;He added the governor has cut his own staff by 15 and is working with unions on other concessions, including up to nine days of furloughs.&lt;br /&gt;&lt;br /&gt;All told, Gonzalez said the governor has eliminated 1,930 positions, “far exceeding” his goal set last fall in response to a $600 million budget gap.&lt;br /&gt;&lt;br /&gt;Still, critics say Patrick’s seemingly haphazard hiring process is flawed.&lt;br /&gt;&lt;br /&gt;“It’s frustrating. The administration is slow to do what is being done in the private sector,” said House Minority Leader Bradley Jones (R-North Reading).&lt;br /&gt;&lt;br /&gt;“Where is the paper trail?” Jones added, saying new hires may be needed in some cases, but the process is not transparent.&lt;br /&gt;&lt;br /&gt;The Herald review also shows that dozens of the new hires contributed to Patrick’s campaign, including six who have given $1,000 and more since 2006.&lt;br /&gt;&lt;br /&gt;A Patrick aide told the Herald those who gave to the governor’s war chest and scored jobs share “a common vision for ways we can move the commonwealth forward.”&lt;br /&gt;&lt;br /&gt;The DOC librarian, an aide argued, fills the “bare-minimum requirement” to educate cons to avoid being bounced back inside. And it comes as DOC must trim $6.7 million off its books.&lt;br /&gt;&lt;br /&gt;Other department spokesmen argued yesterday the crime lab technicians, swine-flu investigators and guards just hired are all that’s keeping the germs and bad guys from gaining ground during a grim economy.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mass. Taxpayers Association director Michael Widmer criticizes Patrick administration for hiring 1,300 new workers during budget crisis &lt;br /&gt;By The Associated Press &lt;/b&gt;&lt;br /&gt;December 15, 2009, 1:01PM&lt;br /&gt;&lt;br /&gt;BOSTON – A government watchdog group is criticizing the administration of Gov. Deval L. Patrick for hiring more than 1,300 new state workers making a combined $46 million this year even as the state faces a $600 million budget gap. &lt;br /&gt;&lt;br /&gt;Michael J. Widmer, executive director of the Massachusetts Taxpayers Association, told the Boston Herald there needs to be better scrutiny of new state hires during a financial crisis. &lt;br /&gt;&lt;br /&gt;The Herald reported Tuesday that 20 of the new hires are making six-figure salaries, and six gave $1,000 or more to the Democratic governor’s campaign. &lt;br /&gt;&lt;br /&gt;A Patrick aide defended the hires, saying most were made to fill critical positions and more than 230 have since been laid off. Secretary of Administration and Finance Jay Gonzalez says the governor has eliminated 1,930 state positions since last fall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-2585675090355479885?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2585675090355479885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2585675090355479885'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/12/governor-on-hiring-spree-while-cutting.html' title='Governor on hiring spree while cutting programs for Holyoke Soliders&apos; Home'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-1217614914634475381</id><published>2009-12-20T00:08:00.001-05:00</published><updated>2009-12-20T00:23:23.798-05:00</updated><title type='text'>December 15, 2009 City Council Meeting Notes</title><content type='html'>&lt;strong&gt;The City Council meet on Tuesday, December 15, 2009 at 7:30pm and had the following important issues before it:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;(1) There was a special dedication to our deceased colleague John E. Whelihan in recognition of his 32 years on the City Council with a special plaque presented to his wife, Mildred Whelihan and City Councilor John "Jay" G. Whelihan.&amp;nbsp; Jay Whelihan served out the duration of his father's term and donated his entire salary to the Council on Aging. Jay is an exceptionally bright individual who the city is very lucky indeed to have now serving us on the Charter Commission.&lt;br /&gt;&lt;br /&gt;(2) There was a special presentation and award presented to retiring Fire Chief David Lafond.&amp;nbsp; Dave was joined by his beautiful family and received the well earned praise of a very long and distinguished career in the city's fire service.&amp;nbsp; Dave served on the fire department for 31 years and 15 years as Fire Chief.&lt;br /&gt;&lt;br /&gt;(3) Tax Classification and Rate Setting - There was a full discussion and a series of votes, here is how they broke down:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Starting with the lowest rate for homeowners, Councilor Whelihan and I made a motion for residential rate of 14.93 and commerical rate of 36.85.&amp;nbsp; The vote was as follows:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Yes - Jourdain, Lopez, Pluta, Tallman, Whelihan&lt;br /&gt;No - Brunelle, Devine, Keane, Leahy, Lisi, McGee, McGiverin, O'Neill, Purington, Welch&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Councilor Devine offerred the rate pushed by the Chamber of Commerce which would have raised residential rates to 15.20 and commerical rate to 36.21.&amp;nbsp; The votes was as follows:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Yes - Devine, Keane, Leahy, McGiverin, O'Neill, Purington, Tallman&lt;br /&gt;No - Brunelle, Jourdain, Lisi, Lopez, McGee, Pluta, Welch, Whelihan&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Councilor O'Neill offered the highest rate on residential all night with the residential rate of 15.56 and a commerical rate of 35.35&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Yes - Keane, McGiverin, O'Neill, Purington&lt;br /&gt;No - Brunelle, Devine, Jourdain, Leahy, Lisi, Lopez, McGee, Pluta, Tallman, Welch, Whelihan&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The final vote that was approved was one notch over what I originally proposed with a residential rate of 15.02 and Commerical Rate of 36.64.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Yes - Brunelle, Jourdain, Keane, Leahy, Lisi, Lopez, McGee, Pluta, Purington, Tallman, Whelihan&lt;br /&gt;No - Devine, McGiverin, O'Neill, Welch&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;(4) The Council approved a Special Act drafted by Councilor Pluta creating new powers for the police to monitor and rid our streets of gangs by preventing gang loitering.&amp;nbsp; This adopted Special Act requires the approval of the state legislature and it was forwarded to them after we adopted it. We also included an amendment that stated if they amended it, they need our prior approval before it can become law.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;On adoption of the new tougher laws&amp;nbsp;against gang loitering:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Yes - Jourdain, Keane, Lisi, Lopez, McGee, McGiverin, O'Neill, Pluta, Purington, Tallman, Welch, Whelihan&lt;br /&gt;No - Brunelle, Devine, Leahy&lt;br /&gt;&lt;br /&gt;(5) The Council approved $110,000 for additional Special Counsel funds to be appropriated as follows:&lt;br /&gt;$4393.70 for Real Time Court Reporting&lt;br /&gt;$64,399.32 for Sullivan, Hayes and Quinn&lt;br /&gt;$41,144.18 for Brodeur-McGan &amp;amp; Associates&lt;br /&gt;&lt;br /&gt;I requested at the meeting that Atty. Lisa Brodeur-McGan provide to the Council the amount of costs related to her recent motion to withdraw the opposition counsel in the matter of Thomas Moriarty vs. City of Holyoke.&amp;nbsp; Judge Sweeney wrote an opinion posted on Holyoke First in June 2009 that reported this motion was made in bad faith and she acted inappropriately representing the city.&amp;nbsp; The judge awarded the opposition counsel for Mr. Moriarty legal fees because of her actions.&amp;nbsp; This Friday, December 18, 2009, Judge Sweeney ultimately awarded $31,097 that Atty. Brodeur-McGan and/or the defendants (including the city, Mayor Sullivan, Attorney Proulx) must pay within 90 days.&amp;nbsp; I have placed the most recent order also on the Holyoke First site.&lt;br /&gt;&lt;br /&gt;Atty. Brodeur-McGan stated at the Council meeting that part of the money she was requesting was related to this motion. She was unsure how much and stated that she would have to get back to us.&amp;nbsp; I made a motion to table the $110,000 request in order to obtain this information.&amp;nbsp; The Council opposed my motion and decided to go forward and approve the entire package.&lt;br /&gt;&lt;br /&gt;The vote&amp;nbsp;to approve the $110,000 including the funds to Atty. Brodeur-McGan related to the motion she was admonished for by Judge Sweeney was as follows:&lt;br /&gt;&lt;br /&gt;Yes - Devine, Keane, Leahy, Lisi, Lopez, McGee, McGiverin, O'Neill, Pluta, Purington,&amp;nbsp;Tallman, Welch, Whelihan&lt;br /&gt;&lt;br /&gt;No - Brunelle, Jourdain&lt;br /&gt;&lt;br /&gt;(6) An application came in for a new Taco Bell to be located at 2199 Northampton Street.&amp;nbsp; It was sent to the ordinance committee.&lt;br /&gt;&lt;br /&gt;(7) A $5.5 million bond request for a new library and/or renovation came before the Council and it was sent to the Finance Committee for review.&lt;br /&gt;&lt;br /&gt;(8) Numerous orders were sent to the Redevelopment Committee to discuss the recent HUD audit from the US Housing and Urban Development department.&amp;nbsp; This 50 page report is linked to from the Holyoke First site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-1217614914634475381?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1217614914634475381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1217614914634475381'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/12/december-15-2009-city-council-meeting.html' title='December 15, 2009 City Council Meeting Notes'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-1162326699574958764</id><published>2009-12-19T23:09:00.001-05:00</published><updated>2009-12-20T00:25:43.766-05:00</updated><title type='text'>City Lawyer and Defendants ordered to pay $31,097 in Legal Fees - Click on Page to see Enlarged Version!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Ocicw3mP2BU/Sy2i1BcSDOI/AAAAAAAAAL0/xiwibcFJT2I/s1600-h/FeeAwardSweeney+12-18-09_Page_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://2.bp.blogspot.com/_Ocicw3mP2BU/Sy2i1BcSDOI/AAAAAAAAAL0/xiwibcFJT2I/s320/FeeAwardSweeney+12-18-09_Page_1.jpg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_Ocicw3mP2BU/Sy2i9mfXGII/AAAAAAAAAL8/AvstDS3aw5o/s1600-h/FeeAwardSweeney+12-18-09_Page_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://1.bp.blogspot.com/_Ocicw3mP2BU/Sy2i9mfXGII/AAAAAAAAAL8/AvstDS3aw5o/s320/FeeAwardSweeney+12-18-09_Page_2.jpg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_Ocicw3mP2BU/Sy2jD8YySkI/AAAAAAAAAME/lnCzR5bzEFU/s1600-h/FeeAwardSweeney+12-18-09_Page_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://1.bp.blogspot.com/_Ocicw3mP2BU/Sy2jD8YySkI/AAAAAAAAAME/lnCzR5bzEFU/s320/FeeAwardSweeney+12-18-09_Page_3.jpg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_Ocicw3mP2BU/Sy2jKppQtBI/AAAAAAAAAMM/pY--apffv2E/s1600-h/FeeAwardSweeney+12-18-09_Page_4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://2.bp.blogspot.com/_Ocicw3mP2BU/Sy2jKppQtBI/AAAAAAAAAMM/pY--apffv2E/s320/FeeAwardSweeney+12-18-09_Page_4.jpg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_Ocicw3mP2BU/Sy2jQ2N0UQI/AAAAAAAAAMU/qaMLhB9DALk/s1600-h/FeeAwardSweeney+12-18-09_Page_5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://3.bp.blogspot.com/_Ocicw3mP2BU/Sy2jQ2N0UQI/AAAAAAAAAMU/qaMLhB9DALk/s320/FeeAwardSweeney+12-18-09_Page_5.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-1162326699574958764?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1162326699574958764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1162326699574958764'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/12/city-lawyer-and-defendants-ordered-to.html' title='City Lawyer and Defendants ordered to pay $31,097 in Legal Fees - Click on Page to see Enlarged Version!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Ocicw3mP2BU/Sy2i1BcSDOI/AAAAAAAAAL0/xiwibcFJT2I/s72-c/FeeAwardSweeney+12-18-09_Page_1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-7527598192731231297</id><published>2009-12-09T15:22:00.002-05:00</published><updated>2009-12-09T16:04:21.150-05:00</updated><title type='text'>New HUD Audit Released: Holyoke told to repay hundreds of thousands in federal funds</title><content type='html'>The US Department of Housing and Urban Development released an audit of the city's use of Community Development Block Grant and HOME funds two weeks ago and I was able to locate the link. &lt;br /&gt;&lt;br /&gt;I have added the link to the report in the Link Sections of my site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-7527598192731231297?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.hud.gov/utilities/intercept.cfm?/offices/oig/reports/files/ig1011002.pdf' title='New HUD Audit Released: Holyoke told to repay hundreds of thousands in federal funds'/><link rel='enclosure' type='application/pdf' href='http://www.hud.gov/utilities/intercept.cfm?/offices/oig/reports/files/ig1011002.pdf' length='0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7527598192731231297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7527598192731231297'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/12/new-hud-audit-released-holyoke-told-to.html' title='New HUD Audit Released: Holyoke told to repay hundreds of thousands in federal funds'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-4734338193058674302</id><published>2009-12-05T22:29:00.001-05:00</published><updated>2009-12-05T22:34:10.961-05:00</updated><title type='text'>December 1st Meeting Notes</title><content type='html'>At the City Council's Meeting of December 1st, the following noteworthy happenings occurred: &lt;br /&gt;&lt;br /&gt;&lt;b&gt;$50,000 to fund the Charter Commission&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Council approved $50,000 appropriation to fund the newly approved Charter Commission. The vote was 12-2 with Councilors Leahy and Brunelle voting no. Councilor Whelihan abstained from voting because he is a member of the Charter Commission.  I voted for the Charter Commission money because the voters approved its creation. Charter Commission proponent Councilor Jay O'Neill stated that the Commission could cost as much as $200,000. $200,000 is alot of money and I will be watching to make sure that this number does not happen. I think this is on the very high end and I have complete confidence in Commission Chairman Carl Eger's commitment to control costs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Council approves new convenience store to be located at 582 South St.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;On a 10-5 vote, the City Council lead by the Ward 3 Councilor Tony Keane approved another convenience store on South St. The Council ignored the wishes of the Elmwood neighbors and the fact that would-be convenience store is poorly located with poor egress and parking on site.  The store will be allowed to operate from 5am until 11pm. Numerous prior applicants have over promised in the past to clean up the location and make it a go but have never followed through. It is not surprising because the location is suited to be a gas station and repair shop and not a high traffic convenience store. &lt;br /&gt;&lt;br /&gt;The owners in the past had the opportunity to expand the property to make it suitable for a convenience store when the house burned down behind the facility and the property came for sale.  However, the other lot was not purchased and instead Peoples Bank purchased it and made a parking lot. &lt;br /&gt;The 5 Councilors who voted against this bad idea were Kevin Jourdain, John Whelihan, Patti Devine, Jim Leahy and Donald Welch.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Request of Police Department&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Councilor Todd McGee filed an order requesting that the Chief of Police return $132,000 of the $150,000 he received for overtime now that his department has been awarded a $132,000 grant. The Council adopted the order and referred to the Mayor and Chief Scott.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Other actions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Permits:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Approved a new telecommunication tower for Pocket Communications to be located on top of 48 Holy Family Rd&lt;br /&gt;Renewed a Special Permit for a home office for Jorge Burgos located at 44 Gilman Street.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Budgetary:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Approved $10,000 for boarding up dangerous buildings&lt;br /&gt;&lt;br /&gt;Approved $5,403 to repair City Hall Telephone System damaged in a lightening strike&lt;br /&gt;&lt;br /&gt;Approved $52,000 for City Property &amp; liability Insurance&lt;br /&gt;&lt;br /&gt;Approved acceptance of $227000 federal grant for Holyoke Fire Department to be used for overtime needs.&lt;br /&gt;&lt;br /&gt;Denied use of $200,000 of city funds for fire department overtime&lt;br /&gt;&lt;br /&gt;Approved $1,150,000 to balance FY 2010 budget from certified free cash &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sent to Committee:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Request from Law Department for another $110,000 to pay for outside legal counsel; including, $41,000 for Sullivan, Hayes and Quinn and $27,000 for Lisa Brodeur-McGan.  The request was placed in one order instead of broken down into separate orders for each firm. Lisa Brodeur-McGan's firm is under additional scrutiny from the City Council in light of the sanction she has been handed by Judge Constance Sweeney. (see prior post on this) &lt;br /&gt;&lt;br /&gt;Request of Councilor Devine to start City Council Meetings at 7pm instead of 7:30pm. (please vote in Holyoke First poll)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-4734338193058674302?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4734338193058674302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4734338193058674302'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/12/december-1st-meeting-notes.html' title='December 1st Meeting Notes'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-4337133402672988910</id><published>2009-11-08T00:31:00.000-05:00</published><updated>2009-11-08T00:31:34.712-05:00</updated><title type='text'>Jourdain Wins Re-Election &amp; Thanks Voters!  Offers support to Mayor-Elect Pluta!</title><content type='html'>HOLYOKE- City Councilor At Large Kevin Jourdain captured 4383 votes in final election balloting for the office of City Councilor At Large.  He finished 2nd overall of the 13 candidates who vied for the 8 At-Large seats. Jourdain was proud to have come in first place in numerous wards throughout the city. "The outpouring of support from across the city feels good because it really shows that the voters appreciate the 110% effort I have been working hard to give them on the City Council!" Jourdain continued that he was extremely thankful for the honor to serve and committed to work hard then ever to make sure that City Hall and the policies that come from it are responsive to the needs of all of the people of the city.&lt;br /&gt;&lt;br /&gt;Councilor Jourdain also congratulated Mayor-elect Elaine Pluta and Treasurer-elect Jon Lumbra on their hard fought victories. He also singled out with special congratulations to Mr. Daniel Boyle and his excellent campaign team for their hard fought and clean race for Mayor.  "Elaine and Dan really did Holyoke proud with the clean and issue based campaigns they both ran for Mayor." &lt;br /&gt;&lt;br /&gt;Now that Holyoke has chosen its new leader, Councilor Jourdain promised on Day One to work side by side Mayor-Elect Pluta to provide her the support she needs to be successful. "I am very excited about Elaine's opportunity to lead Holyoke. She is a wonderful lady and a true public servant. Her Mayorship promises to be something very special and I can't wait to get going on January 4th!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-4337133402672988910?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4337133402672988910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4337133402672988910'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/11/jourdain-wins-re-election-thanks-voters.html' title='Jourdain Wins Re-Election &amp; Thanks Voters!  Offers support to Mayor-Elect Pluta!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-2209243532005346256</id><published>2009-11-08T00:15:00.000-05:00</published><updated>2009-11-08T00:15:33.785-05:00</updated><title type='text'>Holyoke Election Results</title><content type='html'>Vote '09 - Holyoke Election Results&lt;br /&gt; &lt;br /&gt;Precincts reporting: 14 of 14&lt;br /&gt;&lt;br /&gt;MAYOR &lt;br /&gt;&lt;br /&gt;Elaine A. Pluta: 4,794 W&lt;br /&gt;Daniel C. Boyle: 3,245&lt;br /&gt;&lt;br /&gt;CITY CLERK&lt;br /&gt;&lt;br /&gt;Susan M. Egan (I): 5,065 W&lt;br /&gt;Anthony Soto: 2,836&lt;br /&gt;&lt;br /&gt;CITY TREASURER&lt;br /&gt;&lt;br /&gt;David B. Donoghue (I): 3,545 &lt;br /&gt;Jon D. Lumbra: 4,118 W&lt;br /&gt;&lt;br /&gt;CITY COUNCIL AT-LARGE (EIGHT SEATS)&lt;br /&gt;&lt;br /&gt;William J. Bevan: 2,477&lt;br /&gt;Kevin A. Jourdain (I): 4,371 W&lt;br /&gt;Wesley Kulig: 1,752&lt;br /&gt;Patricia C. Devine (I): 4,084 W&lt;br /&gt;Peter R. Tallman (I): 4,335 W&lt;br /&gt;Rory P. Casey: 2,352&lt;br /&gt;John P. Lecca: 2,407&lt;br /&gt;Rebecca Lisi (I): 3,825 W&lt;br /&gt;Jason P. Ferreira: 2,507&lt;br /&gt;Aaron Vega: 2,833 W&lt;br /&gt;Joseph M. McGiverin (I): 4,444 W&lt;br /&gt;James M. Leahy (I): 3,677 W&lt;br /&gt;Brenna E. Murphy: 4,165 W&lt;br /&gt;&lt;br /&gt;CITY COUNCIL WARD 1&lt;br /&gt;&lt;br /&gt;Donald R. Welch (I): 267 W&lt;br /&gt;Sylvia Robello: 162&lt;br /&gt;&lt;br /&gt;CITY COUNCIL WARD 2&lt;br /&gt;&lt;br /&gt;Diosdado Lopez (I): W&lt;br /&gt;&lt;br /&gt;CITY COUNCIL WARD 3&lt;br /&gt;&lt;br /&gt;Anthony Martin Keane (I): W&lt;br /&gt;&lt;br /&gt;CITY COUNCIL WARD 4&lt;br /&gt;&lt;br /&gt;Timothy W. Purington (I): W&lt;br /&gt;&lt;br /&gt;CITY COUNCIL WARD 5&lt;br /&gt;&lt;br /&gt;John P. Burnelle (I): 853&lt;br /&gt;linda L. Vacon: 898 W&lt;br /&gt;&lt;br /&gt;CITY COUNCIL WARD 6 &lt;br /&gt;&lt;br /&gt;Todd McGee (I): W&lt;br /&gt;&lt;br /&gt;CITY COUNCIL WARD 7&lt;br /&gt;&lt;br /&gt;John J. O'Neill (I): W&lt;br /&gt;&lt;br /&gt;SCHOOL COMMITTEE AT-LARGE&lt;br /&gt;&lt;br /&gt;Michael Moriarty: W&lt;br /&gt;&lt;br /&gt;SCHOOL COMMITTEE WARD 1&lt;br /&gt;&lt;br /&gt;Gladys Lebron-Martinez (I): W&lt;br /&gt;&lt;br /&gt;SCHOOL COMMITTEE WARD 2&lt;br /&gt;&lt;br /&gt;Yvonne Garcia (I): W&lt;br /&gt;&lt;br /&gt;SCHOOL COMMITTEE WARD 3&lt;br /&gt;&lt;br /&gt;Dennis W. Birks Jr.: W&lt;br /&gt;&lt;br /&gt;SCHOOL COMMITTEE WARD 4&lt;br /&gt;&lt;br /&gt;Cesar A. Lopez: W&lt;br /&gt;&lt;br /&gt;SCHOOL COMMITTEE WARD 5&lt;br /&gt;&lt;br /&gt;James A. Rossmeisl: 576&lt;br /&gt;Devin Michael Sheehan: 1,040 W&lt;br /&gt;&lt;br /&gt;SCHOOL COMMITTEE WARD 6&lt;br /&gt;&lt;br /&gt;William R. Collamore (I):&lt;br /&gt;&lt;br /&gt;SCHOOL COMMITTEE WARD 7&lt;br /&gt;&lt;br /&gt;Margaret M. Boulais (I):&lt;br /&gt;&lt;br /&gt;CHARTER COMMISSION&lt;br /&gt;&lt;br /&gt;Harld F. Brunault: 2,192 W&lt;br /&gt;Daniel B. Bresnahan: 3,103 W&lt;br /&gt;Wilfredo Melendez: 1,627&lt;br /&gt;Elizabeth A. Budd: 1,416&lt;br /&gt;Matthew J. Sokop: 1,226&lt;br /&gt;Helene A. Florio: 1,649&lt;br /&gt;Christopher Kulig: 1,769 W&lt;br /&gt;Carl Eger Jr.: 2,479 W&lt;br /&gt;John M. Gurvitch: 491&lt;br /&gt;Gordon Paul Alexander: 914&lt;br /&gt;Richard P. Purcell: 1,027&lt;br /&gt;John Patrick Counter Sr.: 1,482&lt;br /&gt;Sheryl Young Quinn: 1,959 W&lt;br /&gt;John G. Whelihan: 2,793 W&lt;br /&gt;Gary J. Gresh: 1,109&lt;br /&gt;Andrew L. Melendez: 1,649 W&lt;br /&gt;James P. Lavelle Sr.: 2,802 W&lt;br /&gt;Helen F. Norris: 2,878 W&lt;br /&gt;Robert R. Authier Sr.: 1,277&lt;br /&gt;Richard A. Berrena: 1,162&lt;br /&gt;James A. Sutter: 1,528&lt;br /&gt;David M. Silverman: 1,266&lt;br /&gt;&lt;br /&gt;QUESTION&lt;br /&gt;&lt;br /&gt;"Shall a commission be elected to amend the Charter for the City of Holyoke?"&lt;br /&gt;&lt;br /&gt;Yes: 4,131 W&lt;br /&gt;No: 1,552&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-2209243532005346256?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2209243532005346256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/2209243532005346256'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/11/holyoke-election-results.html' title='Holyoke Election Results'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-7127931399963655419</id><published>2009-10-30T16:05:00.000-04:00</published><updated>2009-10-30T16:05:06.453-04:00</updated><title type='text'>Council approves Jourdain's senior tax  exemption proposal</title><content type='html'>Holyoke City Council approves changes to allow more senior citizens to qualify for property tax break&lt;br /&gt;By Michael Plaisance &lt;br /&gt;October 20, 2009, 9:39PM&lt;br /&gt;HOLYOKE – The City Council on Tuesday unanimously approved changes that will let more senior citizens qualify for a property tax exemption, such as lowering the eligibility age to 67 from 70. &lt;br /&gt;&lt;br /&gt;The 15-0 vote at City Hall included an increase of the per-person exemption to $750 from the current $550, with the changes to take effect on July 1. Other changes included in the council vote affected income levels and asset totals to help more senior citizens qualify for the tax break. &lt;br /&gt;&lt;br /&gt;The goal is the changes will alert more senior citizens that the exemption is available because while the state allows the city 259 such exemptions, currently only 79 senior citizens are receiving it, Councilor at Large Kevin A. Jourdain said.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-7127931399963655419?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7127931399963655419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/7127931399963655419'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/10/council-approves-jourdains-senior-tax.html' title='Council approves Jourdain&apos;s senior tax  exemption proposal'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-3181439674158301545</id><published>2009-10-27T05:08:00.000-04:00</published><updated>2009-10-27T05:08:20.856-04:00</updated><title type='text'>Councilor Jourdain's Candidate Profile from The Republican Newspaper</title><content type='html'>&lt;b&gt;Holyoke City Council candidate:&lt;/b&gt; &lt;b&gt;Kevin A. Jourdain&lt;/b&gt;&lt;br /&gt;By The Republican Newsroom &lt;br /&gt;October 26, 2009, 5:13PM&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Elective office sought:&lt;/b&gt; Holyoke City Councilor-at-Large &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Age:&lt;/b&gt; 37 &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Web site:&lt;/b&gt; holyokefirst.blogspot.com &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Occupation and employer:&lt;/b&gt; Senior financial analyst, Sisters of Providence Health System &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Education:&lt;/b&gt; Bachelor’s degree, political science and economics, UMass-Amherst, 1993; master’s degree, business administration Anna Maria College, 1999; juris doctor candidate, Massachusetts School of Law, 2010&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Elective offices held:&lt;/b&gt; City Councilor-at Large, 1993-Present &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Memberships:&lt;/b&gt; Knights of Columbus Council 90 and 4th Degree; Holy Cross Parish; Friends of the Holyoke Council on Aging and Senior Center &lt;br /&gt;&lt;br /&gt;&lt;b&gt;List any relatives now employed by state, federal or local government: &lt;/b&gt;None &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why are you running for office?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Because Holyoke voters need a fiscal watchdog in their city government who will make sure that our government is transparent and accountable to the voters while also making sure our budget is balanced with correct priorities without raising taxes. As the senior most member of the Finance Committee, I hold an MBA and work as a senior financial analyst in private sector, I understand how municipal finance works. As a lifelong Holyoker, husband and father with a family, I owe my beloved city, my time and energy to make sure it reaches its greatest potential for the benefit of our next generation. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;What are your qualifications for the post?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;City Councilor At Large 16 years, senior member of the Finance Committee, Chairman of Cable TV Committee,Vice Chairman of Public Service Committee, former trustee of Holyoke Community College, former supervisor on Board of Supervisors of T.J. O’Connor Animal Control Center &lt;br /&gt;&lt;br /&gt;&lt;b&gt;What are the key issues facing your community? &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Economic development; private sector job creation; keeping a balanced city budget; preventing tax and sewer rate increases, and ensuring top quality city services such as police and fire protection. I also strongly support building a new senior center in Holyoke and I am leading the effort on the City Council to make it a reality. I have also been a leader for millions of dollars worth of new infrastructure improvements in our city; including, scores of new roads and sidewalks and I will continue to lead this effort. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Explain why you will or will not vote for the question on the ballot asking whether a charter commission should be established to study if changes should be made in city’s form of government.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I have no objection with having a charter commission provided it is not composed of individuals with a preset agenda. Certain valid things could stand fixing although there are other ways to do it without spending a lot of time and money on a charter commission. In the last 100 years, the Charter has been amended by the mayor and City Council dozens of times to accommodate the changing needs of the city. There has never been one change from a charter commission even when the city did one in 1973. A Charter Commission could be very good and could address a number of issues potentially. However, my chief concern is I oppose the current mayor’s foolish idea to create a charter commission to eliminate the office of mayor on his way out the door and return Holyoke to effectively a town form of government with an unelected city manager. This is absolutely ridiculous and makes one wonder why it took him 10 years to come to the conclusion his job was not needed. I strongly support a leadership of the city that is elected and directly accountable to the people of Holyoke and not to bring in some hired gun to tell us all what to do. Every mayor prior to the current one believed in our strong mayoral form of government. Voters should beware and ask lots of tough questions. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Gov. Deval L. Patrick’s top fiscal adviser is warning of a “perfect storm” of budget problems, raising the possibility of another round of emergency cuts to cities and towns. Should schools or police be immune from potential cuts or should all departments share the burden?&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;Holyoke must not lay off any teachers, police or fire personnel period. Our kids’ education and the community’s public safety are fundamental obligations that must never be compromised. I am proud to say that under my leadership on City Council, I have supported the creation of a $10 million stabilization fund plus a healthy free cash reserve of $5.8 million to weather these painful cuts without raising your taxes. Holyoke will be OK because we have been prepared. Holyoke’s budget has some areas of bloat that could be trimmed in order to give back some funds in order to avoid layoffs to core personnel. As your fiscal watchdog, I voted against this last budget because it was not lean enough. I have the fin’ancial skills and experience necessary to make sure our budget remains balanced no matter what the state throws at us. I will also be a voice to tell Boston: no more unfunded mandates. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;“Revitalizing downtown” and “bringing in new business to boost the economy” are cliches heard around election time. Why should voters believe you are the one that can make that happen, and please be specific. Why should voters believe you are the one that can make that happen and please be specific. &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I agree talk is cheap. Voters must look at all the candidates’ records. I have a strong track record of being supportive of economic development in the city. I have supported the development of the city’s infrastructure and dam acquisition so that we could take advantage of large new projects coming to Holyoke such as the new $100 million data center to the downtown. I have been a good ambassador for the city and it was one of the reasons the Business West newspaper last year chose me one of the Top 40 Young Professionals under 40 in Western Massachusetts. Under my watch, I have supported millions in grants and projects that help business. I have supported hundreds of special permits, zone changes, land transfers, land acquisitions, redevelopment plans, tax incremental financing agreements during my years of service on the council. I will put my record up against anyone on the issue of support for business. Holyoke needs to remain business friendly and we can also do it in a way the respects and protects neighborhoods. As your councilor, I have always struck the right balance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-3181439674158301545?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.masslive.com/politics/index.ssf/2009/10/holyoke_city_council_candidate_5.html' title='Councilor Jourdain&apos;s Candidate Profile from The Republican Newspaper'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3181439674158301545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3181439674158301545'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/10/councilor-jourdains-candidate-profile.html' title='Councilor Jourdain&apos;s Candidate Profile from The Republican Newspaper'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-1465220597892261124</id><published>2009-10-18T06:40:00.001-04:00</published><updated>2009-10-18T06:41:47.372-04:00</updated><title type='text'>Jourdain files Ordinance to prevent Holyoke Elected Officials from owing back taxes</title><content type='html'>While it may seem obvious that all elected officials should pay their taxes and utility bills, as we have come to learn this is not always the case.&amp;nbsp; Unfortunately, when one does not pay, it calls into question before voters whether there are others of us who have not paid.&amp;nbsp; I can tell you unequivocally I always pay my property taxes and utility bills.&lt;br /&gt;&lt;br /&gt;I have also filed an Ordinance that will prevent any candidate for municipal office from running for city office if they owe personal property taxes or utlity bills.&amp;nbsp; This ordinance will be taken under consideration at our October 20, 2009 meeting. It will likely be referred to the Ordinance Committee.&lt;br /&gt;&lt;br /&gt;Under current law, no person is allowed to hold a license in the city unless they receive clearance from the Tax Collector. Elected officials should also be held to this standard that we created for everyone else.&lt;br /&gt;&lt;br /&gt;Under my proposal, a candidate would have to get a letter from Tax Collector stating that they are fully paid prior to being allowed to take out nomination papers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-1465220597892261124?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1465220597892261124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/1465220597892261124'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/10/jourdain-files-ordinance-to-prevent.html' title='Jourdain files Ordinance to prevent Holyoke Elected Officials from owing back taxes'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-3561075866802144393</id><published>2009-10-18T06:16:00.003-04:00</published><updated>2009-10-18T06:21:49.617-04:00</updated><title type='text'>Jourdain opposes Teacher Layoffs while Mayor raises Taxes!</title><content type='html'>Jeanette Deforge did a nice job on a story today about the schools that I would like to share with you.&lt;br /&gt;&lt;br /&gt;The good news for laid off teachers and for the parents is Sullivan is gone on January 4th. At that time, hopefully the City Council and new Mayor can develop a reasonable compromise for some additional funds for our schools. I have also explained to some of the school committee members that one of the conditions for extra funds requires that they fufill their prior commitment to move their headquarters out of Suffolk Street and into Lawrence School.  This will save $400K. That alone could pay for 8 teachers.&lt;br /&gt;&lt;br /&gt;In a related development, Mayor Sullivan setup the hiring process for the new Superintendent so that we have the new one being trained by Mr. Carballo and the city will incur an additional 6 months salary.  Why would we want to hire a new Superintendent who is so lacking in skills as they actually need to be trained by their predecessor?  This is the first I have ever heard of this in any job.  This would be like Sullivan staying for 6 months to train the new Mayor.&lt;br /&gt;&lt;br /&gt;Mayor Sullivan has raised our tax levy $20 million a year since he took office resulting in $110 million in additional taxes over his tenure yet cannot manage his budget so as to avoid layoffs. Our children suffer by increased class sizes and the situation is unaceptable.  Unfortunately, he will not listen.  As your fiscal watchdog, I will continue to demand better of our city government and in just a few short months will work closely with the new Mayor to hopefully turn this trend around.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Holyoke board wants more teachers&lt;/b&gt;&lt;br /&gt;Sunday, October 18, 2009 &lt;br /&gt;By JEANETTE DeFORGE&lt;br /&gt;jdeforge@repub.com&lt;br /&gt;HOLYOKE - The School Committee has been forced to return $900,000 to the city, but School Committee members are hoping to receive some extra money to hire more teachers. &lt;br /&gt;&lt;br /&gt;Current programs or teachers will not have to be cut more because the money that was returned was never allocated to be spent in this year's $76.6 million budget, said Patricia A. Cavanaugh, executive director of finance and operations for the school department. &lt;br /&gt;&lt;br /&gt;The funding formula set by the Education Reform Law of 1993 requires each community to spend a certain amount of money on schools, which is a percentage of the amount of state assistance. Since Holyoke is one of the poorest communities in the state, 90 percent of the school budget is funded with state assistance. &lt;br /&gt;&lt;br /&gt;This year when the amount of state assistance proposed by the House was later cut by the Senate, the amount of money the city had to contribute was also reduced. &lt;br /&gt;&lt;br /&gt;In a recent School Committee meeting, members said they are still encouraged by requests from the City Council to submit information about class sizes and the number of teachers who were laid off this year. &lt;br /&gt;&lt;br /&gt;The request was proposed by &lt;b&gt;City Council member Kevin A. Jourdain&lt;/b&gt;, who said he was concerned about large class sizes he is seeing in his children's classrooms at Lt. Clayre P. Sullivan School. He said he might support adding money into the school budget to decrease class size. &lt;br /&gt;&lt;br /&gt;"Class sizes are crazy. Now we have a way to get teachers and paras (paraprofessional teaching assistants) back to the schools," said Dennis W. Birks Jr. &lt;br /&gt;&lt;br /&gt;But Mayor Michael J. Sullivan, who also serves as School Committee chairman, said the City Council does not have the authority to allocate money for the schools or any other place. &lt;br /&gt;&lt;br /&gt;The city charter says only the mayor can propose an allocation. The City Council must accept the proposal for it to happen. It can also reduce the allocation or reject it. &lt;br /&gt;&lt;br /&gt;Sullivan said he will not support any requests to spend additional money on the schools. He said he would object to taking money from the city's about $9 million savings account, saying there is no way to sustain the amount so it would just cause more cuts the next year. &lt;br /&gt;&lt;br /&gt;"There is no money," he said. &lt;br /&gt;&lt;br /&gt;Additionally, revenue for the state is much lower than predicted and the governor has warned cities and towns they may see mid-year budget cuts, Sullivan said. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;©2009 The Republican&lt;br /&gt;© 2009 MassLive.com All Rights Reserved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-3561075866802144393?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3561075866802144393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/3561075866802144393'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/10/jourdain-opposes-teacher-layoffs-while.html' title='Jourdain opposes Teacher Layoffs while Mayor raises Taxes!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-4555753469463615542</id><published>2009-10-13T00:24:00.000-04:00</published><updated>2009-10-13T00:24:09.597-04:00</updated><title type='text'>Jourdain Endorsed By Pioneer Valley AFL-CIO!!</title><content type='html'>Holyoke - City Councilor At Large Kevin Jourdain was very proud this week to receive the endorsement of the Pioneer Valley AFL-CIO Central Labor Council.&amp;nbsp; "In these tough economic times, where the real unemployment rate surges on 17%, it is nice to know that one of the strongest voices for Holyoke's working families has recognized my hard work on their behalf and have joined my campaign for re-election."&lt;br /&gt;&lt;br /&gt;Councilor Jourdain was very appreciative of the endorsement and continues to work hard to be&amp;nbsp;the voters'&amp;nbsp;Fiscal Watchdog on the City Council so that all Holyoke families benefit from a financial responsbile city government that meets their needs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4429718890665821796-4555753469463615542?l=holyokefirst.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4555753469463615542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4429718890665821796/posts/default/4555753469463615542'/><link rel='alternate' type='text/html' href='http://holyokefirst.blogspot.com/2009/10/jourdain-endorsed-by-pioneer-valley-afl.html' title='Jourdain Endorsed By Pioneer Valley AFL-CIO!!'/><author><name>Kevin A. Jourdain</name><uri>http://www.blogger.com/profile/11824577837219410441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_Ocicw3mP2BU/R4wRc1ipHrI/AAAAAAAAAFg/_azU3O4w54k/S220/Hard+at+work+12-27-06.BMP'/></author></entry><entry><id>tag:blogger.com,1999:blog-4429718890665821796.post-2538122345791381823</id><published>2009-09-25T23:15:00.001-04:00</published><updated>2009-09-25T23:18:01.474-04:00</updated><title type='text'>Jourdain shows leadership on schools: supports lower class sizes!</title><content type='html'>Bigger classes trigger concern&lt;br /&gt;Friday, September 25, 2009 &lt;br /&gt;By JEANETTE DeFORGE&lt;br /&gt;jdeforge@repub.com&lt;br /&gt;HOLYOKE - The City Council is requesting information about class sizes and the number of teachers who were laid off, with the idea of restoring some teacher positions if funding is available. &lt;br /&gt;&lt;br /&gt;In August, the City Council voted on an order to request information on teacher layoffs and class sizes. The School Committee received the order and discussed it in their meeting this week. &lt;br /&gt;&lt;br /&gt;"What does this City Council order mean?" asked School Committee member Dennis W. Birks Jr. &lt;br /&gt;&lt;br /&gt;He and other members said they hoped it may mean the City Council is willing to assist in replacing some of the positions cut when the school budget of about $76 million was adopted in June. A total of 106 jobs were eliminated through layoffs, resignations and retirements. They included teachers, administrators, custodians and teacher assistants. &lt;br /&gt;&lt;br /&gt;By state law, the city is required to spend a minimum amount of money on the schools and it typically does not spend more, but it can with mayoral and City Council approval. The state funds about 90 percent of the school budget. &lt;br /&gt;&lt;br /&gt;"The is a step in the right direction," Birks said. "We will need the help." &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;City Councilor Kevin A. Jourdain said he filed the order more as a parent of children who are in kindergarten, first-grade and pre-school in the public schools. He said he sees class sizes increasing in Lt. Clayre P. Sullivan School, where his two older children are students. &lt;br /&gt;&lt;br /&gt;The city's free cash fund, which is money left unspent at the end of the fiscal year, is available and Jourdain said the City Council may be able to use some of that to rehire some teachers reduce class sizes. &lt;br /&gt;&lt;br /&gt;"My order is focused on teachers," he said. Adding he knows other employees, such as custodians, are also important but he wanted to focus specifically on the classroom.&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;But Jourdain said his order is two-fold. He also wants to push school officials to move quickly from offices rented at 57 Suffolk St. to the half-empty H.B. Lawrence School. While it is estimated to cost $870,000 to renovate the school to create offices, the move would save $400,000 a year in rent and other expenses and would be recouped in two years. &lt;br /&gt;&lt;br /&gt;He is also pushing the committee to decide if it will use the vacant John J. Lynch School or if it can be turned over to th
