pastebin - collaborative debugging tool
kpaste.net RSS


Untitled
Posted by NotLim on Sun 12th Aug 2012 01:11
raw | new post

  1. Return-path: <informativo15@capacitacionpersonalizada.cl>
  2. Envelope-to: soporte@hostname.cl
  3. Delivery-date: Sat, 11 Aug 2012 09:19:12 -0400
  4. Received: from [50.31.254.150] (port=50366 helo=vps.idati.cl)
  5.         by vps.hostname.cl with esmtps (TLSv1:AES256-SHA:256)
  6.         (Exim 4.77)
  7.         (envelope-from <informativo15@capacitacionpersonalizada.cl>)
  8.         id 1T0Bav-00077G-T0
  9.         for soporte@hostname.cl; Sat, 11 Aug 2012 09:19:12 -0400
  10. Received: from 201-223-2-61.baf.movistar.cl ([201.223.2.61]:54943 helo=consulto-3e533e)
  11.         by vps.idati.cl with esmtpa (Exim 4.77)
  12.         (envelope-from <informativo15@capacitacionpersonalizada.cl>)
  13.         id 1T0BW6-0003j9-Gx; Sat, 11 Aug 2012 07:14:15 -0600
  14. Message-ID: <4166485-22012861113148390@consulto-3e533e>
  15. X-Priority: 5
  16. To: "CL a 19 de julio 2012" <informativo16@capacitacionpersonalizada.cl>
  17. Errors-to: capacitac2008desarrollopersonal@gmail.com
  18. X-MSMail-Priority: Low
  19. Reply-To: "=?windows-1252?Q?Legislaci=F3n_laboral?=" <informativo16@capacitacionpersonalizada.cl>
  20. From: "=?windows-1252?Q?Legislaci=F3n_laboral?=" <informativo15@capacitacionpersonalizada.cl>
  21. Subject: Efectos del mobbing o Acoso laboral en los trabajadores
  22. Date: Sat, 11 Aug 2012 09:14:08 -0400
  23. MIME-Version: 1.0
  24. Content-Type: multipart/alternative;
  25.         boundary="----=_NextPart_860011217511982913148515"
  26. X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
  27. X-AntiAbuse: Primary Hostname - vps.idati.cl
  28. X-AntiAbuse: Original Domain - hostname.cl
  29. X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
  30. X-AntiAbuse: Sender Address Domain - capacitacionpersonalizada.cl
  31.  
  32. ------=_NextPart_860011217511982913148515
  33. Content-type: text/plain; charset=windows-1252
  34. Content-Transfer-Encoding: quoted-printable
  35.  
  36.  
  37. =20
  38.  
  39.  
  40. =20
  41.  
  42. =20
  43.  
  44. =20
  45. =20
  46.   =20
  47. =20
  48.  Evite Multas y Fiscalizaciones SEMINARIO ALMUERZOEfectos del mobbing o Ac=
  49. oso laboral en los trabajadores=20
  50. =20
  51. Seminario 17 de Agosto
  52. =20
  53. =20
  54. =20
  55.  =20
  56. =20
  57.  Objetivos:
  58. =20
  59. =20
  60. =20
  61.   Identificar y analizar los aspectos fundamentales del proyecto de ley de=
  62.  acoso laboral o mobbing y sus implicancias en las empresas y los trabajad=
  63. ores, analizar las modificaciones al c&oacute;digo laboral y las sanciones=
  64.  a que se exponen los empleadores tras la aprobaci&oacute;n del proyecto l=
  65. ey, identificar las conductas que constituyen hostigamiento laboral y los =
  66. actores participantes adem&aacute;s de las acciones que pueden seguir los =
  67. afectados  Dirigido a: Gerentes de RR=2EHHGerentes de FinanzasJefes de Per=
  68. sonalAdministradoresContadoresPersonal del &aacute;rea   Seminario=20
  69. Se entrega Manual de Seguimiento
  70. 1 Coffee Break
  71. Almuerzo=20
  72. Diplomas de participaci&oacute;n
  73. Set ejercicios  Fecha del Curso:  17 de Agosto C&oacute;digo Sence: 12-37-=
  74. 8952-05 Duraci&oacute;n: 5 horas Valores:Contado inicio $ 90=2E000   p=2Ep=
  75. Por Otic            $ 110=2E000 p=2Ep30 d&iacute;as              $ 135=2E0=
  76. 00 p=2Ep   Horario: 9:00 a 14:00 Lugar de realizaci&oacute;n:Lord Cochrane=
  77.  198 Santiago INFORMACIONES:  56(2) 7324774-7322552 Fax 7328901 www=2Esarc=
  78. ap=2Ecl Mail: capacitacion@sarcap=2Ecl Para ser removido enviarreclamos@sa=
  79. rcap=2Ecl=20
  80. Proyecto de Ley
  81.  
  82. Como afecta a los trabajadores:  =20
  83.  
  84. Legislaci&oacute;n Laboral: Busca otorgar un conocimiento &uacute;til, con=
  85. creto, ordenado y accesible de los aspectos legales relacionados con la no=
  86. rmativa laboral vigente y los cambios relevantes introducidos en ella dura=
  87. nte los &uacute;ltimos a&ntilde;os=2E=2E=20
  88.  
  89. =20
  90. =20
  91.  =20
  92. =20
  93.  Programa  =20
  94. =20
  95. =20
  96. =20
  97. =20
  98. =20
  99.        Inicios de mobbing:Idelimitaci&oacute;n del fen&oacute;meno=2EActor=
  100. es participantesLas cuatro fases del espiral del mobbing El ps&iacute;co-t=
  101. errorismo Acciones para limitarloHerramientas legales del empleador La rea=
  102. lidad en chile Que es acoso laboral en el proyecto de ley:Art&iacute;culos=
  103.  del c&oacute;digo del trabajo que modifica el proyectoAcciones legales qu=
  104. e puede activar el trabajador en el nuevo escenarioNuevas atribuciones de =
  105. la direcci&oacute;n del trabajo Acciones de tutela laboralL&iacute;mites d=
  106. e la potestad del empleador Plazos de prescripci&oacute;n Utilizaci&oacute=
  107. ;n del ius variandi Jurisprudencia de mobbing Condiciones para que exista =
  108. mobbing:Acciones que constituyen acoso laboralClases de acoso laboralDerec=
  109. hos fundamentales que afectanQue es discriminaci&oacute;n Tipos de discrim=
  110. inaci&oacute;n Procedimiento legal que lo respalda             "Actividad/=
  111. es de capacitaci&oacute;n autorizadal por el SENCE para los efectos de la =
  112. franquiciatributaria de capacitaci&oacute;n, no conducente/s al otorgamien=
  113. to de un t&iacute;tulo o grado acad&eacute;mico=2E"
  114.  
  115.  
  116.  =20
  117.  
  118.  
  119.  =20
  120. =09=09=09 =09=09 =09=20
  121. ------=_NextPart_860011217511982913148515
  122. Content-Type: text/html; charset=windows-1252
  123. Content-Transfer-Encoding: quoted-printable
  124.  
  125. <div align=3D"center">
  126. <table border=3D"0" cellpadding=3D"0" style=3D"border-collapse: collapse" =
  127. width=3D"97%" id=3D"table8">
  128. <tr><td bgcolor=3D#FFFFFF><p align=3Dleft><p style=3D"text-align: center">=
  129.  
  130. <table style=3D"border-collapse: collapse" id=3D"table8" border=3D"0" cell=
  131. padding=3D"0" width=3D"97%">
  132.     <tbody>
  133.         <tr>
  134.             <td bgcolor=3D"#ffffff">
  135.             <p style=3D"text-align: center">
  136.             <table style=3D"border-collapse: collapse" id=3D"table1" borde=
  137. r=3D"0" cellpadding=3D"0" width=3D"100%">
  138.                 <tbody>
  139.                     <tr>
  140.                         <td>
  141.                         <p style=3D"text-align: center"><font size=3D"1" f=
  142. ace=3D"Verdana">
  143.                         <table style=3D"border-collapse: collapse" id=3D"t=
  144. able41" border=3D"0" cellpadding=3D"0" width=3D"68%">
  145.                             <tbody>
  146.                                 <tr>
  147.                                     <td bgcolor=3D"#ffffff">
  148.                                     <table style=3D"width: 739px; border-c=
  149. ollapse: collapse; height: 1637px" id=3D"table42" border=3D"0" cellpadding=
  150. =3D"0" width=3D"739">
  151.                                         <tbody>
  152.                                             <tr>
  153.                                                 <td bgcolor=3D"#ffffff" al=
  154. ign=3D"center"><strong><font size=3D"1">
  155.                                                 <table style=3D"width: 650=
  156. px; height: 28px" id=3D"table43" border=3D"0" cellspacing=3D"0" cellpaddin=
  157. g=3D"0" width=3D"650">
  158.                                                     <tbody>
  159.                                                         <tr>
  160.                                                             <td style=3D"t=
  161. ext-align: center; color: #ffffff" bgcolor=3D"#062c5c">
  162.                                                             <div>&nbsp;</d=
  163. iv>
  164.                                                             <div>&nbsp;</d=
  165. iv>
  166.                                                             </td>
  167.                                                         </tr>
  168.                                                         <tr>
  169.                                                             <td bgcolor=3D=
  170. "#1b5b8e"><img alt=3D"" width=3D"582" height=3D"88" src=3D"http://www=2Esa=
  171. rcap=2Ecl/nuevo/imagenes/Dibujologomarzo(34)=2Ejpg" /></td>
  172.                                                         </tr>
  173.                                                     </tbody>
  174.                                                 </table>
  175.                                                 </font></strong>
  176.                                                 <table style=3D"width: 651=
  177. px; height: 1434px" id=3D"table44" border=3D"0" cellspacing=3D"0" cellpadd=
  178. ing=3D"0" width=3D"651">
  179.                                                     <tbody>
  180.                                                         <tr>
  181.                                                             <td style=3D"t=
  182. ext-align: center; color: #ffffff" bgcolor=3D"#062c5c">
  183.                                                             <div><span sty=
  184. le=3D"font-size: x-large"><span style=3D"font-family: Verdana"><span style=
  185. =3D"font-size: medium">
  186.                                                             <div><span sty=
  187. le=3D"color: #999999"><span style=3D"font-size: x-large"><span style=3D"fo=
  188. nt-family: Verdana"><span style=3D"font-size: medium">Evite Multas y Fisca=
  189. lizaciones</span></span></span></span></div>
  190.                                                             <div><span sty=
  191. le=3D"color: #999999">&nbsp;</span></div>
  192.                                                             <div><span sty=
  193. le=3D"color: #999999"><span style=3D"font-size: x-large"><span style=3D"fo=
  194. nt-family: Verdana"><span style=3D"font-size: medium">SEMINARIO ALMUERZO</=
  195. span></span></span></span></div>
  196.                                                             <div><span sty=
  197. le=3D"color: #ffffff"><span style=3D"font-size: 13=2E5pt"><span style=3D"f=
  198. ont-size: x-large"><strong><font face=3D"Verdana"><span class=3D"titulo"><=
  199. b>Efectos del mobbing o Acoso laboral en los trabajadores</b> </span></fon=
  200. t></strong></span></span></span><span style=3D"color: navy; font-size: 13=2E=
  201. 5pt"><span style=3D"color: #808080"><span style=3D"font-size: x-large"><st=
  202. rong><font face=3D"Verdana"><span class=3D"titulo">
  203.                                                             <p style=3D"te=
  204. xt-align: center"><span style=3D"font-size: x-large">&nbsp;<img style=3D"w=
  205. idth: 500px; height: 357px" alt=3D"" width=3D"500" height=3D"523" src=3D"h=
  206. ttp://comunicados=2Ecursos-online=2Ecl/fotos/Efectos del mobbing(1)=2Ejpg"=
  207.  /></span></p>
  208.                                                             </span></font>=
  209. </strong></span></span></span></div>
  210.                                                             </span></span>=
  211. </span></div>
  212.                                                             <font size=3D"=
  213. 2">
  214.                                                             <div><span sty=
  215. le=3D"font-family: Verdana"><span style=3D"font-size: medium">
  216.                                                             <div><span sty=
  217. le=3D"font-size: x-large">Seminario&nbsp;17 de Agosto</span></div>
  218.                                                             </span></span>=
  219. </div>
  220.                                                             </font><font s=
  221. ize=3D"+0"><span style=3D"font-size: x-large">
  222.                                                             <table style=3D=
  223. "width: 650px; height: 834px" id=3D"table45" border=3D"0" cellspacing=3D"0=
  224. " cellpadding=3D"8" background=3D"http://www=2Emundolaboral=2Ecl/img/secre=
  225. tariasmarzo001b=2Ejpg">
  226.                                                                 <tbody>
  227.                                                                     <tr>
  228.                                                                         <t=
  229. d bgcolor=3D"#ffffff" height=3D"46" valign=3D"top" width=3D"23%" align=3D"=
  230. center">
  231.                                                                         <d=
  232. iv align=3D"center">
  233.                                                                         <t=
  234. able style=3D"border-collapse: collapse" id=3D"table52" border=3D"0" cellp=
  235. adding=3D"0" width=3D"24%">
  236.                                                                           =
  237.   <tbody>
  238.                                                                           =
  239.       <tr>
  240.                                                                           =
  241.           <td bgcolor=3D"#ffffff">
  242.                                                                           =
  243.           <table style=3D"border-collapse: collapse" id=3D"table53" border=
  244. =3D"0" cellspacing=3D"2" cellpadding=3D"2" width=3D"100%">
  245.                                                                           =
  246.               <tbody>
  247.                                                                           =
  248.                   <tr>
  249.                                                                           =
  250.                       <td valign=3D"top">
  251.                                                                           =
  252.                       <table style=3D"border-collapse: collapse" id=3D"tab=
  253. le54" border=3D"0" cellpadding=3D"0" width=3D"100%">
  254.                                                                           =
  255.                           <tbody>
  256.                                                                           =
  257.                               <tr>
  258.                                                                           =
  259.                                   <td>&nbsp;
  260.                                                                           =
  261.                                   <table style=3D"border-collapse: collaps=
  262. e" id=3D"table55" border=3D"0" cellpadding=3D"0" width=3D"97%">
  263.                                                                           =
  264.                                       <tbody>
  265.                                                                           =
  266.                                           <tr>
  267.                                                                           =
  268.                                               <td bgcolor=3D"#ffffff">
  269.                                                                           =
  270.                                               <div align=3D"center">
  271.                                                                           =
  272.                                               <table style=3D"width: 168px=
  273. " id=3D"table56" border=3D"0" cellspacing=3D"0" cellpadding=3D"0">
  274.                                                                           =
  275.                                                   <tbody>
  276.                                                                           =
  277.                                                       <tr>
  278.                                                                           =
  279.                                                           <td style=3D"pad=
  280. ding-bottom: 0in; padding-left: 0in; padding-right: 0in; background: white=
  281. ; padding-top: 0in" bgcolor=3D"#ffffff" valign=3D"top">
  282.                                                                           =
  283.                                                           <div><font size=3D=
  284. "3"><span style=3D"font-size: 12pt">
  285.                                                                           =
  286.                                                           <div align=3D"ju=
  287. stify"><span style=3D"font-family: Verdana"><font size=3D"1"><strong>Objet=
  288. ivos:</strong></font></span></div>
  289.                                                                           =
  290.                                                           <div align=3D"ju=
  291. stify">
  292.                                                                           =
  293.                                                           <div align=3D"ce=
  294. nter">
  295.                                                                           =
  296.                                                           <table style=3D"=
  297. border-collapse: collapse" id=3D"table58" border=3D"0" cellpadding=3D"0" w=
  298. idth=3D"24%">
  299.                                                                           =
  300.                                                               <tbody>
  301.                                                                           =
  302.                                                                   <tr>
  303.                                                                           =
  304.                                                                       <td =
  305. bgcolor=3D"#ffffff">
  306.                                                                           =
  307.                                                                       <tab=
  308. le style=3D"border-collapse: collapse" id=3D"table59" border=3D"0" cellspa=
  309. cing=3D"2" cellpadding=3D"2" width=3D"70%">
  310.                                                                           =
  311.                                                                           =
  312. <tbody>
  313.                                                                           =
  314.                                                                           =
  315.     <tr>
  316.                                                                           =
  317.                                                                           =
  318.         <td valign=3D"top">
  319.                                                                           =
  320.                                                                           =
  321.         <table style=3D"border-collapse: collapse" id=3D"table60" border=3D=
  322. "0" cellpadding=3D"0" width=3D"100%">
  323.                                                                           =
  324.                                                                           =
  325.             <tbody>
  326.                                                                           =
  327.                                                                           =
  328.                 <tr>
  329.                                                                           =
  330.                                                                           =
  331.                     <td>
  332.                                                                           =
  333.                                                                           =
  334.                     <table style=3D"width: 199px; height: 234px" id=3D"tab=
  335. le61">
  336.                                                                           =
  337.                                                                           =
  338.                         <tbody>
  339.                                                                           =
  340.                                                                           =
  341.                             <tr>
  342.                                                                           =
  343.                                                                           =
  344.                                 <td>
  345.                                                                           =
  346.                                                                           =
  347.                                 <div style=3D"text-align: justify; line-he=
  348. ight: 150%"><span style=3D"line-height: 150%; color: #000000; font-size: s=
  349. maller"><font size=3D"2">
  350.                                                                           =
  351.                                                                           =
  352.                                 <div><span style=3D"font-size: xx-small">
  353.                                                                           =
  354.                                                                           =
  355.                                 <div style=3D"text-align: justify"><span s=
  356. tyle=3D"font-family: Verdana"><span style=3D"font-size: xx-small"><span st=
  357. yle=3D"font-family: Verdana"><span style=3D"font-size: xx-small">&nbsp;
  358.                                                                           =
  359.                                                                           =
  360.                                 <div><span style=3D"font-size: xx-small"><=
  361. span style=3D"font-family: Verdana"><span style=3D"font-size: xx-small"><s=
  362. pan style=3D"font-family: Verdana"><span style=3D"font-size: xx-small"><sp=
  363. an style=3D"font-family: Verdana">
  364.                                                                           =
  365.                                                                           =
  366.                                 <div style=3D"text-align: justify; line-he=
  367. ight: 150%"><span style=3D"color: #000000"><span style=3D"font-family: Ver=
  368. dana"><span style=3D"line-height: 150%">
  369.                                                                           =
  370.                                                                           =
  371.                                 <div><span style=3D"font-size: 8=2E5pt">Id=
  372. entificar y analizar los aspectos fundamentales del proyecto de ley de aco=
  373. so laboral o mobbing y sus implicancias en las empresas y los trabajadores=
  374. , analizar las modificaciones al c&oacute;digo laboral y las sanciones a q=
  375. ue se exponen los empleadores tras la aprobaci&oacute;n del proyecto ley, =
  376. identificar las conductas que constituyen hostigamiento laboral y los acto=
  377. res participantes adem&aacute;s de las acciones que pueden seguir los afec=
  378. tados</span></div>
  379.                                                                           =
  380.                                                                           =
  381.                                 </span></span></span></div>
  382.                                                                           =
  383.                                                                           =
  384.                                 </span></span></span></span></span></span>=
  385. </div>
  386.                                                                           =
  387.                                                                           =
  388.                                 </span></span></span></span><span style=3D=
  389. "font-size: xx-small"><span style=3D"font-family: Verdana">&nbsp;</span></=
  390. span></div>
  391.                                                                           =
  392.                                                                           =
  393.                                 </span></div>
  394.                                                                           =
  395.                                                                           =
  396.                                 </font></span></div>
  397.                                                                           =
  398.                                                                           =
  399.                                 </td>
  400.                                                                           =
  401.                                                                           =
  402.                             </tr>
  403.                                                                           =
  404.                                                                           =
  405.                         </tbody>
  406.                                                                           =
  407.                                                                           =
  408.                     </table>
  409.                                                                           =
  410.                                                                           =
  411.                     </td>
  412.                                                                           =
  413.                                                                           =
  414.                 </tr>
  415.                                                                           =
  416.                                                                           =
  417.             </tbody>
  418.                                                                           =
  419.                                                                           =
  420.         </table>
  421.                                                                           =
  422.                                                                           =
  423.         </td>
  424.                                                                           =
  425.                                                                           =
  426.     </tr>
  427.                                                                           =
  428.                                                                           =
  429. </tbody>
  430.                                                                           =
  431.                                                                       </ta=
  432. ble>
  433.                                                                           =
  434.                                                                       </td=
  435. >
  436.                                                                           =
  437.                                                                   </tr>
  438.                                                                           =
  439.                                                               </tbody>
  440.                                                                           =
  441.                                                           </table>
  442.                                                                           =
  443.                                                           </div>
  444.                                                                           =
  445.                                                           <span style=3D"f=
  446. ont-family: Verdana">&nbsp;</span></div>
  447.                                                                           =
  448.                                                           </span></font></=
  449. div>
  450.                                                                           =
  451.                                                           </td>
  452.                                                                           =
  453.                                                       </tr>
  454.                                                                           =
  455.                                                   </tbody>
  456.                                                                           =
  457.                                               </table>
  458.                                                                           =
  459.                                               </div>
  460.                                                                           =
  461.                                               <div style=3D"border-bottom:=
  462.  medium none; border-left: white 3pt solid; padding-bottom: 0cm; padding-l=
  463. eft: 0cm; padding-right: 0cm; border-top: medium none; border-right: mediu=
  464. m none; padding-top: 0cm">
  465.                                                                           =
  466.                                               <div style=3D"border-bottom:=
  467.  medium none; text-align: left; border-left: medium none; padding-bottom: =
  468. 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
  469. r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
  470. "><span style=3D"font-family: Verdana"><b>Dirigido a:</b></span></span></d=
  471. iv>
  472.                                                                           =
  473.                                               <div style=3D"border-bottom:=
  474.  medium none; text-align: left; border-left: medium none; padding-bottom: =
  475. 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
  476. r-right: medium none; padding-top: 0cm">&nbsp;</div>
  477.                                                                           =
  478.                                               <div style=3D"border-bottom:=
  479.  medium none; text-align: left; border-left: medium none; padding-bottom: =
  480. 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
  481. r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
  482. "><span style=3D"font-family: Verdana">Gerentes de RR=2EHH</span></span></=
  483. div>
  484.                                                                           =
  485.                                               <div style=3D"border-bottom:=
  486.  medium none; text-align: left; border-left: medium none; padding-bottom: =
  487. 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
  488. r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
  489. "><span style=3D"font-family: Verdana">Gerentes de Finanzas</span></span><=
  490. /div>
  491.                                                                           =
  492.                                               <div style=3D"border-bottom:=
  493.  medium none; text-align: left; border-left: medium none; padding-bottom: =
  494. 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
  495. r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
  496. "><span style=3D"font-family: Verdana">Jefes de Personal</span></span></di=
  497. v>
  498.                                                                           =
  499.                                               <div style=3D"border-bottom:=
  500.  medium none; text-align: left; border-left: medium none; padding-bottom: =
  501. 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
  502. r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
  503. "><span style=3D"font-family: Verdana">Administradores</span></span></div>=
  504.  
  505.                                                                           =
  506.                                               <div style=3D"border-bottom:=
  507.  medium none; text-align: left; border-left: medium none; padding-bottom: =
  508. 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
  509. r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
  510. "><span style=3D"font-family: Verdana">Contadores</span></span></div>
  511.                                                                           =
  512.                                               <div style=3D"border-bottom:=
  513.  medium none; text-align: left; border-left: medium none; padding-bottom: =
  514. 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
  515. r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
  516. "><span style=3D"font-family: Verdana">Personal del &aacute;rea</span></sp=
  517. an></div>
  518.                                                                           =
  519.                                               </div>
  520.                                                                           =
  521.                                               </td>
  522.                                                                           =
  523.                                           </tr>
  524.                                                                           =
  525.                                       </tbody>
  526.                                                                           =
  527.                                   </table>
  528.                                                                           =
  529.                                   </td>
  530.                                                                           =
  531.                               </tr>
  532.                                                                           =
  533.                           </tbody>
  534.                                                                           =
  535.                       </table>
  536.                                                                           =
  537.                       </td>
  538.                                                                           =
  539.                   </tr>
  540.                                                                           =
  541.               </tbody>
  542.                                                                           =
  543.           </table>
  544.                                                                           =
  545.           </td>
  546.                                                                           =
  547.       </tr>
  548.                                                                           =
  549.   </tbody>
  550.                                                                         </=
  551. table>
  552.                                                                         </=
  553. div>
  554.                                                                         <d=
  555. iv align=3D"center">&nbsp;</div>
  556.                                                                         <d=
  557. iv align=3D"center">&nbsp;</div>
  558.                                                                         <f=
  559. ont size=3D"+0"><span><span style=3D"font-size: x-large"><strong><font col=
  560. or=3D"#545454" size=3D"1"><span style=3D"color: #545454; font-size: xx-sma=
  561. ll"><font size=3D"1"><span style=3D"font-size: 7=2E5pt">
  562.                                                                         <d=
  563. iv>&nbsp;</div>
  564.                                                                         <d=
  565. iv><span style=3D"font-family: Verdana"><u><i><span style=3D"font-size: sm=
  566. all">Seminario</span></i></u></span><span style=3D"font-family: Verdana">&=
  567. nbsp;</span></div>
  568.                                                                         <u=
  569. l>
  570.                                                                           =
  571.   <li>
  572.                                                                           =
  573.   <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
  574. font-size: xx-small">Se entrega Manual de Seguimiento</span></span></div>
  575.                                                                           =
  576.   </li>
  577.                                                                           =
  578.   <li>
  579.                                                                           =
  580.   <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
  581. font-size: xx-small">1&nbsp;Coffee Break</span></span></div>
  582.                                                                           =
  583.   </li>
  584.                                                                           =
  585.   <li>
  586.                                                                           =
  587.   <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
  588. font-size: larger">Almuerzo&nbsp;</span></span></div>
  589.                                                                           =
  590.   </li>
  591.                                                                           =
  592.   <li>
  593.                                                                           =
  594.   <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
  595. font-size: xx-small">Diplomas de participaci&oacute;n</span></span></div>
  596.                                                                           =
  597.   </li>
  598.                                                                           =
  599.   <li>
  600.                                                                           =
  601.   <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
  602. font-size: xx-small">Set ejercicios&nbsp; </span></span></div>
  603.                                                                           =
  604.   </li>
  605.                                                                         </=
  606. ul>
  607.                                                                         <d=
  608. iv align=3D"left"><span style=3D"font-family: Verdana"><u>Fecha del Curso<=
  609. /u>:&nbsp;&nbsp;17 de&nbsp;Agosto</span><span style=3D"font-family: Verdan=
  610. a">&nbsp;</span></div>
  611.                                                                         <d=
  612. iv align=3D"left"><span style=3D"font-family: Verdana"><u>C&oacute;digo Se=
  613. nce:</u> <b><font size=3D"1">12-37-8952-05</font></b></span></div>
  614.                                                                         <d=
  615. iv align=3D"left"><span style=3D"font-family: Verdana">&nbsp;</span></div>=
  616.  
  617.                                                                         <d=
  618. iv align=3D"left"><span style=3D"font-family: Verdana"><u>Duraci&oacute;n:=
  619. </u>&nbsp;5&nbsp;horas</span></div>
  620.                                                                         <d=
  621. iv align=3D"left"><span style=3D"font-family: Verdana">&nbsp;</span></div>=
  622.  
  623.                                                                         <d=
  624. iv align=3D"left"><span style=3D"font-family: Verdana"><u>Valores:</u></sp=
  625. an></div>
  626.                                                                         <d=
  627. iv align=3D"left"><span style=3D"font-family: Verdana">Contado inicio $ 90=
  628. =2E000&nbsp;&nbsp;&nbsp;p=2Ep</span></div>
  629.                                                                         <d=
  630. iv align=3D"left"><span style=3D"font-family: Verdana">Por Otic&nbsp;&nbsp=
  631. ;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ 110=2E000 p=2Ep</span=
  632. ></div>
  633.                                                                         <d=
  634. iv align=3D"left"><span style=3D"font-family: Verdana">30 d&iacute;as&nbsp=
  635. ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
  636. $ 135=2E000 p=2Ep</span></div>
  637.                                                                         <d=
  638. iv align=3D"left">&nbsp;</div>
  639.                                                                         <d=
  640. iv align=3D"left"><span style=3D"font-family: Verdana">&nbsp;</span></div>=
  641.  
  642.                                                                         <d=
  643. iv align=3D"left"><span style=3D"font-family: Verdana">&nbsp;</span></div>=
  644.  
  645.                                                                         <d=
  646. iv align=3D"left"><span style=3D"font-family: Verdana"><u>Horario: </u></s=
  647. pan></div>
  648.                                                                         <d=
  649. iv align=3D"left"><span style=3D"font-family: Verdana">9:00 a 14:00</span>=
  650. </div>
  651.                                                                         <d=
  652. iv align=3D"left"><span style=3D"font-family: Verdana">&nbsp;</span></div>=
  653.  
  654.                                                                         <d=
  655. iv align=3D"left"><span style=3D"font-family: Verdana"><u>Lugar de realiza=
  656. ci&oacute;n:</u></span></div>
  657.                                                                         <d=
  658. iv align=3D"left"><span style=3D"font-family: Verdana">Lord Cochrane 198 S=
  659. antiago</span></div>
  660.                                                                         <d=
  661. iv align=3D"left"><span style=3D"font-family: Verdana">&nbsp;</span></div>=
  662.  
  663.                                                                         <d=
  664. iv align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"font=
  665. -size: xx-small"><b><font style=3D"font-size: 8pt">INFORMACIONES: </font><=
  666. /b></span></span></div>
  667.                                                                         <d=
  668. iv align=3D"left">&nbsp;</div>
  669.                                                                         </=
  670. span></font></span></font></strong></span><span style=3D"font-family: Verd=
  671. ana"><span style=3D"font-size: x-large"><strong><font color=3D"#545454" si=
  672. ze=3D"1"><span style=3D"color: #545454; font-size: xx-small"><font size=3D=
  673. "1"><span style=3D"font-size: 7=2E5pt">
  674.                                                                         <d=
  675. iv align=3D"left"><span style=3D"font-size: xx-small"><b><font style=3D"fo=
  676. nt-size: 8pt">56(2) 7324774-7322552&nbsp;</font></b></span></div>
  677.                                                                         <d=
  678. iv align=3D"left"><span style=3D"font-size: xx-small"><b><font style=3D"fo=
  679. nt-size: 8pt">Fax 7328901</font></b></span></div>
  680.                                                                         <d=
  681. iv align=3D"left">&nbsp;</div>
  682.                                                                         </=
  683. span></font></span></font></strong></span></span><strong><span style=3D"co=
  684. lor: #545454"><font style=3D"font-size: 8pt" color=3D"#545454">
  685.                                                                         <d=
  686. iv align=3D"left"><a href=3D"http://www=2Esarcap=2Ecl/"><span style=3D"fon=
  687. t-family: Verdana">www=2Esarcap=2Ecl</span></a></div>
  688.                                                                         <d=
  689. iv align=3D"left">&nbsp;</div>
  690.                                                                         <d=
  691. iv align=3D"left"><span style=3D"font-family: Verdana">Mail: </span><a hre=
  692. f=3D"mailto:capacitacion@sarcap=2Ecl"><span style=3D"font-family: Verdana"=
  693. >capacitacion@sarcap=2Ecl</span></a></div>
  694.                                                                         <d=
  695. iv align=3D"left">&nbsp;</div>
  696.                                                                         <d=
  697. iv align=3D"left"><span style=3D"font-family: Verdana">Para ser removido e=
  698. nviar</span></div>
  699.                                                                         <d=
  700. iv align=3D"left"><a href=3D"mailto:reclamos@sarcap=2Ecl"><span style=3D"f=
  701. ont-family: Verdana">reclamos@sarcap=2Ecl</span></a></div>
  702.                                                                         </=
  703. font></span></strong></span></font></td>
  704.                                                                         <t=
  705. d bgcolor=3D"#ffffff"><hr style=3D"width: 100%; height: 1px; color: #00008=
  706. 0; size: 1px" size=3D"1" />
  707.                                                                         <s=
  708. pan><font color=3D"#000080">
  709.                                                                         <d=
  710. iv><span style=3D"color: navy; font-size: 13=2E5pt">
  711.                                                                         <p=
  712.  style=3D"text-align: justify"><span style=3D"font-size: large"><strong><f=
  713. ont color=3D"#000080" face=3D"Verdana"><span class=3D"titulo">Proyecto de =
  714. Ley</span></font></strong></span></p>
  715.                                                                         <p=
  716.  style=3D"text-align: justify"><span style=3D"font-size: larger"><strong><=
  717. font color=3D"#000080" face=3D"Verdana"><span class=3D"titulo">Como afecta=
  718.  a los trabajadores</span></font></strong></span><span style=3D"font-size:=
  719.  large"><strong><font color=3D"#000080" face=3D"Verdana"><span class=3D"ti=
  720. tulo">:</span></font></strong><font style=3D"font-size: 8pt" face=3D"Caste=
  721. llar">&nbsp;</font></span><span style=3D"font-size: smaller"><font style=3D=
  722. "font-size: 8pt" face=3D"Castellar">&nbsp;</font></span>&nbsp;</p>
  723.                                                                         <s=
  724. pan style=3D"font-size: medium"><span style=3D"font-family: Arial; color: =
  725. #666666"><b><span style=3D"font-family: Arial; color: #666666; font-size: =
  726. 13=2E5pt">
  727.                                                                         <p=
  728.  style=3D"text-align: justify"><b><span style=3D"font-family: Arial; color=
  729. : #666666; font-size: 13=2E5pt">Legislaci&oacute;n Laboral</span></b><b><s=
  730. pan style=3D"font-family: Arial; color: #666666; font-size: 9=2E5pt">: </s=
  731. pan></b><span style=3D"font-size: larger"><b><span style=3D"font-family: A=
  732. rial; color: #666666">Busca otorgar&nbsp;un conocimiento &uacute;til, conc=
  733. reto, ordenado y accesible de los aspectos legales relacionados con la nor=
  734. mativa laboral vigente y los cambios relevantes introducidos en ella duran=
  735. te los &uacute;ltimos a&ntilde;os=2E=2E </span></b></span></p>
  736.                                                                         </=
  737. span></b></span></span></span></div>
  738.                                                                         <d=
  739. iv>
  740.                                                                         <d=
  741. iv align=3D"center">
  742.                                                                         <t=
  743. able style=3D"border-collapse: collapse" id=3D"table47" border=3D"0" cellp=
  744. adding=3D"0" width=3D"24%">
  745.                                                                           =
  746.   <tbody>
  747.                                                                           =
  748.       <tr>
  749.                                                                           =
  750.           <td bgcolor=3D"#ffffff">
  751.                                                                           =
  752.           <table style=3D"border-collapse: collapse" id=3D"table48" border=
  753. =3D"0" cellspacing=3D"2" cellpadding=3D"2" width=3D"81%">
  754.                                                                           =
  755.               <tbody>
  756.                                                                           =
  757.                   <tr>
  758.                                                                           =
  759.                       <td valign=3D"top">
  760.                                                                           =
  761.                       <table style=3D"border-collapse: collapse" id=3D"tab=
  762. le49" border=3D"0" cellpadding=3D"0" width=3D"94%">
  763.                                                                           =
  764.                           <tbody>
  765.                                                                           =
  766.                               <tr>
  767.                                                                           =
  768.                                   <td>&nbsp;
  769.                                                                           =
  770.                                   <table style=3D"border-collapse: collaps=
  771. e" id=3D"table50" border=3D"0" cellpadding=3D"0" width=3D"97%">
  772.                                                                           =
  773.                                       <tbody>
  774.                                                                           =
  775.                                           <tr>
  776.                                                                           =
  777.                                               <td bgcolor=3D"#ffffff">
  778.                                                                           =
  779.                                               <div align=3D"center">
  780.                                                                           =
  781.                                               <table style=3D"width: 403px=
  782. " id=3D"table51" border=3D"0" cellspacing=3D"0" cellpadding=3D"0">
  783.                                                                           =
  784.                                                   <tbody>
  785.                                                                           =
  786.                                                       <tr>
  787.                                                                           =
  788.                                                           <td style=3D"pad=
  789. ding-bottom: 0in; padding-left: 0in; padding-right: 0in; padding-top: 0in"=
  790.  bgcolor=3D"#e5e5e5" valign=3D"top">
  791.                                                                           =
  792.                                                           <div style=3D"ma=
  793. rgin-bottom: 12pt"><font color=3D"#545454" size=3D"1"><span style=3D"color=
  794. : #545454; font-size: 9pt">
  795.                                                                           =
  796.                                                           <div style=3D"li=
  797. ne-height: 150%; margin: 0cm 2=2E45pt 0pt 0cm"><span style=3D"font-size: x=
  798. x-small">
  799.                                                                           =
  800.                                                           <div align=3D"le=
  801. ft"><font size=3D"1">Programa&nbsp;</font></div>
  802.                                                                           =
  803.                                                           <div align=3D"le=
  804. ft"><font size=3D"1">&nbsp;&nbsp;
  805.                                                                           =
  806.                                                           <div align=3D"ce=
  807. nter">
  808.                                                                           =
  809.                                                           <table style=3D"=
  810. border-collapse: collapse" id=3D"table65" border=3D"0" cellpadding=3D"0" w=
  811. idth=3D"24%">
  812.                                                                           =
  813.                                                               <tbody>
  814.                                                                           =
  815.                                                                   <tr>
  816.                                                                           =
  817.                                                                       <td =
  818. bgcolor=3D"#ffffff">
  819.                                                                           =
  820.                                                                       <tab=
  821. le style=3D"border-collapse: collapse" id=3D"table66" border=3D"0" cellspa=
  822. cing=3D"2" cellpadding=3D"2" width=3D"100%">
  823.                                                                           =
  824.                                                                           =
  825. <tbody>
  826.                                                                           =
  827.                                                                           =
  828.     <tr>
  829.                                                                           =
  830.                                                                           =
  831.         <td valign=3D"top">
  832.                                                                           =
  833.                                                                           =
  834.         <table style=3D"border-collapse: collapse" id=3D"table67" border=3D=
  835. "0" cellpadding=3D"0" width=3D"100%">
  836.                                                                           =
  837.                                                                           =
  838.             <tbody>
  839.                                                                           =
  840.                                                                           =
  841.                 <tr>
  842.                                                                           =
  843.                                                                           =
  844.                     <td>
  845.                                                                           =
  846.                                                                           =
  847.                     <table style=3D"width: 405px; height: 379px" id=3D"tab=
  848. le68">
  849.                                                                           =
  850.                                                                           =
  851.                         <tbody>
  852.                                                                           =
  853.                                                                           =
  854.                             <tr>
  855.                                                                           =
  856.                                                                           =
  857.                                 <td>
  858.                                                                           =
  859.                                                                           =
  860.                                 <table style=3D"width: 376px; border-colla=
  861. pse: collapse; height: 335px" id=3D"table69" border=3D"0" cellspacing=3D"0=
  862. " cellpadding=3D"0">
  863.                                                                           =
  864.                                                                           =
  865.                                     <tbody>
  866.                                                                           =
  867.                                                                           =
  868.                                         <tr>
  869.                                                                           =
  870.                                                                           =
  871.                                             <td style=3D"border-bottom: #e=
  872. ce9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transp=
  873. arent; padding-left: 0cm; width: 373px; padding-right: 0cm; border-top: #e=
  874. ce9d8; border-right: #ece9d8; padding-top: 0cm">
  875.                                                                           =
  876.                                                                           =
  877.                                             <table style=3D"width: 373px; =
  878. border-collapse: collapse; height: 247px" id=3D"table70" border=3D"0" cell=
  879. spacing=3D"0" cellpadding=3D"0">
  880.                                                                           =
  881.                                                                           =
  882.                                                 <tbody>
  883.                                                                           =
  884.                                                                           =
  885.                                                     <tr>
  886.                                                                           =
  887.                                                                           =
  888.                                                         <td style=3D"borde=
  889. r-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-c=
  890. olor: transparent; padding-left: 0cm; padding-right: 0cm; border-top: #ece=
  891. 9d8; border-right: #ece9d8; padding-top: 0cm" width=3D"373">
  892.                                                                           =
  893.                                                                           =
  894.                                                         <div style=3D"marg=
  895. in: 0cm 0cm 6pt">
  896.                                                                           =
  897.                                                                           =
  898.                                                         <div align=3D"left=
  899. ">
  900.                                                                           =
  901.                                                                           =
  902.                                                         <div><span style=3D=
  903. "font-size: xx-small">
  904.                                                                           =
  905.                                                                           =
  906.                                                         <div><span style=3D=
  907. "color: #000000; font-size: xx-small"><font size=3D"1"><span style=3D"font=
  908. -size: 9pt">
  909.                                                                           =
  910.                                                                           =
  911.                                                         <div align=3D"left=
  912. ">
  913.                                                                           =
  914.                                                                           =
  915.                                                         <div align=3D"left=
  916. ">
  917.                                                                           =
  918.                                                                           =
  919.                                                         <div style=3D"text=
  920. -indent: 18pt">
  921.                                                                           =
  922.                                                                           =
  923.                                                         <div><span style=3D=
  924. "color: #000000; font-size: 7=2E5pt">
  925.                                                                           =
  926.                                                                           =
  927.                                                         <div><span style=3D=
  928. "color: black; font-size: 7=2E5pt">
  929.                                                                           =
  930.                                                                           =
  931.                                                         <div><span style=3D=
  932. "font-size: 7=2E5pt">
  933.                                                                           =
  934.                                                                           =
  935.                                                         <div style=3D"line=
  936. -height: 147%"><span style=3D"line-height: 147%; font-size: xx-small">
  937.                                                                           =
  938.                                                                           =
  939.                                                         <div>
  940.                                                                           =
  941.                                                                           =
  942.                                                         <div style=3D"line=
  943. -height: 146%"><span style=3D"font-family: Verdana"><span style=3D"line-he=
  944. ight: 146%; color: black; font-size: 7=2E5pt"><span style=3D"font-size: xx=
  945. -small"><span style=3D"font-family: Verdana"><span style=3D"color: black">=
  946. &nbsp;
  947.                                                                           =
  948.                                                                           =
  949.                                                         <div style=3D"bord=
  950. er-bottom: medium none; border-left: white 3pt solid; padding-bottom: 0cm;=
  951.  padding-left: 0cm; padding-right: 0cm; margin-left: 18pt; border-top: med=
  952. ium none; margin-right: 0cm; border-right: medium none; padding-top: 0cm">=
  953.  
  954.                                                                           =
  955.                                                                           =
  956.                                                         <div style=3D"bord=
  957. er-bottom: medium none; border-left: medium none; padding-bottom: 0cm; pad=
  958. ding-left: 0cm; padding-right: 0cm; border-top: medium none; border-right:=
  959.  medium none; padding-top: 0cm">
  960.                                                                           =
  961.                                                                           =
  962.                                                         <div>
  963.                                                                           =
  964.                                                                           =
  965.                                                         <div style=3D"line=
  966. -height: 100%; text-indent: 0px; margin: 0px; word-spacing: 0px">
  967.                                                                           =
  968.                                                                           =
  969.                                                         <div>
  970.                                                                           =
  971.                                                                           =
  972.                                                         <div>
  973.                                                                           =
  974.                                                                           =
  975.                                                         <div style=3D"line=
  976. -height: 100%; text-indent: 0px; margin: 0px; word-spacing: 0px"><span sty=
  977. le=3D"font-family: Verdana"><span style=3D"font-size: xx-small"><span>
  978.                                                                           =
  979.                                                                           =
  980.                                                         <div style=3D"line=
  981. -height: 100%; text-indent: 0px; margin: 0px; word-spacing: 0px">&nbsp;</d=
  982. iv>
  983.                                                                           =
  984.                                                                           =
  985.                                                         </span></span></sp=
  986. an></div>
  987.                                                                           =
  988.                                                                           =
  989.                                                         &nbsp;&nbsp;&nbsp;=
  990. &nbsp;
  991.                                                                           =
  992.                                                                           =
  993.                                                         <div><b><span styl=
  994. e=3D"font-size: 8=2E5pt">Inicios de mobbing:</span></b></div>
  995.                                                                           =
  996.                                                                           =
  997.                                                         <div><span style=3D=
  998. "font-size: 8=2E5pt">Idelimitaci&oacute;n del fen&oacute;meno=2E</span></d=
  999. iv>
  1000.                                                                           =
  1001.                                                                           =
  1002.                                                         <div><span style=3D=
  1003. "font-size: 8=2E5pt">Actores participantes</span></div>
  1004.                                                                           =
  1005.                                                                           =
  1006.                                                         <div><span style=3D=
  1007. "font-size: 8=2E5pt">Las cuatro fases del espiral del mobbing </span></div=
  1008. >
  1009.                                                                           =
  1010.                                                                           =
  1011.                                                         <div><span style=3D=
  1012. "font-size: 8=2E5pt">El ps&iacute;co-terrorismo </span></div>
  1013.                                                                           =
  1014.                                                                           =
  1015.                                                         <div><span style=3D=
  1016. "font-size: 8=2E5pt">Acciones para limitarlo</span></div>
  1017.                                                                           =
  1018.                                                                           =
  1019.                                                         <div><span style=3D=
  1020. "font-size: 8=2E5pt">Herramientas legales del empleador </span></div>
  1021.                                                                           =
  1022.                                                                           =
  1023.                                                         <div><span style=3D=
  1024. "font-size: 8=2E5pt">La realidad en chile</span></div>
  1025.                                                                           =
  1026.                                                                           =
  1027.                                                         <div>&nbsp;</div>
  1028.                                                                           =
  1029.                                                                           =
  1030.                                                         <div><b><span styl=
  1031. e=3D"font-size: 8=2E5pt">Que es acoso laboral en el proyecto de ley:</span=
  1032. ></b></div>
  1033.                                                                           =
  1034.                                                                           =
  1035.                                                         <div><span style=3D=
  1036. "font-size: 8=2E5pt">Art&iacute;culos del c&oacute;digo del trabajo que mo=
  1037. difica el proyecto</span></div>
  1038.                                                                           =
  1039.                                                                           =
  1040.                                                         <div><span style=3D=
  1041. "font-size: 8=2E5pt">Acciones legales que puede activar el trabajador en e=
  1042. l nuevo escenario</span></div>
  1043.                                                                           =
  1044.                                                                           =
  1045.                                                         <div><span style=3D=
  1046. "font-size: 8=2E5pt">Nuevas atribuciones de la direcci&oacute;n del trabaj=
  1047. o </span></div>
  1048.                                                                           =
  1049.                                                                           =
  1050.                                                         <div><span style=3D=
  1051. "font-size: 8=2E5pt">Acciones de tutela laboral</span></div>
  1052.                                                                           =
  1053.                                                                           =
  1054.                                                         <div><span style=3D=
  1055. "font-size: 8=2E5pt">L&iacute;mites de la potestad del empleador </span></=
  1056. div>
  1057.                                                                           =
  1058.                                                                           =
  1059.                                                         <div><span style=3D=
  1060. "font-size: 8=2E5pt">Plazos de prescripci&oacute;n </span></div>
  1061.                                                                           =
  1062.                                                                           =
  1063.                                                         <div><span style=3D=
  1064. "font-size: 8=2E5pt">Utilizaci&oacute;n del ius variandi </span></div>
  1065.                                                                           =
  1066.                                                                           =
  1067.                                                         <div><span style=3D=
  1068. "font-size: 8=2E5pt">Jurisprudencia de mobbing</span></div>
  1069.                                                                           =
  1070.                                                                           =
  1071.                                                         <div>&nbsp;</div>
  1072.                                                                           =
  1073.                                                                           =
  1074.                                                         <div><b><span styl=
  1075. e=3D"font-size: 8=2E5pt">Condiciones para que exista mobbing:</span></b></=
  1076. div>
  1077.                                                                           =
  1078.                                                                           =
  1079.                                                         <div><span style=3D=
  1080. "font-size: 8=2E5pt">Acciones que constituyen acoso laboral</span></div>
  1081.                                                                           =
  1082.                                                                           =
  1083.                                                         <div><span style=3D=
  1084. "font-size: 8=2E5pt">Clases de acoso laboral</span></div>
  1085.                                                                           =
  1086.                                                                           =
  1087.                                                         <div><span style=3D=
  1088. "font-size: 8=2E5pt">Derechos fundamentales que afectan</span></div>
  1089.                                                                           =
  1090.                                                                           =
  1091.                                                         <div><span style=3D=
  1092. "font-size: 8=2E5pt">Que es discriminaci&oacute;n </span></div>
  1093.                                                                           =
  1094.                                                                           =
  1095.                                                         <div><span style=3D=
  1096. "font-size: 8=2E5pt">Tipos de discriminaci&oacute;n </span></div>
  1097.                                                                           =
  1098.                                                                           =
  1099.                                                         <div><span style=3D=
  1100. "font-size: 8=2E5pt">Procedimiento legal que lo respalda</span></div>
  1101.                                                                           =
  1102.                                                                           =
  1103.                                                         &nbsp;&nbsp;&nbsp;=
  1104. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
  1105.                                                                           =
  1106.                                                                           =
  1107.                                                         </div>
  1108.                                                                           =
  1109.                                                                           =
  1110.                                                         </div>
  1111.                                                                           =
  1112.                                                                           =
  1113.                                                         </div>
  1114.                                                                           =
  1115.                                                                           =
  1116.                                                         <div>&nbsp;</div>
  1117.                                                                           =
  1118.                                                                           =
  1119.                                                         </div>
  1120.                                                                           =
  1121.                                                                           =
  1122.                                                         </div>
  1123.                                                                           =
  1124.                                                                           =
  1125.                                                         </span></span></sp=
  1126. an></span></span></div>
  1127.                                                                           =
  1128.                                                                           =
  1129.                                                         </div>
  1130.                                                                           =
  1131.                                                                           =
  1132.                                                         </span></div>
  1133.                                                                           =
  1134.                                                                           =
  1135.                                                         </span></div>
  1136.                                                                           =
  1137.                                                                           =
  1138.                                                         </span></div>
  1139.                                                                           =
  1140.                                                                           =
  1141.                                                         </span></div>
  1142.                                                                           =
  1143.                                                                           =
  1144.                                                         </div>
  1145.                                                                           =
  1146.                                                                           =
  1147.                                                         </div>
  1148.                                                                           =
  1149.                                                                           =
  1150.                                                         </div>
  1151.                                                                           =
  1152.                                                                           =
  1153.                                                         </span></font></sp=
  1154. an></div>
  1155.                                                                           =
  1156.                                                                           =
  1157.                                                         </span></div>
  1158.                                                                           =
  1159.                                                                           =
  1160.                                                         </div>
  1161.                                                                           =
  1162.                                                                           =
  1163.                                                         </div>
  1164.                                                                           =
  1165.                                                                           =
  1166.                                                         </td>
  1167.                                                                           =
  1168.                                                                           =
  1169.                                                     </tr>
  1170.                                                                           =
  1171.                                                                           =
  1172.                                                 </tbody>
  1173.                                                                           =
  1174.                                                                           =
  1175.                                             </table>
  1176.                                                                           =
  1177.                                                                           =
  1178.                                             </td>
  1179.                                                                           =
  1180.                                                                           =
  1181.                                         </tr>
  1182.                                                                           =
  1183.                                                                           =
  1184.                                     </tbody>
  1185.                                                                           =
  1186.                                                                           =
  1187.                                 </table>
  1188.                                                                           =
  1189.                                                                           =
  1190.                                 <div align=3D"left">
  1191.                                                                           =
  1192.                                                                           =
  1193.                                 <div><i><span style=3D"color: #030000; fon=
  1194. t-size: 10pt">&quot;</span></i><i><span style=3D"color: #0f0902; font-size=
  1195. : 10pt">Actividad/es de capacitaci&oacute;n autorizadal </span></i><span s=
  1196. tyle=3D"color: #0f0902">por </span><i><span style=3D"color: #0f0902; font-=
  1197. size: 10pt">el SENCE para </span></i><i><span style=3D"color: #262019; fon=
  1198. t-size: 10pt">l</span></i><i><span style=3D"color: #0f0902; font-size: 10p=
  1199. t">os </span></i><span style=3D"color: #0f0902">efectos </span><i><span st=
  1200. yle=3D"color: #0f0902; font-size: 10pt">de </span></i><i><span style=3D"co=
  1201. lor: #262019; font-size: 10pt">l</span></i><i><span style=3D"color: #0f090=
  1202. 2; font-size: 10pt">a franquicia</span></i></div>
  1203.                                                                           =
  1204.                                                                           =
  1205.                                 <i><span style=3D"color: #0f0902; font-siz=
  1206. e: 10pt">tributaria de capacitaci&oacute;n, </span></i><span style=3D"colo=
  1207. r: #0f0902; font-size: 10pt">no <i>conducente/s al otorgamiento de </i>un =
  1208. </span><i><span style=3D"color: #262019; font-size: 10pt">t&iacute;</span>=
  1209. <span style=3D"color: #0f0902; font-size: 10pt">t</span><span style=3D"col=
  1210. or: #262019; font-size: 10pt">u</span><span style=3D"color: #0f0902; font-=
  1211. size: 10pt">lo </span></i><span style=3D"color: #0f0902; font-size: 10pt">=
  1212. o <i>grado acad&eacute;mico=2E</i></span><i><span style=3D"color: #262019;=
  1213.  font-size: 10pt">&quot;</span></i></div>
  1214.                                                                           =
  1215.                                                                           =
  1216.                                 </td>
  1217.                                                                           =
  1218.                                                                           =
  1219.                             </tr>
  1220.                                                                           =
  1221.                                                                           =
  1222.                         </tbody>
  1223.                                                                           =
  1224.                                                                           =
  1225.                     </table>
  1226.                                                                           =
  1227.                                                                           =
  1228.                     </td>
  1229.                                                                           =
  1230.                                                                           =
  1231.                 </tr>
  1232.                                                                           =
  1233.                                                                           =
  1234.             </tbody>
  1235.                                                                           =
  1236.                                                                           =
  1237.         </table>
  1238.                                                                           =
  1239.                                                                           =
  1240.         </td>
  1241.                                                                           =
  1242.                                                                           =
  1243.     </tr>
  1244.                                                                           =
  1245.                                                                           =
  1246. </tbody>
  1247.                                                                           =
  1248.                                                                       </ta=
  1249. ble>
  1250.                                                                           =
  1251.                                                                       </td=
  1252. >
  1253.                                                                           =
  1254.                                                                   </tr>
  1255.                                                                           =
  1256.                                                               </tbody>
  1257.                                                                           =
  1258.                                                           </table>
  1259.                                                                           =
  1260.                                                           </div>
  1261.                                                                           =
  1262.                                                           </font></div>
  1263.                                                                           =
  1264.                                                           </span></div>
  1265.                                                                           =
  1266.                                                           </span></font></=
  1267. div>
  1268.                                                                           =
  1269.                                                           </td>
  1270.                                                                           =
  1271.                                                       </tr>
  1272.                                                                           =
  1273.                                                   </tbody>
  1274.                                                                           =
  1275.                                               </table>
  1276.                                                                           =
  1277.                                               </div>
  1278.                                                                           =
  1279.                                               </td>
  1280.                                                                           =
  1281.                                           </tr>
  1282.                                                                           =
  1283.                                       </tbody>
  1284.                                                                           =
  1285.                                   </table>
  1286.                                                                           =
  1287.                                   </td>
  1288.                                                                           =
  1289.                               </tr>
  1290.                                                                           =
  1291.                           </tbody>
  1292.                                                                           =
  1293.                       </table>
  1294.                                                                           =
  1295.                       </td>
  1296.                                                                           =
  1297.                   </tr>
  1298.                                                                           =
  1299.               </tbody>
  1300.                                                                           =
  1301.           </table>
  1302.                                                                           =
  1303.           </td>
  1304.                                                                           =
  1305.       </tr>
  1306.                                                                           =
  1307.   </tbody>
  1308.                                                                         </=
  1309. table>
  1310.                                                                         </=
  1311. div>
  1312.                                                                         </=
  1313. div>
  1314.                                                                         </=
  1315. font></span></td>
  1316.                                                                     </tr>
  1317.                                                                 </tbody>
  1318.                                                             </table>
  1319.                                                             </span></font>=
  1320. </td>
  1321.                                                         </tr>
  1322.                                                     </tbody>
  1323.                                                 </table>
  1324.                                                 </td>
  1325.                                             </tr>
  1326.                                         </tbody>
  1327.                                     </table>
  1328.                                     </td>
  1329.                                 </tr>
  1330.                             </tbody>
  1331.                         </table>
  1332.                         </font></p>
  1333.                         </td>
  1334.                     </tr>
  1335.                 </tbody>
  1336.             </table>
  1337.             </p>
  1338.             </td>
  1339.         </tr>
  1340.         <tr>
  1341.             <td bgcolor=3D"#ffffff">&nbsp;</td>
  1342.         </tr>
  1343.         <tr>
  1344.         </tr>
  1345.     </tbody>
  1346. </table>
  1347. <script type=3D"text/javascript">&#65279;///////////    SEARCH    ////////=
  1348. ///
  1349. var g=5FaEng;
  1350. var g=5Floc;
  1351.  
  1352. // Initialize namespace, use existing context
  1353. var searchshield =3D searchshield || {};
  1354.  
  1355. searchshield=2EclockUrl;
  1356.  
  1357. // constants
  1358. searchshield=2ESCORE=5FSS=5FSAFE=09=09=3D 1;
  1359. searchshield=2ESCORE=5FSS=5FCAUTION=09=3D 2;
  1360. searchshield=2ESCORE=5FSS=5FWARNING=09=3D 3;
  1361. searchshield=2ESCORE=5FSS=5FBLOCK=09=09=3D 4;
  1362. searchshield=2ESCORE=5FSS=5FVERISIGN=09=3D 7;
  1363.  
  1364. searchshield=2EBLOCK=5FNONE=09=09=3D 0;
  1365. searchshield=2EBLOCK=5FNORMAL=09=3D 1;
  1366. searchshield=2EBLOCK=5FPHISH=09=3D 2;
  1367. searchshield=2EBLOCK=5FYAHOO=09=3D 3;
  1368.  
  1369. searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FNONE=09=3D 0;
  1370. searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FLOW=09=3D 1;
  1371. searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FMED=09=3D 2;
  1372. searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FBLOCK=09=3D 3;
  1373.  
  1374. searchshield=2EVERISIGN=5FSPLIT=5FNOTEST=09=09=3D 0;
  1375. searchshield=2EVERISIGN=5FSPLIT=5FTESTA=09=09=3D 1;
  1376. searchshield=2EVERISIGN=5FSPLIT=5FTESTB=09=09=3D 2;
  1377.  
  1378. searchshield=2EneedLivePhishCheck =3D false;
  1379. searchshield=2EallowedSites =3D [];
  1380. searchshield=2Eenabled =3D function (doc)
  1381. {
  1382. =09var result =3D searchshield=2EavgCallFunc(doc, 'GetSearchEnabled');
  1383. =09return (result =3D=3D '1' =3F 1 : 0);
  1384. };
  1385. searchshield=2Einit =3D function (doc)
  1386. {
  1387. =09if ((doc =3D=3D null) || (doc=2Elocation =3D=3D null) || (doc=2Elocatio=
  1388. n=2Ehref=2Esearch(/about:/) !=3D -1))
  1389. =09=09return;
  1390.  
  1391. =09if (!searchshield=2Eenabled(doc))
  1392. =09=09return;
  1393.  
  1394. =09if (!g=5FaEng)
  1395. =09=09g=5FaEng =3D searchshield=2ESearch=2Eprototype=2EdetectEngine(doc=2E=
  1396. location=2Ehref);
  1397.  
  1398. =09if (!g=5FaEng)
  1399. =09=09return;
  1400.  
  1401. =09// init search object (not declared or is null)
  1402. =09if (typeof xplSearch =3D=3D=3D 'undefined')
  1403. =09{
  1404. =09=09// global
  1405. =09=09xplSearch =3D new searchshield=2ESearch();
  1406.  
  1407. =09=09// reset the links added flag
  1408. =09=09xplSearch=2Enew=5Flinks =3D false;
  1409.  
  1410. =09=09xplSearch=2Edoc =3D doc;
  1411. =09=09xplSearch=2Ehref=09=3D xplSearch=2Edoc=2Elocation=2Ehref;
  1412. =09=09xplSearch=2Euri=09=3D searchshield=2EparseLink(xplSearch=2Ehref);
  1413. =09=09
  1414. =09=09xplSearch=2Eengine=09=3D new searchshield[g=5FaEng+'SearchEngine'](x=
  1415. plSearch)
  1416. =09=09xplSearch=2EaddEngine(xplSearch=2Eengine);
  1417.  
  1418. =09=09searchshield=2Elaunch(doc);
  1419. =09}
  1420.  
  1421. =09if (doc=2Elocation=2Ehref !=3D g=5Floc)
  1422. =09{
  1423. =09=09g=5Floc =3D doc=2Elocation=2Ehref;
  1424. =09=09if ((typeof xplSearch !=3D=3D 'undefined') && (xplSearch !=3D null))=
  1425.  
  1426. =09=09=09searchshield=2Elaunch(doc);
  1427. =09}
  1428. };
  1429. searchshield=2Elaunch =3D function (doc)
  1430. {
  1431. =09// IE specific check
  1432. =09searchshield=2EquirksMode =3D (self=2Etop=2Edocument=2EcompatMode =3D=3D=
  1433.  'BackCompat');
  1434. =09searchshield=2EdocMode =3D parseInt(navigator=2EuserAgent=2Esplit('MSIE=
  1435. ')[1]);
  1436. =09=09
  1437. =09if ((self =3D=3D=3D top) && (self=2Edocument =3D=3D=3D doc))
  1438. =09{
  1439. =09=09if (!xplSearch=2Eengine)
  1440. =09=09=09return;
  1441.  
  1442. =09=09// set verdict display config
  1443. =09=09xplSearch=2Eengine=2EsetRatingsConfig(doc);
  1444.  
  1445. =09=09// init the alert popup
  1446. =09=09searchshield=2EinitPopupAlert(doc);
  1447.  
  1448. =09=09if (xplSearch=2Eengine=2Etype !=3D 'inline')
  1449. =09=09{
  1450. =09=09=09// save function reference for memory clean up later
  1451. =09=09=09var fn =3D function(event){avglsflyover=2Ehide(null)};
  1452.  
  1453. =09=09=09//hide flyover if these events occur
  1454. =09=09=09window=2EdetachEvent('onscroll', fn);
  1455. =09=09=09window=2EattachEvent('onscroll', fn);
  1456.  
  1457. =09=09=09doc=2EdetachEvent('onkeydown', fn);
  1458. =09=09=09doc=2EattachEvent('onkeydown', fn);
  1459. =09=09}
  1460. =09=09
  1461. =09=09// only start monitor on top doc
  1462. =09=09searchshield=2EavgPageMonitor=2Estart(doc);
  1463. =09}
  1464.  
  1465. =09return;
  1466. };
  1467.  
  1468. // search monitors and processors - doc is always top most document
  1469. searchshield=2EavgPageMonitor =3D {
  1470. =09previousUrl: null,
  1471. =09start: function(doc){
  1472. =09=09searchshield=2EavgPageMonitor=2Estop();
  1473. =09=09searchshield=2EavgPageMonitor=2Eprocess(doc);
  1474. =09=09searchshield=2EavgPageMonitor=2EtimeoutID =3D window=2EsetTimeout(fu=
  1475. nction(){searchshield=2EavgPageMonitor=2Estart(doc)}, 1000);
  1476. =09},
  1477. =09process: function(doc){
  1478. =09=09var currentUrl =3D doc=2Elocation=2Ehref;
  1479. =09=09var refresh =3D 0;
  1480. =09=09if (this=2EpreviousUrl !=3D currentUrl) {
  1481. =09=09=09this=2EpreviousUrl =3D currentUrl;
  1482. =09=09=09avgreport=2EscanResult(doc, currentUrl);
  1483. =09=09=09refresh =3D (xplSearch=2Eengine=2Ename =3D=3D 'google') =3F 1 : 0=
  1484. ;
  1485. =09=09}
  1486. =09=09searchshield=2EavgProcessSearch(doc, refresh);
  1487. =09},
  1488. =09stop: function(){
  1489. =09=09if (searchshield=2EavgPageMonitor=2EtimeoutID)
  1490. =09=09{
  1491. =09=09=09window=2EclearTimeout(searchshield=2EavgPageMonitor=2EtimeoutID);=
  1492.  
  1493. =09=09=09delete searchshield=2EavgPageMonitor=2EtimeoutID;
  1494. =09=09}
  1495. =09}
  1496. };
  1497.  
  1498. searchshield=2EavgProcessSearch =3D function (doc, refresh)
  1499. {
  1500. =09// doc may be about:Tabs or about:Blank
  1501. =09if (!doc)
  1502. =09=09return;
  1503. =09=09
  1504. =09if (!searchshield=2Eenabled(doc))
  1505. =09=09return;
  1506.  
  1507. =09if (!searchshield=2EclockUrl)
  1508. =09=09searchshield=2EclockUrl =3D searchshield=2EavgCallFunc(doc, 'GetIcon=
  1509. Url', '0');
  1510. =09=09
  1511. =09xplSearch=2EclockUrl =3D searchshield=2EclockUrl
  1512.  
  1513. =09if (!xplSearch=2Eengine)
  1514. =09=09return;
  1515.  
  1516. =09// get result links
  1517. =09xplSearch=2Elinks =3D [];
  1518. =09var links =3D searchshield=2EavgGetSearchLinks(doc, xplSearch=2Eengine,=
  1519.  refresh);
  1520.  
  1521. =09searchshield=2EneedLivePhishCheck =3D false;
  1522. =09for (var i=3D0; i < links=2Elength; i++)
  1523. =09{
  1524. =09=09var isPhishing =3D searchshield=2EavglsCheckandUpdate(links[i]);
  1525. =09=09if (isPhishing)
  1526. =09=09=09searchshield=2EneedLivePhishCheck =3D true;
  1527. =09}
  1528. =09
  1529. =09if (searchshield=2EneedLivePhishCheck)
  1530. =09{
  1531. =09=09var prev =3D '1';
  1532. =09=09if ( xplSearch=2Eengine=2Etype =3D=3D 'inline' )
  1533. =09=09=09prev =3D '0';
  1534. =09=09searchshield=2EavgCallFunc(doc, 'GetPhishingResults', prev);
  1535. =09=09searchshield=2EneedLivePhishCheck =3D false;
  1536. =09}
  1537. =09else if (links=2Elength > 0 && xplSearch=2Eengine=2Etype !=3D 'inline')=
  1538.  
  1539. =09{
  1540. =09=09searchshield=2EavgCallFunc(doc, 'FinalScanComplete');
  1541. =09}
  1542. =09
  1543. =09// attach click handlers for popup alerts
  1544. =09doc=2Ebody=2EdetachEvent("onclick", searchshield=2EblockClick);
  1545. =09doc=2Ebody=2EattachEvent("onclick", searchshield=2EblockClick);
  1546. =09
  1547. =09doc=2Ebody=2EdetachEvent("ondblclick", searchshield=2EblockClick);
  1548. =09doc=2Ebody=2EattachEvent("ondblclick", searchshield=2EblockClick);
  1549. };
  1550. searchshield=2EavgGetSearchLinks =3D function (doc, engine, refresh)
  1551. {
  1552. =09if (!doc=2Ebody)
  1553. =09=09return;
  1554.  
  1555. =09var alltags =3D doc=2Ebody=2EgetElementsByTagName('a');
  1556. =09for (var i =3D 0; i < alltags=2Elength; i++)
  1557. =09{
  1558. =09=09if ( !refresh )
  1559. =09=09{=09// no checked test if refreshing - google
  1560. =09=09=09if (alltags[i]=2EgetAttribute('avglschecked'))
  1561. =09=09=09=09continue;
  1562. =09=09}
  1563. =09=09
  1564. =09=09// mark search result anchor so it isn't processed repeatedly
  1565. =09=09alltags[i]=2EsetAttribute('avglschecked', '1');
  1566.  
  1567. =09=09// ignore linked resources
  1568. =09=09if (alltags[i]=2EtagName =3D=3D 'LINK')
  1569. =09=09=09continue;
  1570.  
  1571. =09=09// ignore in-page bookmarks and javascript
  1572. =09=09if ((!alltags[i]=2Ehref)=09||
  1573. =09=09=09(alltags[i]=2Ehref=2EcharAt(0) =3D=3D '#') ||=09// in-page bookma=
  1574. rk
  1575. =09=09=09(alltags[i]=2Ehref=2EindexOf("javascript") =3D=3D 0))
  1576. =09=09=09continue;
  1577. =09=09=09
  1578. =09=09// ignore verdicts
  1579. =09=09if (/XPLSS=5F/=2Etest(alltags[i]=2Eid))
  1580. =09=09=09continue;
  1581.  
  1582. =09=09// ignore flyover anchors
  1583. =09=09if (/avgthreatlabs/=2Etest(alltags[i]=2Ehost))
  1584. =09=09=09continue;
  1585. =09=09=09
  1586. =09=09var href =3D engine=2EincludeLink(alltags[i]);
  1587. =09=09if (!href)
  1588. =09=09=09continue;
  1589. =09=09
  1590. =09=09var newNode =3D engine=2Esearch=2EaddLink(alltags[i], href);
  1591. =09=09engine=2EaddImage(newNode, engine=2Esearch=2EclockUrl, false);
  1592. =09}
  1593. =09
  1594. =09// recursivesly process all frames
  1595. =09var docFrames =3D doc=2Eframes;
  1596. =09if (docFrames && engine=2EprocessFrames)
  1597. =09{
  1598. =09=09for (var j =3D 0; j < docFrames=2Elength; j++)
  1599. =09=09{
  1600. =09=09=09var attr;
  1601. =09=09=09var frameDoc;
  1602. =09=09=09try {
  1603. =09=09=09=09attr =3D docFrames[j]=2EframeElement=2EclassName;
  1604. =09=09=09=09frameDoc =3D docFrames[j]=2Edocument;
  1605. =09=09=09}
  1606. =09=09=09catch(err){}
  1607.  
  1608. =09=09=09//TODO: make frame processing an engine function or at least make=
  1609.  exclusions an engine property
  1610. =09=09=09// 'editable' frame it's probably a gmail reply
  1611. =09=09=09if (attr && (attr=2EindexOf("editable") !=3D -1))
  1612. =09=09=09=09continue;
  1613.  
  1614. =09=09=09if (frameDoc)
  1615. =09=09=09=09searchshield=2EavgGetSearchLinks(frameDoc, engine, 0);
  1616. =09=09}
  1617. =09}
  1618. =09
  1619. =09return engine=2Esearch=2Elinks;
  1620. };
  1621. searchshield=2EavglsCheckandUpdate =3D function (linkNode)
  1622. {
  1623. =09if (!xplSearch)
  1624. =09=09return;
  1625.  
  1626. =09// element is the search result anchor
  1627. =09var element =3D linkNode=2Eelement;
  1628. =09var href =3D linkNode=2Ehref;
  1629.  
  1630. =09var result =3D searchshield=2EavgCallFunc(xplSearch=2Edoc, 'CheckSite',=
  1631.  href, element=2Ehref);
  1632. =09if (result =3D=3D null)
  1633. =09=09return;
  1634. =09
  1635. =09var resultParse =3D result=2Esplit('::');
  1636.  
  1637. =09var phishing  =3D resultParse[0];  // if phishing then rest of array do=
  1638. es not exist=2E
  1639.  
  1640. =09if (phishing =3D=3D 1)
  1641. =09=09return true;
  1642.  
  1643. =09if (resultParse=2Elength < 8)
  1644. =09=09return;
  1645. =09
  1646. =09var hash=09  =3D resultParse[1];
  1647. =09var score=09  =3D resultParse[2];
  1648. =09var new=5Fimage =3D resultParse[3];
  1649. =09var alt=5Fimage =3D resultParse[4];
  1650. =09var flyover=09  =3D resultParse[5];
  1651. =09var click=5Fthru=3D resultParse[6];
  1652. =09var altClick=5Fthru =3D resultParse[7];
  1653.  
  1654. =09// iterate to get verdict anchor
  1655. =09nextElem =3D element=2EnextSibling;
  1656. =09while (nextElem)
  1657. =09{
  1658. =09=09if (nextElem=2EnodeType =3D=3D 1 && nextElem=2Eid && (nextElem=2Eid=2E=
  1659. indexOf("XPLSS=5F") !=3D -1))
  1660. =09=09=09break;
  1661.  
  1662. =09=09nextElem =3D nextElem=2EnextSibling;
  1663. =09}
  1664. =09
  1665. =09return xplSearch=2Eengine=2EupdateImage(hash, xplSearch=2EsearchHash, s=
  1666. core, new=5Fimage, alt=5Fimage, flyover, click=5Fthru, altClick=5Fthru);
  1667. };
  1668.  
  1669. // click event handler - shows popup for links of caution and warning seve=
  1670. rity
  1671. searchshield=2EblockClick =3D function(event)
  1672. {
  1673. =09if (!event)
  1674. =09=09event =3D window=2Eevent;
  1675. =09=09
  1676. =09// no action needed if click is not the left mouse button
  1677. =09if (event=2Ebutton !=3D 0)
  1678. =09=09return;
  1679. =09=09
  1680. =09var anchor =3D searchshield=2EgetAnchorNode(event=2EsrcElement,=20
  1681. =09=09=09=09=09=09=09=09function(node) {return ((node=2EtagName=2EcharAt(0=
  1682. ) =3D=3D "H") ||
  1683. =09=09=09=09=09=09=09=09=09=09=09=09=09=09(node=2EtagName=2EcharAt(0) =3D=3D=
  1684.  "D") ||
  1685. =09=09=09=09=09=09=09=09=09=09=09=09=09=09(node=2EtagName=2EcharAt(0) =3D=3D=
  1686.  "T"))}=09);
  1687. =09
  1688. =09if ((anchor =3D=3D null) || (anchor=2Ehref =3D=3D null))
  1689. =09=09return true;
  1690. =09
  1691. =09// ignore if anchor is on an xpl verdict
  1692. =09if (!!anchor=2Eid)
  1693. =09{
  1694. =09=09if (anchor=2Eid=2EindexOf('LXPLSS=5F') =3D=3D 0)
  1695. =09=09=09return true;
  1696. =09=09
  1697. =09=09if (anchor=2Eid=2EindexOf('XPLSS=5FINTR') =3D=3D 0)
  1698. =09=09{
  1699. =09=09=09searchshield=2EallowedSites=2Epush(searchshield=2EGetDomain(ancho=
  1700. r=2Ehref));
  1701. =09=09=09return true;
  1702. =09=09}
  1703. =09}
  1704. =09
  1705. =09// VeriSign A/B Split reporting - only for VerSign domains
  1706. =09var avglschecked =3D anchor=2EgetAttribute("avglschecked");
  1707. =09if (avglschecked && avglschecked !=3D 1)
  1708. =09{
  1709. =09=09var sPos =3D avglschecked=2EindexOf("S");
  1710. =09=09var hash =3D (sPos > -1) =3F avglschecked=2Esubstring(0, sPos) : nul=
  1711. l;
  1712. =09=09var split =3D (sPos > -1) =3F avglschecked=2Esubstring(sPos+1) : nul=
  1713. l;
  1714. =09=09if (hash && split && split !=3D searchshield=2EVERISIGN=5FSPLIT=5FNO=
  1715. TEST)
  1716. =09=09{
  1717. =09=09=09// check updated verdict anchor for verisign domain
  1718. =09=09=09var d =3D event=2EsrcElement=2EownerDocument;
  1719. =09=09=09if (d=2EgetElementById("LXPLSS=5F" + hash + "U" + searchshield=2E=
  1720. SCORE=5FSS=5FVERISIGN))
  1721. =09=09=09{
  1722. =09=09=09=09searchshield=2EavgCallFunc(d, "RecordVSClick", hash, d=2Elocat=
  1723. ion=2Ehref);
  1724. =09=09=09}
  1725. =09=09}
  1726. =09}
  1727.  
  1728. =09var link =3D anchor=2Ehref;
  1729. =09var verdict =3D searchshield=2EgetAvgImage(anchor);
  1730. =09var score =3D -1;
  1731. =09var img=5Fid =3D '';
  1732. =09if (verdict !=3D null)
  1733. =09{
  1734. =09=09score =3D verdict=2Escore;
  1735. =09=09img=5Fid =3D verdict=2ErawId;
  1736. =09}
  1737. =09
  1738. =09// show popup alert (upper left)
  1739. =09if ((score >=3D searchshield=2ESCORE=5FSS=5FCAUTION) && (score <=3D sea=
  1740. rchshield=2ESCORE=5FSS=5FWARNING))
  1741. =09{
  1742. =09=09// prevent this click from going any further
  1743. =09=09var search=5Fhash =3D searchshield=2EavgCallFunc(document, 'GetHash'=
  1744. , document=2Elocation=2Ehref);
  1745. =09=09searchshield=2EShowPopupAlert(document, link, img=5Fid, search=5Fhas=
  1746. h);
  1747.  
  1748. =09=09// if possible, stop the event from going any further
  1749. =09=09searchshield=2EcancelEvent(event);
  1750. =09=09return false;
  1751. =09}
  1752. =09
  1753. =09return true;
  1754. };
  1755.  
  1756. // called by native to update phishing links
  1757. searchshield=2EupdatePhishingLinks =3D function (results)
  1758. {
  1759.  
  1760. =09if (!results)
  1761. =09=09return;
  1762.  
  1763. =09if (!xplSearch)
  1764. =09=09return;
  1765.  
  1766. =09var engine =3D xplSearch=2Eengine;
  1767. =09var resultParse =3D results=2Esplit("::");
  1768. =09var resultsLength =3D resultParse[0];
  1769.  
  1770. =09for (var i=3D0; i < resultsLength; i++)
  1771. =09{
  1772. =09=09var idx =3D i*7;
  1773. =09=09var hash=09  =3D resultParse[idx+1];
  1774. =09=09var score=09  =3D resultParse[idx+2];
  1775. =09=09var new=5Fimage =3D resultParse[idx+3];
  1776. =09=09var alt=5Fimage =3D resultParse[idx+4];
  1777. =09=09var flyover=09  =3D resultParse[idx+5];
  1778. =09=09var click=5Fthru=3D resultParse[idx+6];
  1779. =09=09var altClick=5Fthru =3D resultParse[idx+7];
  1780.  
  1781. =09=09engine=2EupdateImage(hash, xplSearch=2EsearchHash, score, new=5Fimag=
  1782. e, alt=5Fimage, flyover, click=5Fthru, altClick=5Fthru);
  1783. =09}
  1784. };
  1785. searchshield=2EgetAvgImage =3D function (element)
  1786. {
  1787. =09var obj =3D {};
  1788. =09obj=2Eimg =3D xplSearch=2Eengine=2EgetImgElement(element);
  1789. =09obj=2Escore =3D -1;
  1790. =09
  1791. =09//parse the score from the id
  1792. =09if (obj=2Eimg !=3D null && obj=2Eimg=2Eid)
  1793. =09{
  1794. =09=09var pos =3D !!obj=2Eimg=2Eid =3F obj=2Eimg=2Eid=2EindexOf('U') + 1 :=
  1795.  -1;
  1796. =09=09obj=2Escore =3D (pos < 1) =3F -1 : obj=2Eimg=2Eid=2EcharAt(pos);
  1797. =09=09obj=2ErawId =3D obj=2Eimg=2Eid=2Esubstring(0,pos-1);
  1798. =09}
  1799. =09
  1800. =09return obj;
  1801. };
  1802. searchshield=2EGetScannedLink =3D function (link)
  1803. {
  1804. =09if (!xplSearch || !(xplSearch=2Elinks instanceof Array))
  1805. =09=09return link;
  1806.  
  1807. =09// look for the link we scanned based on original element
  1808. =09for (var i =3D 0; i < xplSearch=2Elinks=2Elength; i++)
  1809. =09{
  1810. =09=09if (xplSearch=2Elinks[i]=2Eelement=2Ehref =3D=3D link)
  1811. =09=09=09return xplSearch=2Elinks[i]=2Ehref;
  1812. =09}
  1813. =09// else return the incoming link
  1814. =09return link;
  1815. };
  1816. searchshield=2EpreviouslyScanned =3D function (links, hash)
  1817. {
  1818. =09for (var i =3D 0; i < links=2Elength; i++)
  1819. =09{
  1820. =09=09if ((links[i] !=3D null) && (links[i]=2Ehash !=3D null) &&=20
  1821. =09=09=09(links[i]=2Ehash =3D=3D hash) && (links[i]=2Echecked =3D=3D true)=
  1822. )
  1823. =09=09=09return true;
  1824. =09}
  1825. =09return false;
  1826. };
  1827. searchshield=2EinitPopupAlert =3D function (doc)
  1828. {
  1829. =09// check if it exists first
  1830. =09if (doc=2EgetElementById("XPLSS=5FPopupAlert"))
  1831. =09=09return;
  1832.  
  1833. =09// create a div to use for the popup itself, hide for now
  1834. =09var popup=5Fdiv =3D doc=2EcreateElement("DIV");
  1835. =09popup=5Fdiv=2EsetAttribute("id", "XPLSS=5FPopupAlert");
  1836. =09popup=5Fdiv=2Estyle=2Eposition =3D "absolute";
  1837. =09popup=5Fdiv=2Estyle=2EzIndex =3D "10000";
  1838. =09doc=2Ebody=2EappendChild(popup=5Fdiv);
  1839. };
  1840. searchshield=2EinitFlyover =3D function (doc, engine)
  1841. {
  1842. =09// create in top doc only
  1843. =09if (doc !=3D=3D window=2Etop=2Edocument)
  1844. =09=09doc =3D window=2Etop=2Edocument;
  1845.  
  1846. =09// check if it exists first
  1847. =09if ((doc =3D=3D null) || (doc=2EgetElementById("XPLSS=5FFlyover")))
  1848. =09=09return;
  1849.  
  1850. =09// create a div to use for the flyover itself, hide for now
  1851. =09var flyover=5Fdiv =3D doc=2EcreateElement("DIV");
  1852. =09flyover=5Fdiv=2EsetAttribute("id", "XPLSS=5FFlyover");
  1853. =09flyover=5Fdiv=2Estyle=2Eposition =3D "absolute";
  1854. =09flyover=5Fdiv=2Estyle=2EzIndex =3D "10000";
  1855. =09doc=2Ebody=2EappendChild(flyover=5Fdiv);
  1856.  
  1857. =09// create a layer for the image
  1858. =09var trans=5Fdiv =3D doc=2EcreateElement("DIV");
  1859. =09trans=5Fdiv=2EsetAttribute("id", "XPLSS=5FTrans");
  1860. =09trans=5Fdiv=2Estyle=2Eposition =3D "absolute";
  1861. =09trans=5Fdiv=2Estyle=2EzIndex =3D "9999";
  1862. =09doc=2Ebody=2EappendChild(trans=5Fdiv);
  1863. };
  1864. searchshield=2EShowPopupAlert =3D function (doc, link, hash, search)
  1865. {
  1866. =09// build the content
  1867. =09var popup=5Fcontent =3D searchshield=2EavgCallFunc(doc, 'BuildPopupAler=
  1868. t', hash, search);
  1869. =09if (popup=5Fcontent =3D=3D null || popup=5Fcontent =3D=3D "")
  1870. =09=09return;
  1871.  
  1872. =09// get the div
  1873. =09var div =3D doc=2EgetElementById("XPLSS=5FPopupAlert");
  1874. =09div=2EinnerHTML =3D searchshield=2ECleanupHTML(popup=5Fcontent);
  1875.  
  1876. =09// set position, account for scrolling
  1877. =09var zoom =3D searchshield=2EzoomLevel();
  1878. =09var pageOffsetX =3D Math=2Eround(doc=2EdocumentElement=2EscrollLeft/zoo=
  1879. m);
  1880. =09var pageOffsetY =3D Math=2Eround(doc=2EdocumentElement=2EscrollTop/zoom=
  1881. );
  1882. =09
  1883. =09div=2Estyle=2Eleft =3D 10 + pageOffsetX + "px";
  1884. =09div=2Estyle=2Etop =3D 10 + pageOffsetY + "px";
  1885. =09
  1886. =09// TODO: the event handler function doesn't exist so, is this even nece=
  1887. ssary=3F
  1888. =09//div=2EattachEvent("onmouseout", HidePopupAlert);
  1889.  
  1890. =09// set the link
  1891. =09//var data =3D doc=2EgetElementById("avgalertpopurl");
  1892. =09//if (data)
  1893. =09//=09=09data=2EinnerHTML =3D escape(link);
  1894.  
  1895. =09// set visibility
  1896. =09div=2Estyle=2Evisibility =3D "visible";
  1897.  
  1898. =09//navigate to the link after timed delay
  1899. =09// TODO: Bug 31707 - make this open a new tab/window
  1900. =09setTimeout(function(){doc=2Elocation=2Eassign(link)}, 3000);
  1901. };
  1902. searchshield=2EavgCallFunc =3D function (doc, name /*, param1=2E=2E=2E, pa=
  1903. ramN*/)
  1904. {
  1905. =09// get the data element
  1906. =09var avg=5Fls=5Fdata =3D (typeof gAvgDataElement !=3D=3D 'undefined') =3F=
  1907.  gAvgDataElement : doc=2EgetElementById("avglsdata");
  1908.  
  1909. =09if ((avg=5Fls=5Fdata =3D=3D null) || (name =3D=3D null))
  1910. =09=09return;
  1911. =09
  1912. =09// save the data element
  1913. =09gAvgDataElement =3D avg=5Fls=5Fdata;
  1914.  
  1915. =09// for some reason you can't fire and event on an element with no paren=
  1916. t node
  1917. =09if (avg=5Fls=5Fdata=2EparentNode =3D=3D null)
  1918. =09=09return;
  1919.  
  1920. =09// set the attributes
  1921. =09avg=5Fls=5Fdata=2EsetAttribute("function", name);
  1922. =09
  1923. =09// set variable length of optional parameter attributes
  1924. =09var pcnt =3D 0;
  1925. =09for (var i=3D2; i < arguments=2Elength; i++)
  1926. =09=09avg=5Fls=5Fdata=2EsetAttribute("param"+(++pcnt), String(arguments[i]=
  1927. ));
  1928.  
  1929. =09avg=5Fls=5Fdata=2EfireEvent("onrowenter");
  1930.  
  1931. =09// get the result
  1932. =09return avg=5Fls=5Fdata=2EgetAttribute("result");=09
  1933. };
  1934.  
  1935. // general use functions - begin
  1936. // DOM Functions
  1937. searchshield=2EgetAnchorNode =3D function (node, filterFunc)
  1938. {
  1939. =09// filterFunc should return a boolean
  1940. =09if (!filterFunc || !filterFunc instanceof Function)
  1941. =09=09return null;
  1942. =09=09
  1943. =09// go up the dom tree starting at node and look for anchor=20
  1944. =09// before hitting a header, div or table element=20
  1945. =09while ((node !=3D null)=09=09=09&&
  1946. =09=09=09(node=2EtagName !=3D null)=09&&=20
  1947. =09=09=09(node=2EtagName !=3D "A"))
  1948. =09{
  1949. =09=09if (filterFunc(node))
  1950. =09=09{
  1951. =09=09=09node =3D null;
  1952. =09=09=09break;
  1953. =09=09}
  1954. =09=09node =3D node=2EparentNode;
  1955. =09}
  1956.  
  1957. =09return node;
  1958. };
  1959. searchshield=2EgetDocuments =3D function (frame, frameArray)
  1960. {=09// recursively get all embedded frames/docs
  1961. =09frameArray=2Epush(frame=2Edocument);
  1962. =09var frames =3D frame=2Eframes;
  1963. =09for (var i =3D 0; i < frames=2Elength; i++)
  1964. =09{
  1965. =09=09// recurse on each frame
  1966. =09=09searchshield=2EgetDocuments(frames[i], frameArray);
  1967. =09}
  1968. =09return frameArray;
  1969. };
  1970. searchshield=2ENextSiblingNode =3D function (element)
  1971. {
  1972. =09var TEXTNODE =3D 3;
  1973. =09var ParentNode =3D element=2EparentNode;
  1974.  
  1975. =09if (!ParentNode)
  1976. =09=09return;
  1977.  
  1978. =09var NextSibling =3D ParentNode=2EnextSibling;
  1979. =09while (NextSibling)
  1980. =09{
  1981. =09=09if (NextSibling=2EnodeType !=3D TEXTNODE)
  1982. =09=09=09return NextSibling;
  1983.  
  1984. =09=09NextSibling =3D NextSibling=2EnextSibling;
  1985. =09}
  1986.  
  1987. =09return;
  1988. };
  1989. searchshield=2EgetParentNodeByAttribute =3D function (attrName, attrValue,=
  1990.  node, maxDepth)
  1991. {
  1992. =09if (!node)
  1993. =09=09return null;
  1994. =09
  1995. =09var maxLoop =3D maxDepth =3F maxDepth : 1;
  1996. =09var pNode =3D node=2EparentNode;
  1997. =09
  1998. =09if (!pNode)
  1999. =09=09return null;
  2000. =09
  2001. =09for(; 0 < maxLoop; maxLoop--)=20
  2002. =09{
  2003. =09=09if ((pNode[attrName]) &&=20
  2004. =09=09=09(pNode[attrName]=2EtoLowerCase() =3D=3D=3D attrValue=2EtoLowerCas=
  2005. e()))=20
  2006. =09=09{
  2007. =09=09=09return pNode;
  2008. =09=09}
  2009.  
  2010. =09=09pNode =3D pNode=2EparentNode;
  2011. =09=09if (!pNode)
  2012. =09=09=09return null;
  2013. =09}
  2014.  
  2015. =09return null;
  2016. };
  2017. searchshield=2EgetParentNodeByClassName =3D function (className, node, max=
  2018. Depth)=20
  2019. {
  2020. =09return searchshield=2EgetParentNodeByAttribute("className", className, =
  2021. node, maxDepth);
  2022. };
  2023. searchshield=2EgetParentNodeById =3D function (id, node, maxDepth)
  2024. {
  2025. =09return searchshield=2EgetParentNodeByAttribute("id", id, node, maxDepth=
  2026. );
  2027. };
  2028. searchshield=2EgetParentNodeByTagName =3D function (tagName, node, attrNam=
  2029. e)=20
  2030. {=09// find parent node by tag name and optional attribute name
  2031. =09if (!tagName || !node || !node=2EparentNode)
  2032. =09=09return null;
  2033.  
  2034. =09tagName =3D tagName=2EtoUpperCase();
  2035. =09while ((node !=3D null) && (node=2EnodeType !=3D 9))
  2036. =09{
  2037. =09=09// if attrName is not provided just return TRUE
  2038.  
  2039. =09=09if (node=2EnodeName =3D=3D tagName)
  2040. =09=09{
  2041. =09=09=09var nodeHasAttribute =3D !!attrName =3F node[attrName] : true;
  2042. =09=09=09if (nodeHasAttribute)
  2043. =09=09=09=09return node;
  2044. =09=09}
  2045. =09=09=09
  2046. =09=09node =3D node=2EparentNode;
  2047. =09}
  2048. =09
  2049. =09// no div
  2050. =09return null;
  2051. };
  2052. searchshield=2EgetHrefFromCiteElement =3D function (tag)
  2053. {
  2054. =09var rtnHtml;
  2055.  
  2056. =09var tp =3D tag=2EparentNode;
  2057. =09var tgpn =3D tp =3F tp=2EparentNode : null;
  2058. =09if (!tgpn)
  2059. =09=09return;
  2060.  
  2061. =09lastChildElem =3D tgpn=2ElastChild;
  2062. =09while ((lastChildElem !=3D null) && (lastChildElem=2EnodeName !=3D 'SPA=
  2063. N') && (lastChildElem=2EnodeName !=3D 'DIV'))
  2064. =09{
  2065. =09=09lastChildElem =3D lastChildElem=2EpreviousSibling;
  2066. =09}
  2067. =09
  2068. =09if (lastChildElem)
  2069. =09=09rtnHtml =3D lastChildElem=2EgetElementsByTagName('cite')[0];
  2070. =09
  2071. =09if (rtnHtml)
  2072. =09=09rtnHtml =3D rtnHtml=2EinnerHTML;
  2073. =09
  2074. =09return rtnHtml;
  2075. };
  2076. searchshield=2EgetHrefFromSpanElement =3D function (tag)
  2077. {
  2078. =09var rtnHtml;
  2079. =09
  2080. =09var tp =3D tag=2EparentNode;
  2081. =09var tgpn =3D tp =3F tp=2EparentNode : null;
  2082. =09if (!tgpn)
  2083. =09=09return;
  2084.  
  2085. =09siblingElem =3D tgpn=2EnextSibling;
  2086. =09while ((siblingElem !=3D null) && (siblingElem=2EnodeName !=3D 'SPAN') =
  2087. && (siblingElem=2EclassName !=3D 'site'))
  2088. =09{
  2089. =09=09siblingElem =3D siblingElem=2EnextSibling;
  2090. =09=09if (siblingElem && siblingElem=2EclassName  && (siblingElem=2EclassN=
  2091. ame=2Ematch(/res[13]/)))
  2092. =09=09=09break;
  2093. =09}
  2094. =09
  2095. =09if (siblingElem)
  2096. =09=09rtnHtml =3D siblingElem=2EgetElementsByTagName('a')[0];
  2097. =09
  2098. =09if (rtnHtml)
  2099. =09=09rtnHtml =3D rtnHtml=2EinnerHTML;
  2100. =09
  2101. =09return rtnHtml;
  2102. };
  2103. searchshield=2EgetTopLevelDocument =3D function (doc)
  2104. {=09// return the top level document for the given doc, could be itself
  2105.  
  2106. =09// TODO: determine a method of doing this for IE, if necessary
  2107. =09
  2108. =09// don't check about:blank
  2109. =09if (doc && ((doc=2Elocation=2Ehref =3D=3D "about:blank") || (doc=2Eloca=
  2110. tion=2Ehref =3D=3D "about:Tabs")))
  2111. =09=09return doc;
  2112.  
  2113. =09// Check if already a top level document
  2114. =09for (var i =3D 0; i < gBrowser=2Ebrowsers=2Elength; i++)
  2115. =09{
  2116. =09=09if (doc =3D=3D gBrowser=2Ebrowsers[i]=2EcontentDocument)
  2117. =09=09=09return doc;
  2118. =09}
  2119.  
  2120. =09// Not a top level, check all frames=20
  2121. =09var documents;
  2122. =09for (var j =3D 0; j < gBrowser=2Ebrowsers=2Elength; j++)
  2123. =09{
  2124. =09=09// get all docs for each browser
  2125. =09=09documents =3D searchshield=2EgetDocuments(gBrowser=2Ebrowsers[j]=2Ec=
  2126. ontentWindow, new Array());
  2127. =09=09for (var k =3D 0; k < documents=2Elength; k++)
  2128. =09=09{
  2129. =09=09=09// check if doc is from current browser
  2130. =09=09=09if (doc =3D=3D documents[k])
  2131. =09=09=09{
  2132. =09=09=09=09// it is, return the top level doc for this browser
  2133. =09=09=09=09return gBrowser=2Ebrowsers[j]=2EcontentDocument;
  2134. =09=09=09}
  2135. =09=09}
  2136. =09}
  2137. =09
  2138. =09return doc;
  2139. };
  2140. searchshield=2EgetTopLevelWindow =3D function ()
  2141. {
  2142. =09// TODO: determine a method of doing this for IE, if necessary
  2143. =09return mediator=2EgetMostRecentWindow("navigator:browser");
  2144. };
  2145.  
  2146. //Event functions
  2147. searchshield=2EaddListener =3D function (object, evtType, listener, useCap=
  2148. ture)
  2149. {
  2150. =09useCapture =3D !!useCapture;
  2151.  
  2152. =09if (object=2EaddEventListener)
  2153. =09{
  2154. =09=09object=2EaddEventListener(evtType, listener, useCapture);
  2155. =09=09return true;
  2156. =09}
  2157. =09else if (object=2EattachEvent)
  2158. =09{
  2159. =09=09 object=2EattachEvent("on"+evtType, listener);
  2160. =09=09 return true;
  2161. =09}
  2162. =09
  2163. =09return false;
  2164. };
  2165. searchshield=2EcancelEvent =3D function (event)
  2166. {
  2167. =09event=2EcancelBubble =3D true;
  2168. =09event=2EreturnValue =3D false;
  2169. };
  2170. searchshield=2EdoEvent =3D function (evtObj, evtTarget, evtName, evtType, =
  2171. bubbles, cancelable)
  2172. {
  2173. =09bubbles=09=09=3D !!bubbles;
  2174. =09cancelable=09=3D !!cancelable;
  2175. =09
  2176. =09if (document=2EcreateEvent)
  2177. =09{
  2178. =09=09var evt =3D document=2EcreateEvent("Events");
  2179. =09=09evt=2EinitEvent(evtName, bubbles, cancelable);
  2180. =09=09evtTarget=2EdispatchEvent(evt);
  2181. =09=09return true;
  2182. =09}
  2183. =09else if (document=2EcreateEventObject)
  2184. =09{
  2185. =09=09var evt =3D document=2EcreateEventObject(evtObj);
  2186. =09=09evtTarget=2EfireEvent("on" + evtType, evt);
  2187. =09=09return true;
  2188. =09}
  2189. =09
  2190. =09return false;
  2191. };
  2192. searchshield=2EremoveListener =3D function (object, evtType, listener, use=
  2193. Capture)
  2194. {
  2195. =09useCapture =3D !!useCapture;
  2196. =09
  2197. =09if (object=2EremoveEventListener)
  2198. =09{
  2199. =09=09object=2EremoveEventListener(evtType, listener, useCapture);
  2200. =09=09return true;
  2201. =09}
  2202. =09else if (object=2EdetachEvent)
  2203. =09{
  2204. =09=09 object=2EdetachEvent(evtType, listener);
  2205. =09=09 return true;
  2206. =09}
  2207. =09
  2208. =09return false;
  2209. };
  2210.  
  2211.  
  2212. // HTML functions
  2213. searchshield=2ECleanupHTML =3D function (data)
  2214. {
  2215. =09if (data =3D=3D null)
  2216. =09=09return data;
  2217.  
  2218. =09// cleanup html data, replace any new lines
  2219. =09data =3D data=2Ereplace(/\r/g, "");
  2220. =09data =3D data=2Ereplace(/\n/g, "");
  2221. =09// escape any single quotes
  2222. =09data =3D data=2Ereplace(/'/g, "\\'");
  2223.  
  2224. =09return data;
  2225. };
  2226. searchshield=2EremoveHtmlTags =3D function (str)
  2227. {
  2228. =09var re =3D new RegExp('(<[^>]+>)','g');
  2229. =09var strStr =3D new String(str);
  2230. =09if (!!strStr)
  2231. =09=09return strStr=2Ereplace(re, '');
  2232. =09else
  2233. =09=09return str;
  2234. =09
  2235. };
  2236.  
  2237.  
  2238. // Browser functions
  2239. searchshield=2EelementSize =3D function (element)
  2240. {
  2241. =09//returns an array [sizeX, sizeY]
  2242. =09
  2243. =09var elemX;
  2244. =09var elemY;
  2245. =09
  2246. =09elemX =3D parseInt(element=2EoffsetWidth);
  2247. =09elemY =3D parseInt(element=2EoffsetHeight)
  2248. =09
  2249. =09return [elemX, elemY];
  2250. };
  2251. searchshield=2EGetFullBoundingRect =3D function (element)
  2252. {
  2253. =09if (!element) return;
  2254.  
  2255. =09// get bounding rect for incoming element
  2256. =09var elementRect =3D element=2EgetBoundingClientRect();
  2257. =09var nextImg =3D null;
  2258. =09var nextImgRect =3D null;
  2259.  
  2260. =09// first check for another non-TextNode element after this one
  2261. =09var siblingElement =3D searchshield=2ENextSiblingNode(element);
  2262. =09if (=09siblingElement &&=20
  2263. =09=09siblingElement=2EfirstChild &&=20
  2264. =09=09siblingElement=2Eid &&=20
  2265. =09=09siblingElement=2Eid=2EindexOf("XPLSS=5F") !=3D -1)
  2266. =09{
  2267. =09=09nextImg =3D siblingElement=2EfirstChild;=09=09
  2268. =09=09nextImgRect =3D nextImg=2EgetBoundingClientRect();=09
  2269. =09}
  2270. =09else
  2271. =09{
  2272. =09=09return elementRect;
  2273. =09}
  2274. =09
  2275. =09if ((nextImgRect=2Etop >=3D elementRect=2Ebottom) &&=20
  2276. =09=09(nextImgRect=2Eleft <=3D elementRect=2Eleft))
  2277. =09{=09// images appear to be on seperate lines
  2278. =09=09return elementRect;
  2279. =09}
  2280.  
  2281. =09// else merge the rects together into a new one
  2282. =09var newRect =3D new function() { this=2Etop=3D0; this=2Eleft=3D0; this=2E=
  2283. right=3D0; this=2Ebottom=3D0; this=2Emid=3D0;};
  2284. =09newRect=2Etop =3D Math=2Emin(elementRect=2Etop, nextImgRect=2Etop);
  2285. =09newRect=2Eleft=3D Math=2Emin(elementRect=2Eleft, nextImgRect=2Eleft);
  2286. =09newRect=2Eright=3DMath=2Emax(elementRect=2Eright, nextImgRect=2Eright);=
  2287.  
  2288. =09newRect=2Ebottom=3DMath=2Emax(elementRect=2Ebottom, nextImgRect=2Ebotto=
  2289. m);
  2290. =09newRect=2Emid =3D Math=2Emin(elementRect=2Eright, nextImgRect=2Eleft);
  2291. =09
  2292. =09return newRect;
  2293. };
  2294. searchshield=2EoffsetLeft =3D function (element)
  2295. {
  2296. =09var offset =3D 0;
  2297. =09while (element)
  2298. =09{
  2299. =09=09offset +=3D element=2EoffsetLeft;
  2300. =09=09element =3D element=2EoffsetParent;
  2301. =09}
  2302.  
  2303. =09return offset;
  2304. };
  2305. searchshield=2EoffsetTop =3D function (element)
  2306. {
  2307. =09var offset =3D 0;
  2308. =09while (element)
  2309. =09{
  2310. =09=09offset +=3D element=2EoffsetTop;=09
  2311. =09=09element =3D element=2EoffsetParent;
  2312. =09}
  2313.  
  2314. =09return offset;
  2315. };
  2316. searchshield=2EscrollSize =3D function (imageElem)
  2317. {
  2318. =09// returns an array [scrollX, scrollY, hasParentFrame]
  2319.  
  2320. =09var scrollX;
  2321. =09var scrollY;
  2322. =09var hasParentFrame;
  2323. =09
  2324. =09// firefox
  2325. =09if (window=2EpageXOffset && window=2EpageYOffset)
  2326. =09{
  2327. =09=09scrollX =3D window=2EpageXOffset;
  2328. =09=09scrollY =3D window=2EpageYOffset;
  2329. =09}
  2330. =09else if (document=2EdocumentElement || document=2Ebody)
  2331. =09{
  2332. =09=09scrollX =3D document=2EdocumentElement=2EscrollLeft || document=2Ebo=
  2333. dy=2EscrollLeft;
  2334. =09=09scrollY =3D document=2EdocumentElement=2EscrollTop || document=2Ebod=
  2335. y=2EscrollTop;
  2336.  
  2337. =09=09if (imageElem)
  2338. =09=09{
  2339. =09=09=09var frames =3D document=2Eframes;
  2340. =09=09=09if (frames)
  2341. =09=09=09{
  2342. =09=09=09=09for (var i=3D0; i < frames=2Elength; i++)
  2343. =09=09=09=09{
  2344. =09=09=09=09=09var img;
  2345. =09=09=09=09=09try {
  2346. =09=09=09=09=09=09img =3D frames[i]=2Edocument=2EgetElementById(imageElem=2E=
  2347. id);
  2348. =09=09=09=09=09}
  2349. =09=09=09=09=09catch(domErr){}
  2350.  
  2351. =09=09=09=09=09if (img !=3D null)
  2352. =09=09=09=09=09{
  2353. =09=09=09=09=09=09scrollX =3D frames[i]=2Edocument=2EdocumentElement=2Escr=
  2354. ollLeft;
  2355. =09=09=09=09=09=09scrollY =3D frames[i]=2Edocument=2EdocumentElement=2Escr=
  2356. ollTop;
  2357. =09=09=09=09=09=09hasParentFrame =3D true;
  2358. =09=09=09=09=09=09break;
  2359. =09=09=09=09=09}
  2360. =09=09=09=09}
  2361. =09=09=09}
  2362. =09=09}
  2363. =09}
  2364. =09else
  2365. =09{
  2366. =09=09scrollX =3D 0;
  2367. =09=09scrollY =3D 0;
  2368. =09}
  2369. =09
  2370. =09return [parseInt(scrollX,10), parseInt(scrollY,10), hasParentFrame];
  2371. };
  2372. searchshield=2EviewPortSize =3D function ()
  2373. {
  2374. =09// returns an array [width, height, scrollYWidth], where scrollYWidth i=
  2375. s always 0 for IE
  2376.  
  2377. =09var scrollXWidth=09 =3D 19;
  2378. =09var scrollYWidth=09 =3D 0; // 0 for Microsoft IE
  2379. =09var scrollBarX=09 =3D false;
  2380. =09var windowX;
  2381. =09var windowY;
  2382. =09
  2383. =09// firefox
  2384. =09if (window=2EinnerWidth && window=2EinnerHeight)
  2385. =09{
  2386. =09=09//TODO: validate this block if implemented for firefox
  2387. =09=09
  2388. =09=09windowX =3D window=2EinnerWidth - scrollXWidth;
  2389. =09=09windowY =3D window=2EinnerHeight;
  2390.  
  2391. =09=09try
  2392. =09=09{
  2393. =09=09=09scrollYWidth =3D Math=2Efloor(Math=2Eabs(window=2EinnerHeight - d=
  2394. ocument=2EdocumentElement=2EclientHeight)) + 1;
  2395. =09=09=09scrollBarX =3D (document=2EdocumentElement=2EclientWidth < docume=
  2396. nt=2EdocumentElement=2EscrollWidth);
  2397. =09=09}
  2398. =09=09catch(err){}
  2399.  
  2400. =09=09if (scrollBarX && !scrollYWidth)
  2401. =09=09=09scrollYWidth =3D 18;=09//normally 17 (+1 top border)
  2402. =09=09=09=09=09
  2403. =09}
  2404. =09else if (document=2EdocumentElement || document=2Ebody)=20
  2405. =09{
  2406. =09=09windowX =3D (document=2EdocumentElement=2EclientWidth || document=2E=
  2407. body=2EclientWidth) - scrollXWidth;
  2408. =09=09windowY =3D document=2EdocumentElement=2EclientHeight || document=2E=
  2409. body=2EclientHeight;
  2410. =09}
  2411. =09else
  2412. =09{
  2413. =09=09windowX =3D 0;
  2414. =09=09windowY =3D 0;
  2415. =09}
  2416.  
  2417. =09return [windowX, windowY, scrollYWidth];
  2418. };
  2419. searchshield=2EzoomLevel =3D function ()
  2420. {
  2421. =09=09var level =3D 1;
  2422. =09=09if (document=2Ebody=2EgetBoundingClientRect) {
  2423. =09=09=09// rect is only in physical pixel size before IE8=20
  2424. =09=09=09var rect =3D document=2Ebody=2EgetBoundingClientRect();
  2425. =09=09=09level =3D Math=2Eround (((rect=2Eright - rect=2Eleft) / (document=
  2426. =2Ebody=2EoffsetWidth)) * 100) / 100;
  2427. =09=09}
  2428. =09=09
  2429. =09=09return level;
  2430. };
  2431.  
  2432.  
  2433. // Href functions
  2434. searchshield=2EcheckUrl =3D function (url)
  2435. {=09// cleanup a url, make sure there is a protocol on the front for scann=
  2436. ing
  2437. =09try {
  2438. =09=09// trim
  2439. =09=09url =3D url=2Ereplace(/^\s+/, "")=2Ereplace(/\s+$/, "");
  2440.  
  2441. =09=09// if no protocol, add http:// to it=09
  2442. =09=09if (url=2EindexOf("://") =3D=3D -1)
  2443. =09=09=09url =3D "http://" + url;
  2444. =09}
  2445. =09catch(err){}
  2446.  
  2447. =09return url;
  2448. };
  2449. searchshield=2EDoesURLContain =3D function (url, contain)
  2450. {
  2451. =09if ((url =3D=3D null) || (url=2Elength < 1))
  2452. =09=09return false;
  2453.  
  2454. =09// breakup the url to check
  2455. =09var parts =3D url=2Esplit('/');
  2456. =09if (parts=2Elength < 3)
  2457. =09=09return false;
  2458.  
  2459. =09var domain=3D parts[2]=2EtoLowerCase();
  2460. =09if (domain=2EindexOf(contain) > -1)
  2461. =09=09return true;
  2462.  
  2463. =09return false;
  2464. };
  2465. searchshield=2EFilterUrl =3D function (url, filter)
  2466. {
  2467. =09if (!url || (url=2Elength < 1))
  2468. =09=09return false;
  2469. =09
  2470. =09if (!filter || !(filter instanceof Array))=09
  2471. =09=09return false;
  2472. =09=09
  2473. =09var parts =3D url=2Esplit('/');
  2474. =09if ((parts =3D=3D null) || (parts=2Elength < 3))
  2475. =09=09return false;
  2476.  
  2477. =09var domain =3D parts[2];
  2478. =09for (var i =3D 0; i < filter=2Elength; i++)
  2479. =09{
  2480. =09=09if (domain=2EindexOf(filter[i]) !=3D -1)
  2481. =09=09=09return true;
  2482. =09}
  2483. =09return false;
  2484. };
  2485. searchshield=2EGetDomain =3D function (url)
  2486. {
  2487. =09if (url !=3D null)
  2488. =09{
  2489. =09=09// get url domain
  2490. =09=09var parts =3D url=2Esplit('/');
  2491. =09=09if ((parts !=3D null) && (parts=2Elength >=3D 3))
  2492. =09=09{
  2493. =09=09=09return parts[2]=2EtoLowerCase();
  2494. =09=09}
  2495. =09}
  2496. =09
  2497. =09return url;
  2498. };
  2499. searchshield=2EgetUrlContents =3D function (url)=20
  2500. {
  2501. =09if (url =3D=3D null)
  2502. =09=09return null;
  2503.  
  2504. =09// don't query if local url
  2505. =09if (url=2EindexOf("linkscanner://") !=3D -1)
  2506. =09=09return null;
  2507.  
  2508. =09try=20
  2509. =09{
  2510. =09=09req =3D new XMLHttpRequest();
  2511. =09=09req=2Eopen("GET", url, false);
  2512. =09=09req=2Esend(null);
  2513. =09=09if (req=2Estatus =3D=3D 200)
  2514. =09=09=09return req=2EresponseText;
  2515. =09=09else
  2516. =09=09=09return null;
  2517. =09}=20
  2518. =09catch (err)
  2519. =09{
  2520. =09=09// nothing to do
  2521. =09=09return null;
  2522. =09}
  2523. };
  2524. searchshield=2EparseLink =3D function (href, simpleMode)
  2525. {
  2526. =09var uri=09=09  =3D {};
  2527. =09var parameter =3D {
  2528. =09=09=09complex: {
  2529. =09=09=09=09pattern: /^(=3F:([a-z]+):(=3F:([a-z]*):)=3F\/\/)=3F(=3F:([^:@]=
  2530. *)(=3F::([^:@]*))=3F@)=3F((=3F:[a-z0-9=5F-]+\=2E)+[a-z]{2,})(=3F::(\d+))=3F=
  2531. (=3F:([^:\=3F\#]+))=3F(=3F:\=3F([^\#]+))=3F(=3F:\#([^\s]+))=3F$/i,
  2532. =09=09=09=09element: ['source','scheme','subscheme','user','pass','host','=
  2533. port','path','query','fragment']
  2534. =09=09=09=09},
  2535. =09=09=09simple: {
  2536. =09=09=09=09pattern: /^(=3F:([a-z]+):\/\/)=3F((=3F:[a-z0-9=5F-]+\=2E)+[a-z=
  2537. ]{2,})(=3F:\/)([^:\=3F]+)=3F(=3F:([\=3F|\#])([^\=3F]+))=3F$/i,
  2538. =09=09=09=09element: ['source','scheme','host','path','delimiter','query']=
  2539.  
  2540. =09=09=09}
  2541. =09=09};
  2542. =09var mode=09=3D simpleMode !=3D=3D false =3F 'simple' : 'complex';
  2543. =09var pattern=09=3D parameter[mode]=2Epattern;
  2544. =09var element=09=3D parameter[mode]=2Eelement;
  2545. =09
  2546. =09if (!href)
  2547. =09=09return uri;
  2548.  
  2549. =09var matches=09=3D href=2Ematch(pattern);
  2550. =09
  2551. =09if (matches)
  2552. =09{
  2553. =09=09// --------------------
  2554. =09=09// iterate over the matches array and populate uri properties
  2555. =09=09// using the respective element parameter as the name=2E
  2556. =09=09// NOTE: set raw property type as String to make inArray()
  2557. =09=09// work properly with instanceof=2E
  2558. =09=09// --------------------
  2559. =09=09for (var i=3D0; i < matches=2Elength; i++)
  2560. =09=09=09uri[element[i]] =3D new String(matches[i] || "");
  2561. =09=09
  2562. =09=09// --------------------
  2563. =09=09// create an array, hostArray, from host, for example,
  2564. =09=09// host=3D"www=2Egoogle=2Ecom" and hostArray=3D["www","google","com"=
  2565. ]
  2566. =09=09// --------------------
  2567. =09=09uri=2EhostArray=09=3D uri=2Ehost=2Esplit("=2E");
  2568. =09=09
  2569. =09=09// --------------------
  2570. =09=09// create an array, qsArray, from query, for example,
  2571. =09=09// query=3D'hl=3Den&q=3Djavascript&btnG=3DSearch&aq=3Df&aqi=3Dg10&aq=
  2572. l=3D&oq=3D&gs=5Frfai=3D'
  2573. =09=09// qsArray=3D[{hl:'en'},{q:javascript}, =2E=2E=2E ,(qs=5Frfai:''}]
  2574. =09=09//
  2575. =09=09// $0=3Dentire match, $1=3Dcapture 1, $2=3Dcapture 2
  2576. =09=09// must include $0 even though it is unused so
  2577. =09=09// the replace works properly
  2578. =09=09// --------------------
  2579. =09=09uri=2EqsArray=09=09=3D searchshield=2EparseQuery(uri=2Equery);
  2580. =09}
  2581. =09
  2582. =09//non-standard urls require a fail-safe that relies on simply splitting=
  2583.  the href
  2584. =09function splitLink(href)
  2585. =09{
  2586. =09=09// split the href on '/'
  2587. =09=09var linkParts =3D href=2Esplit("/");
  2588.  
  2589. =09=09// need domain and path
  2590. =09=09if ((linkParts =3D=3D null) || (linkParts=2Elength < 2))
  2591. =09=09=09return false;
  2592. =09
  2593. =09=09var uri =3D {
  2594. =09=09=09delimiter: (linkParts[3])=2Esubstring(0,1),
  2595. =09=09=09host: linkParts[2],
  2596. =09=09=09hostArray: (linkParts[2])=2Esplit('=2E'),
  2597. =09=09=09path: (linkParts[3])=2Esubstring(1),
  2598. =09=09=09qsArray: [],
  2599. =09=09=09query: '',
  2600. =09=09=09scheme: (linkParts[0])=2Esubstring(0, linkParts[0]=2Elength-1),
  2601. =09=09=09source: href
  2602. =09=09=09};
  2603.  
  2604. =09=09return uri;
  2605. =09}
  2606.  
  2607. =09if (!uri=2Ehost)
  2608. =09=09uri =3D splitLink(href);
  2609.  
  2610. =09return uri;
  2611. };
  2612. searchshield=2EparseQuery =3D function (qs)
  2613. {
  2614. =09var qsArray =3D [];
  2615. =09qs=2Ereplace(/(=3F:^|&)([^&=3D]*)=3D=3F([^&]*)/g,=20
  2616. =09=09=09=09=09function ($0, $1, $2) {
  2617. =09=09=09=09=09=09if ($1) qsArray[$1] =3D $2;
  2618. =09=09=09=09=09}
  2619. =09);
  2620. =09
  2621. =09return qsArray;
  2622. };
  2623.  
  2624. // general functions
  2625. searchshield=2EarrayKeys =3D function (array)
  2626. {
  2627. =09var keys =3D new Array();
  2628. =09for(k in array)
  2629. =09=09keys=2Epush(k);
  2630.  
  2631. =09return keys;
  2632. };
  2633. searchshield=2EinArray =3D function (key, array, caseSensitive, exactMatch=
  2634. )
  2635. {
  2636. =09if (! array instanceof Array)
  2637. =09=09return false;
  2638. =09
  2639. =09if (caseSensitive !=3D=3D true)
  2640. =09=09caseSensitive =3D false;
  2641. =09=09
  2642. =09if (exactMatch !=3D=3D false)
  2643. =09=09exactMatch =3D true;
  2644. =09
  2645. =09if (key instanceof String)
  2646. =09{
  2647. =09=09for (var i=3D0; i < array=2Elength; i++)
  2648. =09=09{
  2649. =09=09=09var k =3D caseSensitive =3F key=2EvalueOf() : key=2EvalueOf()=2Et=
  2650. oLowerCase();
  2651. =09=09=09var a =3D caseSensitive =3F array[i] : array[i]=2EtoLowerCase();
  2652. =09=09=09if(exactMatch && k =3D=3D=3D a)
  2653. =09=09=09=09return true;
  2654. =09=09=09else if (!exactMatch && (-1 !=3D=3D k=2EindexOf(a)))
  2655. =09=09=09=09return true;
  2656. =09=09}
  2657. =09}
  2658. =09else if (key instanceof Array)
  2659. =09{
  2660. =09=09for (var i=3D0; i < array=2Elength; i++)
  2661. =09=09=09for (var j=3D0; j < key=2Elength; j++)
  2662. =09=09=09{
  2663. =09=09=09=09var k =3D caseSensitive =3F key[j] : key[j]=2EtoLowerCase();
  2664. =09=09=09=09var a =3D caseSensitive =3F array[i] : array[i]=2EtoLowerCase(=
  2665. );
  2666. =09=09=09=09if (exactMatch && k =3D=3D=3D a)
  2667. =09=09=09=09=09return true;
  2668. =09=09=09=09else if (!exactMatch && (-1 !=3D=3D k=2EindexOf(a)))
  2669. =09=09=09=09=09return true;
  2670. =09=09=09}
  2671. =09}
  2672.  
  2673. =09return false;
  2674. };
  2675. searchshield=2EgetClickHandlerParams =3D function(clickHandler)
  2676. {
  2677. =09var re =3D /((=3F:'[^']*')|[\w]*)(=3F:,|\))/ig;
  2678. =09var chParams =3D [];
  2679. =09clickHandler=2Ereplace(re,=20
  2680. =09=09function($0, $1, $2){
  2681. =09=09=09if ($1)
  2682. =09=09=09=09chParams=2Epush($1);
  2683. =09=09}
  2684. =09);
  2685. =09
  2686. =09return chParams;
  2687. };
  2688. // general use functions - end
  2689.  
  2690.  
  2691. // Search constructor
  2692. searchshield=2ESearch =3D function()
  2693. {
  2694. =09this=2Edoc =09=09=09=3D null;
  2695. =09this=2Eengine =09=09=3D null;
  2696. =09this=2Eengines =09=09=3D null;
  2697. =09this=2Elinks =09=09=09=3D null;
  2698. =09this=2Euri =09=09=09=3D null;
  2699. =09this=2EsearchHash =09=3D null;
  2700. =09this=2EcheckUrl =09=09=3D null;
  2701. =09this=2EuseLocalImgs =09=3D null;
  2702. =09this=2EclockUrl =09=09=3D null;
  2703. =09// create engine list (actually key/value object will be used)
  2704. =09this=2EengineList=09=09=3D {};
  2705. };
  2706.  
  2707. searchshield=2ESearch=2Eprototype=2EgetSearchNames =3D function()
  2708. {=09// order is important
  2709. =09var names =3D  [
  2710. =09=09'Google',
  2711. =09=09'AVGGoogle',
  2712. =09=09'AltaVista',
  2713. =09=09'AVGYahoo',
  2714. =09=09'Yahoo',
  2715. =09=09'Bing',
  2716. =09=09'MSN', // MSN redirects to BING
  2717. =09=09'Baidu',
  2718. =09=09'Earthlink',
  2719. =09=09'AOL',
  2720. =09=09'Ask',
  2721. =09=09'Yandex',
  2722. =09=09'Seznam',
  2723. =09=09'Webhledani',
  2724. =09=09'eBay',
  2725. ///temp=09=09'Digg',
  2726. =09=09'Slashdot',
  2727. =09=09'Twitter',
  2728. =09=09'GMail',
  2729. =09=09'Facebook',
  2730. =09=09'MySpace'
  2731. =09];
  2732. =09return names;
  2733. };
  2734.  
  2735. searchshield=2ESearch=2Eprototype=2EdetectEngine =3D function(href)
  2736. {
  2737. =09if (!href)
  2738. =09=09return;
  2739.  
  2740. =09var aEng =3D searchshield=2ESearch=2Eprototype=2EgetSearchNames();
  2741. =09var aEngLen =3D aEng=2Elength;
  2742. =09for (var i=3D0; i < aEngLen; i++)
  2743. =09{
  2744. =09=09if (searchshield[aEng[i] + 'SearchEngine']=2Eprototype=2EvalidSearch=
  2745. (href))
  2746. =09=09=09return aEng[i];
  2747. =09}
  2748.  
  2749. =09return;
  2750. };
  2751.  
  2752. searchshield=2ESearch=2Eprototype=2EaddEngine =3D function(engine)
  2753. {
  2754. =09if (!this=2Eengines)
  2755. =09=09this=2Eengines =3D new Array();
  2756. =09
  2757. =09this=2Eengines=2Epush(engine);
  2758. };
  2759.  
  2760. searchshield=2ESearch=2Eprototype=2EaddLink =3D function(inElement, inHref=
  2761. )
  2762. {
  2763. =09if (!this=2Elinks)
  2764. =09=09this=2Elinks =3D new Array();
  2765.  
  2766. =09var hrefHash;
  2767. =09try
  2768. =09{
  2769. =09=09hrefHash =3D searchshield=2EavgCallFunc(this=2Edoc, 'GetHash', inHre=
  2770. f);
  2771. =09}
  2772. =09catch (e){}
  2773.  
  2774. =09var newNode =3D {
  2775. =09=09=09element:=09inElement,
  2776. =09=09=09href: =09=09inHref,
  2777. =09=09=09hash:=09=09hrefHash,
  2778. =09=09=09search:=09=09this=2EsearchHash
  2779. =09=09};
  2780. =09
  2781. =09this=2Elinks=2Epush(newNode);
  2782. =09
  2783. =09return newNode;
  2784. }
  2785.  
  2786. // process the search result page after all search engines have been added=
  2787.  
  2788. searchshield=2ESearch=2Eprototype=2Eprocess =3D function(doc)
  2789. {
  2790. =09// only process when searchshield is enabled
  2791. =09if (!searchshield=2Eenabled(doc))
  2792. =09=09return;
  2793. =09=09
  2794. =09this=2Edoc=09=3D doc;
  2795. =09this=2Ehref=09=3D this=2Edoc=2Elocation=2Ehref;
  2796. =09this=2Euri=09=3D searchshield=2EparseLink(this=2Ehref);
  2797.  
  2798. =09try
  2799. =09{
  2800. =09=09this=2EsearchHash =09=3D searchshield=2EavgCallFunc(this=2Edoc, 'Get=
  2801. Hash', this=2Ehref);
  2802.  
  2803. =09=09// get any previously active engine
  2804. =09=09this=2Eengine=09=09=3D this=2EengineList[this=2EsearchHash=2EtoStrin=
  2805. g()];
  2806. =09}
  2807. =09catch (e) {}
  2808.  
  2809. =09/*
  2810. =09
  2811. =09Process Steps:
  2812. =091=2E Add all supported search engines
  2813. =092=2E Identify the active search engine
  2814. =093=2E Get all document links and add AVG images=20
  2815. =09*/
  2816. =09
  2817. =09// STEP 1 - Add all supported search engines
  2818. =09if (!this=2Eengines)
  2819. =09{
  2820. =09=09var aEng =3D xplSearch=2EgetSearchNames();
  2821. =09=09var aEngLen =3D aEng=2Elength;
  2822. =09=09for (var i=3D0; i < aEngLen; i++)
  2823. =09=09{
  2824. =09=09=09xplSearch=2EaddEngine(new searchshield[aEng[i]+'SearchEngine'](th=
  2825. is));
  2826. =09=09}
  2827. =09}
  2828. =09
  2829. =09// search the engines if we didn't find one
  2830. =09if (!this=2Eengine)
  2831. =09{
  2832. =09=09// STEP 2 - Identify the active search engine
  2833. =09=09var engLen =3D this=2Eengines=2Elength;
  2834. =09=09for (var i =3D 0; i < engLen; i++)
  2835. =09=09{
  2836. =09=09=09if (this=2Eengines[i]=2EvalidSearch())
  2837. =09=09=09{
  2838. =09=09=09=09this=2Eengine=09=09=3D this=2Eengines[i];
  2839. =09=09=09=09break;
  2840. =09=09=09}
  2841. =09=09}
  2842. =09=09
  2843. =09=09// create a new engine instance to store
  2844. =09=09this=2EengineList[this=2EsearchHash=2EtoString()] =3D this=2Eengine;=
  2845.  
  2846. =09=09
  2847. =09=09// init this search, if < 1 either an error or disabled
  2848. =09=09//var sdkInit =3D 0;
  2849. =09=09//try {
  2850. =09=09//=09sdkInit =3D xpl=5Fsdk=2ESXPL=5FInitSearch(this=2Ehref);
  2851. =09=09//}
  2852. =09=09//catch(e){}
  2853. =09=09//if (sdkInit < 1)
  2854. =09=09//=09return false;
  2855. =09}
  2856.  
  2857. =09// return immediately if there is not an active search engine
  2858. =09if (!this=2Eengine)
  2859. =09=09return false;
  2860. =09
  2861. =09try {=09
  2862. =09=09// base url to check for icons
  2863. =09=09this=2EcheckUrl =09=3D searchshield=2EavgCallFunc(this=2Edoc, 'GetIc=
  2864. onUrl', '1');
  2865.  
  2866. =09=09// check if using linked or local icons
  2867. =09=09this=2EuseLocalImgs=09=3D !searchshield=2EgetUrlContents(this=2Echec=
  2868. kUrl);
  2869.  
  2870. =09=09// get the clock url
  2871. =09=09this=2EclockUrl =09=3D searchshield=2EavgCallFunc(this=2Edoc, 'GetIc=
  2872. onUrl', '0');
  2873. =09}
  2874. =09catch(e){}
  2875. =09=09
  2876.  
  2877. =09// STEP 3 - Get all document links and add AVG images
  2878. =09var alltags =3D this=2Edoc=2EgetElementsByTagName("*");=09// this metho=
  2879. d works for IE, FF and Chrome
  2880. =09for (var i=3D0; i < alltags=2Elength; i++)
  2881. =09{
  2882. =09=09// ignore verdicts
  2883. =09=09if (alltags[i]=2Eid && (alltags[i]=2Eid=2EindexOf("LXPLSS=5F") !=3D =
  2884. -1))
  2885. =09=09=09continue;
  2886. =09
  2887. =09=09//should the link be included=3F  Make sure includeLink always retur=
  2888. ns an href else FALSE,
  2889. =09=09var href =3D this=2Eengine=2EincludeLink(alltags[i]);=20
  2890. =09=09if (!href)
  2891. =09=09=09continue;
  2892.  
  2893. =09=09var newNode =3D this=2EaddLink(alltags[i], href);
  2894. =09=09this=2Eengine=2EaddImage(newNode, this=2EclockUrl, false);
  2895. =09}
  2896.  
  2897. =09return (this=2Elinks =3F this=2Elinks=2Elength : false);
  2898. };
  2899. ////////////////    SEARCH    ////////////////
  2900.  
  2901.  
  2902.  
  2903. ////////////////    SEARCH ENGINE    ////////////////
  2904.  
  2905. // Interface for a SearchEngine object
  2906. searchshield=2ESearchEngine =3D function(search)
  2907. {
  2908. =09this=2Esearch =3D search;
  2909. =09this=2Etype =3D 'standard';
  2910. =09this=2EprocessFrames =3D false;
  2911. =09this=2Enew=5Flinks=09=09=3D true;
  2912. =09this=2EonlyPrimaries=09=3D true;
  2913. =09this=2Einline =3D {
  2914. =09=09clockImage: "linkscanner://clock12=2Epng",
  2915. =09=09image: [=09"linkscanner://safe12=2Epng",
  2916. =09=09=09=09=09"linkscanner://caution12=2Epng",
  2917. =09=09=09=09=09"linkscanner://warning12=2Epng",
  2918. =09=09=09=09=09"linkscanner://blocked12=2Epng"
  2919. =09=09=09=09],
  2920. =09=09color: {
  2921. =09=09=09classname: ["green","yellow","orange","red"],
  2922. =09=09=09border: ["#00A120", "#EAA500", "#F57301", "#D20003"],
  2923. =09=09=09background: ["#C3E5CA", "#FEEFAE", "#FFD3B0", "#F5D4C1"]
  2924. =09=09}
  2925. =09};
  2926. =09this=2Efilter=5Furls =3D [
  2927. =09=09"ad=2Edoubleclick=2Enet", "ads1=2Erevenue=2Enet", "aslads=2Eask=2Eco=
  2928. m",
  2929. =09=09"bluestreak=2Ecom", "clickbacktrack=2Enet", "clickbank=2Enet",
  2930. =09=09"clickboothlnk=2Ecom", "clickmanager=2Ecom", "clickserve=2Ecc-dt=2Ec=
  2931. om",
  2932. =09=09"dartsearch=2Enet", "clicktraxmedia=2Ecom", "clk=2Eatdmt=2Ecom",
  2933. =09=09"dpi-digialphoto=2Ecom", "feedpoint=2Enet", "hypertracker=2Ecom",
  2934. =09=09"jdoqocy=2Ecom", "kqzyfj=2Ecom", "m1428=2Eic-live=2Ecom",
  2935. =09=09"mediaplex=2Ecom", "mr=2Emdmngr=2Ecom", "n339=2Easp-cc=2Ecom",
  2936. =09=09"offeredby=2Enet", "offerweb=2Ecom", "pinktrax=2Ecom",
  2937. =09=09"pinktrax=2Ecom", "pixel1523=2Eeveresttech=2Enet", "qckjmp=2Ecom",
  2938. =09=09"r=2Erd06=2Ecom", "revenuewire=2Enet", "s0b=2Ebluestreak=2Ecom",
  2939. =09=09"s2=2Esrtk=2Enet", "servedby=2Eadvertising=2Ecom", "store=2Eyahoo=2E=
  2940. com",
  2941. =09=09"tf8=2Ecpcmanager=2Ecom", "thetoptracker=2Ecom", "track=2Esearchigni=
  2942. te=2Ecom",
  2943. =09=09"tracking=2Esearchmarketing=2Ecom", "www=2Edpbolvw=2Enet", "www=2Erk=
  2944. dms=2Ecom",
  2945. =09=09"www=2Eyellowbookleads=2Ecom"
  2946. =09=09];
  2947. =09this=2Eshortened=5Furls =3D [
  2948. =09=09"3=2Ely", "bit=2Ely", "is=2Egd", "tr=2Eim", "short=2Eto", "tiny=2Ecc=
  2949. ", "tinyurl=2Ecom", "lnk=2Ems", "msplinks=2Ecom", "t=2Eco", "qr=2Enet"
  2950. =09=09];
  2951. =09this=2EshowCleanVerdicts=09=09=3D true;
  2952. =09this=2EshowLowRiskVerdicts=09=3D true;
  2953. =09this=2EshowMedRiskVerdicts=09=3D true;
  2954. =09this=2EVeriSignSplit=09=09=09=3D searchshield=2EVERISIGN=5FSPLIT=5FNOTE=
  2955. ST;
  2956. };
  2957. searchshield=2ESearchEngine=2Eprototype=2EflyoverExists =3D function (doc)=
  2958.  
  2959. {
  2960. =09return !!doc=2EgetElementById("XPLSS=5FFlyover");
  2961. };
  2962. searchshield=2ESearchEngine=2Eprototype=2EinlineExists =3D function (doc)
  2963. {
  2964. =09return !!doc=2EgetElementById("XPLSS=5FInlineFlyover");
  2965. };
  2966. searchshield=2ESearchEngine=2Eprototype=2EvalidSearch =3D function(href) {=
  2967.  return false; };
  2968. searchshield=2ESearchEngine=2Eprototype=2EincludeLink =3D function(link) {=
  2969.  return false; };
  2970. searchshield=2ESearchEngine=2Eprototype=2EinsertNodes =3D function(node, d=
  2971. oc)
  2972. {
  2973. =09var element =3D node=2Eelement;
  2974. =09var parentNode =3D node=2Eelement=2EparentNode;
  2975. =09if (parentNode =3D=3D null)
  2976. =09{
  2977. =09=09// try and find element again based on the hash
  2978. =09=09element =3D doc=2EgetElementById("xplid=5F" + node=2Ehash);
  2979. =09=09parentNode =3D !!element =3F element=2EparentNode : null;
  2980. =09}
  2981.  
  2982. =09var insertNode =3D !!element =3F element=2EnextSibling : null;
  2983. =09while ((insertNode=09=09=09!=3D null) &&=20
  2984. =09=09=09(insertNode=2EtagName=09!=3D null) &&=20
  2985. =09=09=09(insertNode=2EtagName=09=3D=3D "SPAN"))
  2986. =09{
  2987. =09=09insertNode =3D insertNode=2EnextSibling;
  2988. =09}
  2989. =09
  2990. =09return [insertNode, parentNode];
  2991. };
  2992. searchshield=2ESearchEngine=2Eprototype=2EaddImage=09=3D function(node, im=
  2993. age, hidden)
  2994. {
  2995. =09var element=09=3D node=2Eelement;
  2996. =09var hash=09=3D node=2Ehash;
  2997. =09var score =09=3D node=2Escore;
  2998.  
  2999. =09// set verdict display configuration
  3000. =09var doc =3D element=2EownerDocument;
  3001. =09if (this=2Etype !=3D 'inline' && !doc=2EgetElementById('XPLSS=5FFlyover=
  3002. '))
  3003. =09=09searchshield=2EinitFlyover(doc, this);
  3004.  
  3005. =09// get the proper insertion point for the image
  3006. =09var insertNodes =3D this=2EinsertNodes(node, doc);
  3007. =09var insertNode =3D insertNodes[0];
  3008. =09var parentNode =3D insertNodes[1];
  3009.  
  3010. =09if (!parentNode)
  3011. =09=09return;
  3012.  
  3013. =09// see if we already have an image
  3014. =09if ((insertNode=09=09!=3D null) &&=20
  3015. =09=09(insertNode=2Eid=09!=3D null) &&=20
  3016. =09=09(insertNode=2Eid=2EindexOf("XPLSS=5F") > -1))
  3017. =09{
  3018. =09=09return;
  3019. =09}
  3020.  
  3021. =09// mark search result anchor so it isn't processed repeatedly
  3022. =09if (score =3D=3D undefined)
  3023. =09=09element=2EsetAttribute("avglschecked", hash + "S" + this=2EVeriSignS=
  3024. plit);
  3025.  
  3026. =09// create a new image
  3027. =09var img =3D doc=2EcreateElement('img');
  3028. =09img=2Esrc =3D image;
  3029. =09img=2Eid =3D "XPLSS=5F" + hash;
  3030. =09img=2Estyle=2EborderStyle =3D "none";
  3031. =09img=2Estyle=2Emargin =3D "0 3px";
  3032. =09
  3033. =09// for IE, specify these style attributes to prevent inadvertent inheri=
  3034. tance from parent
  3035. =09if (img=2Ewidth && img=2Eheight)
  3036. =09{
  3037. =09=09img=2Estyle=2Ewidth =3D img=2Ewidth + 'px';
  3038. =09=09img=2Estyle=2Eheight =3D img=2Eheight + 'px';
  3039. =09}
  3040. =09
  3041. =09// apply custom element styles
  3042. =09this=2EupdateElementStyle(img, this=2EaddImageStyle);
  3043. =09
  3044. =09// create the link element=20
  3045. =09var anchor =3D doc=2EcreateElement("A");
  3046. =09anchor=2EsetAttribute("id", "LXPLSS=5F" + hash);
  3047.  
  3048. =09if ((hidden !=3D null) && (hidden =3D=3D true))
  3049. =09{=09// hiding the parent will also hide its child nodes
  3050. =09=09anchor=2Estyle=2Edisplay =3D "none";
  3051. =09}
  3052. =09
  3053. =09// Default anchor styles
  3054. =09//Over-ride possible border style with inline declaration
  3055. =09anchor=2Estyle=2EborderStyle =3D "none";
  3056.  
  3057. =09// apply custom element styles
  3058. =09this=2EupdateElementStyle(anchor, this=2EaddAnchorStyle);
  3059.  
  3060. =09if (score =3D=3D searchshield=2ESCORE=5FSS=5FVERISIGN)
  3061. =09{
  3062. =09=09anchor=2Estyle=2EtextDecoration =3D "none";
  3063. =09=09anchor=2Estyle=2Ebackground =3D "none repeat scroll 0 0 transparent"=
  3064. ;
  3065. =09}
  3066.  
  3067. =09// append the image to the link
  3068. =09anchor=2EappendChild(img);
  3069.  
  3070. =09// insert the node as either a sibling or a child
  3071. =09if (insertNode !=3D null)
  3072. =09=09parentNode=2EinsertBefore(anchor, insertNode);
  3073. =09else
  3074. =09=09parentNode=2EappendChild(anchor);
  3075. =09=09
  3076. =09return anchor;
  3077. };
  3078. searchshield=2ESearchEngine=2Eprototype=2EupdateImage =3D function (hash, =
  3079. search, score, image, alt=5Fimage, flyover, click=5Fthru, altClick=5Fthru)=
  3080.  
  3081. {
  3082. =09=09var updated =3D false;
  3083.  
  3084. =09=09var frameDoc  =3D this=2Esearch=2Edoc;
  3085. =09=09var docFrames =3D frameDoc=2Eframes;
  3086. =09=09var frameElem;
  3087. =09=09if (docFrames && this=2EprocessFrames)
  3088. =09=09{
  3089. =09=09=09for (var i=3D0; i < docFrames=2Elength; i++)
  3090. =09=09=09{
  3091. =09=09=09=09try {
  3092. =09=09=09=09=09if (docFrames[i]=2Edocument=2EgetElementById(hash))
  3093. =09=09=09=09=09{
  3094. =09=09=09=09=09=09frameElem =3D docFrames[i]=2EframeElement;
  3095. =09=09=09=09=09=09frameDoc =3D docFrames[i]=2Edocument;
  3096. =09=09=09=09=09=09break;
  3097. =09=09=09=09=09}
  3098. =09=09=09=09}=20
  3099. =09=09=09=09catch(err){}
  3100. =09=09=09}
  3101. =09=09}
  3102.  
  3103. =09=09while ((element =3D frameDoc=2EgetElementById(hash)) !=3D null)
  3104. =09=09{
  3105. =09=09=09// check configuration to determine if verdict display property
  3106. =09=09=09var showVerdict =3D true;=09=09=09
  3107. =09=09=09var nSeverity =3D Number(score - 1);
  3108. =09=09=09switch (nSeverity)
  3109. =09=09=09{
  3110. =09=09=09=09case searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FLOW:
  3111. =09=09=09=09=09showVerdict =3D this=2EshowLowRiskVerdicts;
  3112. =09=09=09=09=09break;
  3113. =09=09=09=09case searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FMED:
  3114. =09=09=09=09=09showVerdict =3D this=2EshowMedRiskVerdicts;
  3115. =09=09=09=09=09break;
  3116. =09=09=09=09case searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FNONE:
  3117. =09=09=09=09=09showVerdict =3D this=2EshowCleanVerdicts;
  3118. =09=09=09=09=09break;
  3119. =09=09=09=09default:
  3120. =09=09=09=09=09if (score =3D=3D searchshield=2ESCORE=5FSS=5FVERISIGN)
  3121. =09=09=09=09=09=09showVerdict =3D this=2EshowCleanVerdicts;
  3122. =09=09=09=09=09break;
  3123. =09=09=09}
  3124. =09=09=09
  3125. =09=09=09// remove image if no url specified
  3126. =09=09=09if ((!showVerdict) || (image =3D=3D null) || (image=2Elength < 1)=
  3127. )
  3128. =09=09=09{
  3129. =09=09=09=09// hide the parent anchor node
  3130. =09=09=09=09element=2EparentNode=2Estyle=2Edisplay =3D "none";
  3131.  
  3132. =09=09=09=09// mark the id as being hidden (element is the image)
  3133. =09=09=09=09element=2Eid =3D element=2Eid + "H";
  3134. =09=09=09=09updated =3D true;
  3135. =09=09=09=09
  3136. =09=09=09=09// if not a verisign score
  3137. =09=09=09=09if (score !=3D searchshield=2ESCORE=5FSS=5FVERISIGN)
  3138. =09=09=09=09=09continue;
  3139. =09=09=09}
  3140.  
  3141. =09=09=09// cleanup flyover, replace any new lines or single quotes
  3142. =09=09=09flyover =3D searchshield=2ECleanupHTML(flyover);
  3143.  
  3144. =09=09=09// mark the id as having been updated
  3145. =09=09=09element=2Eid =3D element=2Eid + "U" + score;
  3146. =09=09=09element=2Esrc=09=3D image;
  3147. =09=09=09element=2EattachEvent("onmouseover", function(e){avglsflyover=2Ep=
  3148. opup(e, hash, search, flyover)});
  3149. =09=09=09element=2EattachEvent("onmouseout", function(e){avglsflyover=2Ehi=
  3150. de(e)});
  3151.  
  3152. =09=09=09// check for attribute updates (elementAttribute is an associativ=
  3153. e array (i=2Ee=2E, object)
  3154. =09=09=09if (this=2EelementAttribute)
  3155. =09=09=09{
  3156. =09=09=09=09for (a in this=2EelementAttribute)
  3157. =09=09=09=09{
  3158. =09=09=09=09=09if(this=2EelementAttribute[a])
  3159. =09=09=09=09=09=09element=2EsetAttribute(a, this=2EelementAttribute[a]);
  3160. =09=09=09=09}
  3161. =09=09=09}
  3162.  
  3163. =09=09=09// To dynamically reduce verdict image size if it causes its cont=
  3164. ainer to scroll
  3165. =09=09=09// when not showing alt images determine if the element containin=
  3166. g
  3167. =09=09=09// the verdict image is scrolling and decrease the image size by
  3168. =09=09=09// the scroll amount (min size is 80% or original)
  3169. =09=09=09var reduceBy=09=3D 0=2E8;
  3170. =09=09=09var scrl=09=09=3D 0;
  3171. =09=09=09if (!alt=5Fimage || this=2EomitAltImage || this=2EVeriSignSplit =3D=
  3172. =3D searchshield=2EVERISIGN=5FSPLIT=5FTESTB)
  3173. =09=09=09{
  3174. =09=09=09=09try{
  3175. =09=09=09=09=09var maxLoop =3D 5;
  3176. =09=09=09=09=09var cN =3D element=2EparentNode=2EparentNode;  //image->anc=
  3177. hor->containerNodes=2E=2E=2E
  3178. =09=09=09=09=09while (cN && maxLoop--)
  3179. =09=09=09=09=09{
  3180. =09=09=09=09=09=09if (cN=2EtagName =3D=3D "DIV" || cN=2EtagName =3D=3D "SP=
  3181. AN")
  3182. =09=09=09=09=09=09{
  3183. =09=09=09=09=09=09=09// get object height depending on ie document mode
  3184. =09=09=09=09=09=09=09var clientHeight =3D (cN=2EclientHeight =3D=3D 0 ||=20=
  3185.  
  3186. =09=09=09=09=09=09=09=09(this=2Esearch=2Edoc=2EdocumentMode && this=2Esear=
  3187. ch=2Edoc=2EdocumentMode < 8)) =3F=20
  3188. =09=09=09=09=09=09=09=09cN=2EoffsetHeight :=20
  3189. =09=09=09=09=09=09=09=09cN=2EclientHeight;
  3190. =09=09=09=09=09=09=09scrl =3D cN=2EscrollHeight - clientHeight;
  3191. =09=09=09=09=09=09=09break;
  3192. =09=09=09=09=09=09}
  3193.  
  3194. =09=09=09=09=09=09cN =3D cN=2EparentNode;
  3195. =09=09=09=09=09}
  3196.  
  3197. =09=09=09=09=09if (0 < scrl)
  3198. =09=09=09=09=09{
  3199. =09=09=09=09=09=09var eH =3D (element=2Eheight - scrl)/element=2Eheight;
  3200. =09=09=09=09=09=09if (reduceBy > eH)
  3201. =09=09=09=09=09=09=09eH =3D reduceBy;
  3202. =09=09=09=09=09=09
  3203. =09=09=09=09=09=09var newDim =3D Math=2Eceil(eH*element=2Eheight);
  3204. =09=09=09=09=09=09
  3205. =09=09=09=09=09=09element=2Eheight =3D newDim;
  3206. =09=09=09=09=09=09element=2Ewidth =3D newDim;
  3207. =09=09=09=09=09=09
  3208. =09=09=09=09=09=09element=2Estyle=2Eheight =3D newDim + "px";
  3209. =09=09=09=09=09=09element=2Estyle=2Ewidth =3D newDim + "px";
  3210. =09=09=09=09=09}
  3211. =09=09=09=09}
  3212. =09=09=09=09catch(e){}
  3213. =09=09=09}
  3214.  
  3215. =09=09=09// set default style attributes
  3216. =09=09=09element=2Estyle=2Edisplay=09=09=3D "";
  3217. =09=09=09
  3218. =09=09=09// if verisign icon showing move our icon up for better centering=
  3219.  of the 2
  3220. =09=09=09// except for IE7 browser - it does not like this style
  3221. =09=09=09try {
  3222. =09=09=09=09var ieVersion =3D parseFloat(navigator=2EappVersion=2Esplit("M=
  3223. SIE")[1]);
  3224. =09=09=09=09if (alt=5Fimage && (alt=5Fimage=2Elength > 0) && ieVersion !=3D=
  3225.  7)
  3226. =09=09=09=09=09element=2Estyle=2EverticalAlign =3D "10%";
  3227. =09=09=09}
  3228. =09=09=09catch(err){};
  3229.  
  3230. =09=09=09// apply custom element styles
  3231. =09=09=09this=2EupdateElementStyle(element, this=2EupdateImageStyle)
  3232.  
  3233. =09=09=09// update the click thru
  3234. =09=09=09var link =3D this=2Esearch=2Edoc=2EgetElementById("L" + hash);
  3235. =09=09=09if (link)
  3236. =09=09=09{
  3237. =09=09=09=09link=2Ehref =3D click=5Fthru;
  3238. =09=09=09=09link=2Eid =3D link=2Eid + "U" + score;
  3239. =09=09=09}
  3240.  
  3241. =09=09=09updated =3D true;
  3242.  
  3243. =09=09=09// add the alternate image if supplied BUT not on avg yahoo
  3244. =09=09=09if ((alt=5Fimage)=09=09=09=09&&=20
  3245. =09=09=09=09(alt=5Fimage=2Elength > 0)=09&&=20
  3246. =09=09=09=09(!this=2EomitAltImage)=09&&
  3247. =09=09=09=09(this=2EVeriSignSplit !=3D searchshield=2EVERISIGN=5FSPLIT=5FT=
  3248. ESTB))
  3249. =09=09=09{
  3250.  
  3251. =09=09=09=09var vhash =3D hash=2Esubstring(hash=2EindexOf("=5F")+1);
  3252.  
  3253. =09=09=09=09// create a temporary link node
  3254. =09=09=09=09var tmp=5Fnode =3D {
  3255. =09=09=09=09=09=09element:=09element=2EparentNode,
  3256. =09=09=09=09=09=09href:=09=09altClick=5Fthru,
  3257. =09=09=09=09=09=09hash:=09=09vhash + "VU" + score,
  3258. =09=09=09=09=09=09search:=09=09this=2EsearchHash,
  3259. =09=09=09=09=09=09score:=09=09score
  3260. =09=09=09=09=09};
  3261.  
  3262. =09=09=09=09var altAnchor =3D this=2EaddImage(tmp=5Fnode, alt=5Fimage, fal=
  3263. se);
  3264. =09=09=09=09if (altAnchor && altAnchor=2EfirstChild)
  3265. =09=09=09=09{
  3266. =09=09=09=09=09altAnchor=2EfirstChild=2EsetAttribute("onmouseover", "");
  3267. =09=09=09=09=09altAnchor=2Ehref =3D altClick=5Fthru;
  3268. =09=09=09=09}
  3269. =09=09=09}
  3270. =09=09}
  3271. =09=09
  3272. =09=09if (updated !=3D false)
  3273. =09=09{
  3274. =09=09=09this=2EresizeFrame(frameElem);
  3275. =09=09=09return true;
  3276. =09=09}
  3277.  
  3278. =09return false;
  3279. };
  3280. searchshield=2ESearchEngine=2Eprototype=2EupdateElementStyle =3D function =
  3281. (element, elementStyle)
  3282. {
  3283. =09if (elementStyle)
  3284. =09{=09// a NULL attribte value will unset it
  3285. =09=09for(attr in elementStyle)
  3286. =09=09{
  3287. =09=09=09try {
  3288. =09=09=09=09if (element=2Estyle=2EsetAttribute)
  3289. =09=09=09=09=09element=2Estyle=2EsetAttribute(attr, elementStyle[attr]);
  3290. =09=09=09=09else
  3291. =09=09=09=09=09element=2Estyle[attr] =3D elementStyle[attr];
  3292. =09=09=09} catch(err){}
  3293. =09=09}
  3294. =09}
  3295. };
  3296.  
  3297. searchshield=2ESearchEngine=2Eprototype=2EresizeFrame =3D function (frameE=
  3298. lem)
  3299. {=09// resize frame to prevent unwanted scrolling after inserting verdicts=
  3300.  
  3301.  
  3302. =09// ignore inline and non-frame engines
  3303. =09if ((this=2Etype =3D=3D 'inline') || (!this=2EprocessFrames))
  3304. =09=09return;
  3305.  
  3306. =09// ensure all required elements are available
  3307. =09if ((frameElem =3D=3D null) || (frameElem=2Estyle =3D=3D null) || (fram=
  3308. eElem=2EcontentWindow =3D=3D null))
  3309. =09=09return;
  3310.  
  3311. =09// if frame is scrolling vertically then resize
  3312. =09var frameHeight =3D parseInt(frameElem=2Estyle=2Eheight, 10);
  3313. =09if (!isNaN(frameHeight) && (frameHeight < frameElem=2EcontentWindow=2Ed=
  3314. ocument=2Ebody=2EscrollHeight))
  3315. =09=09frameElem=2Estyle=2Eheight =3D frameElem=2EcontentWindow=2Edocument=2E=
  3316. body=2EscrollHeight + 'px';
  3317.  
  3318. =09return;
  3319. };
  3320.  
  3321. searchshield=2ESearchEngine=2Eprototype=2EgetImgElement =3D function (elem=
  3322. ent)
  3323. {=09// return an xpl img element associated with a given element
  3324. =09if (element =3D=3D null)
  3325. =09=09return null;
  3326.  
  3327. =09// go up the parent tree looking for a header or div
  3328. =09while ( (element=2EparentNode !=3D null) &&=20
  3329. =09=09=09(element=2EtagName=2EcharAt(0) !=3D "H") &&=20
  3330. =09=09=09(element=2EtagName=2EcharAt(0) !=3D "D") &&
  3331. =09=09=09(element=2EtagName=2EcharAt(0) !=3D "T") )
  3332. =09{
  3333. =09=09element =3D element=2EparentNode;
  3334. =09}
  3335.  
  3336. =09// if all the way to the top, nothing
  3337. =09if ((element=2EtagName =3D=3D "HTML") || (element =3D=3D null))
  3338. =09=09return null;
  3339.  
  3340. =09// get image tags, if none we are done
  3341. =09var imgTags =3D element=2EgetElementsByTagName("IMG");
  3342. =09if ((imgTags =3D=3D null) || (imgTags=2ELength < 1))
  3343. =09=09return null;
  3344.  
  3345. =09for (var i =3D 0; i < imgTags=2Elength; i++)
  3346. =09{
  3347. =09=09if ((imgTags[i]=2Eid =3D=3D null) || (imgTags[i]=2Eid=2EindexOf("XPL=
  3348. SS=5F") =3D=3D -1))
  3349. =09=09=09continue;
  3350.  
  3351. =09=09return imgTags[i];
  3352. =09}
  3353.  
  3354. =09// else didn't find anything
  3355. =09return null;
  3356. };
  3357.  
  3358. searchshield=2ESearchEngine=2Eprototype=2EsetRatingsConfig =3D function (d=
  3359. oc)
  3360. {
  3361. =09// get verdict configuration, need at least severity
  3362. =09var results =3D searchshield=2EavgCallFunc(doc, 'GetRatingsConfig');
  3363. =09var parts =3D !!results =3F results=2Esplit('::') : null;
  3364.  
  3365. =09if (parts !=3D null && parts=2Elength >=3D 5)
  3366. =09{=09//if set to default then get config value
  3367. =09=09if (this=2EshowCleanVerdicts =3D=3D=3D true)
  3368. =09=09=09this=2EshowCleanVerdicts=09=09=3D (parseInt(parts[0]) =3D=3D 1) =3F=
  3369.  true : false;
  3370. =09=09=09
  3371. =09=09if (this=2EshowLowRiskVerdicts =3D=3D=3D true)
  3372. =09=09=09this=2EshowLowRiskVerdicts=09=3D (parseInt(parts[1]) =3D=3D 1) =3F=
  3373.  true : false;
  3374. =09=09
  3375. =09=09if (this=2EshowMedRiskVerdicts =3D=3D=3D true)
  3376. =09=09=09this=2EshowMedRiskVerdicts=09=3D (parseInt(parts[2]) =3D=3D 1) =3F=
  3377.  true : false;
  3378. =09=09=09
  3379. =09=09this=2EVeriSignSplit=09=3D (parseInt(parts[4]));
  3380. =09}
  3381. =09
  3382. =09return true;
  3383. };
  3384.  
  3385. searchshield=2ESearchEngine=2Eprototype=2Einit=5Finline=5Fratings =3D func=
  3386. tion (doc)
  3387. {
  3388. =09if ((doc =3D=3D null) || (doc=2EgetElementById("XPLSS=5FInlineFlyover")=
  3389. ))
  3390. =09=09return;
  3391.  
  3392. =09if (!searchshield=2EquirksMode)
  3393. =09{
  3394. =09=09// create style for inline flyovers
  3395. =09=09var styleTag =3D doc=2EcreateElement("style");
  3396. =09=09styleTag=2EsetAttribute("id","avgILFOStyle");
  3397. =09=09
  3398. =09=09var headTag =3D doc=2EgetElementsByTagName("head")[0];
  3399. =09=09headTag=2EappendChild(styleTag);
  3400.  
  3401. =09=09var inline=5Fstyle =3D styleTag=2EstyleSheet;
  3402. =09=09// stub in the base image name as the url
  3403. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO", "background: url(linkscanner:=
  3404. //default=5Finline=5Fborder=5Ftl=2Epng) no-repeat top left;");
  3405. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO", "width:0px; font-size:0px; z-=
  3406. index:9999; visibility:hidden; position:absolute; left:-5000px;");
  3407. =09=09
  3408. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fcontent", "background: url(li=
  3409. nkscanner://default=5Finline=5Fborder=5Fr=2Epng) top right repeat-y;");
  3410. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fcontent","font-size:10px; col=
  3411. or:black; padding:0px 10px; text-align:left; word-wrap:break-word; line-he=
  3412. ight:130%");
  3413. =09=09
  3414. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fhead", "background: url(links=
  3415. canner://default=5Finline=5Fborder=5Ftr=2Epng) no-repeat top right;");
  3416. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fhead", "width:0px; height:5px=
  3417. ;");
  3418. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fhead div","height:5px;");
  3419. =09
  3420. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Ffoot", "background: url(links=
  3421. canner://default=5Finline=5Fborder=5Fbl=2Epng) no-repeat bottom left");
  3422. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Ffoot", "height:5px;");
  3423. =09=09
  3424. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Ffoot div", "background: url(l=
  3425. inkscanner://default=5Finline=5Fborder=5Fbr=2Epng) no-repeat bottom right"=
  3426. );
  3427. =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Ffoot div", "height:5px; width=
  3428. :0px;");
  3429. =09}
  3430. =09
  3431. =09try {=09
  3432. =09=09// create the popup box
  3433. =09=09var box =3D doc=2EcreateElement("DIV");
  3434. =09=09if (searchshield=2EquirksMode)
  3435. =09=09{
  3436. =09=09=09box=2Estyle=2Evisibility =3D "hidden";
  3437. =09=09=09box=2Estyle=2Eposition =3D "absolute";
  3438. =09=09=09box=2Estyle=2Eleft =3D "-5000px";
  3439. =09=09}
  3440.  
  3441. =09=09box=2EsetAttribute("id", "XPLSS=5FInlineFlyover");
  3442. =09=09box=2EsetAttribute("class", "avgILFO");
  3443.  
  3444. =09=09doc=2Ebody=2EappendChild(box);
  3445. =09=09box =3D null;
  3446. =09}
  3447. =09catch(boxErr){}
  3448. };
  3449.  
  3450. searchshield=2ESearchEngine=2Eprototype=2Eshow=5Finline=5Fratings =3D func=
  3451. tion (doc, node, image)
  3452. {=09
  3453. =09var href=09=3D node=2Ehref;
  3454. =09var anchor=09=3D node=2Eelement;
  3455.  
  3456. =09if ((href =3D=3D null) || (href=2Elength < 1))
  3457. =09=09return;
  3458. =09=09
  3459. =09if (avglsinlineflyover=2EimageExists(anchor))
  3460. =09=09return;
  3461. =09
  3462. =09// mark search result anchor so it isn't processed repeatedly
  3463. =09anchor=2EsetAttribute("avglschecked", "1");
  3464. =09
  3465. =09// get verdict=20
  3466. =09this=2Edisplay=5Finline(doc, anchor, href, node, false);
  3467. };
  3468.  
  3469. searchshield=2ESearchEngine=2Eprototype=2Edisplay=5Finline =3D function (d=
  3470. oc, anchor, href, node, update, min=5Fseverity)
  3471. {
  3472. =09// min=5Fseverity is the lowest severity to display, so setting it to
  3473. =09// 1 would not display safe icons
  3474. =09
  3475. =09var results=09=3D searchshield=2EavgCallFunc(doc, 'MalsiteCheck', href)=
  3476. ;
  3477. =09if (results =3D=3D null)
  3478. =09=09return;
  3479. =09
  3480. =09var parts =3D results=2Esplit('::');
  3481. =09
  3482. =09// need at least severity
  3483. =09if (parts =3D=3D null)
  3484. =09=09return;
  3485. =09=09=09
  3486. =09var nSeverity =3D parseInt(parts[0]);
  3487. =09
  3488. =09if (!update && nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5F=
  3489. NONE)
  3490. =09{
  3491. =09=09var shortUrl =3D searchshield=2EFilterUrl(href, this=2Eshortened=5Fu=
  3492. rls);
  3493. =09=09if (shortUrl)
  3494. =09=09{=09// shortened url verdicts display later
  3495. =09=09=09var engine =3D this;
  3496. =09=09=09anchor=2EattachEvent("onmouseover", function(event){avglsinlinefl=
  3497. yover=2EmouseOverHandler(event, doc, engine)});
  3498. =09=09=09return;
  3499. =09=09}
  3500. =09}
  3501. =09
  3502. =09// severity -1 signifies sb=2Edat load failure
  3503. =09if ( nSeverity =3D=3D -1 )
  3504. =09=09nSeverity =3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FNONE;
  3505.  
  3506. =09//blacklist url
  3507. =09var blShortUrl =3D false;
  3508. =09if (nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FBLOCK)
  3509. =09{
  3510. =09=09var shortUrl =3D searchshield=2EFilterUrl(href, this=2Eshortened=5Fu=
  3511. rls);
  3512. =09=09if (shortUrl)
  3513. =09=09=09blShortUrl =3D true;
  3514. =09}
  3515. =09
  3516. =09// need xlated cat tag and category
  3517. =09if (parts=2Elength < 3)
  3518. =09=09return;
  3519.  
  3520. =09// check the minimum to display
  3521. =09if ((min=5Fseverity !=3D null) && (nSeverity < min=5Fseverity))
  3522. =09=09return;
  3523. =09=09
  3524. =09if (nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FLOW && !t=
  3525. his=2EshowLowRiskVerdicts)
  3526. =09{
  3527. =09=09if (update)
  3528. =09=09=09this=2Eavg=5Fls=5Finline=5Fhide=5Fverdict(anchor);
  3529. =09=09
  3530. =09=09return;
  3531. =09}=20
  3532. =09if (nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FMED && !t=
  3533. his=2EshowMedRiskVerdicts)
  3534. =09{
  3535. =09=09if (update)
  3536. =09=09=09this=2Eavg=5Fls=5Finline=5Fhide=5Fverdict(anchor);
  3537. =09=09
  3538. =09=09return;
  3539. =09}
  3540. =09if (nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FNONE && !=
  3541. this=2EshowCleanVerdicts)=20
  3542. =09{
  3543. =09=09if (update)
  3544. =09=09=09this=2Eavg=5Fls=5Finline=5Fhide=5Fverdict(anchor);
  3545. =09=09=09
  3546. =09=09return;
  3547. =09}
  3548.  
  3549. =09if (update)
  3550. =09=09this=2Eupdate=5Finline=5Fimage(anchor, nSeverity, parts);
  3551. =09else
  3552. =09=09this=2Eadd=5Finline=5Fimage(doc, anchor, nSeverity, parts, blShortUr=
  3553. l);
  3554. };
  3555.  
  3556. searchshield=2ESearchEngine=2Eprototype=2Eavg=5Fls=5Finline=5Fhide=5Fverdi=
  3557. ct =3D function (anchor)
  3558. {
  3559. =09var image =3D avglsinlineflyover=2EgetImage(anchor);
  3560. =09if (image)
  3561. =09{
  3562. =09=09image=2Estyle=2Edisplay =3D "none";
  3563. =09=09if (image=2EparentNode && image=2EparentNode=2Eid =3D=3D "avg=5Fls=5F=
  3564. anch")
  3565. =09=09=09image=2EparentNode=2Estyle=2Edisplay =3D "none";
  3566. =09}
  3567. };
  3568.  
  3569. searchshield=2ESearchEngine=2Eprototype=2Eupdate=5Finline=5Fimage =3D func=
  3570. tion (anchor, nSeverity, aRisk)
  3571. {
  3572. =09// update the image already in the page
  3573. =09if (anchor && anchor=2EfirstChild)
  3574. =09{
  3575. =09=09var html  =3D '';
  3576. =09=09var image =3D '';=20
  3577. =09=09if (aRisk !=3D null && nSeverity !=3D null)
  3578. =09=09{
  3579. =09=09=09var riskCategory =3D aRisk[1];
  3580. =09=09=09var riskName=09 =3D aRisk[2];
  3581. =09=09=09var bgColor=09=09 =3D this=2Einline=2Ecolor=2Ebackground[nSeverit=
  3582. y];
  3583. =09=09=09var borderColor=09 =3D this=2Einline=2Ecolor=2Eborder[nSeverity];=
  3584.  
  3585.  
  3586. =09=09=09image=09=09=09 =3D this=2Einline=2Eimage[nSeverity];
  3587. =09=09=09html=09=09=09 =3D avglsinlineflyover=2Ebuild(riskCategory, riskNa=
  3588. me, bgColor, borderColor);
  3589. =09=09}
  3590. =09=09
  3591. =09=09var imageElem =3D anchor=2EfirstChild;
  3592. =09=09imageElem=2Esrc =3D image;
  3593. =09=09
  3594. =09=09if ( html && html=2Elength > 0 )
  3595. =09=09{
  3596. =09=09=09imageElem=2EsetAttribute("title", "");
  3597. =09=09=09imageElem=2EattachEvent("onmouseover", function(e){avglsinlinefly=
  3598. over=2Epopup(e, html, nSeverity)});
  3599. =09=09=09imageElem=2EattachEvent("onmouseout", function(e){avglsinlineflyo=
  3600. ver=2Ehide(e)});
  3601. =09=09}
  3602. =09}
  3603. };
  3604.  
  3605. // add the image to the page
  3606. searchshield=2ESearchEngine=2Eprototype=2Eadd=5Finline=5Fimage =3D functio=
  3607. n (doc, anchor, nSeverity, aRisk, blShortUrl)
  3608. {
  3609. =09if (anchor =3D=3D null || anchor=2EparentNode =3D=3D null)
  3610. =09=09return null;
  3611.  
  3612. =09// get the proper insertion point for the image
  3613. =09var insertNode =3D anchor=2EnextSibling;
  3614. =09while ((insertNode=09=09=09!=3D null) &&=20
  3615. =09=09=09(insertNode=2EtagName !=3D null) &&=20
  3616. =09=09=09(insertNode=2EtagName =3D=3D "SPAN"))
  3617. =09{
  3618. =09=09insertNode=3D insertNode=2EnextSibling;
  3619. =09}
  3620. =09
  3621. =09// see if we already have an image anchor
  3622. =09if ((insertNode=09=09!=3D null) &&=20
  3623. =09=09(insertNode=2Eid=09!=3D null) &&=20
  3624. =09=09(insertNode=2Eid=09=3D=3D "avg=5Fls=5Fanch"))
  3625. =09{
  3626. =09=09return null;
  3627. =09}
  3628.  
  3629. =09var html  =3D '';
  3630. =09var image =3D this=2Einline=2EclockImage;=20
  3631. =09if (aRisk !=3D null && nSeverity !=3D null)
  3632. =09{
  3633. =09=09var riskCategory =3D aRisk[1];
  3634. =09=09var riskName=09 =3D aRisk[2];
  3635. =09=09var bgColor=09=09 =3D this=2Einline=2Ecolor=2Ebackground[nSeverity];=
  3636.  
  3637. =09=09var borderColor=09 =3D this=2Einline=2Ecolor=2Eborder[nSeverity];
  3638. =09=09image=09=09=09 =3D this=2Einline=2Eimage[nSeverity];
  3639.  
  3640. =09=09var blUrl;
  3641. =09=09if (blShortUrl)
  3642. =09=09{
  3643. =09=09=09var aRiskName =3D riskName=2Esplit(':');
  3644. =09=09=09var sUrl =3D searchshield=2EcheckUrl(aRiskName[1]);
  3645.  
  3646. =09=09=09blUrl =3D {};
  3647. =09=09=09blUrl=2EriskNameLabel =3D aRiskName[0] + ': ';
  3648. =09=09=09blUrl=2EriskCategory =3D riskCategory;
  3649. =09=09=09blUrl=2EbgColor =3D bgColor;
  3650. =09=09=09blUrl=2EborderColor =3D borderColor;
  3651. =09=09=09blUrl=2EsUrl =3D sUrl;
  3652. =09=09}
  3653. =09=09else
  3654. =09=09{
  3655. =09=09=09html =3D avglsinlineflyover=2Ebuild(riskCategory, riskName, bgCol=
  3656. or, borderColor);
  3657. =09=09}
  3658. =09}
  3659.  
  3660. =09doc =3D anchor=2EownerDocument;
  3661.  
  3662. =09var img=09=09 =3D doc=2EcreateElement("img");
  3663. =09img=2Esrc=09=09 =3D image;
  3664. =09img=2EsetAttribute("id","avg=5Fls=5Fimage");
  3665. =09img=2Estyle=2Ewidth =3D "12px";
  3666. =09img=2Estyle=2Eheight =3D "12px";
  3667. =09img=2Estyle=2Eborder =3D "none";
  3668. =09img=2Estyle=2Epadding =3D "0 3px";
  3669. =09img=2Estyle=2Emargin =3D "0";
  3670. =09
  3671. =09if ((html && html=2Elength > 0) || (blUrl !=3D undefined))
  3672. =09{
  3673. =09=09img=2EsetAttribute("title", "");
  3674. =09=09img=2EattachEvent("onmouseover", function(e){avglsinlineflyover=2Epo=
  3675. pup(e, html, nSeverity, blUrl)});
  3676. =09=09img=2EattachEvent("onmouseout", function(e){avglsinlineflyover=2Ehid=
  3677. e(e)});
  3678. =09}
  3679.  
  3680. =09// create the link element=20
  3681. =09var newAnchor =3D doc=2EcreateElement("A");
  3682. =09newAnchor=2EsetAttribute("id", "avg=5Fls=5Fanch");
  3683. =09newAnchor=2Estyle=2Edisplay =3D "inline-block";
  3684. =09newAnchor=2Estyle=2Ebackground =3D "none repeat scroll 0 0 transparent"=
  3685. ;
  3686. =09
  3687. =09newAnchor=2EappendChild(img);
  3688. =09img =3D null;
  3689.  
  3690. =09// insert the node as either a sibling or a child
  3691. =09if (insertNode !=3D null)
  3692. =09=09anchor=2EparentNode=2EinsertBefore(newAnchor, insertNode);
  3693. =09else
  3694. =09=09anchor=2EparentNode=2EappendChild(newAnchor);=09
  3695. =09=09
  3696. =09return newAnchor;=09=09
  3697.  
  3698. };
  3699. ////////////////    SEARCH ENGINE    ////////////////
  3700.  
  3701.  
  3702. ///////////////    GOOGLE SEARCH ENGINE    ///////////////
  3703. searchshield=2EGoogleSearchEngine =3D function(search)
  3704. {
  3705. =09searchshield=2ESearchEngine=2Ecall(this, search);
  3706. =09this=2EonlyPrimaries =3D false;
  3707. };
  3708. searchshield=2EGoogleSearchEngine=2Eprototype =3D new searchshield=2ESearc=
  3709. hEngine();
  3710. searchshield=2EGoogleSearchEngine=2Eprototype=2Econstructor =3D searchshie=
  3711. ld=2EGoogleSearchEngine;
  3712. searchshield=2EGoogleSearchEngine=2Eprototype=2Ename =3D "google";=09// th=
  3713. e name by which the search engine is known (always lowercase)
  3714. searchshield=2EGoogleSearchEngine=2Eprototype=2EvalidSearch =3D function(h=
  3715. ref) {
  3716.  
  3717. =09var uri;
  3718. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  3719. search)
  3720. =09=09uri =3D searchshield=2EparseLink(href);
  3721. =09else
  3722. =09=09uri =3D this=2Esearch=2Euri;
  3723.  
  3724. =09if(!uri || !uri=2Ehost)
  3725. =09=09return false;
  3726.  
  3727. =09var hostMatch=09=3D false;
  3728. =09var domain=09=09=3D uri=2Ehost;
  3729. =09
  3730. =09// re stitch the uri path and query elements to
  3731. =09// use existing logic
  3732. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  3733.  
  3734. =09// For Google the host must match:
  3735. =09//=09=2Egoogle=2Ecom=09=09OR
  3736. =09//=09=2Egoogle=2Ecom=2EXX=09OR
  3737. =09//=09=2Egoogle=2Eco=2EXX=09OR
  3738. =09//=09=2Egoogle=2EXX=09=09where XX is a country code
  3739. =09//=09one special case is www=2Egooge=2Eoff=2Eai (Anguilla)
  3740. =09//=09Where any subdomain can come before the top level domain
  3741. =09if ( /(\=2E(=3F:google|mozilla)\=2E(=3F:com|(=3F:co|off)\=2E[a-z]{2}|[a=
  3742. -z]{2}))/i=2Etest(domain) )
  3743. =09{
  3744. =09=09//check the path
  3745. =09=09if ((path=2EindexOf("search=3F") =3D=3D 0) ||
  3746. =09=09=09(path=2EindexOf("sponsoredlinks=3F") =3D=3D 0) ||
  3747. =09=09=09(path=2EindexOf("webhp=3F") =3D=3D 0) ||
  3748. =09=09=09(path=2EindexOf("webhp#") =3D=3D 0) ||
  3749. =09=09=09(path=2EindexOf("#q=3D") =3D=3D 0) ||
  3750. =09=09=09(path=2EindexOf("#hl=3D") =3D=3D 0) ||
  3751. =09=09=09(path=2EindexOf("#sclient=3D") =3D=3D 0))
  3752. =09=09{
  3753. =09=09=09return true;
  3754. =09=09}
  3755. =09}
  3756.  
  3757. =09return false;
  3758. };
  3759. searchshield=2EGoogleSearchEngine=2Eprototype=2EincludeLink =3D function(t=
  3760. ag)
  3761. {
  3762. =09var href =3D "";
  3763. =09var outHref =3D false;
  3764. =09var findStr =3D "";
  3765.  
  3766. =09// check for interstitials
  3767. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  3768. t))
  3769. =09{
  3770. =09=09findStr =3D this=2Esearch=2Euri=2Ehost + "/interstitial=3F";
  3771. =09=09if (tag=2EclassName =3D=3D "l" && tag=2Ehref)
  3772. =09=09{
  3773. =09=09=09if (tag=2Ehref=2EindexOf(findStr) !=3D -1)
  3774. =09=09=09{
  3775. =09=09=09=09findStr =3D "=3Furl=3D";
  3776. =09=09=09=09var pos =3D tag=2Ehref=2EindexOf(findStr);
  3777. =09=09=09=09if (pos !=3D=3D -1)
  3778. =09=09=09=09{
  3779. =09=09=09=09=09pos +=3D 5;
  3780. =09=09=09=09=09outHref =3D tag=2Ehref=2Esubstring(pos);
  3781. =09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls)=
  3782. )
  3783. =09=09=09=09=09=09return false;
  3784. =09=09=09=09=09=09=09
  3785. =09=09=09=09=09return outHref;
  3786. =09=09=09=09}
  3787. =09=09=09}
  3788. =09=09}
  3789.  
  3790. =09=09if (tag=2EclassName =3D=3D "sla")
  3791. =09=09{
  3792. =09=09=09findStr =3D "/url=3Fq=3D";
  3793. =09=09=09urlPos =3D tag=2Ehref=2EindexOf(findStr);
  3794. =09=09=09if (urlPos !=3D -1)
  3795. =09=09=09{
  3796. =09=09=09=09urlPos +=3D 7;
  3797. =09=09=09=09outHref =3D tag=2Ehref=2Esubstring(urlPos);
  3798. =09=09=09=09return outHref;
  3799. =09=09=09}
  3800. =09=09}
  3801. =09=09
  3802. =09=09// if an ad id
  3803. =09=09if ((tag=2Eid=2EindexOf("pa") =3D=3D 0) || (tag=2Eid=2EindexOf("an")=
  3804.  =3D=3D 0) ||
  3805. =09=09=09(tag=2EclassName =3D=3D "resultLink"))
  3806. =09=09{
  3807. =09=09=09var urlPos =3D -1;=09
  3808.  
  3809. =09=09=09// ads now need unescaping
  3810. =09=09=09href =3D unescape(tag=2Ehref);
  3811.  
  3812. =09=09=09findStr=3D "/url=3Fsa=3D";
  3813. =09=09=09if (href=2EindexOf(findStr) !=3D -1)
  3814. =09=09=09{=09// first kind, locate real url
  3815. =09=09=09=09findStr=3D "&q=3Dhttp";
  3816. =09=09=09=09urlPos =3D href=2EindexOf(findStr);
  3817. =09=09=09=09if (urlPos !=3D -1)
  3818. =09=09=09=09=09urlPos +=3D 3;=09// puts it on the http
  3819. =09=09=09}
  3820. =09=09=09if (urlPos =3D=3D -1)
  3821. =09=09=09{
  3822. =09=09=09=09findStr =3D "/pagead/iclk=3Fsa=3D";
  3823. =09=09=09=09if (href=2EindexOf(findStr) !=3D -1)
  3824. =09=09=09=09{=09// second kind, locate real url
  3825. =09=09=09=09=09findStr =3D "&adurl=3Dhttp";
  3826. =09=09=09=09=09urlPos=09=3D href=2EindexOf(findStr);
  3827. =09=09=09=09=09if (urlPos !=3D -1)
  3828. =09=09=09=09=09=09urlPos +=3D 7; // puts it on the http
  3829. =09=09=09=09}
  3830. =09=09=09}
  3831. =09=09=09if (urlPos =3D=3D -1)
  3832. =09=09=09{
  3833. =09=09=09=09if (href=2EindexOf("/aclk=3Fsa=3D") !=3D -1)
  3834. =09=09=09=09{=09// third kind
  3835. =09=09=09=09=09urlPos =3D href=2EindexOf("&q=3Dhttp");
  3836. =09=09=09=09=09if (urlPos !=3D -1)
  3837. =09=09=09=09=09=09urlPos +=3D 3; // puts it on the http
  3838. =09=09=09=09=09else
  3839. =09=09=09=09=09{
  3840. =09=09=09=09=09=09urlPos  =3D href=2EindexOf("&lp=3Dhttp");
  3841. =09=09=09=09=09=09if (urlPos !=3D -1)
  3842. =09=09=09=09=09=09=09urlPos +=3D 4;
  3843. =09=09=09=09=09=09else
  3844. =09=09=09=09=09=09{
  3845. =09=09=09=09=09=09=09findStr =3D "&adurl=3Dhttp";
  3846. =09=09=09=09=09=09=09urlPos=09=3D href=2EindexOf(findStr);
  3847. =09=09=09=09=09=09=09if (urlPos !=3D -1)
  3848. =09=09=09=09=09=09=09=09urlPos +=3D 7; // puts it on the http
  3849. =09=09=09=09=09=09}
  3850. =09=09=09=09=09=09
  3851. =09=09=09=09=09}
  3852. =09=09=09=09}
  3853. =09=09=09}
  3854. =09=09=09if (urlPos =3D=3D -1)
  3855. =09=09=09{
  3856. =09=09=09=09if (href=2EindexOf("/url=3Fcad=3D") !=3D -1)
  3857. =09=09=09=09{=09// fourth kind
  3858. =09=09=09=09=09urlPos =3D href=2EindexOf("&q=3Dhttp");
  3859. =09=09=09=09=09if (urlPos !=3D -1)
  3860. =09=09=09=09=09=09urlPos +=3D 3; // puts it on the http
  3861. =09=09=09=09}
  3862. =09=09=09}
  3863. =09=09=09if (urlPos !=3D -1)
  3864. =09=09=09{
  3865. =09=09=09=09outHref =3D href=2Esubstring(urlPos);
  3866.  
  3867. =09=09=09=09// the destination url is in the href string of this redirecto=
  3868. r
  3869. =09=09=09=09if (outHref=2EindexOf('xg4ken=2Ecom') > -1)
  3870. =09=09=09=09{
  3871. =09=09=09=09=09urlPos =3D (unescape(outHref))=2EindexOf('url[]=3D') + 6;
  3872. =09=09=09=09=09var destUrl =3D (unescape(outHref))=2Esubstring(urlPos);
  3873. =09=09=09=09=09if (searchshield=2EFilterUrl(destUrl, this=2Efilter=5Furls)=
  3874. )
  3875. =09=09=09=09=09{
  3876. =09=09=09=09=09=09var destUrl =3D searchshield=2EgetHrefFromCiteElement(ta=
  3877. g);
  3878. =09=09=09=09=09=09if (destUrl)
  3879. =09=09=09=09=09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveH=
  3880. tmlTags(destUrl));
  3881.  
  3882. =09=09=09=09=09=09return false;
  3883. =09=09=09=09=09}
  3884.  
  3885. =09=09=09=09=09return destUrl;
  3886. =09=09=09=09}
  3887.  
  3888. =09=09=09=09// filtered url but can get destination from href string
  3889. =09=09=09=09if (outHref=2EindexOf('altfarm=2Emediaplex=2Ecom') > -1)
  3890. =09=09=09=09{
  3891. =09=09=09=09=09var tmpoh =3D unescape(outHref);
  3892. =09=09=09=09=09var destUrl =3D tmpoh=2Esubstring(tmpoh=2EindexOf('DURL=3D'=
  3893. )+5);
  3894. =09=09=09=09=09if (destUrl !=3D null)
  3895. =09=09=09=09=09{
  3896. =09=09=09=09=09=09var destUrl =3D unescape(destUrl);
  3897. =09=09=09=09=09=09return destUrl;
  3898. =09=09=09=09=09}
  3899. =09=09=09=09}
  3900.  
  3901. =09=09=09=09// extract any fragment text, shouldn't be unescaped
  3902. =09=09=09=09var pound =3D outHref=2EindexOf("#");=09
  3903. =09=09=09=09if (pound !=3D -1)
  3904. =09=09=09=09{
  3905. =09=09=09=09=09var fragment =3D outHref=2Esubstring(pound);
  3906. =09=09=09=09=09outHref =3D outHref=2Esubstring(0, pound);
  3907. =09=09=09=09=09outHref =3D unescape(outHref);
  3908. =09=09=09=09=09outHref +=3D fragment;
  3909. =09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls)=
  3910. )
  3911. =09=09=09=09=09=09return false;
  3912.  
  3913. =09=09=09=09=09return outHref;
  3914. =09=09=09=09}
  3915.  
  3916. =09=09=09=09outHref =3D unescape(outHref);
  3917. =09=09=09=09if (outHref=2EindexOf("=3F") =3D=3D -1)
  3918. =09=09=09=09{
  3919. =09=09=09=09=09var ampPos =3D outHref=2EindexOf("&");
  3920. =09=09=09=09=09if (ampPos !=3D -1)
  3921. =09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, ampPos);
  3922. =09=09=09=09}
  3923. =09=09=09=09
  3924. =09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
  3925. =09=09=09=09{
  3926. =09=09=09=09=09var destUrl =3D searchshield=2EgetHrefFromCiteElement(tag);=
  3927.  
  3928. =09=09=09=09=09if (destUrl)
  3929. =09=09=09=09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveHtml=
  3930. Tags(destUrl));
  3931.  
  3932. =09=09=09=09=09return false;
  3933. =09=09=09=09}
  3934.  
  3935. =09=09=09=09return outHref;
  3936. =09=09=09}
  3937. =09=09}
  3938.  
  3939. =09=09// recommended link - use following to see one
  3940. =09=09// http://www=2Egoogle=2Ecz/search=3Fhl=3Dcs&q=3Dwarey&btnG=3DHledat=
  3941. &lr=3Dlang=5Fcs
  3942. =09=09// elem parent class =3D r
  3943. =09=09// href must contain - url=3F and q=3Dhttp
  3944. =09=09var parentNode =3D tag=2EparentNode;
  3945. =09=09if (parentNode && (parentNode=2EclassName=2EtoLowerCase() =3D=3D "r"=
  3946. ))
  3947. =09=09{
  3948. =09=09=09href =3D tag=2Ehref;
  3949. =09=09=09if (href && (href=2EindexOf("/url=3F") !=3D -1))
  3950. =09=09=09{
  3951. =09=09=09=09// locate the real url
  3952. =09=09=09=09var urlPos =3D href=2EindexOf("q=3Dhttp");
  3953. =09=09=09=09if (urlPos !=3D -1)
  3954. =09=09=09=09{
  3955. =09=09=09=09=09urlPos +=3D 2;
  3956. =09=09=09=09=09outHref =3D href=2Esubstring(urlPos);
  3957.  
  3958. =09=09=09=09=09// include entire param up to '&'
  3959. =09=09=09=09=09var ampPos =3D outHref=2EindexOf("&");
  3960. =09=09=09=09=09if (ampPos !=3D -1)
  3961. =09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, ampPos);
  3962.  
  3963. =09=09=09=09=09return outHref;
  3964. =09=09=09=09}
  3965. =09=09=09}
  3966. =09=09}
  3967. =09}
  3968. =09// no link to self
  3969. =09else if (tag=2EclassName && (tag=2EclassName=2EcharAt(0) =3D=3D "l" || =
  3970. tag=2EclassName =3D=3D "sla"))
  3971. =09{
  3972. =09=09// check for any images on the link
  3973. =09=09if (0 =3D=3D=3D tag=2EgetElementsByTagName("IMG")=2Elength)
  3974. =09=09=09return tag=2Ehref;
  3975. =09}
  3976. =09// special case for ie6 results
  3977. =09else if (searchshield=2EdocMode =3D=3D 6 || searchshield=2EdocMode =3D=3D=
  3978.  7)
  3979. =09{
  3980. =09=09var parentNodeClass =3D tag=2EparentNode =3F tag=2EparentNode=2Eclas=
  3981. sName : '';
  3982. =09=09if ((tag=2EclassName =3D=3D '') && (parentNodeClass =3D=3D 'r'))
  3983. =09=09{
  3984. =09=09=09return tag=2Ehref;
  3985. =09=09}
  3986. =09}
  3987.  
  3988. =09// else nothing
  3989. =09return false;
  3990. };
  3991. ///////////////    GOOGLE    ///////////////
  3992.  
  3993.  
  3994. ///////////////    AVG GOOGLE SEARCH ENGINE    ///////////////
  3995. searchshield=2EAVGGoogleSearchEngine =3D function(search)
  3996. {
  3997. =09searchshield=2ESearchEngine=2Ecall(this, search);
  3998. =09this=2EonlyPrimaries =3D false;
  3999. };
  4000. searchshield=2EAVGGoogleSearchEngine=2Eprototype =3D new searchshield=2ESe=
  4001. archEngine();
  4002. searchshield=2EAVGGoogleSearchEngine=2Eprototype=2Econstructor =3D searchs=
  4003. hield=2EAVGGoogleSearchEngine;
  4004. searchshield=2EAVGGoogleSearchEngine=2Eprototype=2Ename =3D "avggoogle";=09=
  4005. // the name by which the search engine is known (always lowercase)
  4006. searchshield=2EAVGGoogleSearchEngine=2Eprototype=2EvalidSearch =3D functio=
  4007. n(href) {
  4008.  
  4009. =09var uri;
  4010. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  4011. search)
  4012. =09=09uri =3D searchshield=2EparseLink(href);
  4013. =09else
  4014. =09=09uri =3D this=2Esearch=2Euri;
  4015.  
  4016. =09if(!uri || !uri=2Ehost)
  4017. =09=09return false;
  4018.  
  4019. =09var domain=09=09=3D uri=2Ehost;
  4020. =09
  4021. =09// re stitch the uri path and query elements to
  4022. =09// use existing logic
  4023. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  4024.  
  4025. =09if  (domain=2EindexOf("search=2Eavg=2Ecom") > -1)
  4026. =09{   // ads link back to google
  4027. =09=09return true;
  4028. =09}
  4029. =09
  4030. =09return false;
  4031. };
  4032. searchshield=2EAVGGoogleSearchEngine=2Eprototype=2EincludeLink =3D functio=
  4033. n(tag)
  4034. {
  4035. =09var outHref =3D false;
  4036. =09var findStr =3D "";
  4037.  
  4038. =09// check for interstitials
  4039. =09if (searchshield=2EDoesURLContain(tag=2Ehref, "google=2Ecom"))
  4040. =09{
  4041. =09=09// link back to self - DIV elem GrandParent class of res1 or res3 is=
  4042.  Sponsored Link=20
  4043. =09=09var parentNode =3D tag=2EparentNode;
  4044. =09=09if (parentNode)
  4045. =09=09{
  4046. =09=09=09var grandParentNode =3D tag=2EparentNode=2EparentNode;
  4047. =09=09=09if (grandParentNode)
  4048. =09=09=09{
  4049. =09=09=09=09if ((grandParentNode=2EtagName =3D=3D "DIV") &&=20
  4050. =09=09=09=09=09((grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "res1"=
  4051. ) ||
  4052. =09=09=09=09=09(grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "res3")=
  4053. ))
  4054. =09=09=09=09{
  4055. =09=09=09=09=09var urlPos =3D -1;=09
  4056.  
  4057. =09=09=09=09=09// ads now need unescaping
  4058. =09=09=09=09=09href =3D unescape(tag=2Ehref);
  4059.  
  4060. =09=09=09=09=09if (urlPos =3D=3D -1)
  4061. =09=09=09=09=09{
  4062. =09=09=09=09=09=09if (href=2EindexOf("/aclk=3Fsa=3D") !=3D -1)
  4063. =09=09=09=09=09=09{=09
  4064. =09=09=09=09=09=09=09findStr =3D "&adurl=3Dhttp";
  4065. =09=09=09=09=09=09=09urlPos=09=3D href=2EindexOf(findStr);
  4066. =09=09=09=09=09=09=09if (urlPos !=3D -1)
  4067. =09=09=09=09=09=09=09=09urlPos +=3D 7; // puts it on the http
  4068. =09=09=09=09=09=09=09=09
  4069. =09=09=09=09=09=09}
  4070. =09=09=09=09=09}
  4071. =09=09=09=09=09if (urlPos !=3D -1)
  4072. =09=09=09=09=09{
  4073. =09=09=09=09=09=09outHref =3D href=2Esubstring(urlPos);
  4074.  
  4075. =09=09=09=09=09=09// the destination url is in the href string of this red=
  4076. irector
  4077. =09=09=09=09=09=09if (outHref=2EindexOf('xg4ken=2Ecom') > -1)
  4078. =09=09=09=09=09=09{
  4079. =09=09=09=09=09=09=09urlPos =3D (unescape(outHref))=2EindexOf('url[]=3D') =
  4080. + 6;
  4081. =09=09=09=09=09=09=09var destUrl =3D (unescape(outHref))=2Esubstring(urlPo=
  4082. s);
  4083. =09=09=09=09=09=09=09if (searchshield=2EFilterUrl(destUrl, this=2Efilter=5F=
  4084. urls))
  4085. =09=09=09=09=09=09=09{
  4086. =09=09=09=09=09=09=09=09var destUrl =3D searchshield=2EgetHrefFromCiteElem=
  4087. ent(tag);
  4088. =09=09=09=09=09=09=09=09if (destUrl)
  4089. =09=09=09=09=09=09=09=09=09return searchshield=2EcheckUrl(searchshield=2Er=
  4090. emoveHtmlTags(destUrl));
  4091.  
  4092. =09=09=09=09=09=09=09=09return false;
  4093. =09=09=09=09=09=09=09}
  4094.  
  4095. =09=09=09=09=09=09=09return destUrl;
  4096. =09=09=09=09=09=09}
  4097.  
  4098. =09=09=09=09=09=09// filtered url but can get destination from href string=
  4099.  
  4100. =09=09=09=09=09=09if (outHref=2EindexOf('altfarm=2Emediaplex=2Ecom') > -1)=
  4101.  
  4102. =09=09=09=09=09=09{
  4103. =09=09=09=09=09=09=09var tmpoh =3D unescape(outHref);
  4104. =09=09=09=09=09=09=09var destUrl =3D tmpoh=2Esubstring(tmpoh=2EindexOf('DU=
  4105. RL=3D')+5);
  4106. =09=09=09=09=09=09=09if (destUrl !=3D null)
  4107. =09=09=09=09=09=09=09{
  4108. =09=09=09=09=09=09=09=09var destUrl =3D unescape(destUrl);
  4109. =09=09=09=09=09=09=09=09return destUrl;
  4110. =09=09=09=09=09=09=09}
  4111. =09=09=09=09=09=09}
  4112. =09=09=09=09
  4113. =09=09=09=09=09=09// extract any fragment text, shouldn't be unescaped
  4114. =09=09=09=09=09=09var pound =3D outHref=2EindexOf("#");=09
  4115. =09=09=09=09=09=09if (pound !=3D -1)
  4116. =09=09=09=09=09=09{
  4117. =09=09=09=09=09=09=09var fragment =3D outHref=2Esubstring(pound);
  4118. =09=09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, pound);
  4119. =09=09=09=09=09=09=09outHref =3D unescape(outHref);
  4120. =09=09=09=09=09=09=09outHref +=3D fragment;
  4121. =09=09=09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5F=
  4122. urls))
  4123. =09=09=09=09=09=09=09=09return false;
  4124.  
  4125. =09=09=09=09=09=09=09return outHref;
  4126. =09=09=09=09=09=09}
  4127.  
  4128. =09=09=09=09=09=09outHref =3D unescape(outHref);
  4129. =09=09=09=09=09=09if (outHref=2EindexOf("=3F") =3D=3D -1)
  4130. =09=09=09=09=09=09{
  4131. =09=09=09=09=09=09=09var ampPos =3D outHref=2EindexOf("&");
  4132. =09=09=09=09=09=09=09if (ampPos !=3D -1)
  4133. =09=09=09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, ampPos);
  4134. =09=09=09=09=09=09}
  4135. =09=09=09=09
  4136. =09=09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Fur=
  4137. ls))
  4138. =09=09=09=09=09=09{
  4139. =09=09=09=09=09=09=09var destUrl =3D searchshield=2EgetHrefFromCiteElement=
  4140. (tag);
  4141. =09=09=09=09=09=09=09if (destUrl)
  4142. =09=09=09=09=09=09=09=09return searchshield=2EcheckUrl(searchshield=2Eremo=
  4143. veHtmlTags(destUrl));
  4144.  
  4145. =09=09=09=09=09=09=09return false;
  4146. =09=09=09=09=09=09}
  4147.  
  4148. =09=09=09=09=09=09return outHref;
  4149. =09=09=09=09=09}
  4150. =09=09=09=09}
  4151. =09=09=09}
  4152. =09=09}
  4153. =09}=09
  4154. =09=09
  4155. =09// no link to self
  4156. =09else
  4157. =09{
  4158. =09=09var parentNode =3D tag=2EparentNode;
  4159. =09=09if (parentNode)
  4160. =09=09{
  4161. =09=09=09var grandParentNode =3D tag=2EparentNode=2EparentNode;
  4162. =09=09=09if (grandParentNode)
  4163. =09=09=09{
  4164. =09=09=09=09if ((grandParentNode=2EtagName =3D=3D "DIV") &&=20
  4165. =09=09=09=09=09(grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "res2")=
  4166. )
  4167. =09=09=09=09{
  4168. =09=09=09=09=09// check for any images on the link
  4169. =09=09=09=09=09if (0 =3D=3D=3D tag=2EgetElementsByTagName("IMG")=2Elength)=
  4170.  
  4171. =09=09=09=09=09=09return tag=2Ehref;
  4172. =09=09=09=09}
  4173. =09=09=09}
  4174. =09=09}
  4175. =09}
  4176.  
  4177. =09// else nothing
  4178. =09return false;
  4179. }
  4180. ///////////////    AVG GOOGLE    ///////////////
  4181.  
  4182. ///////////////    YAHOO SEARCH ENGINE    ///////////////
  4183. searchshield=2EYahooSearchEngine =3D function(search)
  4184. {
  4185. =09searchshield=2ESearchEngine=2Ecall(this, search);
  4186. =09this=2EshowCleanVerdicts =3D false;
  4187. };
  4188. searchshield=2EYahooSearchEngine=2Eprototype =3D new searchshield=2ESearch=
  4189. Engine();
  4190. searchshield=2EYahooSearchEngine=2Eprototype=2Econstructor =3D searchshiel=
  4191. d=2EYahooSearchEngine;
  4192. searchshield=2EYahooSearchEngine=2Eprototype=2Ename =3D "yahoo";
  4193. searchshield=2EYahooSearchEngine=2Eprototype=2EvalidSearch =3D function(hr=
  4194. ef)
  4195. {
  4196. =09var uri;
  4197. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  4198. search)
  4199. =09=09uri =3D searchshield=2EparseLink(href);
  4200. =09else
  4201. =09=09uri =3D this=2Esearch=2Euri;
  4202.  
  4203. =09if(!uri || !uri=2Ehost)
  4204. =09=09return false;
  4205.  
  4206. =09var domain =3D uri=2Ehost;
  4207.  
  4208. =09// re stitch the uri path and query elements to
  4209. =09// use existing logic
  4210. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  4211.  
  4212. =09// For Yahoo the host must match:
  4213. =09//=09search=2Eyahoo=2Ecom=09=09OR
  4214. =09//=09xx=2Esearch=2Eyahoo=2Ecom where xx is the country code OR
  4215. =09//=09search=2Eyahoo=2Eco=2Ejp OR
  4216. =09// for Yahoo China: one=2Ecn=2Eyahoo=2Ecom, search=2Ecn=2Eyahoo=2Ecom o=
  4217. r www=2Eyahoo=2Ecn
  4218. =09if ((domain=2Ematch(/search\=2Eyahoo\=2Eco(=3F:m|\=2Ejp)/i) ||
  4219. =09=09domain=2Ematch(/(=3F:search|one)\=2Ecn\=2Eyahoo\=2Ecom/i) ||
  4220. =09=09domain=2Ematch(/www\=2Eyahoo\=2Ecn/i)) &&=20
  4221. =09=09path=2Ematch(/^(=3F:search[;=3F]|s\=3F)/i))
  4222. =09{
  4223. =09=09return true;
  4224. =09}
  4225.  
  4226. =09return false;
  4227. };
  4228. searchshield=2EYahooSearchEngine=2Eprototype=2EincludeLink =3D function(ta=
  4229. g)
  4230. {
  4231. =09var href=09=09=3D "";
  4232. =09var outHref=09=09=3D "";
  4233. =09var findStr=09=09=3D "";
  4234.  
  4235. =09// yahoo likes to encode the url
  4236. =09href =3D unescape(tag=2Ehref);
  4237.  
  4238. =09if ((tag=2EclassName=2EindexOf("yschttl") !=3D -1) ||=20
  4239. =09=09(tag=2EclassName=2EindexOf("spt") !=3D -1))
  4240. =09{
  4241. =09=09var da =3D href=2EindexOf("**");
  4242. =09=09var ad =3D href=2EindexOf("*-");
  4243. =09=09if (da !=3D -1)
  4244. =09=09=09outHref =3D href=2Esubstring(da+2);
  4245. =09=09else if (ad !=3D -1)
  4246. =09=09=09outHref =3D href=2Esubstring(ad+2);
  4247. =09=09else
  4248. =09=09=09outHref =3D href ;
  4249. =09=09=09
  4250. =09=09if (outHref=2EtoLowerCase()=2EindexOf("overture=2E") !=3D=3D -1)
  4251. =09=09=09return false;
  4252. =09}
  4253. =09else if ((tag=2EtagName)=09=09=09&&=20
  4254. =09=09=09 (tag=2EtagName =3D=3D=3D "A") =09&&=20
  4255. =09=09=09 (!tag=2EclassName))
  4256. =09{
  4257. =09=09var tagParent =3D tag=2EparentNode;
  4258. =09=09
  4259. =09=09// if anchor without className then search parentNodes
  4260. =09=09if ((tagParent) &&
  4261. =09=09=09(tagParent=2EtagName !=3D=3D "EM") &&
  4262. =09=09=09(searchshield=2EgetParentNodeByClassName("yst-web", tag, 4)))
  4263. =09=09{
  4264. =09=09=09// China Yahoo support
  4265. =09=09=09outHref =3D href;
  4266. =09=09}
  4267. =09=09
  4268. =09=09else if ((tagParent) &&
  4269. =09=09=09=09(tagParent=2EtagName =3D=3D=3D "H3") &&
  4270. =09=09=09=09(!!searchshield=2EgetParentNodeById("WS2m",tag, 5)))
  4271. =09=09{
  4272. =09=09=09// Japan Yahoo support
  4273. =09=09=09var da =3D href=2EindexOf("**");
  4274. =09=09=09if (da =3D=3D -1)
  4275. =09=09=09=09outHref =3D href;
  4276. =09=09=09else
  4277. =09=09=09=09outHref =3D href=2Esubstring(da+2);
  4278. =09=09}
  4279.  
  4280. =09=09else if ((tagParent) &&
  4281. =09=09=09=09(tagParent=2EclassName !=3D=3D "c") &&
  4282. =09=09=09=09(tagParent=2EparentNode=2Eid !=3D=3D "fpn") &&
  4283. =09=09=09=09(!!searchshield=2EgetParentNodeByClassName("ymc", tag, 7)))
  4284. =09=09{
  4285. =09=09=09// Korea Yahoo support - when not caught by yschttl
  4286. =09=09=09var da =3D href=2EindexOf("**");
  4287. =09=09=09if (da !=3D=3D -1)
  4288. =09=09=09=09outHref =3D href=2Esubstring(da+2);
  4289. =09=09}
  4290. =09}
  4291. =09else if (!this=2EonlyPrimaries)
  4292. =09{
  4293. =09=09findStr =3D "&yargs=3D";
  4294. =09=09var yargs =3D href=2EindexOf(findStr);
  4295. =09=09if (yargs !=3D -1)
  4296. =09=09{
  4297. =09=09=09outHref =3D href=2Esubstring(yargs+findStr=2Elength);
  4298. =09=09=09// check for prefix
  4299. =09=09=09if (outHref=2EindexOf("://") =3D=3D -1)
  4300. =09=09=09=09outHref =3D "http://" + outHref;
  4301.  
  4302. =09=09=09// if inside an <I>, probably a paypal link, don't include
  4303. =09=09=09if (tag=2EparentNode && (tag=2EparentNode=2EtagName =3D=3D "I"))
  4304. =09=09=09=09return false;
  4305. =09=09}=20
  4306. =09}
  4307.  
  4308. =09// filter domains
  4309. =09// split the url based on '/'
  4310. =09var parts =3D !!outHref =3F outHref=2Esplit('/') : null;
  4311.  
  4312. =09// Filter out domains that match any of the search engine's names
  4313. =09if (!parts || !parts[2])
  4314. =09=09return false;
  4315. =09=09
  4316. =09var domain =3D parts[2];
  4317. =09if ((domain=2EindexOf("rdrjp=2Eyahoo=2Ecom") !=3D -1)=09||
  4318. =09=09(domain=2EindexOf("rdrkrs=2Eyahoo=2Ecom") !=3D -1)=09||
  4319. =09=09(domain=2EindexOf("rdrtpe=2Eyahoo=2Ecom") !=3D -1)=09||
  4320. =09=09(domain=2EindexOf("rdrird=2Eyahoo=2Ecom") !=3D -1)=09||
  4321. =09=09(domain=2EindexOf("rdrhk2=2Eyahoo=2Ecom") !=3D -1)=09||
  4322. =09=09(domain=2EindexOf("rdrsg1=2Eyahoo=2Ecom") !=3D -1)=09||
  4323. =09=09(domain=2EindexOf("rdrin2=2Eyahoo=2Ecom") !=3D -1)=09||
  4324. =09=09(domain=2EindexOf("rdre1=2Eyahoo=2Ecom") !=3D -1)=09||
  4325. =09=09(domain=2EindexOf("rdrw1=2Eyahoo=2Ecom") !=3D -1)=09=09)
  4326. =09{
  4327. =09=09return false;
  4328. =09}
  4329.  
  4330. =09// set for yahoo to get parent node for image insertion
  4331. =09var hash =3D searchshield=2EavgCallFunc(this=2Edoc, 'GetHash', outHref)=
  4332. ;
  4333. =09tag=2EsetAttribute("id", "xplid=5F" + hash);
  4334. =09return outHref;
  4335. };
  4336. ///////////////    YAHOO SEARCH ENGINE    ///////////////
  4337.  
  4338.  
  4339.  
  4340.  
  4341. ///////////////    AVG YAHOO SEARCH ENGINE    ///////////////
  4342. searchshield=2EAVGYahooSearchEngine =3D function(search)
  4343. {
  4344. =09searchshield=2ESearchEngine=2Ecall(this, search);
  4345. =09this=2EshowCleanVerdicts =3D false;
  4346. =09this=2EomitAltImage =3D true;
  4347.  
  4348. =09this=2EupdateImageStyle =3D {
  4349. =09=09verticalAlign: null
  4350. =09};
  4351. };
  4352. searchshield=2EAVGYahooSearchEngine=2Eprototype =3D new searchshield=2ESea=
  4353. rchEngine();
  4354. searchshield=2EAVGYahooSearchEngine=2Eprototype=2Econstructor =3D searchsh=
  4355. ield=2EAVGYahooSearchEngine;
  4356. searchshield=2EAVGYahooSearchEngine=2Eprototype=2Ename =3D "avgyahoo";
  4357. searchshield=2EAVGYahooSearchEngine=2Eprototype=2EvalidSearch =3D function=
  4358. (href)
  4359. {
  4360. =09var uri;
  4361. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  4362. search)
  4363. =09=09uri =3D searchshield=2EparseLink(href);
  4364. =09else
  4365. =09=09uri =3D this=2Esearch=2Euri;
  4366.  
  4367. =09if(!uri || !uri=2Ehost)
  4368. =09=09return false;
  4369. =09
  4370. =09var domain=3D uri=2Ehost;
  4371. =09//path may be 'avg/search' or 'search'
  4372. =09var pathArray =3D uri=2Epath=2Esplit("/");
  4373. =09var avg =3D pathArray[0];
  4374. =09// re stitch the uri path and query elements
  4375. =09// to use existing logic
  4376. =09var path =3D (undefined =3D=3D pathArray[1]) =3F pathArray[0] : pathArr=
  4377. ay[1];
  4378. =09=09path +=3D uri=2Edelimiter + uri=2Equery;
  4379.  
  4380. =09// For AVG Yahoo classic the host must match:
  4381. =09//=09yhs=2Esearch=2Eyahoo=2Ecom=09OR
  4382. =09//=09=2Eyhs=2Esearch=2Eyahoo=2Ecom
  4383. =09if (domain=2EindexOf("yhs=2Esearch=2Eyahoo=2Eco") !=3D -1)
  4384. =09{
  4385. =09=09if ((avg =3D=3D "avg") &&
  4386. =09=09=09((path=2EindexOf("search=3F") =3D=3D 0) ||
  4387. =09=09=09 (path=2EindexOf("search;") =3D=3D 0)))
  4388. =09=09{
  4389. =09=09=09return true;
  4390. =09=09}
  4391. =09}
  4392. =09
  4393. =09// also support new metro version which DOESN'T=20
  4394. =09// contain /avg so avg split part is path
  4395. =09// valid domains are:
  4396. =09//=09search=2Eyahoo=2Ecom,=20
  4397. =09//=09xx=2Esearch=2Eyahoo=2Ecom and
  4398. =09//=09search=2Eyahoo=2Eco=2Exx
  4399. =09if (domain=2EindexOf("search=2Eyahoo=2Eco") !=3D -1)=20
  4400. =09{
  4401. =09=09// path (split avg) must start with search and
  4402. =09=09// contain the avg toolbar parameter
  4403. =09=09if (((path=2EindexOf("search=3F") =3D=3D 0) ||
  4404. =09=09=09(path=2EindexOf("search;") =3D=3D 0)) &&
  4405. =09=09=09(path=2EindexOf("fr=3Dyhs-avg") !=3D -1))
  4406. =09=09{
  4407. =09=09=09return true;
  4408. =09=09}
  4409. =09}
  4410.  
  4411. =09return false;
  4412. };
  4413. searchshield=2EAVGYahooSearchEngine=2Eprototype=2EincludeLink =3D function=
  4414. (tag)
  4415. {
  4416. =09var href=09=09=3D "";
  4417. =09var outHref=09=09=3D "";
  4418. =09var findStr=09=09=3D "";
  4419.  
  4420. =09if (this=2Esearch=2Edoc=2Ebody=2EclassName=2EtoLowerCase() !=3D "standa=
  4421. rd")
  4422. =09{=09// handle as std Yahoo results page
  4423. =09=09return searchshield=2EYahooSearchEngine=2Eprototype=2EincludeLink(ta=
  4424. g);
  4425. =09}=09
  4426.  
  4427. =09// yahoo likes to encode the url
  4428. =09href =3D unescape(tag=2Ehref);
  4429.  
  4430. =09if (tag=2Etarget =3D=3D "=5Ftop")
  4431. =09{
  4432. =09=09var da =3D href=2EindexOf("**");
  4433. =09=09if (da !=3D -1)
  4434. =09=09=09outHref =3D href=2Esubstring(da+2);
  4435. =09=09else
  4436. =09=09=09outHref =3D href ;
  4437.  
  4438. =09=09if (outHref=2EtoLowerCase()=2EindexOf("overture=2E") !=3D=3D -1)
  4439. =09=09=09return false;
  4440. =09}
  4441. =09else if (!this=2EonlyPrimaries)
  4442. =09{
  4443. =09=09findStr =3D "&yargs=3D";
  4444. =09=09var yargs =3D href=2EindexOf(findStr);
  4445. =09=09if (yargs !=3D -1)
  4446. =09=09{
  4447. =09=09=09outHref =3D href=2Esubstring(yargs+findStr=2Elength);
  4448. =09=09=09// check for prefix
  4449. =09=09=09if (outHref=2EindexOf("://") =3D=3D -1)
  4450. =09=09=09=09outHref =3D "http://" + outHref;
  4451.  
  4452. =09=09=09// if inside an <I>, probably a paypal link, don't include
  4453. =09=09=09if (tag=2EparentNode && (tag=2EparentNode=2EtagName =3D=3D "I"))
  4454. =09=09=09=09return false;
  4455. =09=09}=20
  4456. =09}
  4457.  
  4458. =09// filter domains
  4459. =09// split the url based on '/'
  4460. =09var parts =3D outHref=2Esplit('/');
  4461.  
  4462. =09// Filter out domains that match any of the search engine's names
  4463. =09if (!parts[2])
  4464. =09=09return false;
  4465. =09=09
  4466. =09var domain =3D parts[2];
  4467. =09if ((domain=2EindexOf("rdrjp=2Eyahoo=2Ecom") !=3D -1)=09||
  4468. =09=09(domain=2EindexOf("rdrkrs=2Eyahoo=2Ecom") !=3D -1)=09||
  4469. =09=09(domain=2EindexOf("rdrtpe=2Eyahoo=2Ecom") !=3D -1)=09||
  4470. =09=09(domain=2EindexOf("rdrird=2Eyahoo=2Ecom") !=3D -1)=09||
  4471. =09=09(domain=2EindexOf("rdrhk2=2Eyahoo=2Ecom") !=3D -1)=09||
  4472. =09=09(domain=2EindexOf("rdrsg1=2Eyahoo=2Ecom") !=3D -1)=09||
  4473. =09=09(domain=2EindexOf("rdrin2=2Eyahoo=2Ecom") !=3D -1)=09||
  4474. =09=09(domain=2EindexOf("rdre1=2Eyahoo=2Ecom") !=3D -1)=09||
  4475. =09=09(domain=2EindexOf("rdrw1=2Eyahoo=2Ecom") !=3D -1)=09=09)
  4476. =09{
  4477. =09=09return false;
  4478. =09}
  4479.  
  4480. =09return outHref;
  4481. };
  4482. ///////////////    AVG YAHOO SEARCH ENGINE    ///////////////
  4483.  
  4484.  
  4485.  
  4486.  
  4487. ///////////////    MSN SEARCH ENGINE    ///////////////
  4488. searchshield=2EMSNSearchEngine =3D function(search)
  4489. {
  4490. =09searchshield=2ESearchEngine=2Ecall(this, search);
  4491. =09this=2EonlyPrimaries =3D false;
  4492. };
  4493. searchshield=2EMSNSearchEngine=2Eprototype =3D new searchshield=2ESearchEn=
  4494. gine();
  4495. searchshield=2EMSNSearchEngine=2Eprototype=2Econstructor =3D searchshield=2E=
  4496. MSNSearchEngine;
  4497. searchshield=2EMSNSearchEngine=2Eprototype=2Ename =3D "msn";
  4498. searchshield=2EMSNSearchEngine=2Eprototype=2EvalidSearch =3D function(href=
  4499. )
  4500. {
  4501. =09var uri;
  4502. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  4503. search)
  4504. =09=09uri =3D searchshield=2EparseLink(href);
  4505. =09else
  4506. =09=09uri =3D this=2Esearch=2Euri;
  4507.  
  4508. =09if(!uri || !uri=2Ehost)
  4509. =09=09return false;
  4510.  
  4511. =09var hostMatch=09=3D false;
  4512. =09var domain=09=09=3D uri=2Ehost;
  4513.  
  4514. =09// re stitch the uri path and query elements to
  4515. =09// use existing logic
  4516. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  4517.  
  4518. =09// For MSN the host must match:
  4519. =09//=09search=2Emsn=2Ecom=09=09OR
  4520. =09//=09search=2Elive=2Ecom
  4521. =09if (domain=2EindexOf("search=2Emsn=2Eco") > -1)
  4522. =09{
  4523. =09=09if (domain=2EcharAt(13) =3D=3D 'm')
  4524. =09=09=09hostMatch =3D true;
  4525. =09=09else if ((domain=2EcharAt(13) =3D=3D '=2E') && (domain=2Elength =3D=3D=
  4526.  16))
  4527. =09=09=09hostMatch =3D true;
  4528. =09}
  4529. =09else if (domain=2EindexOf("search=2Elive=2Eco") > -1)
  4530. =09{
  4531. =09=09if (domain=2EcharAt(14) =3D=3D 'm')
  4532. =09=09=09hostMatch =3D true;
  4533. =09=09else if ((domain=2EcharAt(14) =3D=3D '=2E') && (domain=2Elength =3D=3D=
  4534.  17))
  4535. =09=09=09hostMatch =3D true;
  4536. =09}
  4537. =09
  4538. =09if (hostMatch)
  4539. =09{
  4540. =09=09if (path=2EindexOf("results=2Easpx") =3D=3D 0)
  4541. =09=09=09return true;
  4542. =09}
  4543.  
  4544. =09return false;
  4545. };
  4546. searchshield=2EMSNSearchEngine=2Eprototype=2EincludeLink =3D function(tag)=
  4547.  
  4548. {
  4549. =09var outHref =3D false;
  4550. =09
  4551. =09// these don't seem common from Firefox, but they are in IE
  4552. =09if (searchshield=2EDoesURLContain(tag=2Ehref, "g=2Emsn=2Eco"))
  4553. =09{
  4554. =09=09var qPos =3D tag=2Ehref=2EindexOf("=3F");
  4555. =09=09if (qPos !=3D -1)
  4556. =09=09{
  4557. =09=09=09var postPart =3D tag=2Ehref=2Esubstring(qPos+1);
  4558. =09=09=09var dblAmp =3D postPart=2EindexOf("&&");
  4559. =09=09=09if (dblAmp !=3D -1)
  4560. =09=09=09{
  4561. =09=09=09=09outHref =3D postPart=2Esubstring(0, dblAmp);
  4562. =09=09=09=09return outHref;
  4563. =09=09=09}
  4564. =09=09}
  4565. =09}
  4566. =09else if (searchshield=2EDoesURLContain(tag=2Ehref, "r=2Emsn=2Eco"))
  4567. =09{
  4568. =09=09var element =3D tag;
  4569. =09=09var parentNode =3D tag=2EparentNode;
  4570.  
  4571. =09=09// top links - check for a CITE
  4572. =09=09var spanElements =3D element=2EgetElementsByTagName("CITE");
  4573. =09=09if ((spanElements !=3D null)=09=09=09=09&&=20
  4574. =09=09=09(spanElements=2Elength > 0))
  4575. =09=09{
  4576. =09=09=09outHref =3D spanElements[0]=2EinnerHTML;
  4577. =09=09=09// replace any nbsp's
  4578. =09=09=09outHref =3D outHref=2Ereplace("&nbsp;", " ");
  4579.  
  4580. =09=09=09// url is after the last space in the html, after the '-'
  4581. =09=09=09var space=5Fpos =3D outHref=2ElastIndexOf(" ");
  4582. =09=09=09if (space=5Fpos !=3D -1)
  4583. =09=09=09=09outHref =3D outHref=2Eslice(space=5Fpos + 1);
  4584.  
  4585. =09=09=09outHref =3D searchshield=2EcheckUrl(outHref);
  4586. =09=09=09return outHref;
  4587. =09=09}
  4588. =09=09
  4589. =09=09// side links=20
  4590. =09=09if (element=2ElastChild !=3D null)
  4591. =09=09{
  4592. =09=09=09outHref =3D element=2ElastChild=2EinnerHTML;
  4593. =09=09=09if ( outHref !=3D null)
  4594. =09=09=09{
  4595. =09=09=09=09outHref =3D searchshield=2EcheckUrl(outHref);
  4596. =09=09=09=09return outHref;
  4597. =09=09=09}
  4598. =09=09}
  4599. =09}
  4600. =09else if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2E=
  4601. host)=09=09=09=09=09||
  4602. =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Elive=2Ecom")=09=09=
  4603. =09=09=09||
  4604. =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "msn=2E")=09=09=09=09=09=
  4605. =09||
  4606. =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "msnscache=2Ecom")=09=09=
  4607. =09=09||
  4608. =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "advertising=2Emicroso=
  4609. ft=2Eco")=09||
  4610. =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "javascript:")=09=09=09=
  4611. =09||
  4612. =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "go=2Emicrosoft=2Eco")=
  4613. =09=09=09||
  4614. =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "hotmail=2Eco"))
  4615. =09{
  4616. =09=09// not a link
  4617. =09=09return false;
  4618. =09}
  4619. =09else if (tag=2Eid=2EtoLowerCase() =3D=3D "trademarks")
  4620. =09{
  4621. =09=09// don't link the trademark at the bottom of the page
  4622. =09=09return false;
  4623. =09}
  4624. =09else
  4625. =09{
  4626. =09=09// include it
  4627. =09=09return tag=2Ehref;
  4628. =09}
  4629. };
  4630. ///////////////    MSN SEARCH ENGINE    ///////////////
  4631.  
  4632.  
  4633.  
  4634.  
  4635. ///////////////    BING SEARCH ENGINE    ///////////////
  4636. searchshield=2EBingSearchEngine =3D function(search)
  4637. {
  4638. =09searchshield=2ESearchEngine=2Ecall(this, search);
  4639. };
  4640. searchshield=2EBingSearchEngine=2Eprototype =3D new searchshield=2ESearchE=
  4641. ngine();
  4642. searchshield=2EBingSearchEngine=2Eprototype=2Econstructor =3D searchshield=
  4643. =2EBingSearchEngine;
  4644. searchshield=2EBingSearchEngine=2Eprototype=2Ename =3D "bing";
  4645. searchshield=2EBingSearchEngine=2Eprototype=2EvalidSearch =3D function(hre=
  4646. f)
  4647. {
  4648. =09var uri;
  4649. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  4650. search)
  4651. =09=09uri =3D searchshield=2EparseLink(href);
  4652. =09else
  4653. =09=09uri =3D this=2Esearch=2Euri;
  4654.  
  4655. =09if(!uri || !uri=2Ehost)
  4656. =09=09return false;
  4657.  
  4658. =09var hostMatch=09=3D false;
  4659. =09var domain=09=09=3D uri=2Ehost;
  4660.  
  4661. =09// re stitch the uri path and query elements to
  4662. =09// use existing logic
  4663. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  4664. =09
  4665. =09// For bing the host must match:
  4666. =09//=09www=2Ebing=2Ecom or www=2Ebing=2Enet
  4667. =09//=09xx=2Ebing=2Ecom or xx=2Ebing=2Enet where xx is a country code
  4668. =09//=09bing=2Ecom=2Exx where xx is a country code
  4669. =09//=09bing=2Esearch=2Exxxx=2Enet where xxxx may be something like daum
  4670. =09if ((domain=2EindexOf("www=2Ebing=2Ecom") !=3D=3D -1) ||
  4671. =09=09(domain=2EindexOf("www=2Ebing=2Enet") !=3D=3D -1) ||
  4672. =09=09(domain=2EindexOf("bing=2Enet") !=3D=3D -1))
  4673. =09{
  4674. =09=09hostMatch =3D true;
  4675. =09}
  4676. =09else if ((domain=2EindexOf("bing=2Esearch=2E") !=3D=3D -1) &&=20
  4677. =09=09=09 (domain=2EindexOf("=2Enet") =3D=3D=3D (domain=2Elength-4)))=20
  4678. =09{=09//bing=2Esearch=2Exxxx=2Enet
  4679. =09=09hostMatch =3D true;
  4680. =09}
  4681. =09else
  4682. =09{=09// xx=2Ebing=2Ecom or bing=2Ecom=2Exx
  4683. =09=09var domainLen =3D domain=2Elength;
  4684. =09=09var tldPos =3D domain=2EindexOf("=2Ebing=2Ecom");
  4685. =09=09if (tldPos > -1)
  4686. =09=09{
  4687. =09=09=09if ((domainLen - tldPos) =3D=3D 9)
  4688. =09=09=09=09hostMatch =3D true;
  4689. =09=09}=09
  4690. =09}
  4691. =09
  4692. =09if (hostMatch)
  4693. =09{
  4694. =09=09var displayStyle =3D (domain =3D=3D 'bing=2Esearch=2Edaum=2Enet') =3F=
  4695.  'inline-block' : 'inline';
  4696. =09=09this=2EaddAnchorStyle =3D {
  4697. =09=09=09display: displayStyle
  4698. =09=09};
  4699. =09=09
  4700. =09=09if (path=2EindexOf("search=3F") =3D=3D 0)
  4701. =09=09=09return true;
  4702. =09}
  4703.  
  4704. =09return false;
  4705.  
  4706. };
  4707. searchshield=2EBingSearchEngine=2Eprototype=2EincludeLink =3D function(tag=
  4708. )
  4709. {
  4710. =09var outHref =3D false;
  4711.  
  4712. =09if (tag=2EtagName =3D=3D 'IMG')
  4713. =09{=09//no images=20
  4714. =09=09return false;
  4715. =09}
  4716. =09=09
  4717. =09if (tag=2Ehref=2EcharAt(0) =3D=3D '/')
  4718. =09{=09//no relative links
  4719. =09=09return false;
  4720. =09}
  4721.  
  4722. =09if (/trademarks/i=2Etest(tag=2Eid))
  4723. =09{
  4724. =09=09// don't link the trademark at the bottom of the page
  4725. =09=09return false;
  4726. =09}
  4727. =09
  4728. =09if ((tag=2EparentNode) && (/sc=5Fstc/i=2Etest(tag=2EparentNode=2Eid)))
  4729. =09{=09// don't verdict the social sites - our verdict doesn't fit
  4730. =09=09return false;
  4731. =09}
  4732. =09else if (!!searchshield=2EgetParentNodeByClassName("sw=5Ft",tag,3))
  4733. =09{=09// no links in page header
  4734. =09=09return false;
  4735. =09}
  4736. =09else if (searchshield=2EDoesURLContain(tag=2Ehref, "r=2Emsn=2Eco") ||
  4737. =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "overture=2Ecom"))
  4738. =09{=09// france has r=2Emsn=2Eco and italy has overture=2Ecom sponsored l=
  4739. inks
  4740. =09=09// with the link in CITE element
  4741. =09=09
  4742. =09=09var spanElements =3D null;
  4743. =09=09
  4744. =09=09// top links - check for a CITE
  4745. =09=09spanElements =3D tag=2EgetElementsByTagName("CITE");
  4746. =09=09if ((spanElements =3D=3D null) || (spanElements=2Elength <=3D 0))
  4747. =09=09{
  4748. =09=09=09if (tag=2EparentNode && tag=2EparentNode=2EparentNode)
  4749. =09=09=09=09spanElements =3D tag=2EparentNode=2EparentNode=2EgetElementsBy=
  4750. TagName("CITE");
  4751. =09=09}
  4752. =09=09
  4753. =09=09if ((spanElements !=3D null) && (spanElements=2Elength > 0))
  4754. =09=09{
  4755. =09=09=09outHref =3D spanElements[0]=2EinnerHTML;
  4756. =09=09=09if (outHref !=3D null)
  4757. =09=09=09{
  4758. =09=09=09=09// replace any nbsp's
  4759. =09=09=09=09outHref =3D outHref=2Ereplace("&nbsp;", " ");
  4760.  
  4761. =09=09=09=09// url is after the last space in the html, after the '-'
  4762. =09=09=09=09var space=5Fpos =3D outHref=2ElastIndexOf(" ");
  4763. =09=09=09=09if (space=5Fpos !=3D -1)
  4764. =09=09=09=09=09outHref =3D outHref=2Eslice(space=5Fpos + 1);
  4765.  
  4766. =09=09=09=09outHref =3D searchshield=2EcheckUrl(outHref);
  4767.  
  4768. =09=09=09=09// save the link
  4769. =09=09=09=09return outHref;
  4770. =09=09=09}
  4771. =09=09}
  4772. =09=09
  4773. =09=09// side links=20
  4774. =09=09if (tag=2ElastChild !=3D null)
  4775. =09=09{
  4776. =09=09=09outHref =3D tag=2ElastChild=2EinnerHTML;
  4777. =09=09=09if (outHref !=3D null)
  4778. =09=09=09{
  4779. =09=09=09=09outHref =3D searchshield=2EcheckUrl(outHref);
  4780. =09=09=09=09// save the link
  4781. =09=09=09=09return outHref;
  4782. =09=09=09}
  4783. =09=09}
  4784. =09}
  4785. =09// no sponsored links for now=20
  4786. =09else if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2E=
  4787. host)=09||
  4788. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Elive=2Ecom")=09=09=09=
  4789. =09||
  4790. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Ebing=2Ecom")=09=09=09=
  4791. =09||
  4792. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Ebing=2Enet")=09=09=09=
  4793. =09||
  4794. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Edaum=2Enet")=09=09=09=
  4795. =09||
  4796. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Egmarket=2Eco")=09=09=09=
  4797. ||
  4798. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Emultimap=2Ecom")=09=09=
  4799. =09||
  4800. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "msn=2E")=09=09=09=09=09|=
  4801. |
  4802. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "ms=2Eciao=2E")=09=09=09=09=
  4803. ||
  4804. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "ms=2Eciao-")=09=09=09=09=
  4805. ||
  4806. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "advertising=2Emicrosoft=2E=
  4807. co")=09||
  4808. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "javascript:")=09=09=09=09=
  4809. ||
  4810. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "go=2Emicrosoft=2Eco")=09=
  4811. =09=09||
  4812. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "hotmail=2Eco")=09=09=09=09=
  4813. =09||
  4814. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "cc=2Ebingj=2Ecom")=09=09=
  4815. =09=09||
  4816. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "microsofttranslator=2Eco=
  4817. m")=09||
  4818. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Eengkoo=2Ecom")=09=09=09=
  4819. =09||
  4820. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "sealinfo=2Everisign=2Eco=
  4821. m")=09=09||
  4822. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "explabs=2Ecom")=09=09=09=
  4823. =09||
  4824. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "onlinehelp=2Emicrosoft=2E=
  4825. com")=09||
  4826. =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Emyoverture"))
  4827. =09{
  4828. =09=09// not a link
  4829. =09=09return false;
  4830. =09}
  4831. =09else
  4832. =09=09return tag=2Ehref;
  4833. };
  4834. searchshield=2EBingSearchEngine=2Eprototype=2EaddImage =3D function(node, =
  4835. image, hidden)
  4836. {
  4837. =09var element=09=3D node=2Eelement;
  4838. =09var parentNode =09=3D node=2Eelement=2EparentNode;
  4839. =09var grandParentNode =3D !!parentNode =3F parentNode=2EparentNode : null=
  4840. ;
  4841.  
  4842. =09// if there are redundant links in the same grandparent then skip them
  4843. =09if (!!grandParentNode)
  4844. =09{
  4845. =09=09gpChildren =3D grandParentNode=2EchildNodes;
  4846. =09=09for (var i=3D0; i < gpChildren=2Elength; i++)
  4847. =09=09{
  4848. =09=09=09if (!!element=2Ehref && gpChildren[i]=2EtagName =3D=3D "A" && gpC=
  4849. hildren[i]=2Ehref =3D=3D element=2Ehref)
  4850. =09=09=09=09return;
  4851. =09=09}
  4852. =09}
  4853.  
  4854. =09var parent =3D searchshield=2ESearchEngine=2Eprototype=2EaddImage;
  4855. =09return parent=2Ecall(this, node, image, hidden);
  4856. };
  4857. ///////////////    BING SEARCH ENGINE    ///////////////
  4858.  
  4859.  
  4860.  
  4861.  
  4862. ///////////////    BAIDU SEARCH ENGINE    ///////////////
  4863. searchshield=2EBaiduSearchEngine =3D function(search)
  4864. {
  4865. =09searchshield=2ESearchEngine=2Ecall(this, search);
  4866.  
  4867. =09this=2EupdateImageStyle =3D {
  4868. =09=09verticalAlign: null
  4869. =09};
  4870. };
  4871. searchshield=2EBaiduSearchEngine=2Eprototype =3D new searchshield=2ESearch=
  4872. Engine();
  4873. searchshield=2EBaiduSearchEngine=2Eprototype=2Econstructor =3D searchshiel=
  4874. d=2EBaiduSearchEngine;
  4875. searchshield=2EBaiduSearchEngine=2Eprototype=2Ename =3D "baidu";
  4876. searchshield=2EBaiduSearchEngine=2Eprototype=2EvalidSearch =3D function(hr=
  4877. ef)
  4878. {
  4879. =09var uri;
  4880. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  4881. search)
  4882. =09=09uri =3D searchshield=2EparseLink(href);
  4883. =09else
  4884. =09=09uri =3D this=2Esearch=2Euri;
  4885.  
  4886. =09if(!uri || !uri=2Ehost)
  4887. =09=09return false;
  4888.  
  4889. =09var hostMatch=09=3D false;
  4890. =09var domain=09=09=3D uri=2Ehost;
  4891.  
  4892. =09// re stitch the uri path and query elements to
  4893. =09// use existing logic
  4894. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  4895. =09
  4896. =09if (domain =3D=3D "www=2Ebaidu=2Ecom" || path=2EindexOf("testBaidu") !=3D=
  4897. =3D -1)
  4898. =09=09hostMatch =3D true;
  4899. =09=09
  4900. =09if (hostMatch)
  4901. =09{
  4902. =09=09if (path=2EindexOf("s=3F") =3D=3D 0)
  4903. =09=09=09return true;
  4904. =09}
  4905.  
  4906. =09return false;
  4907. };
  4908. searchshield=2EBaiduSearchEngine=2Eprototype=2EincludeLink =3D function(ta=
  4909. g)
  4910. {=09=09
  4911. =09=09if (tag=2EclassName && tag=2EclassName =3D=3D "m")
  4912. =09=09=09return false;
  4913.  
  4914. =09=09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2E=
  4915. host))
  4916. =09=09=09return false;
  4917. =09=09else=20
  4918. =09=09{
  4919. =09=09=09// no link to self
  4920. =09=09=09var traverseElement =3D tag=2EparentNode;
  4921. =09=09=09while ( traverseElement && traverseElement=2EclassName !=3D "tbod=
  4922. y")
  4923. =09=09=09{
  4924. =09=09=09=09if (traverseElement=2EclassName =3D=3D "f")
  4925. =09=09=09=09=09return tag=2Ehref;
  4926.  
  4927. =09=09=09=09traverseElement =3D traverseElement=2EparentNode;
  4928. =09=09=09}
  4929. =09=09=09
  4930. =09=09=09return false;
  4931. =09=09}
  4932.  
  4933. };
  4934. ///////////////    BAIDU SEARCH ENGINE    ///////////////
  4935.  
  4936.  
  4937.  
  4938.  
  4939. ///////////////    EARTHLINK SEARCH ENGINE    ///////////////
  4940. searchshield=2EEarthlinkSearchEngine =3D function(search)
  4941. {
  4942. =09searchshield=2ESearchEngine=2Ecall(this, search);
  4943. =09this=2EonlyPrimaries =3D false;
  4944.  
  4945. =09this=2EaddAnchorStyle =3D {
  4946. =09=09position: "static"
  4947. =09};
  4948. };
  4949. searchshield=2EEarthlinkSearchEngine=2Eprototype =3D new searchshield=2ESe=
  4950. archEngine();
  4951. searchshield=2EEarthlinkSearchEngine=2Eprototype=2Econstructor =3D searchs=
  4952. hield=2EEarthlinkSearchEngine;
  4953. searchshield=2EEarthlinkSearchEngine=2Eprototype=2Ename =3D "earthlink";
  4954. searchshield=2EEarthlinkSearchEngine=2Eprototype=2EvalidSearch =3D functio=
  4955. n(href)
  4956. {
  4957. =09var uri;
  4958. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  4959. search)
  4960. =09=09uri =3D searchshield=2EparseLink(href);
  4961. =09else
  4962. =09=09uri =3D this=2Esearch=2Euri;
  4963.  
  4964. =09if(!uri || !uri=2Ehost)
  4965. =09=09return false;
  4966.  
  4967. =09var hostMatch=09=3D false;
  4968. =09var domain=09=09=3D uri=2Ehost;
  4969.  
  4970. =09// re stitch the uri path and query elements to
  4971. =09// use existing logic
  4972. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  4973.  
  4974. =09// For EarthLink the host must match:
  4975. =09//=09search=2Eearthlink=2Enet
  4976. =09if (("search=2Eearthlink=2Enet" =3D=3D domain)=09&&
  4977. =09=09(path=2EindexOf("search=3F") =3D=3D 0))
  4978. =09{
  4979. =09=09return true;
  4980. =09}
  4981.  
  4982. =09return false;
  4983. };
  4984. searchshield=2EEarthlinkSearchEngine=2Eprototype=2EincludeLink =3D functio=
  4985. n(tag)
  4986. {
  4987. =09var outHref=09=3D "";
  4988. =09var findStr=09=3D "";
  4989.  
  4990. =09// check for an anchor
  4991. =09if (tag=2EtagName =3D=3D "A")
  4992. =09{
  4993. =09=09// check for sponsored
  4994. =09=09if (tag=2Eid=2EindexOf("a") =3D=3D 0)
  4995. =09=09{
  4996. =09=09=09var q =3D tag=2Ehref=2EindexOf("&q=3D");
  4997. =09=09=09var qlen =3D 3;
  4998. =09=09=09if (q =3D=3D -1)
  4999. =09=09=09{
  5000. =09=09=09=09q =3D tag=2Ehref=2EindexOf("&adurl=3D");
  5001. =09=09=09=09qlen =3D 7;
  5002. =09=09=09=09if (q =3D=3D -1)
  5003. =09=09=09=09=09return false;
  5004. =09=09=09}
  5005.  
  5006. =09=09=09// find end of url
  5007. =09=09=09var end =3D tag=2Ehref=2EindexOf("&", q+qlen);
  5008. =09=09=09if (end < 0)
  5009. =09=09=09=09end =3D tag=2Ehref=2Elength;
  5010.  
  5011. =09=09=09// add the link
  5012. =09=09=09outHref =3D tag=2Ehref=2Esubstring(q+qlen, end);
  5013. =09=09=09
  5014. =09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
  5015. =09=09=09=09return false;
  5016. =09=09=09=09
  5017. =09=09=09return outHref;
  5018. =09=09}
  5019.  
  5020. =09=09// don't search url's to self
  5021. =09=09if ((tag=2Ehref=2EindexOf("://") =3D=3D -1) || searchshield=2EDoesUR=
  5022. LContain(tag=2Ehref, this=2Esearch=2Euri=2Ehost))
  5023. =09=09=09return false;
  5024.  
  5025. =09=09// if a normal web result add it
  5026. =09=09if (tag=2EparentNode && (tag=2EparentNode=2EtagName =3D=3D "H3") &&
  5027. =09=09=09tag=2EparentNode=2EparentNode && (tag=2EparentNode=2EparentNode=2E=
  5028. tagName =3D=3D "LI") &&
  5029. =09=09=09tag=2EparentNode=2EparentNode=2EparentNode && (tag=2EparentNode=2E=
  5030. parentNode=2EparentNode=2EtagName =3D=3D "UL"))
  5031. =09=09{
  5032. =09=09=09if (searchshield=2EFilterUrl(tag=2Ehref, this=2Efilter=5Furls))
  5033. =09=09=09=09return false;
  5034. =09=09=09=09
  5035. =09=09=09return tag=2Ehref;
  5036. =09=09}
  5037. =09}
  5038. =09
  5039. =09return false;
  5040. };
  5041. ///////////////    EARTHLINK SEARCH ENGINE    ///////////////
  5042.  
  5043.  
  5044.  
  5045.  
  5046. ///////////////    AOL SEARCH ENGINE    ///////////////
  5047. searchshield=2EAOLSearchEngine =3D function(search)
  5048. {
  5049. =09searchshield=2ESearchEngine=2Ecall(this, search);
  5050. =09
  5051. =09this=2EaddImageStyle =3D {
  5052. =09=09display: "inline"
  5053. =09};
  5054. =09this=2EaddAnchorStyle =3D {
  5055. =09=09display: null
  5056. =09};
  5057. =09this=2EupdateImageStyle =3D {
  5058. =09=09verticalAlign: null,
  5059. =09=09display: "inline"
  5060. =09};
  5061. };
  5062. searchshield=2EAOLSearchEngine=2Eprototype =3D new searchshield=2ESearchEn=
  5063. gine();
  5064. searchshield=2EAOLSearchEngine=2Eprototype=2Econstructor =3D searchshield=2E=
  5065. AOLSearchEngine;
  5066. searchshield=2EAOLSearchEngine=2Eprototype=2Ename =3D "aol";
  5067. searchshield=2EAOLSearchEngine=2Eprototype=2EvalidSearch =3D function(href=
  5068. )
  5069. {
  5070. =09var uri;
  5071. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  5072. search)
  5073. =09=09uri =3D searchshield=2EparseLink(href);
  5074. =09else
  5075. =09=09uri =3D this=2Esearch=2Euri;
  5076.  
  5077. =09if(!uri || !uri=2Ehost)
  5078. =09=09return false;
  5079. =09
  5080. =09var domain =3D uri=2Ehost;
  5081. =09//path may be 'aol/search' or 'search'
  5082. =09var pathArray =3D uri=2Epath=2Esplit("/");
  5083. =09var aol =3D pathArray[0];
  5084. =09// re stitch the uri path and query elements
  5085. =09// to use existing logic
  5086. =09var path =3D (undefined =3D=3D pathArray[1]) =3F pathArray[0] : pathArr=
  5087. ay[1];
  5088. =09=09path +=3D uri=2Edelimiter + uri=2Equery;
  5089.  
  5090. =09if (/search\=2Eaol\=2Ecom/=2Etest(domain))
  5091. =09{
  5092. =09=09if ((aol =3D=3D "aol") &&
  5093. =09=09=09(path=2EindexOf("search=3F") =3D=3D 0))
  5094. =09=09{
  5095. =09=09=09return true;
  5096. =09=09}
  5097. =09}
  5098. =09
  5099. =09return false;
  5100. };
  5101. searchshield=2EAOLSearchEngine=2Eprototype=2EincludeLink =3D function(tag)=
  5102.  
  5103. {
  5104. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  5105. t))
  5106. =09=09return false;
  5107. =09
  5108. =09// sponsored links - google
  5109. =09if ((tag=2EclassName) && (tag=2EclassName=2EindexOf("slLink topAnchor")=
  5110.  !=3D -1))
  5111. =09{=09//parse for embedded href
  5112.  
  5113. =09=09if (tag=2Ehref=2EindexOf("/aclk=3Fsa=3D") =3D=3D -1)
  5114. =09=09=09return false;
  5115.  
  5116. =09=09var adurl =3D tag=2Ehref=2EindexOf("&adurl=3Dhttp");
  5117. =09=09// if an adurl the destination href can be acquired from the onclick=
  5118.  handler
  5119. =09=09if (adurl !=3D -1)
  5120. =09=09{
  5121. =09=09=09var destUrl;
  5122. =09=09=09var clickHandler =3D tag=2EgetAttribute('onclick');
  5123. =09=09=09if (clickHandler !=3D null)
  5124. =09=09=09{
  5125. =09=09=09=09// the destination href is the 2nd parameter (zero-based array=
  5126. )
  5127. =09=09=09=09destUrl =3D searchshield=2EgetClickHandlerParams(clickHandler)=
  5128. [1];
  5129. =09=09=09=09if (destUrl !=3D null)
  5130. =09=09=09=09{
  5131. =09=09=09=09=09destUrl =3D searchshield=2EremoveHtmlTags(destUrl=2Ereplace=
  5132. (/'/g,''));
  5133. =09=09=09=09=09return searchshield=2EcheckUrl(destUrl);
  5134. =09=09=09=09}
  5135. =09=09=09}
  5136. =09=09}
  5137.  
  5138. =09=09return false;
  5139. =09}
  5140.  
  5141. =09if (tag=2EclassName =3D=3D "find")
  5142. =09=09return tag=2Ehref;
  5143. =09=09
  5144. =09return false;
  5145. };
  5146. searchshield=2EAOLSearchEngine=2Eprototype=2EinsertNodes =3D function(node=
  5147. , doc)
  5148. {
  5149. =09var element =3D node=2Eelement;
  5150. =09var score =3D node=2Escore;
  5151.  
  5152. =09if (element && element=2EclassName && element=2EclassName=2EindexOf("sl=
  5153. Link") !=3D -1)
  5154. =09{=09//sponsored links only
  5155.  
  5156. =09=09// for alt image
  5157. =09=09if (score =3D=3D searchshield=2ESCORE=5FSS=5FVERISIGN)
  5158. =09=09=09return [element=2EnextSibling, element=2EparentNode];
  5159.  
  5160. =09=09// for verdict image
  5161. =09=09var cN =3D element=2EchildNodes;
  5162. =09=09var cnLen =3D cN=2Elength;
  5163. =09=09for (var i=3D0; i < cnLen; i++)
  5164. =09=09{
  5165. =09=09=09if ((cN[i]=2EnodeType =3D=3D 1) &&=20
  5166. =09=09=09=09(cN[i]=2EnodeName =3D=3D 'SPAN') &&=20
  5167. =09=09=09=09((cN[i]=2EclassName =3D=3D 'title') || (cN[i]=2EclassName =3D=3D=
  5168.  'durl')))
  5169. =09=09=09=09return [cN[i]=2EnextSibling, cN[i]=2EparentNode];
  5170. =09=09}
  5171. =09}
  5172.  
  5173. =09var parent =3D searchshield=2ESearchEngine=2Eprototype=2EinsertNodes;
  5174. =09return parent=2Ecall(this, node, doc);
  5175. };
  5176. ///////////////    AOL SEARCH ENGINE    ///////////////
  5177.  
  5178.  
  5179.  
  5180.  
  5181. ///////////////    ASK SEARCH ENGINE    ///////////////
  5182. searchshield=2EAskSearchEngine =3D function(search)
  5183. {
  5184. =09searchshield=2ESearchEngine=2Ecall(this, search);
  5185. };
  5186. searchshield=2EAskSearchEngine=2Eprototype =3D new searchshield=2ESearchEn=
  5187. gine();
  5188. searchshield=2EAskSearchEngine=2Eprototype=2Econstructor =3D searchshield=2E=
  5189. AskSearchEngine;
  5190. searchshield=2EAskSearchEngine=2Eprototype=2Ename =3D "ask";
  5191. searchshield=2EAskSearchEngine=2Eprototype=2EvalidSearch =3D function(href=
  5192. )
  5193. {
  5194. =09var uri;
  5195. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  5196. search)
  5197. =09=09uri =3D searchshield=2EparseLink(href);
  5198. =09else
  5199. =09=09uri =3D this=2Esearch=2Euri;
  5200.  
  5201. =09if(!uri || !uri=2Ehost)
  5202. =09=09return false;
  5203. =09
  5204. =09var domain=3D uri=2Ehost;
  5205. =09// re stitch the uri path and query elements
  5206. =09// to use existing logic
  5207. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  5208. =09
  5209. =09if ("www=2Eask=2Ecom" =3D=3D domain)
  5210. =09{
  5211. =09=09if (path=2EindexOf("web=3F") =3D=3D 0)
  5212. =09=09=09return true;
  5213. =09}
  5214.  
  5215. =09return false;
  5216. };
  5217. searchshield=2EAskSearchEngine=2Eprototype=2EincludeLink =3D function(tag)=
  5218.  
  5219. {
  5220. =09var outHref=09=3D "";
  5221. =09var findStr=09=3D "";
  5222.  
  5223. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  5224. t))
  5225. =09=09return false;
  5226. =09
  5227. =09if ((tag=2EclassName) && (tag=2EclassName=2EindexOf("nu") !=3D -1) && (=
  5228. tag=2EclassName=2EindexOf("info") =3D=3D -1))=20
  5229. =09{
  5230. =09=09// exclude green links
  5231. =09=09if ((tag=2EfirstChild) &&
  5232. =09=09=09(tag=2EfirstChild=2EclassName) &&
  5233. =09=09=09(tag=2EfirstChild=2EclassName=2EindexOf('attrib') =3D=3D 0))
  5234. =09=09{
  5235. =09=09=09return false;
  5236. =09=09}
  5237.  
  5238. =09=09// ads link to google with class nu
  5239. =09=09findStr =3D "www=2Egoogle=2Ecom";
  5240. =09=09if (tag=2Ehref=2EindexOf(findStr) !=3D 0)
  5241. =09=09{
  5242. =09=09=09if (tag=2Ehref=2EindexOf(findStr + "/aclk=3Fsa=3D") !=3D -1)
  5243. =09=09=09{=09
  5244. =09=09=09=09findStr =3D "&adurl=3Dhttp";
  5245. =09=09=09=09var pos =3D tag=2Ehref=2EindexOf(findStr);
  5246. =09=09=09=09if (pos !=3D -1)
  5247. =09=09=09=09{
  5248. =09=09=09=09=09pos +=3D 7;
  5249. =09=09=09=09=09outHref =3D tag=2Ehref=2Esubstring(pos);
  5250. =09=09=09=09=09outHref =3D unescape(outHref);
  5251. =09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls)=
  5252. )
  5253. =09=09=09=09=09=09=09return false;
  5254. =09=09=09=09=09return outHref;
  5255. =09=09=09=09}
  5256. =09=09=09}
  5257. =09=09}
  5258. =09=09else
  5259. =09=09{=09// ad not to google just use href
  5260. =09=09=09outHref =3D tag=2Ehref;
  5261. =09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
  5262. =09=09=09=09return false;
  5263. =09=09=09return outHref;
  5264. =09=09}
  5265. =09}
  5266. =09// primary results have class containing title or L2 ( Wikipedia links =
  5267. )
  5268. =09else if ((tag=2EclassName) && ((tag=2EclassName=2EindexOf("title") !=3D=
  5269.  -1) || (tag=2EclassName=2EtoLowerCase() =3D=3D "l2")))
  5270. =09{
  5271. =09=09outHref =3D tag=2Ehref;
  5272. =09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
  5273. =09=09=09return false;
  5274. =09=09return outHref;
  5275. =09}
  5276. =09
  5277. =09return false;
  5278. };
  5279. ///////////////    ASK SEARCH ENGINE    ///////////////
  5280.  
  5281.  
  5282.  
  5283.  
  5284. ///////////////    ALTAVISTA SEARCH ENGINE    ///////////////
  5285. searchshield=2EAltaVistaSearchEngine =3D function(search)
  5286. {
  5287. =09searchshield=2ESearchEngine=2Ecall(this, search);
  5288. };
  5289. searchshield=2EAltaVistaSearchEngine=2Eprototype =3D new searchshield=2ESe=
  5290. archEngine();
  5291. searchshield=2EAltaVistaSearchEngine=2Eprototype=2Econstructor =3D searchs=
  5292. hield=2EAltaVistaSearchEngine;
  5293. searchshield=2EAltaVistaSearchEngine=2Eprototype=2Ename =3D "altavista";
  5294. searchshield=2EAltaVistaSearchEngine=2Eprototype=2EvalidSearch =3D functio=
  5295. n(href)
  5296. {
  5297. =09var uri;
  5298. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  5299. search)
  5300. =09=09uri =3D searchshield=2EparseLink(href);
  5301. =09else
  5302. =09=09uri =3D this=2Esearch=2Euri;
  5303.  
  5304. =09if(!uri || !uri=2Ehost)
  5305. =09=09return false;
  5306. =09
  5307. =09var domain=3D uri=2Ehost;
  5308. =09
  5309. =09// re stitch the uri path and query elements
  5310. =09// to use existing logic
  5311. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  5312.  
  5313. =09// www=2Eatlavista=2Ecom ---> now http://us=2Eyhs4=2Esearch=2Eyahoo=2Ec=
  5314. om/yhs/search=3Ffr=3Daltavista&fr=3Daltavista&itag=3Dody&q=3Dwarez&kgs=3D1=
  5315. &kls=3D0
  5316. =09// xx=2Ealtavista=2Ecom where xx is a country code
  5317. =09var hostMatch =3D false;
  5318. =09if ("www=2Ealtavista=2Ecom" =3D=3D domain)
  5319. =09{
  5320. =09=09hostMatch =3D true;
  5321. =09}
  5322. =09else
  5323. =09{
  5324. =09=09// xx=2Ealtavista=2Ecom
  5325. =09=09var pDest =3D domain=2EindexOf("=2Ealtavista=2Ecom");
  5326. =09=09if ((pDest !=3D -1 ) && ((domain=2Elength - pDest) =3D=3D 14))
  5327. =09=09{
  5328. =09=09=09hostMatch =3D true;
  5329. =09=09}
  5330. =09=09else
  5331. =09=09{
  5332. =09=09=09// a reference to altavista must be present in yahoo search url
  5333. =09=09=09var pRef =3D (uri=2EqsArray=2Efr && uri=2EqsArray=2Efr =3D=3D 'al=
  5334. tavista');
  5335. =09=09=09pDest =3D domain=2EindexOf("search=2Eyahoo=2Ecom");
  5336. =09=09=09if (pDest !=3D -1 && pRef)
  5337. =09=09=09=09hostMatch =3D true;
  5338. =09=09}
  5339. =09}
  5340.  
  5341. =09if (hostMatch)
  5342. =09{
  5343. =09=09//path must start with web/results=3F
  5344. =09=09if ((path=2EindexOf("yhs/search=3F") =3D=3D 0)=09||
  5345. =09=09=09(path=2EindexOf("search;") =3D=3D 0)=09=09||
  5346. =09=09=09(path=2EindexOf("yhs/search;") =3D=3D 0)=09||
  5347. =09=09=09(path=2EindexOf("web/results=3F") =3D=3D 0)||
  5348. =09=09=09(path=2EindexOf("fr=3Daltavista") !=3D -1))
  5349. =09=09{
  5350. =09=09=09return true;
  5351. =09=09}
  5352. =09}
  5353. =09
  5354. =09return false;
  5355. };
  5356. searchshield=2EAltaVistaSearchEngine=2Eprototype=2EincludeLink =3D functio=
  5357. n(tag)
  5358. {
  5359. =09var outHref=09=3D "";
  5360. =09var findStr=09=3D "";
  5361.  
  5362. =09// initial checks
  5363. =09if ((!tag=2Ehref)=09||=20
  5364. =09=09(tag=2Ehref=2EcharAt(0) =3D=3D '#') ||
  5365. =09=09(tag=2Ehref=2EindexOf("javascript:") =3D=3D 0))
  5366. =09{
  5367. =09=09return false;
  5368. =09}
  5369. =09=09
  5370. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  5371. t))
  5372. =09=09return false;
  5373. =09
  5374. =09var spnsdLinks =3D searchshield=2EgetParentNodeByTagName("DIV", tag, "c=
  5375. lassName");
  5376. =09if ((spnsdLinks) &&
  5377. =09=09(spnsdLinks=2EclassName=2EindexOf('ads') > -1))=09// sponsored links=
  5378.  
  5379. =09{
  5380. =09=09if (!tag=2EparentNode)
  5381. =09=09=09return false;
  5382.  
  5383. =09=09// parse ads for em tag
  5384. =09=09var baseNode;
  5385. =09=09if (spnsdLinks=2EclassName=2EindexOf('ads horiz') > -1)=09// horizon=
  5386. tal ads sections
  5387. =09=09=09baseNode =3D tag=2EparentNode=2EparentNode;
  5388. =09=09else
  5389. =09=09=09baseNode =3D tag=2EparentNode;
  5390. =09=09
  5391. =09=09if (!baseNode || !baseNode=2ElastChild || baseNode=2ElastChild=2Etag=
  5392. Name !=3D 'EM')
  5393. =09=09=09return false;
  5394.  
  5395. =09=09var outHref =3D searchshield=2EremoveHtmlTags(baseNode=2ElastChild=2E=
  5396. innerHTML);
  5397. =09=09return outHref;
  5398. =09}
  5399. =09
  5400. =09if ((tag=2EclassName =3D=3D "spt") ||=20
  5401. =09=09(tag=2EclassName =3D=3D "res") ||
  5402. =09=09(tag=2EclassName =3D=3D "yschttl spt"))
  5403. =09{
  5404. =09=09findStr =3D "/**";
  5405. =09=09var pos =3D tag=2Ehref=2EindexOf(findStr);
  5406. =09=09if (pos !=3D -1)
  5407. =09=09{
  5408. =09=09=09pos +=3D 3;
  5409. =09=09=09outHref =3D tag=2Ehref=2Esubstring(pos);
  5410. =09=09=09outHref =3D unescape(outHref);
  5411. =09=09=09
  5412. =09=09=09// no results for overture=2Ecom & no yahoo domains
  5413. =09=09=09chkHref =3D outHref=2EtoLowerCase();
  5414. =09=09=09if (chkHref=2EindexOf("overture=2E") !=3D -1)
  5415. =09=09=09=09return false;
  5416.  
  5417. =09=09=09// split the url based on '/'
  5418. =09=09=09var parts =3D outHref=2Esplit('/');
  5419.  
  5420. =09=09=09// only need a domain
  5421. =09=09=09if ((parts !=3D null) && (parts[2] !=3D null))
  5422. =09=09=09{
  5423. =09=09=09=09var domain =3D parts[2];
  5424. =09=09=09=09if ((domain=2EindexOf("rdrjp=2Eyahoo=2Ecom") !=3D -1)=09||
  5425. =09=09=09=09=09(domain=2EindexOf("rdrkrs=2Eyahoo=2Ecom") !=3D -1)=09||
  5426. =09=09=09=09=09(domain=2EindexOf("rdrtpe=2Eyahoo=2Ecom") !=3D -1)=09||
  5427. =09=09=09=09=09(domain=2EindexOf("rdrird=2Eyahoo=2Ecom") !=3D -1)=09||
  5428. =09=09=09=09=09(domain=2EindexOf("rdrhk2=2Eyahoo=2Ecom") !=3D -1)=09||
  5429. =09=09=09=09=09(domain=2EindexOf("rdrsg1=2Eyahoo=2Ecom") !=3D -1)=09||
  5430. =09=09=09=09=09(domain=2EindexOf("rdrin2=2Eyahoo=2Ecom") !=3D -1)=09||
  5431. =09=09=09=09=09(domain=2EindexOf("rdre1=2Eyahoo=2Ecom") !=3D -1)=09||
  5432. =09=09=09=09=09(domain=2EindexOf("rdrw1=2Eyahoo=2Ecom") !=3D -1)=09=09)
  5433. =09=09=09=09{
  5434. =09=09=09=09=09return false
  5435. =09=09=09=09}
  5436. =09=09=09}
  5437.  
  5438. =09=09=09return outHref;
  5439. =09=09}
  5440. =09=09else
  5441. =09=09{
  5442. =09=09=09return tag=2Ehref;
  5443. =09=09}
  5444. =09}
  5445. =09
  5446. =09return false;
  5447. };
  5448. searchshield=2EAltaVistaSearchEngine=2Eprototype=2EgetImgElement =3D funct=
  5449. ion (element)
  5450. {
  5451. =09while (element !=3D null)=20
  5452. =09{
  5453. =09=09element =3D element=2EnextSibling;
  5454. =09=09if (element !=3D null)
  5455. =09=09{
  5456. =09=09=09if ((element=2Eid =3D=3D null) || (element=2Eid=2EindexOf("LXPLSS=
  5457. =5F") =3D=3D -1))
  5458. =09=09=09{   // not our id but hit another anchor no verdict
  5459. =09=09=09=09if (element=2EtagName =3D=3D "A")
  5460. =09=09=09=09{
  5461. =09=09=09=09=09element =3D null;
  5462. =09=09=09=09=09break;
  5463. =09=09=09=09}
  5464. =09=09=09}
  5465. =09=09=09else if (element=2EtagName =3D=3D "A")
  5466. =09=09=09=09break;
  5467. =09=09}
  5468. =09}
  5469. =09=09
  5470. =09var rtnElem =3D !!element =3F element=2EfirstChild : element;
  5471. =09return rtnElem;
  5472. };
  5473. ///////////////    ALTAVISTA SEARCH ENGINE    ///////////////
  5474.  
  5475.  
  5476.  
  5477.  
  5478. ///////////////    YANDEX SEARCH ENGINE    ///////////////
  5479. searchshield=2EYandexSearchEngine =3D function(search)
  5480. {
  5481. =09searchshield=2ESearchEngine=2Ecall(this, search);
  5482. };
  5483. searchshield=2EYandexSearchEngine=2Eprototype =3D new searchshield=2ESearc=
  5484. hEngine();
  5485. searchshield=2EYandexSearchEngine=2Eprototype=2Econstructor =3D searchshie=
  5486. ld=2EYandexSearchEngine;
  5487. searchshield=2EYandexSearchEngine=2Eprototype=2Ename =3D "yandex";
  5488. searchshield=2EYandexSearchEngine=2Eprototype=2EvalidSearch =3D function(h=
  5489. ref)
  5490. {
  5491. =09var uri;
  5492. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  5493. search)
  5494. =09=09uri =3D searchshield=2EparseLink(href);
  5495. =09else
  5496. =09=09uri =3D this=2Esearch=2Euri;
  5497.  
  5498. =09if(!uri || !uri=2Ehost)
  5499. =09=09return false;
  5500. =09
  5501. =09var domain=3D uri=2Ehost;
  5502. =09// re stitch the uri path and query elements
  5503. =09// to use existing logic
  5504. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  5505.  
  5506. =09if ((domain=2Ematch(/yandex\=2Ecom|by|kz|ru|ua/i)) &&
  5507. =09=09(path=2EindexOf("yandsearch=3F") =3D=3D 0))
  5508. =09{
  5509. =09=09return true;
  5510. =09}
  5511. =09
  5512. =09return false;
  5513. };
  5514. searchshield=2EYandexSearchEngine=2Eprototype=2EincludeLink =3D function(t=
  5515. ag)
  5516. {
  5517. =09if (tag=2Ehref=2EindexOf("/search") !=3D -1)
  5518. =09{
  5519. =09=09return false;
  5520. =09}
  5521. =09
  5522. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  5523. t)=09||
  5524. =09=09searchshield=2EDoesURLContain(tag=2Ehref, "=2Eyandex=2Enet")=09=09||=
  5525.  
  5526. =09=09searchshield=2EDoesURLContain(tag=2Ehref, "=2Eyandex=2Eru")=09=09=09=
  5527. ||
  5528. =09=09searchshield=2EDoesURLContain(tag=2Ehref, "moikrug=2Eru")=09=09=09||=
  5529.  
  5530. =09=09searchshield=2EDoesURLContain(tag=2Ehref, "ya=2Eru")=09=09=09=09||
  5531. =09=09searchshield=2EDoesURLContain(tag=2Ehref, "=2Eyandex=2Ecom")=09=09||=
  5532.  
  5533. =09=09searchshield=2EDoesURLContain(tag=2Ehref, "yandex=2Est"))
  5534. =09{
  5535. =09=09return false;
  5536. =09}
  5537. =09=09
  5538. =09parentNode =3D tag=2EparentNode;
  5539. =09if ((tag=2EparentNode)=09=09=09&&=20
  5540. =09=09(tag=2EparentNode=2EparentNode)=09&&
  5541. =09=09(tag=2EparentNode=2EparentNode=2EclassName=2EtoLowerCase() =3D=3D "m=
  5542. oreinfo"))
  5543. =09{
  5544. =09=09return false;
  5545. =09}
  5546. =09
  5547. =09return tag=2Ehref;
  5548. };
  5549. searchshield=2EYandexSearchEngine=2Eprototype=2EgetImgElement =3D function=
  5550.  (element)
  5551. {
  5552. =09while (element !=3D null)=20
  5553. =09{
  5554. =09=09element =3D element=2EnextSibling;
  5555. =09=09if (element !=3D null)
  5556. =09=09{
  5557. =09=09=09if ((element=2Eid =3D=3D null) || (element=2Eid=2EindexOf("LXPLSS=
  5558. =5F") =3D=3D -1))
  5559. =09=09=09{   // not our id but hit another anchor no verdict
  5560. =09=09=09=09if (element=2EtagName =3D=3D "A")
  5561. =09=09=09=09{
  5562. =09=09=09=09=09element =3D null;
  5563. =09=09=09=09=09break;
  5564. =09=09=09=09}
  5565. =09=09=09}
  5566. =09=09=09else if (element=2EtagName =3D=3D "A")
  5567. =09=09=09=09break;
  5568. =09=09}
  5569. =09}
  5570. =09=09
  5571. =09var rtnElem =3D !!element =3F element=2EfirstChild : element;
  5572. =09return rtnElem;
  5573. };
  5574. ///////////////    YANDEX SEARCH ENGINE    ///////////////
  5575.  
  5576.  
  5577.  
  5578.  
  5579. ///////////////    SEZNAM SEARCH ENGINE    ///////////////
  5580. searchshield=2ESeznamSearchEngine =3D function(search)
  5581. {
  5582. =09searchshield=2ESearchEngine=2Ecall(this, search);
  5583.  
  5584. =09this=2EelementAttribute =3D {
  5585. =09=09width: "18",
  5586. =09=09height: "18"
  5587. =09};
  5588.  
  5589. =09this=2EupdateImageStyle =3D {
  5590. =09=09width: "18px",
  5591. =09=09height: "18px"
  5592. =09};
  5593. };
  5594. searchshield=2ESeznamSearchEngine=2Eprototype =3D new searchshield=2ESearc=
  5595. hEngine();
  5596. searchshield=2ESeznamSearchEngine=2Eprototype=2Econstructor =3D searchshie=
  5597. ld=2ESeznamSearchEngine;
  5598. searchshield=2ESeznamSearchEngine=2Eprototype=2Ename =3D "seznam";
  5599. searchshield=2ESeznamSearchEngine=2Eprototype=2EvalidSearch =3D function(h=
  5600. ref)
  5601. {
  5602. =09var uri;
  5603. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  5604. search)
  5605. =09=09uri =3D searchshield=2EparseLink(href);
  5606. =09else
  5607. =09=09uri =3D this=2Esearch=2Euri;
  5608.  
  5609. =09if(!uri || !uri=2Ehost)
  5610. =09=09return false;
  5611. =09
  5612. =09var domain=3D uri=2Ehost;
  5613. =09// re stitch the uri path and query elements
  5614. =09// to use existing logic
  5615. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  5616.  
  5617. =09if ((domain=2EindexOf("search=2Eseznam=2Ecz") > -1)=09&&
  5618. =09=09((path=2EindexOf("=3F") =3D=3D 0) || (path=2EindexOf("svet") =3D=3D =
  5619. 0)))
  5620. =09{
  5621. =09=09return true;
  5622. =09}
  5623. =09
  5624. =09return false;
  5625. };
  5626. searchshield=2ESeznamSearchEngine=2Eprototype=2EincludeLink =3D function(t=
  5627. ag)
  5628. {
  5629. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  5630. t))
  5631. =09=09return false;
  5632. =09
  5633. =09var parentNode =3D tag=2EparentNode;
  5634. =09if (parentNode)
  5635. =09{
  5636. =09=09var grandParentNode =3D tag=2EparentNode=2EparentNode;
  5637. =09=09if ((parentNode=2EtagName =3D=3D "SPAN") &&=20
  5638. =09=09=09((parentNode=2EclassName=2EtoLowerCase() =3D=3D "sklik-url") ||
  5639. =09=09=09(parentNode=2EclassName=2EtoLowerCase() =3D=3D "sklik-title")))
  5640. =09=09{=09// locate the real url and unencode it
  5641. =09=09=09var urlPos =3D tag=2Ehref=2EindexOf("&url=3Dhttp");
  5642.  
  5643. =09=09=09if (urlPos !=3D -1)
  5644. =09=09=09{
  5645. =09=09=09=09urlPos +=3D 5;=09
  5646. =09=09=09=09outHref =3D tag=2Ehref=2Esubstring(urlPos);
  5647. =09=09=09=09outHref =3D unescape(outHref);
  5648.  
  5649. =09=09=09=09return outHref;
  5650. =09=09=09}
  5651. =09=09}
  5652. =09=09else if (grandParentNode)=20
  5653. =09=09{
  5654. =09=09=09var greatGrandParentNode =3D tag=2EparentNode=2EparentNode=2Epare=
  5655. ntNode;
  5656. =09=09=09if ((grandParentNode=2EtagName =3D=3D "DIV") &&
  5657. =09=09=09=09((grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "text") |=
  5658. | (grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "hlasky otz")))
  5659. =09=09=09{=09// standard link
  5660. =09=09=09=09return tag=2Ehref;
  5661. =09=09=09}
  5662. =09=09=09else if (greatGrandParentNode && greatGrandParentNode=2EtagName =3D=
  5663. =3D "DIV" &&
  5664. =09=09=09=09=09(greatGrandParentNode=2EclassName=2EtoLowerCase() =3D=3D "h=
  5665. otlinks"))=20
  5666. =09=09=09{=09// hint link
  5667. =09=09=09=09return tag=2Ehref;
  5668. =09=09=09}
  5669. =09=09=09
  5670. =09=09}
  5671. =09}
  5672. =09
  5673. =09return false;
  5674. };
  5675. ///////////////    SEZNAM SEARCH ENGINE    ///////////////
  5676.  
  5677.  
  5678.  
  5679.  
  5680. ///////////////    WEBHLEDANI SEARCH ENGINE    ///////////////
  5681. searchshield=2EWebhledaniSearchEngine =3D function(search)
  5682. {
  5683. =09searchshield=2ESearchEngine=2Ecall(this, search);
  5684. };
  5685. searchshield=2EWebhledaniSearchEngine=2Eprototype =3D new searchshield=2ES=
  5686. earchEngine();
  5687. searchshield=2EWebhledaniSearchEngine=2Eprototype=2Econstructor =3D search=
  5688. shield=2EWebhledaniSearchEngine;
  5689. searchshield=2EWebhledaniSearchEngine=2Eprototype=2Ename =3D "webhledani";=
  5690.  
  5691. searchshield=2EWebhledaniSearchEngine=2Eprototype=2EvalidSearch =3D functi=
  5692. on(href)
  5693. {
  5694. =09var uri;
  5695. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  5696. search)
  5697. =09=09uri =3D searchshield=2EparseLink(href);
  5698. =09else
  5699. =09=09uri =3D this=2Esearch=2Euri;
  5700.  
  5701. =09if(!uri || !uri=2Ehost)
  5702. =09=09return false;
  5703. =09
  5704. =09var domain=3D uri=2Ehost;
  5705. =09// re stitch the uri path and query elements
  5706. =09// to use existing logic
  5707. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  5708.  
  5709. =09if ((domain=2EindexOf("webhledani=2Ecz") > -1)=09&&
  5710. =09=09(path=2EindexOf("results=2Easpx=3F") =3D=3D 0))
  5711. =09{
  5712. =09=09return true;
  5713. =09}
  5714. =09
  5715. =09return false;
  5716. };
  5717. searchshield=2EWebhledaniSearchEngine=2Eprototype=2EincludeLink =3D functi=
  5718. on(tag)
  5719. {
  5720. =09if (tag=2Ehref=2EindexOf("/redir=2Easpx=3F") !=3D -1)
  5721. =09{
  5722. =09=09var ancestorNode;
  5723.  
  5724. =09=09// sponsored link
  5725. =09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("resul=
  5726. ts sponsored", tag, 3)) !=3D null)
  5727. =09=09{
  5728. =09=09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("re=
  5729. s1", tag, 2)) !=3D null)
  5730. =09=09=09{
  5731. =09=09=09=09
  5732. =09=09=09=09var spanSibling =3D ancestorNode=2EnextSibling;
  5733. =09=09=09=09while (spanSibling=2EnodeName !=3D 'SPAN')
  5734. =09=09=09=09{
  5735. =09=09=09=09=09spanSibling =3D spanSibling=2EnextSibling;
  5736. =09=09=09=09=09if (spanSibling=2EnodeName =3D=3D 'DIV' || spanSibling=2Ecl=
  5737. assName =3D=3D 'res1')
  5738. =09=09=09=09=09{
  5739. =09=09=09=09=09=09spanSibling =3D null;
  5740. =09=09=09=09=09=09break;
  5741. =09=09=09=09=09}
  5742. =09=09=09=09}
  5743.  
  5744. =09=09=09=09if (spanSibling)
  5745. =09=09=09=09=09 outHref =3D spanSibling=2EinnerHTML;
  5746. =09=09=09}
  5747.  
  5748. =09=09=09if (outHref)
  5749. =09=09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveHtmlTags(o=
  5750. utHref));=20
  5751. =09=09}
  5752. =09
  5753. =09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("right=
  5754. -sponsored", tag, 3)) !=3D null)
  5755. =09=09{
  5756. =09=09=09var outHref;
  5757.  
  5758. =09=09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("re=
  5759. s3", tag, 2)) !=3D null)
  5760. =09=09=09{
  5761. =09=09=09=09
  5762. =09=09=09=09var spanSibling =3D ancestorNode=2EnextSibling;
  5763. =09=09=09=09while (spanSibling=2EnodeName !=3D 'SPAN')
  5764. =09=09=09=09{
  5765. =09=09=09=09=09spanSibling =3D spanSibling=2EnextSibling;
  5766. =09=09=09=09=09if (spanSibling=2EnodeName =3D=3D 'DIV' || spanSibling=2Ecl=
  5767. assName =3D=3D 'res3')
  5768. =09=09=09=09=09{
  5769. =09=09=09=09=09=09spanSibling =3D null;
  5770. =09=09=09=09=09=09break;
  5771. =09=09=09=09=09}
  5772. =09=09=09=09}
  5773.  
  5774. =09=09=09=09if (spanSibling)
  5775. =09=09=09=09=09 outHref =3D spanSibling=2EinnerHTML;
  5776. =09=09=09}
  5777.  
  5778. =09=09=09if (outHref)
  5779. =09=09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveHtmlTags(o=
  5780. utHref));=20
  5781. =09=09}
  5782.  
  5783. =09=09// result link
  5784. =09=09if (searchshield=2EgetParentNodeByClassName("results", tag, 3) !=3D =
  5785. null)
  5786. =09=09{
  5787. =09=09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("re=
  5788. s2", tag, 2)) !=3D null)
  5789. =09=09=09{
  5790. =09=09=09=09if (tag=2EparentNode && (tag=2EparentNode=2EnodeName !=3D 'P')=
  5791. )
  5792. =09=09=09=09=09return getLinkHref(ancestorNode);
  5793. =09=09=09}
  5794. =09=09}
  5795. =09}
  5796.  
  5797. =09return false;
  5798.  
  5799. =09function getLinkHref(aNode)
  5800. =09{
  5801. =09=09var spanElems =3D aNode=2EgetElementsByTagName('span');
  5802. =09=09for (var i=3D0; i < spanElems=2Elength; i++)
  5803. =09=09{
  5804. =09=09=09if (spanElems[i]=2EclassName !=3D 'site')
  5805. =09=09=09=09continue;
  5806.  
  5807. =09=09=09var outAnchor =3D spanElems[i]=2EgetElementsByTagName('a')[0];
  5808. =09=09=09if (outAnchor =3D=3D null)
  5809. =09=09=09=09outAnchor =3D spanElems[i];
  5810.  
  5811. =09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveHtmlTags(outA=
  5812. nchor=2EinnerHTML));
  5813. =09=09}
  5814.  
  5815. =09=09return false;
  5816. =09}
  5817. };
  5818. ///////////////    WEBHLEDANI SEARCH ENGINE    ///////////////
  5819.  
  5820.  
  5821.  
  5822.  
  5823. ///////////////    EBAY SEARCH ENGINE    ///////////////
  5824. searchshield=2EeBaySearchEngine =3D function(search)
  5825. {
  5826. =09searchshield=2ESearchEngine=2Ecall(this, search);
  5827. };
  5828. searchshield=2EeBaySearchEngine=2Eprototype =3D new searchshield=2ESearchE=
  5829. ngine();
  5830. searchshield=2EeBaySearchEngine=2Eprototype=2Econstructor =3D searchshield=
  5831. =2EeBaySearchEngine;
  5832. searchshield=2EeBaySearchEngine=2Eprototype=2Ename =3D "ebay";
  5833. searchshield=2EeBaySearchEngine=2Eprototype=2EvalidSearch =3D function(hre=
  5834. f)
  5835. {
  5836. =09var uri;
  5837. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  5838. search)
  5839. =09=09uri =3D searchshield=2EparseLink(href);
  5840. =09else
  5841. =09=09uri =3D this=2Esearch=2Euri;
  5842.  
  5843. =09if(!uri || !uri=2Ehost)
  5844. =09=09return false;
  5845. =09
  5846. =09var domain=3D uri=2Ehost;
  5847. =09// shop=2Eebay=2Exx
  5848. =09// shop=2Exxxx=2Eebay=2Exx=09like shop=2Ebenl=2Eebay=2Ebe
  5849. =09// search=2Eauction=2Eco=2Ekr=20
  5850. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  5851. =09
  5852. =09if ((domain=2EindexOf("shop=2Eebay") > -1)=09||
  5853. =09=09(domain=2EindexOf("shop=2Ebenl=2Eebay") > -1))
  5854. =09{
  5855. =09=09if ((path=2EindexOf("=3F=5Ffrom=3D") =3D=3D 0)=09||
  5856. =09=09=09(path=2EindexOf("i=2Ehtml") > -1))
  5857. =09=09{
  5858. =09=09=09return true;
  5859. =09=09}
  5860. =09}
  5861. =09
  5862. =09// ebay=2Ese
  5863. =09if ((domain=2EindexOf("search=2Eeim=2Eebay") > -1) &&
  5864. =09=09((path=2EindexOf("=3Fkw=3D") > -1) || (path=2EindexOf("=3Fev=3D") > =
  5865. -1)))
  5866. =09{
  5867. =09=09return true;
  5868. =09}
  5869. =09
  5870. =09if ((domain=2EindexOf("search=2Eauction=2Eco=2Ekr") > -1 ) &&
  5871. =09=09((path=2EindexOf("=3Fkeyword=3D") > -1)))
  5872. =09{
  5873. =09=09// would normally set these properties in the constructor or in an
  5874. =09=09// overriding function but they're only required for this domain
  5875. =09=09=20
  5876. =09=09// links are in iframes
  5877. =09=09this=2EprocessFrames =3D true;
  5878. =09=09
  5879. =09=09// must downsize verdicts for proper display
  5880. =09=09this=2EelementAttribute =3D {
  5881. =09=09=09width: "16",
  5882. =09=09=09height: "16"
  5883. =09=09};
  5884. =09=09this=2EupdateImageStyle =3D {
  5885. =09=09=09width: "16px",
  5886. =09=09=09height: "16px"
  5887. =09=09};
  5888. =09=09
  5889. =09=09return true;
  5890. =09}
  5891.  
  5892. =09// latin america ebay
  5893. =09// listado=2Emercadolibre=2Ecom=2Exx or listado=2Emercadolibre=2Eco=2Ex=
  5894. x
  5895. =09//   or listado=2Emercadolibre=2Exx or
  5896. =09//   category=2Emercadolibre=2Ecom=2Exx or listado=2Emercadolibre=2Exx/=
  5897. category
  5898. =09// lista=2Emercadolivre=2Ecom=2Exx or lista=2Emercadolivre=2Ecom=2Exx/c=
  5899. ategory
  5900. =09if ((domain=2EindexOf("www=2E") =3D=3D -1) &&
  5901. =09=09((domain=2EindexOf("=2Emercadolibre=2E") > -1 ) ||
  5902. =09=09 (domain=2EindexOf("=2Emercadolivre=2E") > -1 )))=20
  5903. =09{
  5904. =09=09return true;
  5905. =09}
  5906. =09return false;
  5907. };
  5908. searchshield=2EeBaySearchEngine=2Eprototype=2EincludeLink =3D function(tag=
  5909. )
  5910. {
  5911. =09var parentNode =3D null;
  5912. =09var outHref =3D false;
  5913. =09
  5914. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  5915. t))
  5916. =09=09return false;
  5917. =09
  5918. =09if ( tag=2Ehref=2EindexOf("=2Eebayrtm=2Ecom/clk=3F") > -1 )
  5919. =09{
  5920. =09=09if ( tag=2Etitle =3D=3D null || tag=2Etitle=2Elength < 0 )
  5921. =09=09=09return false;
  5922. =09=09=09=09=09
  5923. =09=09outHref =3D searchshield=2EremoveHtmlTags(tag=2Etitle);
  5924. =09=09if (outHref=2EindexOf(" ") =3D=3D -1)
  5925. =09=09{=09// no spaces
  5926. =09=09=09if (outHref=2EindexOf("=2E") > -1)
  5927. =09=09=09{=09// at least one dot=20
  5928. =09=09=09=09if (outHref=2EindexOf(this=2Esearch=2Euri=2Ehost) =3D=3D -1)
  5929. =09=09=09=09{=09// no host
  5930. =09=09=09=09=09if (outHref=2EtoLowerCase()=2EindexOf("ebay=2Ecom") =3D=3D =
  5931. -1)
  5932. =09=09=09=09=09{
  5933. =09=09=09=09=09=09return outHref;
  5934. =09=09=09=09=09}
  5935. =09=09=09=09}
  5936. =09=09=09}
  5937. =09=09}=09=09=09
  5938. =09}
  5939. =09// ebay=2Ese - Google ads
  5940. =09parentNode =3D tag=2EparentNode;
  5941. =09if (parentNode && (parentNode=2EclassName=2EtoLowerCase() =3D=3D "googl=
  5942. e-ad-link"))
  5943. =09{
  5944. =09=09if (tag=2Ehref=2EindexOf("/aclk=3Fsa=3D") !=3D -1)
  5945. =09=09{=09
  5946. =09=09=09findStr =3D "&adurl=3Dhttp";
  5947. =09=09=09var urlPos=09=3D tag=2Ehref=2EindexOf(findStr);
  5948. =09=09=09if (urlPos !=3D -1)
  5949. =09=09=09{
  5950. =09=09=09=09urlPos +=3D 7; // puts it on the http
  5951. =09=09=09=09outHref =3D tag=2Ehref=2Esubstring(urlPos);
  5952. =09=09=09=09
  5953. =09=09=09=09// extract any fragment text, shouldn't be unescaped
  5954. =09=09=09=09var pound =3D outHref=2EindexOf("#");=09
  5955. =09=09=09=09if (pound !=3D -1)
  5956. =09=09=09=09{
  5957. =09=09=09=09=09var fragment =3D outHref=2Esubstring(pound);
  5958. =09=09=09=09=09outHref =3D outHref=2Esubstring(0, pound);
  5959. =09=09=09=09=09outHref =3D unescape(outHref);
  5960. =09=09=09=09=09outHref +=3D fragment;
  5961. =09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls)=
  5962. )
  5963. =09=09=09=09=09=09return false;
  5964.  
  5965. =09=09=09=09=09return outHref;
  5966. =09=09=09=09}
  5967.  
  5968. =09=09=09=09outHref =3D unescape(outHref);
  5969. =09=09=09=09if (outHref=2EindexOf("=3F") =3D=3D -1)
  5970. =09=09=09=09{
  5971. =09=09=09=09=09var ampPos =3D outHref=2EindexOf("&");
  5972. =09=09=09=09=09if (ampPos !=3D -1)
  5973. =09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, ampPos);
  5974. =09=09=09=09}
  5975. =09=09=09=09
  5976. =09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
  5977. =09=09=09=09=09return false;
  5978. =09=09=09=09return outHref;
  5979. =09=09=09}
  5980. =09=09}
  5981. =09}
  5982. =09
  5983. =09// auction=2Eco=2Ekr
  5984. =09parentNode =3D tag=2EparentNode;
  5985. =09if (parentNode && (parentNode=2EclassName=2EtoLowerCase() =3D=3D "link"=
  5986. ))
  5987. =09{
  5988. =09=09if (tag=2Ehref=2EindexOf("adcr=2Enaver=2Ecom") > -1)
  5989. =09=09{
  5990. =09=09=09outHref =3D tag=2EinnerText;
  5991. =09=09=09if ((outHref =3D=3D null) || (outHref=2Elength < 0))
  5992. =09=09=09=09return false;
  5993. =09=09=09=09
  5994. =09=09=09return outHref;
  5995. =09=09}
  5996. =09}
  5997. =09
  5998. =09// latin america ebay
  5999. =09if ( tag=2Ehref=2EtoLowerCase()=2EindexOf("clickcounter=3F") > -1 )
  6000. =09{
  6001. =09=09var spanElements =3D tag=2EgetElementsByTagName("span");
  6002. =09=09if ((spanElements !=3D null)=09=09=09=09&&=20
  6003. =09=09=09(spanElements=2Elength > 0))
  6004. =09=09{
  6005. =09=09=09if ( spanElements[0]=2EclassName=2EtoLowerCase() =3D=3D "mclics-u=
  6006. rl" )
  6007. =09=09=09{
  6008. =09=09=09=09outHref =3D spanElements[0]=2EinnerHTML;
  6009. =09=09=09=09if ( outHref =3D=3D null || outHref=2Elength < 0 )
  6010. =09=09=09=09=09return false;
  6011. =09=09=09=09outHref =3D searchshield=2EremoveHtmlTags(outHref);
  6012. =09=09=09=09if (outHref=2EindexOf(" ") =3D=3D -1)
  6013. =09=09=09=09{=09// no spaces
  6014. =09=09=09=09=09if (outHref=2EindexOf("=2E") > -1)
  6015. =09=09=09=09=09{=09// at least one dot=20
  6016. =09=09=09=09=09=09if ((outHref=2EtoLowerCase()=2EindexOf("mercadolibre") =3D=
  6017. =3D -1) &&=20
  6018. =09=09=09=09=09=09=09(outHref=2EtoLowerCase()=2EindexOf("mercadolivre") =3D=
  6019. =3D -1))=20
  6020. =09=09=09=09=09=09{
  6021. =09=09=09=09=09=09=09return outHref;
  6022. =09=09=09=09=09=09}
  6023. =09=09=09=09=09}
  6024. =09=09=09=09}
  6025. =09=09=09}
  6026. =09=09}
  6027. =09}
  6028. =09
  6029. =09return false;
  6030. };
  6031. ///////////////    EBAY SEARCH ENGINE    ///////////////
  6032.  
  6033.  
  6034.  
  6035.  
  6036. ///////////////    DIGG SEARCH ENGINE    ///////////////
  6037. searchshield=2EDiggSearchEngine =3D function(search)
  6038. {
  6039. =09searchshield=2ESearchEngine=2Ecall(this, search);
  6040. =09this=2Enew=5Flinks=09=3D false;
  6041. };
  6042. searchshield=2EDiggSearchEngine=2Eprototype =3D new searchshield=2ESearchE=
  6043. ngine();
  6044. searchshield=2EDiggSearchEngine=2Eprototype=2Econstructor =3D searchshield=
  6045. =2EDiggSearchEngine;
  6046. searchshield=2EDiggSearchEngine=2Eprototype=2Ename =3D "digg";
  6047. searchshield=2EDiggSearchEngine=2Eprototype=2EvalidSearch =3D function(hre=
  6048. f)
  6049. {
  6050. =09var uri;
  6051. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  6052. search)
  6053. =09=09uri =3D searchshield=2EparseLink(href);
  6054. =09else
  6055. =09=09uri =3D this=2Esearch=2Euri;
  6056.  
  6057. =09if(!uri || !uri=2Ehost)
  6058. =09=09return false;
  6059. =09
  6060. =09var domain=3D uri=2Ehost;
  6061. =09// re stitch the uri path and query elements
  6062. =09// to use existing logic
  6063. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  6064. =09
  6065. =09if ((domain=2EindexOf("digg=2Ecom") > -1)=09&&
  6066. =09=09(path=2EindexOf("/ad") =3D=3D -1))
  6067. =09{
  6068. =09=09return true;
  6069. =09}
  6070. =09
  6071. =09return false;
  6072. };
  6073. searchshield=2EDiggSearchEngine=2Eprototype=2EincludeLink =3D function(tag=
  6074. )
  6075. {
  6076. =09var outHref =3D false;
  6077. =09var findStr =3D "";
  6078. =09
  6079. =09if ((tag=2EparentNode) &&
  6080. =09=09(tag=2EparentNode=2EclassName=2EtoLowerCase() =3D=3D "digg-count"))
  6081. =09{
  6082. =09=09return false;
  6083. =09}
  6084. =09
  6085. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  6086. t))
  6087. =09{
  6088. =09=09if (tag=2EclassName && tag=2EclassName=2EindexOf('source') !=3D -1)
  6089. =09=09{
  6090. =09=09=09findStr =3D "/search=3Fq=3Dsite:";
  6091. =09=09=09var urlPos =3D tag=2Ehref=2EindexOf(findStr);
  6092. =09=09=09if (urlPos !=3D -1)
  6093. =09=09=09{
  6094. =09=09=09=09urlPos +=3D 15;
  6095. =09=09=09=09outHref =3D tag=2Ehref=2Esubstring(urlPos);
  6096. =09=09=09=09return outHref;
  6097. =09=09=09}
  6098. =09=09}
  6099. =09}
  6100. =09
  6101. =09return false;
  6102. };
  6103. searchshield=2EDiggSearchEngine=2Eprototype=2EaddImage =3D function(node, =
  6104. image, hidden)
  6105. {
  6106. =09// remove style that is set when alt image is applied
  6107. =09this=2EaddAnchorStyle =3D {
  6108. =09=09background: "none"
  6109. =09};
  6110. =09=09
  6111. =09var parent =3D searchshield=2ESearchEngine=2Eprototype=2EaddImage;
  6112. =09return parent=2Ecall(this, node, image, hidden);
  6113. };
  6114. ///////////////    DIGG SEARCH ENGINE    ///////////////
  6115.  
  6116.  
  6117.  
  6118.  
  6119. ///////////////    SLASHDOT SEARCH ENGINE    ///////////////
  6120. searchshield=2ESlashdotSearchEngine =3D function(search)
  6121. {
  6122. =09searchshield=2ESearchEngine=2Ecall(this, search);
  6123. =09this=2EshowCleanVerdicts =3D false;
  6124. =09this=2Enew=5Flinks =3D false;
  6125. =09this=2Etype =3D 'inline';
  6126. };
  6127. searchshield=2ESlashdotSearchEngine=2Eprototype =3D new searchshield=2ESea=
  6128. rchEngine();
  6129. searchshield=2ESlashdotSearchEngine=2Eprototype=2Econstructor =3D searchsh=
  6130. ield=2ESlashdotSearchEngine;
  6131. searchshield=2ESlashdotSearchEngine=2Eprototype=2Ename =3D "slashdot";
  6132. searchshield=2ESlashdotSearchEngine=2Eprototype=2EvalidSearch =3D function=
  6133. (href)
  6134. {
  6135. =09var uri;
  6136. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  6137. search)
  6138. =09=09uri =3D searchshield=2EparseLink(href);
  6139. =09else
  6140. =09=09uri =3D this=2Esearch=2Euri;
  6141.  
  6142. =09if(!uri || !uri=2Ehost)
  6143. =09=09return false;
  6144. =09
  6145. =09var domain=3D uri=2Ehost;
  6146. =09// re stitch the uri path and query elements
  6147. =09// to use existing logic
  6148. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  6149. =09
  6150. =09if (domain=2EindexOf("slashdot=2Eorg") !=3D -1)
  6151. =09{
  6152. =09=09return true;
  6153. =09}
  6154. =09
  6155. =09return false;
  6156. };
  6157. searchshield=2ESlashdotSearchEngine=2Eprototype=2EincludeLink =3D function=
  6158. (tag)
  6159. {
  6160. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  6161. t))
  6162. =09=09return false;
  6163. =09=09
  6164. =09if ( tag=2Ehref=2EindexOf("mailto:") !=3D -1 )
  6165. =09=09return false;
  6166. =09=09
  6167. =09if ( tag=2Ehref=2EindexOf("slashdot=2Eorg") !=3D -1 )
  6168. =09=09return false;
  6169. =09=09
  6170. =09if (tag=2EparentNode && (tag=2EparentNode=2EtagName =3D=3D "DIV"))
  6171. =09{
  6172. =09=09if (tag=2EparentNode=2Eid=2EindexOf("text-") !=3D -1)
  6173. =09=09{
  6174. =09=09=09return tag=2Ehref;
  6175. =09=09}
  6176. =09}
  6177. =09else if ( tag=2EparentNode && tag=2EparentNode=2EparentNode && tag=2Epa=
  6178. rentNode=2EparentNode=2EtagName =3D=3D "DIV" )
  6179. =09{
  6180. =09=09if ( tag=2EparentNode=2EparentNode=2Eid=2EindexOf("text-") !=3D -1 )=
  6181.  
  6182. =09=09{
  6183. =09=09=09return tag=2Ehref;
  6184. =09=09}
  6185. =09}
  6186.  
  6187. =09return false;
  6188. };
  6189. searchshield=2ESlashdotSearchEngine=2Eprototype=2EaddImage =3D function(no=
  6190. de, image, hidden)
  6191. {
  6192. =09var doc=09=09=09=3D this=2Esearch=2Edoc;
  6193. =09
  6194. =09this=2Einit=5Finline=5Fratings(doc);
  6195. =09this=2Eshow=5Finline=5Fratings(doc, node, image);
  6196. };
  6197. ///////////////    SLASHDOT SEARCH ENGINE    ///////////////
  6198.  
  6199.  
  6200.  
  6201.  
  6202. ///////////////    TWITTER SEARCH ENGINE    ///////////////
  6203. searchshield=2ETwitterSearchEngine =3D function(search)
  6204. {
  6205. =09searchshield=2ESearchEngine=2Ecall(this, search);
  6206. =09this=2EshowCleanVerdicts =3D false;
  6207. =09this=2Enew=5Flinks =3D false;
  6208. =09this=2Etype =3D 'inline';
  6209. };
  6210. searchshield=2ETwitterSearchEngine=2Eprototype =3D new searchshield=2ESear=
  6211. chEngine();
  6212. searchshield=2ETwitterSearchEngine=2Eprototype=2Econstructor =3D searchshi=
  6213. eld=2ETwitterSearchEngine;
  6214. searchshield=2ETwitterSearchEngine=2Eprototype=2Ename =3D "twitter";
  6215. searchshield=2ETwitterSearchEngine=2Eprototype=2Etwitter=5Ffilter=5Furls =3D=
  6216.  ["twitpic=2Ecom", "twitterfeed=2Ecom", "twitter=2Epeoplebrowsr=2Ecom"];
  6217. searchshield=2ETwitterSearchEngine=2Eprototype=2EvalidSearch =3D function(=
  6218. href)
  6219. {
  6220. =09var uri;
  6221. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  6222. search)
  6223. =09=09uri =3D searchshield=2EparseLink(href);
  6224. =09else
  6225. =09=09uri =3D this=2Esearch=2Euri;
  6226.  
  6227. =09if(!uri || !uri=2Ehost)
  6228. =09=09return false;
  6229. =09
  6230. =09var domain=3D uri=2Ehost;
  6231.  
  6232. =09if (domain=2EindexOf("twitter=2Ecom") !=3D -1)
  6233. =09{
  6234. =09=09return true;
  6235. =09}
  6236. =09
  6237. =09return false;
  6238. };
  6239. searchshield=2ETwitterSearchEngine=2Eprototype=2EincludeLink =3D function(=
  6240. tag)
  6241. {
  6242. =09if (tag=2EclassName =3D=3D 'twitter-timeline-link')
  6243. =09{
  6244. =09=09// can't pass the tag's href if domain is t=2Eco cause then new post=
  6245. s
  6246. =09=09// will not get an immediate verdict even if it has a dangerous link=
  6247.  
  6248. =09=09if (tag=2Ehref=2EindexOf('/t=2Eco/') !=3D -1)
  6249. =09=09{
  6250. =09=09=09// the tag's inner text may be truncated and end in the=20
  6251. =09=09=09// unicode suspension character (i=2Ee=2E, =2E=2E=2E) and it cann=
  6252. ot=20
  6253. =09=09=09// be used=2E
  6254. =09=09=09if (tag=2EinnerText=2EcharCodeAt(tag=2EinnerText=2Elength-1) =3D=3D=
  6255.  8230)
  6256. =09=09=09{
  6257. =09=09=09=09// older posts may not always have data-expanded-url
  6258. =09=09=09=09var destUrl =3D tag=2EgetAttribute('data-expanded-url');
  6259. =09=09=09=09if (!!destUrl)
  6260. =09=09=09=09=09return destUrl;
  6261.  
  6262. =09=09=09=09var finalUrl =3D searchshield=2EavgCallFunc(document, 'GetFina=
  6263. lUrl', tag=2Ehref);
  6264. =09=09=09=09return finalUrl;
  6265. =09=09=09}
  6266.  
  6267. =09=09=09return searchshield=2EcheckUrl(tag=2EinnerText);
  6268. =09=09}
  6269.  
  6270. =09=09return tag=2Ehref;
  6271. =09}
  6272.  
  6273. =09return false;
  6274. };
  6275. searchshield=2ETwitterSearchEngine=2Eprototype=2EaddImage =3D function(nod=
  6276. e, image, hidden)
  6277. {
  6278. =09var doc=09=09=09=3D this=2Esearch=2Edoc;
  6279. =09=09
  6280. =09this=2Einit=5Finline=5Fratings(doc);
  6281. =09this=2Eshow=5Finline=5Fratings(doc, node, image);
  6282. };
  6283. ///////////////    TWITTER SEARCH ENGINE    ///////////////
  6284.  
  6285.  
  6286.  
  6287.  
  6288. ///////////////    GMAIL SEARCH ENGINE    ///////////////
  6289. searchshield=2EGMailSearchEngine =3D function(search)
  6290. {
  6291. =09searchshield=2ESearchEngine=2Ecall(this, search);
  6292. =09this=2EprocessFrames =3D true;
  6293. =09this=2EshowCleanVerdicts=09=09=3D false;
  6294. =09this=2Etype =3D 'inline';
  6295. };
  6296. searchshield=2EGMailSearchEngine=2Eprototype =3D new searchshield=2ESearch=
  6297. Engine();
  6298. searchshield=2EGMailSearchEngine=2Eprototype=2Econstructor =3D searchshiel=
  6299. d=2EGMailSearchEngine;
  6300. searchshield=2EGMailSearchEngine=2Eprototype=2Ename =3D "gmail";=09// the =
  6301. name by which the search engine is known (always lowercase)
  6302. searchshield=2EGMailSearchEngine=2Eprototype=2EvalidSearch =3D function(hr=
  6303. ef)
  6304. {
  6305. =09var uri;
  6306. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  6307. search)
  6308. =09=09uri =3D searchshield=2EparseLink(href);
  6309. =09else
  6310. =09=09uri =3D this=2Esearch=2Euri;
  6311.  
  6312. =09if(!uri || !uri=2Ehost)
  6313. =09=09return false;
  6314.  
  6315. =09var domain=09=09=3D uri=2Ehost;
  6316. =09
  6317. =09// re stitch the uri path and query elements to
  6318. =09// use existing logic
  6319. =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
  6320.  
  6321. =09if ((domain=2EindexOf("mail=2Egoogle=2E") !=3D -1) ||=20
  6322. =09=09(domain=2EindexOf("gmail=2E") !=3D -1))
  6323. =09{
  6324. =09=09return true;
  6325. =09}
  6326.  
  6327. =09return false;
  6328. };
  6329. searchshield=2EGMailSearchEngine=2Eprototype=2EincludeLink =3D function(ta=
  6330. g)
  6331. {
  6332. =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
  6333. t))
  6334. =09=09return false;
  6335.  
  6336. =09// don't mark anything but http://
  6337. =09if (tag=2Ehref=2EindexOf("mailto") =3D=3D 0)
  6338. =09=09return false;
  6339.  
  6340. =09var parentDiv =3D searchshield=2EgetParentNodeByTagName("DIV", tag, "cl=
  6341. assName");
  6342. =09if ((parentDiv) &&
  6343. =09=09((parentDiv=2EclassName =3D=3D "ii gt") || // mail message body
  6344. =09=09 (parentDiv=2EclassName =3D=3D "mv") ||=09// top sponsored links
  6345. =09=09 (parentDiv=2EclassName =3D=3D "vb") ||=09// right sponsored links
  6346. =09=09 (parentDiv=2EclassName =3D=3D "im") ||=09// inside quotes
  6347. =09=09 (parentDiv=2EclassName =3D=3D "gmail=5Fquote") ||=09// quote
  6348. =09=09 (parentDiv=2EclassName =3D=3D "msg")=09// basic html mode
  6349. =09=09 ))=09// right ads
  6350. =09{
  6351. =09=09// parse for any ads
  6352. =09=09var newHref =3D this=2EparseAdUrl(tag=2Ehref);
  6353. =09=09return newHref;
  6354. =09}
  6355. =09
  6356. =09return false;
  6357. };
  6358. searchshield=2EGMailSearchEngine=2Eprototype=2EaddImage =3D function(node,=
  6359.  image, hidden)
  6360. {
  6361. =09var doc=09=09=09=3D this=2Esearch=2Edoc;
  6362. =09=09
  6363. =09this=2Einit=5Finline=5Fratings(doc);
  6364. =09this=2Eshow=5Finline=5Fratings(doc, node, image);
  6365. };
  6366. searchshield=2EGMailSearchEngine=2Eprototype=2EparseAdUrl =3D function(hre=
  6367. f)
  6368. {
  6369. =09if (!href)
  6370. =09=09return href;
  6371.  
  6372. =09// check for google ad
  6373. =09var regex =3D "^http(s)=3F\:\/\/([a-zA-Z0-9]+)\=2Egooglesyndication\=2E=
  6374. com=2E+\&adurl\=3D(=2E+)";
  6375. =09var re =3D new RegExp(regex);
  6376. =09var matches =3D href=2Ematch(re);
  6377. =09if (matches && (matches=2Elength >=3D 4))
  6378. =09{
  6379. =09=09// else we want the fourth value
  6380. =09=09var match =3D matches[3];
  6381. =09=09if (match && (match=2Elength > 0))
  6382. =09=09=09return match
  6383. =09}
  6384.  
  6385. =09return href;
  6386. };
  6387. ///////////////    GMAIL SEARCH ENGINE    ///////////////
  6388.  
  6389.  
  6390.  
  6391.  
  6392. ///////////////    FACEBOOK SEARCH ENGINE    ///////////////
  6393. searchshield=2EFacebookSearchEngine =3D function(search)
  6394. {
  6395. =09searchshield=2ESearchEngine=2Ecall(this, search);
  6396. =09this=2EshowCleanVerdicts =3D false;
  6397. =09this=2Etype =3D 'inline';
  6398. };
  6399. searchshield=2EFacebookSearchEngine=2Eprototype =3D new searchshield=2ESea=
  6400. rchEngine();
  6401. searchshield=2EFacebookSearchEngine=2Eprototype=2Econstructor =3D searchsh=
  6402. ield=2EFacebookSearchEngine;
  6403. searchshield=2EFacebookSearchEngine=2Eprototype=2Ename =3D "facebook";=09/=
  6404. / the name by which the search engine is known (always lowercase)
  6405. searchshield=2EFacebookSearchEngine=2Eprototype=2EvalidSearch =3D function=
  6406. (href)
  6407. {
  6408. =09var uri;
  6409. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  6410. search)
  6411. =09=09uri =3D searchshield=2EparseLink(href);
  6412. =09else
  6413. =09=09uri =3D this=2Esearch=2Euri;
  6414.  
  6415. =09if(!uri || !uri=2Ehost)
  6416. =09=09return false;
  6417.  
  6418. =09if (uri=2Ehost=2EindexOf("www=2Efacebook=2Ecom") !=3D -1)=20
  6419. =09=09return true;
  6420.  
  6421. =09return false;
  6422. };
  6423. searchshield=2EFacebookSearchEngine=2Eprototype=2EincludeLink =3D function=
  6424. (tag)
  6425. {
  6426. =09if (!tag=2Ehref || (tag=2Ehref=2EindexOf('facebook=2Ecom') > -1) || (ta=
  6427. g=2Ehref=2EindexOf('ak=2Efbcdn=2Enet') > -1))
  6428. =09=09return false;
  6429. =09
  6430. =09return tag=2Ehref
  6431. };
  6432. searchshield=2EFacebookSearchEngine=2Eprototype=2EaddImage =3D function(no=
  6433. de, image, hidden)
  6434. {
  6435. =09var doc=09=09=09=3D this=2Esearch=2Edoc;
  6436. =09=09
  6437. =09this=2Einit=5Finline=5Fratings(doc);
  6438. =09this=2Eshow=5Finline=5Fratings(doc, node, image);
  6439. };
  6440. ///////////////    FACEBOOK SEARCH ENGINE    ///////////////
  6441.  
  6442.  
  6443. ///////////////    MYSPACE SEARCH ENGINE    ///////////////
  6444. searchshield=2EMySpaceSearchEngine =3D function(search)
  6445. {
  6446. =09searchshield=2ESearchEngine=2Ecall(this, search);
  6447. =09this=2EshowCleanVerdicts =3D false;
  6448. =09this=2Etype =3D 'inline';
  6449. };
  6450. searchshield=2EMySpaceSearchEngine=2Eprototype =3D new searchshield=2ESear=
  6451. chEngine();
  6452. searchshield=2EMySpaceSearchEngine=2Eprototype=2Econstructor =3D searchshi=
  6453. eld=2EMySpaceSearchEngine;
  6454. searchshield=2EMySpaceSearchEngine=2Eprototype=2Ename =3D "myspace";=09// =
  6455. the name by which the search engine is known (always lowercase)
  6456. searchshield=2EMySpaceSearchEngine=2Eprototype=2EvalidSearch =3D function(=
  6457. href)
  6458. {
  6459. =09var uri;
  6460. =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
  6461. search)
  6462. =09=09uri =3D searchshield=2EparseLink(href);
  6463. =09else
  6464. =09=09uri =3D this=2Esearch=2Euri;
  6465.  
  6466. =09if(!uri || !uri=2Ehost)
  6467. =09=09return false;
  6468.  
  6469. =09if (uri=2Ehost=2EindexOf("www=2Emyspace=2Ecom") !=3D -1)=20
  6470. =09=09return true;
  6471.  
  6472. =09return false;
  6473. };
  6474. searchshield=2EMySpaceSearchEngine=2Eprototype=2EincludeLink =3D function(=
  6475. tag)
  6476. {
  6477. =09// related domains do not get verdicts
  6478. =09if (/myspace/=2Etest(tag=2Ehostname) || /myspace/=2Etest(tag=2Ehref))
  6479. =09=09return false;
  6480.  
  6481. =09if (/msplinks\=2Ecom/i=2Etest(tag=2Ehref))
  6482. =09=09return searchshield=2EcheckUrl(tag=2EinnerText);
  6483. =09
  6484. =09return tag=2Ehref;
  6485. };
  6486. searchshield=2EMySpaceSearchEngine=2Eprototype=2EaddImage =3D function(nod=
  6487. e, image, hidden)
  6488. {
  6489. =09var doc=09=09=09=3D this=2Esearch=2Edoc;
  6490. =09=09
  6491. =09this=2Einit=5Finline=5Fratings(doc);
  6492. =09this=2Eshow=5Finline=5Fratings(doc, node, image);
  6493. };
  6494. ///////////////    MYSPACE SEARCH ENGINE    ///////////////
  6495.  
  6496.  
  6497.  
  6498. ///////////////    AVG TOOLBAR REPORTING    ///////////////
  6499. var avgreport =3D {
  6500. =09BLOCK=5FSEVERITY: 3,
  6501. =09scanResult: function (doc, url, foundUrl, ip) {
  6502. =09=09// report scan end only if surf enabled
  6503. =09=09if ('1' !=3D searchshield=2EavgCallFunc(doc, 'GetSurfEnabled'))
  6504. =09=09=09return;
  6505. =09=09
  6506. =09=09// for now native is handling the interstitial=09
  6507. =09=09var results =3D searchshield=2EavgCallFunc(doc, 'MalsiteCheck', url)=
  6508. ;
  6509. =09=09if ( results =3D=3D null )
  6510. =09=09=09return;
  6511. =09=09
  6512. =09=09var parts =3D results=2Esplit('::');
  6513. =09=09
  6514. =09=09// need at least severity
  6515. =09=09if (parts =3D=3D null)
  6516. =09=09=09return;
  6517.  
  6518. =09=09if (!ip)
  6519. =09=09=09ip =3D "";
  6520. =09=09=09
  6521. =09=09// use a block severity if foundUrl is given
  6522. =09=09var severity =3D !!foundUrl =3F avgreport=2EBLOCK=5FSEVERITY : parse=
  6523. Int(parts[0], 10);
  6524. =09=09var category =3D "";
  6525. =09=09var threat=09 =3D "";
  6526.  
  6527. =09=09// fill in the category and threat if something was found
  6528. =09=09if (severity > 0)
  6529. =09=09{
  6530. =09=09=09category =3D parts[2];
  6531. =09=09=09threat=09 =3D parts[4];
  6532. =09=09}
  6533. //=09=09else
  6534. //=09=09=09return;
  6535. =09=09
  6536. =09=09var scan=5Fresult =3D searchshield=2EavgCallFunc(doc, 'ReportScanRes=
  6537. ult', url, url, threat, category, ip, severity);
  6538. =09=09var scan=5Fend =3D avgreport=2EscanEnd(doc, url);
  6539. =09=09
  6540. =09=09return (scan=5Fresult && scan=5Fend);
  6541. =09},
  6542. =09scanEnd: function (doc, url) {
  6543. =09=09return searchshield=2EavgCallFunc(doc, 'ReportScanEnd', url);
  6544. =09},
  6545. =09GetInterstitialIP: function (interstitial) {
  6546. =09=09// simple regex to pull the IP address
  6547. =09=09var regex =3D /(([1-9][0-9]{0,2})|0)\=2E(([1-9][0-9]{0,2})|0)\=2E(([=
  6548. 1-9][0-9]{0,2})|0)\=2E(([1-9][0-9]{0,2})|0)/;
  6549. =09=09var match =3D regex=2Eexec(interstitial);
  6550. =09=09if (!match)
  6551. =09=09=09return '';
  6552.  
  6553. =09=09return match[0];
  6554. =09}
  6555. }
  6556. ///////////////    AVG TOOLBAR REPORTING    ///////////////
  6557.  
  6558.  
  6559. ///////////////    FLYOVERS    ///////////////
  6560. var avglsflyover =3D {
  6561. =09count: 0,
  6562. =09poppedUp: false,
  6563. =09poppedElement: null,
  6564. =09reset: function () {
  6565. =09=09avglsflyover=2Ecount =3D 0;
  6566. =09=09avglsflyover=2EpoppedUp =3D false;
  6567. =09=09avglsflyover=2EpoppedElement =3D null;
  6568. =09},
  6569. =09popup: function (event, hash, search, flyover) {
  6570. =09=09if (!event)
  6571. =09=09=09event =3D window=2Eevent;
  6572.  
  6573. =09=09var div =3D document=2EgetElementById("XPLSS=5FFlyover");
  6574. =09=09if (div =3D=3D null)
  6575. =09=09=09return;
  6576.  
  6577. =09=09// establish target element and get its containing document object
  6578. =09=09// in case verdict is inside a frame
  6579. =09=09var eventTarget =3D event=2EsrcElement;
  6580. =09=09var frameDoc =3D eventTarget=2EownerDocument;
  6581.  
  6582. =09=09// if the element is the clock, don't pop over it
  6583. =09=09if ((eventTarget=2Esrc !=3D null) && (eventTarget=2Esrc=2EindexOf("c=
  6584. lock=2Egif") !=3D -1))
  6585. =09=09=09return;
  6586. =09=09
  6587. =09=09// save the element we popped over
  6588. =09=09avglsflyover=2EpoppedElement =3D eventTarget;
  6589.  
  6590. =09=09// if no flyover get it
  6591. =09=09if ((flyover =3D=3D null) || (flyover =3D=3D ""))
  6592. =09=09{
  6593. =09=09=09flyover =3D searchshield=2EavgCallFunc(frameDoc, 'BuildFlyover', =
  6594. hash);
  6595.  
  6596. =09=09=09if (!flyover)
  6597. =09=09=09=09return;
  6598.  
  6599. =09=09=09// cleanup flyover, replace any new lines
  6600. =09=09=09flyover =3D flyover=2Ereplace(/\r/g, "");
  6601. =09=09=09flyover =3D flyover=2Ereplace(/\n/g, "");
  6602. =09=09=09// escape any single quotes
  6603. =09=09=09flyover =3D flyover=2Ereplace(/'/g, "&#39;");
  6604. =09=09}
  6605.  
  6606. =09=09// set the html in the layer
  6607. =09=09div=2EinnerHTML =3D flyover;
  6608.  
  6609. =09=09// needed to prevent the flyover from hiding inadvertantly in IE7
  6610. =09=09if (searchshield=2EdocMode =3D=3D 7) {
  6611. =09=09=09div=2Estyle=2EbackgroundColor =3D "#fff";
  6612. =09=09}
  6613.  
  6614. =09=09// there is an unwanted text node that causes vertical misalignment =
  6615. of flyover
  6616. =09=09if (div=2EfirstChild=2EnodeType =3D=3D 3)
  6617. =09=09=09div=2EremoveChild(div=2EfirstChild);
  6618. =09=09
  6619. =09=09avglsflyover=2EpoppedUp =3D true;
  6620.  
  6621. =09=09// reset display count
  6622. =09=09avglsflyover=2Ecount =3D 0;
  6623.  
  6624. =09=09avglsflyover=2Eposition();
  6625. =09},
  6626. =09hide: function (event) {
  6627. =09=09var frameDoc =3D document || top=2Edocument;
  6628. =09=09var div =3D frameDoc=2EgetElementById("XPLSS=5FFlyover");
  6629. =09=09if ((div =3D=3D null) || (div=2Estyle =3D=3D null) || (div=2Estyle=2E=
  6630. visibility =3D=3D "hidden"))
  6631. =09=09=09return;
  6632.  
  6633. =09=09var trans=5Fdiv =3D frameDoc=2EgetElementById("XPLSS=5FTrans");
  6634. =09=09if ((trans=5Fdiv =3D=3D null) || (trans=5Fdiv=2Estyle =3D=3D null) |=
  6635. | (trans=5Fdiv=2Estyle=2Evisibility =3D=3D "hidden"))
  6636. =09=09=09return;
  6637.  
  6638. =09=09// scroll and keydown events will pass a null event by design
  6639. =09=09// toElement will be null when mousing out of frameelement containin=
  6640. g a verdict
  6641. =09=09if (event =3D=3D null || event=2EtoElement =3D=3D null)
  6642. =09=09{
  6643. =09=09=09return;
  6644. =09=09}
  6645.  
  6646. =09=09if (trans=5Fdiv=2Econtains(event=2EtoElement) || div=2Econtains(even=
  6647. t=2EtoElement))
  6648. =09=09=09return;
  6649.  
  6650. =09=09// if the toElement is a cooresponding alt image then don't hide
  6651. =09=09// use try/catch because toElement will be null when mousing out of =
  6652. frame
  6653. =09=09try {
  6654. =09=09=09if (!!event=2EtoElement=2Eid && !!event=2EsrcElement=2Eid)
  6655. =09=09=09{
  6656. =09=09=09=09if (event=2EtoElement=2Eid=2EindexOf(event=2EsrcElement=2Eid=2E=
  6657. substring(0,event=2EsrcElement=2Eid=2Elength-2)) =3D=3D 0)
  6658. =09=09=09=09=09return;
  6659. =09=09
  6660. =09=09=09=09if (event=2EsrcElement=2Eid =3D=3D 'XPLSS=5FTrans' && /XPLSS=5F=
  6661. \d+VU\d/=2Etest(event=2EtoElement=2Eid))
  6662. =09=09=09=09=09return;
  6663. =09=09=09}
  6664. =09=09}
  6665. =09=09catch(err){}
  6666.  
  6667.  
  6668. =09=09// hide and move somewhere off screen (negative offsets)
  6669. =09=09div=2Estyle=2Evisibility =3D "hidden";
  6670. =09=09div=2Estyle=2Eleft =3D "-2100px";
  6671. =09=09div=2Estyle=2Etop  =3D "-2100px";
  6672. =09=09trans=5Fdiv=2Estyle=2Evisibility =3D "hidden";
  6673. =09=09trans=5Fdiv=2Estyle=2Eleft =3D "-2100px";
  6674. =09=09trans=5Fdiv=2Estyle=2Etop  =3D "-2100px";
  6675.  
  6676. =09=09return true;
  6677. =09},
  6678. =09position: function () {
  6679. =09=09if (!avglsflyover=2EpoppedUp || (avglsflyover=2EpoppedElement =3D=3D=
  6680.  null))
  6681. =09=09=09return;
  6682.  
  6683. =09=09var flyover =3D document=2EgetElementById("XPLSS=5FFlyover");
  6684. =09=09if (flyover =3D=3D null)
  6685. =09=09=09return;
  6686.  
  6687.  
  6688. =09=09// relative position of flyover in relation to icon
  6689. =09=09var locateX =3D 0;  // 0=3Dleft, 1=3Dright
  6690. =09=09var locateY =3D 0;  // 0=3Dabove, 1=3Dbelow, 2=3Dbeside icon
  6691. =09
  6692. =09=09// get window sizes
  6693. =09=09var winSize=09=09=3D searchshield=2EviewPortSize();
  6694. =09=09var windowX=09=09=3D winSize[0];
  6695. =09=09var windowY=09=09=3D winSize[1];
  6696.  
  6697. =09=09// get the exact size of the flyover
  6698. =09=09var flyoverSize=09 =3D searchshield=2EelementSize(flyover);
  6699. =09=09var flyoverX=09 =3D flyoverSize[0];
  6700. =09=09var flyoverY=09 =3D flyoverSize[1];
  6701.  
  6702. =09=09var verdictWidth =3D 0;
  6703. =09=09if (avglsflyover=2EpoppedElement && avglsflyover=2EpoppedElement=2Ew=
  6704. idth)
  6705. =09=09=09verdictWidth =3D avglsflyover=2EpoppedElement=2Ewidth;
  6706. =09=09
  6707. =09=09// get the bounding rect for image(s)
  6708. =09=09var imgRect =3D searchshield=2EGetFullBoundingRect(avglsflyover=2Epo=
  6709. ppedElement);
  6710.  
  6711. =09=09// half width/height of element bounding rect
  6712. =09=09var halfX =3D (imgRect=2Eright - imgRect=2Eleft) / 2;
  6713. =09=09var halfY =3D (imgRect=2Ebottom- imgRect=2Etop) / 2;
  6714.  
  6715. =09=09// element the mouse is over, get the center position
  6716. =09=09var posX =3D searchshield=2EoffsetLeft(avglsflyover=2EpoppedElement)=
  6717.  + halfX;
  6718. =09=09var posY =3D searchshield=2EoffsetTop(avglsflyover=2EpoppedElement) =
  6719. + halfY;
  6720.  
  6721. =09=09// if a verdict is inside a frame must get offsets for the frame ele=
  6722. ment
  6723. =09=09var docFrames =3D document=2Eframes;
  6724. =09=09if (docFrames)
  6725. =09=09{
  6726. =09=09=09for (var i=3D0; i < docFrames=2Elength; i++)
  6727. =09=09=09{
  6728. =09=09=09=09try {
  6729. =09=09=09=09=09var frameElem =3D docFrames[i]=2EframeElement;
  6730. =09=09=09=09=09if (frameElem=2EcontentWindow=2Edocument=2EgetElementById(a=
  6731. vglsflyover=2EpoppedElement=2Eid))
  6732. =09=09=09=09=09{
  6733. =09=09=09=09=09=09posX +=3D searchshield=2EoffsetLeft(frameElem);
  6734. =09=09=09=09=09=09posY +=3D searchshield=2EoffsetTop(frameElem);
  6735. =09=09=09=09=09=09break;
  6736. =09=09=09=09=09}
  6737. =09=09=09=09}
  6738. =09=09=09=09catch(frmErr){}
  6739. =09=09=09}
  6740. =09=09}
  6741.  
  6742. =09=09var transXOffset =3D 0;
  6743. =09=09if (imgRect=2Emid =3D=3D undefined)
  6744. =09=09=09transXOffset =3D -1 * halfX;
  6745. =09=09else
  6746. =09=09=09transXOffset =3D ((imgRect=2Eright + imgRect=2Eleft) / 2) - imgRe=
  6747. ct=2Emid;
  6748. =09=09
  6749. =09=09// normalize pos to 0  -- get amount of scrolling in browser window
  6750. =09=09var scroll=09=09 =3D searchshield=2EscrollSize();
  6751. =09=09var pageOffsetX=09 =3D scroll[0];
  6752. =09=09var pageOffsetY=09 =3D scroll[1];
  6753.  
  6754. =09=09posX -=3D pageOffsetX;
  6755. =09=09posY -=3D pageOffsetY;
  6756.  
  6757. =09=09// setup the offsets
  6758. =09=09var offsetX =3D posX;
  6759. =09=09var offsetY =3D posY;
  6760.  
  6761. =09=09// calc where to display on page
  6762. =09=09if ((windowX - posX) > posX)
  6763. =09=09{
  6764. =09=09=09// right
  6765. =09=09=09offsetX +=3D halfX;
  6766. =09=09=09locateX =3D 1;
  6767. =09=09}
  6768. =09=09else
  6769. =09=09{
  6770. =09=09=09//left
  6771. =09=09=09offsetX -=3D (flyoverX + halfX);
  6772. =09=09}
  6773. =09=09if ((windowY - posY) > posY)
  6774. =09=09{
  6775. =09=09=09// below
  6776. =09=09=09if (posY < (windowY/4))
  6777. =09=09=09{
  6778. =09=09=09=09offsetY -=3D halfY;
  6779. =09=09=09=09locateY =3D 1;
  6780. =09=09=09}
  6781. =09=09=09else
  6782. =09=09=09{
  6783. =09=09=09=09offsetY -=3D (flyoverY / 2);
  6784. =09=09=09=09locateY =3D 2;
  6785. =09=09=09}
  6786. =09=09}
  6787. =09=09else
  6788. =09=09{
  6789. =09=09=09// above
  6790. =09=09=09if ((windowY - posY) < (windowY/4))
  6791. =09=09=09{
  6792. =09=09=09=09offsetY -=3D (flyoverY - halfY);
  6793. =09=09=09}
  6794. =09=09=09else
  6795. =09=09=09{
  6796. =09=09=09=09offsetY -=3D (flyoverY / 2);
  6797. =09=09=09=09locateY =3D 2;
  6798. =09=09=09}
  6799. =09=09}
  6800. =09=09// make sure we aren't off the screen
  6801. =09=09if (offsetY < 0)
  6802. =09=09=09offsetY =3D 0;
  6803.  
  6804. =09=09if ((offsetY + flyoverY) > windowY)
  6805. =09=09=09offsetY =3D windowY - flyoverY;
  6806.  
  6807. =09=09// add page offsets back
  6808. =09=09offsetX +=3D pageOffsetX;
  6809. =09=09offsetY +=3D pageOffsetY;
  6810. =09=09posX +=3D pageOffsetX;
  6811. =09=09posY +=3D pageOffsetY;
  6812.  
  6813. =09=09var paddedOffsetX =3D 0; //provide space between icon and flyover
  6814. =09=09var padX =3D 3;
  6815. =09=09if (locateX =3D=3D 0)
  6816. =09=09=09paddedOffsetX =3D offsetX - padX;
  6817. =09=09else
  6818. =09=09=09paddedOffsetX =3D offsetX + padX;
  6819.  
  6820.  
  6821. =09=09// set where to put the flyover
  6822. =09=09flyover=2Estyle=2Etop =3D offsetY + "px";
  6823. =09=09flyover=2Estyle=2Eleft =3D paddedOffsetX + "px";
  6824.  
  6825.  
  6826. =09=09// set where to put the transparent layer
  6827. =09=09var trans =3D document=2EgetElementById("XPLSS=5FTrans");
  6828. =09=09if (trans !=3D null)
  6829. =09=09{
  6830. =09=09=09var trans=5Fleft =3D 0;
  6831. =09=09=09var trans=5Ftop  =3D 0;
  6832. =09=09=09var trans=5Fwidth=3D 0;
  6833. =09=09=09var trans=5Fheight =3D 0;
  6834.  
  6835. =09=09=09// transparent layer should overlap verdict image
  6836. =09=09=09if (locateX =3D=3D 0)
  6837. =09=09=09=09trans=5Fleft =3D posX - flyoverX - halfX;  // left=20
  6838. =09=09=09else
  6839. =09=09=09=09trans=5Fleft =3D posX - transXOffset - verdictWidth; // right
  6840.  
  6841. =09=09=09trans=2Estyle=2Eleft=09=3D trans=5Fleft + "px";
  6842. =09=09=09trans=2Estyle=2Etop=09=09=3D offsetY + "px";
  6843.  
  6844. =09=09=09trans=2Estyle=2Ewidth=09=3D flyoverX + verdictWidth + "px";
  6845. =09=09=09trans=2Estyle=2Eheight=09=3D flyoverY + "px";
  6846. =09=09}
  6847.  
  6848. =09=09avglsflyover=2Edisplay();
  6849. =09},
  6850. =09display: function () {
  6851. =09=09avglsflyover=2Ecount++;
  6852. =09=09if (avglsflyover=2Ecount =3D=3D 1)
  6853. =09=09{
  6854. =09=09=09var flyover =3D document=2EgetElementById("XPLSS=5FFlyover");
  6855. =09=09=09if (flyover =3D=3D null)
  6856. =09=09=09=09return;
  6857.  
  6858. =09=09=09// show the flyover, must use a little count to tell, crazy stuff=
  6859.  
  6860. =09=09=09flyover=2Estyle=2Evisibility =3D "visible";
  6861. =09=09=09flyover=2Eonmouseout =3D function(){
  6862. =09=09=09=09avglsflyover=2Ehide(event);
  6863. =09=09=09};
  6864.  
  6865. =09=09=09// show the transparent layer
  6866. =09=09=09var trans=5Fdiv =3D document=2EgetElementById("XPLSS=5FTrans");
  6867. =09=09=09if (trans=5Fdiv =3D=3D null)
  6868. =09=09=09=09return;
  6869.  
  6870. =09=09=09trans=5Fdiv=2Estyle=2Evisibility =3D "visible";
  6871. =09=09=09trans=5Fdiv=2Eonmouseout =3D function(){
  6872. =09=09=09=09avglsflyover=2Ehide(event);
  6873. =09=09=09};
  6874.  
  6875. =09=09=09avglsflyover=2EpoppedUp =3D false;
  6876. =09=09}
  6877. =09},
  6878. =09show: function () {
  6879. =09=09var div =3D document=2EgetElementById("XPLSS=5FFlyover");
  6880. =09=09if (div =3D=3D null)
  6881. =09=09=09return;
  6882.  
  6883. =09=09div=2Estyle=2Evisibility =3D "visible";
  6884.  
  6885. =09=09var trans=5Fdiv =3D document=2EgetElementById("XPLSS=5FTrans");
  6886. =09=09if (trans=5Fdiv =3D=3D null)
  6887. =09=09=09return;
  6888. =09=09trans=5Fdiv=2Estyle=2Evisible =3D "visible";
  6889. =09}
  6890. };
  6891.  
  6892. var avglsinlineflyover =3D {
  6893. =09build: function (riskCategory, riskName, bgColor, borderColor) {
  6894. =09=09var html =3D '';
  6895. =09=09html +=3D '<div class=3D"avgILFO=5Fhead"><div></div></div><div class=
  6896. =3D"avgILFO=5Fcontent">';
  6897. =09=09html +=3D '<img src=3Dlinkscanner://LS=5FLogo=5FResults=2Egif /><br =
  6898. />';
  6899. =09=09html +=3D riskCategory + '<br />';
  6900. =09=09html +=3D riskName + '<br />';
  6901. =09=09html +=3D '</div><div class=3D"avgILFO=5Ffoot"><div></div></div>';
  6902.  
  6903. =09=09return html;
  6904. =09},
  6905. =09popup: function (event, flyover, nSeverity, blUrl) {
  6906. =09=09//set verdict info
  6907. =09=09var div =3D document=2EgetElementById('XPLSS=5FInlineFlyover');
  6908. =09=09if (div =3D=3D null)
  6909. =09=09=09return;
  6910. =09=09
  6911. =09=09// blUrl is an object for a blacklisted short url
  6912. =09=09// when it is passed get the final url=20
  6913. =09=09if (blUrl !=3D undefined)
  6914. =09=09{
  6915. =09=09=09var finalUrl =3D searchshield=2EavgCallFunc(document, 'GetFinalUr=
  6916. l', blUrl=2EsUrl);
  6917.  
  6918. =09=09=09var riskUrl =3D blUrl=2EsUrl;
  6919. =09=09=09if ((finalUrl) && (searchshield=2EFilterUrl(finalUrl, xplSearch=2E=
  6920. engine=2Eshortened=5Furls)))
  6921. =09=09=09=09finalUrl =3D avglsinlineflyover=2EgetUrlFromQueryString(finalU=
  6922. rl);
  6923.  
  6924. =09=09=09var riskName =3D blUrl=2EriskNameLabel + finalUrl;
  6925. =09=09=09flyover =3D avglsinlineflyover=2Ebuild(blUrl=2EriskCategory, risk=
  6926. Name, blUrl=2EbgColor, blUrl=2EborderColor);
  6927. =09=09}
  6928.  
  6929. =09=09div=2EinnerHTML =3D flyover;
  6930. =09=09div=2Estyle=2Ewidth =3D "auto";  //reset width
  6931. =09=09div=2Estyle=2Eposition =3D "absolute";
  6932.  
  6933. =09=09if (searchshield=2EquirksMode || searchshield=2EdocMode <=3D 7)
  6934. =09=09{
  6935. =09=09=09var className =3D xplSearch=2Eengine=2Einline=2Ecolor=2Eclassname=
  6936. [nSeverity];
  6937. =09=09=09var imgBase =3D "linkscanner://" + className + "=5Finline=5Fborde=
  6938. r=5F";
  6939. =09=09=09var divWidth =3D searchshield=2EelementSize(div)[0];
  6940. =09=09=09//round up to nearest 10 to avoid intentional wrapping in div
  6941. =09=09=09var flyoverWidth =3D divWidth + (10 - Math=2Eceil(10*((divWidth/1=
  6942. 0) - Math=2Efloor(divWidth/10))));
  6943.  
  6944. =09=09=09var ilfoDivs =3D div=2EgetElementsByTagName("div");
  6945. =09=09=09if (ilfoDivs && ilfoDivs=2Elength =3D=3D 5)
  6946. =09=09=09{
  6947. =09=09=09=09//div=2Estyle=2EfontSize =3D "10px";
  6948. =09=09=09=09div=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "tl=2Epng=
  6949. )";
  6950. =09=09=09=09div=2Estyle=2EbackgroundPosition =3D "0 0";
  6951. =09=09=09=09div=2Estyle=2EbackgroundRepeat =3D "no-repeat";
  6952. =09=09=09=09div=2Estyle=2Ewidth =3D flyoverWidth + "px";
  6953. =09=09=09=09div=2Estyle=2EzIndex =3D "9999";
  6954. =09=09=09
  6955. =09=09=09=09// avgILFO=5Fhead
  6956. =09=09=09=09ilfoDivs[0]=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "=
  6957. tr=2Epng)";
  6958. =09=09=09=09ilfoDivs[0]=2Estyle=2EbackgroundPosition =3D "top right";
  6959. =09=09=09=09ilfoDivs[0]=2Estyle=2EbackgroundRepeat =3D "no-repeat";
  6960. =09=09=09=09ilfoDivs[0]=2Estyle=2Ewidth =3D flyoverWidth + "px";
  6961. =09=09=09=09ilfoDivs[0]=2Estyle=2Eheight =3D "5px";
  6962.  
  6963. =09=09=09=09// avgILFO=5Fhead div
  6964. =09=09=09=09ilfoDivs[1]=2Estyle=2Eheight =3D "5px";
  6965. =09=09=09
  6966. =09=09=09=09// avgILFO=5Fcontent
  6967. =09=09=09=09ilfoDivs[2]=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "=
  6968. r=2Epng)";
  6969. =09=09=09=09ilfoDivs[2]=2Estyle=2EbackgroundPosition =3D "top right";
  6970. =09=09=09=09ilfoDivs[2]=2Estyle=2EbackgroundRepeat =3D "repeat-y";
  6971. =09=09=09=09ilfoDivs[2]=2Estyle=2EfontSize =3D "10px";
  6972. =09=09=09=09ilfoDivs[2]=2Estyle=2Ecolor =3D "black";
  6973. =09=09=09=09ilfoDivs[2]=2Estyle=2Epadding =3D "0px 10px";
  6974. =09=09=09=09ilfoDivs[2]=2Estyle=2EtextAlign =3D "left";
  6975. =09=09=09=09ilfoDivs[2]=2Estyle=2EwordWrap =3D "break-word";
  6976. =09=09=09=09ilfoDivs[2]=2Estyle=2ElineHeight =3D "130%";
  6977.  
  6978. =09=09=09=09// avgILFO=5Ffoot
  6979. =09=09=09=09ilfoDivs[3]=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "=
  6980. bl=2Epng)";
  6981. =09=09=09=09ilfoDivs[3]=2Estyle=2EbackgroundPosition =3D "bottom left";
  6982. =09=09=09=09ilfoDivs[3]=2Estyle=2EbackgroundRepeat =3D "no-repeat";
  6983. =09=09=09=09ilfoDivs[3]=2Estyle=2Eheight =3D "5px";
  6984. =09=09=09
  6985. =09=09=09=09// avgILFO=5Ffoot div
  6986. =09=09=09=09ilfoDivs[4]=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "=
  6987. br=2Epng)";
  6988. =09=09=09=09ilfoDivs[4]=2Estyle=2EbackgroundPosition =3D "bottom right";
  6989. =09=09=09=09ilfoDivs[4]=2Estyle=2EbackgroundRepeat =3D "no-repeat";
  6990. =09=09=09=09ilfoDivs[4]=2Estyle=2Ewidth =3D flyoverWidth + "px";
  6991. =09=09=09=09ilfoDivs[4]=2Estyle=2Eheight =3D "5px";
  6992. =09=09=09}
  6993. =09=09=09else
  6994. =09=09=09{
  6995. =09=09=09=09div=2Estyle=2EfontSize =3D "10px";
  6996. =09=09=09=09div=2Estyle=2EbackgroundColor =3D xplSearch=2Eengine=2Einline=2E=
  6997. color=2Ebackground[nSeverity];
  6998. =09=09=09=09div=2Estyle=2Eborder =3D xplSearch=2Eengine=2Einline=2Ecolor=2E=
  6999. border[nSeverity] + " solid 3px";
  7000. =09=09=09=09div=2Estyle=2Epadding =3D "3px 8px";
  7001. =09=09=09}
  7002. =09=09}
  7003. =09=09else
  7004. =09=09{
  7005. =09=09=09// apply updated styles for new flyover content
  7006. =09=09=09var sheets =3D document=2EstyleSheets;
  7007. =09=09=09for (var i=3D0; i < sheets=2Elength; i++)
  7008. =09=09=09{
  7009. =09=09=09=09if (sheets[i]=2Eid && sheets[i]=2Eid =3D=3D "avgILFOStyle")
  7010. =09=09=09=09{
  7011. =09=09=09=09=09var avgILFOStyle =3D sheets[i];
  7012. =09=09=09=09=09break;
  7013. =09=09=09=09}
  7014. =09=09=09}
  7015. =09=09=09if (typeof(avgILFOStyle) !=3D=3D "undefined")
  7016. =09=09=09{
  7017. =09=09=09=09var className =3D xplSearch=2Eengine=2Einline=2Ecolor=2Eclassn=
  7018. ame[nSeverity];
  7019. =09=09=09=09var divWidth =3D searchshield=2EelementSize(div)[0];
  7020. =09=09=09=09//round up to nearest 10 to avoid intentional wrapping in div
  7021. =09=09=09=09var flyoverWidth =3D divWidth + (10 - Math=2Eceil(10*((divWidt=
  7022. h/10) - Math=2Efloor(divWidth/10))));
  7023.  
  7024. =09=09=09=09var rules =3D avgILFOStyle=2Erules;
  7025. =09=09=09=09for (var i=3D0; i < rules=2Elength; i++)
  7026. =09=09=09=09{
  7027. =09=09=09=09=09var bgImg =3D rules[i]=2Estyle=2EbackgroundImage;
  7028. =09=09=09=09=09var selText =3D rules[i]=2EselectorText=2EtoLowerCase();
  7029.  
  7030. =09=09=09=09=09if (bgImg)
  7031. =09=09=09=09=09{
  7032. =09=09=09=09=09=09var bgImgStyle =3D bgImg=2Ereplace(/default/, className)=
  7033. ;
  7034. =09=09=09=09=09=09rules[i]=2Estyle=2EbackgroundImage =3D bgImgStyle;
  7035. =09=09=09=09=09}
  7036.  
  7037. =09=09=09=09=09if (((selText =3D=3D "=2Eavgilfo") ||
  7038. =09=09=09=09=09=09(selText =3D=3D "=2Eavgilfo=5Fhead") ||
  7039. =09=09=09=09=09=09(selText =3D=3D "=2Eavgilfo=5Ffoot div")) &&
  7040. =09=09=09=09=09=09(rules[i]=2Estyle=2Ewidth) && (rules[i]=2Estyle=2Ewidth =
  7041. =3D=3D "0px"))
  7042. =09=09=09=09=09{
  7043. =09=09=09=09=09=09rules[i]=2Estyle=2Ewidth =3D (flyoverWidth) + "px";
  7044. =09=09=09=09=09}
  7045. =09=09=09=09}
  7046. =09=09=09}
  7047. =09=09}
  7048.  
  7049. =09=09if (!event)
  7050. =09=09=09event =3D window=2Eevent;
  7051. =09=09=09
  7052. =09=09var eventTarget =3D event=2EsrcElement;
  7053. =09=09avglsinlineflyover=2Eposition(eventTarget);
  7054. =09},
  7055. =09hide: function (event) {
  7056. =09=09if (!event)
  7057. =09=09=09event =3D window=2Eevent;
  7058. =09=09=09
  7059. =09=09var div =3D document=2EgetElementById("XPLSS=5FInlineFlyover");
  7060. =09=09if (div =3D=3D null)
  7061. =09=09=09return;
  7062. =09=09=09
  7063. =09=09div=2Estyle=2Evisibility =3D "hidden";=09//invisible
  7064. =09=09div=2Estyle=2Eleft =3D "-5000px";
  7065.  
  7066. =09=09if (!searchshield=2EquirksMode)
  7067. =09=09{
  7068. =09=09=09// reset flyover styles
  7069. =09=09=09var sheets =3D document=2EstyleSheets;
  7070. =09=09=09for (var i=3D0; i < sheets=2Elength; i++)
  7071. =09=09=09{
  7072. =09=09=09=09if (sheets[i]=2Eid && sheets[i]=2Eid =3D=3D "avgILFOStyle")
  7073. =09=09=09=09{
  7074. =09=09=09=09=09var avgILFOStyle =3D sheets[i];
  7075. =09=09=09=09=09break;
  7076. =09=09=09=09}
  7077. =09=09=09}
  7078. =09=09=09if (typeof(avgILFOStyle) !=3D=3D "undefined")
  7079. =09=09=09{
  7080. =09=09=09=09var rules =3D avgILFOStyle=2Erules;
  7081. =09=09=09=09for (var i=3D0; i < rules=2Elength; i++)
  7082. =09=09=09=09{
  7083. =09=09=09=09=09var bgImg =3D rules[i]=2Estyle=2EbackgroundImage;
  7084. =09=09=09=09=09var selText =3D rules[i]=2EselectorText=2EtoLowerCase();
  7085. =09=09=09=09=09if (bgImg)
  7086. =09=09=09=09=09{=20
  7087. =09=09=09=09=09=09var bgImgStyle =3D bgImg=2Ereplace(/:\/\/([a-z]+)=5F/i, =
  7088. '://default=5F');
  7089. =09=09=09=09=09=09rules[i]=2Estyle=2EbackgroundImage =3D bgImgStyle;
  7090. =09=09=09=09=09}
  7091.  
  7092. =09=09=09=09=09if (((selText =3D=3D "=2Eavgilfo") ||
  7093. =09=09=09=09=09=09(selText =3D=3D "=2Eavgilfo=5Fhead") ||
  7094. =09=09=09=09=09=09(selText =3D=3D "=2Eavgilfo=5Ffoot div")) &&
  7095. =09=09=09=09=09=09(rules[i]=2Estyle=2Ewidth))
  7096. =09=09=09=09=09{
  7097. =09=09=09=09=09=09rules[i]=2Estyle=2Ewidth =3D "0px";
  7098. =09=09=09=09=09}
  7099. =09=09=09=09}
  7100. =09=09=09}
  7101. =09=09}
  7102. =09},
  7103. =09position: function (imageElem) {
  7104. =09=09var flyover =3D document=2EgetElementById('XPLSS=5FInlineFlyover');
  7105. =09=09if (flyover =3D=3D null)
  7106. =09=09=09return;
  7107. =09=09=09
  7108. =09=09// relative position of flyover in relation to icon
  7109. =09=09var locateX =3D 0;  // 0=3Dleft, 1=3Dright
  7110. =09=09var locateY =3D 0;  // 0=3Dabove, 1=3Dbelow, 2=3Dbeside icon
  7111. =09=09
  7112. =09=09
  7113. =09=09
  7114. =09=09// get window sizes
  7115. =09=09var winSize=09 =3D searchshield=2EviewPortSize();
  7116. =09=09var windowX=09 =3D winSize[0];
  7117. =09=09var windowY=09 =3D winSize[1];
  7118.  
  7119. =09=09// Must know if there is a horizontal scroll bar for Firefox
  7120. =09=09// for proper flyover positioning near bottom edge
  7121. =09=09var scrollYWidth=09 =3D winSize[2];
  7122. =09=09var scrollBarX=09 =3D winSize[2] > 0 =3F true : false;
  7123.  
  7124. =09=09// get the exact size of the flyover
  7125. =09=09var flyoverSize=09 =3D searchshield=2EelementSize(flyover);
  7126. =09=09var flyoverX=09 =3D flyoverSize[0];
  7127. =09=09var flyoverY=09 =3D flyoverSize[1];
  7128. =09=09
  7129. =09=09flyover=2Estyle=2Ewidth =3D flyoverX + "px";
  7130. =09=09
  7131. =09=09// get the bounding rect for image(s)
  7132. =09=09var imgRect =3D imageElem=2EgetBoundingClientRect();
  7133.  
  7134. =09=09// half width/height (center) of element bounding rect
  7135. =09=09var halfX =3D (imgRect=2Eright - imgRect=2Eleft) / 2;
  7136. =09=09var halfY =3D (imgRect=2Ebottom- imgRect=2Etop) / 2;
  7137.  
  7138. =09=09// element the mouse is over, get the center position
  7139. =09=09var posX =3D searchshield=2EoffsetLeft(imageElem) + halfX;
  7140. =09=09var posY =3D searchshield=2EoffsetTop(imageElem) + halfY;
  7141. =09=09
  7142. =09=09var pageOffsetX =3D 0;
  7143. =09=09var pageOffsetY =3D 0;
  7144. =09=09var hasParentFrame =3D false;
  7145.  
  7146. =09=09// normalize pos to 0  -- get amount of scrolling in browser window
  7147. =09=09var scroll=09=09=3D searchshield=2EscrollSize(imageElem);
  7148. =09=09pageOffsetX=09=09=3D scroll[0];
  7149. =09=09pageOffsetY=09=09=3D scroll[1];
  7150. =09=09hasParentFrame=09=3D scroll[2];
  7151. =09=09
  7152. =09=09posX -=3D pageOffsetX;
  7153. =09=09posY -=3D pageOffsetY;
  7154.  
  7155. =09=09//compensate for Firefox 3
  7156. =09=09if (posX < imgRect=2Eleft)
  7157. =09=09=09posX =3D imgRect=2Eleft+halfX;
  7158.  
  7159. =09=09// setup the offsets
  7160. =09=09var offsetX =3D posX;
  7161. =09=09var offsetY =3D posY;
  7162.  
  7163. =09=09// calc where to display on page
  7164. =09=09if ((windowX - posX) > posX)
  7165. =09=09{
  7166. =09=09=09// right
  7167. =09=09=09//offsetX +=3D halfX;
  7168. =09=09=09offsetX =3D imgRect=2Eright + 3;
  7169. =09=09=09locateX =3D 1;
  7170. =09=09}
  7171. =09=09else
  7172. =09=09{
  7173. =09=09=09//left
  7174. =09=09=09//offsetX -=3D (flyoverX + halfX);
  7175. =09=09=09offsetX =3D imgRect=2Eleft - flyoverX - 3;
  7176. =09=09}
  7177. =09=09if ((windowY - posY) > posY)
  7178. =09=09{
  7179. =09=09=09// below
  7180. =09=09=09if (posY < (windowY/4))
  7181. =09=09=09{
  7182. =09=09=09=09offsetY -=3D halfY;
  7183. =09=09=09=09locateY =3D 1;
  7184. =09=09=09}
  7185. =09=09=09else
  7186. =09=09=09{
  7187. =09=09=09=09offsetY -=3D (flyoverY / 2) - halfY;
  7188. =09=09=09=09locateY =3D 2;
  7189. =09=09=09}
  7190. =09=09}
  7191. =09=09else
  7192. =09=09{
  7193. =09=09=09// above
  7194. =09=09=09if ((windowY - posY) < (windowY/4))
  7195. =09=09=09{
  7196. =09=09=09=09offsetY -=3D (flyoverY - halfY);
  7197. =09=09=09}
  7198. =09=09=09else
  7199. =09=09=09{
  7200. =09=09=09=09offsetY -=3D (flyoverY / 2) + halfY;
  7201. =09=09=09=09locateY =3D 2;
  7202. =09=09=09}
  7203. =09=09}
  7204. =09=09// make sure we aren't off the screen
  7205. =09=09if (offsetY < 0)
  7206. =09=09=09offsetY =3D 0;
  7207.  
  7208. =09=09if ((offsetY + flyoverY) > windowY)
  7209. =09=09{
  7210. =09=09=09offsetY =3D windowY - flyoverY;
  7211. =09=09}
  7212. =09=09else if (scrollBarX && ((windowY - (posY + halfY)) < scrollYWidth))
  7213. =09=09{=09//verdict overlaps the horizontal scrollbar
  7214. =09=09=09offsetY =3D windowY - (flyoverY + scrollYWidth);
  7215. =09=09}
  7216.  
  7217. =09=09// add page offsets back - if not in frame
  7218. =09=09if (!hasParentFrame)
  7219. =09=09{
  7220. =09=09=09offsetX +=3D pageOffsetX;
  7221. =09=09=09offsetY +=3D pageOffsetY;
  7222. =09=09}
  7223. =09=09//posX +=3D pageOffsetX;
  7224. =09=09//posY +=3D pageOffsetY;
  7225.  
  7226. =09=09//var paddedOffsetX =3D 0; //provide space between icon and flyover
  7227. =09=09//var padX =3D 3;
  7228. =09=09//if (locateX =3D=3D 0)
  7229. =09=09//=09paddedOffsetX =3D offsetX - padX;
  7230. =09=09//else
  7231. =09=09//=09paddedOffsetX =3D offsetX + padX;
  7232.  
  7233.  
  7234. =09=09// set where to put the flyover
  7235. =09=09flyover=2Estyle=2Etop =3D offsetY + "px";
  7236. =09=09flyover=2Estyle=2Eleft =3D offsetX + "px";
  7237.  
  7238. =09=09avglsinlineflyover=2Edisplay();
  7239. =09},
  7240. =09display: function () {
  7241. =09=09var div =3D document=2EgetElementById('XPLSS=5FInlineFlyover');
  7242. =09=09if (div =3D=3D null)
  7243. =09=09=09return;
  7244. =09=09
  7245. =09=09// show the flyover
  7246. =09=09div=2Estyle=2Evisibility =3D "visible";
  7247. =09},
  7248. =09imageExists: function(element) {
  7249. =09=09if (element)
  7250. =09=09{
  7251. =09=09=09// check next siblings children
  7252. =09=09=09var sibling =3D element=2EnextSibling;
  7253. =09=09=09
  7254. =09=09=09if ((sibling =3D=3D null) || (sibling=2EgetElementsByTagName =3D=3D=
  7255.  null))
  7256. =09=09=09=09return false;
  7257. =09=09=09
  7258. =09=09=09var images =3D sibling=2EgetElementsByTagName("IMG");
  7259. =09=09=09if (images =3D=3D null)
  7260. =09=09=09=09return false;
  7261.  
  7262. =09=09=09for (var i =3D 0; i < images=2Elength; i++)
  7263. =09=09=09{
  7264. =09=09=09=09if (images[i]=2Eid =3D=3D "avg=5Fls=5Fimage")
  7265. =09=09=09=09=09return true;
  7266. =09=09=09}
  7267. =09=09}
  7268.  
  7269. =09=09return false;
  7270. =09},
  7271. =09getImage: function (anchor) {
  7272. =09=09if (anchor)
  7273. =09=09{
  7274. =09=09=09var imageElem =3D null;
  7275. =09=09=09var images =3D anchor=2EgetElementsByTagName("img");
  7276. =09=09=09if (images =3D=3D null)
  7277. =09=09=09=09return imageElem;
  7278.  
  7279. =09=09=09for (var i =3D 0; i < images=2Elength; i++)
  7280. =09=09=09{
  7281. =09=09=09=09if (images[i]=2Eid =3D=3D "avg=5Fls=5Fimage")
  7282. =09=09=09=09{
  7283. =09=09=09=09=09imageElem =3D images[i];
  7284. =09=09=09=09=09break; =20
  7285. =09=09=09=09}=09=09=09=09
  7286. =09=09=09}
  7287. =09=09=09return imageElem;
  7288. =09=09} =20
  7289. =09},
  7290. =09getUrlFromQueryString: function (inUrl) {
  7291. =09=09var url =3D inUrl;
  7292. =09=09var uri =3D searchshield=2EparseLink(unescape(inUrl));
  7293.  
  7294. =09=09if (uri=2Esource !=3D null)
  7295. =09=09{=09// regexp failed so used split to parse url
  7296. =09=09=09var qsUrl =3D uri=2Esource=2EindexOf("=3Furl=3D");
  7297. =09=09=09if (qsUrl !=3D -1)
  7298. =09=09=09=09url =3D uri=2Esource=2Esubstring(qsUrl + 5);
  7299. =09=09=09else
  7300. =09=09=09=09url =3D uri=2Esource;
  7301. =09=09}
  7302. =09=09else if ((uri=2EqsArray=2Eurl !=3D null) && (uri=2EqsArray=2Eurl=2El=
  7303. ength > 0))
  7304. =09=09{
  7305. =09=09=09url =3D uri=2EqsArray=2Eurl;
  7306. =09=09}
  7307.  
  7308. =09=09return url;
  7309. =09},
  7310. =09mouseOverHandler: function (e, doc, engine) {
  7311. =09=09if (e && e=2EsrcElement && e=2EsrcElement=2Ehref)
  7312. =09=09{
  7313. =09=09=09// need to keep a reference to the function registered=20
  7314. =09=09=09// by the listener to be able to remove it=2E
  7315. =09=09=09var handlerFunc =3D arguments=2Ecallee;
  7316. =09=09=09var element =3D e=2EsrcElement;
  7317. =09=09=09var href =3D e=2EsrcElement=2Ehref;
  7318.  
  7319. =09=09=09// need an engine=09=09=09
  7320. =09=09=09if (!engine)
  7321. =09=09=09=09return;
  7322.  
  7323. =09=09=09// check if it has an image already
  7324. =09=09=09if (avglsinlineflyover=2EimageExists(element))
  7325. =09=09=09=09return;
  7326.  
  7327. =09=09=09// add the image, returns the anchor not the image
  7328. =09=09=09var new=5Felement =3D engine=2Eadd=5Finline=5Fimage(doc, element,=
  7329.  null, null);
  7330.  
  7331. =09=09=09// do the check and update in the background
  7332. =09=09=09setTimeout(function() {avglsinlineflyover=2EcheckAndUpdate(doc, e=
  7333. lement, new=5Felement, engine, handlerFunc)}, 1);
  7334. =09=09}
  7335. =09},
  7336. =09checkAndUpdate: function (doc, element, new=5Felement, engine, handlerF=
  7337. unc) {
  7338. =09=09if (!engine)
  7339. =09=09=09return;
  7340.  
  7341. =09=09try {
  7342. =09=09=09// remove the listener and get final url
  7343. =09=09=09element=2EdetachEvent("onmouseover", handlerFunc, false);
  7344. =09=09=09var finalUrl =3D searchshield=2EavgCallFunc(doc, 'GetFinalUrl', e=
  7345. lement=2Ehref);
  7346. =09=09}
  7347. =09=09catch(e) {}
  7348.  
  7349. =09=09if ((typeof(finalUrl) !=3D 'undefined') && finalUrl)
  7350. =09=09{
  7351. =09=09=09// if still a tiny url check for final url embedded in querystrin=
  7352. g
  7353. =09=09=09if (searchshield=2EFilterUrl(finalUrl, engine=2Eshortened=5Furls)=
  7354.  &&=20
  7355. =09=09=09=09(finalUrl=2EindexOf("=3Furl=3D") !=3D -1))
  7356. =09=09=09{
  7357. =09=09=09=09finalUrl =3D avglsinlineflyover=2EgetUrlFromQueryString(finalU=
  7358. rl);
  7359. =09=09=09}
  7360. =09=09=09// update the verdict
  7361. =09=09=09engine=2Edisplay=5Finline(doc, new=5Felement, finalUrl, null, tru=
  7362. e);
  7363. =09=09}
  7364. =09=09else
  7365. =09=09{
  7366. =09=09=09engine=2Eavg=5Fls=5Finline=5Fhide=5Fverdict(new=5Felement);
  7367. =09=09}
  7368. =09}
  7369. };
  7370. ///////////////    FLYOVERS    ///////////////
  7371.  
  7372.  
  7373. (function(){
  7374. =09setTimeout( function() {
  7375. =09=09try {
  7376. =09=09=09if ((self =3D=3D top) && top=2Edocument) {
  7377. =09=09=09=09searchshield=2Einit(top=2Edocument, 1);
  7378. =09=09=09}
  7379. =09=09}
  7380. =09=09catch(e){return;}
  7381. =09}, 1 );
  7382. =09return;
  7383. })();
  7384. </script></p></td></tr><tr><td bgcolor=3D#FFFFFF>&nbsp;</td></tr><tr>=09=09=
  7385. =09</td>
  7386. =09=09</tr>
  7387. =09</table>
  7388. </div>
  7389.  
  7390. </body>
  7391.  
  7392. </html>
  7393.  
  7394. ------=_NextPart_860011217511982913148515--

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at