<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title></title>
	<atom:link href="http://amberskyze.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://amberskyze.wordpress.com</link>
	<description></description>
	<lastBuildDate>Tue, 06 Dec 2011 09:52:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='amberskyze.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title></title>
		<link>http://amberskyze.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://amberskyze.wordpress.com/osd.xml" title="" />
	<atom:link rel='hub' href='http://amberskyze.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Extreme Weather</title>
		<link>http://amberskyze.wordpress.com/2011/08/29/extreme-weather/</link>
		<comments>http://amberskyze.wordpress.com/2011/08/29/extreme-weather/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 13:03:32 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[flooding]]></category>
		<category><![CDATA[hurricane irene]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1136</guid>
		<description><![CDATA[Last week we were hit by an earthquake. While I didn’t feel it many people I know did. We live close to trains and planes so I’m not sure I’d know the difference from them or an earthquake. Then Hurricane Irene hit. The winds whipped and the trees came a tumbling down. The people across [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1136&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last week we were hit by an earthquake. While I didn’t feel it many people I know did. We live close to trains and planes so I’m not sure I’d know the difference from them or an earthquake. Then Hurricane Irene hit. The winds whipped and the trees came a tumbling down. The people across the street from us have a tree hanging off the power lines in front of their home. If it breaks the wires their cars will be toast and likely part of their house. Today is looking beautiful and I’ll be taking a walk shortly to access the damage in the neighborhood. Lucky for us we only have tree limbs to clean up. we also lucked out because the majority of RI is without power, but we have it. Some of my family in NY didn’t fair as well. My aunt’s house is flooded and they had to be evacuated by boat. My mom was close to a propane explosion, but she’s okay. Still waiting to hear from others. Thoughts and prayers going out to all those affected by Hurricane Irene.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1136&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/08/29/extreme-weather/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>
	</item>
		<item>
		<title>New Release &#8211; Chasing Forever</title>
		<link>http://amberskyze.wordpress.com/2011/06/10/new-release-chasing-forever/</link>
		<comments>http://amberskyze.wordpress.com/2011/06/10/new-release-chasing-forever/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 09:22:37 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[chasing forever]]></category>
		<category><![CDATA[ellora's cave]]></category>
		<category><![CDATA[excerpts]]></category>
		<category><![CDATA[jasmine jade]]></category>
		<category><![CDATA[new release]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1131</guid>
		<description><![CDATA[&#160; Blurb: Jordyn has longed to make her relationship with best friend Diego more than platonic. Her body drips with need to know what it would feel like to have his lips kissing every inch of her skin. Desire to wrap her legs around his waist and plunge into deep waters with him fills her [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1131&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://amberskyze.files.wordpress.com/2011/06/chasing-forever.jpg"><img class="aligncenter size-full wp-image-1132" title="Chasing Forever" src="http://amberskyze.files.wordpress.com/2011/06/chasing-forever.jpg?w=535" alt=""   /></a></p>
<p>&nbsp;</p>
<p>Blurb:</p>
<p><span style="font-family:Arial;font-size:x-small;">Jordyn has longed to make her relationship with best friend Diego more than platonic. Her body drips with need to know what it would feel like to have his lips kissing every inch of her<br />
skin. Desire to wrap her legs around his waist and plunge into deep waters with him fills her every dream.</span></p>
<p><span style="font-family:Arial;font-size:x-small;">Diego is one with the ocean. His passion is surfing and chasing that ultimate wave. He doesn’t have time for a relationship. Or does he?</span></p>
<p><span style="font-family:Arial;font-size:x-small;">A storm is brewing and when a tragedy occurs, Diego and Jordyn need to decide if they’re both chasing the same dreams.</span></p>
<p>&nbsp;</p>
<table width="95%" border="0" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td width="98%">
<p align="center"><strong>An Excerpt From: CHASING<br />
FOREVER</strong></p>
<p align="center"><strong>Copyright © AMBER<br />
SKYZE, 2011</strong></p>
<p align="center"><strong>All Rights Reserved, Ellora&#8217;s Cave Publishing, Inc.</strong></p>
<p>Chapter One</p>
<p>&nbsp;</p>
<p>Jordyn sat on the beach towel watching<br />
Diego riding out the waves. Her pulse raced. He knew he shouldn’t be out there.<br />
Hurricane Ivan was heading inland and the weatherman had warned of the dangerous<br />
undertow. She’d attempted to chase a few waves, but once she’d swum a few yards<br />
she knew it was a mistake. She’d quickly swum back to shore and waited while her<br />
best friend tried to prove he was smarter than the ocean.</p>
<p>The waters<br />
had turned mean and ugly over the last twenty minutes and the sky was an ominous<br />
gray. The hurricane was moving closer. A breeze came in off the water and a<br />
chill passed through her body. She’d unzipped her wet suit down to her waist,<br />
exposing her bikini top when she exited the water. She should cover up again in<br />
case the rains poured down.</p>
<p>She<br />
scanned the waters. Someone on a Jet Ski buzzed around, stopping every so often<br />
to take some pictures. She hoped he would keep away from the jagged rocks. The<br />
razor-sharp rocks were Jordyn’s bigger fear with Diego<br />
being out on the water. One wrong move and a wave could drag him under and throw<br />
him against the rocks, ending his life.</p>
<p>Jet skis<br />
were prohibited at any time on this part of the beach, but it didn’t stop them,<br />
especially on a day like today. They’d swarm around the surfers—in this case,<br />
just Diego—hoping to get a great shot of him nailing a thirty-foot<br />
wave.</p>
<p><em>Hopefully that’s all he<br />
catches</em>.</p>
<p>She<br />
scanned the beach looking for any other fools. People with cameras hoping to<br />
click the ideal picture of the perfect storm peppered the<br />
sand.</p>
<p>“Dumbasses,” she muttered. What did<br />
that make her? She was on the beach too. Why had she allowed Diego to convince<br />
her this was a good idea?</p>
<p>“Because<br />
I’m a fool too.” She buried her foot in the sand and watched how the tiny<br />
particles glided between her toes. If she was smart she’d grab her board, jump<br />
in her Jeep and hightail it back to her place. Common sense flew out the window<br />
when it came to Diego, because she was head over heels in love with<br />
him.</p>
<p><em>Too bad he doesn’t feel the<br />
same</em>. He loved her<br />
like a sister he’d said a few too many times, especially on drunken<br />
occasions.</p>
<p>If she’d<br />
had a nickel for all the times he’d said, “If you weren’t like a sister to me,<br />
I’d fuck you.”</p>
<p>How her<br />
pussy moistened with the thought. A few times she’d been tempted to sock him one<br />
and other times she’d wanted to tackle him and show him the woman inside waiting<br />
for him to fill that void deep within.</p>
<p>Instead<br />
she’d sat back and<br />
waited.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-family:Arial;font-size:x-small;">//  0)<br />
			avglsflyover.hide(null, 1);</p>
<p>		var phishLinks = [];<br />
		for (var i=0; i  0)<br />
		{<br />
			var prev = &#8217;1&#8242;;<br />
			if ( engine.type == &#8216;inline&#8217; )<br />
				prev = &#8217;0&#8242;;<br />
			searchshield.avgCallFunc(doc, &#8216;GetPhishingResults&#8217;, prev);<br />
		}<br />
		else if (links.length &gt; 0 &amp;&amp; engine.type != &#8216;inline&#8217;)<br />
		{<br />
			searchshield.avgCallFunc(doc, &#8216;FinalScanComplete&#8217;);<br />
		}<br />
	},<br />
	stop: function(){<br />
		if (searchshield.avgSearchMonitor.timeoutID)<br />
		{<br />
			window.clearTimeout(searchshield.avgSearchMonitor.timeoutID);<br />
			delete searchshield.avgSearchMonitor.timeoutID;<br />
		}<br />
	}<br />
};<br />
searchshield.avgProcessSearch = function (doc)<br />
{<br />
	// doc may be about:Tabs or about:Blank<br />
	if (!doc)<br />
		return;</p>
<p>	// init search object (not declared or is null)<br />
	if (typeof xplSearch === &#8216;undefined&#8217; || null === xplSearch)<br />
		xplSearch = new searchshield.Search();</p>
<p>	xplSearch.doc = doc;<br />
	xplSearch.href	= xplSearch.doc.location.href;<br />
	xplSearch.uri	= searchshield.parseLink(xplSearch.href);</p>
<p>	if (!searchshield.clockUrl)<br />
		searchshield.clockUrl = searchshield.avgCallFunc(doc, &#8216;GetIconUrl&#8217;, &#8217;0&#8242;);</p>
<p>	xplSearch.clockUrl = searchshield.clockUrl</p>
<p>	if (!xplSearch.engines)<br />
	{<br />
		var aEng = xplSearch.getSearchNames();<br />
		var aEngLen = aEng.length;<br />
		for (var i=0; i &lt; aEngLen; i++)<br />
		{<br />
			xplSearch.addEngine(new searchshield[aEng[i]+&#039;SearchEngine&#039;](xplSearch));<br />
		}<br />
	}</p>
<p>	if (!xplSearch.engine)<br />
	{<br />
		var engLen = xplSearch.engines.length;<br />
		for (var i = 0; i &lt; engLen; i++)<br />
		{<br />
			if (xplSearch.engines[i].validSearch())<br />
			{<br />
				xplSearch.engine = xplSearch.engines[i];<br />
				break;<br />
			}<br />
		}<br />
	}</p>
<p>	if (!xplSearch.engine)<br />
		return;</p>
<p>	// set verdict display config<br />
	xplSearch.engine.setRatingsConfig(doc);</p>
<p>	// init the alert popup<br />
	searchshield.initPopupAlert(doc);</p>
<p>	// start search monitor<br />
	searchshield.avgSearchMonitor.start(doc, xplSearch.engine);</p>
<p>	// attach click handlers for popup alerts<br />
	doc.body.detachEvent(&quot;onclick&quot;, searchshield.blockClick);<br />
	doc.body.attachEvent(&quot;onclick&quot;, searchshield.blockClick);</p>
<p>	doc.body.detachEvent(&quot;ondblclick&quot;, searchshield.blockClick);<br />
	doc.body.attachEvent(&quot;ondblclick&quot;, searchshield.blockClick);<br />
};<br />
searchshield.avgGetSearchLinks = function (doc, engine)<br />
{<br />
	if (!engine)<br />
	{<br />
		// restart page monitor<br />
		searchshield.avgPageMonitor.start(doc);<br />
		return;<br />
	}</p>
<p>	var alltags = doc.getElementsByTagName(&#039;*&#039;);</p>
<p>	for (var i = 0; i &lt; alltags.length; i++)<br />
	{<br />
		if (alltags[i].getAttribute(&#039;avglschecked&#039;))<br />
			continue;</p>
<p>		// ignore linked resources<br />
		if ((alltags[i].tagName) &amp;&amp; (alltags[i].tagName == &#039;LINK&#039;))<br />
			continue;</p>
<p>		// ignore in-page bookmarks and javascript<br />
		if ((!alltags[i].href)	||<br />
			(alltags[i].href.charAt(0) == &#039;#&#039;) ||	// in-page bookmark<br />
			(alltags[i].href.indexOf(&quot;javascript&quot;) == 0))<br />
			continue;</p>
<p>		// ignore verdicts<br />
		if (alltags[i].id &amp;&amp; (alltags[i].id.indexOf(&quot;XPLSS_&quot;) != -1))<br />
			continue;</p>
<p>		// ignore flyover anchors<br />
		if (alltags[i].href &amp;&amp; (alltags[i].href.indexOf(&quot;linkscanner:&quot;) == 0 || alltags[i].href.indexOf(&quot;avgthreatlabs.com&quot;) != -1))<br />
			continue;</p>
<p>		var href = engine.includeLink(alltags[i]);<br />
		if (!href)<br />
			continue;</p>
<p>		var newNode = engine.search.addLink(alltags[i], href);<br />
		engine.addImage(newNode, engine.search.clockUrl, false);<br />
	}</p>
<p>	// recursivesly process all frames<br />
	var docFrames = doc.frames;<br />
	if (docFrames &amp;&amp; engine.processFrames)<br />
	{<br />
		for (var j = 0; j &lt; docFrames.length; j++)<br />
		{<br />
			var attr;<br />
			var frameDoc;<br />
			try {<br />
				attr = docFrames[j].frameElement.className;<br />
				frameDoc = docFrames[j].document;<br />
			}<br />
			catch(err){}</p>
<p>			//TODO: make frame processing an engine function or at least make exclusions an engine property<br />
			// &#039;editable&#039; frame it&#039;s probably a gmail reply<br />
			if (attr &amp;&amp; (attr.indexOf(&quot;editable&quot;) != -1))<br />
				continue;</p>
<p>			if (frameDoc)<br />
				searchshield.avgGetSearchLinks(frameDoc, engine);<br />
		}<br />
	}</p>
<p>	return engine.search.links;<br />
};<br />
searchshield.avglsCheckandUpdate = function (linkNode)<br />
{<br />
	// element is the search result anchor<br />
	var element = linkNode.element;<br />
	var href = linkNode.href;</p>
<p>	if (!xplSearch)<br />
		return;</p>
<p>	var result = searchshield.avgCallFunc(xplSearch.doc, &#039;CheckSite&#039;, href, element.href);<br />
	if (result == null)<br />
		return;</p>
<p>	var resultParse = result.split(&#039;::&#039;);</p>
<p>	var phishing  = resultParse[0];  // if phishing then rest of array does not exist.</p>
<p>	if (phishing == 1)<br />
		return true;</p>
<p>	if (resultParse.length  -1) ? avglschecked.substring(0, sPos) : null;<br />
		var split = (sPos &gt; -1) ? avglschecked.substring(sPos+1) : null;<br />
		if (hash &amp;&amp; split &amp;&amp; split != searchshield.VERISIGN_SPLIT_NOTEST)<br />
		{<br />
			// check updated verdict anchor for verisign domain<br />
			var d = event.srcElement.ownerDocument;<br />
			if (d.getElementById(&#8220;LXPLSS_&#8221; + hash + &#8220;U&#8221; + searchshield.SCORE_SS_VERISIGN))<br />
			{<br />
				searchshield.avgCallFunc(d, &#8220;RecordVSClick&#8221;, hash, d.location.href);<br />
			}<br />
		}<br />
	}</p>
<p>	var link = anchor.href;<br />
	var verdict = searchshield.getAvgImage(anchor);<br />
	var score = -1;<br />
	var img_id = &#8221;;<br />
	if (verdict != null)<br />
	{<br />
		score = verdict.score;<br />
		img_id = verdict.rawId;<br />
	}</p>
<p>	// show popup alert (upper left)<br />
	if ((score &gt;= searchshield.SCORE_SS_CAUTION) &amp;&amp; (score &lt;= searchshield.SCORE_SS_WARNING))<br />
	{<br />
		// prevent this click from going any further<br />
		var search_hash = searchshield.avgCallFunc(document, &#039;GetHash&#039;, document.location.href);<br />
		searchshield.ShowPopupAlert(document, link, img_id, search_hash);</p>
<p>		// if possible, stop the event from going any further<br />
		searchshield.cancelEvent(event);<br />
		return false;<br />
	}</p>
<p>	return true;<br />
};</p>
<p>// called by native to update phishing links<br />
searchshield.updatePhishingLinks = function (results)<br />
{</p>
<p>	if (!results)<br />
		return;</p>
<p>	if (!xplSearch)<br />
		return;</p>
<p>	var engine = xplSearch.engine;<br />
	var resultParse = results.split(&quot;::&quot;);<br />
	var resultsLength = resultParse[0];</p>
<p>	for (var i=0; i &lt; resultsLength; i++)<br />
	{<br />
		var idx = i*7;<br />
		var hash	  = resultParse[idx+1];<br />
		var score	  = resultParse[idx+2];<br />
		var new_image = resultParse[idx+3];<br />
		var alt_image = resultParse[idx+4];<br />
		var flyover	  = resultParse[idx+5];<br />
		var click_thru= resultParse[idx+6];<br />
		var altClick_thru = resultParse[idx+7];</p>
<p>		engine.updateImage(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru);<br />
	}<br />
};<br />
searchshield.getAvgImage = function (element)<br />
{<br />
	var obj = {};<br />
	obj.img = xplSearch.engine.getImgElement(element);<br />
	obj.score = -1;</p>
<p>	//parse the score from the id<br />
	if (obj.img != null &amp;&amp; obj.img.id)<br />
	{<br />
		var pos = !!obj.img.id ? obj.img.id.indexOf(&#039;U&#039;) + 1 : -1;<br />
		obj.score = (pos &lt; 1) ? -1 : obj.img.id.charAt(pos);<br />
		obj.rawId = obj.img.id.substring(0,pos-1);<br />
	}</p>
<p>	return obj;<br />
};<br />
searchshield.GetScannedLink = function (link)<br />
{<br />
	if (!xplSearch || !(xplSearch.links instanceof Array))<br />
		return link;</p>
<p>	// look for the link we scanned based on original element<br />
	for (var i = 0; i &lt; xplSearch.links.length; i++)<br />
	{<br />
		if (xplSearch.links[i].element.href == link)<br />
			return xplSearch.links[i].href;<br />
	}<br />
	// else return the incoming link<br />
	return link;<br />
};<br />
searchshield.previouslyScanned = function (links, hash)<br />
{<br />
	for (var i = 0; i &lt; links.length; i++)<br />
	{<br />
		if ((links[i] != null) &amp;&amp; (links[i].hash != null) &amp;&amp;<br />
			(links[i].hash == hash) &amp;&amp; (links[i].checked == true))<br />
			return true;<br />
	}<br />
	return false;<br />
};<br />
searchshield.initPopupAlert = function (doc)<br />
{<br />
	// check if it exists first<br />
	if (doc.getElementById(&quot;XPLSS_PopupAlert&quot;))<br />
		return;</p>
<p>	// create a div to use for the popup itself, hide for now<br />
	var popup_div = doc.createElement(&quot;DIV&quot;);<br />
	popup_div.setAttribute(&quot;id&quot;, &quot;XPLSS_PopupAlert&quot;);<br />
	popup_div.style.position = &quot;absolute&quot;;<br />
	popup_div.style.zIndex = &quot;10000&quot;;<br />
	doc.body.appendChild(popup_div);<br />
};<br />
searchshield.initFlyover = function (doc, engine)<br />
{<br />
	// create in top doc only<br />
	if (doc !== window.top.document)<br />
		doc = window.top.document;</p>
<p>	// check if it exists first<br />
	if ((doc == null) || (doc.getElementById(&quot;XPLSS_Flyover&quot;)))<br />
		return;</p>
<p>	// create a div to use for the flyover itself, hide for now<br />
	var flyover_div = doc.createElement(&quot;DIV&quot;);<br />
	flyover_div.setAttribute(&quot;id&quot;, &quot;XPLSS_Flyover&quot;);<br />
	flyover_div.style.position = &quot;absolute&quot;;<br />
	flyover_div.style.zIndex = &quot;10000&quot;;<br />
	doc.body.appendChild(flyover_div);</p>
<p>	// create a layer for the image<br />
	var trans_div = doc.createElement(&quot;DIV&quot;);<br />
	trans_div.setAttribute(&quot;id&quot;, &quot;XPLSS_Trans&quot;);<br />
	trans_div.style.position = &quot;absolute&quot;;<br />
	trans_div.style.zIndex = &quot;9999&quot;;<br />
	doc.body.appendChild(trans_div);<br />
};<br />
searchshield.ShowPopupAlert = function (doc, link, hash, search)<br />
{<br />
	// build the content<br />
	var popup_content = searchshield.avgCallFunc(doc, &#039;BuildPopupAlert&#039;, hash, search);<br />
	if (popup_content == null || popup_content == &quot;&quot;)<br />
		return;</p>
<p>	// get the div<br />
	var div = doc.getElementById(&quot;XPLSS_PopupAlert&quot;);<br />
	div.innerHTML = searchshield.CleanupHTML(popup_content);</p>
<p>	// set position, account for scrolling<br />
	var zoom = searchshield.zoomLevel();<br />
	var pageOffsetX = Math.round(doc.documentElement.scrollLeft/zoom);<br />
	var pageOffsetY = Math.round(doc.documentElement.scrollTop/zoom);</p>
<p>	div.style.left = 10 + pageOffsetX + &quot;px&quot;;<br />
	div.style.top = 10 + pageOffsetY + &quot;px&quot;;</p>
<p>	// TODO: the event handler function doesn&#039;t exist so, is this even necessary?<br />
	//div.attachEvent(&quot;onmouseout&quot;, HidePopupAlert);</p>
<p>	// set the link<br />
	//var data = doc.getElementById(&quot;avgalertpopurl&quot;);<br />
	//if (data)<br />
	//		data.innerHTML = escape(link);</p>
<p>	// set visibility<br />
	div.style.visibility = &quot;visible&quot;;</p>
<p>	//navigate to the link after timed delay<br />
	// TODO: Bug 31707 &#8211; make this open a new tab/window<br />
	setTimeout(function(){doc.location.assign(link)}, 3000);<br />
};<br />
searchshield.avgCallFunc = function (doc, name /*, param1&#8230;, paramN*/)<br />
{<br />
	// get the data element<br />
	var avg_ls_data = (typeof gAvgDataElement !== &#039;undefined&#039;) ? gAvgDataElement : doc.getElementById(&quot;avglsdata&quot;);</p>
<p>	if ((avg_ls_data == null) || (name == null))<br />
		return;</p>
<p>	// save the data element<br />
	gAvgDataElement = avg_ls_data;</p>
<p>	// for some reason you can&#039;t fire and event on an element with no parent node<br />
	if (avg_ls_data.parentNode == null)<br />
		return;</p>
<p>	// set the attributes<br />
	avg_ls_data.setAttribute(&quot;function&quot;, name);</p>
<p>	// set variable length of optional parameter attributes<br />
	var pcnt = 0;<br />
	for (var i=2; i &lt; arguments.length; i++)<br />
		avg_ls_data.setAttribute(&quot;param&quot;+(++pcnt), arguments[i]);</p>
<p>	avg_ls_data.fireEvent(&quot;onrowenter&quot;);</p>
<p>	// get the result<br />
	return avg_ls_data.getAttribute(&quot;result&quot;);<br />
};</p>
<p>// general use functions &#8211; begin<br />
// DOM Functions<br />
searchshield.getAnchorNode = function (node, filterFunc)<br />
{<br />
	// filterFunc should return a boolean<br />
	if (!filterFunc || !filterFunc instanceof Function)<br />
		return null;</p>
<p>	// go up the dom tree starting at node and look for anchor<br />
	// before hitting a header, div or table element<br />
	while ((node != null)			&amp;&amp;<br />
			(node.tagName != null)	&amp;&amp;<br />
			(node.tagName != &quot;A&quot;))<br />
	{<br />
		if (filterFunc(node))<br />
		{<br />
			node = null;<br />
			break;<br />
		}<br />
		node = node.parentNode;<br />
	}</p>
<p>	return node;<br />
};<br />
searchshield.getDocuments = function (frame, frameArray)<br />
{	// recursively get all embedded frames/docs<br />
	frameArray.push(frame.document);<br />
	var frames = frame.frames;<br />
	for (var i = 0; i &lt; frames.length; i++)<br />
	{<br />
		// recurse on each frame<br />
		searchshield.getDocuments(frames[i], frameArray);<br />
	}<br />
	return frameArray;<br />
};<br />
searchshield.NextSiblingNode = function (element)<br />
{<br />
	var TEXTNODE = 3;<br />
	var ParentNode = element.parentNode;</p>
<p>	if (!ParentNode)<br />
		return;</p>
<p>	var NextSibling = ParentNode.nextSibling;<br />
	while (NextSibling)<br />
	{<br />
		if (NextSibling.nodeType != TEXTNODE)<br />
			return NextSibling;</p>
<p>		NextSibling = NextSibling.nextSibling;<br />
	}</p>
<p>	return;<br />
};<br />
searchshield.getParentNodeByAttribute = function (attrName, attrValue, node, maxDepth)<br />
{<br />
	if (!node)<br />
		return null;</p>
<p>	var maxLoop = maxDepth ? maxDepth : 1;<br />
	var pNode = node.parentNode;</p>
<p>	if (!pNode)<br />
		return null;</p>
<p>	for(; 0 &lt; maxLoop; maxLoop&#8211;)<br />
	{<br />
		if ((pNode[attrName]) &amp;&amp;<br />
			(pNode[attrName].toLowerCase() === attrValue.toLowerCase()))<br />
		{<br />
			return pNode;<br />
		}</p>
<p>		pNode = pNode.parentNode;<br />
		if (!pNode)<br />
			return null;<br />
	}</p>
<p>	return null;<br />
};<br />
searchshield.getParentNodeByClassName = function (className, node, maxDepth)<br />
{<br />
	return searchshield.getParentNodeByAttribute(&quot;className&quot;, className, node, maxDepth);<br />
};<br />
searchshield.getParentNodeById = function (id, node, maxDepth)<br />
{<br />
	return searchshield.getParentNodeByAttribute(&quot;id&quot;, id, node, maxDepth);<br />
};<br />
searchshield.getParentNodeByTagName = function (tagName, node, attrName)<br />
{	// find parent node by tag name and optional attribute name</p>
<p>	if (!tagName || !node || !node.parentNode)<br />
		return null;</p>
<p>	tagName = tagName.toUpperCase();<br />
	while (node != null)<br />
	{<br />
		// if attrName is not provided just return TRUE<br />
		var nodeHasAttribute = !!attrName ? !!node[attrName] : true;<br />
		if ((node.tagName == tagName) &amp;&amp; (nodeHasAttribute))<br />
			return node;</p>
<p>		node = node.parentNode;<br />
	}</p>
<p>	// no div<br />
	return null;<br />
};<br />
searchshield.getTopLevelDocument = function (doc)<br />
{	// return the top level document for the given doc, could be itself</p>
<p>	// TODO: determine a method of doing this for IE, if necessary</p>
<p>	// don&#039;t check about:blank<br />
	if (doc &amp;&amp; ((doc.location.href == &quot;about:blank&quot;) || (doc.location.href == &quot;about:Tabs&quot;)))<br />
		return doc;</p>
<p>	// Check if already a top level document<br />
	for (var i = 0; i &lt; gBrowser.browsers.length; i++)<br />
	{<br />
		if (doc == gBrowser.browsers[i].contentDocument)<br />
			return doc;<br />
	}</p>
<p>	// Not a top level, check all frames<br />
	var documents;<br />
	for (var j = 0; j &lt; gBrowser.browsers.length; j++)<br />
	{<br />
		// get all docs for each browser<br />
		documents = searchshield.getDocuments(gBrowser.browsers[j].contentWindow, new Array());<br />
		for (var k = 0; k &lt; documents.length; k++)<br />
		{<br />
			// check if doc is from current browser<br />
			if (doc == documents[k])<br />
			{<br />
				// it is, return the top level doc for this browser<br />
				return gBrowser.browsers[j].contentDocument;<br />
			}<br />
		}<br />
	}</p>
<p>	return doc;<br />
};<br />
searchshield.getTopLevelWindow = function ()<br />
{<br />
	// TODO: determine a method of doing this for IE, if necessary<br />
	return mediator.getMostRecentWindow(&quot;navigator:browser&quot;);<br />
};</p>
<p>//Event functions<br />
searchshield.addListener = function (object, evtType, listener, useCapture)<br />
{<br />
	useCapture = !!useCapture;</p>
<p>	if (object.addEventListener)<br />
	{<br />
		object.addEventListener(evtType, listener, useCapture);<br />
		return true;<br />
	}<br />
	else if (object.attachEvent)<br />
	{<br />
		 object.attachEvent(&quot;on&quot;+evtType, listener);<br />
		 return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.cancelEvent = function (event)<br />
{<br />
	event.cancelBubble = true;<br />
	event.returnValue = false;<br />
};<br />
searchshield.doEvent = function (evtObj, evtTarget, evtName, evtType, bubbles, cancelable)<br />
{<br />
	bubbles		= !!bubbles;<br />
	cancelable	= !!cancelable;</p>
<p>	if (document.createEvent)<br />
	{<br />
		var evt = document.createEvent(&quot;Events&quot;);<br />
		evt.initEvent(evtName, bubbles, cancelable);<br />
		evtTarget.dispatchEvent(evt);<br />
		return true;<br />
	}<br />
	else if (document.createEventObject)<br />
	{<br />
		var evt = document.createEventObject(evtObj);<br />
		evtTarget.fireEvent(&quot;on&quot; + evtType, evt);<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.removeListener = function (object, evtType, listener, useCapture)<br />
{<br />
	useCapture = !!useCapture;</p>
<p>	if (object.removeEventListener)<br />
	{<br />
		object.removeEventListener(evtType, listener, useCapture);<br />
		return true;<br />
	}<br />
	else if (object.detachEvent)<br />
	{<br />
		 object.detachEvent(evtType, listener);<br />
		 return true;<br />
	}</p>
<p>	return false;<br />
};</p>
<p>// HTML functions<br />
searchshield.CleanupHTML = function (data)<br />
{<br />
	if (data == null)<br />
		return data;</p>
<p>	// cleanup html data, replace any new lines<br />
	data = data.replace(/\r/g, &quot;&quot;);<br />
	data = data.replace(/\n/g, &quot;&quot;);<br />
	// escape any single quotes<br />
	data = data.replace(/&#039;/g, &quot;\\&#039;&quot;);</p>
<p>	return data;<br />
};<br />
searchshield.removeHtmlTags = function (str)<br />
{<br />
	var re = new RegExp(&#039;(]+&gt;)&#8217;,'g&#8217;);<br />
	var strStr = new String(str);<br />
	if (!!strStr)<br />
		return strStr.replace(re, &#8221;);<br />
	else<br />
		return str;</p>
<p>};</p>
<p>// Browser functions<br />
searchshield.containedIn = function (container, element)<br />
{<br />
	while (element != null)<br />
	{<br />
		if (container == element)<br />
		{<br />
			return true;<br />
		}<br />
		element = element.parentNode;<br />
	}<br />
	return false;<br />
};<br />
searchshield.elementSize = function (element)<br />
{<br />
	//returns an array [sizeX, sizeY]</p>
<p>	var elemX;<br />
	var elemY;</p>
<p>	elemX = parseInt(element.offsetWidth);<br />
	elemY = parseInt(element.offsetHeight)</p>
<p>	return [elemX, elemY];<br />
};<br />
searchshield.GetFullBoundingRect = function (element)<br />
{<br />
	if (!element) return;</p>
<p>	// get bounding rect for incoming element<br />
	var elementRect = element.getBoundingClientRect();<br />
	var nextImg = null;<br />
	var nextImgRect = null;</p>
<p>	// first check for another non-TextNode element after this one<br />
	var siblingElement = searchshield.NextSiblingNode(element);<br />
	if (	siblingElement &amp;&amp;<br />
		siblingElement.firstChild &amp;&amp;<br />
		siblingElement.id &amp;&amp;<br />
		siblingElement.id.indexOf(&#8220;XPLSS_&#8221;) != -1)<br />
	{<br />
		nextImg = siblingElement.firstChild;<br />
		nextImgRect = nextImg.getBoundingClientRect();<br />
	}<br />
	else<br />
	{<br />
		return elementRect;<br />
	}</p>
<p>	if ((nextImgRect.top &gt;= elementRect.bottom) &amp;&amp;<br />
		(nextImgRect.left &lt;= elementRect.left))<br />
	{	// images appear to be on seperate lines<br />
		return elementRect;<br />
	}</p>
<p>	// else merge the rects together into a new one<br />
	var newRect = new function() { this.top=0; this.left=0; this.right=0; this.bottom=0; this.mid=0;};<br />
	newRect.top = Math.min(elementRect.top, nextImgRect.top);<br />
	newRect.left= Math.min(elementRect.left, nextImgRect.left);<br />
	newRect.right=Math.max(elementRect.right, nextImgRect.right);<br />
	newRect.bottom=Math.max(elementRect.bottom, nextImgRect.bottom);<br />
	newRect.mid = Math.min(elementRect.right, nextImgRect.left);</p>
<p>	return newRect;<br />
};<br />
searchshield.offsetLeft = function (element)<br />
{<br />
	var offset = 0;<br />
	while (element)<br />
	{<br />
		offset += element.offsetLeft;<br />
		element = element.offsetParent;<br />
	}</p>
<p>	return offset;<br />
};<br />
searchshield.offsetTop = function (element)<br />
{<br />
	var offset = 0;<br />
	while (element)<br />
	{<br />
		offset += element.offsetTop;<br />
		element = element.offsetParent;<br />
	}</p>
<p>	return offset;<br />
};<br />
searchshield.scrollSize = function (imageElem)<br />
{<br />
	// returns an array [scrollX, scrollY, hasParentFrame]</p>
<p>	var scrollX;<br />
	var scrollY;<br />
	var hasParentFrame;</p>
<p>	// firefox<br />
	if (window.pageXOffset &amp;&amp; window.pageYOffset)<br />
	{<br />
		scrollX = window.pageXOffset;<br />
		scrollY = window.pageYOffset;<br />
	}<br />
	else if (document.documentElement || document.body)<br />
	{<br />
		scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;<br />
		scrollY = document.documentElement.scrollTop || document.body.scrollTop;</p>
<p>		if (imageElem)<br />
		{<br />
			var frames = document.frames;<br />
			if (frames)<br />
			{<br />
				for (var i=0; i &lt; frames.length; i++)<br />
				{<br />
					var img;<br />
					try {<br />
						img = frames[i].document.getElementById(imageElem.id);<br />
					}<br />
					catch(domErr){}</p>
<p>					if (img != null)<br />
					{<br />
						scrollX = frames[i].document.documentElement.scrollLeft;<br />
						scrollY = frames[i].document.documentElement.scrollTop;<br />
						hasParentFrame = true;<br />
						break;<br />
					}<br />
				}<br />
			}<br />
		}<br />
	}<br />
	else<br />
	{<br />
		scrollX = 0;<br />
		scrollY = 0;<br />
	}</p>
<p>	return [parseInt(scrollX,10), parseInt(scrollY,10), hasParentFrame];<br />
};<br />
searchshield.viewPortSize = function ()<br />
{<br />
	// returns an array [width, height, scrollYWidth], where scrollYWidth is always 0 for IE</p>
<p>	var scrollXWidth	 = 19;<br />
	var scrollYWidth	 = 0; // 0 for Microsoft IE<br />
	var scrollBarX	 = false;<br />
	var windowX;<br />
	var windowY;</p>
<p>	// firefox<br />
	if (window.innerWidth &amp;&amp; window.innerHeight)<br />
	{<br />
		//TODO: validate this block if implemented for firefox</p>
<p>		windowX = window.innerWidth &#8211; scrollXWidth;<br />
		windowY = window.innerHeight;</p>
<p>		try<br />
		{<br />
			scrollYWidth = Math.floor(Math.abs(window.innerHeight &#8211; document.documentElement.clientHeight)) + 1;<br />
			scrollBarX = (document.documentElement.clientWidth &lt; document.documentElement.scrollWidth);<br />
		}<br />
		catch(err){}</p>
<p>		if (scrollBarX &amp;&amp; !scrollYWidth)<br />
			scrollYWidth = 18;	//normally 17 (+1 top border)</p>
<p>	}<br />
	else if (document.documentElement || document.body)<br />
	{<br />
		windowX = (document.documentElement.clientWidth || document.body.clientWidth) &#8211; scrollXWidth;<br />
		windowY = document.documentElement.clientHeight || document.body.clientHeight;<br />
	}<br />
	else<br />
	{<br />
		windowX = 0;<br />
		windowY = 0;<br />
	}</p>
<p>	return [windowX, windowY, scrollYWidth];<br />
};<br />
searchshield.zoomLevel = function ()<br />
{<br />
		var level = 1;<br />
		if (document.body.getBoundingClientRect) {<br />
			// rect is only in physical pixel size before IE8<br />
			var rect = document.body.getBoundingClientRect();<br />
			level = Math.round (((rect.right &#8211; rect.left) / (document.body.offsetWidth)) * 100) / 100;<br />
		}</p>
<p>		return level;<br />
};</p>
<p>// Href functions<br />
searchshield.checkUrl = function (url)<br />
{	// cleanup a url, make sure there is a protocol on the front for scanning<br />
	try {<br />
		// trim<br />
		url = url.replace(/^\s+/, &quot;&quot;).replace(/\s+$/, &quot;&quot;);</p>
<p>		// if no protocol, add http:// to it<br />
		if (url.indexOf(&quot;://&quot;) == -1)<br />
			url = &quot;http://&quot; + url;<br />
	}<br />
	catch(err){}</p>
<p>	return url;<br />
};<br />
searchshield.DoesURLContain = function (url, contain)<br />
{<br />
	if ((url == null) || (url.length &lt; 1))<br />
		return false;</p>
<p>	// breakup the url to check<br />
	var parts = url.split(&#039;/&#039;);<br />
	if (parts.length  -1)<br />
		return true;</p>
<p>	return false;<br />
};<br />
searchshield.FilterUrl = function (url, filter)<br />
{<br />
	if (!url || (url.length &lt; 1))<br />
		return false;</p>
<p>	if (!filter || !(filter instanceof Array))<br />
		return false;</p>
<p>	var parts = url.split(&#039;/&#039;);<br />
	if ((parts == null) || (parts.length &lt; 3))<br />
		return false;</p>
<p>	var domain = parts[2];<br />
	for (var i = 0; i = 3))<br />
		{<br />
			return parts[2].toLowerCase();<br />
		}<br />
	}</p>
<p>	return url;<br />
};<br />
searchshield.getUrlContents = function (url)<br />
{<br />
	if (url == null)<br />
		return null;</p>
<p>	// don&#8217;t query if local url<br />
	if (url.indexOf(&#8220;linkscanner://&#8221;) != -1)<br />
		return null;</p>
<p>	try<br />
	{<br />
		req = new XMLHttpRequest();<br />
		req.open(&#8220;GET&#8221;, url, false);<br />
		req.send(null);<br />
		if (req.status == 200)<br />
			return req.responseText;<br />
		else<br />
			return null;<br />
	}<br />
	catch (err)<br />
	{<br />
		// nothing to do<br />
		return null;<br />
	}<br />
};<br />
searchshield.parseLink = function (href, simpleMode)<br />
{<br />
	var uri		  = {};<br />
	var parameter = {<br />
			complex: {<br />
				pattern: /^(?:([a-z]+):(?:([a-z]*):)?\/\/)?(?:([^:@]*)(?::([^:@]*))?@)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?::(\d+))?(?:([^:\?\#]+))?(?:\?([^\#]+))?(?:\#([^\s]+))?$/i,<br />
				element: ['source','scheme','subscheme','user','pass','host','port','path','query','fragment']<br />
				},<br />
			simple: {<br />
				pattern: /^(?:([a-z]+):\/\/)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?:\/)([^:\?]+)?(?:([\?|\#])([^\?]+))?$/i,<br />
				element: ['source','scheme','host','path','delimiter','query']<br />
			}<br />
		};<br />
	var mode	= simpleMode !== false ? &#8216;simple&#8217; : &#8216;complex&#8217;;<br />
	var pattern	= parameter[mode].pattern;<br />
	var element	= parameter[mode].element;</p>
<p>	if (!href)<br />
		return uri;</p>
<p>	var matches	= href.match(pattern);</p>
<p>	if (matches)<br />
	{<br />
		// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		// iterate over the matches array and populate uri properties<br />
		// using the respective element parameter as the name.<br />
		// NOTE: set raw property type as String to make inArray()<br />
		// work properly with instanceof.<br />
		// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		for (var i=0; i &lt; matches.length; i++)<br />
			uri[element[i]] = new String(matches[i] || &quot;&quot;);</p>
<p>		// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		// create an array, hostArray, from host, for example,<br />
		// host=&quot;www.google.com&quot; and hostArray=[&quot;www&quot;,&quot;google&quot;,&quot;com&quot;]<br />
		// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		uri.hostArray	= uri.host.split(&quot;.&quot;);</p>
<p>		// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		// create an array, qsArray, from query, for example,<br />
		// query=&#039;hl=en&amp;q=javascript&amp;btnG=Search&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai=&#039;<br />
		// qsArray=[{hl:&#039;en&#039;},{q:javascript}, ... ,(qs_rfai:&#039;&#039;}]<br />
		//<br />
		// $0=entire match, $1=capture 1, $2=capture 2<br />
		// must include $0 even though it is unused so<br />
		// the replace works properly<br />
		// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
		uri.qsArray		= [];<br />
		uri.query.replace(/(?:^|&amp;)([^&amp;=]*)=?([^&amp;]*)/g,<br />
							function ($0, $1, $2) {<br />
								if ($1) uri.qsArray[$1] = $2;<br />
								}<br />
							);<br />
	}</p>
<p>	//non-standard urls require a fail-safe that relies on simply splitting the href<br />
	function splitLink(href)<br />
	{<br />
		// split the href on &#039;/&#039;<br />
		var linkParts = href.split(&quot;/&quot;);</p>
<p>		// need domain and path<br />
		if ((linkParts == null) || (linkParts.length &lt; 2))<br />
			return false;</p>
<p>		var uri = {<br />
			delimiter: (linkParts[3]).substring(0,1),<br />
			host: linkParts[2],<br />
			hostArray: (linkParts[2]).split(&#039;.&#039;),<br />
			path: (linkParts[3]).substring(1),<br />
			qsArray: {},<br />
			query: &#039;&#039;,<br />
			scheme: (linkParts[0]).substring(0, linkParts[0].length-1),<br />
			source: href<br />
			};</p>
<p>		return uri;<br />
	}</p>
<p>	if (!uri.host)<br />
		uri = splitLink(href);</p>
<p>	return uri;<br />
};</p>
<p>// general functions<br />
searchshield.arrayKeys = function (array)<br />
{<br />
	var keys = new Array();<br />
	for(k in array)<br />
		keys.push(k);</p>
<p>	return keys;<br />
};<br />
searchshield.inArray = function (key, array, caseSensitive, exactMatch)<br />
{<br />
	if (! array instanceof Array)<br />
		return false;</p>
<p>	if (caseSensitive !== true)<br />
		caseSensitive = false;</p>
<p>	if (exactMatch !== false)<br />
		exactMatch = true;</p>
<p>	if (key instanceof String)<br />
	{<br />
		for (var i=0; i &lt; array.length; i++)<br />
		{<br />
			var k = caseSensitive ? key.valueOf() : key.valueOf().toLowerCase();<br />
			var a = caseSensitive ? array[i] : array[i].toLowerCase();<br />
			if(exactMatch &amp;&amp; k === a)<br />
				return true;<br />
			else if (!exactMatch &amp;&amp; (-1 !== k.indexOf(a)))<br />
				return true;<br />
		}<br />
	}<br />
	else if (key instanceof Array)<br />
	{<br />
		for (var i=0; i &lt; array.length; i++)<br />
			for (var j=0; j &lt; key.length; j++)<br />
			{<br />
				var k = caseSensitive ? key[j] : key[j].toLowerCase();<br />
				var a = caseSensitive ? array[i] : array[i].toLowerCase();<br />
				if (exactMatch &amp;&amp; k === a)<br />
					return true;<br />
				else if (!exactMatch &amp;&amp; (-1 !== k.indexOf(a)))<br />
					return true;<br />
			}<br />
	}</p>
<p>	return false;<br />
};<br />
// general use functions &#8211; end</p>
<p>// Search constructor<br />
searchshield.Search = function()<br />
{<br />
	this.doc 			= null;<br />
	this.engine 		= null;<br />
	this.engines 		= null;<br />
	this.links 			= null;<br />
	this.uri 			= null;<br />
	this.searchHash 	= null;<br />
	this.checkUrl 		= null;<br />
	this.useLocalImgs 	= null;<br />
	this.clockUrl 		= null;<br />
	// create engine list (actually key/value object will be used)<br />
	this.engineList		= {};<br />
};</p>
<p>searchshield.Search.prototype.getSearchNames = function()<br />
{	// order is important<br />
	var names =  [<br />
		&#039;Google&#039;,<br />
		&#039;AVGGoogle&#039;,<br />
		&#039;AltaVista&#039;,<br />
		&#039;AVGYahoo&#039;,<br />
		&#039;Yahoo&#039;,<br />
		&#039;Bing&#039;,<br />
		&#039;MSN&#039;, // MSN redirects to BING<br />
		&#039;Baidu&#039;,<br />
		&#039;Earthlink&#039;,<br />
		&#039;AOL&#039;,<br />
		&#039;Ask&#039;,<br />
		&#039;Yandex&#039;,<br />
		&#039;Seznam&#039;,<br />
		&#039;Webhledani&#039;,<br />
		&#039;eBay&#039;,<br />
///temp		&#039;Digg&#039;,<br />
		&#039;Slashdot&#039;,<br />
		&#039;Twitter&#039;,<br />
		&#039;GMail&#039;,<br />
		&#039;Facebook&#039;<br />
	];<br />
	return names;<br />
};</p>
<p>searchshield.Search.prototype.detectEngine = function(href)<br />
{<br />
	if (!href)<br />
		return;</p>
<p>	var aEng = searchshield.Search.prototype.getSearchNames();<br />
	var aEngLen = aEng.length;<br />
	for (var i=0; i &lt; aEngLen; i++)<br />
	{<br />
		if (searchshield[aEng[i] + &#039;SearchEngine&#039;].prototype.validSearch(href))<br />
			return aEng[i];<br />
	}</p>
<p>	return;<br />
};</p>
<p>searchshield.Search.prototype.addEngine = function(engine)<br />
{<br />
	if (!this.engines)<br />
		this.engines = new Array();</p>
<p>	this.engines.push(engine);<br />
};</p>
<p>searchshield.Search.prototype.addLink = function(inElement, inHref)<br />
{<br />
	if (!this.links)<br />
		this.links = new Array();</p>
<p>	var hrefHash;<br />
	try<br />
	{<br />
		hrefHash = searchshield.avgCallFunc(this.doc, &#039;GetHash&#039;, inHref);<br />
	}<br />
	catch (e){}</p>
<p>	var newNode = {<br />
			element:	inElement,<br />
			href: 		inHref,<br />
			hash:		hrefHash,<br />
			search:		this.searchHash<br />
		};</p>
<p>	this.links.push(newNode);</p>
<p>	return newNode;<br />
}</p>
<p>// process the search result page after all search engines have been added<br />
searchshield.Search.prototype.process = function(doc)<br />
{<br />
	// only process when searchshield is enabled<br />
	if (0 == searchshield.avgCallFunc(doc, &#039;GetSearchEnabled&#039;))<br />
		return;</p>
<p>	this.doc	= doc;<br />
	this.href	= this.doc.location.href;<br />
	this.uri	= searchshield.parseLink(this.href);</p>
<p>	try<br />
	{<br />
		this.searchHash 	= searchshield.avgCallFunc(this.doc, &#039;GetHash&#039;, this.href);</p>
<p>		// get any previously active engine<br />
		this.engine		= this.engineList[this.searchHash.toString()];<br />
	}<br />
	catch (e) {}</p>
<p>	/*</p>
<p>	Process Steps:<br />
	1. Add all supported search engines<br />
	2. Identify the active search engine<br />
	3. Get all document links and add AVG images<br />
	*/</p>
<p>	// STEP 1 &#8211; Add all supported search engines<br />
	if (!this.engines)<br />
	{<br />
		var aEng = xplSearch.getSearchNames();<br />
		var aEngLen = aEng.length;<br />
		for (var i=0; i &lt; aEngLen; i++)<br />
		{<br />
			xplSearch.addEngine(new searchshield[aEng[i]+&#039;SearchEngine&#039;](this));<br />
		}<br />
	}</p>
<p>	// search the engines if we didn&#039;t find one<br />
	if (!this.engine)<br />
	{<br />
		// STEP 2 &#8211; Identify the active search engine<br />
		var engLen = this.engines.length;<br />
		for (var i = 0; i &lt; engLen; i++)<br />
		{<br />
			if (this.engines[i].validSearch())<br />
			{<br />
				this.engine		= this.engines[i];<br />
				break;<br />
			}<br />
		}</p>
<p>		// create a new engine instance to store<br />
		this.engineList[this.searchHash.toString()] = this.engine;</p>
<p>		// init this search, if &lt; 1 either an error or disabled<br />
		//var sdkInit = 0;<br />
		//try {<br />
		//	sdkInit = xpl_sdk.SXPL_InitSearch(this.href);<br />
		//}<br />
		//catch(e){}<br />
		//if (sdkInit &lt; 1)<br />
		//	return false;<br />
	}</p>
<p>	// return immediately if there is not an active search engine<br />
	if (!this.engine)<br />
		return false;</p>
<p>	try {<br />
		// base url to check for icons<br />
		this.checkUrl 	= searchshield.avgCallFunc(this.doc, &#039;GetIconUrl&#039;, &#039;1&#039;);</p>
<p>		// check if using linked or local icons<br />
		this.useLocalImgs	= !searchshield.getUrlContents(this.checkUrl);</p>
<p>		// get the clock url<br />
		this.clockUrl 	= searchshield.avgCallFunc(this.doc, &#039;GetIconUrl&#039;, &#039;0&#039;);<br />
	}<br />
	catch(e){}</p>
<p>	// STEP 3 &#8211; Get all document links and add AVG images<br />
	var alltags = this.doc.getElementsByTagName(&quot;*&quot;);	// this method works for IE, FF and Chrome<br />
	for (var i=0; i  -1))<br />
	{<br />
		return;<br />
	}</p>
<p>	// mark search result anchor so it isn&#8217;t processed repeatedly<br />
	if (score == undefined)<br />
		element.setAttribute(&#8220;avglschecked&#8221;, hash + &#8220;S&#8221; + this.VeriSignSplit);</p>
<p>	// create a new image<br />
	var img = doc.createElement(&#8216;img&#8217;);<br />
	img.src = image;<br />
	img.id = &#8220;XPLSS_&#8221; + hash;<br />
	img.style.borderStyle = &#8220;none&#8221;;<br />
	img.style.margin = &#8220;0 3px&#8221;;</p>
<p>	// for IE, specify these style attributes to prevent inadvertent inheritance from parent<br />
	if (img.width &amp;&amp; img.height)<br />
	{<br />
		img.style.width = img.width + &#8216;px&#8217;;<br />
		img.style.height = img.height + &#8216;px&#8217;;<br />
	}</p>
<p>	// apply custom element styles<br />
	this.updateElementStyle(img, this.addImageStyle);</p>
<p>	// create the link element<br />
	var anchor = doc.createElement(&#8220;A&#8221;);<br />
	anchor.setAttribute(&#8220;id&#8221;, &#8220;LXPLSS_&#8221; + hash);</p>
<p>	if ((hidden != null) &amp;&amp; (hidden == true))<br />
	{	// hiding the parent will also hide its child nodes<br />
		anchor.style.display = &#8220;none&#8221;;<br />
	}</p>
<p>	// Default anchor styles<br />
	//Over-ride possible border style with inline declaration<br />
	anchor.style.borderStyle = &#8220;none&#8221;;</p>
<p>	// apply custom element styles<br />
	this.updateElementStyle(anchor, this.addAnchorStyle);</p>
<p>	if (score == searchshield.SCORE_SS_VERISIGN)<br />
	{<br />
		anchor.style.textDecoration = &#8220;none&#8221;;<br />
		anchor.style.background = &#8220;none&#8221;;<br />
	}</p>
<p>	// append the image to the link<br />
	anchor.appendChild(img);</p>
<p>	// insert the node as either a sibling or a child<br />
	if (insertNode != null)<br />
		parentNode.insertBefore(anchor, insertNode);<br />
	else<br />
		parentNode.appendChild(anchor);</p>
<p>	return anchor;<br />
};<br />
searchshield.SearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru)<br />
{<br />
		var updated = false;</p>
<p>		var frameDoc  = this.search.doc;<br />
		var docFrames = frameDoc.frames;<br />
		var frameElem;<br />
		if (docFrames &amp;&amp; this.processFrames)<br />
		{<br />
			for (var i=0; i &lt; docFrames.length; i++)<br />
			{<br />
				try {<br />
					if (docFrames[i].document.getElementById(hash))<br />
					{<br />
						frameElem = docFrames[i].frameElement;<br />
						frameDoc = docFrames[i].document;<br />
						break;<br />
					}<br />
				}<br />
				catch(err){}<br />
			}<br />
		}</p>
<p>		while ((element = frameDoc.getElementById(hash)) != null)<br />
		{<br />
			// check configuration to determine if verdict display property<br />
			var showVerdict = true;<br />
			var nSeverity = Number(score &#8211; 1);<br />
			switch (nSeverity)<br />
			{<br />
				case searchshield.XPLCHECK_RESULT_SEV_LOW:<br />
					showVerdict = this.showLowRiskVerdicts;<br />
					break;<br />
				case searchshield.XPLCHECK_RESULT_SEV_MED:<br />
					showVerdict = this.showMedRiskVerdicts;<br />
					break;<br />
				case searchshield.XPLCHECK_RESULT_SEV_NONE:<br />
					showVerdict = this.showCleanVerdicts;<br />
					break;<br />
				default:<br />
					if (score == searchshield.SCORE_SS_VERISIGN)<br />
						showVerdict = this.showCleanVerdicts;<br />
					break;<br />
			}</p>
<p>			// remove image if no url specified<br />
			if ((!showVerdict) || (image == null) || (image.length anchor-&gt;containerNodes&#8230;<br />
					while (cN &amp;&amp; maxLoop&#8211;)<br />
					{<br />
						if (cN.tagName == &#8220;DIV&#8221; || cN.tagName == &#8220;SPAN&#8221;)<br />
						{<br />
							// get object height depending on ie document mode<br />
							var clientHeight = (cN.clientHeight == 0 ||<br />
								(this.search.doc.documentMode &amp;&amp; this.search.doc.documentMode &lt; 8)) ?<br />
								cN.offsetHeight :<br />
								cN.clientHeight;<br />
							scrl = cN.scrollHeight &#8211; clientHeight;<br />
							break;<br />
						}</p>
<p>						cN = cN.parentNode;<br />
					}</p>
<p>					if (0  eH)<br />
							eH = reduceBy;</p>
<p>						var newDim = Math.ceil(eH*element.height);</p>
<p>						element.height = newDim;<br />
						element.width = newDim;</p>
<p>						element.style.height = newDim + &#8220;px&#8221;;<br />
						element.style.width = newDim + &#8220;px&#8221;;<br />
					}<br />
				}<br />
				catch(e){}<br />
			}</p>
<p>			// set default style attributes<br />
			element.style.display		= &#8220;&#8221;;</p>
<p>			// if verisign icon showing move our icon up for better centering of the 2<br />
			// except for IE7 browser &#8211; it does not like this style<br />
			try {<br />
				var ieVersion = parseFloat(navigator.appVersion.split(&#8220;MSIE&#8221;)[1]);<br />
				if (alt_image &amp;&amp; (alt_image.length &gt; 0) &amp;&amp; ieVersion != 7)<br />
					element.style.verticalAlign = &#8220;10%&#8221;;<br />
			}<br />
			catch(err){};</p>
<p>			// apply custom element styles<br />
			this.updateElementStyle(element, this.updateImageStyle)</p>
<p>			// update the click thru<br />
			var link = this.search.doc.getElementById(&#8220;L&#8221; + hash);<br />
			if (link)<br />
			{<br />
				link.href = click_thru;<br />
				link.id = link.id + &#8220;U&#8221; + score;<br />
			}</p>
<p>			updated = true;</p>
<p>			// add the alternate image if supplied BUT not on avg yahoo<br />
			if ((alt_image)				&amp;&amp;<br />
				(alt_image.length &gt; 0)	&amp;&amp;<br />
				(!this.omitAltImage)	&amp;&amp;<br />
				(this.VeriSignSplit != searchshield.VERISIGN_SPLIT_TESTB))<br />
			{</p>
<p>				var vhash = hash.substring(hash.indexOf(&#8220;_&#8221;)+1);</p>
<p>				// create a temporary link node<br />
				var tmp_node = {<br />
						element:	element.parentNode,<br />
						href:		altClick_thru,<br />
						hash:		vhash + &#8220;VU&#8221; + score,<br />
						search:		this.searchHash,<br />
						score:		score<br />
					};</p>
<p>				var altAnchor = this.addImage(tmp_node, alt_image, false);<br />
				if (altAnchor &amp;&amp; altAnchor.firstChild)<br />
				{<br />
					altAnchor.firstChild.setAttribute(&#8220;onmouseover&#8221;, &#8220;&#8221;);<br />
					altAnchor.href = altClick_thru;<br />
				}<br />
			}<br />
		}</p>
<p>		if (updated != false)<br />
		{<br />
			this.resizeFrame(frameElem);<br />
			return true;<br />
		}</p>
<p>	return false;<br />
};<br />
searchshield.SearchEngine.prototype.updateElementStyle = function (element, elementStyle)<br />
{<br />
	if (elementStyle)<br />
	{	// a NULL attribte value will unset it<br />
		for(attr in elementStyle)<br />
		{<br />
			try {<br />
				if (element.style.setAttribute)<br />
					element.style.setAttribute(attr, elementStyle[attr]);<br />
				else<br />
					element.style[attr] = elementStyle[attr];<br />
			} catch(err){}<br />
		}<br />
	}<br />
};</p>
<p>searchshield.SearchEngine.prototype.resizeFrame = function (frameElem)<br />
{	// resize frame to prevent unwanted scrolling after inserting verdicts</p>
<p>	// ignore inline and non-frame engines<br />
	if ((this.type == &#8216;inline&#8217;) || (!this.processFrames))<br />
		return;</p>
<p>	// ensure all required elements are available<br />
	if ((frameElem == null) || (frameElem.style == null) || (frameElem.contentWindow == null))<br />
		return;</p>
<p>	// if frame is scrolling vertically then resize<br />
	var frameHeight = parseInt(frameElem.style.height, 10);<br />
	if (!isNaN(frameHeight) &amp;&amp; (frameHeight &lt; frameElem.contentWindow.document.body.scrollHeight))<br />
		frameElem.style.height = frameElem.contentWindow.document.body.scrollHeight + &#039;px&#039;;</p>
<p>	return;<br />
};</p>
<p>searchshield.SearchEngine.prototype.getImgElement = function (element)<br />
{	// return an xpl img element associated with a given element<br />
	if (element == null)<br />
		return null;</p>
<p>	// go up the parent tree looking for a header or div<br />
	while ( (element.parentNode != null) &amp;&amp;<br />
			(element.tagName.charAt(0) != &quot;H&quot;) &amp;&amp;<br />
			(element.tagName.charAt(0) != &quot;D&quot;) &amp;&amp;<br />
			(element.tagName.charAt(0) != &quot;T&quot;) )<br />
	{<br />
		element = element.parentNode;<br />
	}</p>
<p>	// if all the way to the top, nothing<br />
	if ((element.tagName == &quot;HTML&quot;) || (element == null))<br />
		return null;</p>
<p>	// get image tags, if none we are done<br />
	var imgTags = element.getElementsByTagName(&quot;IMG&quot;);<br />
	if ((imgTags == null) || (imgTags.Length &lt; 1))<br />
		return null;</p>
<p>	for (var i = 0; i = 5)<br />
	{	//if set to default then get config value<br />
		if (this.showCleanVerdicts === true)<br />
			this.showCleanVerdicts		= (parseInt(parts[0]) == 1) ? true : false;</p>
<p>		if (this.showLowRiskVerdicts === true)<br />
			this.showLowRiskVerdicts	= (parseInt(parts[1]) == 1) ? true : false;</p>
<p>		if (this.showMedRiskVerdicts === true)<br />
			this.showMedRiskVerdicts	= (parseInt(parts[2]) == 1) ? true : false;</p>
<p>		this.VeriSignSplit	= (parseInt(parts[4]));<br />
	}</p>
<p>	return true;<br />
};</p>
<p>searchshield.SearchEngine.prototype.init_inline_ratings = function (doc)<br />
{<br />
	if ((doc == null) || (doc.getElementById(&#8220;XPLSS_InlineFlyover&#8221;)))<br />
		return;</p>
<p>	// create the popup box<br />
	var box = doc.createElement(&#8220;DIV&#8221;);<br />
	try {<br />
		box.setAttribute(&#8220;id&#8221;, &#8220;XPLSS_InlineFlyover&#8221;);<br />
		box.style.visibility = &#8220;hidden&#8221;;<br />
		box.style.left = &#8220;-5000px&#8221;;</p>
<p>		box.style.position = &#8220;absolute&#8221;;<br />
		box.style.zIndex = &#8220;9999&#8243;;<br />
		box.style.padding = &#8220;0px 0px&#8221;;<br />
		box.style.marginLeft = &#8220;0px&#8221;;<br />
		box.style.marginTop = &#8220;0px&#8221;;<br />
		box.style.overflow = &#8220;hidden&#8221;;<br />
		box.style.wordWrap = &#8220;break-word&#8221;;<br />
		box.style.color = &#8220;black&#8221;;<br />
		box.style.fontSize = &#8220;10px&#8221;;<br />
		box.style.textAlign = &#8220;left&#8221;;<br />
		box.style.lineHeight = &#8220;130%&#8221;;</p>
<p>		doc.body.appendChild(box);<br />
		box = null;<br />
	}<br />
	catch(boxErr){}<br />
};</p>
<p>searchshield.SearchEngine.prototype.show_inline_ratings = function (doc, node, image)<br />
{<br />
	var href	= node.href;<br />
	var anchor	= node.element;</p>
<p>	if ((href == null) || (href.length &lt; 1))<br />
		return;</p>
<p>	if (avglsinlineflyover.imageExists(anchor))<br />
		return;</p>
<p>	// mark search result anchor so it isn&#039;t processed repeatedly<br />
	anchor.setAttribute(&quot;avglschecked&quot;, &quot;1&quot;);</p>
<p>	// get verdict<br />
	this.display_inline(doc, anchor, href, node, false);<br />
};</p>
<p>searchshield.SearchEngine.prototype.display_inline = function (doc, anchor, href, node, update, min_severity)<br />
{<br />
	// min_severity is the lowest severity to display, so setting it to<br />
	// 1 would not display safe icons</p>
<p>	var results	= searchshield.avgCallFunc(doc, &#039;MalsiteCheck&#039;, href);<br />
	if (results == null)<br />
		return;</p>
<p>	var parts = results.split(&#039;::&#039;);</p>
<p>	// need at least severity<br />
	if (parts == null)<br />
		return;</p>
<p>	var nSeverity = parseInt(parts[0]);</p>
<p>	if (!update &amp;&amp; nSeverity == searchshield.XPLCHECK_RESULT_SEV_NONE)<br />
	{<br />
		var shortUrl = searchshield.FilterUrl(href, this.shortened_urls);<br />
		if (shortUrl)<br />
		{	// shortened url verdicts display later<br />
			var engine = this;<br />
			anchor.attachEvent(&quot;onmouseover&quot;, function(event){avglsinlineflyover.mouseOverHandler(event, doc, engine)}, false);<br />
			return;<br />
		}<br />
	}</p>
<p>	// severity -1 signifies sb.dat load failure<br />
	if ( nSeverity == -1 )<br />
	    nSeverity = searchshield.XPLCHECK_RESULT_SEV_NONE;</p>
<p>	//blacklist url<br />
	var blShortUrl = false;<br />
	if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_BLOCK)<br />
	{<br />
		var shortUrl = searchshield.FilterUrl(href, this.shortened_urls);<br />
		if (shortUrl)<br />
			blShortUrl = true;<br />
	}</p>
<p>	// need xlated cat tag and category<br />
	if (parts.length &lt; 3)<br />
		return;</p>
<p>	// check the minimum to display<br />
	if ((min_severity != null) &amp;&amp; (nSeverity  0 )<br />
		{<br />
			imageElem.setAttribute(&#8220;title&#8221;, &#8220;&#8221;);<br />
			imageElem.attachEvent(&#8220;onmouseover&#8221;, function(e){avglsinlineflyover.popup(e, html)});<br />
			imageElem.attachEvent(&#8220;onmouseout&#8221;, function(e){avglsinlineflyover.hide(e)});<br />
		}<br />
	}<br />
};</p>
<p>// add the image to the page<br />
searchshield.SearchEngine.prototype.add_inline_image = function (doc, anchor, nSeverity, aRisk, blShortUrl)<br />
{<br />
	if (anchor == null || anchor.parentNode == null)<br />
		return null;</p>
<p>	// get the proper insertion point for the image<br />
	var insertNode = anchor.nextSibling;<br />
	while ((insertNode			!= null) &amp;&amp;<br />
			(insertNode.tagName != null) &amp;&amp;<br />
			(insertNode.tagName == &#8220;SPAN&#8221;))<br />
	{<br />
		insertNode= insertNode.nextSibling;<br />
	}</p>
<p>	// see if we already have an image anchor<br />
	if ((insertNode		!= null) &amp;&amp;<br />
		(insertNode.id	!= null) &amp;&amp;<br />
		(insertNode.id	== &#8220;avg_ls_anch&#8221;))<br />
	{<br />
		return null;<br />
	}</p>
<p>	var html  = &#8221;;<br />
	var image = this.inline.clockImage;<br />
	if (aRisk != null &amp;&amp; nSeverity != null)<br />
	{<br />
		var riskCategory = aRisk[1];<br />
		var riskName	 = aRisk[2];<br />
		var bgColor		 = this.inline.color.background[nSeverity];<br />
		var borderColor	 = this.inline.color.border[nSeverity];<br />
		image			 = this.inline.image[nSeverity];</p>
<p>		var blUrl;<br />
		if (blShortUrl)<br />
		{<br />
			var aRiskName = riskName.split(&#8216;:&#8217;);<br />
			var sUrl = searchshield.checkUrl(aRiskName[1]);</p>
<p>			blUrl = {};<br />
			blUrl.riskNameLabel = aRiskName[0] + &#8216;: &#8216;;<br />
			blUrl.riskCategory = riskCategory;<br />
			blUrl.bgColor = bgColor;<br />
			blUrl.borderColor = borderColor;<br />
			blUrl.sUrl = sUrl;<br />
		}<br />
		else<br />
		{<br />
			html = avglsinlineflyover.build(riskCategory, riskName, bgColor, borderColor);<br />
		}<br />
	}</p>
<p>	doc = anchor.ownerDocument;</p>
<p>	var img		 = doc.createElement(&#8220;img&#8221;);<br />
	img.src		 = image;<br />
	img.setAttribute(&#8220;id&#8221;,&#8221;avg_ls_image&#8221;);<br />
	img.style.width = &#8220;12px&#8221;;<br />
	img.style.border = &#8220;none&#8221;;<br />
	img.style.padding = &#8220;0 3px&#8221;;<br />
	img.style.margin = &#8220;0&#8243;;<br />
	img.style.display = &#8220;inline&#8221;;</p>
<p>	if ((html &amp;&amp; html.length &gt; 0) || (blUrl != undefined))<br />
	{<br />
		img.setAttribute(&#8220;title&#8221;, &#8220;&#8221;);<br />
		img.attachEvent(&#8220;onmouseover&#8221;, function(e){avglsinlineflyover.popup(e, html, blUrl)});<br />
		img.attachEvent(&#8220;onmouseout&#8221;, function(e){avglsinlineflyover.hide(e)});<br />
	}</p>
<p>	// create the link element<br />
	var newAnchor = doc.createElement(&#8220;A&#8221;);<br />
	newAnchor.setAttribute(&#8220;id&#8221;, &#8220;avg_ls_anch&#8221;);</p>
<p>	newAnchor.appendChild(img);<br />
	img = null;</p>
<p>	// insert the node as either a sibling or a child<br />
	if (insertNode != null)<br />
		anchor.parentNode.insertBefore(newAnchor, insertNode);<br />
	else<br />
		anchor.parentNode.appendChild(newAnchor);	</p>
<p>	return newAnchor;		</p>
<p>};<br />
////////////////    SEARCH ENGINE    ////////////////</p>
<p>///////////////    GOOGLE SEARCH ENGINE    ///////////////<br />
searchshield.GoogleSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.onlyPrimaries = false;<br />
};<br />
searchshield.GoogleSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.GoogleSearchEngine.prototype.constructor = searchshield.GoogleSearchEngine;<br />
searchshield.GoogleSearchEngine.prototype.name = &#8220;google&#8221;;	// the name by which the search engine is known (always lowercase)<br />
searchshield.GoogleSearchEngine.prototype.validSearch = function(href) {</p>
<p>	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var hostMatch	= false;<br />
	var domain		= uri.host;</p>
<p>	// re stitch the uri path and query elements to<br />
	// use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	// Domains valid for google searches, must start with &#8216;.&#8217;<br />
	var valid_domains = new Array(&#8220;.google.co&#8221;, &#8220;.mozilla.co&#8221;);</p>
<p>	// For Google the host must match:<br />
	//	.google.com		OR<br />
	//	.google.co.XX	where XX is a country code<br />
	//	.google.XX		where XX is a country code<br />
	// Where any subdomain can come before the top level domain<br />
	var domLen = valid_domains.length;<br />
	for (var i = 0; i  -1)<br />
		{<br />
			if (domain.charAt(tldPos + valid_domain_len) == &#8216;m&#8217;)<br />
				hostMatch = true;<br />
			else if ((domain.charAt(tldPos + valid_domain_len) == &#8216;.&#8217;) &amp;&amp; ((domainLen &#8211; tldPos) == valid_domain_len+3))<br />
				hostMatch = true;<br />
		}<br />
		else<br />
		{<br />
			// get the form .google. to check the length of<br />
			var dot_pos = valid_domains[i].indexOf(&#8220;.&#8221;,1);<br />
			var valid_short_name = valid_domains[i].substring(0, dot_pos+1);</p>
<p>			tldPos = domain.indexOf(valid_short_name);<br />
			if ((tldPos &gt; -1) &amp;&amp; ((domainLen &#8211; tldPos) == valid_domain_len))<br />
				hostMatch = true;<br />
		}<br />
		if (hostMatch)<br />
		{<br />
			// replace beginning of domain with www.google since links will refer back to it<br />
			if ((i &gt; 0) &amp;&amp; (tldPos &gt; -1))<br />
			{<br />
				var last_dot = domain.indexOf(&#8220;.&#8221;,tldPos+1)<br />
				if (last_dot &gt; -1)<br />
					domain = &#8220;www.google&#8221; + domain.substring(last_dot);<br />
			}<br />
			break;<br />
		}<br />
	}</p>
<p>	if (hostMatch)<br />
	{<br />
		// using ajax engine<br />
		if ((path.indexOf(&#8220;search?&#8221;) == 0) ||<br />
			(path.indexOf(&#8220;sponsoredlinks?&#8221;) == 0) ||<br />
			(path.indexOf(&#8220;webhp?&#8221;) == 0) ||<br />
			(path.indexOf(&#8220;webhp#&#8221;) == 0) ||<br />
			(path.indexOf(&#8220;#q=&#8221;) == 0) ||<br />
			(path.indexOf(&#8220;#hl=&#8221;) == 0) ||<br />
			(path.indexOf(&#8220;#sclient=&#8221;) == 0))<br />
		{<br />
			return true;<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.GoogleSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var href = &#8220;&#8221;;<br />
	var outHref = false;<br />
	var findStr = &#8220;&#8221;;</p>
<p>	// check for interstitials<br />
	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
	{<br />
		findStr = this.search.uri.host + &#8220;/interstitial?&#8221;;<br />
		if (tag.className == &#8220;l&#8221; &amp;&amp; tag.href)<br />
		{<br />
			if (tag.href.indexOf(findStr) != -1)<br />
			{<br />
				findStr = &#8220;?url=&#8221;;<br />
				var pos = tag.href.indexOf(findStr);<br />
				if (pos !== -1)<br />
				{<br />
					pos += 5;<br />
					outHref = tag.href.substring(pos);<br />
					if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
						return false;</p>
<p>					return outHref;<br />
				}<br />
			}<br />
		}</p>
<p>		if (tag.className == &#8220;sla&#8221;)<br />
		{<br />
			findStr = &#8220;/url?q=&#8221;;<br />
			urlPos = tag.href.indexOf(findStr);<br />
			if (urlPos != -1)<br />
			{<br />
				urlPos += 7;<br />
				outHref = tag.href.substring(urlPos);<br />
				return outHref;<br />
			}<br />
		}</p>
<p>		// if an ad id<br />
		if ((tag.id.indexOf(&#8220;pa&#8221;) == 0) || (tag.id.indexOf(&#8220;an&#8221;) == 0) ||<br />
			(tag.className == &#8220;resultLink&#8221;))<br />
		{<br />
			var urlPos = -1;	</p>
<p>			// ads now need unescaping<br />
			href = unescape(tag.href);</p>
<p>			findStr= &#8220;/url?sa=&#8221;;<br />
			if (href.indexOf(findStr) != -1)<br />
			{	// first kind, locate real url<br />
				findStr= &#8220;&amp;q=http&#8221;;<br />
				urlPos = href.indexOf(findStr);<br />
				if (urlPos != -1)<br />
					urlPos += 3;	// puts it on the http<br />
			}<br />
			if (urlPos == -1)<br />
			{<br />
				findStr = &#8220;/pagead/iclk?sa=&#8221;;<br />
				if (href.indexOf(findStr) != -1)<br />
				{	// second kind, locate real url<br />
					findStr = &#8220;&amp;adurl=http&#8221;;<br />
					urlPos	= href.indexOf(findStr);<br />
					if (urlPos != -1)<br />
						urlPos += 7; // puts it on the http<br />
				}<br />
			}<br />
			if (urlPos == -1)<br />
			{<br />
				if (href.indexOf(&#8220;/aclk?sa=&#8221;) != -1)<br />
				{	// third kind<br />
					urlPos = href.indexOf(&#8220;&amp;q=http&#8221;);<br />
					if (urlPos != -1)<br />
						urlPos += 3; // puts it on the http<br />
					else<br />
					{<br />
						urlPos  = href.indexOf(&#8220;&amp;lp=http&#8221;);<br />
						if (urlPos != -1)<br />
							urlPos += 4;<br />
						else<br />
						{<br />
							findStr = &#8220;&amp;adurl=http&#8221;;<br />
							urlPos	= href.indexOf(findStr);<br />
							if (urlPos != -1)<br />
								urlPos += 7; // puts it on the http<br />
						}</p>
<p>					}<br />
				}<br />
			}<br />
			if (urlPos == -1)<br />
			{<br />
				if (href.indexOf(&#8220;/url?cad=&#8221;) != -1)<br />
				{	// fourth kind<br />
					urlPos = href.indexOf(&#8220;&amp;q=http&#8221;);<br />
					if (urlPos != -1)<br />
						urlPos += 3; // puts it on the http<br />
				}<br />
			}<br />
			if (urlPos != -1)<br />
			{<br />
				outHref = href.substring(urlPos);</p>
<p>				// extract any fragment text, shouldn&#8217;t be unescaped<br />
				var pound = outHref.indexOf(&#8220;#&#8221;);<br />
				if (pound != -1)<br />
				{<br />
					var fragment = outHref.substring(pound);<br />
					outHref = outHref.substring(0, pound);<br />
					outHref = unescape(outHref);<br />
					outHref += fragment;<br />
					if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
						return false;</p>
<p>					return outHref;<br />
				}</p>
<p>				outHref = unescape(outHref);<br />
				if (outHref.indexOf(&#8220;?&#8221;) == -1)<br />
				{<br />
					var ampPos = outHref.indexOf(&#8220;&amp;&#8221;);<br />
					if (ampPos != -1)<br />
						outHref = outHref.substring(0, ampPos);<br />
				}</p>
<p>				if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
					return false;</p>
<p>				return outHref;<br />
			}<br />
		}</p>
<p>		// recommended link &#8211; use following to see one<br />
		// http://www.google.cz/search?hl=cs&amp;q=warey&amp;btnG=Hledat&amp;lr=lang_cs<br />
		// elem parent class = r<br />
		// href must contain &#8211; url? and q=http<br />
		var parentNode = tag.parentNode;<br />
		if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == &#8220;r&#8221;))<br />
		{<br />
			href = tag.href;<br />
			if (href &amp;&amp; (href.indexOf(&#8220;/url?&#8221;) != -1))<br />
			{<br />
				// locate the real url<br />
				var urlPos = href.indexOf(&#8220;q=http&#8221;);<br />
				if (urlPos != -1)<br />
				{<br />
					urlPos += 2;<br />
					outHref = href.substring(urlPos);</p>
<p>					// include entire param up to &#8216;&amp;&#8217;<br />
					var ampPos = outHref.indexOf(&#8220;&amp;&#8221;);<br />
					if (ampPos != -1)<br />
						outHref = outHref.substring(0, ampPos);</p>
<p>					return outHref;<br />
				}<br />
			}<br />
		}<br />
	}<br />
	// no link to self<br />
	else if (tag.className &amp;&amp; (tag.className.charAt(0) == &#8220;l&#8221; || tag.className == &#8220;sla&#8221;))<br />
	{<br />
		// check for any images on the link<br />
		if (0 === tag.getElementsByTagName(&#8220;IMG&#8221;).length)<br />
			return tag.href;<br />
	}</p>
<p>	// else nothing<br />
	return false;<br />
};<br />
///////////////    GOOGLE    ///////////////</p>
<p>///////////////    AVG GOOGLE SEARCH ENGINE    ///////////////<br />
searchshield.AVGGoogleSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.onlyPrimaries = false;<br />
};<br />
searchshield.AVGGoogleSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.AVGGoogleSearchEngine.prototype.constructor = searchshield.AVGGoogleSearchEngine;<br />
searchshield.AVGGoogleSearchEngine.prototype.name = &#8220;avggoogle&#8221;;	// the name by which the search engine is known (always lowercase)<br />
searchshield.AVGGoogleSearchEngine.prototype.validSearch = function(href) {</p>
<p>	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain		= uri.host;</p>
<p>	// re stitch the uri path and query elements to<br />
	// use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	if  (domain.indexOf(&#8220;search.avg.com&#8221;) &gt; -1)<br />
	{   // ads link back to google<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.AVGGoogleSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var outHref = false;<br />
	var findStr = &#8220;&#8221;;</p>
<p>	// check for interstitials<br />
	if (searchshield.DoesURLContain(tag.href, &#8220;google.com&#8221;))<br />
	{<br />
		// link back to self &#8211; DIV elem GrandParent class of res1 or res3 is Sponsored Link<br />
		var parentNode = tag.parentNode;<br />
		if (parentNode)<br />
		{<br />
			var grandParentNode = tag.parentNode.parentNode;<br />
			if (grandParentNode)<br />
			{<br />
				if ((grandParentNode.tagName == &#8220;DIV&#8221;) &amp;&amp;<br />
					((grandParentNode.className.toLowerCase() == &#8220;res1&#8243;) ||<br />
					(grandParentNode.className.toLowerCase() == &#8220;res3&#8243;)))<br />
				{<br />
					var urlPos = -1;	</p>
<p>					// ads now need unescaping<br />
					href = unescape(tag.href);</p>
<p>					if (urlPos == -1)<br />
					{<br />
						if (href.indexOf(&#8220;/aclk?sa=&#8221;) != -1)<br />
						{<br />
							findStr = &#8220;&amp;adurl=http&#8221;;<br />
							urlPos	= href.indexOf(findStr);<br />
							if (urlPos != -1)<br />
								urlPos += 7; // puts it on the http</p>
<p>						}<br />
					}<br />
					if (urlPos != -1)<br />
					{<br />
						outHref = href.substring(urlPos)<br />
						// extract any fragment text, shouldn&#8217;t be unescaped<br />
						var pound = outHref.indexOf(&#8220;#&#8221;);<br />
						if (pound != -1)<br />
						{<br />
							var fragment = outHref.substring(pound);<br />
							outHref = outHref.substring(0, pound);<br />
							outHref = unescape(outHref);<br />
							outHref += fragment;<br />
							if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
								return false;</p>
<p>							return outHref;<br />
						}</p>
<p>						outHref = unescape(outHref);<br />
						if (outHref.indexOf(&#8220;?&#8221;) == -1)<br />
						{<br />
							var ampPos = outHref.indexOf(&#8220;&amp;&#8221;);<br />
							if (ampPos != -1)<br />
								outHref = outHref.substring(0, ampPos);<br />
						}</p>
<p>						if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
							return false;</p>
<p>						return outHref;<br />
					}<br />
				}<br />
			}<br />
		}<br />
	}	</p>
<p>	// no link to self<br />
	else<br />
	{<br />
		var parentNode = tag.parentNode;<br />
		if (parentNode)<br />
		{<br />
			var grandParentNode = tag.parentNode.parentNode;<br />
			if (grandParentNode)<br />
			{<br />
				if ((grandParentNode.tagName == &#8220;DIV&#8221;) &amp;&amp;<br />
					(grandParentNode.className.toLowerCase() == &#8220;res2&#8243;))<br />
				{<br />
					// check for any images on the link<br />
					if (0 === tag.getElementsByTagName(&#8220;IMG&#8221;).length)<br />
						return tag.href;<br />
				}<br />
			}<br />
		}<br />
	}</p>
<p>	// else nothing<br />
	return false;<br />
}<br />
///////////////    AVG GOOGLE    ///////////////</p>
<p>///////////////    YAHOO SEARCH ENGINE    ///////////////<br />
searchshield.YahooSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.showCleanVerdicts = false;<br />
};<br />
searchshield.YahooSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.YahooSearchEngine.prototype.constructor = searchshield.YahooSearchEngine;<br />
searchshield.YahooSearchEngine.prototype.name = &#8220;yahoo&#8221;;<br />
searchshield.YahooSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain = uri.host;</p>
<p>	// re stitch the uri path and query elements to<br />
	// use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	// For Yahoo the host must match:<br />
	//	search.yahoo.com		OR<br />
	//	xx.search.yahoo.com where xx is the country code OR<br />
	//	search.yahoo.co.jp OR<br />
	// for Yahoo China: one.cn.yahoo.com, search.cn.yahoo.com or www.yahoo.cn<br />
	if ((domain.match(/search\.yahoo\.co(?:m|\.jp)/i) ||<br />
		domain.match(/(?:search|one)\.cn\.yahoo\.com/i) ||<br />
		domain.match(/www\.yahoo\.cn/i)) &amp;&amp;<br />
		path.match(/^(?:search[;?]|s\?)/i))<br />
	{<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.YahooSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var href		= &#8220;&#8221;;<br />
	var outHref		= &#8220;&#8221;;<br />
	var findStr		= &#8220;&#8221;;</p>
<p>	// yahoo likes to encode the url<br />
	href = unescape(tag.href);</p>
<p>	if ((tag.className.indexOf(&#8220;yschttl&#8221;) != -1) ||<br />
		(tag.className.indexOf(&#8220;spt&#8221;) != -1))<br />
	{<br />
		var da = href.indexOf(&#8220;**&#8221;);<br />
		var ad = href.indexOf(&#8220;*-&#8221;);<br />
		if (da != -1)<br />
			outHref = href.substring(da+2);<br />
		else if (ad != -1)<br />
			outHref = href.substring(ad+2);<br />
		else<br />
			outHref = href ;</p>
<p>		if (outHref.toLowerCase().indexOf(&#8220;overture.&#8221;) !== -1)<br />
			return false;<br />
	}<br />
	else if ((tag.tagName)			&amp;&amp;<br />
			 (tag.tagName === &#8220;A&#8221;) 	&amp;&amp;<br />
			 (!tag.className))<br />
	{<br />
		var tagParent = tag.parentNode;</p>
<p>		// if anchor without className then search parentNodes<br />
		if ((tagParent) &amp;&amp;<br />
			(tagParent.tagName !== &#8220;EM&#8221;) &amp;&amp;<br />
			(searchshield.getParentNodeByClassName(&#8220;yst-web&#8221;, tag, 4)))<br />
		{<br />
			// China Yahoo support<br />
			outHref = href;<br />
		}</p>
<p>		else if ((tagParent) &amp;&amp;<br />
				(tagParent.tagName === &#8220;H3&#8243;) &amp;&amp;<br />
				(!!searchshield.getParentNodeById(&#8220;WS2m&#8221;,tag, 5)))<br />
		{<br />
			// Japan Yahoo support<br />
			var da = href.indexOf(&#8220;**&#8221;);<br />
			if (da == -1)<br />
				outHref = href;<br />
			else<br />
				outHref = href.substring(da+2);<br />
		}</p>
<p>		else if ((tagParent) &amp;&amp;<br />
				(tagParent.className !== &#8220;c&#8221;) &amp;&amp;<br />
				(tagParent.parentNode.id !== &#8220;fpn&#8221;) &amp;&amp;<br />
				(!!searchshield.getParentNodeByClassName(&#8220;ymc&#8221;, tag, 7)))<br />
		{<br />
			// Korea Yahoo support &#8211; when not caught by yschttl<br />
			var da = href.indexOf(&#8220;**&#8221;);<br />
			if (da !== -1)<br />
				outHref = href.substring(da+2);<br />
		}<br />
	}<br />
	else if (!this.onlyPrimaries)<br />
	{<br />
		findStr = &#8220;&amp;yargs=&#8221;;<br />
		var yargs = href.indexOf(findStr);<br />
		if (yargs != -1)<br />
		{<br />
			outHref = href.substring(yargs+findStr.length);<br />
			// check for prefix<br />
			if (outHref.indexOf(&#8220;://&#8221;) == -1)<br />
				outHref = &#8220;http://&#8221; + outHref;</p>
<p>			// if inside an <I>, probably a paypal link, don&#8217;t include<br />
			if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == &#8220;I&#8221;))<br />
				return false;<br />
		}<br />
	}</p>
<p>	// filter domains<br />
	// split the url based on &#8216;/&#8217;<br />
	var parts = !!outHref ? outHref.split(&#8216;/&#8217;) : null;</p>
<p>	// Filter out domains that match any of the search engine&#8217;s names<br />
	if (!parts || !parts[2])<br />
		return false;</p>
<p>	var domain = parts[2];<br />
	if ((domain.indexOf(&#8220;rdrjp.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrkrs.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrtpe.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrird.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrhk2.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrsg1.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrin2.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdre1.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrw1.yahoo.com&#8221;) != -1)		)<br />
	{<br />
		return false;<br />
	}</p>
<p>	// set for yahoo to get parent node for image insertion<br />
	var hash = searchshield.avgCallFunc(this.doc, &#8216;GetHash&#8217;, outHref);<br />
	tag.setAttribute(&#8220;id&#8221;, &#8220;xplid_&#8221; + hash);<br />
	return outHref;<br />
};<br />
///////////////    YAHOO SEARCH ENGINE    ///////////////</p>
<p>///////////////    AVG YAHOO SEARCH ENGINE    ///////////////<br />
searchshield.AVGYahooSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.showCleanVerdicts = false;<br />
};<br />
searchshield.AVGYahooSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.AVGYahooSearchEngine.prototype.constructor = searchshield.AVGYahooSearchEngine;<br />
searchshield.AVGYahooSearchEngine.prototype.name = &#8220;avgyahoo&#8221;;<br />
searchshield.AVGYahooSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain= uri.host;<br />
	//path may be &#8216;avg/search&#8217; or &#8216;search&#8217;<br />
	var pathArray = uri.path.split(&#8220;/&#8221;);<br />
	var avg = pathArray[0];<br />
	// re stitch the uri path and query elements<br />
	// to use existing logic<br />
	var path = (undefined == pathArray[1]) ? pathArray[0] : pathArray[1];<br />
		path += uri.delimiter + uri.query;</p>
<p>	// For AVG Yahoo classic the host must match:<br />
	//	yhs.search.yahoo.com	OR<br />
	//	.yhs.search.yahoo.com<br />
	if (domain.indexOf(&#8220;yhs.search.yahoo.co&#8221;) != -1)<br />
	{<br />
		if ((avg == &#8220;avg&#8221;) &amp;&amp;<br />
			((path.indexOf(&#8220;search?&#8221;) == 0) ||<br />
			 (path.indexOf(&#8220;search;&#8221;) == 0)))<br />
		{<br />
			return true;<br />
		}<br />
	}</p>
<p>	// also support new metro version which DOESN&#8217;T<br />
	// contain /avg so avg split part is path<br />
	// valid domains are:<br />
	//	search.yahoo.com,<br />
	//	xx.search.yahoo.com and<br />
	//	search.yahoo.co.xx<br />
	if (domain.indexOf(&#8220;search.yahoo.co&#8221;) != -1)<br />
	{<br />
		// path (split avg) must start with search and<br />
		// contain the avg toolbar parameter<br />
		if (((path.indexOf(&#8220;search?&#8221;) == 0) ||<br />
			(path.indexOf(&#8220;search;&#8221;) == 0)) &amp;&amp;<br />
			(path.indexOf(&#8220;fr=yhs-avg&#8221;) != -1))<br />
		{<br />
			return true;<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.AVGYahooSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var href		= &#8220;&#8221;;<br />
	var outHref		= &#8220;&#8221;;<br />
	var findStr		= &#8220;&#8221;;</p>
<p>	if (this.search.doc.body.className.toLowerCase() != &#8220;standard&#8221;)<br />
	{	// handle as std Yahoo results page<br />
		return searchshield.YahooSearchEngine.prototype.includeLink(tag);<br />
	}	</p>
<p>	// yahoo likes to encode the url<br />
	href = unescape(tag.href);</p>
<p>	if (tag.target == &#8220;_top&#8221;)<br />
	{<br />
		var da = href.indexOf(&#8220;**&#8221;);<br />
		if (da != -1)<br />
			outHref = href.substring(da+2);<br />
		else<br />
			outHref = href ;</p>
<p>		if (outHref.toLowerCase().indexOf(&#8220;overture.&#8221;) !== -1)<br />
			return false;<br />
	}<br />
	else if (!this.onlyPrimaries)<br />
	{<br />
		findStr = &#8220;&amp;yargs=&#8221;;<br />
		var yargs = href.indexOf(findStr);<br />
		if (yargs != -1)<br />
		{<br />
			outHref = href.substring(yargs+findStr.length);<br />
			// check for prefix<br />
			if (outHref.indexOf(&#8220;://&#8221;) == -1)<br />
				outHref = &#8220;http://&#8221; + outHref;</p>
<p>			// if inside an <I>, probably a paypal link, don&#8217;t include<br />
			if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == &#8220;I&#8221;))<br />
				return false;<br />
		}<br />
	}</p>
<p>	// filter domains<br />
	// split the url based on &#8216;/&#8217;<br />
	var parts = outHref.split(&#8216;/&#8217;);</p>
<p>	// Filter out domains that match any of the search engine&#8217;s names<br />
	if (!parts[2])<br />
		return false;</p>
<p>	var domain = parts[2];<br />
	if ((domain.indexOf(&#8220;rdrjp.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrkrs.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrtpe.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrird.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrhk2.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrsg1.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrin2.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdre1.yahoo.com&#8221;) != -1)	||<br />
		(domain.indexOf(&#8220;rdrw1.yahoo.com&#8221;) != -1)		)<br />
	{<br />
		return false;<br />
	}</p>
<p>	return outHref;<br />
};<br />
searchshield.AVGYahooSearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru)<br />
{<br />
	// remove style that is set when alt image is applied<br />
	this.updateImageStyle = {<br />
		verticalAlign: null<br />
	};</p>
<p>	// don&#8217;t show verisign icon<br />
	if (alt_image &amp;&amp; (alt_image.length &gt; 0))<br />
		this.omitAltImage = true;</p>
<p>	var parent = searchshield.SearchEngine.prototype.updateImage;<br />
	return parent.call(this, hash, search, score, image, alt_image, flyover, click_thru, altClick_thru);<br />
};<br />
///////////////    AVG YAHOO SEARCH ENGINE    ///////////////</p>
<p>///////////////    MSN SEARCH ENGINE    ///////////////<br />
searchshield.MSNSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.onlyPrimaries = false;<br />
};<br />
searchshield.MSNSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.MSNSearchEngine.prototype.constructor = searchshield.MSNSearchEngine;<br />
searchshield.MSNSearchEngine.prototype.name = &#8220;msn&#8221;;<br />
searchshield.MSNSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var hostMatch	= false;<br />
	var domain		= uri.host;</p>
<p>	// re stitch the uri path and query elements to<br />
	// use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	// For MSN the host must match:<br />
	//	search.msn.com		OR<br />
	//	search.live.com<br />
	if (domain.indexOf(&#8220;search.msn.co&#8221;) &gt; -1)<br />
	{<br />
		if (domain.charAt(13) == &#8216;m&#8217;)<br />
			hostMatch = true;<br />
		else if ((domain.charAt(13) == &#8216;.&#8217;) &amp;&amp; (domain.length == 16))<br />
			hostMatch = true;<br />
	}<br />
	else if (domain.indexOf(&#8220;search.live.co&#8221;) &gt; -1)<br />
	{<br />
		if (domain.charAt(14) == &#8216;m&#8217;)<br />
			hostMatch = true;<br />
		else if ((domain.charAt(14) == &#8216;.&#8217;) &amp;&amp; (domain.length == 17))<br />
			hostMatch = true;<br />
	}</p>
<p>	if (hostMatch)<br />
	{<br />
		if (path.indexOf(&#8220;results.aspx&#8221;) == 0)<br />
			return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.MSNSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var outHref = false;</p>
<p>	// these don&#8217;t seem common from Firefox, but they are in IE<br />
	if (searchshield.DoesURLContain(tag.href, &#8220;g.msn.co&#8221;))<br />
	{<br />
		var qPos = tag.href.indexOf(&#8220;?&#8221;);<br />
		if (qPos != -1)<br />
		{<br />
			var postPart = tag.href.substring(qPos+1);<br />
			var dblAmp = postPart.indexOf(&#8220;&amp;&amp;&#8221;);<br />
			if (dblAmp != -1)<br />
			{<br />
				outHref = postPart.substring(0, dblAmp);<br />
				return outHref;<br />
			}<br />
		}<br />
	}<br />
	else if (searchshield.DoesURLContain(tag.href, &#8220;r.msn.co&#8221;))<br />
	{<br />
		var element = tag;<br />
		var parentNode = tag.parentNode;</p>
<p>		// top links &#8211; check for a CITE<br />
		var spanElements = element.getElementsByTagName(&#8220;CITE&#8221;);<br />
		if ((spanElements != null)				&amp;&amp;<br />
			(spanElements.length &gt; 0))<br />
		{<br />
			outHref = spanElements[0].innerHTML;<br />
			// replace any nbsp&#8217;s<br />
			outHref = outHref.replace(&#8221; &#8220;, &#8221; &#8220;);</p>
<p>			// url is after the last space in the html, after the &#8216;-&#8217;<br />
			var space_pos = outHref.lastIndexOf(&#8221; &#8220;);<br />
			if (space_pos != -1)<br />
				outHref = outHref.slice(space_pos + 1);</p>
<p>			outHref = searchshield.checkUrl(outHref);<br />
			return outHref;<br />
		}</p>
<p>		// side links<br />
		if (element.lastChild != null)<br />
		{<br />
			outHref = element.lastChild.innerHTML;<br />
			if ( outHref != null)<br />
			{<br />
				outHref = searchshield.checkUrl(outHref);<br />
				return outHref;<br />
			}<br />
		}<br />
	}<br />
	else if (searchshield.DoesURLContain(tag.href, this.search.uri.host)					||<br />
			 searchshield.DoesURLContain(tag.href, &#8220;.live.com&#8221;)					||<br />
			 searchshield.DoesURLContain(tag.href, &#8220;msn.&#8221;)						||<br />
			 searchshield.DoesURLContain(tag.href, &#8220;msnscache.com&#8221;)				||<br />
			 searchshield.DoesURLContain(tag.href, &#8220;advertising.microsoft.co&#8221;)	||<br />
			 searchshield.DoesURLContain(tag.href, &#8220;javascript:&#8221;)				||<br />
			 searchshield.DoesURLContain(tag.href, &#8220;go.microsoft.co&#8221;)			||<br />
			 searchshield.DoesURLContain(tag.href, &#8220;hotmail.co&#8221;))<br />
	{<br />
		// not a link<br />
		return false;<br />
	}<br />
	else if (tag.id.toLowerCase() == &#8220;trademarks&#8221;)<br />
	{<br />
		// don&#8217;t link the trademark at the bottom of the page<br />
		return false;<br />
	}<br />
	else<br />
	{<br />
		// include it<br />
		return tag.href;<br />
	}<br />
};<br />
///////////////    MSN SEARCH ENGINE    ///////////////</p>
<p>///////////////    BING SEARCH ENGINE    ///////////////<br />
searchshield.BingSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
};<br />
searchshield.BingSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.BingSearchEngine.prototype.constructor = searchshield.BingSearchEngine;<br />
searchshield.BingSearchEngine.prototype.name = &#8220;bing&#8221;;<br />
searchshield.BingSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var hostMatch	= false;<br />
	var domain		= uri.host;</p>
<p>	// re stitch the uri path and query elements to<br />
	// use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	// For bing the host must match:<br />
	//	www.bing.com or www.bing.net<br />
	//	xx.bing.com or xx.bing.net where xx is a country code<br />
	//	bing.com.xx where xx is a country code<br />
	//	bing.search.xxxx.net where xxxx may be something like daum<br />
	if ((domain.indexOf(&#8220;www.bing.com&#8221;) !== -1) ||<br />
		(domain.indexOf(&#8220;www.bing.net&#8221;) !== -1) ||<br />
		(domain.indexOf(&#8220;bing.net&#8221;) !== -1))<br />
	{<br />
		hostMatch = true;<br />
	}<br />
	else if ((domain.indexOf(&#8220;bing.search.&#8221;) !== -1) &amp;&amp;<br />
			 (domain.indexOf(&#8220;.net&#8221;) === (domain.length-4)))<br />
	{	//bing.search.xxxx.net<br />
		hostMatch = true;<br />
	}<br />
	else<br />
	{	// xx.bing.com or bing.com.xx<br />
		var domainLen = domain.length;<br />
		var tldPos = domain.indexOf(&#8220;.bing.com&#8221;);<br />
		if (tldPos &gt; -1)<br />
		{<br />
			if ((domainLen &#8211; tldPos) == 9)<br />
				hostMatch = true;<br />
		}<br />
	}</p>
<p>	if (hostMatch)<br />
	{<br />
		if (path.indexOf(&#8220;search?&#8221;) == 0)<br />
			return true;<br />
	}</p>
<p>	return false;</p>
<p>};<br />
searchshield.BingSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var outHref = false;</p>
<p>	if (tag.tagName == &#8216;IMG&#8217;)<br />
	{	//no images<br />
		return false;<br />
	}</p>
<p>	if (tag.href.charAt(0) == &#8216;/&#8217;)<br />
	{	//no relative links<br />
		return false;<br />
	}</p>
<p>	if (tag.id.toLowerCase() == &#8220;trademarks&#8221;)<br />
	{<br />
		// don&#8217;t link the trademark at the bottom of the page<br />
		return false;<br />
	}</p>
<p>	if ((tag.parentNode) &amp;&amp;<br />
		(tag.parentNode.id.toLowerCase() == &#8220;sc_stc&#8221;))<br />
	{	// don&#8217;t verdict the social sites &#8211; our verdict doesn&#8217;t fit<br />
		return false;<br />
	}<br />
	else if (!!searchshield.getParentNodeByClassName(&#8220;sw_t&#8221;,tag,3))<br />
	{	// no links in page header<br />
		return false;<br />
	}<br />
	else if (searchshield.DoesURLContain(tag.href, &#8220;r.msn.co&#8221;) ||<br />
			 searchshield.DoesURLContain(tag.href, &#8220;overture.com&#8221;))<br />
	{	// france has r.msn.co and italy has overture.com sponsored links<br />
		// with the link in CITE element</p>
<p>		var spanElements = null;</p>
<p>		// top links &#8211; check for a CITE<br />
		spanElements = tag.getElementsByTagName(&#8220;CITE&#8221;);<br />
		if ((spanElements == null) || (spanElements.length  0))<br />
		{<br />
			outHref = spanElements[0].innerHTML;<br />
			if (outHref != null)<br />
			{<br />
				// replace any nbsp&#8217;s<br />
				outHref = outHref.replace(&#8221; &#8220;, &#8221; &#8220;);</p>
<p>				// url is after the last space in the html, after the &#8216;-&#8217;<br />
				var space_pos = outHref.lastIndexOf(&#8221; &#8220;);<br />
				if (space_pos != -1)<br />
					outHref = outHref.slice(space_pos + 1);</p>
<p>				outHref = searchshield.checkUrl(outHref);</p>
<p>				// save the link<br />
				return outHref;<br />
			}<br />
		}</p>
<p>		// side links<br />
		if (tag.lastChild != null)<br />
		{<br />
			outHref = tag.lastChild.innerHTML;<br />
			if (outHref != null)<br />
			{<br />
				outHref = searchshield.checkUrl(outHref);<br />
				// save the link<br />
				return outHref;<br />
			}<br />
		}<br />
	}<br />
	// no sponsored links for now<br />
	else if (searchshield.DoesURLContain(tag.href, this.search.uri.host)	||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;.live.com&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;.bing.com&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;.bing.net&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;.daum.net&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;.gmarket.co&#8221;)			||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;.multimap.com&#8221;)			||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;msn.&#8221;)					||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;ms.ciao.&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;ms.ciao-&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;advertising.microsoft.co&#8221;)	||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;javascript:&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;go.microsoft.co&#8221;)			||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;hotmail.co&#8221;)					||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;cc.bingj.com&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;microsofttranslator.com&#8221;)	||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;.engkoo.com&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;sealinfo.verisign.com&#8221;)		||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;explabs.com&#8221;)				||<br />
		 searchshield.DoesURLContain(tag.href, &#8220;onlinehelp.microsoft.com&#8221;))<br />
	{<br />
		// not a link<br />
		return false;<br />
	}<br />
	else<br />
		return tag.href;<br />
};<br />
searchshield.BingSearchEngine.prototype.addImage = function(node, image, hidden)<br />
{<br />
	var element	= node.element;<br />
	var parentNode 	= node.element.parentNode;<br />
	var grandParentNode = !!parentNode ? parentNode.parentNode : null;</p>
<p>	// if there are redundant links in the same grandparent then skip them<br />
	if (!!grandParentNode)<br />
	{<br />
		gpChildren = grandParentNode.childNodes;<br />
		for (var i=0; i &lt; gpChildren.length; i++)<br />
		{<br />
			if (!!element.href &amp;&amp; gpChildren[i].tagName == &quot;A&quot; &amp;&amp; gpChildren[i].href == element.href)<br />
				return;<br />
		}<br />
	}</p>
<p>	var parent = searchshield.SearchEngine.prototype.addImage;<br />
	return parent.call(this, node, image, hidden);<br />
};<br />
///////////////    BING SEARCH ENGINE    ///////////////</p>
<p>///////////////    BAIDU SEARCH ENGINE    ///////////////<br />
searchshield.BaiduSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
};<br />
searchshield.BaiduSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.BaiduSearchEngine.prototype.constructor = searchshield.BaiduSearchEngine;<br />
searchshield.BaiduSearchEngine.prototype.name = &quot;baidu&quot;;<br />
searchshield.BaiduSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#039;undefined&#039; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var hostMatch	= false;<br />
	var domain		= uri.host;</p>
<p>	// re stitch the uri path and query elements to<br />
	// use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	if (domain == &quot;www.baidu.com&quot; || path.indexOf(&quot;testBaidu&quot;) !== -1)<br />
		hostMatch = true;</p>
<p>	if (hostMatch)<br />
	{<br />
		if (path.indexOf(&quot;s?&quot;) == 0)<br />
			return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.BaiduSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
		if (tag.className &amp;&amp; tag.className == &quot;m&quot;)<br />
			return false;</p>
<p>		if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
			return false;<br />
		else<br />
		{<br />
			// no link to self<br />
			var traverseElement = tag.parentNode;<br />
			while ( traverseElement &amp;&amp; traverseElement.className != &quot;tbody&quot;)<br />
			{<br />
				if (traverseElement.className == &quot;f&quot;)<br />
					return tag.href;</p>
<p>				traverseElement = traverseElement.parentNode;<br />
			}</p>
<p>			return false;<br />
		}</p>
<p>};<br />
searchshield.BaiduSearchEngine.prototype.addImage = function(node, image, hidden)<br />
{<br />
	this.addImageStyle = {<br />
		position: &quot;relative&quot;,<br />
		top: &quot;0.05em&quot;<br />
	};</p>
<p>	var parent = searchshield.SearchEngine.prototype.addImage;<br />
	return parent.call(this, node, image, hidden);<br />
};<br />
searchshield.BaiduSearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru)<br />
{<br />
	// remove style that is set when alt image is applied<br />
	this.updateImageStyle = {<br />
		verticalAlign: null<br />
	};</p>
<p>	var parent = searchshield.SearchEngine.prototype.updateImage;<br />
	return parent.call(this, hash, search, score, image, alt_image, flyover, click_thru, altClick_thru);<br />
};<br />
///////////////    BAIDU SEARCH ENGINE    ///////////////</p>
<p>///////////////    EARTHLINK SEARCH ENGINE    ///////////////<br />
searchshield.EarthlinkSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.onlyPrimaries = false;</p>
<p>	this.addAnchorStyle = {<br />
		position: &quot;static&quot;<br />
	};<br />
};<br />
searchshield.EarthlinkSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.EarthlinkSearchEngine.prototype.constructor = searchshield.EarthlinkSearchEngine;<br />
searchshield.EarthlinkSearchEngine.prototype.name = &quot;earthlink&quot;;<br />
searchshield.EarthlinkSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#039;undefined&#039; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var hostMatch	= false;<br />
	var domain		= uri.host;</p>
<p>	// re stitch the uri path and query elements to<br />
	// use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	// For EarthLink the host must match:<br />
	//	search.earthlink.net<br />
	if ((&quot;search.earthlink.net&quot; == domain)	&amp;&amp;<br />
		(path.indexOf(&quot;search?&quot;) == 0))<br />
	{<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.EarthlinkSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var outHref	= &quot;&quot;;<br />
	var findStr	= &quot;&quot;;</p>
<p>	// check for an anchor<br />
	if (tag.tagName == &quot;A&quot;)<br />
	{<br />
		// check for sponsored<br />
		if (tag.id.indexOf(&quot;a&quot;) == 0)<br />
		{<br />
			var q = tag.href.indexOf(&quot;&amp;q=&quot;);<br />
			var qlen = 3;<br />
			if (q == -1)<br />
			{<br />
				q = tag.href.indexOf(&quot;&amp;adurl=&quot;);<br />
				qlen = 7;<br />
				if (q == -1)<br />
					return false;<br />
			}</p>
<p>			// find end of url<br />
			var end = tag.href.indexOf(&quot;&amp;&quot;, q+qlen);<br />
			if (end &lt; 0)<br />
				end = tag.href.length;</p>
<p>			// add the link<br />
			outHref = tag.href.substring(q+qlen, end);</p>
<p>			if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
				return false;</p>
<p>			return outHref;<br />
		}</p>
<p>		// don&#039;t search url&#039;s to self<br />
		if ((tag.href.indexOf(&quot;://&quot;) == -1) || searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
			return false;</p>
<p>		// if a normal web result add it<br />
		if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == &quot;H3&quot;) &amp;&amp;<br />
			tag.parentNode.parentNode &amp;&amp; (tag.parentNode.parentNode.tagName == &quot;LI&quot;) &amp;&amp;<br />
			tag.parentNode.parentNode.parentNode &amp;&amp; (tag.parentNode.parentNode.parentNode.tagName == &quot;UL&quot;))<br />
		{<br />
			if (searchshield.FilterUrl(tag.href, this.filter_urls))<br />
				return false;</p>
<p>			return tag.href;<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
///////////////    EARTHLINK SEARCH ENGINE    ///////////////</p>
<p>///////////////    AOL SEARCH ENGINE    ///////////////<br />
searchshield.AOLSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);</p>
<p>	this.addImageStyle = {<br />
		display: &quot;inline&quot;<br />
	};<br />
	this.addAnchorStyle = {<br />
		display: null<br />
	};<br />
	this.updateImageStyle = {<br />
		verticalAlign: null,<br />
		display: &quot;inline&quot;<br />
	};<br />
};<br />
searchshield.AOLSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.AOLSearchEngine.prototype.constructor = searchshield.AOLSearchEngine;<br />
searchshield.AOLSearchEngine.prototype.name = &quot;aol&quot;;<br />
searchshield.AOLSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#039;undefined&#039; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain = uri.host;<br />
	//path may be &#039;aol/search&#039; or &#039;search&#039;<br />
	var pathArray = uri.path.split(&quot;/&quot;);<br />
	var aol = pathArray[0];<br />
	// re stitch the uri path and query elements<br />
	// to use existing logic<br />
	var path = (undefined == pathArray[1]) ? pathArray[0] : pathArray[1];<br />
		path += uri.delimiter + uri.query;</p>
<p>	if (&quot;search.aol.com&quot; == domain)<br />
	{<br />
		if ((aol == &quot;aol&quot;) &amp;&amp;<br />
			(path.indexOf(&quot;search?&quot;) == 0))<br />
		{<br />
			return true;<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.AOLSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
		return false;</p>
<p>	// sponsored links &#8211; google<br />
	if ((tag.className) &amp;&amp; (tag.className.indexOf(&quot;slLink&quot;) != -1))<br />
	{	//parse for embedded href</p>
<p>		if (tag.href.indexOf(&quot;/aclk?sa=&quot;) == -1)<br />
			return false;</p>
<p>		var adurl = tag.href.indexOf(&quot;&amp;adurl=http&quot;);<br />
		if (adurl != -1)<br />
		{<br />
			var urlPos = adurl+7; // puts it on the http<br />
			var outHref = tag.href.substring(urlPos);</p>
<p>			// extract any fragment text, do not unescape<br />
			var pound = outHref.indexOf(&quot;#&quot;);<br />
			if (pound != -1)<br />
			{<br />
				var fragment = outHref.substring(pound);<br />
				outHref = outHref.substring(0, pound);<br />
				outHref = unescape(outHref);<br />
				outHref += fragment;<br />
				if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
					return false;</p>
<p>				return outHref;<br />
			}</p>
<p>			outHref = unescape(outHref);<br />
			if (outHref.indexOf(&quot;?&quot;) == -1)<br />
			{<br />
				var ampPos = outHref.indexOf(&quot;&amp;&quot;);<br />
				if (ampPos != -1)<br />
					outHref = outHref.substring(0, ampPos);<br />
			}</p>
<p>			if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
				return false;</p>
<p>			return outHref;<br />
		}</p>
<p>		return false;<br />
	}</p>
<p>	if (tag.className == &quot;find&quot;)<br />
		return tag.href;</p>
<p>	return false;<br />
};<br />
searchshield.AOLSearchEngine.prototype.insertNodes = function(node, doc)<br />
{<br />
	var element = node.element;<br />
	var score = node.score;</p>
<p>	if (element &amp;&amp; element.className &amp;&amp; element.className.indexOf(&quot;slLink&quot;) != -1)<br />
	{	//sponsored links only</p>
<p>		// for alt image<br />
		if (score == searchshield.SCORE_SS_VERISIGN)<br />
			return [element.nextSibling, element.parentNode];</p>
<p>		// for verdict image<br />
		var cN = element.childNodes;<br />
		var cnLen = cN.length;<br />
		for (var i=0; i  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<br />
	// xx.altavista.com where xx is a country code<br />
	var hostMatch = false;<br />
	if (&#8220;www.altavista.com&#8221; == domain)<br />
	{<br />
		hostMatch = true;<br />
	}<br />
	else<br />
	{<br />
		// xx.altavista.com<br />
		var pDest = domain.indexOf(&#8220;.altavista.com&#8221;);<br />
		if ((pDest != -1 ) &amp;&amp; ((domain.length &#8211; pDest) == 14))<br />
		{<br />
			hostMatch = true;<br />
		}<br />
		else<br />
		{<br />
			// a reference to altavista must be present in yahoo search url<br />
			var pRef = (uri.qsArray.fr &amp;&amp; uri.qsArray.fr == &#8216;altavista&#8217;);<br />
			pDest = domain.indexOf(&#8220;search.yahoo.com&#8221;);<br />
			if (pDest != -1 &amp;&amp; pRef)<br />
				hostMatch = true;<br />
		}<br />
	}</p>
<p>	if (hostMatch)<br />
	{<br />
		//path must start with web/results?<br />
		if ((path.indexOf(&#8220;yhs/search?&#8221;) == 0)	||<br />
			(path.indexOf(&#8220;search;&#8221;) == 0)		||<br />
			(path.indexOf(&#8220;yhs/search;&#8221;) == 0)	||<br />
			(path.indexOf(&#8220;web/results?&#8221;) == 0)||<br />
			(path.indexOf(&#8220;fr=altavista&#8221;) != -1))<br />
		{<br />
			return true;<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.AltaVistaSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var outHref	= &#8220;&#8221;;<br />
	var findStr	= &#8220;&#8221;;</p>
<p>	// initial checks<br />
	if ((!tag.href)	||<br />
		(tag.href.charAt(0) == &#8216;#&#8217;) ||<br />
		(tag.href.indexOf(&#8220;javascript:&#8221;) == 0))<br />
	{<br />
		return false;<br />
	}</p>
<p>	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
		return false;</p>
<p>	if ((tag.className == &#8220;spt&#8221;) ||<br />
		(tag.className == &#8220;res&#8221;) ||<br />
		(tag.className == &#8220;yschttl spt&#8221;))<br />
	{<br />
		findStr = &#8220;/**&#8221;;<br />
		var pos = tag.href.indexOf(findStr);<br />
		if (pos != -1)<br />
		{<br />
			pos += 3;<br />
			outHref = tag.href.substring(pos);<br />
			outHref = unescape(outHref);</p>
<p>			// no results for overture.com &amp; no yahoo domains<br />
			chkHref = outHref.toLowerCase();<br />
			if (chkHref.indexOf(&#8220;overture.&#8221;) != -1)<br />
				return false;</p>
<p>			// split the url based on &#8216;/&#8217;<br />
			var parts = outHref.split(&#8216;/&#8217;);</p>
<p>			// only need a domain<br />
			if ((parts != null) &amp;&amp; (parts[2] != null))<br />
			{<br />
				var domain = parts[2];<br />
				if ((domain.indexOf(&#8220;rdrjp.yahoo.com&#8221;) != -1)	||<br />
					(domain.indexOf(&#8220;rdrkrs.yahoo.com&#8221;) != -1)	||<br />
					(domain.indexOf(&#8220;rdrtpe.yahoo.com&#8221;) != -1)	||<br />
					(domain.indexOf(&#8220;rdrird.yahoo.com&#8221;) != -1)	||<br />
					(domain.indexOf(&#8220;rdrhk2.yahoo.com&#8221;) != -1)	||<br />
					(domain.indexOf(&#8220;rdrsg1.yahoo.com&#8221;) != -1)	||<br />
					(domain.indexOf(&#8220;rdrin2.yahoo.com&#8221;) != -1)	||<br />
					(domain.indexOf(&#8220;rdre1.yahoo.com&#8221;) != -1)	||<br />
					(domain.indexOf(&#8220;rdrw1.yahoo.com&#8221;) != -1)		)<br />
				{<br />
					return false<br />
				}<br />
			}</p>
<p>			return outHref;<br />
		}<br />
		else<br />
		{<br />
			return tag.href;<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.AltaVistaSearchEngine.prototype.getImgElement = function (element)<br />
{<br />
	while (element != null)<br />
	{<br />
		element = element.nextSibling;<br />
		if (element != null)<br />
		{<br />
			if ((element.id == null) || (element.id.indexOf(&#8220;LXPLSS_&#8221;) == -1))<br />
			{   // not our id but hit another anchor no verdict<br />
				if (element.tagName == &#8220;A&#8221;)<br />
				{<br />
					element = null;<br />
					break;<br />
				}<br />
			}<br />
			else if (element.tagName == &#8220;A&#8221;)<br />
				break;<br />
		}<br />
 	}</p>
<p>	var rtnElem = !!element ? element.firstChild : element;<br />
	return rtnElem;<br />
};<br />
///////////////    ALTAVISTA SEARCH ENGINE    ///////////////</p>
<p>///////////////    YANDEX SEARCH ENGINE    ///////////////<br />
searchshield.YandexSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
};<br />
searchshield.YandexSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.YandexSearchEngine.prototype.constructor = searchshield.YandexSearchEngine;<br />
searchshield.YandexSearchEngine.prototype.name = &#8220;yandex&#8221;;<br />
searchshield.YandexSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain= uri.host;<br />
	// re stitch the uri path and query elements<br />
	// to use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	if (((domain.indexOf(&#8220;yandex.ru&#8221;) &gt; -1) ||<br />
		(domain.indexOf(&#8220;yandex.com&#8221;) &gt; -1)) &amp;&amp;<br />
		(path.indexOf(&#8220;yandsearch?&#8221;) == 0))<br />
	{<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.YandexSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	if (tag.href.indexOf(&#8220;/search&#8221;) != -1)<br />
	{<br />
		return false;<br />
	}</p>
<p>	if (searchshield.DoesURLContain(tag.href, this.search.uri.host)	||<br />
		searchshield.DoesURLContain(tag.href, &#8220;.yandex.net&#8221;)		||<br />
		searchshield.DoesURLContain(tag.href, &#8220;.yandex.ru&#8221;)			||<br />
		searchshield.DoesURLContain(tag.href, &#8220;moikrug.ru&#8221;)			||<br />
		searchshield.DoesURLContain(tag.href, &#8220;ya.ru&#8221;)				||<br />
		searchshield.DoesURLContain(tag.href, &#8220;.yandex.com&#8221;)		||<br />
		searchshield.DoesURLContain(tag.href, &#8220;yandex.st&#8221;))<br />
	{<br />
		return false;<br />
	}</p>
<p>	parentNode = tag.parentNode;<br />
	if ((tag.parentNode)			&amp;&amp;<br />
		(tag.parentNode.parentNode)	&amp;&amp;<br />
		(tag.parentNode.parentNode.className.toLowerCase() == &#8220;moreinfo&#8221;))<br />
	{<br />
		return false;<br />
	}</p>
<p>	return tag.href;<br />
};<br />
searchshield.YandexSearchEngine.prototype.getImgElement = function (element)<br />
{<br />
	while (element != null)<br />
	{<br />
		element = element.nextSibling;<br />
		if (element != null)<br />
		{<br />
			if ((element.id == null) || (element.id.indexOf(&#8220;LXPLSS_&#8221;) == -1))<br />
			{   // not our id but hit another anchor no verdict<br />
				if (element.tagName == &#8220;A&#8221;)<br />
				{<br />
					element = null;<br />
					break;<br />
				}<br />
			}<br />
			else if (element.tagName == &#8220;A&#8221;)<br />
				break;<br />
		}<br />
 	}</p>
<p>	var rtnElem = !!element ? element.firstChild : element;<br />
	return rtnElem;<br />
};<br />
///////////////    YANDEX SEARCH ENGINE    ///////////////</p>
<p>///////////////    SEZNAM SEARCH ENGINE    ///////////////<br />
searchshield.SeznamSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
};<br />
searchshield.SeznamSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.SeznamSearchEngine.prototype.constructor = searchshield.SeznamSearchEngine;<br />
searchshield.SeznamSearchEngine.prototype.name = &#8220;seznam&#8221;;<br />
searchshield.SeznamSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain= uri.host;<br />
	// re stitch the uri path and query elements<br />
	// to use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	if ((domain.indexOf(&#8220;search.seznam.cz&#8221;) &gt; -1)	&amp;&amp;<br />
		((path.indexOf(&#8220;?&#8221;) == 0) || (path.indexOf(&#8220;svet&#8221;) == 0)))<br />
	{<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.SeznamSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
		return false;</p>
<p>	var parentNode = tag.parentNode;<br />
	if (parentNode)<br />
	{<br />
		var grandParentNode = tag.parentNode.parentNode;<br />
		if ((parentNode.tagName == &#8220;SPAN&#8221;) &amp;&amp;<br />
			((parentNode.className.toLowerCase() == &#8220;sklik-url&#8221;) ||<br />
			(parentNode.className.toLowerCase() == &#8220;sklik-title&#8221;)))<br />
		{	// locate the real url and unencode it<br />
			var urlPos = tag.href.indexOf(&#8220;&amp;url=http&#8221;);</p>
<p>			if (urlPos != -1)<br />
			{<br />
				urlPos += 5;<br />
				outHref = tag.href.substring(urlPos);<br />
				outHref = unescape(outHref);</p>
<p>				return outHref;<br />
			}<br />
		}<br />
		else if (grandParentNode)<br />
		{<br />
			var greatGrandParentNode = tag.parentNode.parentNode.parentNode;<br />
			if ((grandParentNode.tagName == &#8220;DIV&#8221;) &amp;&amp;<br />
				((grandParentNode.className.toLowerCase() == &#8220;text&#8221;) || (grandParentNode.className.toLowerCase() == &#8220;hlasky otz&#8221;)))<br />
			{	// standard link<br />
				return tag.href;<br />
			}<br />
			else if (greatGrandParentNode &amp;&amp; greatGrandParentNode.tagName == &#8220;DIV&#8221; &amp;&amp;<br />
					(greatGrandParentNode.className.toLowerCase() == &#8220;hotlinks&#8221;))<br />
			{	// hint link<br />
				return tag.href;<br />
			}</p>
<p>		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.SeznamSearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru)<br />
{<br />
	this.elementAttribute = {<br />
		width: &#8220;18&#8243;,<br />
		height: &#8220;18&#8243;<br />
	};</p>
<p>	this.updateImageStyle = {<br />
		width: &#8220;18px&#8221;,<br />
		height: &#8220;18px&#8221;<br />
	};</p>
<p>	var parent = searchshield.SearchEngine.prototype.updateImage;<br />
	return parent.call(this, hash, search, score, image, alt_image, flyover, click_thru, altClick_thru);<br />
};<br />
///////////////    SEZNAM SEARCH ENGINE    ///////////////</p>
<p>///////////////    WEBHLEDANI SEARCH ENGINE    ///////////////<br />
searchshield.WebhledaniSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
};<br />
searchshield.WebhledaniSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.WebhledaniSearchEngine.prototype.constructor = searchshield.WebhledaniSearchEngine;<br />
searchshield.WebhledaniSearchEngine.prototype.name = &#8220;webhledani&#8221;;<br />
searchshield.WebhledaniSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain= uri.host;<br />
	// re stitch the uri path and query elements<br />
	// to use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	if ((domain.indexOf(&#8220;webhledani.cz&#8221;) &gt; -1)	&amp;&amp;<br />
		(path.indexOf(&#8220;results.aspx?&#8221;) == 0))<br />
	{<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.WebhledaniSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var parentNode = tag.parentNode;</p>
<p>	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
	{<br />
		if ( tag.href.indexOf(&#8220;/redir.aspx?&#8221;) != -1)<br />
		{<br />
			attrNode = tag.attributes;<br />
			if ( attrNode == null )<br />
				return false;</p>
<p>			var outHref = attrNode.getNamedItem(&#8220;onmouseover&#8221;).nodeValue;<br />
			if ( outHref == null )<br />
				return false;</p>
<p>			var findStr = &#8220;window.status=&#8221;;<br />
			if (outHref.indexOf(findStr)!= -1)<br />
			{<br />
				// get text before first semicolon<br />
				var semicolon = outHref.indexOf(&#8220;;&#8221;);<br />
				if (semicolon &gt; -1)<br />
					outHref = outHref.substring(findStr.length, semicolon);</p>
<p>				// strip quotation marks<br />
				outHref = outHref.replace(/['"]/g, &#8220;&#8221;);</p>
<p>				var space = outHref.indexOf(&#8221; &#8220;);<br />
				var firstDot = outHref.indexOf(&#8220;.&#8221;);</p>
<p>				if ((space &gt; -1) &amp;&amp; (space &lt; firstDot))<br />
					outHref = outHref.substring(space+1);</p>
<p>				outHref = searchshield.checkUrl(outHref);<br />
				return outHref;<br />
			}<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.WebhledaniSearchEngine.prototype.insertNodes = function(node, doc)<br />
{<br />
	var element = node.element;<br />
	var score = node.score;</p>
<p>	// for alt image<br />
	if (score == searchshield.SCORE_SS_VERISIGN)<br />
		return [element.nextSibling, element.parentNode];</p>
<p>	// for verdict image<br />
	var cN = element.childNodes;<br />
	var cnLen = cN.length;<br />
	for (var i=0; i  -1)	||<br />
		(domain.indexOf(&#8220;shop.benl.ebay&#8221;) &gt; -1))<br />
	{<br />
		if ((path.indexOf(&#8220;?_from=&#8221;) == 0)	||<br />
			(path.indexOf(&#8220;i.html&#8221;) &gt; -1))<br />
		{<br />
			return true;<br />
		}<br />
	}</p>
<p>	// ebay.se<br />
	if ((domain.indexOf(&#8220;search.eim.ebay&#8221;) &gt; -1) &amp;&amp;<br />
		((path.indexOf(&#8220;?kw=&#8221;) &gt; -1) || (path.indexOf(&#8220;?ev=&#8221;) &gt; -1)))<br />
	{<br />
		return true;<br />
	}</p>
<p>	if ((domain.indexOf(&#8220;search.auction.co.kr&#8221;) &gt; -1 ) &amp;&amp;<br />
		((path.indexOf(&#8220;?keyword=&#8221;) &gt; -1)))<br />
	{<br />
		// would normally set these properties in the constructor or in an<br />
		// overriding function but they&#8217;re only required for this domain</p>
<p>		// links are in iframes<br />
		this.processFrames = true;</p>
<p>		// must downsize verdicts for proper display<br />
		this.elementAttribute = {<br />
			width: &#8220;16&#8243;,<br />
			height: &#8220;16&#8243;<br />
		};<br />
		this.updateImageStyle = {<br />
			width: &#8220;16px&#8221;,<br />
			height: &#8220;16px&#8221;<br />
		};</p>
<p>		return true;<br />
	}</p>
<p>	// latin america ebay<br />
	// listado.mercadolibre.com.xx or listado.mercadolibre.co.xx<br />
	//   or listado.mercadolibre.xx or<br />
	//   category.mercadolibre.com.xx or listado.mercadolibre.xx/category<br />
	// lista.mercadolivre.com.xx or lista.mercadolivre.com.xx/category<br />
	if ((domain.indexOf(&#8220;www.&#8221;) == -1) &amp;&amp;<br />
		((domain.indexOf(&#8220;.mercadolibre.&#8221;) &gt; -1 ) ||<br />
		 (domain.indexOf(&#8220;.mercadolivre.&#8221;) &gt; -1 )))<br />
	{<br />
		return true;<br />
	}<br />
	return false;<br />
};<br />
searchshield.eBaySearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var parentNode = null;<br />
	var outHref = false;</p>
<p>	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
		return false;</p>
<p>	if ( tag.href.indexOf(&#8220;.ebayrtm.com/clk?&#8221;) &gt; -1 )<br />
	{<br />
		if ( tag.title == null || tag.title.length  -1)<br />
			{	// at least one dot<br />
				if (outHref.indexOf(this.search.uri.host) == -1)<br />
				{	// no host<br />
					if (outHref.toLowerCase().indexOf(&#8220;ebay.com&#8221;) == -1)<br />
					{<br />
						return outHref;<br />
					}<br />
				}<br />
			}<br />
		}<br />
	}<br />
	// ebay.se &#8211; Google ads<br />
	parentNode = tag.parentNode;<br />
	if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == &#8220;google-ad-link&#8221;))<br />
	{<br />
		if (tag.href.indexOf(&#8220;/aclk?sa=&#8221;) != -1)<br />
		{<br />
			findStr = &#8220;&amp;adurl=http&#8221;;<br />
			var urlPos	= tag.href.indexOf(findStr);<br />
			if (urlPos != -1)<br />
			{<br />
				urlPos += 7; // puts it on the http<br />
				outHref = tag.href.substring(urlPos);</p>
<p>				// extract any fragment text, shouldn&#8217;t be unescaped<br />
				var pound = outHref.indexOf(&#8220;#&#8221;);<br />
				if (pound != -1)<br />
				{<br />
					var fragment = outHref.substring(pound);<br />
					outHref = outHref.substring(0, pound);<br />
					outHref = unescape(outHref);<br />
					outHref += fragment;<br />
					if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
						return false;</p>
<p>					return outHref;<br />
				}</p>
<p>				outHref = unescape(outHref);<br />
				if (outHref.indexOf(&#8220;?&#8221;) == -1)<br />
				{<br />
					var ampPos = outHref.indexOf(&#8220;&amp;&#8221;);<br />
					if (ampPos != -1)<br />
						outHref = outHref.substring(0, ampPos);<br />
				}</p>
<p>				if (searchshield.FilterUrl(outHref, this.filter_urls))<br />
					return false;<br />
				return outHref;<br />
			}<br />
		}<br />
	}</p>
<p>	// auction.co.kr<br />
	parentNode = tag.parentNode;<br />
	if (parentNode &amp;&amp; (parentNode.className.toLowerCase() == &#8220;link&#8221;))<br />
	{<br />
		if (tag.href.indexOf(&#8220;adcr.naver.com&#8221;) &gt; -1)<br />
		{<br />
			outHref = tag.innerText;<br />
			if ((outHref == null) || (outHref.length  -1 )<br />
	{<br />
		var spanElements = tag.getElementsByTagName(&#8220;span&#8221;);<br />
		if ((spanElements != null)				&amp;&amp;<br />
			(spanElements.length &gt; 0))<br />
		{<br />
			if ( spanElements[0].className.toLowerCase() == &#8220;mclics-url&#8221; )<br />
			{<br />
				outHref = spanElements[0].innerHTML;<br />
				if ( outHref == null || outHref.length  -1)<br />
					{	// at least one dot<br />
						if ((outHref.toLowerCase().indexOf(&#8220;mercadolibre&#8221;) == -1) &amp;&amp;<br />
						    (outHref.toLowerCase().indexOf(&#8220;mercadolivre&#8221;) == -1))<br />
						{<br />
							return outHref;<br />
						}<br />
					}<br />
				}<br />
			}<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
///////////////    EBAY SEARCH ENGINE    ///////////////</p>
<p>///////////////    DIGG SEARCH ENGINE    ///////////////<br />
searchshield.DiggSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.new_links	= false;<br />
};<br />
searchshield.DiggSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.DiggSearchEngine.prototype.constructor = searchshield.DiggSearchEngine;<br />
searchshield.DiggSearchEngine.prototype.name = &#8220;digg&#8221;;<br />
searchshield.DiggSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain= uri.host;<br />
	// re stitch the uri path and query elements<br />
	// to use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	if ((domain.indexOf(&#8220;digg.com&#8221;) &gt; -1)	&amp;&amp;<br />
		(path.indexOf(&#8220;/ad&#8221;) == -1))<br />
	{<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.DiggSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	var outHref = false;<br />
	var findStr = &#8220;&#8221;;</p>
<p>	if ((tag.parentNode) &amp;&amp;<br />
		(tag.parentNode.className.toLowerCase() == &#8220;digg-count&#8221;))<br />
	{<br />
		return false;<br />
	}</p>
<p>	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
	{<br />
		if (tag.className &amp;&amp; tag.className.indexOf(&#8216;source&#8217;) != -1)<br />
		{<br />
			findStr = &#8220;/search?q=site:&#8221;;<br />
			var urlPos = tag.href.indexOf(findStr);<br />
			if (urlPos != -1)<br />
			{<br />
				urlPos += 15;<br />
				outHref = tag.href.substring(urlPos);<br />
				return outHref;<br />
			}<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.DiggSearchEngine.prototype.addImage = function(node, image, hidden)<br />
{<br />
	// remove style that is set when alt image is applied<br />
	this.addAnchorStyle = {<br />
		background: &#8220;none&#8221;<br />
	};</p>
<p>	var parent = searchshield.SearchEngine.prototype.addImage;<br />
	return parent.call(this, node, image, hidden);<br />
};<br />
///////////////    DIGG SEARCH ENGINE    ///////////////</p>
<p>///////////////    SLASHDOT SEARCH ENGINE    ///////////////<br />
searchshield.SlashdotSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.showCleanVerdicts = false;<br />
	this.new_links = false;<br />
	this.type = &#8216;inline&#8217;;<br />
};<br />
searchshield.SlashdotSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.SlashdotSearchEngine.prototype.constructor = searchshield.SlashdotSearchEngine;<br />
searchshield.SlashdotSearchEngine.prototype.name = &#8220;slashdot&#8221;;<br />
searchshield.SlashdotSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain= uri.host;<br />
	// re stitch the uri path and query elements<br />
	// to use existing logic<br />
	var path = uri.path + uri.delimiter + uri.query;</p>
<p>	if (domain.indexOf(&#8220;slashdot.org&#8221;) != -1)<br />
	{<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.SlashdotSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
		return false;</p>
<p>	if ( tag.href.indexOf(&#8220;mailto:&#8221;) != -1 )<br />
		return false;</p>
<p>	if ( tag.href.indexOf(&#8220;slashdot.org&#8221;) != -1 )<br />
		return false;</p>
<p>	if (tag.parentNode &amp;&amp; (tag.parentNode.tagName == &#8220;DIV&#8221;))<br />
	{<br />
		if (tag.parentNode.id.indexOf(&#8220;text-&#8221;) != -1)<br />
		{<br />
			return tag.href;<br />
		}<br />
	}<br />
	else if ( tag.parentNode &amp;&amp; tag.parentNode.parentNode &amp;&amp; tag.parentNode.parentNode.tagName == &#8220;DIV&#8221; )<br />
	{<br />
		if ( tag.parentNode.parentNode.id.indexOf(&#8220;text-&#8221;) != -1 )<br />
		{<br />
			return tag.href;<br />
		}<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.SlashdotSearchEngine.prototype.addImage = function(node, image, hidden)<br />
{<br />
	var doc			= this.search.doc;</p>
<p>	this.init_inline_ratings(doc);<br />
	this.show_inline_ratings(doc, node, image);<br />
};<br />
///////////////    SLASHDOT SEARCH ENGINE    ///////////////</p>
<p>///////////////    TWITTER SEARCH ENGINE    ///////////////<br />
searchshield.TwitterSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.showCleanVerdicts = false;<br />
	this.new_links = false;<br />
	this.type = &#8216;inline&#8217;;<br />
};<br />
searchshield.TwitterSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.TwitterSearchEngine.prototype.constructor = searchshield.TwitterSearchEngine;<br />
searchshield.TwitterSearchEngine.prototype.name = &#8220;twitter&#8221;;<br />
searchshield.TwitterSearchEngine.prototype.twitter_filter_urls = ["twitpic.com", "twitterfeed.com", "twitter.peoplebrowsr.com"];<br />
searchshield.TwitterSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	var domain= uri.host;</p>
<p>	if (domain.indexOf(&#8220;twitter.com&#8221;) != -1)<br />
	{<br />
		return true;<br />
	}</p>
<p>	return false;<br />
};<br />
searchshield.TwitterSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	if (searchshield.DoesURLContain(tag.href, this.search.uri.host))<br />
		return false;</p>
<p>	if (tag.className.length = 4))<br />
	{<br />
		// else we want the fourth value<br />
		var match = matches[3];<br />
		if (match &amp;&amp; (match.length &gt; 0))<br />
			return match<br />
	}</p>
<p>	return href;<br />
};<br />
///////////////    GMAIL SEARCH ENGINE    ///////////////</p>
<p>///////////////    FACEBOOK SEARCH ENGINE    ///////////////<br />
searchshield.FacebookSearchEngine = function(search)<br />
{<br />
	searchshield.SearchEngine.call(this, search);<br />
	this.showCleanVerdicts = false;<br />
	this.type = &#8216;inline&#8217;<br />
};<br />
searchshield.FacebookSearchEngine.prototype = new searchshield.SearchEngine();<br />
searchshield.FacebookSearchEngine.prototype.constructor = searchshield.FacebookSearchEngine;<br />
searchshield.FacebookSearchEngine.prototype.name = &#8220;facebook&#8221;;	// the name by which the search engine is known (always lowercase)<br />
searchshield.FacebookSearchEngine.prototype.validSearch = function(href)<br />
{<br />
	var uri;<br />
	if (typeof(this.search) === &#8216;undefined&#8217; || null === this.search)<br />
		uri = searchshield.parseLink(href);<br />
	else<br />
		uri = this.search.uri;</p>
<p>	if(!uri || !uri.host)<br />
		return false;</p>
<p>	if (uri.host.indexOf(&#8220;www.facebook.com&#8221;) != -1)<br />
		return true;</p>
<p>	return false;<br />
};<br />
searchshield.FacebookSearchEngine.prototype.includeLink = function(tag)<br />
{<br />
	if (searchshield.DoesURLContain(tag.href, this.search.uri.host) ||<br />
		(searchshield.DoesURLContain(tag.href, &#8216;static.ak.fbcdn.net&#8217;)))<br />
	{<br />
		return false;<br />
	}</p>
<p>	// don&#8217;t put verdicts in areas where typing is going on<br />
	if (tag.parentNode)<br />
	{<br />
		var parentDiv = searchshield.getParentNodeByTagName(&#8220;DIV&#8221;, tag, &#8220;className&#8221;);<br />
		if (parentDiv &amp;&amp;<br />
			(parentDiv.className == &#8220;Mentions_Input&#8221;) ||<br />
			(parentDiv.className.indexOf(&#8216;UIThumbPager_&#8217;) != -1))<br />
		{<br />
			return false;<br />
		}<br />
	}</p>
<p>	return tag.href<br />
};<br />
searchshield.FacebookSearchEngine.prototype.addImage = function(node, image, hidden)<br />
{<br />
	var doc			= this.search.doc;</p>
<p>	this.init_inline_ratings(doc);<br />
	this.show_inline_ratings(doc, node, image);<br />
};<br />
///////////////    FACEBOOK SEARCH ENGINE    ///////////////</p>
<p>///////////////    AVG TOOLBAR REPORTING    ///////////////<br />
var avgreport = {<br />
	BLOCK_SEVERITY: 3,<br />
	scanResult: function (doc, url, foundUrl, ip) {<br />
		// report scan end only if surf enabled<br />
		if (&#8217;1&#8242; != searchshield.avgCallFunc(doc, &#8216;GetSurfEnabled&#8217;))<br />
			return;</p>
<p>		// for now native is handling the interstitial<br />
		var results = searchshield.avgCallFunc(doc, &#8216;MalsiteCheck&#8217;, url);<br />
		if ( results == null )<br />
			return;</p>
<p>		var parts = results.split(&#8216;::&#8217;);</p>
<p>		// need at least severity<br />
		if (parts == null)<br />
			return;</p>
<p>		if (!ip)<br />
			ip = &#8220;&#8221;;</p>
<p>		// use a block severity if foundUrl is given<br />
		var severity = !!foundUrl ? avgreport.BLOCK_SEVERITY : parseInt(parts[0], 10);<br />
		var category = &#8220;&#8221;;<br />
		var threat	 = &#8220;&#8221;;</p>
<p>		// fill in the category and threat if something was found<br />
		if (severity &gt; 0)<br />
		{<br />
			category = parts[2];<br />
			threat	 = parts[4];<br />
		}<br />
//		else<br />
//			return;</p>
<p>		var scan_result = searchshield.avgCallFunc(doc, &#8216;ReportScanResult&#8217;, url, url, threat, category, ip, severity);<br />
		var scan_end = avgreport.scanEnd(doc, url);</p>
<p>		return (scan_result &amp;&amp; scan_end);<br />
	},<br />
	scanEnd: function (doc, url) {<br />
		return searchshield.avgCallFunc(doc, &#8216;ReportScanEnd&#8217;, url);<br />
	},<br />
	GetInterstitialIP: function (interstitial) {<br />
		// simple regex to pull the IP address<br />
		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)/;<br />
		var match = regex.exec(interstitial);<br />
		if (!match)<br />
			return &#8221;;</p>
<p>		return match[0];<br />
	}<br />
}<br />
///////////////    AVG TOOLBAR REPORTING    ///////////////</p>
<p>///////////////    FLYOVERS    ///////////////<br />
var avglsflyover = {<br />
	count: 0,<br />
	poppedUp: false,<br />
	poppedElement: null,<br />
	orig_onmousemove: null,<br />
	reset: function () {<br />
		avglsflyover.count = 0;<br />
		avglsflyover.poppedUp = false;<br />
		avglsflyover.poppedElement = null;<br />
		avglsflyover.orig_onmousemove = null;<br />
	},<br />
	popup: function (event, hash, search, flyover) {<br />
		if (!event)<br />
			event = window.event;</p>
<p>		var div = document.getElementById(&#8220;XPLSS_Flyover&#8221;);<br />
		if (div == null)<br />
			return;</p>
<p>		// establish target element and get its containing document object<br />
		// in case verdict is inside a frame<br />
		var eventTarget = event.srcElement || event.currentTarget;<br />
		var frameDoc = eventTarget.ownerDocument;</p>
<p>		// if the element is the clock, don&#8217;t pop over it<br />
		if ((eventTarget.src != null) &amp;&amp; (eventTarget.src.indexOf(&#8220;clock.gif&#8221;) != -1))<br />
			return;</p>
<p>		// save the element we popped over<br />
		avglsflyover.poppedElement = eventTarget;</p>
<p>		// if no flyover get it<br />
		if ((flyover == null) || (flyover == &#8220;&#8221;))<br />
		{<br />
			flyover = searchshield.avgCallFunc(frameDoc, &#8216;BuildFlyover&#8217;, hash);</p>
<p>			if (!flyover)<br />
				return;</p>
<p>			// cleanup flyover, replace any new lines<br />
			flyover = flyover.replace(/\r/g, &#8220;&#8221;);<br />
			flyover = flyover.replace(/\n/g, &#8220;&#8221;);<br />
			// escape any single quotes<br />
			flyover = flyover.replace(/&#8217;/g, &#8220;&#039;&#8221;);<br />
		}</p>
<p>		// set the html in the layer<br />
		div.innerHTML = flyover;</p>
<p>		// there is an unwanted text node that causes vertical misalignment of flyover<br />
		if (div.firstChild.nodeType == 3)<br />
			div.removeChild(div.firstChild);</p>
<p>		avglsflyover.poppedUp = true;</p>
<p>		// reset display count<br />
		avglsflyover.count = 0;</p>
<p>		div.onmouseout = avglsflyover.hide;</p>
<p>		// if an onmousemove is already set and it isn&#8217;t us, save it and restore later<br />
		if ((frameDoc.onmousemove != null) &amp;&amp; (frameDoc.onmousemove != avglsflyover.position))<br />
			avglsflyover.orig_onmousemove = frameDoc.onmousemove;<br />
		frameDoc.onmousemove = avglsflyover.position;<br />
	},<br />
	hide: function (event, force) {<br />
		var div = document.getElementById(&#8220;XPLSS_Flyover&#8221;);<br />
		if ((div == null) || (div.style == null) || (div.style.visibility == &#8220;hidden&#8221;))<br />
			return;</p>
<p>		var trans_div = document.getElementById(&#8220;XPLSS_Trans&#8221;);<br />
		if ((trans_div == null) || (trans_div.style == null) || (trans_div.style.visibility == &#8220;hidden&#8221;))<br />
			return;</p>
<p>		if (!!force)<br />
			return setFlyoverStyle(div, trans_div);</p>
<p>		if (!event)<br />
			event = window.event;</p>
<p>		// establish target element and get its containing document object<br />
		// in case verdict is inside a frame<br />
		var eventTarget = event.srcElement || event.currentTarget;<br />
		var frameDoc = eventTarget.ownerDocument;</p>
<p>		// restore onmousemove<br />
		if (avglsflyover.orig_onmousemove != null)<br />
			frameDoc.onmousemove = avglsflyover.orig_onmousemove;</p>
<p>		if (avglsflyover.poppedElement)<br />
			avglsflyover.poppedElement.style.border = &#8220;&#8221;;</p>
<p>		var relatedElement = event.toElement;<br />
		if (!relatedElement)<br />
		{	//this happens on mouseout when verdict and flyover are on different frames/docs<br />
			window.top.document.detachEvent(&#8216;onmouseout&#8217;, avglsflyover.hide);<br />
			window.top.document.attachEvent(&#8216;onmouseout&#8217;, avglsflyover.hide);<br />
			return;<br />
		}</p>
<p>		// make sure we aren&#8217;t still over the popped image or our layer<br />
		if (searchshield.containedIn(avglsflyover.poppedElement, relatedElement) ||<br />
			searchshield.containedIn(div, relatedElement) ||<br />
			searchshield.containedIn(trans_div, relatedElement))<br />
		{<br />
			return;<br />
		}</p>
<p>		setFlyoverStyle();</p>
<p>		// hide and move somewhere off screen (negative offsets)<br />
		function setFlyoverStyle()<br />
		{<br />
			div.style.visibility = &#8220;hidden&#8221;;<br />
			div.style.left = &#8220;-2100px&#8221;;<br />
			div.style.top  = &#8220;-2100px&#8221;;<br />
			trans_div.style.visibility = &#8220;hidden&#8221;;<br />
			trans_div.style.left = &#8220;-2100px&#8221;;<br />
			trans_div.style.top  = &#8220;-2100px&#8221;;</p>
<p>			return true;<br />
		}<br />
	},<br />
	position: function () {<br />
		if (!avglsflyover.poppedUp || (avglsflyover.poppedElement == null))<br />
			return;</p>
<p>		var flyover = document.getElementById(&#8220;XPLSS_Flyover&#8221;);<br />
		if (flyover == null)<br />
			return;</p>
<p>		// relative position of flyover in relation to icon<br />
		var locateX = 0;  // 0=left, 1=right<br />
		var locateY = 0;  // 0=above, 1=below, 2=beside icon</p>
<p>		// get window sizes<br />
		var winSize		= searchshield.viewPortSize();<br />
		var windowX		= winSize[0];<br />
		var windowY		= winSize[1];</p>
<p>		// get the exact size of the flyover<br />
		var flyoverSize	 = searchshield.elementSize(flyover);<br />
		var flyoverX	 = flyoverSize[0];<br />
		var flyoverY	 = flyoverSize[1];</p>
<p>		var verdictWidth = 0;<br />
		if (avglsflyover.poppedElement &amp;&amp; avglsflyover.poppedElement.width)<br />
			verdictWidth = avglsflyover.poppedElement.width;</p>
<p>		// get the bounding rect for image(s)<br />
		var imgRect = searchshield.GetFullBoundingRect(avglsflyover.poppedElement);</p>
<p>		// half width/height of element bounding rect<br />
		var halfX = (imgRect.right &#8211; imgRect.left) / 2;<br />
		var halfY = (imgRect.bottom- imgRect.top) / 2;</p>
<p>		// element the mouse is over, get the center position<br />
		var posX = searchshield.offsetLeft(avglsflyover.poppedElement) + halfX;<br />
		var posY = searchshield.offsetTop(avglsflyover.poppedElement) + halfY;</p>
<p>		// if a verdict is inside a frame must get offsets for the frame element<br />
		var docFrames = document.frames;<br />
		if (docFrames)<br />
		{<br />
			for (var i=0; i  posX)<br />
		{<br />
			// right<br />
			offsetX += halfX;<br />
			locateX = 1;<br />
		}<br />
		else<br />
		{<br />
			//left<br />
			offsetX -= (flyoverX + halfX);<br />
		}<br />
		if ((windowY &#8211; posY) &gt; posY)<br />
		{<br />
			// below<br />
			if (posY &lt; (windowY/4))<br />
			{<br />
				offsetY -= halfY;<br />
				locateY = 1;<br />
			}<br />
			else<br />
			{<br />
				offsetY -= (flyoverY / 2);<br />
				locateY = 2;<br />
			}<br />
		}<br />
		else<br />
		{<br />
			// above<br />
			if ((windowY &#8211; posY) &lt; (windowY/4))<br />
			{<br />
				offsetY -= (flyoverY &#8211; halfY);<br />
			}<br />
			else<br />
			{<br />
				offsetY -= (flyoverY / 2);<br />
				locateY = 2;<br />
			}<br />
		}<br />
		// make sure we aren&#039;t off the screen<br />
		if (offsetY  windowY)<br />
			offsetY = windowY &#8211; flyoverY;</p>
<p>		// add page offsets back<br />
		offsetX += pageOffsetX;<br />
		offsetY += pageOffsetY;<br />
		posX += pageOffsetX;<br />
		posY += pageOffsetY;</p>
<p>		var paddedOffsetX = 0; //provide space between icon and flyover<br />
		var padX = 3;<br />
		if (locateX == 0)<br />
			paddedOffsetX = offsetX &#8211; padX;<br />
		else<br />
			paddedOffsetX = offsetX + padX;</p>
<p>		// set where to put the flyover<br />
		flyover.style.top = offsetY + &#8220;px&#8221;;<br />
		flyover.style.left = paddedOffsetX + &#8220;px&#8221;;</p>
<p>		// set where to put the transparent layer<br />
		var trans = document.getElementById(&#8220;XPLSS_Trans&#8221;);<br />
		if (trans != null)<br />
		{<br />
			var trans_left = 0;<br />
			var trans_top  = 0;<br />
			var trans_width= 0;<br />
			var trans_height = 0;</p>
<p>			// transparent layer should overlap verdict image<br />
			if (locateX == 0)<br />
				trans_left = posX &#8211; flyoverX &#8211; halfX;  // left<br />
			else<br />
				trans_left = posX &#8211; transXOffset &#8211; verdictWidth; // right</p>
<p>			trans.style.left	= trans_left + &#8220;px&#8221;;<br />
			trans.style.top		= offsetY + &#8220;px&#8221;;</p>
<p>			trans.style.width	= flyoverX + &#8220;px&#8221;;<br />
			trans.style.height	= flyoverY + &#8220;px&#8221;;<br />
		}</p>
<p>		avglsflyover.display();<br />
	},<br />
	display: function () {<br />
		avglsflyover.count++;<br />
		if (avglsflyover.count == 1)<br />
		{<br />
			var flyover = document.getElementById(&#8220;XPLSS_Flyover&#8221;);<br />
			if (flyover == null)<br />
				return;</p>
<p>			// show the flyover, must use a little count to tell, crazy stuff<br />
			flyover.style.visibility = &#8220;visible&#8221;;</p>
<p>			// show the transparent layer<br />
			var trans_div = document.getElementById(&#8220;XPLSS_Trans&#8221;);<br />
			if (trans_div == null)<br />
				return;</p>
<p>			trans_div.style.visibility = &#8220;visible&#8221;;</p>
<p>			avglsflyover.poppedUp = false;<br />
		}<br />
	},<br />
	show: function () {<br />
		var div = document.getElementById(&#8220;XPLSS_Flyover&#8221;);<br />
		if (div == null)<br />
			return;</p>
<p>		div.style.visibility = &#8220;visible&#8221;;</p>
<p>		var trans_div = document.getElementById(&#8220;XPLSS_Trans&#8221;);<br />
		if (trans_div == null)<br />
			return;<br />
		trans_div.style.visible = &#8220;visible&#8221;;<br />
	}<br />
};</p>
<p>var avglsinlineflyover = {<br />
	build: function (riskCategory, riskName, bgColor, borderColor) {<br />
		var html = &#8221;;<br />
		html += &#8220;</p>
<div>&#8220;;<br />
		html += &#8220;<br />
&#8220;;<br />
		html += riskCategory + &#8220;<br />
&#8220;;<br />
		html += riskName + &#8221;
</div>
<p>&#8220;;</p>
<p>		return html;<br />
	},<br />
	popup: function (event, flyover, blUrl) {<br />
		//set verdict info<br />
		var div = document.getElementById(&#8216;XPLSS_InlineFlyover&#8217;);<br />
		if (div == null)<br />
			return;</p>
<p>		// blUrl is an object for a blacklisted short url<br />
		// when it is passed get the final url<br />
		if (blUrl != undefined)<br />
		{<br />
			var finalUrl = searchshield.avgCallFunc(document, &#8216;GetFinalUrl&#8217;, blUrl.sUrl);<br />
			var uri = searchshield.parseLink(unescape(finalUrl));<br />
			if (uri.source != null)<br />
			{	// regexp failed so used split to parse url<br />
				var qsUrl = uri.source.indexOf(&#8220;?url=&#8221;);<br />
				if (qsUrl != -1)<br />
					riskName = blUrl.riskNameLabel + uri.source.substring(qsUrl + 5);<br />
				else<br />
					riskName = blUrl.riskNameLabel + uri.source;<br />
			}<br />
			else if ((uri.qsArray.url != null) &amp;&amp; (uri.qsArray.url.length &gt; 0))<br />
			{<br />
				riskName = blUrl.riskNameLabel + uri.qsArray.url;<br />
			}<br />
			else<br />
				riskName = blUrl.riskNameLabel + blUrl.sUrl</p>
<p>			flyover = avglsinlineflyover.build(blUrl.riskCategory, riskName, blUrl.bgColor, blUrl.borderColor);<br />
		}</p>
<p>		div.innerHTML = flyover;<br />
		div.style.width = &#8220;auto&#8221;;  //reset width<br />
		div.style.position = &#8220;absolute&#8221;;</p>
<p>		if (!event)<br />
			event = window.event;</p>
<p>		var eventTarget = event.srcElement;<br />
		avglsinlineflyover.position(eventTarget);<br />
	},<br />
	hide: function (event) {<br />
		if (!event)<br />
			event = window.event;</p>
<p>		var div = document.getElementById(&#8220;XPLSS_InlineFlyover&#8221;);<br />
		if (div == null)<br />
			return;</p>
<p>		div.visibility = &#8220;hidden&#8221;;	//invisible<br />
		div.style.left = &#8220;-5000px&#8221;;<br />
	},<br />
	position: function (imageElem) {<br />
		var flyover = document.getElementById(&#8216;XPLSS_InlineFlyover&#8217;);<br />
		if (flyover == null)<br />
			return;</p>
<p>		// relative position of flyover in relation to icon<br />
		var locateX = 0;  // 0=left, 1=right<br />
		var locateY = 0;  // 0=above, 1=below, 2=beside icon</p>
<p>		// get window sizes<br />
		var winSize	 = searchshield.viewPortSize();<br />
		var windowX	 = winSize[0];<br />
		var windowY	 = winSize[1];</p>
<p>		// Must know if there is a horizontal scroll bar for Firefox<br />
		// for proper flyover positioning near bottom edge<br />
		var scrollYWidth	 = winSize[2];<br />
		var scrollBarX	 = winSize[2] &gt; 0 ? true : false;</p>
<p>		// get the exact size of the flyover<br />
		var flyoverSize	 = searchshield.elementSize(flyover);<br />
		var flyoverX	 = flyoverSize[0];<br />
		var flyoverY	 = flyoverSize[1];</p>
<p>		flyover.style.width = flyoverX + &#8220;px&#8221;;</p>
<p>		// get the bounding rect for image(s)<br />
		var imgRect = imageElem.getBoundingClientRect();</p>
<p>		// half width/height (center) of element bounding rect<br />
		var halfX = (imgRect.right &#8211; imgRect.left) / 2;<br />
		var halfY = (imgRect.bottom- imgRect.top) / 2;</p>
<p>		// element the mouse is over, get the center position<br />
		var posX = searchshield.offsetLeft(imageElem) + halfX;<br />
		var posY = searchshield.offsetTop(imageElem) + halfY;</p>
<p>		var pageOffsetX = 0;<br />
		var pageOffsetY = 0;</p>
<p>		// normalize pos to 0  &#8212; get amount of scrolling in browser window<br />
		var scroll		 = searchshield.scrollSize(imageElem);<br />
		var pageOffsetX	 = scroll[0];<br />
		var pageOffsetY	 = scroll[1];<br />
		var hasParentFrame = scroll[2];</p>
<p>		posX -= pageOffsetX;<br />
		posY -= pageOffsetY;</p>
<p>		//compensate for Firefox 3<br />
		if (posX  posX)<br />
		{<br />
			// right<br />
			offsetX += halfX;<br />
			locateX = 1;<br />
		}<br />
		else<br />
		{<br />
			//left<br />
			offsetX -= (flyoverX + halfX);<br />
		}<br />
		if ((windowY &#8211; posY) &gt; posY)<br />
		{<br />
			// below<br />
			if (posY &lt; (windowY/4))<br />
			{<br />
				offsetY -= halfY;<br />
				locateY = 1;<br />
			}<br />
			else<br />
			{<br />
				offsetY -= (flyoverY / 2) &#8211; halfY;<br />
				locateY = 2;<br />
			}<br />
		}<br />
		else<br />
		{<br />
			// above<br />
			if ((windowY &#8211; posY) &lt; (windowY/4))<br />
			{<br />
				offsetY -= (flyoverY &#8211; halfY);<br />
			}<br />
			else<br />
			{<br />
				offsetY -= (flyoverY / 2) + halfY;<br />
				locateY = 2;<br />
			}<br />
		}<br />
		// make sure we aren&#039;t off the screen<br />
		if (offsetY  windowY)<br />
		{<br />
			offsetY = windowY &#8211; flyoverY;<br />
		}<br />
		else if (scrollBarX &amp;&amp; ((windowY &#8211; (posY + halfY)) &lt; scrollYWidth))<br />
		{	//verdict overlaps the horizontal scrollbar<br />
			offsetY = windowY &#8211; (flyoverY + scrollYWidth);<br />
		}</p>
<p>		// add page offsets back &#8211; if not in frame<br />
		if (!hasParentFrame)<br />
		{<br />
			offsetX += pageOffsetX;<br />
			offsetY += pageOffsetY;<br />
		}<br />
		posX += pageOffsetX;<br />
		posY += pageOffsetY;</p>
<p>		var paddedOffsetX = 0; //provide space between icon and flyover<br />
		var padX = 3;<br />
		if (locateX == 0)<br />
			paddedOffsetX = offsetX &#8211; padX;<br />
		else<br />
			paddedOffsetX = offsetX + padX;</p>
<p>		// set where to put the flyover<br />
		flyover.style.top = offsetY + &quot;px&quot;;<br />
		flyover.style.left = paddedOffsetX + &quot;px&quot;;</p>
<p>		avglsinlineflyover.display();<br />
	},<br />
	display: function () {<br />
		var div = document.getElementById(&#039;XPLSS_InlineFlyover&#039;);<br />
		if (div == null)<br />
			return;</p>
<p>		// show the flyover<br />
		div.style.visibility = &quot;visible&quot;;<br />
	},<br />
	imageExists: function(element) {<br />
		if (element)<br />
		{<br />
			// check next siblings children<br />
			var sibling = element.nextSibling;</p>
<p>			if ((sibling == null) || (sibling.getElementsByTagName == null))<br />
				return false;</p>
<p>			var images = sibling.getElementsByTagName(&quot;IMG&quot;);<br />
			if (images == null)<br />
				return false;</p>
<p>			for (var i = 0; i &lt; images.length; i++)<br />
			{<br />
				if (images[i].id == &quot;avg_ls_image&quot;)<br />
					return true;<br />
			}<br />
		}</p>
<p>		return false;<br />
	},<br />
	getImage: function (anchor) {<br />
		if (anchor)<br />
		{<br />
			var imageElem = null;<br />
			var images = anchor.getElementsByTagName(&quot;img&quot;);<br />
			if (images == null)<br />
				return imageElem;</p>
<p>			for (var i = 0; i </span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1131&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/06/10/new-release-chasing-forever/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>

		<media:content url="http://amberskyze.files.wordpress.com/2011/06/chasing-forever.jpg" medium="image">
			<media:title type="html">Chasing Forever</media:title>
		</media:content>
	</item>
		<item>
		<title>June Newsletter</title>
		<link>http://amberskyze.wordpress.com/2011/06/01/june-newsletter/</link>
		<comments>http://amberskyze.wordpress.com/2011/06/01/june-newsletter/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 09:56:55 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[newsletter]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1128</guid>
		<description><![CDATA[is now available, with a fun contest. To win you must be a subscriber. Join here: authoramberskyze-subscribe@yahoogroups.com Happy June!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1128&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>is now available, with a fun contest. To win you must be a subscriber. Join here:</p>
<p><a href="mailto:authoramberskyze-subscribe@yahoogroups.com">authoramberskyze-subscribe@yahoogroups.com</a></p>
<p>Happy June!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1128&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/06/01/june-newsletter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>
	</item>
		<item>
		<title>This and That</title>
		<link>http://amberskyze.wordpress.com/2011/05/12/this-and-that-4/</link>
		<comments>http://amberskyze.wordpress.com/2011/05/12/this-and-that-4/#comments</comments>
		<pubDate>Thu, 12 May 2011 14:12:22 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[deadlines]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1126</guid>
		<description><![CDATA[There seems to be a lot of talk about Facebook this morning. I guess you can’t advertise contests and if I read the rules correctly you can’t do much. So I have to ask…as an author who wants to promote myself and run contests why would I choose Facebook? I’ll be honest I’d been considering [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1126&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There seems to be a lot of talk about Facebook this morning.<br />
I guess you can’t advertise contests and if I read the rules correctly you can’t<br />
do much. So I have to ask…as an author who wants to promote myself and run<br />
contests why would I choose Facebook? I’ll be honest I’d been considering it<br />
for about a month now. Everyone told me it’s the thing to do. In fact many<br />
insisted I must have a Facebook page if I plan to increase my sales.</p>
<p>Well I’m still on the fence and I’ll wait until all this<br />
mess clears up before I make a decision – currently I’m leaning towards not<br />
having one.</p>
<p>Yesterday after writing double my normal writing goal I decided<br />
to check out the series Camelot. We’ve been recording it, but haven’t sat down<br />
to watch. With the house unusually quiet I took advantage and watched the first<br />
three episodes. I really enjoyed them. I’m going to catch up on a few more<br />
today while it’s quiet again. The DH wasn’t happy because I watched them<br />
without him and now he’ll have to catch up on his own. Hey I need something to<br />
unwind after a few stressful days at work.</p>
<p>I’m off to write another 1k…one down one to go. That<br />
deadline is going to hit me like a brick wall I’m afraid. I have about 7k to<br />
finish the story…deadline? Three days. I’ll keep you posted.</p>
<p>Happy Thursday!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1126&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/05/12/this-and-that-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>
	</item>
		<item>
		<title>Sex on the Beach</title>
		<link>http://amberskyze.wordpress.com/2011/05/11/sex-on-the-beach-2/</link>
		<comments>http://amberskyze.wordpress.com/2011/05/11/sex-on-the-beach-2/#comments</comments>
		<pubDate>Wed, 11 May 2011 14:15:17 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[bdsm]]></category>
		<category><![CDATA[ellora's cave]]></category>
		<category><![CDATA[jasmine jade]]></category>
		<category><![CDATA[new release]]></category>
		<category><![CDATA[sex on the beach]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1123</guid>
		<description><![CDATA[Taking a short break from my writing to give you the details of my new release Sex on the Beach, now available from Ellora&#8217;s Cave TODAY!!!!!! Blurb: Allie only wanted two weeks of peace and quiet at her friend’s beach house to get her life in perspective. She wasn’t looking for sex, drugs and a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1123&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Taking a short break from my writing to give you the details of my new release Sex on the Beach, now available from <a href="http://www.jasminejade.com/p-9335-sex-on-the-beach.aspx">Ellora&#8217;s Cave </a>TODAY!!!!!!</p>
<p><a href="http://amberskyze.files.wordpress.com/2011/05/sexonthebeach_msr1.jpg"><img class="aligncenter size-medium wp-image-1124" title="sexonthebeach_msr" src="http://amberskyze.files.wordpress.com/2011/05/sexonthebeach_msr1.jpg?w=184&#038;h=300" alt="" width="184" height="300" /></a></p>
<p>Blurb:</p>
<p><span style="font-family:Arial;font-size:x-small;">Allie only wanted two weeks of peace and quiet at her friend’s beach house to get her life in perspective. She wasn’t looking for sex, drugs and a kidnapping. But that’s what<br />
she gets when she encounters not one but two tasty men.</span></p>
<p><span style="font-family:Arial;font-size:x-small;">Tony, her gorgeous next-door neighbor, has a body any woman would want to explore, and Allie crave him licking, teasing and ravishing her body with those strong hands and kissable<br />
lips. Little does she know Tony’s on the trail of a drug dealer.</span></p>
<p><span style="font-family:Arial;font-size:x-small;">Then there’s Paul, who also wants a piece of Allie…if he can possibly tear her away from Tony.</span></p>
<table width="95%" border="0" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td width="98%">
<p align="center"><strong>An Excerpt From: SEX ON THE<br />
BEACH</strong></p>
<p align="center"><strong>Copyright © AMBER<br />
SKYZE, 2011</strong></p>
<p align="center"><strong>All Rights Reserved, Ellora&#8217;s Cave Publishing, Inc.</strong></p>
<p>Chapter<br />
One</p>
<p>The wind blew wisps of Allie’s long blonde hair back toward the road she’d just traveled.<br />
She sped along the California coastline in her yellow convertible Spyder, enjoying the sunrise in the distance. The sun<br />
sparkled across the ocean, glimmering orange as it rose. The rays would threaten<br />
to scorch her skin later in the day. The weatherman had said the temperatures<br />
would reach well into the nineties again.</p>
<p>She<br />
pressed her flip-flopped foot harder on the gas pedal. Allie allowed the car to<br />
accelerate because she knew no one in their right mind would be on the road at<br />
this ungodly hour. Not everyone woke before the crack of dawn. While most were<br />
still sleeping soundly in their beds, the air conditioner cooling their skin,<br />
Allie was up grocery shopping.</p>
<p>It wasn’t<br />
unusual for her to be up and going at four in the morning. She loved those first<br />
few hours of the day when life was quiet. She could sip her coffee leisurely.<br />
The hustle and bustle came later when she left the house to fight the highway<br />
traffic on her way to her job as a marketing executive for a pharmaceutical<br />
company.</p>
<p>At least<br />
that was her life before she’d lost her job. She punched the steering<br />
wheel.</p>
<p>“Fuck,”<br />
she cursed to the open wind. While she missed the craziness of her old life she<br />
had to admit the last six months were the most stress-free she’d felt in years,<br />
right up until she returned to work.</p>
<p>The long<br />
hours and stress related to her job contributed in the onslaught of health<br />
issues she hadn’t known existed. After three consecutive months with a bout of<br />
what she thought was the flu Allie finally sought the advice of her doctor. He<br />
put her through numerous rounds of testing and came to the conclusion she<br />
suffered from acid reflux and Crohns disease. Both<br />
were brought on by stress, food choices and not taking care of her<br />
body.</p>
<p>Allie<br />
spent five agonizing days in the hospital while her doctor tried to get her<br />
disease under control. It was the worst experience in her life. There were times<br />
when she thought she’d die and sometimes she silently prayed she would. It was<br />
devastating and debilitating, but she swore she wouldn’t let it control her<br />
again.</p>
<p>Once Dr.<br />
Robinson managed to get the disease under control she looked pointedly at<br />
Allie.</p>
<p>“Look,<br />
your job is slowly killing you. Your body can’t handle the stress or long hours<br />
you’re demanding of it. You need to make some lifestyle changes or I’m just<br />
going to see you back here in a few months,” she’d said.</p>
<p>The<br />
reality of the doctor’s words was like a knife being twisted in her chest. She<br />
didn’t know how to not be on the go 24/7. That was the way she’d lived her life<br />
since turning sixteen.</p>
<p>Allie<br />
pressed even harder on the gas pedal.</p>
<p>She<br />
couldn’t get to the beach house fast enough. The idea of spending two weeks of<br />
quiet, soaking up the sun and sand appealed to her on so many levels. When her<br />
friend Pam told her she could use her beach house, Allie had immediately jumped<br />
on the offer.</p>
<p>The next<br />
few weeks would give her time to readjust to being unemployed and hopefully<br />
clear her mind. Eventually she’d have to decide what direction she wanted to<br />
take with her life. She had enough money saved to get her through six months of<br />
unemployment, but Allie didn’t want to totally deplete her savings. It was there<br />
as a safety net, nothing more.</p>
<p>Quitting<br />
had never been a word Allie thought she’d use, but her boss left her no other<br />
choice. She’d had a career as a marketing executive for almost five years before<br />
she’d up and resigned.</p>
<p>“Asshole!”<br />
She gripped the steering wheel, fighting back the tears stinging her eyes. She<br />
refused to cry. She wouldn’t give that shithead the satisfaction of beating her<br />
down. She wiped away the drop with the back of her hand.</p>
<p>“Screw<br />
you,<br />
Marty.”</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1123&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/05/11/sex-on-the-beach-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>

		<media:content url="http://amberskyze.files.wordpress.com/2011/05/sexonthebeach_msr1.jpg?w=184" medium="image">
			<media:title type="html">sexonthebeach_msr</media:title>
		</media:content>
	</item>
		<item>
		<title>More Cover Art</title>
		<link>http://amberskyze.wordpress.com/2011/05/09/more-cover-art/</link>
		<comments>http://amberskyze.wordpress.com/2011/05/09/more-cover-art/#comments</comments>
		<pubDate>Mon, 09 May 2011 11:28:58 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[coming soon]]></category>
		<category><![CDATA[cover art]]></category>
		<category><![CDATA[hit me]]></category>
		<category><![CDATA[loose-id]]></category>
		<category><![CDATA[new release]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1119</guid>
		<description><![CDATA[Here is a look at my newest cover for my book Hit Me, which will be available from Loose Id on May 17th!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1119&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here is a look at my newest cover for my book Hit Me, which will be available from Loose Id on May 17th!</p>
<p><a href="http://amberskyze.files.wordpress.com/2011/05/as_hitme_coverlg.jpg"><img class="aligncenter size-full wp-image-1120" title="AS_HitMe_coverlg" src="http://amberskyze.files.wordpress.com/2011/05/as_hitme_coverlg.jpg?w=535" alt=""   /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1119&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/05/09/more-cover-art/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>

		<media:content url="http://amberskyze.files.wordpress.com/2011/05/as_hitme_coverlg.jpg" medium="image">
			<media:title type="html">AS_HitMe_coverlg</media:title>
		</media:content>
	</item>
		<item>
		<title>Busy Saturday</title>
		<link>http://amberskyze.wordpress.com/2011/05/07/busy-saturday/</link>
		<comments>http://amberskyze.wordpress.com/2011/05/07/busy-saturday/#comments</comments>
		<pubDate>Sat, 07 May 2011 11:20:41 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[birthday]]></category>
		<category><![CDATA[wips]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1117</guid>
		<description><![CDATA[Another work day for me. I’ll have to work until 2am only to be up at 7am to work another full day tomorrow. UGH! I guess I need to be happy I have a job. On top of working I’m throwing a birthday party for my daughter and granddaughter. My mom and son should arrive [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1117&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Another work day for me. I’ll have to work until 2am only to be up at 7am to work another full day tomorrow. UGH! I guess I need to be happy<br />
I have a job.</p>
<p>On top of working I’m throwing a birthday party for my daughter and granddaughter. My mom and son should arrive early afternoon for a<br />
weekend visit. I hope to squeeze some writing time in while decorating the house with Dora the Explorer and Spongebob (the 14 yr old wanted to feel like a kid too) LOL</p>
<p>Hope everyone enjoys their Saturday!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1117&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/05/07/busy-saturday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>
	</item>
		<item>
		<title>Sex on the Beach</title>
		<link>http://amberskyze.wordpress.com/2011/05/06/sex-on-the-beach/</link>
		<comments>http://amberskyze.wordpress.com/2011/05/06/sex-on-the-beach/#comments</comments>
		<pubDate>Fri, 06 May 2011 15:03:03 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[coming soon]]></category>
		<category><![CDATA[ellora's cave]]></category>
		<category><![CDATA[jasmine jade]]></category>
		<category><![CDATA[sex on the beach]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1115</guid>
		<description><![CDATA[Sorry I’ve been MIA. Work is crazy and I’m still trying to finish this book. Plan to take my conference calls from the deck and enjoy the warm sunshine today. Sex on the Beach will be available May 11th! I can’t believe it’s releasing so soon. YAY! Happy Friday!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1115&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sorry I’ve been MIA. Work is crazy and I’m still trying to finish this book. Plan to take my conference calls from the deck and enjoy the<br />
warm sunshine today.</p>
<p>Sex on the Beach will be available May 11<sup>th</sup>! I can’t believe it’s releasing so soon. YAY!</p>
<p>Happy Friday!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1115&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/05/06/sex-on-the-beach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://amberskyze.wordpress.com/2011/05/02/1112/</link>
		<comments>http://amberskyze.wordpress.com/2011/05/02/1112/#comments</comments>
		<pubDate>Mon, 02 May 2011 06:19:20 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[coming soon]]></category>
		<category><![CDATA[ellora's cave]]></category>
		<category><![CDATA[jasmine jade]]></category>
		<category><![CDATA[sex on the beach]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1112</guid>
		<description><![CDATA[Celebrating a new cover. Under a tight deadline so this is short and sweet. Happy Monday!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1112&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://amberskyze.files.wordpress.com/2011/05/sexonthebeach_msr.jpg"><img class="aligncenter size-medium wp-image-1113" title="sexonthebeach_msr" src="http://amberskyze.files.wordpress.com/2011/05/sexonthebeach_msr.jpg?w=184&#038;h=300" alt="" width="184" height="300" /></a></p>
<p>Celebrating a new cover. Under a tight deadline so this is short and sweet.</p>
<p>Happy Monday!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1112&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/05/02/1112/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>

		<media:content url="http://amberskyze.files.wordpress.com/2011/05/sexonthebeach_msr.jpg?w=184" medium="image">
			<media:title type="html">sexonthebeach_msr</media:title>
		</media:content>
	</item>
		<item>
		<title>Sad</title>
		<link>http://amberskyze.wordpress.com/2011/04/30/sad/</link>
		<comments>http://amberskyze.wordpress.com/2011/04/30/sad/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 12:20:58 +0000</pubDate>
		<dc:creator>amberskyze</dc:creator>
				<category><![CDATA[writing]]></category>
		<category><![CDATA[amber skyze]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[ellora's cave]]></category>
		<category><![CDATA[nec rwa]]></category>
		<category><![CDATA[sex on the beach]]></category>

		<guid isPermaLink="false">http://amberskyze.wordpress.com/?p=1109</guid>
		<description><![CDATA[I should be at the NEC RWA conference today…actually I should’ve been there yesterday. Only I’ve been down with another stomach bug which landed me in the hospital yet again. I swear the weather needs to improve and get rid of all the sickness. After spending a day in the hospital they sent me home [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1109&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I should be at the NEC RWA conference today…actually I should’ve been there yesterday. Only I’ve been down with another stomach bug which landed me in the hospital yet again. I swear the weather needs to improve and get rid of all the sickness. After spending a day in the hospital they sent me home with strict instructions for bed rest, along with more anti-nausea meds. I was told to drink plenty of fluids and believe me the DH is making sure I’m doing that. If I drown you’ll know why! Lol</p>
<p>So instead of mingling with some amazing authors, going to my agent appointment and joining in on the book signing I’ll be sitting home<br />
dreaming of next year. Not to mention that I missed out spending a night at the haunted Hawthorne Hotel.</p>
<p>Reading and edits for Sex on the Beach are on the agenda for today – oh and I’m sure lots of water.</p>
<p>Wishing all my friends at NEC a fun filled date.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amberskyze.wordpress.com/1109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amberskyze.wordpress.com/1109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amberskyze.wordpress.com/1109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amberskyze.wordpress.com/1109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/amberskyze.wordpress.com/1109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/amberskyze.wordpress.com/1109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/amberskyze.wordpress.com/1109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/amberskyze.wordpress.com/1109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amberskyze.wordpress.com/1109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amberskyze.wordpress.com/1109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amberskyze.wordpress.com/1109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amberskyze.wordpress.com/1109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amberskyze.wordpress.com/1109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amberskyze.wordpress.com/1109/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amberskyze.wordpress.com&amp;blog=6201904&amp;post=1109&amp;subd=amberskyze&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://amberskyze.wordpress.com/2011/04/30/sad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ad3c01c2dc06430d08026c540a01731d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">amberskyze</media:title>
		</media:content>
	</item>
	</channel>
</rss>
