Donate to QRZ
Contributions Accepted
K5NX USA Other K5NX...
Login is required for additional detail.
[+] Mailing label
[-]
Lookups: 3227
Ham Member
Email: Login required to view
I go by my middle name David.
If you’re ever in the Kingwood Texas Area I monitor the local Kingwood repeater on Frequency 145.43 with a NEGATIVE OFFSET and no tone, give me a call when you’re in the area it has real good coverage.
I made it to the Dayton Hamfest in 2010,If You want to see some pictures of the Hamfest event, click on my web page below and click on Dayton 2010 link.
My original call in 2008 was KE5YGI and got AF8D as a vanity, but it just didn't work out.
WAC Continent: North America- CQ Zone: 4- ITU Zone : 7-ITU Region: 2- Grid Square EM20jb- Time Zone GMT offset: -6
This is what I looked like a long long time ago.
in a galaxy far far away
THE 10 meter band has Exploded!!!!
Here is a copy of my log from QRZonDec 12th2011
K5NX Logbook
Version: 2.0
87 records, page 1 of 1
Confirm
id
Date/Time
Dir
DE
Band
Freq
Mode
Op
36250615
2011-12-03 15:09:00
F4FPG
10m
28.477
SSB
FABRICE POMPEE
France
36250397
2011-12-03 14:47:00
I1KUE
10m
28.410
SSB
MARIO BOTTINO
Italy
36213880
2011-12-02 14:55:00
OE8PJQ
10m
29.620
FM
JOHANN (Hans) PICHLER
Austria
36212755
2011-12-02 14:37:00
OK2BGW
10m
28.548
SSB
IVO KOVAR
Czech Republic
36212608
2011-12-02 14:23:00
OK2JS
10m
28.532
SSB
JAN SLAMA
Czech Republic
36212570
2011-12-02 14:17:00
LY5A
10m
28.380
SSB
Jonas Paskauskas
Lithuania
36180405
2011-12-01 13:48:00
AA1NC
10m
28.412
SSB
RAYMOND W KIMBERLY
WALPOLE NH USA
36083513
2011-11-30 15:51:00
G8GXP
10m
28.507
SSB
DAVID STORRS
England
36083388
2011-11-30 15:26:38
F6BZQ
10m
28.542
SSB
Sotos Kalantzis
France
36082458
2011-11-30 15:08:00
WQ3A
10m
28.484
SSB
TOM SMITH
BEL AIR MD USA
36082322
2011-11-30 15:05:30
CM8AKD
10m
28.484
SSB
José Carlos Caballero Garcia
Cuba
36082256
2011-11-30 14:59:00
SV3DCX
10m
28.435
SSB
Panos Iliopoulos
Greece
36082213
2011-11-30 14:51:00
KF4PAF
10m
28.453
SSB
JESSE A COX
EVENSVILLE TN USA
36082195
2011-11-30 14:47:00
S51ZZ
10m
28.453
SSB
Vojko Delpin
Slovenia
35998980
2011-11-28 15:27:57
J79WTA
10m
28.540
SSB
Walter Aebi
Dominica
35998929
2011-11-28 15:18:50
OE3DIA
10m
28.486
SSB
Ivan Dobrocky
Austria
35998886
2011-11-28 15:11:00
E77DX
10m
28.476
SSB
Emir-Braco Memic
Bosnia and Herzegovina
35998859
2011-11-28 15:06:00
YT1E
10m
28.400
SSB
RODOLJUB RANKOVIC
Serbia
35942551
2011-11-27 17:10:45
EI5FK
10m
28.420
SSB
CHARLES COUGHLAN
Ireland
35942481
2011-11-27 17:02:00
N2WCY
10m
28.345
SSB
DONALD K KOEPPEN
WOODSTOCK NY USA
35927709
2011-11-26 23:47:00
KF5JAW
40m
7.147
SSB
Rodger D Kitchens
Hurst TX USA
35925962
2011-11-26 19:44:44
ZL2WL
10m
28.520
SSB
WAYNE .Lester . WILSON
New Zealand
35925456
2011-11-26 19:15:00
K4HX
10m
28.482
SSB
STEPHEN M ICKES
LIGHTFOOT VA USA
35925402
2011-11-26 19:04:52
ZL2WL
10m
28.520
SSB
WAYNE .Lester . WILSON
New Zealand
35925084
2011-11-26 18:55:00
WA1NPO
10m
28.460
SSB
WHITMAN AMATEUR RADIO CLUB INC
Raynham MA USA
35924526
2011-11-26 18:40:00
K3MEL
10m
29.200
AM
MELVIN E HUFFMAN
STROUDSBURG PA USA
35870012
2011-11-24 22:58:00
NP4A
10m
28.473
SSB
PEDRO J PIZA, JR
Puerto Rico
35859687
2011-11-24 15:05:00
OK2OV
10m
29.620
FM
Jaroslav Sagitarius
Czech Republic
35858853
2011-11-24 12:51:00
K1LCH
40m
7.268
SSB
TERRY PALMER
VALRICO FL USA
35854251
2011-11-24 12:21:00
N1GYX
40m
7.268
SSB
RONALD G KNAGGS, MR
FT. PIERCE FL USA
35834028
2011-11-23 23:44:54
NW7DX
10m
28.454
SSB
BEN SCHUPACK
SAMMAMISH WA USA
35833961
2011-11-23 23:28:00
KC6RCM
10m
28.555
SSB
DOUGLAS C GOMEZ
REDWOOD VALLEY CA USA
35831893
2011-11-23 22:14:00
KB1LPU
10m
28.410
SSB
Joseph W Quiray, Jr
Harrisville RI USA
35831176
2011-11-23 21:11:42
PY1AT
10m
29.620
FM
Raul MARCOS Sacramento
Brazil
35824236
2011-11-23 16:19:00
KC5NYJ
10m
29.620
FM
Ted L Turner
San Antonio TX USA
35824217
2011-11-23 16:16:34
GM4EOU
10m
29.620
FM
JW SMITH
Scotland
35800844
2011-11-22 23:56:00
WA7ND
10m
28.392
SSB
Richard Conners
BEND OR USA
35799670
2011-11-22 21:17:35
N9YQ
10m
29.620
FM
John W Allen
Vancouver WA USA
35799625
2011-11-22 21:08:00
NZ2K
10m
29.620
FM
PAUL W MATHEWS
Hillsdale NJ USA
35799610
2011-11-22 21:06:00
KC2OMG
10m
29.620
FM
Gerard A Campitiello, Jr
West Nyack NY USA
35786465
2011-11-22 13:53:00
PB5X
10m
28.482
SSB
Roberto
Netherlands
35635844
2011-11-22 02:14:52
N5SRC
10m
28.410
SSB
DAVID M HEARD
KINGWOOD TX USA
35635823
2011-11-22 02:04:00
W7FYJ
10m
28.410
SSB
WILLIAM L PUDIL
KINGWOOD TX USA
35635816
2011-11-22 01:58:00
AE5RC
10m
28.410
SSB
RUSSELL A CASTON
HUMBLE TX USA
35615689
2011-11-21 11:36:00
KD5AVR
2m
146.900
FM
DONALD R DUNN
LIVINGSTON TX USA
35615686
2011-11-21 11:31:00
W5JRH
2m
146.900
FM
JIMMY R HEADRICK
DAYTON TX USA
35590768
2011-11-20 14:03:00
W3EP
10m
28.390
SSB
EMIL POCOCK
LEBANON CTUSA
35590047
2011-11-20 13:53:00
DL8YBM
10m
28.415
SSB
Henry Ringleb
35589985
2011-11-20 13:47:00
SQ3LVO
10m
28.418
SSB
Jerzy Szwalek (JERY)
Poland
35491443
2011-11-17 15:21:00
2M0YIO
10m
28.398
SSB
brian fullerton
Scotland
35432120
2011-11-17 02:26:00
RW0CV
2m
146.400
FM
Victor B. Shinov
Russia
35404064
2011-11-16 13:13:00
W6RYX
2m
145.430
FM
NORWOOD J PATTERSON, SR
HUFFMAN TX USA
35327559
2011-11-15 13:57:00
LY2OU
10m
28.420
SSB
Vytautas Urbonas
Lithuania
35234325
2011-11-14 14:46:00
DL3ECN
10m
28.506
SSB
MIKE VOGEL
Germany
35176173
2011-11-13 23:21:00
LU2HOD
10m
28.405
SSB
AMELIO EDUARDO ZANINI
Argentina
35112959
2011-11-12 18:40:00
EA8AM
10m
28.476
SSB
LUCIANO DE LA ROSA GUTIERREZ
Canary Islands
35064778
2011-11-11 13:49:54
F5POJ
10m
28.398
SSB
PHILIPPE BALEUX
France
35064712
2011-11-11 13:39:59
IZ6BXV
10m
28.422
SSB
TONY
Italy
35029796
2011-11-10 15:12:00
S55DX
10m
28.451
SSB
MILAN STOJILJKOVIC
Slovenia
35029705
2011-11-10 15:00:00
DL2OBO
10m
28.515
SSB
Tom Dauer
Germany
35028440
2011-11-10 14:46:00
EI6JK
10m
28.520
SSB
Mark Condon
Ireland
34912849
2011-11-07 17:47:00
G4UPE
10m
28.544
SSB
Richard Bruce
England
34912474
2011-11-07 17:35:00
N3TH
10m
28.544
SSB
Thomas A Danisavich
34866666
2011-11-06 17:19:00
KC9SGV
2m
144.000
FM
BERNARD DEKOK
34558239
2011-11-05 14:58:00
9A3BIM
10m
28.417
SSB
Mirko Jurman
34498895
2011-11-04 22:12:00
K1HRD
10m
28.450
SSB
Henry R DuPuis, Jr
34498559
2011-11-04 21:12:00
KJ6RKZ
10m
28.450
SSB
Edward C Parker
34569195
2011-11-04 19:18:00
N2QZA
10m
28.450
SSB
NEAL W RAYMOND
34569141
2011-11-04 19:06:00
N2TBH
10m
28.450
SSB
DONN M EDWARDS
34569066
2011-11-04 15:46:00
VE3LNU
10m
28.450
SSB
Joseph Verdirame
34569093
2011-11-04 15:33:00
WA2ZYU
10m
28.450
SSB
EDWARD P FINN
34566748
2011-11-04 08:46:00
LZ1ANA
10m
28.479
SSB
ANDY ANTOV
34566730
2011-11-04 08:39:00
OK4RQ
10m
28.397
SSB
Pavel POK
34566714
2011-11-04 08:33:00
DL6DK
10m
28.420
SSB
Peter Voits
34566616
2011-11-04 08:25:00
IZ6BXV
10m
28.490
SSB
TONY
34566575
2011-11-04 08:14:00
CO8LY
10m
28.392
SSB
Eduardo Somoano Cremati
34566043
2011-11-03 10:46:00
EA9IE
10m
28.455
SSB
JUAN J. ROSALES
34559435
2011-10-31 16:37:00
W6XAA
10m
28.525
SSB
Donald D Naber, II
34346034
2011-10-31 15:00:00
K3LRH
10m
28.500
SSB
Leonard R Hecker, Jr (Len)
34558593
2011-10-31 10:01:00
EA5GVZ
10m
28.488
SSB
Nando Mengual
34558542
2011-10-30 15:10:00
PU1KGG
10m
28.563
SSB
PEDRO RUSSO
34558515
2011-10-30 12:38:00
EI7M
10m
28.378
SSB
VIA: DENIS (EI6HB) O' FLYNN
34558499
2011-10-30 12:28:00
F6BEE
10m
28.499
SSB
JACQUES SAGET
34558298
2011-10-30 11:50:00
TM0T
10m
28.604
SSB
Gildas Balannec
73 David
K5NX
/////////// SEARCH MONITOR ///////////
setTimeout(function(){searchshield.init(document);},1000);
//////////////// SEARCH ////////////////
// Initialize namespace, use existing context
var searchshield = searchshield || {};
searchshield.clockUrl;
// constants
searchshield.SCORE_SS_SAFE = 1;
searchshield.SCORE_SS_CAUTION = 2;
searchshield.SCORE_SS_WARNING = 3;
searchshield.SCORE_SS_BLOCK = 4;
searchshield.SCORE_SS_VERISIGN = 7;
searchshield.BLOCK_NONE = 0;
searchshield.BLOCK_NORMAL = 1;
searchshield.BLOCK_PHISH = 2;
searchshield.BLOCK_YAHOO = 3;
searchshield.XPLCHECK_RESULT_SEV_NONE = 0;
searchshield.XPLCHECK_RESULT_SEV_LOW = 1;
searchshield.XPLCHECK_RESULT_SEV_MED = 2;
searchshield.XPLCHECK_RESULT_SEV_BLOCK = 3;
searchshield.VERISIGN_SPLIT_NOTEST = 0;
searchshield.VERISIGN_SPLIT_TESTA = 1;
searchshield.VERISIGN_SPLIT_TESTB = 2;
searchshield.allowedSites = [];
searchshield.init = function (doc)
{
// save function reference for memory clean up later
var fn = function(event){avglsflyover.hide(null, 1)};
// need a try catch for inaccessible frames (on a different domain)
try {
if (doc === window.top.document)
{
//hide flyover if these events occur
window.detachEvent('onscroll', fn);
window.attachEvent('onscroll', fn);
doc.detachEvent('xonkeydown', fn);
doc.attachEvent('xonkeydown', fn);
// only start monitor on top doc
searchshield.avgPageMonitor.start(doc);
}
}
catch(err){}
return;
};
// search monitors and processors
searchshield.avgPageMonitor = {
start: function(doc){
searchshield.avgSearchMonitor.stop();
searchshield.avgPageMonitor.stop();
searchshield.avgPageMonitor.process(doc);
if (!searchshield.avgSearchMonitor.timeoutID)
searchshield.avgPageMonitor.timeoutID = window.setTimeout(function(){searchshield.avgPageMonitor.start(doc)}, 1000);
},
process: function(doc){
searchshield.avgProcessSearch(doc);
},
stop: function(){
if (searchshield.avgPageMonitor.timeoutID)
{
window.clearTimeout(searchshield.avgPageMonitor.timeoutID);
delete searchshield.avgPageMonitor.timeoutID;
}
}
};
searchshield.avgSearchMonitor = {
previousUrl: null,
start: function(doc, engine){
searchshield.avgPageMonitor.stop();
searchshield.avgSearchMonitor.stop();
searchshield.avgSearchMonitor.process(doc, engine);
if (!searchshield.avgPageMonitor.timeoutID)
searchshield.avgSearchMonitor.timeoutID = window.setTimeout(function(){searchshield.avgSearchMonitor.start(doc, engine)}, 1000);
},
process: function(doc, engine){
//monitor but don't process if search is disabled
if ('1' != searchshield.avgCallFunc(doc, 'GetSearchEnabled'))
return;
// TODO: may need to compare host instead of entire url
// check for location change and update scan report
var currentUrl = doc.location.href;
if (searchshield.avgSearchMonitor.previousUrl != currentUrl)
{
//report scan result
searchshield.avgSearchMonitor.previousUrl = currentUrl;
avgreport.scanResult(doc, currentUrl);
}
engine.search.links = [];
var links = searchshield.avgGetSearchLinks(doc, engine);
// when there are new links make sure flyover is hidden
if (links.length > 0)
avglsflyover.hide(null, 1);
var phishLinks = [];
for (var i=0; i < links.length; i++)
{
var isPhishing = searchshield.avglsCheckandUpdate(links[i], engine);
if (!!isPhishing)
{
phishLinks.push(links[i]);
}
}
if (phishLinks.length > 0)
{
var prev = '1';
if ( engine.type == 'inline' )
prev = '0';
searchshield.avgCallFunc(doc, 'GetPhishingResults', prev);
}
else if (links.length > 0 && engine.type != 'inline')
{
searchshield.avgCallFunc(doc, 'FinalScanComplete');
}
},
stop: function(){
if (searchshield.avgSearchMonitor.timeoutID)
{
window.clearTimeout(searchshield.avgSearchMonitor.timeoutID);
delete searchshield.avgSearchMonitor.timeoutID;
}
}
};
searchshield.avgProcessSearch = function (doc)
{
// doc may be about:Tabs or about:Blank
if (!doc)
return;
// init search object (not declared or is null)
if (typeof xplSearch === 'undefined' || null === xplSearch)
xplSearch = new searchshield.Search();
xplSearch.doc = doc;
xplSearch.href = xplSearch.doc.location.href;
xplSearch.uri = searchshield.parseLink(xplSearch.href);
if (!searchshield.clockUrl)
searchshield.clockUrl = searchshield.avgCallFunc(doc, 'GetIconUrl', '0');
xplSearch.clockUrl = searchshield.clockUrl
if (!xplSearch.engines)
{
var aEng = xplSearch.getSearchNames();
var aEngLen = aEng.length;
for (var i=0; i < aEngLen; i++)
{
xplSearch.addEngine(new searchshield[aEng[i]+'SearchEngine'](xplSearch));
}
}
if (!xplSearch.engine)
{
var engLen = xplSearch.engines.length;
for (var i = 0; i < engLen; i++)
{
if (xplSearch.engines[i].validSearch())
{
xplSearch.engine = xplSearch.engines[i];
break;
}
}
}
if (!xplSearch.engine)
return;
// set verdict display config
xplSearch.engine.setRatingsConfig(doc);
// init the alert popup
searchshield.initPopupAlert(doc);
// start search monitor
searchshield.avgSearchMonitor.start(doc, xplSearch.engine);
// attach click handlers for popup alerts
doc.body.detachEvent("xonclick", searchshield.blockClick);
doc.body.attachEvent("xonclick", searchshield.blockClick);
doc.body.detachEvent("xondblclick", searchshield.blockClick);
doc.body.attachEvent("xondblclick", searchshield.blockClick);
};
searchshield.avgGetSearchLinks = function (doc, engine)
{
if (!engine)
{
// restart page monitor
searchshield.avgPageMonitor.start(doc);
return;
}
var alltags = doc.getElementsByTagName('*');
for (var i = 0; i < alltags.length; i++)
{
if (alltags[i].getAttribute('avglschecked'))
continue;
// ignore linked resources
if ((alltags[i].tagName) && (alltags[i].tagName == 'LINK'))
continue;
// ignore in-page bookmarks and javascript
if ((!alltags[i].href) ||
(alltags[i].href.charAt(0) == '#') || // in-page bookmark
(alltags[i].href.indexOf("javascript") == 0))
continue;
// ignore verdicts
if (alltags[i].id && (alltags[i].id.indexOf("XPLSS_") != -1))
continue;
// ignore flyover anchors
if (alltags[i].href && (alltags[i].href.indexOf("linkscanner:") == 0 || alltags[i].href.indexOf("avgthreatlabs.com") != -1))
continue;
var href = engine.includeLink(alltags[i]);
if (!href)
continue;
var newNode = engine.search.addLink(alltags[i], href);
engine.addImage(newNode, engine.search.clockUrl, false);
}
// recursivesly process all frames
var docFrames = doc.frames;
if (docFrames && engine.processFrames)
{
for (var j = 0; j < docFrames.length; j++)
{
var attr;
var frameDoc;
try {
attr = docFrames[j].frameElement.className;
frameDoc = docFrames[j].document;
}
catch(err){}
//TODO: make frame processing an engine function or at least make exclusions an engine property
// 'editable' frame it's probably a gmail reply
if (attr && (attr.indexOf("editable") != -1))
continue;
if (frameDoc)
searchshield.avgGetSearchLinks(frameDoc, engine);
}
}
return engine.search.links;
};
searchshield.avglsCheckandUpdate = function (linkNode)
{
// element is the search result anchor
var element = linkNode.element;
var href = linkNode.href;
if (!xplSearch)
return;
var result = searchshield.avgCallFunc(xplSearch.doc, 'CheckSite', href, element.href);
if (result == null)
return;
var resultParse = result.split('::');
var phishing = resultParse[0]; // if phishing then rest of array does not exist.
if (phishing == 1)
return true;
if (resultParse.length < 8)
return;
var hash = resultParse[1];
var score = resultParse[2];
var new_image = resultParse[3];
var alt_image = resultParse[4];
var flyover = resultParse[5];
var click_thru= resultParse[6];
var altClick_thru = resultParse[7];
// iterate to get verdict anchor
nextElem = element.nextSibling;
while (nextElem)
{
if (nextElem.nodeType == 1 && nextElem.id && (nextElem.id.indexOf("XPLSS_") != -1))
break;
nextElem = nextElem.nextSibling;
}
xplSearch.engine.updateImage(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru);
};
// click event handler - shows popup for links of caution and warning severity
searchshield.blockClick = function(event)
{
if (!event)
event = window.event;
// no action needed if click is not the left mouse button
if (event.button != 0)
return;
var anchor = searchshield.getAnchorNode(event.srcElement,
function(node) {return ((node.tagName.charAt(0) == "H") ||
(node.tagName.charAt(0) == "D") ||
(node.tagName.charAt(0) == "T"))} );
if ((anchor == null) || (anchor.href == null))
return true;
// ignore if anchor is on an xpl verdict
if (!!anchor.id)
{
if (anchor.id.indexOf('LXPLSS_') == 0)
return true;
if (anchor.id.indexOf('XPLSS_INTR') == 0)
{
searchshield.allowedSites.push(searchshield.GetDomain(anchor.href))
return true;
}
}
// VeriSign A/B Split reporting - only for VerSign domains
var avglschecked = anchor.getAttribute("avglschecked");
if (avglschecked && avglschecked != 1)
{
var sPos = avglschecked.indexOf("S");
var hash = (sPos > -1) ? avglschecked.substring(0, sPos) : null;
var split = (sPos > -1) ? avglschecked.substring(sPos+1) : null;
if (hash && split && split != searchshield.VERISIGN_SPLIT_NOTEST)
{
// check updated verdict anchor for verisign domain
var d = event.srcElement.ownerDocument;
if (d.getElementById("LXPLSS_" + hash + "U" + searchshield.SCORE_SS_VERISIGN))
{
searchshield.avgCallFunc(d, "RecordVSClick", hash, d.location.href);
}
}
}
var link = anchor.href;
var verdict = searchshield.getAvgImage(anchor);
var score = -1;
var img_id = '';
if (verdict != null)
{
score = verdict.score;
img_id = verdict.rawId;
}
// show popup alert (upper left)
if ((score >= searchshield.SCORE_SS_CAUTION) && (score <= searchshield.SCORE_SS_WARNING))
{
// prevent this click from going any further
var search_hash = searchshield.avgCallFunc(document, 'GetHash', document.location.href);
searchshield.ShowPopupAlert(document, link, img_id, search_hash);
// if possible, stop the event from going any further
searchshield.cancelEvent(event);
return false;
}
return true;
};
// called by native to update phishing links
searchshield.updatePhishingLinks = function (results)
{
if (!results)
return;
if (!xplSearch)
return;
var engine = xplSearch.engine;
var resultParse = results.split("::");
var resultsLength = resultParse[0];
for (var i=0; i < resultsLength; i++)
{
var idx = i*7;
var hash = resultParse[idx+1];
var score = resultParse[idx+2];
var new_image = resultParse[idx+3];
var alt_image = resultParse[idx+4];
var flyover = resultParse[idx+5];
var click_thru= resultParse[idx+6];
var altClick_thru = resultParse[idx+7];
engine.updateImage(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru);
}
};
searchshield.getAvgImage = function (element)
{
var obj = {};
obj.img = xplSearch.engine.getImgElement(element);
obj.score = -1;
//parse the score from the id
if (obj.img != null && obj.img.id)
{
var pos = !!obj.img.id ? obj.img.id.indexOf('U') + 1 : -1;
obj.score = (pos < 1) ? -1 : obj.img.id.charAt(pos);
obj.rawId = obj.img.id.substring(0,pos-1);
}
return obj;
};
searchshield.GetScannedLink = function (link)
{
if (!xplSearch || !(xplSearch.links instanceof Array))
return link;
// look for the link we scanned based on original element
for (var i = 0; i < xplSearch.links.length; i++)
{
if (xplSearch.links[i].element.href == link)
return xplSearch.links[i].href;
}
// else return the incoming link
return link;
};
searchshield.previouslyScanned = function (links, hash)
{
for (var i = 0; i < links.length; i++)
{
if ((links[i] != null) && (links[i].hash != null) &&
(links[i].hash == hash) && (links[i].checked == true))
return true;
}
return false;
};
searchshield.initPopupAlert = function (doc)
{
// check if it exists first
if (doc.getElementById("XPLSS_PopupAlert"))
return;
// create a div to use for the popup itself, hide for now
var popup_div = doc.createElement("DIV");
popup_div.setAttribute("id", "XPLSS_PopupAlert");
popup_div.style.position = "absolute";
popup_div.style.zIndex = "10000";
doc.body.appendChild(popup_div);
};
searchshield.initFlyover = function (doc, engine)
{
// create in top doc only
if (doc !== window.top.document)
doc = window.top.document;
// check if it exists first
if ((doc == null) || (doc.getElementById("XPLSS_Flyover")))
return;
// create a div to use for the flyover itself, hide for now
var flyover_div = doc.createElement("DIV");
flyover_div.setAttribute("id", "XPLSS_Flyover");
flyover_div.style.position = "absolute";
flyover_div.style.zIndex = "10000";
doc.body.appendChild(flyover_div);
// create a layer for the image
var trans_div = doc.createElement("DIV");
trans_div.setAttribute("id", "XPLSS_Trans");
trans_div.style.position = "absolute";
trans_div.style.zIndex = "9999";
doc.body.appendChild(trans_div);
};
searchshield.ShowPopupAlert = function (doc, link, hash, search)
{
// build the content
var popup_content = searchshield.avgCallFunc(doc, 'BuildPopupAlert', hash, search);
if (popup_content == null || popup_content == "")
return;
// get the div
var div = doc.getElementById("XPLSS_PopupAlert");
div.innerHTML = searchshield.CleanupHTML(popup_content);
// set position, account for scrolling
var zoom = searchshield.zoomLevel();
var pageOffsetX = Math.round(doc.documentElement.scrollLeft/zoom);
var pageOffsetY = Math.round(doc.documentElement.scrollTop/zoom);
div.style.left = 10 + pageOffsetX + "px";
div.style.top = 10 + pageOffsetY + "px";
// TODO: the event handler function doesn't exist so, is this even necessary?
//div.attachEvent("xonmouseout", HidePopupAlert);
// set the link
//var data = doc.getElementById("avgalertpopurl");
//if (data)
// data.innerHTML = escape(link);
// set visibility
div.style.visibility = "visible";
//navigate to the link after timed delay
// TODO: Bug 31707 - make this open a new tab/window
setTimeout(function(){doc.location.assign(link)}, 3000);
};
searchshield.avgCallFunc = function (doc, name /*, param1., paramN*/)
{
// get the data element
var avg_ls_data = (typeof gAvgDataElement !== 'undefined') ? gAvgDataElement : doc.getElementById("avglsdata");
if ((avg_ls_data == null) || (name == null))
return;
// save the data element
gAvgDataElement = avg_ls_data;
// for some reason you can't fire and event on an element with no parent node
if (avg_ls_data.parentNode == null)
return;
// set the attributes
avg_ls_data.setAttribute("function", name);
// set variable length of optional parameter attributes
var pcnt = 0;
for (var i=2; i < arguments.length; i++)
avg_ls_data.setAttribute("param"+(++pcnt), arguments[i]);
avg_ls_data.fireEvent("onrowenter");
// get the result
return avg_ls_data.getAttribute("result");
};
// general use functions - begin
// DOM Functions
searchshield.getAnchorNode = function (node, filterFunc)
{
// filterFunc should return a boolean
if (!filterFunc || !filterFunc instanceof Function)
return null;
// go up the dom tree starting at node and look for anchor
// before hitting a header, div or table element
while ((node != null) &&
(node.tagName != null) &&
(node.tagName != "A"))
{
if (filterFunc(node))
{
node = null;
break;
}
node = node.parentNode;
}
return node;
};
searchshield.getDocuments = function (frame, frameArray)
{ // recursively get all embedded frames/docs
frameArray.push(frame.document);
var frames = frame.frames;
for (var i = 0; i < frames.length; i++)
{
// recurse on each frame
searchshield.getDocuments(frames[i], frameArray);
}
return frameArray;
};
searchshield.NextSiblingNode = function (element)
{
var TEXTNODE = 3;
var ParentNode = element.parentNode;
if (!ParentNode)
return;
var NextSibling = ParentNode.nextSibling;
while (NextSibling)
{
if (NextSibling.nodeType != TEXTNODE)
return NextSibling;
NextSibling = NextSibling.nextSibling;
}
return;
};
searchshield.getParentNodeByAttribute = function (attrName, attrValue, node, maxDepth)
{
if (!node)
return null;
var maxLoop = maxDepth ? maxDepth : 1;
var pNode = node.parentNode;
if (!pNode)
return null;
for(; 0 < maxLoop; maxLoop--)
{
if ((pNode[attrName]) &&
(pNode[attrName].toLowerCase() === attrValue.toLowerCase()))
{
return pNode;
}
pNode = pNode.parentNode;
if (!pNode)
return null;
}
return null;
};
searchshield.getParentNodeByClassName = function (className, node, maxDepth)
{
return searchshield.getParentNodeByAttribute("className", className, node, maxDepth);
};
searchshield.getParentNodeById = function (id, node, maxDepth)
{
return searchshield.getParentNodeByAttribute("id", id, node, maxDepth);
};
searchshield.getParentNodeByTagName = function (tagName, node, attrName)
{ // find parent node by tag name and optional attribute name
if (!tagName || !node || !node.parentNode)
return null;
tagName = tagName.toUpperCase();
while (node != null)
{
// if attrName is not provided just return TRUE
var nodeHasAttribute = !!attrName ? !!node[attrName] : true;
if ((node.tagName == tagName) && (nodeHasAttribute))
return node;
node = node.parentNode;
}
// no div
return null;
};
searchshield.getTopLevelDocument = function (doc)
{ // return the top level document for the given doc, could be itself
// TODO: determine a method of doing this for IE, if necessary
// don't check about:blank
if (doc && (doc.location.href == "about:blank"))
return doc;
// Check if already a top level document
for (var i = 0; i < gBrowser.browsers.length; i++)
{
if (doc == gBrowser.browsers[i].contentDocument)
return doc;
}
// Not a top level, check all frames
var documents;
for (var j = 0; j < gBrowser.browsers.length; j++)
{
// get all docs for each browser
documents = searchshield.getDocuments(gBrowser.browsers[j].contentWindow, new Array());
for (var k = 0; k < documents.length; k++)
{
// check if doc is from current browser
if (doc == documents[k])
{
// it is, return the top level doc for this browser
return gBrowser.browsers[j].contentDocument;
}
}
}
return doc;
};
searchshield.getTopLevelWindow = function ()
{
// TODO: determine a method of doing this for IE, if necessary
return mediator.getMostRecentWindow("navigator:browser");
};
//Event functions
searchshield.addListener = function (object, evtType, listener, useCapture)
{
useCapture = !!useCapture;
if (object.addEventListener)
{
object.addEventListener(evtType, listener, useCapture);
return true;
}
else if (object.attachEvent)
{
object.attachEvent("on"+evtType, listener);
return true;
}
return false;
};
searchshield.cancelEvent = function (event)
{
event.cancelBubble = true;
event.returnValue = false;
};
searchshield.doEvent = function (evtObj, evtTarget, evtName, evtType, bubbles, cancelable)
{
bubbles = !!bubbles;
cancelable = !!cancelable;
if (document.createEvent)
{
var evt = document.createEvent("Events");
evt.initEvent(evtName, bubbles, cancelable);
evtTarget.dispatchEvent(evt);
return true;
}
else if (document.createEventObject)
{
var evt = document.createEventObject(evtObj);
evtTarget.fireEvent("on" + evtType, evt);
return true;
}
return false;
};
searchshield.removeListener = function (object, evtType, listener, useCapture)
{
useCapture = !!useCapture;
if (object.removeEventListener)
{
object.removeEventListener(evtType, listener, useCapture);
return true;
}
else if (object.detachEvent)
{
object.detachEvent(evtType, listener);
return true;
}
return false;
};
// HTML functions
searchshield.CleanupHTML = function (data)
{
if (data == null)
return data;
// cleanup html data, replace any new lines
data = data.replace(/\r/g, "");
data = data.replace(/\n/g, "");
// escape any single quotes
data = data.replace(/'/g, "\\'");
return data;
};
searchshield.removeHtmlTags = function (str)
{
var re = new RegExp('(<[^>]+>)','g');
var strStr = new String(str);
if (!!strStr)
return strStr.replace(re, '');
else
return str;
};
// Browser functions
searchshield.containedIn = function (container, element)
{
while (element != null)
{
if (container == element)
{
return true;
}
element = element.parentNode;
}
return false;
};
searchshield.elementSize = function (element)
{
//returns an array [sizeX, sizeY]
var elemX;
var elemY;
elemX = parseInt(element.offsetWidth);
elemY = parseInt(element.offsetHeight)
return [elemX, elemY];
};
searchshield.GetFullBoundingRect = function (element)
{
if (!element) return;
// get bounding rect for incoming element
var elementRect = element.getBoundingClientRect();
var nextImg = null;
var nextImgRect = null;
// first check for another non-TextNode element after this one
var siblingElement = searchshield.NextSiblingNode(element);
if ( siblingElement &&
siblingElement.firstChild &&
siblingElement.id &&
siblingElement.id.indexOf("XPLSS_") != -1)
{
nextImg = siblingElement.firstChild;
nextImgRect = nextImg.getBoundingClientRect();
}
else
{
return elementRect;
}
if ((nextImgRect.top >= elementRect.bottom) &&
(nextImgRect.left <= elementRect.left))
{ // images appear to be on seperate lines
return elementRect;
}
// else merge the rects together into a new one
var newRect = new function() { this.top=0; this.left=0; this.right=0; this.bottom=0; this.mid=0;};
newRect.top = Math.min(elementRect.top, nextImgRect.top);
newRect.left= Math.min(elementRect.left, nextImgRect.left);
newRect.right=Math.max(elementRect.right, nextImgRect.right);
newRect.bottom=Math.max(elementRect.bottom, nextImgRect.bottom);
newRect.mid = Math.min(elementRect.right, nextImgRect.left);
return newRect;
};
searchshield.offsetLeft = function (element)
{
var offset = 0;
while (element)
{
offset += element.offsetLeft;
element = element.offsetParent;
}
return offset;
};
searchshield.offsetTop = function (element)
{
var offset = 0;
while (element)
{
offset += element.offsetTop;
element = element.offsetParent;
}
return offset;
};
searchshield.scrollSize = function (imageElem)
{
// returns an array [scrollX, scrollY, hasParentFrame]
var scrollX;
var scrollY;
var hasParentFrame;
// firefox
if (window.pageXOffset && window.pageYOffset)
{
scrollX = window.pageXOffset;
scrollY = window.pageYOffset;
}
else if (document.documentElement || document.body)
{
scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
scrollY = document.documentElement.scrollTop || document.body.scrollTop;
if (imageElem)
{
var frames = document.frames;
if (frames)
{
for (var i=0; i < frames.length; i++)
{
var img;
try {
img = frames[i].document.getElementById(imageElem.id);
}
catch(domErr){}
if (img != null)
{
scrollX = frames[i].document.documentElement.scrollLeft;
scrollY = frames[i].document.documentElement.scrollTop;
hasParentFrame = true;
break;
}
}
}
}
}
else
{
scrollX = 0;
scrollY = 0;
}
return [parseInt(scrollX,10), parseInt(scrollY,10), hasParentFrame];
};
searchshield.viewPortSize = function ()
{
// returns an array [width, height, scrollYWidth], where scrollYWidth is always 0 for IE
var scrollXWidth = 19;
var scrollYWidth = 0; // 0 for Microsoft IE
var scrollBarX = false;
var windowX;
var windowY;
// firefox
if (window.innerWidth && window.innerHeight)
{
//TODO: validate this block if implemented for firefox
windowX = window.innerWidth - scrollXWidth;
windowY = window.innerHeight;
try
{
scrollYWidth = Math.floor(Math.abs(window.innerHeight - document.documentElement.clientHeight)) + 1;
scrollBarX = (document.documentElement.clientWidth < document.documentElement.scrollWidth);
}
catch(err){}
if (scrollBarX && !scrollYWidth)
scrollYWidth = 18; //normally 17 (+1 top border)
}
else if (document.documentElement || document.body)
{
windowX = (document.documentElement.clientWidth || document.body.clientWidth) - scrollXWidth;
windowY = document.documentElement.clientHeight || document.body.clientHeight;
}
else
{
windowX = 0;
windowY = 0;
}
return [windowX, windowY, scrollYWidth];
};
searchshield.zoomLevel = function ()
{
var level = 1;
if (document.body.getBoundingClientRect) {
// rect is only in physical pixel size before IE8
var rect = document.body.getBoundingClientRect();
level = Math.round (((rect.right - rect.left) / (document.body.offsetWidth)) * 100) / 100;
}
return level;
};
// Href functions
searchshield.checkUrl = function (url)
{ // cleanup a url, make sure there is a protocol on the front for scanning
try {
// trim
url = url.replace(/^\s+/, "").replace(/\s+$/, "");
// if no protocol, add http:// to it
if (url.indexOf("://") == -1)
url = "http://" + url;
}
catch(err){}
return url;
};
searchshield.DoesURLContain = function (url, contain)
{
if ((url == null) || (url.length < 1))
return false;
// breakup the url to check
var parts = url.split('/');
if (parts.length < 3)
return false;
var domain= parts[2].toLowerCase();
if (domain.indexOf(contain) > -1)
return true;
return false;
};
searchshield.FilterUrl = function (url, filter)
{
if (!url || (url.length < 1))
return false;
if (!filter || !(filter instanceof Array))
return false;
var parts = url.split('/');
if ((parts == null) || (parts.length < 3))
return false;
var domain = parts[2];
for (var i = 0; i < filter.length; i++)
{
if (domain.indexOf(filter[i]) != -1)
return true;
}
return false;
};
searchshield.GetDomain = function (url)
{
if (url != null)
{
// get url domain
var parts = url.split('/');
if ((parts != null) && (parts.length >= 3))
{
return parts[2].toLowerCase();
}
}
return url;
};
searchshield.getUrlContents = function (url)
{
if (url == null)
return null;
// don't query if local url
if (url.indexOf("linkscanner://") != -1)
return null;
try
{
req = new XMLHttpRequest();
req.open("GET", url, false);
req.send(null);
if (req.status == 200)
return req.responseText;
else
return null;
}
catch (err)
{
// nothing to do
return null;
}
};
searchshield.parseLink = function (href, simpleMode)
{
var uri = {};
var parameter = {
complex: {
pattern: /^(?:([a-z]+):(?:([a-z]*):)?\/\/)?(?:([^:@]*)(?::([^:@]*))?@)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?::(\d+))?(?:([^:\?\#]+))?(?:\?([^\#]+))?(?:\#([^\s]+))?$/i,
element: ['source','scheme','subscheme','user','pass','host','port','path','query','fragment']
},
simple: {
pattern: /^(?:([a-z]+):\/\/)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?:\/)([^:\?]+)?(?:([\?|\#])([^\?]+))?$/i,
element: ['source','scheme','host','path','delimiter','query']
}
};
var mode = simpleMode !== false ? 'simple' : 'complex';
var pattern = parameter[mode].pattern;
var element = parameter[mode].element;
if (!href)
return uri;
var matches = href.match(pattern);
if (matches)
{
// --------------------
// iterate over the matches array and populate uri properties
// using the respective element parameter as the name.
// NOTE: set raw property type as String to make inArray()
// work properly with instanceof.
// --------------------
for (var i=0; i < matches.length; i++)
uri[element[i]] = new String(matches[i] || "");
// --------------------
// create an array, hostArray, from host, for example,
// host="www.google.com" and hostArray=["www","google","com"]
// --------------------
uri.hostArray = uri.host.split(".");
// --------------------
// create an array, qsArray, from query, for example,
// query='hl=en&q=javascript&btnG=Search&aq=f&aqi=g10&aql=&oq=&gs_rfai='
// qsArray=[{hl:'en'},{q:javascript}, . ,(qs_rfai:''}]
//
// $0=entire match, $1=capture 1, $2=capture 2
// must include $0 even though it is unused so
// the replace works properly
// --------------------
uri.qsArray = [];
uri.query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,
function ($0, $1, $2) {
if ($1) uri.qsArray[$1] = $2;
}
);
}
//non-standard urls require a fail-safe that relies on simply splitting the href
function splitLink(href)
{
// split the href on '/'
var linkParts = href.split("/");
// need domain and path
if ((linkParts == null) || (linkParts.length < 2))
return false;
var uri = {
delimiter: (linkParts[3]).substring(0,1),
host: linkParts[2],
hostArray: (linkParts[2]).split('.'),
path: (linkParts[3]).substring(1),
qsArray: {},
query: '',
scheme: (linkParts[0]).substring(0, linkParts[0].length-1),
source: href
};
return uri;
}
if (!uri.host)
uri = splitLink(href);
return uri;
};
// general functions
searchshield.arrayKeys = function (array)
{
var keys = new Array();
for(k in array)
keys.push(k);
return keys;
};
searchshield.inArray = function (key, array, caseSensitive, exactMatch)
{
if (! array instanceof Array)
return false;
if (caseSensitive !== true)
caseSensitive = false;
if (exactMatch !== false)
exactMatch = true;
if (key instanceof String)
{
for (var i=0; i < array.length; i++)
{
var k = caseSensitive ? key.valueOf() : key.valueOf().toLowerCase();
var a = caseSensitive ? array[i] : array[i].toLowerCase();
if(exactMatch && k === a)
return true;
else if (!exactMatch && (-1 !== k.indexOf(a)))
return true;
}
}
else if (key instanceof Array)
{
for (var i=0; i < array.length; i++)
for (var j=0; j < key.length; j++)
{
var k = caseSensitive ? key[j] : key[j].toLowerCase();
var a = caseSensitive ? array[i] : array[i].toLowerCase();
if (exactMatch && k === a)
return true;
else if (!exactMatch && (-1 !== k.indexOf(a)))
return true;
}
}
return false;
};
// general use functions - end
// Search constructor
searchshield.Search = function()
{
this.doc = null;
this.engine = null;
this.engines = null;
this.links = null;
this.uri = null;
this.searchHash = null;
this.checkUrl = null;
this.useLocalImgs = null;
this.clockUrl = null;
// create engine list (actually key/value object will be used)
this.engineList = {};
};
searchshield.Search.prototype.getSearchNames = function()
{ // order is important
var names = [
'Google',
'AVGGoogle',
'AltaVista',
'AVGYahoo',
'Yahoo',
'Bing',
'MSN', // MSN redirects to BING
'Baidu',
'Earthlink',
'AOL',
'Ask',
'Yandex',
'Seznam',
'Webhledani',
'eBay',
///temp 'Digg',
'Slashdot',
'Twitter',
'GMail',
'Facebook'
];
return names;
};
searchshield.Search.prototype.detectEngine = function(href)
{
if (!href)
return;
var aEng = searchshield.Search.prototype.getSearchNames();
var aEngLen = aEng.length;
for (var i=0; i < aEngLen; i++)
{
if (searchshield[aEng[i] + 'SearchEngine'].prototype.validSearch(href))
return aEng[i];
}
return;
};
searchshield.Search.prototype.addEngine = function(engine)
{
if (!this.engines)
this.engines = new Array();
this.engines.push(engine);
};
searchshield.Search.prototype.addLink = function(inElement, inHref)
{
if (!this.links)
this.links = new Array();
var hrefHash;
try
{
hrefHash = searchshield.avgCallFunc(this.doc, 'GetHash', inHref);
}
catch (e){}
var newNode = {
element: inElement,
href: inHref,
hash: hrefHash,
search: this.searchHash
};
this.links.push(newNode);
return newNode;
}
// process the search result page after all search engines have been added
searchshield.Search.prototype.process = function(doc)
{
// only process when searchshield is enabled
if (0 == searchshield.avgCallFunc(doc, 'GetSearchEnabled'))
return;
this.doc = doc;
this.href = this.doc.location.href;
this.uri = searchshield.parseLink(this.href);
try
{
this.searchHash = searchshield.avgCallFunc(this.doc, 'GetHash', this.href);
// get any previously active engine
this.engine = this.engineList[this.searchHash.toString()];
}
catch (e) {}
/*
Process Steps:
1. Add all supported search engines
2. Identify the active search engine
3. Get all document links and add AVG images
*/
// STEP 1 - Add all supported search engines
if (!this.engines)
{
var aEng = xplSearch.getSearchNames();
var aEngLen = aEng.length;
for (var i=0; i < aEngLen; i++)
{
xplSearch.addEngine(new searchshield[aEng[i]+'SearchEngine'](this));
}
}
// search the engines if we didn't find one
if (!this.engine)
{
// STEP 2 - Identify the active search engine
var engLen = this.engines.length;
for (var i = 0; i < engLen; i++)
{
if (this.engines[i].validSearch())
{
this.engine = this.engines[i];
break;
}
}
// create a new engine instance to store
this.engineList[this.searchHash.toString()] = this.engine;
// init this search, if < 1 either an error or disabled
//var sdkInit = 0;
//try {
// sdkInit = xpl_sdk.SXPL_InitSearch(this.href);
//}
//catch(e){}
//if (sdkInit < 1)
// return false;
}
// return immediately if there is not an active search engine
if (!this.engine)
return false;
try {
// base url to check for icons
this.checkUrl = searchshield.avgCallFunc(this.doc, 'GetIconUrl', '1');
// check if using linked or local icons
this.useLocalImgs = !searchshield.getUrlContents(this.checkUrl);
// get the clock url
this.clockUrl = searchshield.avgCallFunc(this.doc, 'GetIconUrl', '0');
}
catch(e){}
// STEP 3 - Get all document links and add AVG images
var alltags = this.doc.getElementsByTagName("*"); // this method works for IE, FF and Chrome
for (var i=0; i < alltags.length; i++)
{
// ignore verdicts
if (alltags[i].id && (alltags[i].id.indexOf("LXPLSS_") != -1))
continue;
//should the link be included? Make sure includeLink always returns an href else FALSE,
var href = this.engine.includeLink(alltags[i]);
if (!href)
continue;
var newNode = this.addLink(alltags[i], href);
this.engine.addImage(newNode, this.clockUrl, false);
}
return (this.links ? this.links.length : false);
};
//////////////// SEARCH ////////////////
//////////////// SEARCH ENGINE ////////////////
// Interface for a SearchEngine object
searchshield.SearchEngine = function(search)
{
this.search = search;
this.type = 'standard';
this.processFrames = false;
this.new_links = true;
this.onlyPrimaries = true;
this.inline = {
clockImage: "linkscanner://clock12.png",
image: [ "linkscanner://safe12.png",
"linkscanner://caution12.png",
"linkscanner://warning12.png",
"linkscanner://blocked12.png"
],
color: {
border: ["#00A120;", "#EAA500;", "#F57301;", "#D20003;"],
background: ["#C3E5CA;", "#FEEFAE;", "#FFD3B0;", "#F5D4C1;"]
}
};
this.filter_urls = [
"ad.doubleclick.net", "ads1.revenue.net", "aslads.ask.com",
"bluestreak.com", "clickbacktrack.net", "clickbank.net",
"clickboothlnk.com", "clickmanager.com", "clickserve.cc-dt.com",
"clickserve.dartsearch.net", "clicktraxmedia.com", "clk.atdmt.com",
"dpi-digialphoto.com", "feedpoint.net", "hypertracker.com",
"jdoqocy.com", "kqzyfj.com", "m1428.ic-live.com",
"mediaplex.com", "mr.mdmngr.com", "n339.asp-cc.com",
"offeredby.net", "offerweb.com", "pinktrax.com",
"pinktrax.com", "pixel1523.everesttech.net", "qckjmp.com",
"r.rd06.com", "revenuewire.net", "s0b.bluestreak.com",
"s2.srtk.net", "servedby.advertising.com", "store.yahoo.com",
"tf8.cpcmanager.com", "thetoptracker.com", "track.searchignite.com",
"tracking.searchmarketing.com", "www.dpbolvw.net", "www.rkdms.com",
"www.yellowbookleads.com"
];
this.shortened_urls = [
"3.ly", "bit.ly", "is.gd", "tr.im", "short.to", "tiny.cc", "tinyurl.com"
];
this.showCleanVerdicts = true;
this.showLowRiskVerdicts = true;
this.showMedRiskVerdicts = true;
this.VeriSignSplit = searchshield.VERISIGN_SPLIT_NOTEST;
};
searchshield.SearchEngine.prototype.flyoverExists = function (doc)
{
return !!doc.getElementById("XPLSS_Flyover");
};
searchshield.SearchEngine.prototype.inlineExists = function (doc)
{
return !!doc.getElementById("XPLSS_InlineFlyover");
};
searchshield.SearchEngine.prototype.validSearch = function(href) { return false; };
searchshield.SearchEngine.prototype.includeLink = function(link) { return false; };
searchshield.SearchEngine.prototype.insertNodes = function(node, doc)
{
var element = node.element;
var parentNode = node.element.parentNode;
if (parentNode == null)
{
// try and find element again based on the hash
element = doc.getElementById("xplid_" + node.hash);
parentNode = !!element ? element.parentNode : null;
}
var insertNode = !!element ? element.nextSibling : null;
while ((insertNode != null) &&
(insertNode.tagName != null) &&
(insertNode.tagName == "SPAN"))
{
insertNode = insertNode.nextSibling;
}
return [insertNode, parentNode];
};
searchshield.SearchEngine.prototype.addImage = function(node, image, hidden)
{
var element = node.element;
var hash = node.hash;
var score = node.score;
// set verdict display configuration
var doc = element.ownerDocument;
if (!doc.getElementById('XPLSS_Flyover'))
searchshield.initFlyover(doc, this);
// get the proper insertion point for the image
var insertNodes = this.insertNodes(node, doc);
var insertNode = insertNodes[0];
var parentNode = insertNodes[1];
if (!parentNode)
return;
// see if we already have an image
if ((insertNode != null) &&
(insertNode.id != null) &&
(insertNode.id.indexOf("XPLSS_") > -1))
{
return;
}
// mark search result anchor so it isn't processed repeatedly
if (score == undefined)
element.setAttribute("avglschecked", hash + "S" + this.VeriSignSplit);
// create a new image
var img = doc.createElement('img');
img.src = image;
img.id = "XPLSS_" + hash;
img.style.borderStyle = "none";
img.style.margin = "0 3px";
// for IE, specify these style attributes to prevent inadvertent inheritance from parent
if (img.width && img.height)
{
img.style.width = img.width + 'px';
img.style.height = img.height + 'px';
}
// apply custom element styles
this.updateElementStyle(img, this.addImageStyle);
// create the link element
var anchor = doc.createElement("A");
anchor.setAttribute("id", "LXPLSS_" + hash);
if ((hidden != null) && (hidden == true))
{ // hiding the parent will also hide its child nodes
anchor.style.display = "none";
}
// Default anchor styles
//Over-ride possible border style with inline declaration
anchor.style.borderStyle = "none";
// apply custom element styles
this.updateElementStyle(anchor, this.addAnchorStyle);
if (score == searchshield.SCORE_SS_VERISIGN)
{
anchor.style.textDecoration = "none";
anchor.style.background = "none";
}
// append the image to the link
anchor.appendChild(img);
// insert the node as either a sibling or a child
if (insertNode != null)
parentNode.insertBefore(anchor, insertNode);
else
parentNode.appendChild(anchor);
return anchor;
};
searchshield.SearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru)
{
var updated = false;
var frameDoc = this.search.doc;
var docFrames = frameDoc.frames;
var frameElem;
if (docFrames && this.processFrames)
{
for (var i=0; i < docFrames.length; i++)
{
try {
if (docFrames[i].document.getElementById(hash))
{
frameElem = docFrames[i].frameElement;
frameDoc = docFrames[i].document;
break;
}
}
catch(err){}
}
}
while ((element = frameDoc.getElementById(hash)) != null)
{
// check configuration to determine if verdict display property
var showVerdict = true;
var nSeverity = Number(score - 1);
switch (nSeverity)
{
case searchshield.XPLCHECK_RESULT_SEV_LOW:
showVerdict = this.showLowRiskVerdicts;
break;
case searchshield.XPLCHECK_RESULT_SEV_MED:
showVerdict = this.showMedRiskVerdicts;
break;
case searchshield.XPLCHECK_RESULT_SEV_NONE:
showVerdict = this.showCleanVerdicts;
break;
default:
if (score == searchshield.SCORE_SS_VERISIGN)
showVerdict = this.showCleanVerdicts;
break;
}
// remove image if no url specified
if ((!showVerdict) || (image == null) || (image.length < 1))
{
// hide the parent anchor node
element.parentNode.style.display = "none";
// mark the id as being hidden (element is the image)
element.id = element.id + "H";
updated = true;
// if not a verisign score
if (score != searchshield.SCORE_SS_VERISIGN)
continue;
}
// cleanup flyover, replace any new lines or single quotes
flyover = searchshield.CleanupHTML(flyover);
// mark the id as having been updated
element.id = element.id + "U" + score;
element.src = image;
element.attachEvent("xonmouseover", function(e){avglsflyover.popup(e, hash, search, flyover)});
element.attachEvent("xonmouseout", function(e){avglsflyover.hide(e)});
// check for attribute updates (elementAttribute is an associative array (i.e., object)
if (this.elementAttribute)
{
for (a in this.elementAttribute)
{
if(this.elementAttribute[a])
element.setAttribute(a, this.elementAttribute[a]);
}
}
// To dynamically reduce verdict image size if it causes its container to scroll
// when not showing alt images determine if the element containing
// the verdict image is scrolling and decrease the image size by
// the scroll amount (min size is 80% or original)
var reduceBy = 0.8;
var scrl = 0;
if (!alt_image || this.omitAltImage || this.VeriSignSplit == searchshield.VERISIGN_SPLIT_TESTB)
{
try{
var maxLoop = 5;
var cN = element.parentNode.parentNode; //image->anchor->containerNodes.
while (cN && maxLoop--)
{
if (cN.tagName == "DIV" || cN.tagName == "SPAN")
{
// get object height depending on ie document mode
var clientHeight = (cN.clientHeight == 0 ||
(this.search.doc.documentMode && this.search.doc.documentMode < 8)) ?
cN.offsetHeight :
cN.clientHeight;
scrl = cN.scrollHeight - clientHeight;
break;
}
cN = cN.parentNode;
}
if (0 < scrl)
{
var eH = (element.height - scrl)/element.height;
if (reduceBy > eH)
eH = reduceBy;
var newDim = Math.ceil(eH*element.height);
element.height = newDim;
element.width = newDim;
element.style.height = newDim + "px";
element.style.width = newDim + "px";
}
}
catch(e){}
}
// set default style attributes
element.style.display = "";
// if verisign icon showing move our icon up for better centering of the 2
// except for IE7 browser - it does not like this style
try {
var ieVersion = parseFloat(navigator.appVersion.split("MSIE")[1]);
if (alt_image && (alt_image.length > 0) && ieVersion != 7)
element.style.verticalAlign = "10%";
}
catch(err){};
// apply custom element styles
this.updateElementStyle(element, this.updateImageStyle)
// update the click thru
var link = this.search.doc.getElementById("L" + hash);
if (link)
{
link.href = click_thru;
link.id = link.id + "U" + score;
}
updated = true;
// add the alternate image if supplied BUT not on avg yahoo
if ((alt_image) &&
(alt_image.length > 0) &&
(!this.omitAltImage) &&
(this.VeriSignSplit != searchshield.VERISIGN_SPLIT_TESTB))
{
var vhash = hash.substring(hash.indexOf("_")+1);
// create a temporary link node
var tmp_node = {
element: element.parentNode,
href: altClick_thru,
hash: vhash + "VU" + score,
search: this.searchHash,
score: score
};
var altAnchor = this.addImage(tmp_node, alt_image, false);
if (altAnchor && altAnchor.firstChild)
{
altAnchor.firstChild.setAttribute("xonmouseover", "");
altAnchor.href = altClick_thru;
}
}
}
if (updated != false)
{
this.resizeFrame(frameElem);
return true;
}
return false;
};
searchshield.SearchEngine.prototype.updateElementStyle = function (element, elementStyle)
{
if (elementStyle)
{ // a NULL attribte value will unset it
for(attr in elementStyle)
{
try {
if (element.style.setAttribute)
element.style.setAttribute(attr, elementStyle[attr]);
else
element.style[attr] = elementStyle[attr];
} catch(err){}
}
}
};
searchshield.SearchEngine.prototype.resizeFrame = function (frameElem)
{ // resize frame to prevent unwanted scrolling after inserting verdicts
// ignore inline and non-frame engines
if ((this.type == 'inline') || (!this.processFrames))
return;
// ensure all required elements are available
if ((frameElem == null) || (frameElem.style == null) || (frameElem.contentWindow == null))
return;
// if frame is scrolling vertically then resize
var frameHeight = parseInt(frameElem.style.height, 10);
if (!isNaN(frameHeight) && (frameHeight < frameElem.contentWindow.document.body.scrollHeight))
frameElem.style.height = frameElem.contentWindow.document.body.scrollHeight + 'px';
return;
};
searchshield.SearchEngine.prototype.getImgElement = function (element)
{ // return an xpl img element associated with a given element
if (element == null)
return null;
// go up the parent tree looking for a header or div
while ( (element.parentNode != null) &&
(element.tagName.charAt(0) != "H") &&
(element.tagName.charAt(0) != "D") &&
(element.tagName.charAt(0) != "T") )
{
element = element.parentNode;
}
// if all the way to the top, nothing
if ((element.tagName == "HTML") || (element == null))
return null;
// get image tags, if none we are done
var imgTags = element.getElementsByTagName("IMG");
if ((imgTags == null) || (imgTags.Length < 1))
return null;
for (var i = 0; i < imgTags.length; i++)
{
if ((imgTags[i].id == null) || (imgTags[i].id.indexOf("XPLSS_") == -1))
continue;
return imgTags[i];
}
// else didn't find anything
return null;
};
searchshield.SearchEngine.prototype.setRatingsConfig = function (doc)
{
// get verdict configuration, need at least severity
var results = searchshield.avgCallFunc(doc, 'GetRatingsConfig');
var parts = !!results ? results.split('::') : null;
if (parts != null && parts.length >= 5)
{ //if set to default then get config value
if (this.showCleanVerdicts === true)
this.showCleanVerdicts = (parseInt(parts[0]) == 1) ? true : false;
if (this.showLowRiskVerdicts === true)
this.showLowRiskVerdicts = (parseInt(parts[1]) == 1) ? true : false;
if (this.showMedRiskVerdicts === true)
this.showMedRiskVerdicts = (parseInt(parts[2]) == 1) ? true : false;
this.VeriSignSplit = (parseInt(parts[4]));
}
return true;
};
searchshield.SearchEngine.prototype.init_inline_ratings = function (doc)
{
if ((doc == null) || (doc.getElementById("XPLSS_InlineFlyover")))
return;
// create the popup box
var box = doc.createElement("DIV");
try {
box.setAttribute("id", "XPLSS_InlineFlyover");
box.style.visibility = "hidden";
box.style.left = "-5000px";
box.style.position = "absolute";
box.style.zIndex = "9999";
box.style.padding = "0px 0px";
box.style.marginLeft = "0px";
box.style.marginTop = "0px";
box.style.overflow = "hidden";
box.style.wordWrap = "break-word";
box.style.color = "black";
box.style.fontSize = "10px";
box.style.textAlign = "left";
box.style.lineHeight = "130%";
doc.body.appendChild(box);
box = null;
}
catch(boxErr){}
};
searchshield.SearchEngine.prototype.show_inline_ratings = function (doc, node, image)
{
var href = node.href;
var anchor = node.element;
if ((href == null) || (href.length < 1))
return;
if (avglsinlineflyover.imageExists(anchor))
return;
// mark search result anchor so it isn't processed repeatedly
anchor.setAttribute("avglschecked", "1");
// get verdict
this.display_inline(doc, anchor, href, node, false);
};
searchshield.SearchEngine.prototype.display_inline = function (doc, anchor, href, node, update, min_severity)
{
// min_severity is the lowest severity to display, so setting it to
// 1 would not display safe icons
var results = searchshield.avgCallFunc(doc, 'MalsiteCheck', href);
if (results == null)
return;
var parts = results.split('::');
// need at least severity
if (parts == null)
return;
var nSeverity = parseInt(parts[0]);
if (!update && nSeverity == searchshield.XPLCHECK_RESULT_SEV_NONE)
{
var shortUrl = searchshield.FilterUrl(href, this.shortened_urls);
if (shortUrl)
{ // shortened url verdicts display later
var engine = this;
anchor.attachEvent("xonmouseover", function(event){avglsinlineflyover.mouseOverHandler(event, doc, engine)}, false);
return;
}
}
//blacklist url
var blShortUrl = false;
if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_BLOCK)
{
var shortUrl = searchshield.FilterUrl(href, this.shortened_urls);
if (shortUrl)
blShortUrl = true;
}
// need xlated cat tag and category
if (parts.length < 3)
return;
// check the minimum to display
if ((min_severity != null) && (nSeverity < min_severity))
return;
if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_LOW && !this.showLowRiskVerdicts)
{
if (update)
this.avg_ls_inline_hide_verdict(anchor);
return;
}
if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_MED && !this.showMedRiskVerdicts)
{
if (update)
this.avg_ls_inline_hide_verdict(anchor);
return;
}
if (nSeverity == searchshield.XPLCHECK_RESULT_SEV_NONE && !this.showCleanVerdicts)
{
if (update)
this.avg_ls_inline_hide_verdict(anchor);
return;
}
if (update)
this.update_inline_image(anchor, nSeverity, parts);
else
this.add_inline_image(doc, anchor, nSeverity, parts, blShortUrl);
};
searchshield.SearchEngine.prototype.avg_ls_inline_hide_verdict = function (anchor)
{
var image = avglsinlineflyover.getImage(anchor);
if (image)
{
image.style.display = "none";
if (image.parentNode && image.parentNode.id == "avg_ls_anch")
image.parentNode.style.display = "none";
}
};
searchshield.SearchEngine.prototype.update_inline_image = function (anchor, nSeverity, aRisk)
{
// update the image already in the page
if (anchor && anchor.firstChild)
{
var html = '';
var image = '';
if (aRisk != null && nSeverity != null)
{
var riskCategory = aRisk[1];
var riskName = aRisk[2];
var bgColor = this.inline.color.background[nSeverity];
var borderColor = this.inline.color.border[nSeverity];
image = this.inline.image[nSeverity];
html = avglsinlineflyover.build(riskCategory, riskName, bgColor, borderColor);
}
var imageElem = anchor.firstChild;
imageElem.src = image;
if ( html && html.length > 0 )
{
imageElem.setAttribute("title", "");
imageElem.attachEvent("xonmouseover", function(e){avglsinlineflyover.popup(e, html)});
imageElem.attachEvent("xonmouseout", function(e){avglsinlineflyover.hide(e)});
}
}
};
// add the image to the page
searchshield.SearchEngine.prototype.add_inline_image = function (doc, anchor, nSeverity, aRisk, blShortUrl)
{
if (anchor == null || anchor.parentNode == null)
return null;
// get the proper insertion point for the image
var insertNode = anchor.nextSibling;
while ((insertNode != null) &&
(insertNode.tagName != null) &&
(insertNode.tagName == "SPAN"))
{
insertNode= insertNode.nextSibling;
}
// see if we already have an image anchor
if ((insertNode != null) &&
(insertNode.id != null) &&
(insertNode.id == "avg_ls_anch"))
{
return null;
}
var html = '';
var image = this.inline.clockImage;
if (aRisk != null && nSeverity != null)
{
var riskCategory = aRisk[1];
var riskName = aRisk[2];
var bgColor = this.inline.color.background[nSeverity];
var borderColor = this.inline.color.border[nSeverity];
image = this.inline.image[nSeverity];
var blUrl;
if (blShortUrl)
{
var aRiskName = riskName.split(':');
var sUrl = searchshield.checkUrl(aRiskName[1]);
blUrl = {};
blUrl.riskNameLabel = aRiskName[0] + ': ';
blUrl.riskCategory = riskCategory;
blUrl.bgColor = bgColor;
blUrl.borderColor = borderColor;
blUrl.sUrl = sUrl;
}
else
{
html = avglsinlineflyover.build(riskCategory, riskName, bgColor, borderColor);
}
}
doc = anchor.ownerDocument;
var img = doc.createElement("img");
img.src = image;
img.setAttribute("id","avg_ls_image");
img.style.width = "12px";
img.style.border = "none";
img.style.padding = "0 3px";
img.style.margin = "0";
img.style.display = "inline";
if ((html && html.length > 0) || (blUrl != undefined))
{
img.setAttribute("title", "");
img.attachEvent("xonmouseover", function(e){avglsinlineflyover.popup(e, html, blUrl)});
img.attachEvent("xonmouseout", function(e){avglsinlineflyover.hide(e)});
}
// create the link element
var newAnchor = doc.createElement("A");
newAnchor.setAttribute("id", "avg_ls_anch");
newAnchor.appendChild(img);
img = null;
// insert the node as either a sibling or a child
if (insertNode != null)
anchor.parentNode.insertBefore(newAnchor, insertNode);
else
anchor.parentNode.appendChild(newAnchor);
return newAnchor;
};
//////////////// SEARCH ENGINE ////////////////
/////////////// GOOGLE SEARCH ENGINE ///////////////
searchshield.GoogleSearchEngine = function(search)
{
searchshield.SearchEngine.call(this, search);
this.onlyPrimaries = false;
};
searchshield.GoogleSearchEngine.prototype = new searchshield.SearchEngine();
searchshield.GoogleSearchEngine.prototype.constructor = searchshield.GoogleSearchEngine;
searchshield.GoogleSearchEngine.prototype.name = "google"; // the name by which the search engine is known (always lowercase)
searchshield.GoogleSearchEngine.prototype.validSearch = function(href) {
var uri;
if (typeof(this.search) === 'undefined' || null === this.s
Last modified: 2012-04-29 01:23:53, 159328 bytes cached
My Note Board
about
Note: Guest users may not post
You must be logged in to post comments to this page.
Recently posted elsewhere...
DJ0AJ de
DJ0AJ
2012-05-16 20:09:08 UTC
EVERYONY GOOD --DX-VY73 DJOAJ EKREM
W4W de
N4JTQ
2012-05-16 19:45:19 UTC
W4W Sevier County TN Field day
*W4W : Sevier County Field Day*
Start Date: *June 23, 2012*
End Date: *June 24, 2012*
Record ID: 8062
Requisitioned by: *Sevier County Emergency Radio Service*
Call Sign: KJ4HPM Club Call Sign
Address: 2005 Spence Mountain Loop
Sevierville, TN 37876
Email: n4jtq@live.com
Phone: 865-446-4535
Rick Sawaya. QSL Manager N4JTQ
*Northview Optimist Park*
This 24-acre park in northern Sevierville includes two soccer fields,
two lighted baseball/softball fields, lighted walking 0.3 mile walking
trail, picnic area, a picnic pavilion, and restrooms.
Go east (on I-40 W)
Depart I-40 West
1.7 mi
At exit 407, take ramp right for TN-66 toward Sevierville / Pigeon
Forge / Gatlinburg
0.4 mi
Turn left onto TN-66 South / Snyder Rd / Winfield Dunn Pkwy
0.4 mi
Turn right onto W Dumplin Valley Rd
1.1 mi
Arrive at Kodak Northview Optimist Park on the left
The last intersection is Hodges RdIf you reach TN-139 / Douglas
Dam Rd, you've gone too far!
Kodak, TN
Kodak Northview Optimist Park
We will be using the following log, if you plan on attending then download as many copies that you feel that you will need..
http://www.arrl.org/files/file/Field-Day/2012/2012-FD-LOG.pdf
All logs must be turned into N4JTQ so that we can send in for points..
Setup will be early Saturday morning, bring your equipment, cable, antenna's, whatever you think you will need to operate, we will not have any equipment to loan or lend out this year, you will be responsible for your equipment..
There will not be any power at the location so bring your own generators or solar panels or batteries, what ever you will get your power from..
Rules,....
http://www.arrl.org/files/file/Field-Day/2012/2012-FD-Rules.pdf
VHF Operation,...
http://www.arrl.org/files/file/Field-Day/2012/2012-FD-VHF-Tips.pdf
Frequencies we will be on..
28.400 -10 meters
3.950 - 80 meters
14.265 - 20 meters
7.220 - 40 meters
21.350 - 15 meters
FM
For Field Day operating, FM is probably the easiest VHF mode to implement. You’ll have little trouble finding FM rigs to use; even a
hand-held transceiver can make a fine Field Day rig. FM doesn’t have the range of CW or SSB, but it is the most popular
communications mode on the VHF and UHF bands. You’ll find the greatest amount of FM simplex activity on the 2-meter band,
although 6 meter FM may be worth a try as well. Remember that Field Day rules prohibit the use of repeaters. This means you’ll
have to hunt for contacts on the recognized simplex frequencies.
QSL INFO
All QSL cards should be sent to:
N4JTQ Rick Sawaya Sr.
W4W Field Day Event
2005 Spence Mountain Loop
Sevierville , TN 37876
You must send a SASE # 10 envelope with your QSL card, if no SASE you will not receive a QSL card back !! Donations are welcome to the club..
Again anyone is welcome to come and join us, bring your own equipment to operate.
Also if you wish to just stop by and say hello that would be great, we will have some items to give out during this event !!
Thanks
http://www.arrl.org/files/file/Field-Day/2012/2012-FD-LOG.pdf
www.arrl.org
ZL2WL de
UA1CFE
2012-05-16 19:27:31 UTC
16.05.2012 14.185 18-35 UTS ua1cfe Peter 73!
S55ST de
S55ST
2012-05-16 19:09:55 UTC
EPC#14076
DNC#3667
BDM#1388
KC9VER de
PD5T
2012-05-16 19:00:22 UTC
Hello thanks for signing my web contact log, hope to work you soon 73 Bert.
G1YPG de
JA6XZS
2012-05-16 18:57:40 UTC
Hello Steve, welcome to QRZ.com!!..73 & Good night, Kaz
Z35G de
JA6XZS
2012-05-16 18:45:21 UTC
Hello Jane, thnak you for the QSO. 73 & cu agn, Kaz
SP9JOP de
JA6XZS
2012-05-16 18:39:42 UTC
Hello Piotr, welcome to QRZ.com!!..73, Kaz
M1CYI de
M1CYI
2012-05-16 18:36:39 UTC
Greetings to you all from the UK 73s and Good DX
EB1CPR de
JA6XZS
2012-05-16 18:32:03 UTC
Buenos dias Roberto, welcome to QRZ.com!!..73, Kaz
N0C de
JA6XZS
2012-05-16 18:31:35 UTC
Hello..., welcome to QRZ.com!!..73, Kaz
KJ6VJV de
JA6XZS
2012-05-16 18:31:06 UTC
Hello Michael, welcome to QRZ.com!!..73, Kaz
PY5IH de
JA6XZS
2012-05-16 18:30:45 UTC
Hello Jamil, welcome to QRZ.com!!..73, Kaz
LA3NO de
JA6XZS
2012-05-16 18:30:25 UTC
Hello Jens, welcome to QRZ.com!!..73, Kaz
SM0YHN de
JA6XZS
2012-05-16 18:30:00 UTC
Hello Thorbjörn, welcome to QRZ.com!!..73, Kaz
PU2WQQ de
JA6XZS
2012-05-16 18:29:30 UTC
Hello Florisvaldo, welcome to QRZ.com!!..73, Kaz
N0SMX de
G3AGW
2012-05-16 18:17:23 UTC
Dennis please could you sign my web visitors tab on my page , Thanks Steve
2E0EFX de
G3AGW
2012-05-16 18:03:18 UTC
Brian please could you sign my web visitors tab on my page , Thanks Steve
VE7UB de
G3AGW
2012-05-16 18:01:34 UTC
Fred please could you sign my web visitors tab on my page , Thanks Steve
G0NFA de
G3AGW
2012-05-16 18:01:02 UTC
Derek please could you sign my web visitors tab on my page , Thanks Steve