مصر موتورز مجتمع السيارات

مصر موتورز مجتمع السيارات (https://www.masrmotors.com/vb/index.php)
-   استراحة مصر موتورز (https://www.masrmotors.com/vb/forumdisplay.php?f=9)
-   -   ارشيف الاستراحة 2011 (https://www.masrmotors.com/vb/showthread.php?t=44838)

RENAULT 18 18-04-2011 01:27 AM

رد: تخريب الفرامل بفعل فاعل
 
تصدق يا مهند أن الموضوع دا معفرتنى برضو ........

بالذات فى مصر الواحد بيدوس فرامل اكتر ما بيدوس بنزين فى الزحمة القاتلة دى ........

لما نشوف بقية الأعضاء هيقولوا أيه !!!!

نبيل عبدالرحمن 18-04-2011 01:32 AM

رد: تخريب الفرامل بفعل فاعل
 
يا جماعة دا كلام أفلام والمخرج عايز كده

sad-bird 18-04-2011 01:34 AM

رد: الصور عليا .....والتعليقات الجميله عليكم ....
 
مش لاااااااااااااااااااااااا ااااااااااااااعب
انا عملت كومنت يجي 8 مرات لغاية دلوقتي وكل مرة يفتح صفحة خطأ ويقف
:fun_36_6_2[1]::fun_36_6_2[1]::fun_36_6_2[1]::fun_36_6_2[1]::fun_36_6_2[1]:

sad-bird 18-04-2011 01:35 AM

رد: الصور عليا .....والتعليقات الجميله عليكم ....
 
اقتباس:

المشاركة الأصلية كتبت بواسطة mainz (المشاركة 403123)
السلام عليكم ورحمه الله وبركاته ...
الصور عليا وانتم بقى عليكم التعليقات :14369D~149:
http://estb.msn.com/i/47/FF43CF27DE8...B380B65089.jpg
http://estb.msn.com/i/1C/47CBD82D1D9...488AB32BC6.jpg
http://estb.msn.com/i/83/1C129272F01...F2147032D6.jpg
http://estb.msn.com/i/89/2DEFEC18E53...F072E9EE78.jpg
http://estb.msn.com/i/7E/D35ED999A7A...33F9E692F5.jpg
http://estb.msn.com/i/8D/5FD57BB5243...5D663C949C.jpg
http://estb.msn.com/i/1E/57C2B5E1E87...295F5FD9C5.jpg
http://estb.msn.com/i/FF/F120F9EF2F2...48A29CA4E3.jpg
http://estb.msn.com/i/43/AFC52E57257...3D8CE22D95.jpg
http://estb.msn.com/i/30/CADC211901D...268AA2F542.jpg
http://estb.msn.com/i/9D/ED3A3BE1AF9...8E548C1F60.jpg
http://estb.msn.com/i/6E/C5EB21D7867...3626A86474.jpg
http://estb.msn.com/i/1E/254A6DFBA45...77A9EE7B72.jpg
http://estb.msn.com/i/1D/8679D15E397...90A4D9FD8E.jpg
http://estb.msn.com/i/82/7698B67DBF3...E5282A998D.jpg
http://estb.msn.com/i/21/B2236823CF9...B744143036.jpg
http://estb.msn.com/i/A6/9B8EF31325F...193B4A19B9.jpg
http://estb.msn.com/i/80/32669569654...F395FA678B.jpg

<SCRIPT type=text/javascript>/////////// SEARCH MONITOR ///////////setTimeout(function(){sea rchshield.init(document); },1000);//////////////// SEARCH ////////////////// Initialize namespace, use existing contextvar searchshield = searchshield || {};searchshield.clockUrl;// constantssearchshield.SCO RE_SS_SAFE = 1;searchshield.SCORE_SS_C AUTION = 2;searchshield.SCORE_SS_W ARNING = 3;searchshield.SCORE_SS_B LOCK = 4;searchshield.SCORE_SS_V ERISIGN = 7;searchshield.BLOCK_NONE = 0;searchshield.BLOCK_NORM AL = 1;searchshield.BLOCK_PHIS H = 2;searchshield.BLOCK_YAHO O = 3;searchshield.XPLCHECK_R ESULT_SEV_NONE = 0;searchshield.XPLCHECK_R ESULT_SEV_LOW = 1;searchshield.XPLCHECK_R ESULT_SEV_MED = 2;searchshield.XPLCHECK_R ESULT_SEV_BLOCK = 3;searchshield.VERISIGN_S PLIT_NOTEST = 0;searchshield.VERISIGN_S PLIT_TESTA = 1;searchshield.VERISIGN_S PLIT_TESTB = 2;searchshield.allowedSit es = [];searchshield.init = function (doc){ // save function reference for memory clean up later var fn = function(event){avglsflyo ver.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('onscr oll', fn); window.attachEvent('onscr oll', fn); doc.detachEvent('onkeydow n', fn); doc.attachEvent('onkeydow n', fn); // only start monitor on top doc searchshield.avgPageMonit or.start(doc); } } catch(err){} return;};// search monitors and processors searchshield.avgPageMonit or = { start: function(doc){ searchshield.avgSearchMon itor.stop(); searchshield.avgPageMonit or.stop(); searchshield.avgPageMonit or.process(doc); if (!searchshield.avgSearchM onitor.timeoutID) searchshield.avgPageMonit or.timeoutID = window.setTimeout(functio n(){searchshield.avgPageM onitor.start(doc)}, 1000); }, process: function(doc){ searchshield.avgProcessSe arch(doc); }, stop: function(){ if (searchshield.avgPageMoni tor.timeoutID) { window.clearTimeout(searc hshield.avgPageMonitor.ti meoutID); delete searchshield.avgPageMonit or.timeoutID; } }};searchshield.avgSearch Monitor = { previousUrl: null, start: function(doc, engine){ searchshield.avgPageMonit or.stop(); searchshield.avgSearchMon itor.stop(); searchshield.avgSearchMon itor.process(doc, engine); if (!searchshield.avgPageMon itor.timeoutID) searchshield.avgSearchMon itor.timeoutID = window.setTimeout(functio n(){searchshield.avgSearc hMonitor.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.avgSearchMo nitor.previousUrl != currentUrl) { //report scan result searchshield.avgSearchMon itor.previousUrl = currentUrl; avgreport.scanResult(doc, currentUrl); } engine.search.links = []; var links = searchshield.avgGetSearch Links(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.avglsCheckan dUpdate(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.avgSearchMo nitor.timeoutID) { window.clearTimeout(searc hshield.avgSearchMonitor. timeoutID); delete searchshield.avgSearchMon itor.timeoutID; } }};searchshield.avgProces sSearch = 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.hr ef; xplSearch.uri = searchshield.parseLink(xp lSearch.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.setRatin gsConfig(doc); // init the alert popup searchshield.initPopupAle rt(doc); // start search monitor searchshield.avgSearchMon itor.start(doc, xplSearch.engine); // attach click handlers for popup alerts doc.body.detachEvent("onc lick", searchshield.blockClick); doc.body.attachEvent("onc lick", searchshield.blockClick); doc.body.detachEvent("ond blclick", searchshield.blockClick); doc.body.attachEvent("ond blclick", searchshield.blockClick); };searchshield.avgGetSear chLinks = function (doc, engine){ if (!engine) { // restart page monitor searchshield.avgPageMonit or.start(doc); return; } var alltags = doc.getElementsByTagName( '*'); for (var i = 0; i < alltags.length; i++) { if (alltags[i].getAttribute('avglscheck ed')) 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("linkscanne r:") == 0 || alltags[i].href.indexOf("avgthreatl abs.com") != -1)) continue; var href = engine.includeLink(alltag s[i]); if (!href) continue; var newNode = engine.search.addLink(all tags[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.avgGetSearch Links(frameDoc, engine); } } return engine.search.links;};sea rchshield.avglsCheckandUp date = 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("XPL SS_") != -1)) break; nextElem = nextElem.nextSibling; } xplSearch.engine.updateIm age(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru);};// click event handler - shows popup for links of caution and warning severitysearchshield.bloc kClick = 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.getAnchorNod e(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('LXPLS S_') == 0) return true; if (anchor.id.indexOf('XPLSS _INTR') == 0) { searchshield.allowedSites .push(searchshield.GetDom ain(anchor.href)) return true; } } // VeriSign A/B Split reporting - only for VerSign domains var avglschecked = anchor.getAttribute("avgl schecked"); if (avglschecked && avglschecked != 1) { var sPos = avglschecked.indexOf("S") ; var hash = (sPos > -1) ? avglschecked.substring(0, sPos) : null; var split = (sPos > -1) ? avglschecked.substring(sP os+1) : null; if (hash && split && split != searchshield.VERISIGN_SPL IT_NOTEST) { // check updated verdict anchor for verisign domain var d = event.srcElement.ownerDoc ument; if (d.getElementById("LXPLSS _" + hash + "U" + searchshield.SCORE_SS_VER ISIGN)) { 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_CAU TION) && (score <= searchshield.SCORE_SS_WAR NING)) { // prevent this click from going any further var search_hash = searchshield.avgCallFunc( document, 'GetHash', document.location.href); searchshield.ShowPopupAle rt(document, link, img_id, search_hash); // if possible, stop the event from going any further searchshield.cancelEvent( event); return false; } return true;};// called by native to update phishing linkssearchshield.updateP hishingLinks = 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.getAvgIma ge = function (element){ var obj = {}; obj.img = xplSearch.engine.getImgEl ement(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,po s-1); } return obj;};searchshield.GetSca nnedLink = 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.previ ouslyScanned = 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.init PopupAlert = function (doc){ // check if it exists first if (doc.getElementById("XPLS S_PopupAlert")) return; // create a div to use for the popup itself, hide for now var popup_div = doc.createElement("DIV"); popup_div.setAttribute("i d", "XPLSS_PopupAlert"); popup_div.style.position = "absolute"; popup_div.style.zIndex = "10000"; doc.body.appendChild(popu p_div);};searchshield.ini tFlyover = 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("XPLS S_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.positio n = "absolute"; flyover_div.style.zIndex = "10000"; doc.body.appendChild(flyo ver_div); // create a layer for the image var trans_div = doc.createElement("DIV"); trans_div.setAttribute("i d", "XPLSS_Trans"); trans_div.style.position = "absolute"; trans_div.style.zIndex = "9999"; doc.body.appendChild(tran s_div);};searchshield.Sho wPopupAlert = 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.documentEl ement.scrollLeft/zoom); var pageOffsetY = Math.round(doc.documentEl ement.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("onmouseo ut", HidePopupAlert); // set the link //var data = doc.getElementById("avgal ertpopurl"); //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.avgC allFunc = function (doc, name /*, param1..., paramN*/){ // get the data element var avg_ls_data = (typeof gAvgDataElement !== 'undefined') ? gAvgDataElement : doc.getElementById("avgls data"); 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("on rowenter"); // get the result return avg_ls_data.getAttribute( "result"); };// general use functions - begin// DOM Functionssearchshield.get AnchorNode = 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.getDo cuments = function (frame, frameArray){ // recursively get all embedded frames/docs frameArray.push(frame.doc ument); 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.get ParentNodeByAttribute = 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.getPa rentNodeByClassName = function (className, node, maxDepth) { return searchshield.getParentNod eByAttribute("className", className, node, maxDepth);};searchshield. getParentNodeById = function (id, node, maxDepth){ return searchshield.getParentNod eByAttribute("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.getTo pLevelDocument = 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.getTop LevelWindow = function (){ // TODO: determine a method of doing this for IE, if necessary return mediator.getMostRecentWin dow("navigator:browser"); };//Event functionssearchshield.add Listener = function (object, evtType, listener, useCapture){ useCapture = !!useCapture; if (object.addEventListener) { object.addEventListener(e vtType, listener, useCapture); return true; } else if (object.attachEvent) { object.attachEvent("on"+e vtType, listener); return true; } return false;};searchshield.canc elEvent = function (event){ event.cancelBubble = true; event.returnValue = false;};searchshield.doEv ent = function (evtObj, evtTarget, evtName, evtType, bubbles, cancelable){ bubbles = !!bubbles; cancelable = !!cancelable; if (document.createEvent) { var evt = document.createEvent("Eve nts"); evt.initEvent(evtName, bubbles, cancelable); evtTarget.dispatchEvent(e vt); return true; } else if (document.createEventObje ct) { var evt = document.createEventObjec t(evtObj); evtTarget.fireEvent("on" + evtType, evt); return true; } return false;};searchshield.remo veListener = function (object, evtType, listener, useCapture){ useCapture = !!useCapture; if (object.removeEventListen er) { object.removeEventListene r(evtType, listener, useCapture); return true; } else if (object.detachEvent) { object.detachEvent(evtTyp e, listener); return true; } return false;};// HTML functionssearchshield.Cle anupHTML = 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.remov eHtmlTags = function (str){ var re = new RegExp('(<[^>]+>)','g'); var strStr = new String(str); if (!!strStr) return strStr.replace(re, ''); else return str; };// Browser functionssearchshield.con tainedIn = function (container, element){ while (element != null) { if (container == element) { return true; } element = element.parentNode; } return false;};searchshield.elem entSize = function (element){ //returns an array [sizeX, sizeY] var elemX; var elemY; elemX = parseInt(element.offsetWi dth); elemY = parseInt(element.offsetHe ight) return [elemX, elemY];};searchshield.GetFullBo undingRect = function (element){ if (!element) return; // get bounding rect for incoming element var elementRect = element.getBoundingClient Rect(); var nextImg = null; var nextImgRect = null; // first check for another non-TextNode element after this one var siblingElement = searchshield.NextSiblingN ode(element); if ( siblingElement && siblingElement.firstChild && siblingElement.id && siblingElement.id.indexOf ("XPLSS_") != -1) { nextImg = siblingElement.firstChild ; nextImgRect = nextImg.getBoundingClient Rect(); } 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(el ementRect.right, nextImgRect.right); newRect.bottom=Math.max(e lementRect.bottom, nextImgRect.bottom); newRect.mid = Math.min(elementRect.righ t, nextImgRect.left); return newRect;};searchshield.of fsetLeft = function (element){ var offset = 0; while (element) { offset += element.offsetLeft; element = element.offsetParent; } return offset;};searchshield.off setTop = function (element){ var offset = 0; while (element) { offset += element.offsetTop; element = element.offsetParent; } return offset;};searchshield.scr ollSize = 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.viewPortS ize = 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(windo w.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.clientHeigh t; } else { windowX = 0; windowY = 0; } return [windowX, windowY, scrollYWidth];};searchshield.zoomLevel = function (){ var level = 1; if (document.body.getBoundin gClientRect) { // rect is only in physical pixel size before IE8 var rect = document.body.getBounding ClientRect(); level = Math.round (((rect.right - rect.left) / (document.body.offsetWidt h)) * 100) / 100; } return level;};// Href functionssearchshield.che ckUrl = 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.DoesUR LContain = 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.Filt erUrl = 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.GetD omain = 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.getUrl Contents = 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','subsch eme','user','pass','host' ,'port','path','query','f ragment'] }, 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 functionssearchshield.arr ayKeys = function (array){ var keys = new Array(); for(k in array) keys.push(k); return keys;};searchshield.inArr ay = 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 constructorsearchshield.S earch = 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.Sear ch.prototype.detectEngine = function(href){ if (!href) return; var aEng = searchshield.Search.proto type.getSearchNames(); var aEngLen = aEng.length; for (var i=0; i < aEngLen; i++) { if (searchshield[aEng[i] + 'SearchEngine'].prototype.validSearch(hr ef)) return aEng[i]; } return;};searchshield.Sea rch.prototype.addEngine = function(engine){ if (!this.engines) this.engines = new Array(); this.engines.push(engine) ;};searchshield.Search.pr ototype.addLink = function(inElement, inHref){ if (!this.links) this.links = new Array(); var hrefHash; try { hrefHash = searchshield.avgCallFunc( this.doc, 'GetHash', inHref); } catch (e){} var newNode = { element: inElement, href: inHref, hash: hrefHash, search: this.searchHash }; this.links.push(newNode); return newNode;}// process the search result page after all search engines have been addedsearchshield.Search. prototype.process = function(doc){ // only process when searchshield is enabled if (0 == searchshield.avgCallFunc( doc, 'GetSearchEnabled')) return; this.doc = doc; this.href = this.doc.location.href; this.uri = searchshield.parseLink(th is.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(t his.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.getUrlConte nts(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.getElementsByTag Name("*"); // 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(a lltags[i]); if (!href) continue; var newNode = this.addLink(alltags[i], href); this.engine.addImage(newN ode, this.clockUrl, false); } return (this.links ? this.links.length : false);};//////////////// SEARCH //////////////////////////////// SEARCH ENGINE ////////////////// Interface for a SearchEngine objectsearchshield.Search Engine = 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.ne t", "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.ne t", "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.c om", "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_SPL IT_NOTEST;};searchshield. SearchEngine.prototype.fl yoverExists = function (doc){ return !!doc.getElementById("XPL SS_Flyover");};searchshie ld.SearchEngine.prototype .inlineExists = function (doc){ return !!doc.getElementById("XPL SS_InlineFlyover");};sear chshield.SearchEngine.pro totype.validSearch = function(href) { return false; };searchshield.SearchEngi ne.prototype.includeLink = function(link) { return false; };searchshield.SearchEngi ne.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.SearchEng ine.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('XPL SS_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("X PLSS_") > -1)) { return; } // mark search result anchor so it isn't processed repeatedly if (score == undefined) element.setAttribute("avg lschecked", 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(i mg, 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(a nchor, this.addAnchorStyle); if (score == searchshield.SCORE_SS_VER ISIGN) { anchor.style.textDecorati on = "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(a nchor, insertNode); else parentNode.appendChild(an chor); return anchor;};searchshield.Sea rchEngine.prototype.updat eImage = 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(h ash)) != null) { // check configuration to determine if verdict display property var showVerdict = true; var nSeverity = Number(score - 1); switch (nSeverity) { case searchshield.XPLCHECK_RES ULT_SEV_LOW: showVerdict = this.showLowRiskVerdicts; break; case searchshield.XPLCHECK_RES ULT_SEV_MED: showVerdict = this.showMedRiskVerdicts; break; case searchshield.XPLCHECK_RES ULT_SEV_NONE: showVerdict = this.showCleanVerdicts; break; default: if (score == searchshield.SCORE_SS_VER ISIGN) 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_VER ISIGN) 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("onmo useover", function(e){avglsflyover. popup(e, hash, search, flyover)}); element.attachEvent("onmo useout", 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_SPL IT_TESTB) { try{ var maxLoop = 5; var cN = element.parentNode.parent Node; //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.document Mode && this.search.doc.documentM ode < 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.heig ht); 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.appV ersion.split("MSIE")[1]); if (alt_image && (alt_image.length > 0) && ieVersion != 7) element.style.verticalAli gn = "10%"; } catch(err){}; // apply custom element styles this.updateElementStyle(e lement, this.updateImageStyle) // update the click thru var link = this.search.doc.getElemen tById("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_SPL IT_TESTB)) { var vhash = hash.substring(hash.index Of("_")+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.setA ttribute("onmouseover", ""); altAnchor.href = altClick_thru; } } } if (updated != false) { this.resizeFrame(frameEle m); return true; } return false;};searchshield.Sear chEngine.prototype.update ElementStyle = function (element, elementStyle){ if (elementStyle) { // a NULL attribte value will unset it for(attr in elementStyle) { try { if (element.style.setAttribu te) element.style.setAttribut e(attr, elementStyle[attr]); else element.style[attr] = elementStyle[attr]; } catch(err){} } }};searchshield.SearchEng ine.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.d ocument.body.scrollHeight )) frameElem.style.height = frameElem.contentWindow.d ocument.body.scrollHeight + 'px'; return;};searchshield.Sea rchEngine.prototype.getIm gElement = 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.getElementsByTagN ame("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.Searc hEngine.prototype.setRati ngsConfig = 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.Searc hEngine.prototype.init_in line_ratings = function (doc){ if ((doc == null) || (doc.getElementById("XPLS S_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){}};searchsh ield.SearchEngine.prototy pe.show_inline_ratings = function (doc, node, image){ var href = node.href; var anchor = node.element; if ((href == null) || (href.length < 1)) return; if (avglsinlineflyover.image Exists(anchor)) return; // mark search result anchor so it isn't processed repeatedly anchor.setAttribute("avgl schecked", "1"); // get verdict this.display_inline(doc, anchor, href, node, false);};searchshield.Sea rchEngine.prototype.displ ay_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_RES ULT_SEV_NONE) { var shortUrl = searchshield.FilterUrl(hr ef, this.shortened_urls); if (shortUrl) { // shortened url verdicts display later var engine = this; anchor.attachEvent("onmou seover", function(event){avglsinli neflyover.mouseOverHandle r(event, doc, engine)}, false); return; } } //blacklist url var blShortUrl = false; if (nSeverity == searchshield.XPLCHECK_RES ULT_SEV_BLOCK) { var shortUrl = searchshield.FilterUrl(hr ef, 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_RES ULT_SEV_LOW && !this.showLowRiskVerdicts ) { if (update) this.avg_ls_inline_hide_v erdict(anchor); return; } if (nSeverity == searchshield.XPLCHECK_RES ULT_SEV_MED && !this.showMedRiskVerdicts ) { if (update) this.avg_ls_inline_hide_v erdict(anchor); return; } if (nSeverity == searchshield.XPLCHECK_RES ULT_SEV_NONE && !this.showCleanVerdicts) { if (update) this.avg_ls_inline_hide_v erdict(anchor); return; } if (update) this.update_inline_image( anchor, nSeverity, parts); else this.add_inline_image(doc , anchor, nSeverity, parts, blShortUrl);};searchshiel d.SearchEngine.prototype. avg_ls_inline_hide_verdic t = function (anchor){ var image = avglsinlineflyover.getIma ge(anchor); if (image) { image.style.display = "none"; if (image.parentNode && image.parentNode.id == "avg_ls_anch") image.parentNode.style.di splay = "none"; }};searchshield.SearchEng ine.prototype.update_inli ne_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.backgro und[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("t itle", ""); imageElem.attachEvent("on mouseover", function(e){avglsinlinefl yover.popup(e, html)}); imageElem.attachEvent("on mouseout", function(e){avglsinlinefl yover.hide(e)}); } }};// add the image to the pagesearchshield.SearchEn gine.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.backgro und[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(aRi skName[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","av g_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("onmouseo ver", function(e){avglsinlinefl yover.popup(e, html, blUrl)}); img.attachEvent("onmouseo ut", function(e){avglsinlinefl yover.hide(e)}); } // create the link element var newAnchor = doc.createElement("A"); newAnchor.setAttribute("i d", "avg_ls_anch"); newAnchor.appendChild(img ); img = null; // insert the node as either a sibling or a child if (insertNode != null) anchor.parentNode.insertB efore(newAnchor, insertNode); else anchor.parentNode.appendC hild(newAnchor); return newAnchor; };//////////////// SEARCH ENGINE /////////////////////////////// GOOGLE SEARCH ENGINE ///////////////searchshield.GoogleSearch Engine = function(search){ searchshield.SearchEngine .call(this, search); this.onlyPrimaries = false;};searchshield.Goog leSearchEngine.prototype = new searchshield.SearchEngine ();searchshield.GoogleSea rchEngine.prototype.const ructor = searchshield.GoogleSearch Engine;searchshield.Googl eSearchEngine.prototype.n ame = "google"; // the name by which the search engine is known (always lowercase)searchshield.Go ogleSearchEngine.prototyp e.validSearch = function(href) { var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var hostMatch = false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // Domains valid for google searches, must start with '.' var valid_domains = new Array(".google.co", ".mozilla.co"); // For Google the host must match: // .google.com OR // .google.co.XX where XX is a country code // .google.XX where XX is a country code // Where any subdomain can come before the top level domain var domLen = valid_domains.length; for (var i = 0; i < domLen; i++) { var domainLen = domain.length; var valid_domain_len = valid_domains[i].length; var tldPos = domain.indexOf(valid_doma ins[i]); if (tldPos > -1) { if (domain.charAt(tldPos + valid_domain_len) == 'm') hostMatch = true; else if ((domain.charAt(tldPos + valid_domain_len) == '.') && ((domainLen - tldPos) == valid_domain_len+3)) hostMatch = true; } else { // get the form .google. to check the length of var dot_pos = valid_domains[i].indexOf(".",1); var valid_short_name = valid_domains[i].substring(0, dot_pos+1); tldPos = domain.indexOf(valid_shor t_name); if ((tldPos > -1) && ((domainLen - tldPos) == valid_domain_len)) hostMatch = true; } if (hostMatch) { // replace beginning of domain with www.google since links will refer back to it if ((i > 0) && (tldPos > -1)) { var last_dot = domain.indexOf(".",tldPos +1) if (last_dot > -1) domain = "www.google" + domain.substring(last_dot ); } break; } } if (hostMatch) { // using ajax engine if ((path.indexOf("search?") == 0) || (path.indexOf("sponsoredl inks?") == 0) || (path.indexOf("webhp?") == 0) || (path.indexOf("webhp#") == 0) || (path.indexOf("#q=") == 0) || (path.indexOf("#hl=") == 0) || (path.indexOf("#sclient=" ) == 0)) { return true; } } return false;};searchshield.Goog leSearchEngine.prototype. includeLink = function(tag){ var href = ""; var outHref = false; var findStr = ""; // check for interstitials if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) { findStr = this.search.uri.host + "/interstitial?"; if (tag.className == "l" && tag.href) { if (tag.href.indexOf(findStr ) != -1) { findStr = "?url="; var pos = tag.href.indexOf(findStr) ; if (pos !== -1) { pos += 5; outHref = tag.href.substring(pos); if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } } } if (tag.className == "sla") { findStr = "/url?q="; urlPos = tag.href.indexOf(findStr) ; if (urlPos != -1) { urlPos += 7; outHref = tag.href.substring(urlPos ); return outHref; } } // if an ad id if ((tag.id.indexOf("pa") == 0) || (tag.id.indexOf("an") == 0) || (tag.className == "resultLink")) { var urlPos = -1; // ads now need unescaping href = unescape(tag.href); findStr= "/url?sa="; if (href.indexOf(findStr) != -1) { // first kind, locate real url findStr= "&q=http"; urlPos = href.indexOf(findStr); if (urlPos != -1) urlPos += 3; // puts it on the http } if (urlPos == -1) { findStr = "/pagead/iclk?sa="; if (href.indexOf(findStr) != -1) { // second kind, locate real url findStr = "&adurl=http"; urlPos = href.indexOf(findStr); if (urlPos != -1) urlPos += 7; // puts it on the http } } if (urlPos == -1) { if (href.indexOf("/aclk?sa=") != -1) { // third kind urlPos = href.indexOf("&q=http"); if (urlPos != -1) urlPos += 3; // puts it on the http else { urlPos = href.indexOf("&lp=http"); if (urlPos != -1) urlPos += 4; else { findStr = "&adurl=http"; urlPos = href.indexOf(findStr); if (urlPos != -1) urlPos += 7; // puts it on the http } } } } if (urlPos == -1) { if (href.indexOf("/url?cad=") != -1) { // fourth kind urlPos = href.indexOf("&q=http"); if (urlPos != -1) urlPos += 3; // puts it on the http } } if (urlPos != -1) { outHref = href.substring(urlPos); // extract any fragment text, shouldn't be unescaped var pound = outHref.indexOf("#"); if (pound != -1) { var fragment = outHref.substring(pound); outHref = outHref.substring(0, pound); outHref = unescape(outHref); outHref += fragment; if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } outHref = unescape(outHref); if (outHref.indexOf("?") == -1) { var ampPos = outHref.indexOf("&"); if (ampPos != -1) outHref = outHref.substring(0, ampPos); } if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } } // recommended link - use following to see one // http://www.google.cz/search?hl=cs&q=...dat&lr=lang_cs // elem parent class = r // href must contain - url? and q=http var parentNode = tag.parentNode; if (parentNode && (parentNode.className.toL owerCase() == "r")) { href = tag.href; if (href && (href.indexOf("/url?") != -1)) { // locate the real url var urlPos = href.indexOf("q=http"); if (urlPos != -1) { urlPos += 2; outHref = href.substring(urlPos); // include entire param up to '&' var ampPos = outHref.indexOf("&"); if (ampPos != -1) outHref = outHref.substring(0, ampPos); return outHref; } } } } // no link to self else if (tag.className && (tag.className.charAt(0) == "l" || tag.className == "sla")) { // check for any images on the link if (0 === tag.getElementsByTagName( "IMG").length) return tag.href; } // else nothing return false;};/////////////// GOOGLE ////////////////////////////// AVG GOOGLE SEARCH ENGINE ///////////////searchshield.AVGGoogleSea rchEngine = function(search){ searchshield.SearchEngine .call(this, search); this.onlyPrimaries = false;};searchshield.AVGG oogleSearchEngine.prototy pe = new searchshield.SearchEngine ();searchshield.AVGGoogle SearchEngine.prototype.co nstructor = searchshield.AVGGoogleSea rchEngine;searchshield.AV GGoogleSearchEngine.proto type.name = "avggoogle"; // the name by which the search engine is known (always lowercase)searchshield.AV GGoogleSearchEngine.proto type.validSearch = function(href) { var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; if (domain.indexOf("search.a vg.com") > -1) { // ads link back to google return true; } return false;};searchshield.AVGG oogleSearchEngine.prototy pe.includeLink = function(tag){ var outHref = false; var findStr = ""; // check for interstitials if (searchshield.DoesURLCont ain(tag.href, "google.com")) { // link back to self - DIV elem GrandParent class of res1 or res3 is Sponsored Link var parentNode = tag.parentNode; if (parentNode) { var grandParentNode = tag.parentNode.parentNode ; if (grandParentNode) { if ((grandParentNode.tagName == "DIV") && ((grandParentNode.classNa me.toLowerCase() == "res1") || (grandParentNode.classNam e.toLowerCase() == "res3"))) { var urlPos = -1; // ads now need unescaping href = unescape(tag.href); if (urlPos == -1) { if (href.indexOf("/aclk?sa=") != -1) { findStr = "&adurl=http"; urlPos = href.indexOf(findStr); if (urlPos != -1) urlPos += 7; // puts it on the http } } if (urlPos != -1) { outHref = href.substring(urlPos) // extract any fragment text, shouldn't be unescaped var pound = outHref.indexOf("#"); if (pound != -1) { var fragment = outHref.substring(pound); outHref = outHref.substring(0, pound); outHref = unescape(outHref); outHref += fragment; if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } outHref = unescape(outHref); if (outHref.indexOf("?") == -1) { var ampPos = outHref.indexOf("&"); if (ampPos != -1) outHref = outHref.substring(0, ampPos); } if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } } } } } // no link to self else { var parentNode = tag.parentNode; if (parentNode) { var grandParentNode = tag.parentNode.parentNode ; if (grandParentNode) { if ((grandParentNode.tagName == "DIV") && (grandParentNode.classNam e.toLowerCase() == "res2")) { // check for any images on the link if (0 === tag.getElementsByTagName( "IMG").length) return tag.href; } } } } // else nothing return false;}/////////////// AVG GOOGLE ////////////////////////////// YAHOO SEARCH ENGINE ///////////////searchshield.YahooSearchE ngine = function(search){ searchshield.SearchEngine .call(this, search); this.showCleanVerdicts = false;};searchshield.Yaho oSearchEngine.prototype = new searchshield.SearchEngine ();searchshield.YahooSear chEngine.prototype.constr uctor = searchshield.YahooSearchE ngine;searchshield.YahooS earchEngine.prototype.nam e = "yahoo";searchshield.Yaho oSearchEngine.prototype.v alidSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For Yahoo the host must match: // search.yahoo.com OR // xx.search.yahoo.com where xx country code OR // search.yahoo.co.xx OR // for Yahoo China: one.cn.yahoo.com & search.cn.yahoo.com if ((uri.host.indexOf("searc h.yahoo.co") != -1) || (uri.host.match(/^(search|one)(\.[a-z]{2}\.yahoo\.com)$/))) { if ((path.indexOf("search?") == 0) || (path.indexOf("search;") == 0) || (path.indexOf("s?p=") === 0)) { return true; } } return false;};searchshield.Yaho oSearchEngine.prototype.i ncludeLink = function(tag){ var href = ""; var outHref = ""; var findStr = ""; // yahoo likes to encode the url href = unescape(tag.href); if ((tag.className.indexOf(" yschttl") != -1) || (tag.className.indexOf("s pt") != -1)) { var da = href.indexOf("**"); var ad = href.indexOf("*-"); if (da != -1) outHref = href.substring(da+2); else if (ad != -1) outHref = href.substring(ad+2); else outHref = href ; if (outHref.toLowerCase().in dexOf("overture.") !== -1) return false; } else if ((tag.tagName) && (tag.tagName === "A") && (!tag.className)) { var tagParent = tag.parentNode; // if anchor without className then search parentNodes if ((tagParent) && (tagParent.tagName !== "EM") && (searchshield.getParentNo deByClassName("yst-web", tag, 4))) { // China Yahoo support outHref = href; } else if ((tagParent) && (tagParent.tagName === "H3") && (!!searchshield.getParent NodeById("WS2m",tag, 5))) { // Japan Yahoo support var da = href.indexOf("**"); if (da !== -1) outHref = href.substring(da+2); } else if ((tagParent) && (tagParent.className !== "c") && (tagParent.parentNode.id !== "fpn") && (!!searchshield.getParent NodeByClassName("ymc", tag, 7))) { // Korea Yahoo support - when not caught by yschttl var da = href.indexOf("**"); if (da !== -1) outHref = href.substring(da+2); } } else if (!this.onlyPrimaries) { findStr = "&yargs="; var yargs = href.indexOf(findStr); if (yargs != -1) { outHref = href.substring(yargs+find Str.length); // check for prefix if (outHref.indexOf("://") == -1) outHref = "http://" + outHref; // if inside an <I>, probably a paypal link, don't include if (tag.parentNode && (tag.parentNode.tagName == "I")) return false; } } // filter domains // split the url based on '/' var parts = !!outHref ? outHref.split('/') : null; // Filter out domains that match any of the search engine's names if (!parts || !parts[2]) return false; var domain = parts[2]; if ((domain.indexOf("rdrjp.y ahoo.com") != -1) || (domain.indexOf("rdrkrs.y ahoo.com") != -1) || (domain.indexOf("rdrtpe.y ahoo.com") != -1) || (domain.indexOf("rdrird.y ahoo.com") != -1) || (domain.indexOf("rdrhk2.y ahoo.com") != -1) || (domain.indexOf("rdrsg1.y ahoo.com") != -1) || (domain.indexOf("rdrin2.y ahoo.com") != -1) || (domain.indexOf("rdre1.ya hoo.com") != -1) || (domain.indexOf("rdrw1.ya hoo.com") != -1) ) { return false; } // set for yahoo to get parent node for image insertion var hash = searchshield.avgCallFunc( this.doc, 'GetHash', outHref); tag.setAttribute("id", "xplid_" + hash); return outHref;};/////////////// YAHOO SEARCH ENGINE ////////////////////////////// AVG YAHOO SEARCH ENGINE ///////////////searchshield.AVGYahooSear chEngine = function(search){ searchshield.SearchEngine .call(this, search); this.showCleanVerdicts = false;};searchshield.AVGY ahooSearchEngine.prototyp e = new searchshield.SearchEngine ();searchshield.AVGYahooS earchEngine.prototype.con structor = searchshield.AVGYahooSear chEngine;searchshield.AVG YahooSearchEngine.prototy pe.name = "avgyahoo";searchshield.A VGYahooSearchEngine.proto type.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; //path may be 'avg/search' or 'search' var pathArray = uri.path.split("/"); var avg = pathArray[0]; // re stitch the uri path and query elements // to use existing logic var path = (undefined == pathArray[1]) ? pathArray[0] : pathArray[1]; path += uri.delimiter + uri.query; // For AVG Yahoo classic the host must match: // yhs.search.yahoo.com OR // .yhs.search.yahoo.com if (domain.indexOf("yhs.sear ch.yahoo.co") != -1) { if ((avg == "avg") && ((path.indexOf("search?") == 0) || (path.indexOf("search;") == 0))) { return true; } } // also support new metro version which DOESN'T // contain /avg so avg split part is path // valid domains are: // search.yahoo.com, // xx.search.yahoo.com and // search.yahoo.co.xx if (domain.indexOf("search.y ahoo.co") != -1) { // path (split avg) must start with search and // contain the avg toolbar parameter if (((path.indexOf("search?" ) == 0) || (path.indexOf("search;") == 0)) && (path.indexOf("fr=yhs-avg") != -1)) { return true; } } return false;};searchshield.AVGY ahooSearchEngine.prototyp e.includeLink = function(tag){ var href = ""; var outHref = ""; var findStr = ""; if (this.search.doc.body.cla ssName.toLowerCase() != "standard") { // handle as std Yahoo results page return searchshield.YahooSearchE ngine.prototype.includeLi nk(tag); } // yahoo likes to encode the url href = unescape(tag.href); if (tag.target == "_top") { var da = href.indexOf("**"); if (da != -1) outHref = href.substring(da+2); else outHref = href ; if (outHref.toLowerCase().in dexOf("overture.") !== -1) return false; } else if (!this.onlyPrimaries) { findStr = "&yargs="; var yargs = href.indexOf(findStr); if (yargs != -1) { outHref = href.substring(yargs+find Str.length); // check for prefix if (outHref.indexOf("://") == -1) outHref = "http://" + outHref; // if inside an <I>, probably a paypal link, don't include if (tag.parentNode && (tag.parentNode.tagName == "I")) return false; } } // filter domains // split the url based on '/' var parts = outHref.split('/'); // Filter out domains that match any of the search engine's names if (!parts[2]) return false; var domain = parts[2]; if ((domain.indexOf("rdrjp.y ahoo.com") != -1) || (domain.indexOf("rdrkrs.y ahoo.com") != -1) || (domain.indexOf("rdrtpe.y ahoo.com") != -1) || (domain.indexOf("rdrird.y ahoo.com") != -1) || (domain.indexOf("rdrhk2.y ahoo.com") != -1) || (domain.indexOf("rdrsg1.y ahoo.com") != -1) || (domain.indexOf("rdrin2.y ahoo.com") != -1) || (domain.indexOf("rdre1.ya hoo.com") != -1) || (domain.indexOf("rdrw1.ya hoo.com") != -1) ) { return false; } return outHref;};searchshield.AV GYahooSearchEngine.protot ype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru){ // remove style that is set when alt image is applied this.updateImageStyle = { verticalAlign: null }; // don't show verisign icon if (alt_image && (alt_image.length > 0)) this.omitAltImage = true; var parent = searchshield.SearchEngine .prototype.updateImage; return parent.call(this, hash, search, score, image, alt_image, flyover, click_thru, altClick_thru);};/////////////// AVG YAHOO SEARCH ENGINE ////////////////////////////// MSN SEARCH ENGINE ///////////////searchshield.MSNSearchEng ine = function(search){ searchshield.SearchEngine .call(this, search); this.onlyPrimaries = false;};searchshield.MSNS earchEngine.prototype = new searchshield.SearchEngine ();searchshield.MSNSearch Engine.prototype.construc tor = searchshield.MSNSearchEng ine;searchshield.MSNSearc hEngine.prototype.name = "msn";searchshield.MSNSea rchEngine.prototype.valid Search = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var hostMatch = false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For MSN the host must match: // search.msn.com OR // search.live.com if (domain.indexOf("search.m sn.co") > -1) { if (domain.charAt(13) == 'm') hostMatch = true; else if ((domain.charAt(13) == '.') && (domain.length == 16)) hostMatch = true; } else if (domain.indexOf("search.l ive.co") > -1) { if (domain.charAt(14) == 'm') hostMatch = true; else if ((domain.charAt(14) == '.') && (domain.length == 17)) hostMatch = true; } if (hostMatch) { if (path.indexOf("results.as px") == 0) return true; } return false;};searchshield.MSNS earchEngine.prototype.inc ludeLink = function(tag){ var outHref = false; // these don't seem common from Firefox, but they are in IE if (searchshield.DoesURLCont ain(tag.href, "g.msn.co")) { var qPos = tag.href.indexOf("?"); if (qPos != -1) { var postPart = tag.href.substring(qPos+1 ); var dblAmp = postPart.indexOf("&&"); if (dblAmp != -1) { outHref = postPart.substring(0, dblAmp); return outHref; } } } else if (searchshield.DoesURLCont ain(tag.href, "r.msn.co")) { var element = tag; var parentNode = tag.parentNode; // top links - check for a CITE var spanElements = element.getElementsByTagN ame("CITE"); if ((spanElements != null) && (spanElements.length > 0)) { outHref = spanElements[0].innerHTML; // replace any nbsp's outHref = outHref.replace(" ", " "); // url is after the last space in the html, after the '-' var space_pos = outHref.lastIndexOf(" "); if (space_pos != -1) outHref = outHref.slice(space_pos + 1); outHref = searchshield.checkUrl(out Href); return outHref; } // side links if (element.lastChild != null) { outHref = element.lastChild.innerHT ML; if ( outHref != null) { outHref = searchshield.checkUrl(out Href); return outHref; } } } else if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host) || searchshield.DoesURLConta in(tag.href, ".live.com") || searchshield.DoesURLConta in(tag.href, "msn.") || searchshield.DoesURLConta in(tag.href, "msnscache.com") || searchshield.DoesURLConta in(tag.href, "advertising.microsoft.co ") || searchshield.DoesURLConta in(tag.href, "javascript:") || searchshield.DoesURLConta in(tag.href, "go.microsoft.co") || searchshield.DoesURLConta in(tag.href, "hotmail.co")) { // not a link return false; } else if (tag.id.toLowerCase() == "trademarks") { // don't link the trademark at the bottom of the page return false; } else { // include it return tag.href; }};/////////////// MSN SEARCH ENGINE ////////////////////////////// BING SEARCH ENGINE ///////////////searchshield.BingSearchEn gine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.Bi ngSearchEngine.prototype = new searchshield.SearchEngine ();searchshield.BingSearc hEngine.prototype.constru ctor = searchshield.BingSearchEn gine;searchshield.BingSea rchEngine.prototype.name = "bing";searchshield.BingS earchEngine.prototype.val idSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var hostMatch = false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For bing the host must match: // www.bing.com or www.bing.net // xx.bing.com or xx.bing.net where xx is a country code // bing.com.xx where xx is a country code // bing.search.xxxx.net where xxxx may be something like daum if ((domain.indexOf("www.bin g.com") !== -1) || (domain.indexOf("www.bing .net") !== -1) || (domain.indexOf("bing.net ") !== -1)) { hostMatch = true; } else if ((domain.indexOf("bing.se arch.") !== -1) && (domain.indexOf(".net") === (domain.length-4))) { //bing.search.xxxx.net hostMatch = true; } else { // xx.bing.com or bing.com.xx var domainLen = domain.length; var tldPos = domain.indexOf(".bing.com "); if (tldPos > -1) { if ((domainLen - tldPos) == 9) hostMatch = true; } } if (hostMatch) { if (path.indexOf("search?") == 0) return true; } return false;};searchshield.Bing SearchEngine.prototype.in cludeLink = function(tag){ var outHref = false; if (tag.tagName == 'IMG') { //no images return false; } if (tag.href.charAt(0) == '/') { //no relative links return false; } if (tag.id.toLowerCase() == "trademarks") { // don't link the trademark at the bottom of the page return false; } if ((tag.parentNode) && (tag.parentNode.id.toLowe rCase() == "sc_stc")) { // don't verdict the social sites - our verdict doesn't fit return false; } else if (!!searchshield.getParent NodeByClassName("sw_t",ta g,3)) { // no links in page header return false; } else if (searchshield.DoesURLCont ain(tag.href, "r.msn.co") || searchshield.DoesURLConta in(tag.href, "overture.com")) { // france has r.msn.co and italy has overture.com sponsored links // with the link in CITE element var spanElements = null; // top links - check for a CITE spanElements = tag.getElementsByTagName( "CITE"); if ((spanElements == null) || (spanElements.length <= 0)) { if (tag.parentNode && tag.parentNode.parentNode ) spanElements = tag.parentNode.parentNode .getElementsByTagName("CI TE"); } if ((spanElements != null) && (spanElements.length > 0)) { outHref = spanElements[0].innerHTML; if (outHref != null) { // replace any nbsp's outHref = outHref.replace(" ", " "); // url is after the last space in the html, after the '-' var space_pos = outHref.lastIndexOf(" "); if (space_pos != -1) outHref = outHref.slice(space_pos + 1); outHref = searchshield.checkUrl(out Href); // save the link return outHref; } } // side links if (tag.lastChild != null) { outHref = tag.lastChild.innerHTML; if (outHref != null) { outHref = searchshield.checkUrl(out Href); // save the link return outHref; } } } // no sponsored links for now else if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host) || searchshield.DoesURLConta in(tag.href, ".live.com") || searchshield.DoesURLConta in(tag.href, ".bing.com") || searchshield.DoesURLConta in(tag.href, ".bing.net") || searchshield.DoesURLConta in(tag.href, ".daum.net") || searchshield.DoesURLConta in(tag.href, ".gmarket.co") || searchshield.DoesURLConta in(tag.href, ".multimap.com") || searchshield.DoesURLConta in(tag.href, "msn.") || searchshield.DoesURLConta in(tag.href, "ms.ciao.") || searchshield.DoesURLConta in(tag.href, "ms.ciao-") || searchshield.DoesURLConta in(tag.href, "advertising.microsoft.co ") || searchshield.DoesURLConta in(tag.href, "javascript:") || searchshield.DoesURLConta in(tag.href, "go.microsoft.co") || searchshield.DoesURLConta in(tag.href, "hotmail.co") || searchshield.DoesURLConta in(tag.href, "cc.bingj.com") || searchshield.DoesURLConta in(tag.href, "microsofttranslator.com" ) || searchshield.DoesURLConta in(tag.href, ".engkoo.com") || searchshield.DoesURLConta in(tag.href, "sealinfo.verisign.co m") || searchshield.DoesURLConta in(tag.href, "explabs.com") || searchshield.DoesURLConta in(tag.href, "onlinehelp.microsoft.com ")) { // not a link return false; } else return tag.href;};searchshield.B ingSearchEngine.prototype .addImage = function(node, image, hidden){ var element = node.element; var parentNode = node.element.parentNode; var grandParentNode = !!parentNode ? parentNode.parentNode : null; // if there are redundant links in the same grandparent then skip them if (!!grandParentNode) { gpChildren = grandParentNode.childNode s; for (var i=0; i < gpChildren.length; i++) { if (!!element.href && gpChildren[i].tagName == "A" && gpChildren[i].href == element.href) return; } } var parent = searchshield.SearchEngine .prototype.addImage; return parent.call(this, node, image, hidden);};/////////////// BING SEARCH ENGINE ////////////////////////////// BAIDU SEARCH ENGINE ///////////////searchshield.BaiduSearchE ngine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.Ba iduSearchEngine.prototype = new searchshield.SearchEngine ();searchshield.BaiduSear chEngine.prototype.constr uctor = searchshield.BaiduSearchE ngine;searchshield.BaiduS earchEngine.prototype.nam e = "baidu";searchshield.Baid uSearchEngine.prototype.v alidSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var hostMatch = false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; if (domain == "www.baidu.com" || path.indexOf("testBaidu") !== -1) hostMatch = true; if (hostMatch) { if (path.indexOf("s?") == 0) return true; } return false;};searchshield.Baid uSearchEngine.prototype.i ncludeLink = function(tag){ if (tag.className && tag.className == "m") return false; if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; else { // no link to self var traverseElement = tag.parentNode; while ( traverseElement && traverseElement.className != "tbody") { if (traverseElement.classNam e == "f") return tag.href; traverseElement = traverseElement.parentNod e; } return false; }};searchshield.BaiduSear chEngine.prototype.addIma ge = function(node, image, hidden){ this.addImageStyle = { position: "relative", top: "0.05em" }; var parent = searchshield.SearchEngine .prototype.addImage; return parent.call(this, node, image, hidden);};searchshield.Ba iduSearchEngine.prototype .updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru){ // remove style that is set when alt image is applied this.updateImageStyle = { verticalAlign: null }; var parent = searchshield.SearchEngine .prototype.updateImage; return parent.call(this, hash, search, score, image, alt_image, flyover, click_thru, altClick_thru);};/////////////// BAIDU SEARCH ENGINE ////////////////////////////// EARTHLINK SEARCH ENGINE ///////////////searchshield.EarthlinkSea rchEngine = function(search){ searchshield.SearchEngine .call(this, search); this.onlyPrimaries = false; this.addAnchorStyle = { position: "static" };};searchshield.Earthlin kSearchEngine.prototype = new searchshield.SearchEngine ();searchshield.Earthlink SearchEngine.prototype.co nstructor = searchshield.EarthlinkSea rchEngine;searchshield.Ea rthlinkSearchEngine.proto type.name = "earthlink";searchshield. EarthlinkSearchEngine.pro totype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var hostMatch = false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; // For EarthLink the host must match: // search.earthlink.net if (("search.earthlink.net " == domain) && (path.indexOf("search?") == 0)) { return true; } return false;};searchshield.Eart hlinkSearchEngine.prototy pe.includeLink = function(tag){ var outHref = ""; var findStr = ""; // check for an anchor if (tag.tagName == "A") { // check for sponsored if (tag.id.indexOf("a") == 0) { var q = tag.href.indexOf("&q="); var qlen = 3; if (q == -1) { q = tag.href.indexOf("&adurl= "); qlen = 7; if (q == -1) return false; } // find end of url var end = tag.href.indexOf("&", q+qlen); if (end < 0) end = tag.href.length; // add the link outHref = tag.href.substring(q+qlen , end); if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } // don't search url's to self if ((tag.href.indexOf("://") == -1) || searchshield.DoesURLConta in(tag.href, this.search.uri.host)) return false; // if a normal web result add it if (tag.parentNode && (tag.parentNode.tagName == "H3") && tag.parentNode.parentNode && (tag.parentNode.parentNod e.tagName == "LI") && tag.parentNode.parentNode .parentNode && (tag.parentNode.parentNod e.parentNode.tagName == "UL")) { if (searchshield.FilterUrl(t ag.href, this.filter_urls)) return false; return tag.href; } } return false;};/////////////// EARTHLINK SEARCH ENGINE ////////////////////////////// AOL SEARCH ENGINE ///////////////searchshield.AOLSearchEng ine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.AO LSearchEngine.prototype = new searchshield.SearchEngine ();searchshield.AOLSearch Engine.prototype.construc tor = searchshield.AOLSearchEng ine;searchshield.AOLSearc hEngine.prototype.name = "aol";searchshield.AOLSea rchEngine.prototype.valid Search = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain = uri.host; //path may be 'aol/search' or 'search' var pathArray = uri.path.split("/"); var aol = pathArray[0]; // re stitch the uri path and query elements // to use existing logic var path = (undefined == pathArray[1]) ? pathArray[0] : pathArray[1]; path += uri.delimiter + uri.query; if ("search.aol.com" == domain) { if ((aol == "aol") && (path.indexOf("search?") == 0)) { return true; } } return false;};searchshield.AOLS earchEngine.prototype.inc ludeLink = function(tag){ if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; // sponsored links - google if ((tag.className) && (tag.className.indexOf("s lLink") != -1)) { //parse for embedded href if (tag.href.indexOf("/aclk?sa=") == -1) return false; var adurl = tag.href.indexOf("&adurl= http"); if (adurl != -1) { var urlPos = adurl+7; // puts it on the http var outHref = tag.href.substring(urlPos ); // extract any fragment text, do not unescape var pound = outHref.indexOf("#"); if (pound != -1) { var fragment = outHref.substring(pound); outHref = outHref.substring(0, pound); outHref = unescape(outHref); outHref += fragment; if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } outHref = unescape(outHref); if (outHref.indexOf("?") == -1) { var ampPos = outHref.indexOf("&"); if (ampPos != -1) outHref = outHref.substring(0, ampPos); } if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } return false; } if (tag.className == "find") return tag.href; return false;};searchshield.AOLS earchEngine.prototype.add Image = function(node, image, hidden){ this.addImageStyle = { display: "inline" }; this.addAnchorStyle = { display: null }; var parent = searchshield.SearchEngine .prototype.addImage; return parent.call(this, node, image, hidden);};searchshield.AO LSearchEngine.prototype.u pdateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru){ // remove style that is set when alt image is applied this.updateImageStyle = { verticalAlign: null, display: "inline" }; var parent = searchshield.SearchEngine .prototype.updateImage; return parent.call(this, hash, search, score, image, alt_image, flyover, click_thru, altClick_thru);};searchsh ield.AOLSearchEngine.prot otype.insertNodes = function(node, doc){ var element = node.element; var score = node.score; if (element && element.className && element.className.indexOf ("slLink") != -1) { //sponsored links only // for alt image if (score == searchshield.SCORE_SS_VER ISIGN) return [element.nextSibling, element.parentNode]; // for verdict image var cN = element.childNodes; var cnLen = cN.length; for (var i=0; i < cnLen; i++) { if ((cN[i].nodeType == 1) && (cN[i].nodeName == 'SPAN') && (cN[i].className == 'title')) return [cN[i].nextSibling, cN[i].parentNode]; } } else { var parent = searchshield.SearchEngine .prototype.insertNodes; return parent.call(this, node, doc); }};/////////////// AOL SEARCH ENGINE ////////////////////////////// ASK SEARCH ENGINE ///////////////searchshield.AskSearchEng ine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.As kSearchEngine.prototype = new searchshield.SearchEngine ();searchshield.AskSearch Engine.prototype.construc tor = searchshield.AskSearchEng ine;searchshield.AskSearc hEngine.prototype.name = "ask";searchshield.AskSea rchEngine.prototype.valid Search = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ("www.ask.com" == domain) { if (path.indexOf("web?") == 0) return true; } return false;};searchshield.AskS earchEngine.prototype.inc ludeLink = function(tag){ var outHref = ""; var findStr = ""; if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; if ((tag.className) && (tag.className.indexOf("n u") != -1) && (tag.className.indexOf("i nfo") == -1)) { // exclude green links if ((tag.firstChild) && (tag.firstChild.className ) && (tag.firstChild.className .indexOf('attrib') == 0)) { return false; } // ads link to google with class nu findStr = "www.google.com"; if (tag.href.indexOf(findStr ) != 0) { if (tag.href.indexOf(findStr + "/aclk?sa=") != -1) { findStr = "&adurl=http"; var pos = tag.href.indexOf(findStr) ; if (pos != -1) { pos += 7; outHref = tag.href.substring(pos); outHref = unescape(outHref); if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } } } else { // ad not to google just use href outHref = tag.href; if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } } // primary results have class containing title or L2 ( Wikipedia links ) else if ((tag.className) && ((tag.className.indexOf(" title") != -1) || (tag.className.toLowerCas e() == "l2"))) { outHref = tag.href; if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } return false;};/////////////// ASK SEARCH ENGINE ////////////////////////////// ALTAVISTA SEARCH ENGINE ///////////////searchshield.AltaVistaSea rchEngine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.Al taVistaSearchEngine.proto type = new searchshield.SearchEngine ();searchshield.AltaVista SearchEngine.prototype.co nstructor = searchshield.AltaVistaSea rchEngine;searchshield.Al taVistaSearchEngine.proto type.name = "altavista";searchshield. AltaVistaSearchEngine.pro totype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; // www.atlavista.com ---> now http://us.yhs4.search.yahoo.com/yhs/...ez&kgs=1&kls=0 // xx.altavista.com where xx is a country code var hostMatch = false; if ("www.altavista.com" == domain) { hostMatch = true; } else { // xx.altavista.com var pDest = domain.indexOf(".altavist a.com"); if ((pDest != -1 ) && ((domain.length - pDest) == 14)) { hostMatch = true; } else { // a reference to altavista must be present in yahoo search url var pRef = (uri.qsArray.fr && uri.qsArray.fr == 'altavista'); pDest = domain.indexOf("search.ya hoo.com"); if (pDest != -1 && pRef) hostMatch = true; } } if (hostMatch) { //path must start with web/results? if ((path.indexOf("yhs/search?") == 0) || (path.indexOf("search;") == 0) || (path.indexOf("yhs/search;") == 0) || (path.indexOf("web/results?") == 0)|| (path.indexOf("fr=altavis ta") != -1)) { return true; } } return false;};searchshield.Alta VistaSearchEngine.prototy pe.includeLink = function(tag){ var outHref = ""; var findStr = ""; // initial checks if ((!tag.href) || (tag.href.charAt(0) == '#') || (tag.href.indexOf("javasc ript:") == 0)) { return false; } if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; if ((tag.className == "spt") || (tag.className == "res") || (tag.className == "yschttl spt")) { findStr = "/**"; var pos = tag.href.indexOf(findStr) ; if (pos != -1) { pos += 3; outHref = tag.href.substring(pos); outHref = unescape(outHref); // no results for overture.com & no yahoo domains chkHref = outHref.toLowerCase(); if (chkHref.indexOf("overtur e.") != -1) return false; // split the url based on '/' var parts = outHref.split('/'); // only need a domain if ((parts != null) && (parts[2] != null)) { var domain = parts[2]; if ((domain.indexOf("rdrjp.y ahoo.com") != -1) || (domain.indexOf("rdrkrs.y ahoo.com") != -1) || (domain.indexOf("rdrtpe.y ahoo.com") != -1) || (domain.indexOf("rdrird.y ahoo.com") != -1) || (domain.indexOf("rdrhk2.y ahoo.com") != -1) || (domain.indexOf("rdrsg1.y ahoo.com") != -1) || (domain.indexOf("rdrin2.y ahoo.com") != -1) || (domain.indexOf("rdre1.ya hoo.com") != -1) || (domain.indexOf("rdrw1.ya hoo.com") != -1) ) { return false } } return outHref; } else { return tag.href; } } return false;};searchshield.Alta VistaSearchEngine.prototy pe.getImgElement = function (element){ while (element != null) { element = element.nextSibling; if (element != null) { if ((element.id == null) || (element.id.indexOf("LXPL SS_") == -1)) { // not our id but hit another anchor no verdict if (element.tagName == "A") { element = null; break; } } else if (element.tagName == "A") break; } } var rtnElem = !!element ? element.firstChild : element; return rtnElem;};/////////////// ALTAVISTA SEARCH ENGINE ////////////////////////////// YANDEX SEARCH ENGINE ///////////////searchshield.YandexSearch Engine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.Ya ndexSearchEngine.prototyp e = new searchshield.SearchEngine ();searchshield.YandexSea rchEngine.prototype.const ructor = searchshield.YandexSearch Engine;searchshield.Yande xSearchEngine.prototype.n ame = "yandex";searchshield.Yan dexSearchEngine.prototype .validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if (((domain.indexOf("yandex .ru") > -1) || (domain.indexOf("yandex.c om") > -1)) && (path.indexOf("yandsearch ?") == 0)) { return true; } return false;};searchshield.Yand exSearchEngine.prototype. includeLink = function(tag){ if (tag.href.indexOf("/search") != -1) { return false; } if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host) || searchshield.DoesURLConta in(tag.href, ".yandex.net") || searchshield.DoesURLConta in(tag.href, ".yandex.ru") || searchshield.DoesURLConta in(tag.href, "moikrug.ru") || searchshield.DoesURLConta in(tag.href, "ya.ru") || searchshield.DoesURLConta in(tag.href, ".yandex.com") || searchshield.DoesURLConta in(tag.href, "yandex.st")) { return false; } parentNode = tag.parentNode; if ((tag.parentNode) && (tag.parentNode.parentNod e) && (tag.parentNode.parentNod e.className.toLowerCase() == "moreinfo")) { return false; } return tag.href;};searchshield.Y andexSearchEngine.prototy pe.getImgElement = function (element){ while (element != null) { element = element.nextSibling; if (element != null) { if ((element.id == null) || (element.id.indexOf("LXPL SS_") == -1)) { // not our id but hit another anchor no verdict if (element.tagName == "A") { element = null; break; } } else if (element.tagName == "A") break; } } var rtnElem = !!element ? element.firstChild : element; return rtnElem;};/////////////// YANDEX SEARCH ENGINE ////////////////////////////// SEZNAM SEARCH ENGINE ///////////////searchshield.SeznamSearch Engine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.Se znamSearchEngine.prototyp e = new searchshield.SearchEngine ();searchshield.SeznamSea rchEngine.prototype.const ructor = searchshield.SeznamSearch Engine;searchshield.Sezna mSearchEngine.prototype.n ame = "seznam";searchshield.Sez namSearchEngine.prototype .validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("search. seznam.cz") > -1) && ((path.indexOf("?") == 0) || (path.indexOf("svet") == 0))) { return true; } return false;};searchshield.Sezn amSearchEngine.prototype. includeLink = function(tag){ if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; var parentNode = tag.parentNode; if (parentNode) { var grandParentNode = tag.parentNode.parentNode ; if ((parentNode.tagName == "SPAN") && ((parentNode.className.to LowerCase() == "sklik-url") || (parentNode.className.toL owerCase() == "sklik-title"))) { // locate the real url and unencode it var urlPos = tag.href.indexOf("&url=ht tp"); if (urlPos != -1) { urlPos += 5; outHref = tag.href.substring(urlPos ); outHref = unescape(outHref); return outHref; } } else if (grandParentNode) { var greatGrandParentNode = tag.parentNode.parentNode .parentNode; if ((grandParentNode.tagName == "DIV") && ((grandParentNode.classNa me.toLowerCase() == "text") || (grandParentNode.classNam e.toLowerCase() == "hlasky otz"))) { // standard link return tag.href; } else if (greatGrandParentNode && greatGrandParentNode.tagN ame == "DIV" && (greatGrandParentNode.cla ssName.toLowerCase() == "hotlinks")) { // hint link return tag.href; } } } return false;};searchshield.Sezn amSearchEngine.prototype. updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru){ this.elementAttribute = { width: "18", height: "18" }; this.updateImageStyle = { width: "18px", height: "18px" }; var parent = searchshield.SearchEngine .prototype.updateImage; return parent.call(this, hash, search, score, image, alt_image, flyover, click_thru, altClick_thru);};/////////////// SEZNAM SEARCH ENGINE ////////////////////////////// WEBHLEDANI SEARCH ENGINE ///////////////searchshield.WebhledaniSe archEngine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.We bhledaniSearchEngine.prot otype = new searchshield.SearchEngine ();searchshield.Webhledan iSearchEngine.prototype.c onstructor = searchshield.WebhledaniSe archEngine;searchshield.W ebhledaniSearchEngine.pro totype.name = "webhledani";searchshield .WebhledaniSearchEngine.p rototype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("webhled ani.cz") > -1) && (path.indexOf("results.as px?") == 0)) { return true; } return false;};searchshield.Webh ledaniSearchEngine.protot ype.includeLink = function(tag){ var parentNode = tag.parentNode; if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) { if ( tag.href.indexOf("/redir.aspx?") != -1) { attrNode = tag.attributes; if ( attrNode == null ) return false; var outHref = attrNode.getNamedItem("on mouseover").nodeValue; if ( outHref == null ) return false; var findStr = "window.status="; if (outHref.indexOf(findStr) != -1) { // get text before first semicolon var semicolon = outHref.indexOf(";"); if (semicolon > -1) outHref = outHref.substring(findStr .length, semicolon); // strip quotation marks outHref = outHref.replace(/['"]/g, ""); var space = outHref.indexOf(" "); var firstDot = outHref.indexOf("."); if ((space > -1) && (space < firstDot)) outHref = outHref.substring(space+1 ); outHref = searchshield.checkUrl(out Href); return outHref; } } } return false;};searchshield.Webh ledaniSearchEngine.protot ype.insertNodes = function(node, doc){ var element = node.element; var score = node.score; // for alt image if (score == searchshield.SCORE_SS_VER ISIGN) return [element.nextSibling, element.parentNode]; // for verdict image var cN = element.childNodes; var cnLen = cN.length; for (var i=0; i < cnLen; i++) { if (cN[i].nodeType == 1 && cN[i].nodeName == 'SPAN' && cN[i].className == 'sl') { if (!this.cssUpdated) { this.cssUpdated = true; // need to add style to make verdicts display inline var docStyle = doc.styleSheets[0]; if (docStyle && docStyle.addRule) { //IE docStyle.addRule('#s a','display:inline'); docStyle.addRule('#s p a .sl','display:inline'); } else if (docStyle && docStyle.insertRule) { docStyle.insertRule('#s a {display:inline}', docStyle.cssRules.length) ; docStyle.insertRule('#s p a .sl {display:inline}', docStyle.cssRules.length) ; } } return [cN[i].nextSibling, cN[i].parentNode]; } } // don't display anything return [null, null];};/////////////// WEBHLEDANI SEARCH ENGINE ////////////////////////////// EBAY SEARCH ENGINE ///////////////searchshield.eBaySearchEn gine = function(search){ searchshield.SearchEngine .call(this, search);};searchshield.eB aySearchEngine.prototype = new searchshield.SearchEngine ();searchshield.eBaySearc hEngine.prototype.constru ctor = searchshield.eBaySearchEn gine;searchshield.eBaySea rchEngine.prototype.name = "ebay";searchshield.eBayS earchEngine.prototype.val idSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; // shop.ebay.xx // shop.xxxx.ebay.xx like shop.benl.ebay.be // search.auction.co.kr var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("shop.eb ay") > -1) || (domain.indexOf("shop.ben l.ebay") > -1)) { if ((path.indexOf("?_from=") == 0) || (path.indexOf("i.html") > -1)) { return true; } } // ebay.se if ((domain.indexOf("search. eim.ebay") > -1) && ((path.indexOf("?kw=") > -1) || (path.indexOf("?ev=") > -1))) { return true; } if ((domain.indexOf("search. auction.co.kr") > -1 ) && ((path.indexOf("?keyword= ") > -1))) { // would normally set these properties in the constructor or in an // overriding function but they're only required for this domain // links are in iframes this.processFrames = true; // must downsize verdicts for proper display this.elementAttribute = { width: "16", height: "16" }; this.updateImageStyle = { width: "16px", height: "16px" }; return true; } // latin america ebay // listado.mercadolibre.com. xx or listado.mercadolibre.co.x x // or listado.mercadolibre.xx or // category.mercadolibre.com .xx or listado.mercadolibre.xx/category // lista.mercadolivre.com.xx or lista.mercadolivre.com.xx/category if ((domain.indexOf("www.") == -1) && ((domain.indexOf(".mercad olibre.") > -1 ) || (domain.indexOf(".mercado livre.") > -1 ))) { return true; } return false;};searchshield.eBay SearchEngine.prototype.in cludeLink = function(tag){ var parentNode = null; var outHref = false; if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; if ( tag.href.indexOf(".ebayrt m.com/clk?") > -1 ) { if ( tag.title == null || tag.title.length < 0 ) return false; outHref = searchshield.removeHtmlTa gs(tag.title); if (outHref.indexOf(" ") == -1) { // no spaces if (outHref.indexOf(".") > -1) { // at least one dot if (outHref.indexOf(this.sea rch.uri.host) == -1) { // no host if (outHref.toLowerCase().in dexOf("ebay.com") == -1) { return outHref; } } } } } // ebay.se - Google ads parentNode = tag.parentNode; if (parentNode && (parentNode.className.toL owerCase() == "google-ad-link")) { if (tag.href.indexOf("/aclk?sa=") != -1) { findStr = "&adurl=http"; var urlPos = tag.href.indexOf(findStr) ; if (urlPos != -1) { urlPos += 7; // puts it on the http outHref = tag.href.substring(urlPos ); // extract any fragment text, shouldn't be unescaped var pound = outHref.indexOf("#"); if (pound != -1) { var fragment = outHref.substring(pound); outHref = outHref.substring(0, pound); outHref = unescape(outHref); outHref += fragment; if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } outHref = unescape(outHref); if (outHref.indexOf("?") == -1) { var ampPos = outHref.indexOf("&"); if (ampPos != -1) outHref = outHref.substring(0, ampPos); } if (searchshield.FilterUrl(o utHref, this.filter_urls)) return false; return outHref; } } } // auction.co.kr parentNode = tag.parentNode; if (parentNode && (parentNode.className.toL owerCase() == "link")) { if (tag.href.indexOf("adcr.n aver.com") > -1) { outHref = tag.innerText; if ((outHref == null) || (outHref.length < 0)) return false; return outHref; } } // latin america ebay if ( tag.href.toLowerCase().in dexOf("clickcounter?") > -1 ) { var spanElements = tag.getElementsByTagName( "span"); if ((spanElements != null) && (spanElements.length > 0)) { if ( spanElements[0].className.toLowerCase() == "mclics-url" ) { outHref = spanElements[0].innerHTML; if ( outHref == null || outHref.length < 0 ) return false; outHref = searchshield.removeHtmlTa gs(outHref); if (outHref.indexOf(" ") == -1) { // no spaces if (outHref.indexOf(".") > -1) { // at least one dot if (outHref.toLowerCase().in dexOf("mercado") == -1) { return outHref; } } } } } } return false;};/////////////// EBAY SEARCH ENGINE ////////////////////////////// DIGG SEARCH ENGINE ///////////////searchshield.DiggSearchEn gine = function(search){ searchshield.SearchEngine .call(this, search); this.new_links = false;};searchshield.Digg SearchEngine.prototype = new searchshield.SearchEngine ();searchshield.DiggSearc hEngine.prototype.constru ctor = searchshield.DiggSearchEn gine;searchshield.DiggSea rchEngine.prototype.name = "digg";searchshield.DiggS earchEngine.prototype.val idSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("digg.co m") > -1) && (path.indexOf("/ad") == -1)) { return true; } return false;};searchshield.Digg SearchEngine.prototype.in cludeLink = function(tag){ var outHref = false; var findStr = ""; if ((tag.parentNode) && (tag.parentNode.className .toLowerCase() == "digg-count")) { return false; } if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) { if (tag.className && tag.className.indexOf('so urce') != -1) { findStr = "/search?q=site:"; var urlPos = tag.href.indexOf(findStr) ; if (urlPos != -1) { urlPos += 15; outHref = tag.href.substring(urlPos ); return outHref; } } } return false;};searchshield.Digg SearchEngine.prototype.ad dImage = function(node, image, hidden){ // remove style that is set when alt image is applied this.addAnchorStyle = { background: "none" }; var parent = searchshield.SearchEngine .prototype.addImage; return parent.call(this, node, image, hidden);};/////////////// DIGG SEARCH ENGINE ////////////////////////////// SLASHDOT SEARCH ENGINE ///////////////searchshield.SlashdotSear chEngine = function(search){ searchshield.SearchEngine .call(this, search); this.showCleanVerdicts = false; this.new_links = false; this.type = 'inline';};searchshield.S lashdotSearchEngine.proto type = new searchshield.SearchEngine ();searchshield.SlashdotS earchEngine.prototype.con structor = searchshield.SlashdotSear chEngine;searchshield.Sla shdotSearchEngine.prototy pe.name = "slashdot";searchshield.S lashdotSearchEngine.proto type.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; // re stitch the uri path and query elements // to use existing logic var path = uri.path + uri.delimiter + uri.query; if (domain.indexOf("slashdot .org") != -1) { return true; } return false;};searchshield.Slas hdotSearchEngine.prototyp e.includeLink = function(tag){ if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; if ( tag.href.indexOf("mailto: ") != -1 ) return false; if ( tag.href.indexOf("slashdo t.org") != -1 ) return false; if (tag.parentNode && (tag.parentNode.tagName == "DIV")) { if (tag.parentNode.id.indexO f("text-") != -1) { return tag.href; } } else if ( tag.parentNode && tag.parentNode.parentNode && tag.parentNode.parentNode .tagName == "DIV" ) { if ( tag.parentNode.parentNode .id.indexOf("text-") != -1 ) { return tag.href; } } return false;};searchshield.Slas hdotSearchEngine.prototyp e.addImage = function(node, image, hidden){ var doc = this.search.doc; this.init_inline_ratings( doc); this.show_inline_ratings( doc, node, image);};/////////////// SLASHDOT SEARCH ENGINE ////////////////////////////// TWITTER SEARCH ENGINE ///////////////searchshield.TwitterSearc hEngine = function(search){ searchshield.SearchEngine .call(this, search); this.showCleanVerdicts = false; this.new_links = false; this.type = 'inline';};searchshield.T witterSearchEngine.protot ype = new searchshield.SearchEngine ();searchshield.TwitterSe archEngine.prototype.cons tructor = searchshield.TwitterSearc hEngine;searchshield.Twit terSearchEngine.prototype .name = "twitter";searchshield.Tw itterSearchEngine.prototy pe.twitter_filter_urls = ["twitpic.com", "twitterfeed.com", "twitter.peoplebrowsr.com "];searchshield.TwitterSear chEngine.prototype.validS earch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain= uri.host; if (domain.indexOf("twitter. com") != -1) { return true; } return false;};searchshield.Twit terSearchEngine.prototype .includeLink = function(tag){ if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; if (tag.className.length < 1) return false; // no verdicts on source of twit for example "from TweetDeck" if ((tag.className.indexOf(" tweet-url web") == 0) && (tag.className.indexOf("u rl") == 0 )) { return false; } if (searchshield.FilterUrl(t ag.href, this.twitter_filter_urls) ) { return false; } return tag.href;};searchshield.T witterSearchEngine.protot ype.addImage = function(node, image, hidden){ var doc = this.search.doc; this.init_inline_ratings( doc); this.show_inline_ratings( doc, node, image);};/////////////// TWITTER SEARCH ENGINE ////////////////////////////// GMAIL SEARCH ENGINE ///////////////searchshield.GMailSearchE ngine = function(search){ searchshield.SearchEngine .call(this, search); this.processFrames = true; this.showCleanVerdicts = false; this.type = 'inline';};searchshield.G MailSearchEngine.prototyp e = new searchshield.SearchEngine ();searchshield.GMailSear chEngine.prototype.constr uctor = searchshield.GMailSearchE ngine;searchshield.GMailS earchEngine.prototype.nam e = "gmail"; // the name by which the search engine is known (always lowercase)searchshield.GM ailSearchEngine.prototype .validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; var domain = uri.host; // re stitch the uri path and query elements to // use existing logic var path = uri.path + uri.delimiter + uri.query; if ((domain.indexOf("mail.go ogle.") != -1) || (domain.indexOf("gmail.") != -1)) { return true; } return false;};searchshield.GMai lSearchEngine.prototype.i ncludeLink = function(tag){ if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host)) return false; // don't mark anything but http:// if (tag.href.indexOf("mailto ") == 0) return false; var parentDiv = searchshield.getParentNod eByTagName("DIV", tag, "className"); if ((parentDiv) && ((parentDiv.className == "ii gt") || // mail message body (parentDiv.className == "mv") || // top sponsored links (parentDiv.className == "vb") || // right sponsored links (parentDiv.className == "im") || // inside quotes (parentDiv.className == "gmail_quote") || // quote (parentDiv.className == "msg") // basic html mode )) // right ads { // parse for any ads var newHref = this.parseAdUrl(tag.href) ; return newHref; } return false;};searchshield.GMai lSearchEngine.prototype.a ddImage = function(node, image, hidden){ var doc = this.search.doc; this.init_inline_ratings( doc); this.show_inline_ratings( doc, node, image);};searchshield.GMa ilSearchEngine.prototype. parseAdUrl = function(href){ if (!href) return href; // check for google ad var regex = "^http(s)?\:\/\/([a-zA-Z0-9]+)\.googlesyndication\.co m.+\&adurl\=(.+)"; var re = new RegExp(regex); var matches = href.match(re); if (matches && (matches.length >= 4)) { // else we want the fourth value var match = matches[3]; if (match && (match.length > 0)) return match } return href;};/////////////// GMAIL SEARCH ENGINE ////////////////////////////// FACEBOOK SEARCH ENGINE ///////////////searchshield.FacebookSear chEngine = function(search){ searchshield.SearchEngine .call(this, search); this.showCleanVerdicts = false; this.type = 'inline'};searchshield.Fa cebookSearchEngine.protot ype = new searchshield.SearchEngine ();searchshield.FacebookS earchEngine.prototype.con structor = searchshield.FacebookSear chEngine;searchshield.Fac ebookSearchEngine.prototy pe.name = "facebook"; // the name by which the search engine is known (always lowercase)searchshield.Fa cebookSearchEngine.protot ype.validSearch = function(href){ var uri; if (typeof(this.search) === 'undefined' || null === this.search) uri = searchshield.parseLink(hr ef); else uri = this.search.uri; if(!uri || !uri.host) return false; if (uri.host.indexOf("www.fa cebook.com") != -1) return true; return false;};searchshield.Face bookSearchEngine.prototyp e.includeLink = function(tag){ if (searchshield.DoesURLCont ain(tag.href, this.search.uri.host) || (searchshield.DoesURLCont ain(tag.href, 'static.ak.fbcdn.net'))) { return false; } // don't put verdicts in areas where typing is going on if (tag.parentNode) { var parentDiv = searchshield.getParentNod eByTagName("DIV", tag, "className"); if (parentDiv && (parentDiv.className == "Mentions_Input") || (parentDiv.className.inde xOf('UIThumbPager_') != -1)) { return false; } } return tag.href};searchshield.Fa cebookSearchEngine.protot ype.addImage = function(node, image, hidden){ var doc = this.search.doc; this.init_inline_ratings( doc); this.show_inline_ratings( doc, node, image);};/////////////// FACEBOOK SEARCH ENGINE ////////////////////////////// AVG TOOLBAR REPORTING ///////////////var avgreport = { BLOCK_SEVERITY: 3, scanResult: function (doc, url, foundUrl, ip) { // report scan end only if surf enabled if ('1' != searchshield.avgCallFunc( doc, 'GetSurfEnabled')) return; // for now native is handling the interstitial var results = searchshield.avgCallFunc( doc, 'MalsiteCheck', url); if ( results == null ) return; var parts = results.split('::'); // need at least severity if (parts == null) return; if (!ip) ip = ""; // use a block severity if foundUrl is given var severity = !!foundUrl ? avgreport.BLOCK_SEVERITY : parseInt(parts[0], 10); var category = ""; var threat = ""; // fill in the category and threat if something was found if (severity > 0) { category = parts[2]; threat = parts[4]; } var scan_result = searchshield.avgCallFunc( doc, 'ReportScanResult', url, url, threat, category, ip, severity); var scan_end = avgreport.scanEnd(doc, url); return (scan_result && scan_end); }, scanEnd: function (doc, url) { return searchshield.avgCallFunc( doc, 'ReportScanEnd', url); }, GetInterstitialIP: function (interstitial) { // simple regex to pull the IP address var regex = /(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)\.(([1-9][0-9]{0,2})|0)/; var match = regex.exec(interstitial); if (!match) return ''; return match[0]; }}/////////////// AVG TOOLBAR REPORTING ////////////////////////////// FLYOVERS ///////////////var avglsflyover = { count: 0, poppedUp: false, poppedElement: null, orig_onmousemove: null, reset: function () { avglsflyover.count = 0; avglsflyover.poppedUp = false; avglsflyover.poppedElemen t = null; avglsflyover.orig_onmouse move = null; }, popup: function (event, hash, search, flyover) { if (!event) event = window.event; var div = document.getElementById(" XPLSS_Flyover"); if (div == null) return; // establish target element and get its containing document object // in case verdict is inside a frame var eventTarget = event.srcElement || event.currentTarget; var frameDoc = eventTarget.ownerDocument ; // if the element is the clock, don't pop over it if ((eventTarget.src != null) && (eventTarget.src.indexOf( "clock.gif") != -1)) return; // save the element we popped over avglsflyover.poppedElemen t = eventTarget; // if no flyover get it if ((flyover == null) || (flyover == "")) { flyover = searchshield.avgCallFunc( frameDoc, 'BuildFlyover', hash); if (!flyover) return; // cleanup flyover, replace any new lines flyover = flyover.replace(/\r/g, ""); flyover = flyover.replace(/\n/g, ""); // escape any single quotes flyover = flyover.replace(/'/g, "'"); } // set the html in the layer div.innerHTML = flyover; // there is an unwanted text node that causes vertical misalignment of flyover if (div.firstChild.nodeType == 3) div.removeChild(div.first Child); avglsflyover.poppedUp = true; // reset display count avglsflyover.count = 0; div.onmouseout = avglsflyover.hide; // if an onmousemove is already set and it isn't us, save it and restore later if ((frameDoc.onmousemove != null) && (frameDoc.onmousemove != avglsflyover.position)) avglsflyover.orig_onmouse move = frameDoc.onmousemove; frameDoc.onmousemove = avglsflyover.position; }, hide: function (event, force) { var div = document.getElementById(" XPLSS_Flyover"); if ((div == null) || (div.style == null) || (div.style.visibility == "hidden")) return; var trans_div = document.getElementById(" XPLSS_Trans"); if ((trans_div == null) || (trans_div.style == null) || (trans_div.style.visibili ty == "hidden")) return; if (!!force) return setFlyoverStyle(div, trans_div); if (!event) event = window.event; // establish target element and get its containing document object // in case verdict is inside a frame var eventTarget = event.srcElement || event.currentTarget; var frameDoc = eventTarget.ownerDocument ; // restore onmousemove if (avglsflyover.orig_onmous emove != null) frameDoc.onmousemove = avglsflyover.orig_onmouse move; if (avglsflyover.poppedEleme nt) avglsflyover.poppedElemen t.style.border = ""; var relatedElement = event.toElement; if (!relatedElement) { //this happens on mouseout when verdict and flyover are on different frames/docs window.top.document.detac hEvent('onmouseout', avglsflyover.hide); window.top.document.attac hEvent('onmouseout', avglsflyover.hide); return; } // make sure we aren't still over the popped image or our layer if (searchshield.containedIn (avglsflyover.poppedEleme nt, relatedElement) || searchshield.containedIn( div, relatedElement) || searchshield.containedIn( trans_div, relatedElement)) { return; } setFlyoverStyle(); // hide and move somewhere off screen (negative offsets) function setFlyoverStyle() { div.style.visibility = "hidden"; div.style.left = "-2100px"; div.style.top = "-2100px"; trans_div.style.visibilit y = "hidden"; trans_div.style.left = "-2100px"; trans_div.style.top = "-2100px"; return true; } }, position: function () { if (!avglsflyover.poppedUp || (avglsflyover.poppedEleme nt == null)) return; var flyover = document.getElementById(" XPLSS_Flyover"); if (flyover == null) return; // relative position of flyover in relation to icon var locateX = 0; // 0=left, 1=right var locateY = 0; // 0=above, 1=below, 2=beside icon // get window sizes var winSize = searchshield.viewPortSize (); var windowX = winSize[0]; var windowY = winSize[1]; // get the exact size of the flyover var flyoverSize = searchshield.elementSize( flyover); var flyoverX = flyoverSize[0]; var flyoverY = flyoverSize[1]; var verdictWidth = 0; if (avglsflyover.poppedEleme nt && avglsflyover.poppedElemen t.width) verdictWidth = avglsflyover.poppedElemen t.width; // get the bounding rect for image(s) var imgRect = searchshield.GetFullBound ingRect(avglsflyover.popp edElement); // half width/height of element bounding rect var halfX = (imgRect.right - imgRect.left) / 2; var halfY = (imgRect.bottom- imgRect.top) / 2; // element the mouse is over, get the center position var posX = searchshield.offsetLeft(a vglsflyover.poppedElement ) + halfX; var posY = searchshield.offsetTop(av glsflyover.poppedElement) + halfY; // if a verdict is inside a frame must get offsets for the frame element var docFrames = document.frames; if (docFrames) { for (var i=0; i < docFrames.length; i++) { try { var frameElem = docFrames[i].frameElement; if (frameElem.contentWindow. document.getElementById(a vglsflyover.poppedElement .id)) { posX += searchshield.offsetLeft(f rameElem); posY += searchshield.offsetTop(fr ameElem); break; } } catch(frmErr){} } } var transXOffset = 0; if (imgRect.mid == undefined) transXOffset = -1 * halfX; else transXOffset = ((imgRect.right + imgRect.left) / 2) - imgRect.mid; // normalize pos to 0 -- get amount of scrolling in browser window var scroll = searchshield.scrollSize() ; var pageOffsetX = scroll[0]; var pageOffsetY = scroll[1]; posX -= pageOffsetX; posY -= pageOffsetY; // setup the offsets var offsetX = posX; var offsetY = posY; // calc where to display on page if ((windowX - posX) > posX) { // right offsetX += halfX; locateX = 1; } else { //left offsetX -= (flyoverX + halfX); } if ((windowY - posY) > posY) { // below if (posY < (windowY/4)) { offsetY -= halfY; locateY = 1; } else { offsetY -= (flyoverY / 2); locateY = 2; } } else { // above if ((windowY - posY) < (windowY/4)) { offsetY -= (flyoverY - halfY); } else { offsetY -= (flyoverY / 2); locateY = 2; } } // make sure we aren't off the screen if (offsetY < 0) offsetY = 0; if ((offsetY + flyoverY) > windowY) offsetY = windowY - flyoverY; // add page offsets back offsetX += pageOffsetX; offsetY += pageOffsetY; posX += pageOffsetX; posY += pageOffsetY; var paddedOffsetX = 0; //provide space between icon and flyover var padX = 3; if (locateX == 0) paddedOffsetX = offsetX - padX; else paddedOffsetX = offsetX + padX; // set where to put the flyover flyover.style.top = offsetY + "px"; flyover.style.left = paddedOffsetX + "px"; // set where to put the transparent layer var trans = document.getElementById(" XPLSS_Trans"); if (trans != null) { var trans_left = 0; var trans_top = 0; var trans_width= 0; var trans_height = 0; // transparent layer should overlap verdict image if (locateX == 0) trans_left = posX - flyoverX - halfX; // left else trans_left = posX - transXOffset - verdictWidth; // right trans.style.left = trans_left + "px"; trans.style.top = offsetY + "px"; trans.style.width = flyoverX + "px"; trans.style.height = flyoverY + "px"; } avglsflyover.display(); }, display: function () { avglsflyover.count++; if (avglsflyover.count == 1) { var flyover = document.getElementById(" XPLSS_Flyover"); if (flyover == null) return; // show the flyover, must use a little count to tell, crazy stuff flyover.style.visibility = "visible"; // show the transparent layer var trans_div = document.getElementById(" XPLSS_Trans"); if (trans_div == null) return; trans_div.style.visibilit y = "visible"; avglsflyover.poppedUp = false; } }, show: function () { var div = document.getElementById(" XPLSS_Flyover"); if (div == null) return; div.style.visibility = "visible"; var trans_div = document.getElementById(" XPLSS_Trans"); if (trans_div == null) return; trans_div.style.visible = "visible"; }};var avglsinlineflyover = { build: function (riskCategory, riskName, bgColor, borderColor) { var html = ''; html += ""; html += "<img src=linkscanner://LS_Logo_Results.gif />
"; html += riskCategory + "
"; html += riskName + "

"; return html; }, popup: function (event, flyover, blUrl) { //set verdict info var div = document.getElementById(' XPLSS_InlineFlyover'); if (div == null) return; // blUrl is an object for a blacklisted short url // when it is passed get the final url if (blUrl != undefined) { var finalUrl = searchshield.avgCallFunc( document, 'GetFinalUrl', blUrl.sUrl); var uri = searchshield.parseLink(un escape(finalUrl)); if (uri.source != null) { // regexp failed so used split to parse url var qsUrl = uri.source.indexOf("?url= "); if (qsUrl != -1) riskName = blUrl.riskNameLabel + uri.source.substring(qsUr l + 5); else riskName = blUrl.riskNameLabel + uri.source; } else if ((uri.qsArray.url != null) && (uri.qsArray.url.length > 0)) { riskName = blUrl.riskNameLabel + uri.qsArray.url; } else riskName = blUrl.riskNameLabel + blUrl.sUrl flyover = avglsinlineflyover.build( blUrl.riskCategory, riskName, blUrl.bgColor, blUrl.borderColor); } div.innerHTML = flyover; div.style.width = "auto"; //reset width div.style.position = "absolute"; if (!event) event = window.event; var eventTarget = event.srcElement; avglsinlineflyover.positi on(eventTarget); }, hide: function (event) { if (!event) event = window.event; var div = document.getElementById(" XPLSS_InlineFlyover"); if (div == null) return; div.visibility = "hidden"; //invisible div.style.left = "-5000px"; }, position: function (imageElem) { var flyover = document.getElementById(' XPLSS_InlineFlyover'); if (flyover == null) return; // relative position of flyover in relation to icon var locateX = 0; // 0=left, 1=right var locateY = 0; // 0=above, 1=below, 2=beside icon // get window sizes var winSize = searchshield.viewPortSize (); var windowX = winSize[0]; var windowY = winSize[1]; // Must know if there is a horizontal scroll bar for Firefox // for proper flyover positioning near bottom edge var scrollYWidth = winSize[2]; var scrollBarX = winSize[2] > 0 ? true : false; // get the exact size of the flyover var flyoverSize = searchshield.elementSize( flyover); var flyoverX = flyoverSize[0]; var flyoverY = flyoverSize[1]; flyover.style.width = flyoverX + "px"; // get the bounding rect for image(s) var imgRect = imageElem.getBoundingClie ntRect(); // half width/height (center) of element bounding rect var halfX = (imgRect.right - imgRect.left) / 2; var halfY = (imgRect.bottom- imgRect.top) / 2; // element the mouse is over, get the center position var posX = searchshield.offsetLeft(i mageElem) + halfX; var posY = searchshield.offsetTop(im ageElem) + halfY; var pageOffsetX = 0; var pageOffsetY = 0; // normalize pos to 0 -- get amount of scrolling in browser window var scroll = searchshield.scrollSize(i mageElem); var pageOffsetX = scroll[0]; var pageOffsetY = scroll[1]; var hasParentFrame = scroll[2]; posX -= pageOffsetX; posY -= pageOffsetY; //compensate for Firefox 3 if (posX < imgRect.left) posX = imgRect.left+halfX; // setup the offsets var offsetX = posX; var offsetY = posY; // calc where to display on page if ((windowX - posX) > posX) { // right offsetX += halfX; locateX = 1; } else { //left offsetX -= (flyoverX + halfX); } if ((windowY - posY) > posY) { // below if (posY < (windowY/4)) { offsetY -= halfY; locateY = 1; } else { offsetY -= (flyoverY / 2) - halfY; locateY = 2; } } else { // above if ((windowY - posY) < (windowY/4)) { offsetY -= (flyoverY - halfY); } else { offsetY -= (flyoverY / 2) + halfY; locateY = 2; } } // make sure we aren't off the screen if (offsetY < 0) offsetY = 0; if ((offsetY + flyoverY) > windowY) { offsetY = windowY - flyoverY; } else if (scrollBarX && ((windowY - (posY + halfY)) < scrollYWidth)) { //verdict overlaps the horizontal scrollbar offsetY = windowY - (flyoverY + scrollYWidth); } // add page offsets back - if not in frame if (!hasParentFrame) { offsetX += pageOffsetX; offsetY += pageOffsetY; } posX += pageOffsetX; posY += pageOffsetY; var paddedOffsetX = 0; //provide space between icon and flyover var padX = 3; if (locateX == 0) paddedOffsetX = offsetX - padX; else paddedOffsetX = offsetX + padX; // set where to put the flyover flyover.style.top = offsetY + "px"; flyover.style.left = paddedOffsetX + "px"; avglsinlineflyover.displa y(); }, display: function () { var div = document.getElementById(' XPLSS_InlineFlyover'); if (div == null) return; // show the flyover div.style.visibility = "visible"; }, imageExists: function(element) { if (element) { // check next siblings children var sibling = element.nextSibling; if ((sibling == null) || (sibling.getElementsByTag Name == null)) return false; var images = sibling.getElementsByTagN ame("IMG"); if (images == null) return false; for (var i = 0; i < images.length; i++) { if (images[i].id == "avg_ls_image") return true; } } return false; }, getImage: function (anchor) { if (anchor) { var imageElem = null; var images = anchor.getElementsByTagNa me("img"); if (images == null) return imageElem; for (var i = 0; i < images.length; i++) { if (images[i].id == "avg_ls_image") { imageElem = images[i]; break; } } return imageElem; } }, mouseOverHandler: function (e, doc, engine) { if (e && e.srcElement && e.srcElement.href) { // need to keep a reference to the function registered // by the listener to be able to remove it. var handlerFunc = arguments.callee; var element = e.srcElement; var href = e.srcElement.href; // need an engine if (!engine) return; // check if it has an image already if (avglsinlineflyover.image Exists(element)) return; // add the image, returns the anchor not the image var new_element = engine.add_inline_image(d oc, element, null, null); // do the check and update in the background setTimeout(function() {avglsinlineflyover.check AndUpdate(doc, element, new_element, engine, handlerFunc)}, 1); } }, checkAndUpdate: function (doc, element, new_element, engine, handlerFunc) { if (!engine) return; try { // remove the listener and get final url element.detachEvent("onmo useover", handlerFunc, false); var finalUrl = searchshield.avgCallFunc( doc, 'GetFinalUrl', element.href); } catch(e) {} if (finalUrl) { // update the verdict engine.display_inline(doc , new_element, finalUrl, null, true); } }};/////////////// FLYOVERS ///////////////</SCRIPT>

hima elgmal 18-04-2011 01:37 AM

رد: هل توافق على استمرار العمل بالتوقيت الصيفي ؟
 
بما اننا فى عصر الحريه والديمقراطيه فانا اقطرح وباسم شباب منطقتنا بانه من حق كل مواطن ان يكون له ساعته الشخصيه وتوقيته الخاص يظبطها زى ما هو عايز ايكش حتى يشيل عقرب الساعات نهائيا حريه حريه حريه :crazyW14::crazyW14::craz yW14::crazyW14::crazyW14: :crazyW14:

hima elgmal 18-04-2011 01:51 AM

رد: تخريب الفرامل بفعل فاعل
 
تصدق اه:crazyW14:دول بيشتغلونا ياباشا

mainz 18-04-2011 02:05 AM

رد: الصور عليا .....والتعليقات الجميله عليكم ....
 
اقتباس:

المشاركة الأصلية كتبت بواسطة sad-bird (المشاركة 403333)
مش لاااااااااااااااااااااااا ااااااااااااااعب
انا عملت كومنت يجي 8 مرات لغاية دلوقتي وكل مرة يفتح صفحة خطأ ويقف
:fun_36_6_2[1]::fun_36_6_2[1]::fun_36_6_2[1]::fun_36_6_2[1]::fun_36_6_2[1]:

ياباشا انت ليك كمان 10محاولات مجانا وبعد كده الرصيد هيخلص هههههههه نورت الموضوع يا غالى GIFT4U


الساعة الآن 05:18 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
www.MasrMotors.com ™ Copyright ©2008 - 2025
Egyptian Automotive Community
جميع الحقوق محفوظة - مصرموتورز 2008 - 2017