- Return-path: <informativo15@capacitacionpersonalizada.cl>
- Envelope-to: soporte@hostname.cl
- Delivery-date: Sat, 11 Aug 2012 09:19:12 -0400
- Received: from [50.31.254.150] (port=50366 helo=vps.idati.cl)
- by vps.hostname.cl with esmtps (TLSv1:AES256-SHA:256)
- (Exim 4.77)
- (envelope-from <informativo15@capacitacionpersonalizada.cl>)
- id 1T0Bav-00077G-T0
- for soporte@hostname.cl; Sat, 11 Aug 2012 09:19:12 -0400
- Received: from 201-223-2-61.baf.movistar.cl ([201.223.2.61]:54943 helo=consulto-3e533e)
- by vps.idati.cl with esmtpa (Exim 4.77)
- (envelope-from <informativo15@capacitacionpersonalizada.cl>)
- id 1T0BW6-0003j9-Gx; Sat, 11 Aug 2012 07:14:15 -0600
- Message-ID: <4166485-22012861113148390@consulto-3e533e>
- X-Priority: 5
- To: "CL a 19 de julio 2012" <informativo16@capacitacionpersonalizada.cl>
- Errors-to: capacitac2008desarrollopersonal@gmail.com
- X-MSMail-Priority: Low
- Reply-To: "=?windows-1252?Q?Legislaci=F3n_laboral?=" <informativo16@capacitacionpersonalizada.cl>
- From: "=?windows-1252?Q?Legislaci=F3n_laboral?=" <informativo15@capacitacionpersonalizada.cl>
- Subject: Efectos del mobbing o Acoso laboral en los trabajadores
- Date: Sat, 11 Aug 2012 09:14:08 -0400
- MIME-Version: 1.0
- Content-Type: multipart/alternative;
- boundary="----=_NextPart_860011217511982913148515"
- X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
- X-AntiAbuse: Primary Hostname - vps.idati.cl
- X-AntiAbuse: Original Domain - hostname.cl
- X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
- X-AntiAbuse: Sender Address Domain - capacitacionpersonalizada.cl
- ------=_NextPart_860011217511982913148515
- Content-type: text/plain; charset=windows-1252
- Content-Transfer-Encoding: quoted-printable
- =20
- =20
- =20
- =20
- =20
- =20
- =20
- Evite Multas y Fiscalizaciones SEMINARIO ALMUERZOEfectos del mobbing o Ac=
- oso laboral en los trabajadores=20
- =20
- Seminario 17 de Agosto
- =20
- =20
- =20
- =20
- =20
- Objetivos:
- =20
- =20
- =20
- Identificar y analizar los aspectos fundamentales del proyecto de ley de=
- acoso laboral o mobbing y sus implicancias en las empresas y los trabajad=
- ores, analizar las modificaciones al código laboral y las sanciones=
- a que se exponen los empleadores tras la aprobación del proyecto l=
- ey, identificar las conductas que constituyen hostigamiento laboral y los =
- actores participantes además de las acciones que pueden seguir los =
- afectados Dirigido a: Gerentes de RR=2EHHGerentes de FinanzasJefes de Per=
- sonalAdministradoresContadoresPersonal del área Seminario=20
- Se entrega Manual de Seguimiento
- 1 Coffee Break
- Almuerzo=20
- Diplomas de participación
- Set ejercicios Fecha del Curso: 17 de Agosto Código Sence: 12-37-=
- 8952-05 Duración: 5 horas Valores:Contado inicio $ 90=2E000 p=2Ep=
- Por Otic $ 110=2E000 p=2Ep30 días $ 135=2E0=
- 00 p=2Ep Horario: 9:00 a 14:00 Lugar de realización:Lord Cochrane=
- 198 Santiago INFORMACIONES: 56(2) 7324774-7322552 Fax 7328901 www=2Esarc=
- ap=2Ecl Mail: capacitacion@sarcap=2Ecl Para ser removido enviarreclamos@sa=
- rcap=2Ecl=20
- Proyecto de Ley
- Como afecta a los trabajadores: =20
- Legislación Laboral: Busca otorgar un conocimiento útil, con=
- creto, ordenado y accesible de los aspectos legales relacionados con la no=
- rmativa laboral vigente y los cambios relevantes introducidos en ella dura=
- nte los últimos años=2E=2E=20
- =20
- =20
- =20
- =20
- Programa =20
- =20
- =20
- =20
- =20
- =20
- Inicios de mobbing:Idelimitación del fenómeno=2EActor=
- es participantesLas cuatro fases del espiral del mobbing El psíco-t=
- errorismo Acciones para limitarloHerramientas legales del empleador La rea=
- lidad en chile Que es acoso laboral en el proyecto de ley:Artículos=
- del código del trabajo que modifica el proyectoAcciones legales qu=
- e puede activar el trabajador en el nuevo escenarioNuevas atribuciones de =
- la dirección del trabajo Acciones de tutela laboralLímites d=
- e la potestad del empleador Plazos de prescripción Utilizació=
- ;n del ius variandi Jurisprudencia de mobbing Condiciones para que exista =
- mobbing:Acciones que constituyen acoso laboralClases de acoso laboralDerec=
- hos fundamentales que afectanQue es discriminación Tipos de discrim=
- inación Procedimiento legal que lo respalda "Actividad/=
- es de capacitación autorizadal por el SENCE para los efectos de la =
- franquiciatributaria de capacitación, no conducente/s al otorgamien=
- to de un título o grado académico=2E"
- =20
- =20
- =09=09=09 =09=09 =09=20
- ------=_NextPart_860011217511982913148515
- Content-Type: text/html; charset=windows-1252
- Content-Transfer-Encoding: quoted-printable
- <div align=3D"center">
- <table border=3D"0" cellpadding=3D"0" style=3D"border-collapse: collapse" =
- width=3D"97%" id=3D"table8">
- <tr><td bgcolor=3D#FFFFFF><p align=3Dleft><p style=3D"text-align: center">=
- <table style=3D"border-collapse: collapse" id=3D"table8" border=3D"0" cell=
- padding=3D"0" width=3D"97%">
- <tbody>
- <tr>
- <td bgcolor=3D"#ffffff">
- <p style=3D"text-align: center">
- <table style=3D"border-collapse: collapse" id=3D"table1" borde=
- r=3D"0" cellpadding=3D"0" width=3D"100%">
- <tbody>
- <tr>
- <td>
- <p style=3D"text-align: center"><font size=3D"1" f=
- ace=3D"Verdana">
- <table style=3D"border-collapse: collapse" id=3D"t=
- able41" border=3D"0" cellpadding=3D"0" width=3D"68%">
- <tbody>
- <tr>
- <td bgcolor=3D"#ffffff">
- <table style=3D"width: 739px; border-c=
- ollapse: collapse; height: 1637px" id=3D"table42" border=3D"0" cellpadding=
- =3D"0" width=3D"739">
- <tbody>
- <tr>
- <td bgcolor=3D"#ffffff" al=
- ign=3D"center"><strong><font size=3D"1">
- <table style=3D"width: 650=
- px; height: 28px" id=3D"table43" border=3D"0" cellspacing=3D"0" cellpaddin=
- g=3D"0" width=3D"650">
- <tbody>
- <tr>
- <td style=3D"t=
- ext-align: center; color: #ffffff" bgcolor=3D"#062c5c">
- <div> </d=
- iv>
- <div> </d=
- iv>
- </td>
- </tr>
- <tr>
- <td bgcolor=3D=
- "#1b5b8e"><img alt=3D"" width=3D"582" height=3D"88" src=3D"http://www=2Esa=
- rcap=2Ecl/nuevo/imagenes/Dibujologomarzo(34)=2Ejpg" /></td>
- </tr>
- </tbody>
- </table>
- </font></strong>
- <table style=3D"width: 651=
- px; height: 1434px" id=3D"table44" border=3D"0" cellspacing=3D"0" cellpadd=
- ing=3D"0" width=3D"651">
- <tbody>
- <tr>
- <td style=3D"t=
- ext-align: center; color: #ffffff" bgcolor=3D"#062c5c">
- <div><span sty=
- le=3D"font-size: x-large"><span style=3D"font-family: Verdana"><span style=
- =3D"font-size: medium">
- <div><span sty=
- le=3D"color: #999999"><span style=3D"font-size: x-large"><span style=3D"fo=
- nt-family: Verdana"><span style=3D"font-size: medium">Evite Multas y Fisca=
- lizaciones</span></span></span></span></div>
- <div><span sty=
- le=3D"color: #999999"> </span></div>
- <div><span sty=
- le=3D"color: #999999"><span style=3D"font-size: x-large"><span style=3D"fo=
- nt-family: Verdana"><span style=3D"font-size: medium">SEMINARIO ALMUERZO</=
- span></span></span></span></div>
- <div><span sty=
- le=3D"color: #ffffff"><span style=3D"font-size: 13=2E5pt"><span style=3D"f=
- ont-size: x-large"><strong><font face=3D"Verdana"><span class=3D"titulo"><=
- b>Efectos del mobbing o Acoso laboral en los trabajadores</b> </span></fon=
- t></strong></span></span></span><span style=3D"color: navy; font-size: 13=2E=
- 5pt"><span style=3D"color: #808080"><span style=3D"font-size: x-large"><st=
- rong><font face=3D"Verdana"><span class=3D"titulo">
- <p style=3D"te=
- xt-align: center"><span style=3D"font-size: x-large"> <img style=3D"w=
- idth: 500px; height: 357px" alt=3D"" width=3D"500" height=3D"523" src=3D"h=
- ttp://comunicados=2Ecursos-online=2Ecl/fotos/Efectos del mobbing(1)=2Ejpg"=
- /></span></p>
- </span></font>=
- </strong></span></span></span></div>
- </span></span>=
- </span></div>
- <font size=3D"=
- 2">
- <div><span sty=
- le=3D"font-family: Verdana"><span style=3D"font-size: medium">
- <div><span sty=
- le=3D"font-size: x-large">Seminario 17 de Agosto</span></div>
- </span></span>=
- </div>
- </font><font s=
- ize=3D"+0"><span style=3D"font-size: x-large">
- <table style=3D=
- "width: 650px; height: 834px" id=3D"table45" border=3D"0" cellspacing=3D"0=
- " cellpadding=3D"8" background=3D"http://www=2Emundolaboral=2Ecl/img/secre=
- tariasmarzo001b=2Ejpg">
- <tbody>
- <tr>
- <t=
- d bgcolor=3D"#ffffff" height=3D"46" valign=3D"top" width=3D"23%" align=3D"=
- center">
- <d=
- iv align=3D"center">
- <t=
- able style=3D"border-collapse: collapse" id=3D"table52" border=3D"0" cellp=
- adding=3D"0" width=3D"24%">
- =
- <tbody>
- =
- <tr>
- =
- <td bgcolor=3D"#ffffff">
- =
- <table style=3D"border-collapse: collapse" id=3D"table53" border=
- =3D"0" cellspacing=3D"2" cellpadding=3D"2" width=3D"100%">
- =
- <tbody>
- =
- <tr>
- =
- <td valign=3D"top">
- =
- <table style=3D"border-collapse: collapse" id=3D"tab=
- le54" border=3D"0" cellpadding=3D"0" width=3D"100%">
- =
- <tbody>
- =
- <tr>
- =
- <td>
- =
- <table style=3D"border-collapse: collaps=
- e" id=3D"table55" border=3D"0" cellpadding=3D"0" width=3D"97%">
- =
- <tbody>
- =
- <tr>
- =
- <td bgcolor=3D"#ffffff">
- =
- <div align=3D"center">
- =
- <table style=3D"width: 168px=
- " id=3D"table56" border=3D"0" cellspacing=3D"0" cellpadding=3D"0">
- =
- <tbody>
- =
- <tr>
- =
- <td style=3D"pad=
- ding-bottom: 0in; padding-left: 0in; padding-right: 0in; background: white=
- ; padding-top: 0in" bgcolor=3D"#ffffff" valign=3D"top">
- =
- <div><font size=3D=
- "3"><span style=3D"font-size: 12pt">
- =
- <div align=3D"ju=
- stify"><span style=3D"font-family: Verdana"><font size=3D"1"><strong>Objet=
- ivos:</strong></font></span></div>
- =
- <div align=3D"ju=
- stify">
- =
- <div align=3D"ce=
- nter">
- =
- <table style=3D"=
- border-collapse: collapse" id=3D"table58" border=3D"0" cellpadding=3D"0" w=
- idth=3D"24%">
- =
- <tbody>
- =
- <tr>
- =
- <td =
- bgcolor=3D"#ffffff">
- =
- <tab=
- le style=3D"border-collapse: collapse" id=3D"table59" border=3D"0" cellspa=
- cing=3D"2" cellpadding=3D"2" width=3D"70%">
- =
- =
- <tbody>
- =
- =
- <tr>
- =
- =
- <td valign=3D"top">
- =
- =
- <table style=3D"border-collapse: collapse" id=3D"table60" border=3D=
- "0" cellpadding=3D"0" width=3D"100%">
- =
- =
- <tbody>
- =
- =
- <tr>
- =
- =
- <td>
- =
- =
- <table style=3D"width: 199px; height: 234px" id=3D"tab=
- le61">
- =
- =
- <tbody>
- =
- =
- <tr>
- =
- =
- <td>
- =
- =
- <div style=3D"text-align: justify; line-he=
- ight: 150%"><span style=3D"line-height: 150%; color: #000000; font-size: s=
- maller"><font size=3D"2">
- =
- =
- <div><span style=3D"font-size: xx-small">
- =
- =
- <div style=3D"text-align: justify"><span s=
- tyle=3D"font-family: Verdana"><span style=3D"font-size: xx-small"><span st=
- yle=3D"font-family: Verdana"><span style=3D"font-size: xx-small">
- =
- =
- <div><span style=3D"font-size: xx-small"><=
- span style=3D"font-family: Verdana"><span style=3D"font-size: xx-small"><s=
- pan style=3D"font-family: Verdana"><span style=3D"font-size: xx-small"><sp=
- an style=3D"font-family: Verdana">
- =
- =
- <div style=3D"text-align: justify; line-he=
- ight: 150%"><span style=3D"color: #000000"><span style=3D"font-family: Ver=
- dana"><span style=3D"line-height: 150%">
- =
- =
- <div><span style=3D"font-size: 8=2E5pt">Id=
- entificar y analizar los aspectos fundamentales del proyecto de ley de aco=
- so laboral o mobbing y sus implicancias en las empresas y los trabajadores=
- , analizar las modificaciones al código laboral y las sanciones a q=
- ue se exponen los empleadores tras la aprobación del proyecto ley, =
- identificar las conductas que constituyen hostigamiento laboral y los acto=
- res participantes además de las acciones que pueden seguir los afec=
- tados</span></div>
- =
- =
- </span></span></span></div>
- =
- =
- </span></span></span></span></span></span>=
- </div>
- =
- =
- </span></span></span></span><span style=3D=
- "font-size: xx-small"><span style=3D"font-family: Verdana"> </span></=
- span></div>
- =
- =
- </span></div>
- =
- =
- </font></span></div>
- =
- =
- </td>
- =
- =
- </tr>
- =
- =
- </tbody>
- =
- =
- </table>
- =
- =
- </td>
- =
- =
- </tr>
- =
- =
- </tbody>
- =
- =
- </table>
- =
- =
- </td>
- =
- =
- </tr>
- =
- =
- </tbody>
- =
- </ta=
- ble>
- =
- </td=
- >
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </div>
- =
- <span style=3D"f=
- ont-family: Verdana"> </span></div>
- =
- </span></font></=
- div>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </div>
- =
- <div style=3D"border-bottom:=
- medium none; border-left: white 3pt solid; padding-bottom: 0cm; padding-l=
- eft: 0cm; padding-right: 0cm; border-top: medium none; border-right: mediu=
- m none; padding-top: 0cm">
- =
- <div style=3D"border-bottom:=
- medium none; text-align: left; border-left: medium none; padding-bottom: =
- 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
- r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
- "><span style=3D"font-family: Verdana"><b>Dirigido a:</b></span></span></d=
- iv>
- =
- <div style=3D"border-bottom:=
- medium none; text-align: left; border-left: medium none; padding-bottom: =
- 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
- r-right: medium none; padding-top: 0cm"> </div>
- =
- <div style=3D"border-bottom:=
- medium none; text-align: left; border-left: medium none; padding-bottom: =
- 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
- r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
- "><span style=3D"font-family: Verdana">Gerentes de RR=2EHH</span></span></=
- div>
- =
- <div style=3D"border-bottom:=
- medium none; text-align: left; border-left: medium none; padding-bottom: =
- 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
- r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
- "><span style=3D"font-family: Verdana">Gerentes de Finanzas</span></span><=
- /div>
- =
- <div style=3D"border-bottom:=
- medium none; text-align: left; border-left: medium none; padding-bottom: =
- 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
- r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
- "><span style=3D"font-family: Verdana">Jefes de Personal</span></span></di=
- v>
- =
- <div style=3D"border-bottom:=
- medium none; text-align: left; border-left: medium none; padding-bottom: =
- 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
- r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
- "><span style=3D"font-family: Verdana">Administradores</span></span></div>=
- =
- <div style=3D"border-bottom:=
- medium none; text-align: left; border-left: medium none; padding-bottom: =
- 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
- r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
- "><span style=3D"font-family: Verdana">Contadores</span></span></div>
- =
- <div style=3D"border-bottom:=
- medium none; text-align: left; border-left: medium none; padding-bottom: =
- 0cm; padding-left: 0cm; padding-right: 0cm; border-top: medium none; borde=
- r-right: medium none; padding-top: 0cm"><span style=3D"font-size: xx-small=
- "><span style=3D"font-family: Verdana">Personal del área</span></sp=
- an></div>
- =
- </div>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- </=
- table>
- </=
- div>
- <d=
- iv align=3D"center"> </div>
- <d=
- iv align=3D"center"> </div>
- <f=
- ont size=3D"+0"><span><span style=3D"font-size: x-large"><strong><font col=
- or=3D"#545454" size=3D"1"><span style=3D"color: #545454; font-size: xx-sma=
- ll"><font size=3D"1"><span style=3D"font-size: 7=2E5pt">
- <d=
- iv> </div>
- <d=
- iv><span style=3D"font-family: Verdana"><u><i><span style=3D"font-size: sm=
- all">Seminario</span></i></u></span><span style=3D"font-family: Verdana">&=
- nbsp;</span></div>
- <u=
- l>
- =
- <li>
- =
- <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
- font-size: xx-small">Se entrega Manual de Seguimiento</span></span></div>
- =
- </li>
- =
- <li>
- =
- <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
- font-size: xx-small">1 Coffee Break</span></span></div>
- =
- </li>
- =
- <li>
- =
- <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
- font-size: larger">Almuerzo </span></span></div>
- =
- </li>
- =
- <li>
- =
- <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
- font-size: xx-small">Diplomas de participación</span></span></div>
- =
- </li>
- =
- <li>
- =
- <div align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"=
- font-size: xx-small">Set ejercicios </span></span></div>
- =
- </li>
- </=
- ul>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"><u>Fecha del Curso<=
- /u>: 17 de Agosto</span><span style=3D"font-family: Verdan=
- a"> </span></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"><u>Código Se=
- nce:</u> <b><font size=3D"1">12-37-8952-05</font></b></span></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"> </span></div>=
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"><u>Duración:=
- </u> 5 horas</span></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"> </span></div>=
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"><u>Valores:</u></sp=
- an></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana">Contado inicio $ 90=
- =2E000 p=2Ep</span></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana">Por Otic  =
- ; $ 110=2E000 p=2Ep</span=
- ></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana">30 días =
- ; =
- $ 135=2E000 p=2Ep</span></div>
- <d=
- iv align=3D"left"> </div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"> </span></div>=
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"> </span></div>=
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"><u>Horario: </u></s=
- pan></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana">9:00 a 14:00</span>=
- </div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"> </span></div>=
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"><u>Lugar de realiza=
- ción:</u></span></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana">Lord Cochrane 198 S=
- antiago</span></div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"> </span></div>=
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana"><span style=3D"font=
- -size: xx-small"><b><font style=3D"font-size: 8pt">INFORMACIONES: </font><=
- /b></span></span></div>
- <d=
- iv align=3D"left"> </div>
- </=
- span></font></span></font></strong></span><span style=3D"font-family: Verd=
- ana"><span style=3D"font-size: x-large"><strong><font color=3D"#545454" si=
- ze=3D"1"><span style=3D"color: #545454; font-size: xx-small"><font size=3D=
- "1"><span style=3D"font-size: 7=2E5pt">
- <d=
- iv align=3D"left"><span style=3D"font-size: xx-small"><b><font style=3D"fo=
- nt-size: 8pt">56(2) 7324774-7322552 </font></b></span></div>
- <d=
- iv align=3D"left"><span style=3D"font-size: xx-small"><b><font style=3D"fo=
- nt-size: 8pt">Fax 7328901</font></b></span></div>
- <d=
- iv align=3D"left"> </div>
- </=
- span></font></span></font></strong></span></span><strong><span style=3D"co=
- lor: #545454"><font style=3D"font-size: 8pt" color=3D"#545454">
- <d=
- iv align=3D"left"><a href=3D"http://www=2Esarcap=2Ecl/"><span style=3D"fon=
- t-family: Verdana">www=2Esarcap=2Ecl</span></a></div>
- <d=
- iv align=3D"left"> </div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana">Mail: </span><a hre=
- f=3D"mailto:capacitacion@sarcap=2Ecl"><span style=3D"font-family: Verdana"=
- >capacitacion@sarcap=2Ecl</span></a></div>
- <d=
- iv align=3D"left"> </div>
- <d=
- iv align=3D"left"><span style=3D"font-family: Verdana">Para ser removido e=
- nviar</span></div>
- <d=
- iv align=3D"left"><a href=3D"mailto:reclamos@sarcap=2Ecl"><span style=3D"f=
- ont-family: Verdana">reclamos@sarcap=2Ecl</span></a></div>
- </=
- font></span></strong></span></font></td>
- <t=
- d bgcolor=3D"#ffffff"><hr style=3D"width: 100%; height: 1px; color: #00008=
- 0; size: 1px" size=3D"1" />
- <s=
- pan><font color=3D"#000080">
- <d=
- iv><span style=3D"color: navy; font-size: 13=2E5pt">
- <p=
- style=3D"text-align: justify"><span style=3D"font-size: large"><strong><f=
- ont color=3D"#000080" face=3D"Verdana"><span class=3D"titulo">Proyecto de =
- Ley</span></font></strong></span></p>
- <p=
- style=3D"text-align: justify"><span style=3D"font-size: larger"><strong><=
- font color=3D"#000080" face=3D"Verdana"><span class=3D"titulo">Como afecta=
- a los trabajadores</span></font></strong></span><span style=3D"font-size:=
- large"><strong><font color=3D"#000080" face=3D"Verdana"><span class=3D"ti=
- tulo">:</span></font></strong><font style=3D"font-size: 8pt" face=3D"Caste=
- llar"> </font></span><span style=3D"font-size: smaller"><font style=3D=
- "font-size: 8pt" face=3D"Castellar"> </font></span> </p>
- <s=
- pan style=3D"font-size: medium"><span style=3D"font-family: Arial; color: =
- #666666"><b><span style=3D"font-family: Arial; color: #666666; font-size: =
- 13=2E5pt">
- <p=
- style=3D"text-align: justify"><b><span style=3D"font-family: Arial; color=
- : #666666; font-size: 13=2E5pt">Legislación Laboral</span></b><b><s=
- pan style=3D"font-family: Arial; color: #666666; font-size: 9=2E5pt">: </s=
- pan></b><span style=3D"font-size: larger"><b><span style=3D"font-family: A=
- rial; color: #666666">Busca otorgar un conocimiento útil, conc=
- reto, ordenado y accesible de los aspectos legales relacionados con la nor=
- mativa laboral vigente y los cambios relevantes introducidos en ella duran=
- te los últimos años=2E=2E </span></b></span></p>
- </=
- span></b></span></span></span></div>
- <d=
- iv>
- <d=
- iv align=3D"center">
- <t=
- able style=3D"border-collapse: collapse" id=3D"table47" border=3D"0" cellp=
- adding=3D"0" width=3D"24%">
- =
- <tbody>
- =
- <tr>
- =
- <td bgcolor=3D"#ffffff">
- =
- <table style=3D"border-collapse: collapse" id=3D"table48" border=
- =3D"0" cellspacing=3D"2" cellpadding=3D"2" width=3D"81%">
- =
- <tbody>
- =
- <tr>
- =
- <td valign=3D"top">
- =
- <table style=3D"border-collapse: collapse" id=3D"tab=
- le49" border=3D"0" cellpadding=3D"0" width=3D"94%">
- =
- <tbody>
- =
- <tr>
- =
- <td>
- =
- <table style=3D"border-collapse: collaps=
- e" id=3D"table50" border=3D"0" cellpadding=3D"0" width=3D"97%">
- =
- <tbody>
- =
- <tr>
- =
- <td bgcolor=3D"#ffffff">
- =
- <div align=3D"center">
- =
- <table style=3D"width: 403px=
- " id=3D"table51" border=3D"0" cellspacing=3D"0" cellpadding=3D"0">
- =
- <tbody>
- =
- <tr>
- =
- <td style=3D"pad=
- ding-bottom: 0in; padding-left: 0in; padding-right: 0in; padding-top: 0in"=
- bgcolor=3D"#e5e5e5" valign=3D"top">
- =
- <div style=3D"ma=
- rgin-bottom: 12pt"><font color=3D"#545454" size=3D"1"><span style=3D"color=
- : #545454; font-size: 9pt">
- =
- <div style=3D"li=
- ne-height: 150%; margin: 0cm 2=2E45pt 0pt 0cm"><span style=3D"font-size: x=
- x-small">
- =
- <div align=3D"le=
- ft"><font size=3D"1">Programa </font></div>
- =
- <div align=3D"le=
- ft"><font size=3D"1">
- =
- <div align=3D"ce=
- nter">
- =
- <table style=3D"=
- border-collapse: collapse" id=3D"table65" border=3D"0" cellpadding=3D"0" w=
- idth=3D"24%">
- =
- <tbody>
- =
- <tr>
- =
- <td =
- bgcolor=3D"#ffffff">
- =
- <tab=
- le style=3D"border-collapse: collapse" id=3D"table66" border=3D"0" cellspa=
- cing=3D"2" cellpadding=3D"2" width=3D"100%">
- =
- =
- <tbody>
- =
- =
- <tr>
- =
- =
- <td valign=3D"top">
- =
- =
- <table style=3D"border-collapse: collapse" id=3D"table67" border=3D=
- "0" cellpadding=3D"0" width=3D"100%">
- =
- =
- <tbody>
- =
- =
- <tr>
- =
- =
- <td>
- =
- =
- <table style=3D"width: 405px; height: 379px" id=3D"tab=
- le68">
- =
- =
- <tbody>
- =
- =
- <tr>
- =
- =
- <td>
- =
- =
- <table style=3D"width: 376px; border-colla=
- pse: collapse; height: 335px" id=3D"table69" border=3D"0" cellspacing=3D"0=
- " cellpadding=3D"0">
- =
- =
- <tbody>
- =
- =
- <tr>
- =
- =
- <td style=3D"border-bottom: #e=
- ce9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transp=
- arent; padding-left: 0cm; width: 373px; padding-right: 0cm; border-top: #e=
- ce9d8; border-right: #ece9d8; padding-top: 0cm">
- =
- =
- <table style=3D"width: 373px; =
- border-collapse: collapse; height: 247px" id=3D"table70" border=3D"0" cell=
- spacing=3D"0" cellpadding=3D"0">
- =
- =
- <tbody>
- =
- =
- <tr>
- =
- =
- <td style=3D"borde=
- r-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-c=
- olor: transparent; padding-left: 0cm; padding-right: 0cm; border-top: #ece=
- 9d8; border-right: #ece9d8; padding-top: 0cm" width=3D"373">
- =
- =
- <div style=3D"marg=
- in: 0cm 0cm 6pt">
- =
- =
- <div align=3D"left=
- ">
- =
- =
- <div><span style=3D=
- "font-size: xx-small">
- =
- =
- <div><span style=3D=
- "color: #000000; font-size: xx-small"><font size=3D"1"><span style=3D"font=
- -size: 9pt">
- =
- =
- <div align=3D"left=
- ">
- =
- =
- <div align=3D"left=
- ">
- =
- =
- <div style=3D"text=
- -indent: 18pt">
- =
- =
- <div><span style=3D=
- "color: #000000; font-size: 7=2E5pt">
- =
- =
- <div><span style=3D=
- "color: black; font-size: 7=2E5pt">
- =
- =
- <div><span style=3D=
- "font-size: 7=2E5pt">
- =
- =
- <div style=3D"line=
- -height: 147%"><span style=3D"line-height: 147%; font-size: xx-small">
- =
- =
- <div>
- =
- =
- <div style=3D"line=
- -height: 146%"><span style=3D"font-family: Verdana"><span style=3D"line-he=
- ight: 146%; color: black; font-size: 7=2E5pt"><span style=3D"font-size: xx=
- -small"><span style=3D"font-family: Verdana"><span style=3D"color: black">=
-
- =
- =
- <div style=3D"bord=
- er-bottom: medium none; border-left: white 3pt solid; padding-bottom: 0cm;=
- padding-left: 0cm; padding-right: 0cm; margin-left: 18pt; border-top: med=
- ium none; margin-right: 0cm; border-right: medium none; padding-top: 0cm">=
- =
- =
- <div style=3D"bord=
- er-bottom: medium none; border-left: medium none; padding-bottom: 0cm; pad=
- ding-left: 0cm; padding-right: 0cm; border-top: medium none; border-right:=
- medium none; padding-top: 0cm">
- =
- =
- <div>
- =
- =
- <div style=3D"line=
- -height: 100%; text-indent: 0px; margin: 0px; word-spacing: 0px">
- =
- =
- <div>
- =
- =
- <div>
- =
- =
- <div style=3D"line=
- -height: 100%; text-indent: 0px; margin: 0px; word-spacing: 0px"><span sty=
- le=3D"font-family: Verdana"><span style=3D"font-size: xx-small"><span>
- =
- =
- <div style=3D"line=
- -height: 100%; text-indent: 0px; margin: 0px; word-spacing: 0px"> </d=
- iv>
- =
- =
- </span></span></sp=
- an></div>
- =
- =
- =
-
- =
- =
- <div><b><span styl=
- e=3D"font-size: 8=2E5pt">Inicios de mobbing:</span></b></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Idelimitación del fenómeno=2E</span></d=
- iv>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Actores participantes</span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Las cuatro fases del espiral del mobbing </span></div=
- >
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">El psíco-terrorismo </span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Acciones para limitarlo</span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Herramientas legales del empleador </span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">La realidad en chile</span></div>
- =
- =
- <div> </div>
- =
- =
- <div><b><span styl=
- e=3D"font-size: 8=2E5pt">Que es acoso laboral en el proyecto de ley:</span=
- ></b></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Artículos del código del trabajo que mo=
- difica el proyecto</span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Acciones legales que puede activar el trabajador en e=
- l nuevo escenario</span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Nuevas atribuciones de la dirección del trabaj=
- o </span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Acciones de tutela laboral</span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Límites de la potestad del empleador </span></=
- div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Plazos de prescripción </span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Utilización del ius variandi </span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Jurisprudencia de mobbing</span></div>
- =
- =
- <div> </div>
- =
- =
- <div><b><span styl=
- e=3D"font-size: 8=2E5pt">Condiciones para que exista mobbing:</span></b></=
- div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Acciones que constituyen acoso laboral</span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Clases de acoso laboral</span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Derechos fundamentales que afectan</span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Que es discriminación </span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Tipos de discriminación </span></div>
- =
- =
- <div><span style=3D=
- "font-size: 8=2E5pt">Procedimiento legal que lo respalda</span></div>
- =
- =
- =
- </div>
- =
- =
- </div>
- =
- =
- </div>
- =
- =
- </div>
- =
- =
- <div> </div>
- =
- =
- </div>
- =
- =
- </div>
- =
- =
- </span></span></sp=
- an></span></span></div>
- =
- =
- </div>
- =
- =
- </span></div>
- =
- =
- </span></div>
- =
- =
- </span></div>
- =
- =
- </span></div>
- =
- =
- </div>
- =
- =
- </div>
- =
- =
- </div>
- =
- =
- </span></font></sp=
- an></div>
- =
- =
- </span></div>
- =
- =
- </div>
- =
- =
- </div>
- =
- =
- </td>
- =
- =
- </tr>
- =
- =
- </tbody>
- =
- =
- </table>
- =
- =
- </td>
- =
- =
- </tr>
- =
- =
- </tbody>
- =
- =
- </table>
- =
- =
- <div align=3D"left">
- =
- =
- <div><i><span style=3D"color: #030000; fon=
- t-size: 10pt">"</span></i><i><span style=3D"color: #0f0902; font-size=
- : 10pt">Actividad/es de capacitación autorizadal </span></i><span s=
- tyle=3D"color: #0f0902">por </span><i><span style=3D"color: #0f0902; font-=
- size: 10pt">el SENCE para </span></i><i><span style=3D"color: #262019; fon=
- t-size: 10pt">l</span></i><i><span style=3D"color: #0f0902; font-size: 10p=
- t">os </span></i><span style=3D"color: #0f0902">efectos </span><i><span st=
- yle=3D"color: #0f0902; font-size: 10pt">de </span></i><i><span style=3D"co=
- lor: #262019; font-size: 10pt">l</span></i><i><span style=3D"color: #0f090=
- 2; font-size: 10pt">a franquicia</span></i></div>
- =
- =
- <i><span style=3D"color: #0f0902; font-siz=
- e: 10pt">tributaria de capacitación, </span></i><span style=3D"colo=
- r: #0f0902; font-size: 10pt">no <i>conducente/s al otorgamiento de </i>un =
- </span><i><span style=3D"color: #262019; font-size: 10pt">tí</span>=
- <span style=3D"color: #0f0902; font-size: 10pt">t</span><span style=3D"col=
- or: #262019; font-size: 10pt">u</span><span style=3D"color: #0f0902; font-=
- size: 10pt">lo </span></i><span style=3D"color: #0f0902; font-size: 10pt">=
- o <i>grado académico=2E</i></span><i><span style=3D"color: #262019;=
- font-size: 10pt">"</span></i></div>
- =
- =
- </td>
- =
- =
- </tr>
- =
- =
- </tbody>
- =
- =
- </table>
- =
- =
- </td>
- =
- =
- </tr>
- =
- =
- </tbody>
- =
- =
- </table>
- =
- =
- </td>
- =
- =
- </tr>
- =
- =
- </tbody>
- =
- </ta=
- ble>
- =
- </td=
- >
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </div>
- =
- </font></div>
- =
- </span></div>
- =
- </span></font></=
- div>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </div>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- =
- </table>
- =
- </td>
- =
- </tr>
- =
- </tbody>
- </=
- table>
- </=
- div>
- </=
- div>
- </=
- font></span></td>
- </tr>
- </tbody>
- </table>
- </span></font>=
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
- </table>
- </font></p>
- </td>
- </tr>
- </tbody>
- </table>
- </p>
- </td>
- </tr>
- <tr>
- <td bgcolor=3D"#ffffff"> </td>
- </tr>
- <tr>
- </tr>
- </tbody>
- </table>
- <script type=3D"text/javascript">/////////// SEARCH ////////=
- ///
- var g=5FaEng;
- var g=5Floc;
- // Initialize namespace, use existing context
- var searchshield =3D searchshield || {};
- searchshield=2EclockUrl;
- // constants
- searchshield=2ESCORE=5FSS=5FSAFE=09=09=3D 1;
- searchshield=2ESCORE=5FSS=5FCAUTION=09=3D 2;
- searchshield=2ESCORE=5FSS=5FWARNING=09=3D 3;
- searchshield=2ESCORE=5FSS=5FBLOCK=09=09=3D 4;
- searchshield=2ESCORE=5FSS=5FVERISIGN=09=3D 7;
- searchshield=2EBLOCK=5FNONE=09=09=3D 0;
- searchshield=2EBLOCK=5FNORMAL=09=3D 1;
- searchshield=2EBLOCK=5FPHISH=09=3D 2;
- searchshield=2EBLOCK=5FYAHOO=09=3D 3;
- searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FNONE=09=3D 0;
- searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FLOW=09=3D 1;
- searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FMED=09=3D 2;
- searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FBLOCK=09=3D 3;
- searchshield=2EVERISIGN=5FSPLIT=5FNOTEST=09=09=3D 0;
- searchshield=2EVERISIGN=5FSPLIT=5FTESTA=09=09=3D 1;
- searchshield=2EVERISIGN=5FSPLIT=5FTESTB=09=09=3D 2;
- searchshield=2EneedLivePhishCheck =3D false;
- searchshield=2EallowedSites =3D [];
- searchshield=2Eenabled =3D function (doc)
- {
- =09var result =3D searchshield=2EavgCallFunc(doc, 'GetSearchEnabled');
- =09return (result =3D=3D '1' =3F 1 : 0);
- };
- searchshield=2Einit =3D function (doc)
- {
- =09if ((doc =3D=3D null) || (doc=2Elocation =3D=3D null) || (doc=2Elocatio=
- n=2Ehref=2Esearch(/about:/) !=3D -1))
- =09=09return;
- =09if (!searchshield=2Eenabled(doc))
- =09=09return;
- =09if (!g=5FaEng)
- =09=09g=5FaEng =3D searchshield=2ESearch=2Eprototype=2EdetectEngine(doc=2E=
- location=2Ehref);
- =09if (!g=5FaEng)
- =09=09return;
- =09// init search object (not declared or is null)
- =09if (typeof xplSearch =3D=3D=3D 'undefined')
- =09{
- =09=09// global
- =09=09xplSearch =3D new searchshield=2ESearch();
- =09=09// reset the links added flag
- =09=09xplSearch=2Enew=5Flinks =3D false;
- =09=09xplSearch=2Edoc =3D doc;
- =09=09xplSearch=2Ehref=09=3D xplSearch=2Edoc=2Elocation=2Ehref;
- =09=09xplSearch=2Euri=09=3D searchshield=2EparseLink(xplSearch=2Ehref);
- =09=09
- =09=09xplSearch=2Eengine=09=3D new searchshield[g=5FaEng+'SearchEngine'](x=
- plSearch)
- =09=09xplSearch=2EaddEngine(xplSearch=2Eengine);
- =09=09searchshield=2Elaunch(doc);
- =09}
- =09if (doc=2Elocation=2Ehref !=3D g=5Floc)
- =09{
- =09=09g=5Floc =3D doc=2Elocation=2Ehref;
- =09=09if ((typeof xplSearch !=3D=3D 'undefined') && (xplSearch !=3D null))=
- =09=09=09searchshield=2Elaunch(doc);
- =09}
- };
- searchshield=2Elaunch =3D function (doc)
- {
- =09// IE specific check
- =09searchshield=2EquirksMode =3D (self=2Etop=2Edocument=2EcompatMode =3D=3D=
- 'BackCompat');
- =09searchshield=2EdocMode =3D parseInt(navigator=2EuserAgent=2Esplit('MSIE=
- ')[1]);
- =09=09
- =09if ((self =3D=3D=3D top) && (self=2Edocument =3D=3D=3D doc))
- =09{
- =09=09if (!xplSearch=2Eengine)
- =09=09=09return;
- =09=09// set verdict display config
- =09=09xplSearch=2Eengine=2EsetRatingsConfig(doc);
- =09=09// init the alert popup
- =09=09searchshield=2EinitPopupAlert(doc);
- =09=09if (xplSearch=2Eengine=2Etype !=3D 'inline')
- =09=09{
- =09=09=09// save function reference for memory clean up later
- =09=09=09var fn =3D function(event){avglsflyover=2Ehide(null)};
- =09=09=09//hide flyover if these events occur
- =09=09=09window=2EdetachEvent('onscroll', fn);
- =09=09=09window=2EattachEvent('onscroll', fn);
- =09=09=09doc=2EdetachEvent('onkeydown', fn);
- =09=09=09doc=2EattachEvent('onkeydown', fn);
- =09=09}
- =09=09
- =09=09// only start monitor on top doc
- =09=09searchshield=2EavgPageMonitor=2Estart(doc);
- =09}
- =09return;
- };
- // search monitors and processors - doc is always top most document
- searchshield=2EavgPageMonitor =3D {
- =09previousUrl: null,
- =09start: function(doc){
- =09=09searchshield=2EavgPageMonitor=2Estop();
- =09=09searchshield=2EavgPageMonitor=2Eprocess(doc);
- =09=09searchshield=2EavgPageMonitor=2EtimeoutID =3D window=2EsetTimeout(fu=
- nction(){searchshield=2EavgPageMonitor=2Estart(doc)}, 1000);
- =09},
- =09process: function(doc){
- =09=09var currentUrl =3D doc=2Elocation=2Ehref;
- =09=09var refresh =3D 0;
- =09=09if (this=2EpreviousUrl !=3D currentUrl) {
- =09=09=09this=2EpreviousUrl =3D currentUrl;
- =09=09=09avgreport=2EscanResult(doc, currentUrl);
- =09=09=09refresh =3D (xplSearch=2Eengine=2Ename =3D=3D 'google') =3F 1 : 0=
- ;
- =09=09}
- =09=09searchshield=2EavgProcessSearch(doc, refresh);
- =09},
- =09stop: function(){
- =09=09if (searchshield=2EavgPageMonitor=2EtimeoutID)
- =09=09{
- =09=09=09window=2EclearTimeout(searchshield=2EavgPageMonitor=2EtimeoutID);=
- =09=09=09delete searchshield=2EavgPageMonitor=2EtimeoutID;
- =09=09}
- =09}
- };
- searchshield=2EavgProcessSearch =3D function (doc, refresh)
- {
- =09// doc may be about:Tabs or about:Blank
- =09if (!doc)
- =09=09return;
- =09=09
- =09if (!searchshield=2Eenabled(doc))
- =09=09return;
- =09if (!searchshield=2EclockUrl)
- =09=09searchshield=2EclockUrl =3D searchshield=2EavgCallFunc(doc, 'GetIcon=
- Url', '0');
- =09=09
- =09xplSearch=2EclockUrl =3D searchshield=2EclockUrl
- =09if (!xplSearch=2Eengine)
- =09=09return;
- =09// get result links
- =09xplSearch=2Elinks =3D [];
- =09var links =3D searchshield=2EavgGetSearchLinks(doc, xplSearch=2Eengine,=
- refresh);
- =09searchshield=2EneedLivePhishCheck =3D false;
- =09for (var i=3D0; i < links=2Elength; i++)
- =09{
- =09=09var isPhishing =3D searchshield=2EavglsCheckandUpdate(links[i]);
- =09=09if (isPhishing)
- =09=09=09searchshield=2EneedLivePhishCheck =3D true;
- =09}
- =09
- =09if (searchshield=2EneedLivePhishCheck)
- =09{
- =09=09var prev =3D '1';
- =09=09if ( xplSearch=2Eengine=2Etype =3D=3D 'inline' )
- =09=09=09prev =3D '0';
- =09=09searchshield=2EavgCallFunc(doc, 'GetPhishingResults', prev);
- =09=09searchshield=2EneedLivePhishCheck =3D false;
- =09}
- =09else if (links=2Elength > 0 && xplSearch=2Eengine=2Etype !=3D 'inline')=
- =09{
- =09=09searchshield=2EavgCallFunc(doc, 'FinalScanComplete');
- =09}
- =09
- =09// attach click handlers for popup alerts
- =09doc=2Ebody=2EdetachEvent("onclick", searchshield=2EblockClick);
- =09doc=2Ebody=2EattachEvent("onclick", searchshield=2EblockClick);
- =09
- =09doc=2Ebody=2EdetachEvent("ondblclick", searchshield=2EblockClick);
- =09doc=2Ebody=2EattachEvent("ondblclick", searchshield=2EblockClick);
- };
- searchshield=2EavgGetSearchLinks =3D function (doc, engine, refresh)
- {
- =09if (!doc=2Ebody)
- =09=09return;
- =09var alltags =3D doc=2Ebody=2EgetElementsByTagName('a');
- =09for (var i =3D 0; i < alltags=2Elength; i++)
- =09{
- =09=09if ( !refresh )
- =09=09{=09// no checked test if refreshing - google
- =09=09=09if (alltags[i]=2EgetAttribute('avglschecked'))
- =09=09=09=09continue;
- =09=09}
- =09=09
- =09=09// mark search result anchor so it isn't processed repeatedly
- =09=09alltags[i]=2EsetAttribute('avglschecked', '1');
- =09=09// ignore linked resources
- =09=09if (alltags[i]=2EtagName =3D=3D 'LINK')
- =09=09=09continue;
- =09=09// ignore in-page bookmarks and javascript
- =09=09if ((!alltags[i]=2Ehref)=09||
- =09=09=09(alltags[i]=2Ehref=2EcharAt(0) =3D=3D '#') ||=09// in-page bookma=
- rk
- =09=09=09(alltags[i]=2Ehref=2EindexOf("javascript") =3D=3D 0))
- =09=09=09continue;
- =09=09=09
- =09=09// ignore verdicts
- =09=09if (/XPLSS=5F/=2Etest(alltags[i]=2Eid))
- =09=09=09continue;
- =09=09// ignore flyover anchors
- =09=09if (/avgthreatlabs/=2Etest(alltags[i]=2Ehost))
- =09=09=09continue;
- =09=09=09
- =09=09var href =3D engine=2EincludeLink(alltags[i]);
- =09=09if (!href)
- =09=09=09continue;
- =09=09
- =09=09var newNode =3D engine=2Esearch=2EaddLink(alltags[i], href);
- =09=09engine=2EaddImage(newNode, engine=2Esearch=2EclockUrl, false);
- =09}
- =09
- =09// recursivesly process all frames
- =09var docFrames =3D doc=2Eframes;
- =09if (docFrames && engine=2EprocessFrames)
- =09{
- =09=09for (var j =3D 0; j < docFrames=2Elength; j++)
- =09=09{
- =09=09=09var attr;
- =09=09=09var frameDoc;
- =09=09=09try {
- =09=09=09=09attr =3D docFrames[j]=2EframeElement=2EclassName;
- =09=09=09=09frameDoc =3D docFrames[j]=2Edocument;
- =09=09=09}
- =09=09=09catch(err){}
- =09=09=09//TODO: make frame processing an engine function or at least make=
- exclusions an engine property
- =09=09=09// 'editable' frame it's probably a gmail reply
- =09=09=09if (attr && (attr=2EindexOf("editable") !=3D -1))
- =09=09=09=09continue;
- =09=09=09if (frameDoc)
- =09=09=09=09searchshield=2EavgGetSearchLinks(frameDoc, engine, 0);
- =09=09}
- =09}
- =09
- =09return engine=2Esearch=2Elinks;
- };
- searchshield=2EavglsCheckandUpdate =3D function (linkNode)
- {
- =09if (!xplSearch)
- =09=09return;
- =09// element is the search result anchor
- =09var element =3D linkNode=2Eelement;
- =09var href =3D linkNode=2Ehref;
- =09var result =3D searchshield=2EavgCallFunc(xplSearch=2Edoc, 'CheckSite',=
- href, element=2Ehref);
- =09if (result =3D=3D null)
- =09=09return;
- =09
- =09var resultParse =3D result=2Esplit('::');
- =09var phishing =3D resultParse[0]; // if phishing then rest of array do=
- es not exist=2E
- =09if (phishing =3D=3D 1)
- =09=09return true;
- =09if (resultParse=2Elength < 8)
- =09=09return;
- =09
- =09var hash=09 =3D resultParse[1];
- =09var score=09 =3D resultParse[2];
- =09var new=5Fimage =3D resultParse[3];
- =09var alt=5Fimage =3D resultParse[4];
- =09var flyover=09 =3D resultParse[5];
- =09var click=5Fthru=3D resultParse[6];
- =09var altClick=5Fthru =3D resultParse[7];
- =09// iterate to get verdict anchor
- =09nextElem =3D element=2EnextSibling;
- =09while (nextElem)
- =09{
- =09=09if (nextElem=2EnodeType =3D=3D 1 && nextElem=2Eid && (nextElem=2Eid=2E=
- indexOf("XPLSS=5F") !=3D -1))
- =09=09=09break;
- =09=09nextElem =3D nextElem=2EnextSibling;
- =09}
- =09
- =09return xplSearch=2Eengine=2EupdateImage(hash, xplSearch=2EsearchHash, s=
- core, new=5Fimage, alt=5Fimage, flyover, click=5Fthru, altClick=5Fthru);
- };
- // click event handler - shows popup for links of caution and warning seve=
- rity
- searchshield=2EblockClick =3D function(event)
- {
- =09if (!event)
- =09=09event =3D window=2Eevent;
- =09=09
- =09// no action needed if click is not the left mouse button
- =09if (event=2Ebutton !=3D 0)
- =09=09return;
- =09=09
- =09var anchor =3D searchshield=2EgetAnchorNode(event=2EsrcElement,=20
- =09=09=09=09=09=09=09=09function(node) {return ((node=2EtagName=2EcharAt(0=
- ) =3D=3D "H") ||
- =09=09=09=09=09=09=09=09=09=09=09=09=09=09(node=2EtagName=2EcharAt(0) =3D=3D=
- "D") ||
- =09=09=09=09=09=09=09=09=09=09=09=09=09=09(node=2EtagName=2EcharAt(0) =3D=3D=
- "T"))}=09);
- =09
- =09if ((anchor =3D=3D null) || (anchor=2Ehref =3D=3D null))
- =09=09return true;
- =09
- =09// ignore if anchor is on an xpl verdict
- =09if (!!anchor=2Eid)
- =09{
- =09=09if (anchor=2Eid=2EindexOf('LXPLSS=5F') =3D=3D 0)
- =09=09=09return true;
- =09=09
- =09=09if (anchor=2Eid=2EindexOf('XPLSS=5FINTR') =3D=3D 0)
- =09=09{
- =09=09=09searchshield=2EallowedSites=2Epush(searchshield=2EGetDomain(ancho=
- r=2Ehref));
- =09=09=09return true;
- =09=09}
- =09}
- =09
- =09// VeriSign A/B Split reporting - only for VerSign domains
- =09var avglschecked =3D anchor=2EgetAttribute("avglschecked");
- =09if (avglschecked && avglschecked !=3D 1)
- =09{
- =09=09var sPos =3D avglschecked=2EindexOf("S");
- =09=09var hash =3D (sPos > -1) =3F avglschecked=2Esubstring(0, sPos) : nul=
- l;
- =09=09var split =3D (sPos > -1) =3F avglschecked=2Esubstring(sPos+1) : nul=
- l;
- =09=09if (hash && split && split !=3D searchshield=2EVERISIGN=5FSPLIT=5FNO=
- TEST)
- =09=09{
- =09=09=09// check updated verdict anchor for verisign domain
- =09=09=09var d =3D event=2EsrcElement=2EownerDocument;
- =09=09=09if (d=2EgetElementById("LXPLSS=5F" + hash + "U" + searchshield=2E=
- SCORE=5FSS=5FVERISIGN))
- =09=09=09{
- =09=09=09=09searchshield=2EavgCallFunc(d, "RecordVSClick", hash, d=2Elocat=
- ion=2Ehref);
- =09=09=09}
- =09=09}
- =09}
- =09var link =3D anchor=2Ehref;
- =09var verdict =3D searchshield=2EgetAvgImage(anchor);
- =09var score =3D -1;
- =09var img=5Fid =3D '';
- =09if (verdict !=3D null)
- =09{
- =09=09score =3D verdict=2Escore;
- =09=09img=5Fid =3D verdict=2ErawId;
- =09}
- =09
- =09// show popup alert (upper left)
- =09if ((score >=3D searchshield=2ESCORE=5FSS=5FCAUTION) && (score <=3D sea=
- rchshield=2ESCORE=5FSS=5FWARNING))
- =09{
- =09=09// prevent this click from going any further
- =09=09var search=5Fhash =3D searchshield=2EavgCallFunc(document, 'GetHash'=
- , document=2Elocation=2Ehref);
- =09=09searchshield=2EShowPopupAlert(document, link, img=5Fid, search=5Fhas=
- h);
- =09=09// if possible, stop the event from going any further
- =09=09searchshield=2EcancelEvent(event);
- =09=09return false;
- =09}
- =09
- =09return true;
- };
- // called by native to update phishing links
- searchshield=2EupdatePhishingLinks =3D function (results)
- {
- =09if (!results)
- =09=09return;
- =09if (!xplSearch)
- =09=09return;
- =09var engine =3D xplSearch=2Eengine;
- =09var resultParse =3D results=2Esplit("::");
- =09var resultsLength =3D resultParse[0];
- =09for (var i=3D0; i < resultsLength; i++)
- =09{
- =09=09var idx =3D i*7;
- =09=09var hash=09 =3D resultParse[idx+1];
- =09=09var score=09 =3D resultParse[idx+2];
- =09=09var new=5Fimage =3D resultParse[idx+3];
- =09=09var alt=5Fimage =3D resultParse[idx+4];
- =09=09var flyover=09 =3D resultParse[idx+5];
- =09=09var click=5Fthru=3D resultParse[idx+6];
- =09=09var altClick=5Fthru =3D resultParse[idx+7];
- =09=09engine=2EupdateImage(hash, xplSearch=2EsearchHash, score, new=5Fimag=
- e, alt=5Fimage, flyover, click=5Fthru, altClick=5Fthru);
- =09}
- };
- searchshield=2EgetAvgImage =3D function (element)
- {
- =09var obj =3D {};
- =09obj=2Eimg =3D xplSearch=2Eengine=2EgetImgElement(element);
- =09obj=2Escore =3D -1;
- =09
- =09//parse the score from the id
- =09if (obj=2Eimg !=3D null && obj=2Eimg=2Eid)
- =09{
- =09=09var pos =3D !!obj=2Eimg=2Eid =3F obj=2Eimg=2Eid=2EindexOf('U') + 1 :=
- -1;
- =09=09obj=2Escore =3D (pos < 1) =3F -1 : obj=2Eimg=2Eid=2EcharAt(pos);
- =09=09obj=2ErawId =3D obj=2Eimg=2Eid=2Esubstring(0,pos-1);
- =09}
- =09
- =09return obj;
- };
- searchshield=2EGetScannedLink =3D function (link)
- {
- =09if (!xplSearch || !(xplSearch=2Elinks instanceof Array))
- =09=09return link;
- =09// look for the link we scanned based on original element
- =09for (var i =3D 0; i < xplSearch=2Elinks=2Elength; i++)
- =09{
- =09=09if (xplSearch=2Elinks[i]=2Eelement=2Ehref =3D=3D link)
- =09=09=09return xplSearch=2Elinks[i]=2Ehref;
- =09}
- =09// else return the incoming link
- =09return link;
- };
- searchshield=2EpreviouslyScanned =3D function (links, hash)
- {
- =09for (var i =3D 0; i < links=2Elength; i++)
- =09{
- =09=09if ((links[i] !=3D null) && (links[i]=2Ehash !=3D null) &&=20
- =09=09=09(links[i]=2Ehash =3D=3D hash) && (links[i]=2Echecked =3D=3D true)=
- )
- =09=09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EinitPopupAlert =3D function (doc)
- {
- =09// check if it exists first
- =09if (doc=2EgetElementById("XPLSS=5FPopupAlert"))
- =09=09return;
- =09// create a div to use for the popup itself, hide for now
- =09var popup=5Fdiv =3D doc=2EcreateElement("DIV");
- =09popup=5Fdiv=2EsetAttribute("id", "XPLSS=5FPopupAlert");
- =09popup=5Fdiv=2Estyle=2Eposition =3D "absolute";
- =09popup=5Fdiv=2Estyle=2EzIndex =3D "10000";
- =09doc=2Ebody=2EappendChild(popup=5Fdiv);
- };
- searchshield=2EinitFlyover =3D function (doc, engine)
- {
- =09// create in top doc only
- =09if (doc !=3D=3D window=2Etop=2Edocument)
- =09=09doc =3D window=2Etop=2Edocument;
- =09// check if it exists first
- =09if ((doc =3D=3D null) || (doc=2EgetElementById("XPLSS=5FFlyover")))
- =09=09return;
- =09// create a div to use for the flyover itself, hide for now
- =09var flyover=5Fdiv =3D doc=2EcreateElement("DIV");
- =09flyover=5Fdiv=2EsetAttribute("id", "XPLSS=5FFlyover");
- =09flyover=5Fdiv=2Estyle=2Eposition =3D "absolute";
- =09flyover=5Fdiv=2Estyle=2EzIndex =3D "10000";
- =09doc=2Ebody=2EappendChild(flyover=5Fdiv);
- =09// create a layer for the image
- =09var trans=5Fdiv =3D doc=2EcreateElement("DIV");
- =09trans=5Fdiv=2EsetAttribute("id", "XPLSS=5FTrans");
- =09trans=5Fdiv=2Estyle=2Eposition =3D "absolute";
- =09trans=5Fdiv=2Estyle=2EzIndex =3D "9999";
- =09doc=2Ebody=2EappendChild(trans=5Fdiv);
- };
- searchshield=2EShowPopupAlert =3D function (doc, link, hash, search)
- {
- =09// build the content
- =09var popup=5Fcontent =3D searchshield=2EavgCallFunc(doc, 'BuildPopupAler=
- t', hash, search);
- =09if (popup=5Fcontent =3D=3D null || popup=5Fcontent =3D=3D "")
- =09=09return;
- =09// get the div
- =09var div =3D doc=2EgetElementById("XPLSS=5FPopupAlert");
- =09div=2EinnerHTML =3D searchshield=2ECleanupHTML(popup=5Fcontent);
- =09// set position, account for scrolling
- =09var zoom =3D searchshield=2EzoomLevel();
- =09var pageOffsetX =3D Math=2Eround(doc=2EdocumentElement=2EscrollLeft/zoo=
- m);
- =09var pageOffsetY =3D Math=2Eround(doc=2EdocumentElement=2EscrollTop/zoom=
- );
- =09
- =09div=2Estyle=2Eleft =3D 10 + pageOffsetX + "px";
- =09div=2Estyle=2Etop =3D 10 + pageOffsetY + "px";
- =09
- =09// TODO: the event handler function doesn't exist so, is this even nece=
- ssary=3F
- =09//div=2EattachEvent("onmouseout", HidePopupAlert);
- =09// set the link
- =09//var data =3D doc=2EgetElementById("avgalertpopurl");
- =09//if (data)
- =09//=09=09data=2EinnerHTML =3D escape(link);
- =09// set visibility
- =09div=2Estyle=2Evisibility =3D "visible";
- =09//navigate to the link after timed delay
- =09// TODO: Bug 31707 - make this open a new tab/window
- =09setTimeout(function(){doc=2Elocation=2Eassign(link)}, 3000);
- };
- searchshield=2EavgCallFunc =3D function (doc, name /*, param1=2E=2E=2E, pa=
- ramN*/)
- {
- =09// get the data element
- =09var avg=5Fls=5Fdata =3D (typeof gAvgDataElement !=3D=3D 'undefined') =3F=
- gAvgDataElement : doc=2EgetElementById("avglsdata");
- =09if ((avg=5Fls=5Fdata =3D=3D null) || (name =3D=3D null))
- =09=09return;
- =09
- =09// save the data element
- =09gAvgDataElement =3D avg=5Fls=5Fdata;
- =09// for some reason you can't fire and event on an element with no paren=
- t node
- =09if (avg=5Fls=5Fdata=2EparentNode =3D=3D null)
- =09=09return;
- =09// set the attributes
- =09avg=5Fls=5Fdata=2EsetAttribute("function", name);
- =09
- =09// set variable length of optional parameter attributes
- =09var pcnt =3D 0;
- =09for (var i=3D2; i < arguments=2Elength; i++)
- =09=09avg=5Fls=5Fdata=2EsetAttribute("param"+(++pcnt), String(arguments[i]=
- ));
- =09avg=5Fls=5Fdata=2EfireEvent("onrowenter");
- =09// get the result
- =09return avg=5Fls=5Fdata=2EgetAttribute("result");=09
- };
- // general use functions - begin
- // DOM Functions
- searchshield=2EgetAnchorNode =3D function (node, filterFunc)
- {
- =09// filterFunc should return a boolean
- =09if (!filterFunc || !filterFunc instanceof Function)
- =09=09return null;
- =09=09
- =09// go up the dom tree starting at node and look for anchor=20
- =09// before hitting a header, div or table element=20
- =09while ((node !=3D null)=09=09=09&&
- =09=09=09(node=2EtagName !=3D null)=09&&=20
- =09=09=09(node=2EtagName !=3D "A"))
- =09{
- =09=09if (filterFunc(node))
- =09=09{
- =09=09=09node =3D null;
- =09=09=09break;
- =09=09}
- =09=09node =3D node=2EparentNode;
- =09}
- =09return node;
- };
- searchshield=2EgetDocuments =3D function (frame, frameArray)
- {=09// recursively get all embedded frames/docs
- =09frameArray=2Epush(frame=2Edocument);
- =09var frames =3D frame=2Eframes;
- =09for (var i =3D 0; i < frames=2Elength; i++)
- =09{
- =09=09// recurse on each frame
- =09=09searchshield=2EgetDocuments(frames[i], frameArray);
- =09}
- =09return frameArray;
- };
- searchshield=2ENextSiblingNode =3D function (element)
- {
- =09var TEXTNODE =3D 3;
- =09var ParentNode =3D element=2EparentNode;
- =09if (!ParentNode)
- =09=09return;
- =09var NextSibling =3D ParentNode=2EnextSibling;
- =09while (NextSibling)
- =09{
- =09=09if (NextSibling=2EnodeType !=3D TEXTNODE)
- =09=09=09return NextSibling;
- =09=09NextSibling =3D NextSibling=2EnextSibling;
- =09}
- =09return;
- };
- searchshield=2EgetParentNodeByAttribute =3D function (attrName, attrValue,=
- node, maxDepth)
- {
- =09if (!node)
- =09=09return null;
- =09
- =09var maxLoop =3D maxDepth =3F maxDepth : 1;
- =09var pNode =3D node=2EparentNode;
- =09
- =09if (!pNode)
- =09=09return null;
- =09
- =09for(; 0 < maxLoop; maxLoop--)=20
- =09{
- =09=09if ((pNode[attrName]) &&=20
- =09=09=09(pNode[attrName]=2EtoLowerCase() =3D=3D=3D attrValue=2EtoLowerCas=
- e()))=20
- =09=09{
- =09=09=09return pNode;
- =09=09}
- =09=09pNode =3D pNode=2EparentNode;
- =09=09if (!pNode)
- =09=09=09return null;
- =09}
- =09return null;
- };
- searchshield=2EgetParentNodeByClassName =3D function (className, node, max=
- Depth)=20
- {
- =09return searchshield=2EgetParentNodeByAttribute("className", className, =
- node, maxDepth);
- };
- searchshield=2EgetParentNodeById =3D function (id, node, maxDepth)
- {
- =09return searchshield=2EgetParentNodeByAttribute("id", id, node, maxDepth=
- );
- };
- searchshield=2EgetParentNodeByTagName =3D function (tagName, node, attrNam=
- e)=20
- {=09// find parent node by tag name and optional attribute name
- =09if (!tagName || !node || !node=2EparentNode)
- =09=09return null;
- =09tagName =3D tagName=2EtoUpperCase();
- =09while ((node !=3D null) && (node=2EnodeType !=3D 9))
- =09{
- =09=09// if attrName is not provided just return TRUE
- =09=09if (node=2EnodeName =3D=3D tagName)
- =09=09{
- =09=09=09var nodeHasAttribute =3D !!attrName =3F node[attrName] : true;
- =09=09=09if (nodeHasAttribute)
- =09=09=09=09return node;
- =09=09}
- =09=09=09
- =09=09node =3D node=2EparentNode;
- =09}
- =09
- =09// no div
- =09return null;
- };
- searchshield=2EgetHrefFromCiteElement =3D function (tag)
- {
- =09var rtnHtml;
- =09var tp =3D tag=2EparentNode;
- =09var tgpn =3D tp =3F tp=2EparentNode : null;
- =09if (!tgpn)
- =09=09return;
- =09lastChildElem =3D tgpn=2ElastChild;
- =09while ((lastChildElem !=3D null) && (lastChildElem=2EnodeName !=3D 'SPA=
- N') && (lastChildElem=2EnodeName !=3D 'DIV'))
- =09{
- =09=09lastChildElem =3D lastChildElem=2EpreviousSibling;
- =09}
- =09
- =09if (lastChildElem)
- =09=09rtnHtml =3D lastChildElem=2EgetElementsByTagName('cite')[0];
- =09
- =09if (rtnHtml)
- =09=09rtnHtml =3D rtnHtml=2EinnerHTML;
- =09
- =09return rtnHtml;
- };
- searchshield=2EgetHrefFromSpanElement =3D function (tag)
- {
- =09var rtnHtml;
- =09
- =09var tp =3D tag=2EparentNode;
- =09var tgpn =3D tp =3F tp=2EparentNode : null;
- =09if (!tgpn)
- =09=09return;
- =09siblingElem =3D tgpn=2EnextSibling;
- =09while ((siblingElem !=3D null) && (siblingElem=2EnodeName !=3D 'SPAN') =
- && (siblingElem=2EclassName !=3D 'site'))
- =09{
- =09=09siblingElem =3D siblingElem=2EnextSibling;
- =09=09if (siblingElem && siblingElem=2EclassName && (siblingElem=2EclassN=
- ame=2Ematch(/res[13]/)))
- =09=09=09break;
- =09}
- =09
- =09if (siblingElem)
- =09=09rtnHtml =3D siblingElem=2EgetElementsByTagName('a')[0];
- =09
- =09if (rtnHtml)
- =09=09rtnHtml =3D rtnHtml=2EinnerHTML;
- =09
- =09return rtnHtml;
- };
- searchshield=2EgetTopLevelDocument =3D function (doc)
- {=09// return the top level document for the given doc, could be itself
- =09// TODO: determine a method of doing this for IE, if necessary
- =09
- =09// don't check about:blank
- =09if (doc && ((doc=2Elocation=2Ehref =3D=3D "about:blank") || (doc=2Eloca=
- tion=2Ehref =3D=3D "about:Tabs")))
- =09=09return doc;
- =09// Check if already a top level document
- =09for (var i =3D 0; i < gBrowser=2Ebrowsers=2Elength; i++)
- =09{
- =09=09if (doc =3D=3D gBrowser=2Ebrowsers[i]=2EcontentDocument)
- =09=09=09return doc;
- =09}
- =09// Not a top level, check all frames=20
- =09var documents;
- =09for (var j =3D 0; j < gBrowser=2Ebrowsers=2Elength; j++)
- =09{
- =09=09// get all docs for each browser
- =09=09documents =3D searchshield=2EgetDocuments(gBrowser=2Ebrowsers[j]=2Ec=
- ontentWindow, new Array());
- =09=09for (var k =3D 0; k < documents=2Elength; k++)
- =09=09{
- =09=09=09// check if doc is from current browser
- =09=09=09if (doc =3D=3D documents[k])
- =09=09=09{
- =09=09=09=09// it is, return the top level doc for this browser
- =09=09=09=09return gBrowser=2Ebrowsers[j]=2EcontentDocument;
- =09=09=09}
- =09=09}
- =09}
- =09
- =09return doc;
- };
- searchshield=2EgetTopLevelWindow =3D function ()
- {
- =09// TODO: determine a method of doing this for IE, if necessary
- =09return mediator=2EgetMostRecentWindow("navigator:browser");
- };
- //Event functions
- searchshield=2EaddListener =3D function (object, evtType, listener, useCap=
- ture)
- {
- =09useCapture =3D !!useCapture;
- =09if (object=2EaddEventListener)
- =09{
- =09=09object=2EaddEventListener(evtType, listener, useCapture);
- =09=09return true;
- =09}
- =09else if (object=2EattachEvent)
- =09{
- =09=09 object=2EattachEvent("on"+evtType, listener);
- =09=09 return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2EcancelEvent =3D function (event)
- {
- =09event=2EcancelBubble =3D true;
- =09event=2EreturnValue =3D false;
- };
- searchshield=2EdoEvent =3D function (evtObj, evtTarget, evtName, evtType, =
- bubbles, cancelable)
- {
- =09bubbles=09=09=3D !!bubbles;
- =09cancelable=09=3D !!cancelable;
- =09
- =09if (document=2EcreateEvent)
- =09{
- =09=09var evt =3D document=2EcreateEvent("Events");
- =09=09evt=2EinitEvent(evtName, bubbles, cancelable);
- =09=09evtTarget=2EdispatchEvent(evt);
- =09=09return true;
- =09}
- =09else if (document=2EcreateEventObject)
- =09{
- =09=09var evt =3D document=2EcreateEventObject(evtObj);
- =09=09evtTarget=2EfireEvent("on" + evtType, evt);
- =09=09return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2EremoveListener =3D function (object, evtType, listener, use=
- Capture)
- {
- =09useCapture =3D !!useCapture;
- =09
- =09if (object=2EremoveEventListener)
- =09{
- =09=09object=2EremoveEventListener(evtType, listener, useCapture);
- =09=09return true;
- =09}
- =09else if (object=2EdetachEvent)
- =09{
- =09=09 object=2EdetachEvent(evtType, listener);
- =09=09 return true;
- =09}
- =09
- =09return false;
- };
- // HTML functions
- searchshield=2ECleanupHTML =3D function (data)
- {
- =09if (data =3D=3D null)
- =09=09return data;
- =09// cleanup html data, replace any new lines
- =09data =3D data=2Ereplace(/\r/g, "");
- =09data =3D data=2Ereplace(/\n/g, "");
- =09// escape any single quotes
- =09data =3D data=2Ereplace(/'/g, "\\'");
- =09return data;
- };
- searchshield=2EremoveHtmlTags =3D function (str)
- {
- =09var re =3D new RegExp('(<[^>]+>)','g');
- =09var strStr =3D new String(str);
- =09if (!!strStr)
- =09=09return strStr=2Ereplace(re, '');
- =09else
- =09=09return str;
- =09
- };
- // Browser functions
- searchshield=2EelementSize =3D function (element)
- {
- =09//returns an array [sizeX, sizeY]
- =09
- =09var elemX;
- =09var elemY;
- =09
- =09elemX =3D parseInt(element=2EoffsetWidth);
- =09elemY =3D parseInt(element=2EoffsetHeight)
- =09
- =09return [elemX, elemY];
- };
- searchshield=2EGetFullBoundingRect =3D function (element)
- {
- =09if (!element) return;
- =09// get bounding rect for incoming element
- =09var elementRect =3D element=2EgetBoundingClientRect();
- =09var nextImg =3D null;
- =09var nextImgRect =3D null;
- =09// first check for another non-TextNode element after this one
- =09var siblingElement =3D searchshield=2ENextSiblingNode(element);
- =09if (=09siblingElement &&=20
- =09=09siblingElement=2EfirstChild &&=20
- =09=09siblingElement=2Eid &&=20
- =09=09siblingElement=2Eid=2EindexOf("XPLSS=5F") !=3D -1)
- =09{
- =09=09nextImg =3D siblingElement=2EfirstChild;=09=09
- =09=09nextImgRect =3D nextImg=2EgetBoundingClientRect();=09
- =09}
- =09else
- =09{
- =09=09return elementRect;
- =09}
- =09
- =09if ((nextImgRect=2Etop >=3D elementRect=2Ebottom) &&=20
- =09=09(nextImgRect=2Eleft <=3D elementRect=2Eleft))
- =09{=09// images appear to be on seperate lines
- =09=09return elementRect;
- =09}
- =09// else merge the rects together into a new one
- =09var newRect =3D new function() { this=2Etop=3D0; this=2Eleft=3D0; this=2E=
- right=3D0; this=2Ebottom=3D0; this=2Emid=3D0;};
- =09newRect=2Etop =3D Math=2Emin(elementRect=2Etop, nextImgRect=2Etop);
- =09newRect=2Eleft=3D Math=2Emin(elementRect=2Eleft, nextImgRect=2Eleft);
- =09newRect=2Eright=3DMath=2Emax(elementRect=2Eright, nextImgRect=2Eright);=
- =09newRect=2Ebottom=3DMath=2Emax(elementRect=2Ebottom, nextImgRect=2Ebotto=
- m);
- =09newRect=2Emid =3D Math=2Emin(elementRect=2Eright, nextImgRect=2Eleft);
- =09
- =09return newRect;
- };
- searchshield=2EoffsetLeft =3D function (element)
- {
- =09var offset =3D 0;
- =09while (element)
- =09{
- =09=09offset +=3D element=2EoffsetLeft;
- =09=09element =3D element=2EoffsetParent;
- =09}
- =09return offset;
- };
- searchshield=2EoffsetTop =3D function (element)
- {
- =09var offset =3D 0;
- =09while (element)
- =09{
- =09=09offset +=3D element=2EoffsetTop;=09
- =09=09element =3D element=2EoffsetParent;
- =09}
- =09return offset;
- };
- searchshield=2EscrollSize =3D function (imageElem)
- {
- =09// returns an array [scrollX, scrollY, hasParentFrame]
- =09var scrollX;
- =09var scrollY;
- =09var hasParentFrame;
- =09
- =09// firefox
- =09if (window=2EpageXOffset && window=2EpageYOffset)
- =09{
- =09=09scrollX =3D window=2EpageXOffset;
- =09=09scrollY =3D window=2EpageYOffset;
- =09}
- =09else if (document=2EdocumentElement || document=2Ebody)
- =09{
- =09=09scrollX =3D document=2EdocumentElement=2EscrollLeft || document=2Ebo=
- dy=2EscrollLeft;
- =09=09scrollY =3D document=2EdocumentElement=2EscrollTop || document=2Ebod=
- y=2EscrollTop;
- =09=09if (imageElem)
- =09=09{
- =09=09=09var frames =3D document=2Eframes;
- =09=09=09if (frames)
- =09=09=09{
- =09=09=09=09for (var i=3D0; i < frames=2Elength; i++)
- =09=09=09=09{
- =09=09=09=09=09var img;
- =09=09=09=09=09try {
- =09=09=09=09=09=09img =3D frames[i]=2Edocument=2EgetElementById(imageElem=2E=
- id);
- =09=09=09=09=09}
- =09=09=09=09=09catch(domErr){}
- =09=09=09=09=09if (img !=3D null)
- =09=09=09=09=09{
- =09=09=09=09=09=09scrollX =3D frames[i]=2Edocument=2EdocumentElement=2Escr=
- ollLeft;
- =09=09=09=09=09=09scrollY =3D frames[i]=2Edocument=2EdocumentElement=2Escr=
- ollTop;
- =09=09=09=09=09=09hasParentFrame =3D true;
- =09=09=09=09=09=09break;
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09}
- =09else
- =09{
- =09=09scrollX =3D 0;
- =09=09scrollY =3D 0;
- =09}
- =09
- =09return [parseInt(scrollX,10), parseInt(scrollY,10), hasParentFrame];
- };
- searchshield=2EviewPortSize =3D function ()
- {
- =09// returns an array [width, height, scrollYWidth], where scrollYWidth i=
- s always 0 for IE
- =09var scrollXWidth=09 =3D 19;
- =09var scrollYWidth=09 =3D 0; // 0 for Microsoft IE
- =09var scrollBarX=09 =3D false;
- =09var windowX;
- =09var windowY;
- =09
- =09// firefox
- =09if (window=2EinnerWidth && window=2EinnerHeight)
- =09{
- =09=09//TODO: validate this block if implemented for firefox
- =09=09
- =09=09windowX =3D window=2EinnerWidth - scrollXWidth;
- =09=09windowY =3D window=2EinnerHeight;
- =09=09try
- =09=09{
- =09=09=09scrollYWidth =3D Math=2Efloor(Math=2Eabs(window=2EinnerHeight - d=
- ocument=2EdocumentElement=2EclientHeight)) + 1;
- =09=09=09scrollBarX =3D (document=2EdocumentElement=2EclientWidth < docume=
- nt=2EdocumentElement=2EscrollWidth);
- =09=09}
- =09=09catch(err){}
- =09=09if (scrollBarX && !scrollYWidth)
- =09=09=09scrollYWidth =3D 18;=09//normally 17 (+1 top border)
- =09=09=09=09=09
- =09}
- =09else if (document=2EdocumentElement || document=2Ebody)=20
- =09{
- =09=09windowX =3D (document=2EdocumentElement=2EclientWidth || document=2E=
- body=2EclientWidth) - scrollXWidth;
- =09=09windowY =3D document=2EdocumentElement=2EclientHeight || document=2E=
- body=2EclientHeight;
- =09}
- =09else
- =09{
- =09=09windowX =3D 0;
- =09=09windowY =3D 0;
- =09}
- =09return [windowX, windowY, scrollYWidth];
- };
- searchshield=2EzoomLevel =3D function ()
- {
- =09=09var level =3D 1;
- =09=09if (document=2Ebody=2EgetBoundingClientRect) {
- =09=09=09// rect is only in physical pixel size before IE8=20
- =09=09=09var rect =3D document=2Ebody=2EgetBoundingClientRect();
- =09=09=09level =3D Math=2Eround (((rect=2Eright - rect=2Eleft) / (document=
- =2Ebody=2EoffsetWidth)) * 100) / 100;
- =09=09}
- =09=09
- =09=09return level;
- };
- // Href functions
- searchshield=2EcheckUrl =3D function (url)
- {=09// cleanup a url, make sure there is a protocol on the front for scann=
- ing
- =09try {
- =09=09// trim
- =09=09url =3D url=2Ereplace(/^\s+/, "")=2Ereplace(/\s+$/, "");
- =09=09// if no protocol, add http:// to it=09
- =09=09if (url=2EindexOf("://") =3D=3D -1)
- =09=09=09url =3D "http://" + url;
- =09}
- =09catch(err){}
- =09return url;
- };
- searchshield=2EDoesURLContain =3D function (url, contain)
- {
- =09if ((url =3D=3D null) || (url=2Elength < 1))
- =09=09return false;
- =09// breakup the url to check
- =09var parts =3D url=2Esplit('/');
- =09if (parts=2Elength < 3)
- =09=09return false;
- =09var domain=3D parts[2]=2EtoLowerCase();
- =09if (domain=2EindexOf(contain) > -1)
- =09=09return true;
- =09return false;
- };
- searchshield=2EFilterUrl =3D function (url, filter)
- {
- =09if (!url || (url=2Elength < 1))
- =09=09return false;
- =09
- =09if (!filter || !(filter instanceof Array))=09
- =09=09return false;
- =09=09
- =09var parts =3D url=2Esplit('/');
- =09if ((parts =3D=3D null) || (parts=2Elength < 3))
- =09=09return false;
- =09var domain =3D parts[2];
- =09for (var i =3D 0; i < filter=2Elength; i++)
- =09{
- =09=09if (domain=2EindexOf(filter[i]) !=3D -1)
- =09=09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EGetDomain =3D function (url)
- {
- =09if (url !=3D null)
- =09{
- =09=09// get url domain
- =09=09var parts =3D url=2Esplit('/');
- =09=09if ((parts !=3D null) && (parts=2Elength >=3D 3))
- =09=09{
- =09=09=09return parts[2]=2EtoLowerCase();
- =09=09}
- =09}
- =09
- =09return url;
- };
- searchshield=2EgetUrlContents =3D function (url)=20
- {
- =09if (url =3D=3D null)
- =09=09return null;
- =09// don't query if local url
- =09if (url=2EindexOf("linkscanner://") !=3D -1)
- =09=09return null;
- =09try=20
- =09{
- =09=09req =3D new XMLHttpRequest();
- =09=09req=2Eopen("GET", url, false);
- =09=09req=2Esend(null);
- =09=09if (req=2Estatus =3D=3D 200)
- =09=09=09return req=2EresponseText;
- =09=09else
- =09=09=09return null;
- =09}=20
- =09catch (err)
- =09{
- =09=09// nothing to do
- =09=09return null;
- =09}
- };
- searchshield=2EparseLink =3D function (href, simpleMode)
- {
- =09var uri=09=09 =3D {};
- =09var parameter =3D {
- =09=09=09complex: {
- =09=09=09=09pattern: /^(=3F:([a-z]+):(=3F:([a-z]*):)=3F\/\/)=3F(=3F:([^:@]=
- *)(=3F::([^:@]*))=3F@)=3F((=3F:[a-z0-9=5F-]+\=2E)+[a-z]{2,})(=3F::(\d+))=3F=
- (=3F:([^:\=3F\#]+))=3F(=3F:\=3F([^\#]+))=3F(=3F:\#([^\s]+))=3F$/i,
- =09=09=09=09element: ['source','scheme','subscheme','user','pass','host','=
- port','path','query','fragment']
- =09=09=09=09},
- =09=09=09simple: {
- =09=09=09=09pattern: /^(=3F:([a-z]+):\/\/)=3F((=3F:[a-z0-9=5F-]+\=2E)+[a-z=
- ]{2,})(=3F:\/)([^:\=3F]+)=3F(=3F:([\=3F|\#])([^\=3F]+))=3F$/i,
- =09=09=09=09element: ['source','scheme','host','path','delimiter','query']=
- =09=09=09}
- =09=09};
- =09var mode=09=3D simpleMode !=3D=3D false =3F 'simple' : 'complex';
- =09var pattern=09=3D parameter[mode]=2Epattern;
- =09var element=09=3D parameter[mode]=2Eelement;
- =09
- =09if (!href)
- =09=09return uri;
- =09var matches=09=3D href=2Ematch(pattern);
- =09
- =09if (matches)
- =09{
- =09=09// --------------------
- =09=09// iterate over the matches array and populate uri properties
- =09=09// using the respective element parameter as the name=2E
- =09=09// NOTE: set raw property type as String to make inArray()
- =09=09// work properly with instanceof=2E
- =09=09// --------------------
- =09=09for (var i=3D0; i < matches=2Elength; i++)
- =09=09=09uri[element[i]] =3D new String(matches[i] || "");
- =09=09
- =09=09// --------------------
- =09=09// create an array, hostArray, from host, for example,
- =09=09// host=3D"www=2Egoogle=2Ecom" and hostArray=3D["www","google","com"=
- ]
- =09=09// --------------------
- =09=09uri=2EhostArray=09=3D uri=2Ehost=2Esplit("=2E");
- =09=09
- =09=09// --------------------
- =09=09// create an array, qsArray, from query, for example,
- =09=09// query=3D'hl=3Den&q=3Djavascript&btnG=3DSearch&aq=3Df&aqi=3Dg10&aq=
- l=3D&oq=3D&gs=5Frfai=3D'
- =09=09// qsArray=3D[{hl:'en'},{q:javascript}, =2E=2E=2E ,(qs=5Frfai:''}]
- =09=09//
- =09=09// $0=3Dentire match, $1=3Dcapture 1, $2=3Dcapture 2
- =09=09// must include $0 even though it is unused so
- =09=09// the replace works properly
- =09=09// --------------------
- =09=09uri=2EqsArray=09=09=3D searchshield=2EparseQuery(uri=2Equery);
- =09}
- =09
- =09//non-standard urls require a fail-safe that relies on simply splitting=
- the href
- =09function splitLink(href)
- =09{
- =09=09// split the href on '/'
- =09=09var linkParts =3D href=2Esplit("/");
- =09=09// need domain and path
- =09=09if ((linkParts =3D=3D null) || (linkParts=2Elength < 2))
- =09=09=09return false;
- =09
- =09=09var uri =3D {
- =09=09=09delimiter: (linkParts[3])=2Esubstring(0,1),
- =09=09=09host: linkParts[2],
- =09=09=09hostArray: (linkParts[2])=2Esplit('=2E'),
- =09=09=09path: (linkParts[3])=2Esubstring(1),
- =09=09=09qsArray: [],
- =09=09=09query: '',
- =09=09=09scheme: (linkParts[0])=2Esubstring(0, linkParts[0]=2Elength-1),
- =09=09=09source: href
- =09=09=09};
- =09=09return uri;
- =09}
- =09if (!uri=2Ehost)
- =09=09uri =3D splitLink(href);
- =09return uri;
- };
- searchshield=2EparseQuery =3D function (qs)
- {
- =09var qsArray =3D [];
- =09qs=2Ereplace(/(=3F:^|&)([^&=3D]*)=3D=3F([^&]*)/g,=20
- =09=09=09=09=09function ($0, $1, $2) {
- =09=09=09=09=09=09if ($1) qsArray[$1] =3D $2;
- =09=09=09=09=09}
- =09);
- =09
- =09return qsArray;
- };
- // general functions
- searchshield=2EarrayKeys =3D function (array)
- {
- =09var keys =3D new Array();
- =09for(k in array)
- =09=09keys=2Epush(k);
- =09return keys;
- };
- searchshield=2EinArray =3D function (key, array, caseSensitive, exactMatch=
- )
- {
- =09if (! array instanceof Array)
- =09=09return false;
- =09
- =09if (caseSensitive !=3D=3D true)
- =09=09caseSensitive =3D false;
- =09=09
- =09if (exactMatch !=3D=3D false)
- =09=09exactMatch =3D true;
- =09
- =09if (key instanceof String)
- =09{
- =09=09for (var i=3D0; i < array=2Elength; i++)
- =09=09{
- =09=09=09var k =3D caseSensitive =3F key=2EvalueOf() : key=2EvalueOf()=2Et=
- oLowerCase();
- =09=09=09var a =3D caseSensitive =3F array[i] : array[i]=2EtoLowerCase();
- =09=09=09if(exactMatch && k =3D=3D=3D a)
- =09=09=09=09return true;
- =09=09=09else if (!exactMatch && (-1 !=3D=3D k=2EindexOf(a)))
- =09=09=09=09return true;
- =09=09}
- =09}
- =09else if (key instanceof Array)
- =09{
- =09=09for (var i=3D0; i < array=2Elength; i++)
- =09=09=09for (var j=3D0; j < key=2Elength; j++)
- =09=09=09{
- =09=09=09=09var k =3D caseSensitive =3F key[j] : key[j]=2EtoLowerCase();
- =09=09=09=09var a =3D caseSensitive =3F array[i] : array[i]=2EtoLowerCase(=
- );
- =09=09=09=09if (exactMatch && k =3D=3D=3D a)
- =09=09=09=09=09return true;
- =09=09=09=09else if (!exactMatch && (-1 !=3D=3D k=2EindexOf(a)))
- =09=09=09=09=09return true;
- =09=09=09}
- =09}
- =09return false;
- };
- searchshield=2EgetClickHandlerParams =3D function(clickHandler)
- {
- =09var re =3D /((=3F:'[^']*')|[\w]*)(=3F:,|\))/ig;
- =09var chParams =3D [];
- =09clickHandler=2Ereplace(re,=20
- =09=09function($0, $1, $2){
- =09=09=09if ($1)
- =09=09=09=09chParams=2Epush($1);
- =09=09}
- =09);
- =09
- =09return chParams;
- };
- // general use functions - end
- // Search constructor
- searchshield=2ESearch =3D function()
- {
- =09this=2Edoc =09=09=09=3D null;
- =09this=2Eengine =09=09=3D null;
- =09this=2Eengines =09=09=3D null;
- =09this=2Elinks =09=09=09=3D null;
- =09this=2Euri =09=09=09=3D null;
- =09this=2EsearchHash =09=3D null;
- =09this=2EcheckUrl =09=09=3D null;
- =09this=2EuseLocalImgs =09=3D null;
- =09this=2EclockUrl =09=09=3D null;
- =09// create engine list (actually key/value object will be used)
- =09this=2EengineList=09=09=3D {};
- };
- searchshield=2ESearch=2Eprototype=2EgetSearchNames =3D function()
- {=09// order is important
- =09var names =3D [
- =09=09'Google',
- =09=09'AVGGoogle',
- =09=09'AltaVista',
- =09=09'AVGYahoo',
- =09=09'Yahoo',
- =09=09'Bing',
- =09=09'MSN', // MSN redirects to BING
- =09=09'Baidu',
- =09=09'Earthlink',
- =09=09'AOL',
- =09=09'Ask',
- =09=09'Yandex',
- =09=09'Seznam',
- =09=09'Webhledani',
- =09=09'eBay',
- ///temp=09=09'Digg',
- =09=09'Slashdot',
- =09=09'Twitter',
- =09=09'GMail',
- =09=09'Facebook',
- =09=09'MySpace'
- =09];
- =09return names;
- };
- searchshield=2ESearch=2Eprototype=2EdetectEngine =3D function(href)
- {
- =09if (!href)
- =09=09return;
- =09var aEng =3D searchshield=2ESearch=2Eprototype=2EgetSearchNames();
- =09var aEngLen =3D aEng=2Elength;
- =09for (var i=3D0; i < aEngLen; i++)
- =09{
- =09=09if (searchshield[aEng[i] + 'SearchEngine']=2Eprototype=2EvalidSearch=
- (href))
- =09=09=09return aEng[i];
- =09}
- =09return;
- };
- searchshield=2ESearch=2Eprototype=2EaddEngine =3D function(engine)
- {
- =09if (!this=2Eengines)
- =09=09this=2Eengines =3D new Array();
- =09
- =09this=2Eengines=2Epush(engine);
- };
- searchshield=2ESearch=2Eprototype=2EaddLink =3D function(inElement, inHref=
- )
- {
- =09if (!this=2Elinks)
- =09=09this=2Elinks =3D new Array();
- =09var hrefHash;
- =09try
- =09{
- =09=09hrefHash =3D searchshield=2EavgCallFunc(this=2Edoc, 'GetHash', inHre=
- f);
- =09}
- =09catch (e){}
- =09var newNode =3D {
- =09=09=09element:=09inElement,
- =09=09=09href: =09=09inHref,
- =09=09=09hash:=09=09hrefHash,
- =09=09=09search:=09=09this=2EsearchHash
- =09=09};
- =09
- =09this=2Elinks=2Epush(newNode);
- =09
- =09return newNode;
- }
- // process the search result page after all search engines have been added=
- searchshield=2ESearch=2Eprototype=2Eprocess =3D function(doc)
- {
- =09// only process when searchshield is enabled
- =09if (!searchshield=2Eenabled(doc))
- =09=09return;
- =09=09
- =09this=2Edoc=09=3D doc;
- =09this=2Ehref=09=3D this=2Edoc=2Elocation=2Ehref;
- =09this=2Euri=09=3D searchshield=2EparseLink(this=2Ehref);
- =09try
- =09{
- =09=09this=2EsearchHash =09=3D searchshield=2EavgCallFunc(this=2Edoc, 'Get=
- Hash', this=2Ehref);
- =09=09// get any previously active engine
- =09=09this=2Eengine=09=09=3D this=2EengineList[this=2EsearchHash=2EtoStrin=
- g()];
- =09}
- =09catch (e) {}
- =09/*
- =09
- =09Process Steps:
- =091=2E Add all supported search engines
- =092=2E Identify the active search engine
- =093=2E Get all document links and add AVG images=20
- =09*/
- =09
- =09// STEP 1 - Add all supported search engines
- =09if (!this=2Eengines)
- =09{
- =09=09var aEng =3D xplSearch=2EgetSearchNames();
- =09=09var aEngLen =3D aEng=2Elength;
- =09=09for (var i=3D0; i < aEngLen; i++)
- =09=09{
- =09=09=09xplSearch=2EaddEngine(new searchshield[aEng[i]+'SearchEngine'](th=
- is));
- =09=09}
- =09}
- =09
- =09// search the engines if we didn't find one
- =09if (!this=2Eengine)
- =09{
- =09=09// STEP 2 - Identify the active search engine
- =09=09var engLen =3D this=2Eengines=2Elength;
- =09=09for (var i =3D 0; i < engLen; i++)
- =09=09{
- =09=09=09if (this=2Eengines[i]=2EvalidSearch())
- =09=09=09{
- =09=09=09=09this=2Eengine=09=09=3D this=2Eengines[i];
- =09=09=09=09break;
- =09=09=09}
- =09=09}
- =09=09
- =09=09// create a new engine instance to store
- =09=09this=2EengineList[this=2EsearchHash=2EtoString()] =3D this=2Eengine;=
- =09=09
- =09=09// init this search, if < 1 either an error or disabled
- =09=09//var sdkInit =3D 0;
- =09=09//try {
- =09=09//=09sdkInit =3D xpl=5Fsdk=2ESXPL=5FInitSearch(this=2Ehref);
- =09=09//}
- =09=09//catch(e){}
- =09=09//if (sdkInit < 1)
- =09=09//=09return false;
- =09}
- =09// return immediately if there is not an active search engine
- =09if (!this=2Eengine)
- =09=09return false;
- =09
- =09try {=09
- =09=09// base url to check for icons
- =09=09this=2EcheckUrl =09=3D searchshield=2EavgCallFunc(this=2Edoc, 'GetIc=
- onUrl', '1');
- =09=09// check if using linked or local icons
- =09=09this=2EuseLocalImgs=09=3D !searchshield=2EgetUrlContents(this=2Echec=
- kUrl);
- =09=09// get the clock url
- =09=09this=2EclockUrl =09=3D searchshield=2EavgCallFunc(this=2Edoc, 'GetIc=
- onUrl', '0');
- =09}
- =09catch(e){}
- =09=09
- =09// STEP 3 - Get all document links and add AVG images
- =09var alltags =3D this=2Edoc=2EgetElementsByTagName("*");=09// this metho=
- d works for IE, FF and Chrome
- =09for (var i=3D0; i < alltags=2Elength; i++)
- =09{
- =09=09// ignore verdicts
- =09=09if (alltags[i]=2Eid && (alltags[i]=2Eid=2EindexOf("LXPLSS=5F") !=3D =
- -1))
- =09=09=09continue;
- =09
- =09=09//should the link be included=3F Make sure includeLink always retur=
- ns an href else FALSE,
- =09=09var href =3D this=2Eengine=2EincludeLink(alltags[i]);=20
- =09=09if (!href)
- =09=09=09continue;
- =09=09var newNode =3D this=2EaddLink(alltags[i], href);
- =09=09this=2Eengine=2EaddImage(newNode, this=2EclockUrl, false);
- =09}
- =09return (this=2Elinks =3F this=2Elinks=2Elength : false);
- };
- //////////////// SEARCH ////////////////
- //////////////// SEARCH ENGINE ////////////////
- // Interface for a SearchEngine object
- searchshield=2ESearchEngine =3D function(search)
- {
- =09this=2Esearch =3D search;
- =09this=2Etype =3D 'standard';
- =09this=2EprocessFrames =3D false;
- =09this=2Enew=5Flinks=09=09=3D true;
- =09this=2EonlyPrimaries=09=3D true;
- =09this=2Einline =3D {
- =09=09clockImage: "linkscanner://clock12=2Epng",
- =09=09image: [=09"linkscanner://safe12=2Epng",
- =09=09=09=09=09"linkscanner://caution12=2Epng",
- =09=09=09=09=09"linkscanner://warning12=2Epng",
- =09=09=09=09=09"linkscanner://blocked12=2Epng"
- =09=09=09=09],
- =09=09color: {
- =09=09=09classname: ["green","yellow","orange","red"],
- =09=09=09border: ["#00A120", "#EAA500", "#F57301", "#D20003"],
- =09=09=09background: ["#C3E5CA", "#FEEFAE", "#FFD3B0", "#F5D4C1"]
- =09=09}
- =09};
- =09this=2Efilter=5Furls =3D [
- =09=09"ad=2Edoubleclick=2Enet", "ads1=2Erevenue=2Enet", "aslads=2Eask=2Eco=
- m",
- =09=09"bluestreak=2Ecom", "clickbacktrack=2Enet", "clickbank=2Enet",
- =09=09"clickboothlnk=2Ecom", "clickmanager=2Ecom", "clickserve=2Ecc-dt=2Ec=
- om",
- =09=09"dartsearch=2Enet", "clicktraxmedia=2Ecom", "clk=2Eatdmt=2Ecom",
- =09=09"dpi-digialphoto=2Ecom", "feedpoint=2Enet", "hypertracker=2Ecom",
- =09=09"jdoqocy=2Ecom", "kqzyfj=2Ecom", "m1428=2Eic-live=2Ecom",
- =09=09"mediaplex=2Ecom", "mr=2Emdmngr=2Ecom", "n339=2Easp-cc=2Ecom",
- =09=09"offeredby=2Enet", "offerweb=2Ecom", "pinktrax=2Ecom",
- =09=09"pinktrax=2Ecom", "pixel1523=2Eeveresttech=2Enet", "qckjmp=2Ecom",
- =09=09"r=2Erd06=2Ecom", "revenuewire=2Enet", "s0b=2Ebluestreak=2Ecom",
- =09=09"s2=2Esrtk=2Enet", "servedby=2Eadvertising=2Ecom", "store=2Eyahoo=2E=
- com",
- =09=09"tf8=2Ecpcmanager=2Ecom", "thetoptracker=2Ecom", "track=2Esearchigni=
- te=2Ecom",
- =09=09"tracking=2Esearchmarketing=2Ecom", "www=2Edpbolvw=2Enet", "www=2Erk=
- dms=2Ecom",
- =09=09"www=2Eyellowbookleads=2Ecom"
- =09=09];
- =09this=2Eshortened=5Furls =3D [
- =09=09"3=2Ely", "bit=2Ely", "is=2Egd", "tr=2Eim", "short=2Eto", "tiny=2Ecc=
- ", "tinyurl=2Ecom", "lnk=2Ems", "msplinks=2Ecom", "t=2Eco", "qr=2Enet"
- =09=09];
- =09this=2EshowCleanVerdicts=09=09=3D true;
- =09this=2EshowLowRiskVerdicts=09=3D true;
- =09this=2EshowMedRiskVerdicts=09=3D true;
- =09this=2EVeriSignSplit=09=09=09=3D searchshield=2EVERISIGN=5FSPLIT=5FNOTE=
- ST;
- };
- searchshield=2ESearchEngine=2Eprototype=2EflyoverExists =3D function (doc)=
- {
- =09return !!doc=2EgetElementById("XPLSS=5FFlyover");
- };
- searchshield=2ESearchEngine=2Eprototype=2EinlineExists =3D function (doc)
- {
- =09return !!doc=2EgetElementById("XPLSS=5FInlineFlyover");
- };
- searchshield=2ESearchEngine=2Eprototype=2EvalidSearch =3D function(href) {=
- return false; };
- searchshield=2ESearchEngine=2Eprototype=2EincludeLink =3D function(link) {=
- return false; };
- searchshield=2ESearchEngine=2Eprototype=2EinsertNodes =3D function(node, d=
- oc)
- {
- =09var element =3D node=2Eelement;
- =09var parentNode =3D node=2Eelement=2EparentNode;
- =09if (parentNode =3D=3D null)
- =09{
- =09=09// try and find element again based on the hash
- =09=09element =3D doc=2EgetElementById("xplid=5F" + node=2Ehash);
- =09=09parentNode =3D !!element =3F element=2EparentNode : null;
- =09}
- =09var insertNode =3D !!element =3F element=2EnextSibling : null;
- =09while ((insertNode=09=09=09!=3D null) &&=20
- =09=09=09(insertNode=2EtagName=09!=3D null) &&=20
- =09=09=09(insertNode=2EtagName=09=3D=3D "SPAN"))
- =09{
- =09=09insertNode =3D insertNode=2EnextSibling;
- =09}
- =09
- =09return [insertNode, parentNode];
- };
- searchshield=2ESearchEngine=2Eprototype=2EaddImage=09=3D function(node, im=
- age, hidden)
- {
- =09var element=09=3D node=2Eelement;
- =09var hash=09=3D node=2Ehash;
- =09var score =09=3D node=2Escore;
- =09// set verdict display configuration
- =09var doc =3D element=2EownerDocument;
- =09if (this=2Etype !=3D 'inline' && !doc=2EgetElementById('XPLSS=5FFlyover=
- '))
- =09=09searchshield=2EinitFlyover(doc, this);
- =09// get the proper insertion point for the image
- =09var insertNodes =3D this=2EinsertNodes(node, doc);
- =09var insertNode =3D insertNodes[0];
- =09var parentNode =3D insertNodes[1];
- =09if (!parentNode)
- =09=09return;
- =09// see if we already have an image
- =09if ((insertNode=09=09!=3D null) &&=20
- =09=09(insertNode=2Eid=09!=3D null) &&=20
- =09=09(insertNode=2Eid=2EindexOf("XPLSS=5F") > -1))
- =09{
- =09=09return;
- =09}
- =09// mark search result anchor so it isn't processed repeatedly
- =09if (score =3D=3D undefined)
- =09=09element=2EsetAttribute("avglschecked", hash + "S" + this=2EVeriSignS=
- plit);
- =09// create a new image
- =09var img =3D doc=2EcreateElement('img');
- =09img=2Esrc =3D image;
- =09img=2Eid =3D "XPLSS=5F" + hash;
- =09img=2Estyle=2EborderStyle =3D "none";
- =09img=2Estyle=2Emargin =3D "0 3px";
- =09
- =09// for IE, specify these style attributes to prevent inadvertent inheri=
- tance from parent
- =09if (img=2Ewidth && img=2Eheight)
- =09{
- =09=09img=2Estyle=2Ewidth =3D img=2Ewidth + 'px';
- =09=09img=2Estyle=2Eheight =3D img=2Eheight + 'px';
- =09}
- =09
- =09// apply custom element styles
- =09this=2EupdateElementStyle(img, this=2EaddImageStyle);
- =09
- =09// create the link element=20
- =09var anchor =3D doc=2EcreateElement("A");
- =09anchor=2EsetAttribute("id", "LXPLSS=5F" + hash);
- =09if ((hidden !=3D null) && (hidden =3D=3D true))
- =09{=09// hiding the parent will also hide its child nodes
- =09=09anchor=2Estyle=2Edisplay =3D "none";
- =09}
- =09
- =09// Default anchor styles
- =09//Over-ride possible border style with inline declaration
- =09anchor=2Estyle=2EborderStyle =3D "none";
- =09// apply custom element styles
- =09this=2EupdateElementStyle(anchor, this=2EaddAnchorStyle);
- =09if (score =3D=3D searchshield=2ESCORE=5FSS=5FVERISIGN)
- =09{
- =09=09anchor=2Estyle=2EtextDecoration =3D "none";
- =09=09anchor=2Estyle=2Ebackground =3D "none repeat scroll 0 0 transparent"=
- ;
- =09}
- =09// append the image to the link
- =09anchor=2EappendChild(img);
- =09// insert the node as either a sibling or a child
- =09if (insertNode !=3D null)
- =09=09parentNode=2EinsertBefore(anchor, insertNode);
- =09else
- =09=09parentNode=2EappendChild(anchor);
- =09=09
- =09return anchor;
- };
- searchshield=2ESearchEngine=2Eprototype=2EupdateImage =3D function (hash, =
- search, score, image, alt=5Fimage, flyover, click=5Fthru, altClick=5Fthru)=
- {
- =09=09var updated =3D false;
- =09=09var frameDoc =3D this=2Esearch=2Edoc;
- =09=09var docFrames =3D frameDoc=2Eframes;
- =09=09var frameElem;
- =09=09if (docFrames && this=2EprocessFrames)
- =09=09{
- =09=09=09for (var i=3D0; i < docFrames=2Elength; i++)
- =09=09=09{
- =09=09=09=09try {
- =09=09=09=09=09if (docFrames[i]=2Edocument=2EgetElementById(hash))
- =09=09=09=09=09{
- =09=09=09=09=09=09frameElem =3D docFrames[i]=2EframeElement;
- =09=09=09=09=09=09frameDoc =3D docFrames[i]=2Edocument;
- =09=09=09=09=09=09break;
- =09=09=09=09=09}
- =09=09=09=09}=20
- =09=09=09=09catch(err){}
- =09=09=09}
- =09=09}
- =09=09while ((element =3D frameDoc=2EgetElementById(hash)) !=3D null)
- =09=09{
- =09=09=09// check configuration to determine if verdict display property
- =09=09=09var showVerdict =3D true;=09=09=09
- =09=09=09var nSeverity =3D Number(score - 1);
- =09=09=09switch (nSeverity)
- =09=09=09{
- =09=09=09=09case searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FLOW:
- =09=09=09=09=09showVerdict =3D this=2EshowLowRiskVerdicts;
- =09=09=09=09=09break;
- =09=09=09=09case searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FMED:
- =09=09=09=09=09showVerdict =3D this=2EshowMedRiskVerdicts;
- =09=09=09=09=09break;
- =09=09=09=09case searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FNONE:
- =09=09=09=09=09showVerdict =3D this=2EshowCleanVerdicts;
- =09=09=09=09=09break;
- =09=09=09=09default:
- =09=09=09=09=09if (score =3D=3D searchshield=2ESCORE=5FSS=5FVERISIGN)
- =09=09=09=09=09=09showVerdict =3D this=2EshowCleanVerdicts;
- =09=09=09=09=09break;
- =09=09=09}
- =09=09=09
- =09=09=09// remove image if no url specified
- =09=09=09if ((!showVerdict) || (image =3D=3D null) || (image=2Elength < 1)=
- )
- =09=09=09{
- =09=09=09=09// hide the parent anchor node
- =09=09=09=09element=2EparentNode=2Estyle=2Edisplay =3D "none";
- =09=09=09=09// mark the id as being hidden (element is the image)
- =09=09=09=09element=2Eid =3D element=2Eid + "H";
- =09=09=09=09updated =3D true;
- =09=09=09=09
- =09=09=09=09// if not a verisign score
- =09=09=09=09if (score !=3D searchshield=2ESCORE=5FSS=5FVERISIGN)
- =09=09=09=09=09continue;
- =09=09=09}
- =09=09=09// cleanup flyover, replace any new lines or single quotes
- =09=09=09flyover =3D searchshield=2ECleanupHTML(flyover);
- =09=09=09// mark the id as having been updated
- =09=09=09element=2Eid =3D element=2Eid + "U" + score;
- =09=09=09element=2Esrc=09=3D image;
- =09=09=09element=2EattachEvent("onmouseover", function(e){avglsflyover=2Ep=
- opup(e, hash, search, flyover)});
- =09=09=09element=2EattachEvent("onmouseout", function(e){avglsflyover=2Ehi=
- de(e)});
- =09=09=09// check for attribute updates (elementAttribute is an associativ=
- e array (i=2Ee=2E, object)
- =09=09=09if (this=2EelementAttribute)
- =09=09=09{
- =09=09=09=09for (a in this=2EelementAttribute)
- =09=09=09=09{
- =09=09=09=09=09if(this=2EelementAttribute[a])
- =09=09=09=09=09=09element=2EsetAttribute(a, this=2EelementAttribute[a]);
- =09=09=09=09}
- =09=09=09}
- =09=09=09// To dynamically reduce verdict image size if it causes its cont=
- ainer to scroll
- =09=09=09// when not showing alt images determine if the element containin=
- g
- =09=09=09// the verdict image is scrolling and decrease the image size by
- =09=09=09// the scroll amount (min size is 80% or original)
- =09=09=09var reduceBy=09=3D 0=2E8;
- =09=09=09var scrl=09=09=3D 0;
- =09=09=09if (!alt=5Fimage || this=2EomitAltImage || this=2EVeriSignSplit =3D=
- =3D searchshield=2EVERISIGN=5FSPLIT=5FTESTB)
- =09=09=09{
- =09=09=09=09try{
- =09=09=09=09=09var maxLoop =3D 5;
- =09=09=09=09=09var cN =3D element=2EparentNode=2EparentNode; //image->anc=
- hor->containerNodes=2E=2E=2E
- =09=09=09=09=09while (cN && maxLoop--)
- =09=09=09=09=09{
- =09=09=09=09=09=09if (cN=2EtagName =3D=3D "DIV" || cN=2EtagName =3D=3D "SP=
- AN")
- =09=09=09=09=09=09{
- =09=09=09=09=09=09=09// get object height depending on ie document mode
- =09=09=09=09=09=09=09var clientHeight =3D (cN=2EclientHeight =3D=3D 0 ||=20=
- =09=09=09=09=09=09=09=09(this=2Esearch=2Edoc=2EdocumentMode && this=2Esear=
- ch=2Edoc=2EdocumentMode < 8)) =3F=20
- =09=09=09=09=09=09=09=09cN=2EoffsetHeight :=20
- =09=09=09=09=09=09=09=09cN=2EclientHeight;
- =09=09=09=09=09=09=09scrl =3D cN=2EscrollHeight - clientHeight;
- =09=09=09=09=09=09=09break;
- =09=09=09=09=09=09}
- =09=09=09=09=09=09cN =3D cN=2EparentNode;
- =09=09=09=09=09}
- =09=09=09=09=09if (0 < scrl)
- =09=09=09=09=09{
- =09=09=09=09=09=09var eH =3D (element=2Eheight - scrl)/element=2Eheight;
- =09=09=09=09=09=09if (reduceBy > eH)
- =09=09=09=09=09=09=09eH =3D reduceBy;
- =09=09=09=09=09=09
- =09=09=09=09=09=09var newDim =3D Math=2Eceil(eH*element=2Eheight);
- =09=09=09=09=09=09
- =09=09=09=09=09=09element=2Eheight =3D newDim;
- =09=09=09=09=09=09element=2Ewidth =3D newDim;
- =09=09=09=09=09=09
- =09=09=09=09=09=09element=2Estyle=2Eheight =3D newDim + "px";
- =09=09=09=09=09=09element=2Estyle=2Ewidth =3D newDim + "px";
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09=09catch(e){}
- =09=09=09}
- =09=09=09// set default style attributes
- =09=09=09element=2Estyle=2Edisplay=09=09=3D "";
- =09=09=09
- =09=09=09// if verisign icon showing move our icon up for better centering=
- of the 2
- =09=09=09// except for IE7 browser - it does not like this style
- =09=09=09try {
- =09=09=09=09var ieVersion =3D parseFloat(navigator=2EappVersion=2Esplit("M=
- SIE")[1]);
- =09=09=09=09if (alt=5Fimage && (alt=5Fimage=2Elength > 0) && ieVersion !=3D=
- 7)
- =09=09=09=09=09element=2Estyle=2EverticalAlign =3D "10%";
- =09=09=09}
- =09=09=09catch(err){};
- =09=09=09// apply custom element styles
- =09=09=09this=2EupdateElementStyle(element, this=2EupdateImageStyle)
- =09=09=09// update the click thru
- =09=09=09var link =3D this=2Esearch=2Edoc=2EgetElementById("L" + hash);
- =09=09=09if (link)
- =09=09=09{
- =09=09=09=09link=2Ehref =3D click=5Fthru;
- =09=09=09=09link=2Eid =3D link=2Eid + "U" + score;
- =09=09=09}
- =09=09=09updated =3D true;
- =09=09=09// add the alternate image if supplied BUT not on avg yahoo
- =09=09=09if ((alt=5Fimage)=09=09=09=09&&=20
- =09=09=09=09(alt=5Fimage=2Elength > 0)=09&&=20
- =09=09=09=09(!this=2EomitAltImage)=09&&
- =09=09=09=09(this=2EVeriSignSplit !=3D searchshield=2EVERISIGN=5FSPLIT=5FT=
- ESTB))
- =09=09=09{
- =09=09=09=09var vhash =3D hash=2Esubstring(hash=2EindexOf("=5F")+1);
- =09=09=09=09// create a temporary link node
- =09=09=09=09var tmp=5Fnode =3D {
- =09=09=09=09=09=09element:=09element=2EparentNode,
- =09=09=09=09=09=09href:=09=09altClick=5Fthru,
- =09=09=09=09=09=09hash:=09=09vhash + "VU" + score,
- =09=09=09=09=09=09search:=09=09this=2EsearchHash,
- =09=09=09=09=09=09score:=09=09score
- =09=09=09=09=09};
- =09=09=09=09var altAnchor =3D this=2EaddImage(tmp=5Fnode, alt=5Fimage, fal=
- se);
- =09=09=09=09if (altAnchor && altAnchor=2EfirstChild)
- =09=09=09=09{
- =09=09=09=09=09altAnchor=2EfirstChild=2EsetAttribute("onmouseover", "");
- =09=09=09=09=09altAnchor=2Ehref =3D altClick=5Fthru;
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09=09
- =09=09if (updated !=3D false)
- =09=09{
- =09=09=09this=2EresizeFrame(frameElem);
- =09=09=09return true;
- =09=09}
- =09return false;
- };
- searchshield=2ESearchEngine=2Eprototype=2EupdateElementStyle =3D function =
- (element, elementStyle)
- {
- =09if (elementStyle)
- =09{=09// a NULL attribte value will unset it
- =09=09for(attr in elementStyle)
- =09=09{
- =09=09=09try {
- =09=09=09=09if (element=2Estyle=2EsetAttribute)
- =09=09=09=09=09element=2Estyle=2EsetAttribute(attr, elementStyle[attr]);
- =09=09=09=09else
- =09=09=09=09=09element=2Estyle[attr] =3D elementStyle[attr];
- =09=09=09} catch(err){}
- =09=09}
- =09}
- };
- searchshield=2ESearchEngine=2Eprototype=2EresizeFrame =3D function (frameE=
- lem)
- {=09// resize frame to prevent unwanted scrolling after inserting verdicts=
- =09// ignore inline and non-frame engines
- =09if ((this=2Etype =3D=3D 'inline') || (!this=2EprocessFrames))
- =09=09return;
- =09// ensure all required elements are available
- =09if ((frameElem =3D=3D null) || (frameElem=2Estyle =3D=3D null) || (fram=
- eElem=2EcontentWindow =3D=3D null))
- =09=09return;
- =09// if frame is scrolling vertically then resize
- =09var frameHeight =3D parseInt(frameElem=2Estyle=2Eheight, 10);
- =09if (!isNaN(frameHeight) && (frameHeight < frameElem=2EcontentWindow=2Ed=
- ocument=2Ebody=2EscrollHeight))
- =09=09frameElem=2Estyle=2Eheight =3D frameElem=2EcontentWindow=2Edocument=2E=
- body=2EscrollHeight + 'px';
- =09return;
- };
- searchshield=2ESearchEngine=2Eprototype=2EgetImgElement =3D function (elem=
- ent)
- {=09// return an xpl img element associated with a given element
- =09if (element =3D=3D null)
- =09=09return null;
- =09// go up the parent tree looking for a header or div
- =09while ( (element=2EparentNode !=3D null) &&=20
- =09=09=09(element=2EtagName=2EcharAt(0) !=3D "H") &&=20
- =09=09=09(element=2EtagName=2EcharAt(0) !=3D "D") &&
- =09=09=09(element=2EtagName=2EcharAt(0) !=3D "T") )
- =09{
- =09=09element =3D element=2EparentNode;
- =09}
- =09// if all the way to the top, nothing
- =09if ((element=2EtagName =3D=3D "HTML") || (element =3D=3D null))
- =09=09return null;
- =09// get image tags, if none we are done
- =09var imgTags =3D element=2EgetElementsByTagName("IMG");
- =09if ((imgTags =3D=3D null) || (imgTags=2ELength < 1))
- =09=09return null;
- =09for (var i =3D 0; i < imgTags=2Elength; i++)
- =09{
- =09=09if ((imgTags[i]=2Eid =3D=3D null) || (imgTags[i]=2Eid=2EindexOf("XPL=
- SS=5F") =3D=3D -1))
- =09=09=09continue;
- =09=09return imgTags[i];
- =09}
- =09// else didn't find anything
- =09return null;
- };
- searchshield=2ESearchEngine=2Eprototype=2EsetRatingsConfig =3D function (d=
- oc)
- {
- =09// get verdict configuration, need at least severity
- =09var results =3D searchshield=2EavgCallFunc(doc, 'GetRatingsConfig');
- =09var parts =3D !!results =3F results=2Esplit('::') : null;
- =09if (parts !=3D null && parts=2Elength >=3D 5)
- =09{=09//if set to default then get config value
- =09=09if (this=2EshowCleanVerdicts =3D=3D=3D true)
- =09=09=09this=2EshowCleanVerdicts=09=09=3D (parseInt(parts[0]) =3D=3D 1) =3F=
- true : false;
- =09=09=09
- =09=09if (this=2EshowLowRiskVerdicts =3D=3D=3D true)
- =09=09=09this=2EshowLowRiskVerdicts=09=3D (parseInt(parts[1]) =3D=3D 1) =3F=
- true : false;
- =09=09
- =09=09if (this=2EshowMedRiskVerdicts =3D=3D=3D true)
- =09=09=09this=2EshowMedRiskVerdicts=09=3D (parseInt(parts[2]) =3D=3D 1) =3F=
- true : false;
- =09=09=09
- =09=09this=2EVeriSignSplit=09=3D (parseInt(parts[4]));
- =09}
- =09
- =09return true;
- };
- searchshield=2ESearchEngine=2Eprototype=2Einit=5Finline=5Fratings =3D func=
- tion (doc)
- {
- =09if ((doc =3D=3D null) || (doc=2EgetElementById("XPLSS=5FInlineFlyover")=
- ))
- =09=09return;
- =09if (!searchshield=2EquirksMode)
- =09{
- =09=09// create style for inline flyovers
- =09=09var styleTag =3D doc=2EcreateElement("style");
- =09=09styleTag=2EsetAttribute("id","avgILFOStyle");
- =09=09
- =09=09var headTag =3D doc=2EgetElementsByTagName("head")[0];
- =09=09headTag=2EappendChild(styleTag);
- =09=09var inline=5Fstyle =3D styleTag=2EstyleSheet;
- =09=09// stub in the base image name as the url
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO", "background: url(linkscanner:=
- //default=5Finline=5Fborder=5Ftl=2Epng) no-repeat top left;");
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO", "width:0px; font-size:0px; z-=
- index:9999; visibility:hidden; position:absolute; left:-5000px;");
- =09=09
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fcontent", "background: url(li=
- nkscanner://default=5Finline=5Fborder=5Fr=2Epng) top right repeat-y;");
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fcontent","font-size:10px; col=
- or:black; padding:0px 10px; text-align:left; word-wrap:break-word; line-he=
- ight:130%");
- =09=09
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fhead", "background: url(links=
- canner://default=5Finline=5Fborder=5Ftr=2Epng) no-repeat top right;");
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fhead", "width:0px; height:5px=
- ;");
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Fhead div","height:5px;");
- =09
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Ffoot", "background: url(links=
- canner://default=5Finline=5Fborder=5Fbl=2Epng) no-repeat bottom left");
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Ffoot", "height:5px;");
- =09=09
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Ffoot div", "background: url(l=
- inkscanner://default=5Finline=5Fborder=5Fbr=2Epng) no-repeat bottom right"=
- );
- =09=09inline=5Fstyle=2EaddRule("=2EavgILFO=5Ffoot div", "height:5px; width=
- :0px;");
- =09}
- =09
- =09try {=09
- =09=09// create the popup box
- =09=09var box =3D doc=2EcreateElement("DIV");
- =09=09if (searchshield=2EquirksMode)
- =09=09{
- =09=09=09box=2Estyle=2Evisibility =3D "hidden";
- =09=09=09box=2Estyle=2Eposition =3D "absolute";
- =09=09=09box=2Estyle=2Eleft =3D "-5000px";
- =09=09}
- =09=09box=2EsetAttribute("id", "XPLSS=5FInlineFlyover");
- =09=09box=2EsetAttribute("class", "avgILFO");
- =09=09doc=2Ebody=2EappendChild(box);
- =09=09box =3D null;
- =09}
- =09catch(boxErr){}
- };
- searchshield=2ESearchEngine=2Eprototype=2Eshow=5Finline=5Fratings =3D func=
- tion (doc, node, image)
- {=09
- =09var href=09=3D node=2Ehref;
- =09var anchor=09=3D node=2Eelement;
- =09if ((href =3D=3D null) || (href=2Elength < 1))
- =09=09return;
- =09=09
- =09if (avglsinlineflyover=2EimageExists(anchor))
- =09=09return;
- =09
- =09// mark search result anchor so it isn't processed repeatedly
- =09anchor=2EsetAttribute("avglschecked", "1");
- =09
- =09// get verdict=20
- =09this=2Edisplay=5Finline(doc, anchor, href, node, false);
- };
- searchshield=2ESearchEngine=2Eprototype=2Edisplay=5Finline =3D function (d=
- oc, anchor, href, node, update, min=5Fseverity)
- {
- =09// min=5Fseverity is the lowest severity to display, so setting it to
- =09// 1 would not display safe icons
- =09
- =09var results=09=3D searchshield=2EavgCallFunc(doc, 'MalsiteCheck', href)=
- ;
- =09if (results =3D=3D null)
- =09=09return;
- =09
- =09var parts =3D results=2Esplit('::');
- =09
- =09// need at least severity
- =09if (parts =3D=3D null)
- =09=09return;
- =09=09=09
- =09var nSeverity =3D parseInt(parts[0]);
- =09
- =09if (!update && nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5F=
- NONE)
- =09{
- =09=09var shortUrl =3D searchshield=2EFilterUrl(href, this=2Eshortened=5Fu=
- rls);
- =09=09if (shortUrl)
- =09=09{=09// shortened url verdicts display later
- =09=09=09var engine =3D this;
- =09=09=09anchor=2EattachEvent("onmouseover", function(event){avglsinlinefl=
- yover=2EmouseOverHandler(event, doc, engine)});
- =09=09=09return;
- =09=09}
- =09}
- =09
- =09// severity -1 signifies sb=2Edat load failure
- =09if ( nSeverity =3D=3D -1 )
- =09=09nSeverity =3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FNONE;
- =09//blacklist url
- =09var blShortUrl =3D false;
- =09if (nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FBLOCK)
- =09{
- =09=09var shortUrl =3D searchshield=2EFilterUrl(href, this=2Eshortened=5Fu=
- rls);
- =09=09if (shortUrl)
- =09=09=09blShortUrl =3D true;
- =09}
- =09
- =09// need xlated cat tag and category
- =09if (parts=2Elength < 3)
- =09=09return;
- =09// check the minimum to display
- =09if ((min=5Fseverity !=3D null) && (nSeverity < min=5Fseverity))
- =09=09return;
- =09=09
- =09if (nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FLOW && !t=
- his=2EshowLowRiskVerdicts)
- =09{
- =09=09if (update)
- =09=09=09this=2Eavg=5Fls=5Finline=5Fhide=5Fverdict(anchor);
- =09=09
- =09=09return;
- =09}=20
- =09if (nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FMED && !t=
- his=2EshowMedRiskVerdicts)
- =09{
- =09=09if (update)
- =09=09=09this=2Eavg=5Fls=5Finline=5Fhide=5Fverdict(anchor);
- =09=09
- =09=09return;
- =09}
- =09if (nSeverity =3D=3D searchshield=2EXPLCHECK=5FRESULT=5FSEV=5FNONE && !=
- this=2EshowCleanVerdicts)=20
- =09{
- =09=09if (update)
- =09=09=09this=2Eavg=5Fls=5Finline=5Fhide=5Fverdict(anchor);
- =09=09=09
- =09=09return;
- =09}
- =09if (update)
- =09=09this=2Eupdate=5Finline=5Fimage(anchor, nSeverity, parts);
- =09else
- =09=09this=2Eadd=5Finline=5Fimage(doc, anchor, nSeverity, parts, blShortUr=
- l);
- };
- searchshield=2ESearchEngine=2Eprototype=2Eavg=5Fls=5Finline=5Fhide=5Fverdi=
- ct =3D function (anchor)
- {
- =09var image =3D avglsinlineflyover=2EgetImage(anchor);
- =09if (image)
- =09{
- =09=09image=2Estyle=2Edisplay =3D "none";
- =09=09if (image=2EparentNode && image=2EparentNode=2Eid =3D=3D "avg=5Fls=5F=
- anch")
- =09=09=09image=2EparentNode=2Estyle=2Edisplay =3D "none";
- =09}
- };
- searchshield=2ESearchEngine=2Eprototype=2Eupdate=5Finline=5Fimage =3D func=
- tion (anchor, nSeverity, aRisk)
- {
- =09// update the image already in the page
- =09if (anchor && anchor=2EfirstChild)
- =09{
- =09=09var html =3D '';
- =09=09var image =3D '';=20
- =09=09if (aRisk !=3D null && nSeverity !=3D null)
- =09=09{
- =09=09=09var riskCategory =3D aRisk[1];
- =09=09=09var riskName=09 =3D aRisk[2];
- =09=09=09var bgColor=09=09 =3D this=2Einline=2Ecolor=2Ebackground[nSeverit=
- y];
- =09=09=09var borderColor=09 =3D this=2Einline=2Ecolor=2Eborder[nSeverity];=
- =09=09=09image=09=09=09 =3D this=2Einline=2Eimage[nSeverity];
- =09=09=09html=09=09=09 =3D avglsinlineflyover=2Ebuild(riskCategory, riskNa=
- me, bgColor, borderColor);
- =09=09}
- =09=09
- =09=09var imageElem =3D anchor=2EfirstChild;
- =09=09imageElem=2Esrc =3D image;
- =09=09
- =09=09if ( html && html=2Elength > 0 )
- =09=09{
- =09=09=09imageElem=2EsetAttribute("title", "");
- =09=09=09imageElem=2EattachEvent("onmouseover", function(e){avglsinlinefly=
- over=2Epopup(e, html, nSeverity)});
- =09=09=09imageElem=2EattachEvent("onmouseout", function(e){avglsinlineflyo=
- ver=2Ehide(e)});
- =09=09}
- =09}
- };
- // add the image to the page
- searchshield=2ESearchEngine=2Eprototype=2Eadd=5Finline=5Fimage =3D functio=
- n (doc, anchor, nSeverity, aRisk, blShortUrl)
- {
- =09if (anchor =3D=3D null || anchor=2EparentNode =3D=3D null)
- =09=09return null;
- =09// get the proper insertion point for the image
- =09var insertNode =3D anchor=2EnextSibling;
- =09while ((insertNode=09=09=09!=3D null) &&=20
- =09=09=09(insertNode=2EtagName !=3D null) &&=20
- =09=09=09(insertNode=2EtagName =3D=3D "SPAN"))
- =09{
- =09=09insertNode=3D insertNode=2EnextSibling;
- =09}
- =09
- =09// see if we already have an image anchor
- =09if ((insertNode=09=09!=3D null) &&=20
- =09=09(insertNode=2Eid=09!=3D null) &&=20
- =09=09(insertNode=2Eid=09=3D=3D "avg=5Fls=5Fanch"))
- =09{
- =09=09return null;
- =09}
- =09var html =3D '';
- =09var image =3D this=2Einline=2EclockImage;=20
- =09if (aRisk !=3D null && nSeverity !=3D null)
- =09{
- =09=09var riskCategory =3D aRisk[1];
- =09=09var riskName=09 =3D aRisk[2];
- =09=09var bgColor=09=09 =3D this=2Einline=2Ecolor=2Ebackground[nSeverity];=
- =09=09var borderColor=09 =3D this=2Einline=2Ecolor=2Eborder[nSeverity];
- =09=09image=09=09=09 =3D this=2Einline=2Eimage[nSeverity];
- =09=09var blUrl;
- =09=09if (blShortUrl)
- =09=09{
- =09=09=09var aRiskName =3D riskName=2Esplit(':');
- =09=09=09var sUrl =3D searchshield=2EcheckUrl(aRiskName[1]);
- =09=09=09blUrl =3D {};
- =09=09=09blUrl=2EriskNameLabel =3D aRiskName[0] + ': ';
- =09=09=09blUrl=2EriskCategory =3D riskCategory;
- =09=09=09blUrl=2EbgColor =3D bgColor;
- =09=09=09blUrl=2EborderColor =3D borderColor;
- =09=09=09blUrl=2EsUrl =3D sUrl;
- =09=09}
- =09=09else
- =09=09{
- =09=09=09html =3D avglsinlineflyover=2Ebuild(riskCategory, riskName, bgCol=
- or, borderColor);
- =09=09}
- =09}
- =09doc =3D anchor=2EownerDocument;
- =09var img=09=09 =3D doc=2EcreateElement("img");
- =09img=2Esrc=09=09 =3D image;
- =09img=2EsetAttribute("id","avg=5Fls=5Fimage");
- =09img=2Estyle=2Ewidth =3D "12px";
- =09img=2Estyle=2Eheight =3D "12px";
- =09img=2Estyle=2Eborder =3D "none";
- =09img=2Estyle=2Epadding =3D "0 3px";
- =09img=2Estyle=2Emargin =3D "0";
- =09
- =09if ((html && html=2Elength > 0) || (blUrl !=3D undefined))
- =09{
- =09=09img=2EsetAttribute("title", "");
- =09=09img=2EattachEvent("onmouseover", function(e){avglsinlineflyover=2Epo=
- pup(e, html, nSeverity, blUrl)});
- =09=09img=2EattachEvent("onmouseout", function(e){avglsinlineflyover=2Ehid=
- e(e)});
- =09}
- =09// create the link element=20
- =09var newAnchor =3D doc=2EcreateElement("A");
- =09newAnchor=2EsetAttribute("id", "avg=5Fls=5Fanch");
- =09newAnchor=2Estyle=2Edisplay =3D "inline-block";
- =09newAnchor=2Estyle=2Ebackground =3D "none repeat scroll 0 0 transparent"=
- ;
- =09
- =09newAnchor=2EappendChild(img);
- =09img =3D null;
- =09// insert the node as either a sibling or a child
- =09if (insertNode !=3D null)
- =09=09anchor=2EparentNode=2EinsertBefore(newAnchor, insertNode);
- =09else
- =09=09anchor=2EparentNode=2EappendChild(newAnchor);=09
- =09=09
- =09return newAnchor;=09=09
- };
- //////////////// SEARCH ENGINE ////////////////
- /////////////// GOOGLE SEARCH ENGINE ///////////////
- searchshield=2EGoogleSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EonlyPrimaries =3D false;
- };
- searchshield=2EGoogleSearchEngine=2Eprototype =3D new searchshield=2ESearc=
- hEngine();
- searchshield=2EGoogleSearchEngine=2Eprototype=2Econstructor =3D searchshie=
- ld=2EGoogleSearchEngine;
- searchshield=2EGoogleSearchEngine=2Eprototype=2Ename =3D "google";=09// th=
- e name by which the search engine is known (always lowercase)
- searchshield=2EGoogleSearchEngine=2Eprototype=2EvalidSearch =3D function(h=
- ref) {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09var hostMatch=09=3D false;
- =09var domain=09=09=3D uri=2Ehost;
- =09
- =09// re stitch the uri path and query elements to
- =09// use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09// For Google the host must match:
- =09//=09=2Egoogle=2Ecom=09=09OR
- =09//=09=2Egoogle=2Ecom=2EXX=09OR
- =09//=09=2Egoogle=2Eco=2EXX=09OR
- =09//=09=2Egoogle=2EXX=09=09where XX is a country code
- =09//=09one special case is www=2Egooge=2Eoff=2Eai (Anguilla)
- =09//=09Where any subdomain can come before the top level domain
- =09if ( /(\=2E(=3F:google|mozilla)\=2E(=3F:com|(=3F:co|off)\=2E[a-z]{2}|[a=
- -z]{2}))/i=2Etest(domain) )
- =09{
- =09=09//check the path
- =09=09if ((path=2EindexOf("search=3F") =3D=3D 0) ||
- =09=09=09(path=2EindexOf("sponsoredlinks=3F") =3D=3D 0) ||
- =09=09=09(path=2EindexOf("webhp=3F") =3D=3D 0) ||
- =09=09=09(path=2EindexOf("webhp#") =3D=3D 0) ||
- =09=09=09(path=2EindexOf("#q=3D") =3D=3D 0) ||
- =09=09=09(path=2EindexOf("#hl=3D") =3D=3D 0) ||
- =09=09=09(path=2EindexOf("#sclient=3D") =3D=3D 0))
- =09=09{
- =09=09=09return true;
- =09=09}
- =09}
- =09return false;
- };
- searchshield=2EGoogleSearchEngine=2Eprototype=2EincludeLink =3D function(t=
- ag)
- {
- =09var href =3D "";
- =09var outHref =3D false;
- =09var findStr =3D "";
- =09// check for interstitials
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09{
- =09=09findStr =3D this=2Esearch=2Euri=2Ehost + "/interstitial=3F";
- =09=09if (tag=2EclassName =3D=3D "l" && tag=2Ehref)
- =09=09{
- =09=09=09if (tag=2Ehref=2EindexOf(findStr) !=3D -1)
- =09=09=09{
- =09=09=09=09findStr =3D "=3Furl=3D";
- =09=09=09=09var pos =3D tag=2Ehref=2EindexOf(findStr);
- =09=09=09=09if (pos !=3D=3D -1)
- =09=09=09=09{
- =09=09=09=09=09pos +=3D 5;
- =09=09=09=09=09outHref =3D tag=2Ehref=2Esubstring(pos);
- =09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls)=
- )
- =09=09=09=09=09=09return false;
- =09=09=09=09=09=09=09
- =09=09=09=09=09return outHref;
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09=09if (tag=2EclassName =3D=3D "sla")
- =09=09{
- =09=09=09findStr =3D "/url=3Fq=3D";
- =09=09=09urlPos =3D tag=2Ehref=2EindexOf(findStr);
- =09=09=09if (urlPos !=3D -1)
- =09=09=09{
- =09=09=09=09urlPos +=3D 7;
- =09=09=09=09outHref =3D tag=2Ehref=2Esubstring(urlPos);
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09=09
- =09=09// if an ad id
- =09=09if ((tag=2Eid=2EindexOf("pa") =3D=3D 0) || (tag=2Eid=2EindexOf("an")=
- =3D=3D 0) ||
- =09=09=09(tag=2EclassName =3D=3D "resultLink"))
- =09=09{
- =09=09=09var urlPos =3D -1;=09
- =09=09=09// ads now need unescaping
- =09=09=09href =3D unescape(tag=2Ehref);
- =09=09=09findStr=3D "/url=3Fsa=3D";
- =09=09=09if (href=2EindexOf(findStr) !=3D -1)
- =09=09=09{=09// first kind, locate real url
- =09=09=09=09findStr=3D "&q=3Dhttp";
- =09=09=09=09urlPos =3D href=2EindexOf(findStr);
- =09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09=09urlPos +=3D 3;=09// puts it on the http
- =09=09=09}
- =09=09=09if (urlPos =3D=3D -1)
- =09=09=09{
- =09=09=09=09findStr =3D "/pagead/iclk=3Fsa=3D";
- =09=09=09=09if (href=2EindexOf(findStr) !=3D -1)
- =09=09=09=09{=09// second kind, locate real url
- =09=09=09=09=09findStr =3D "&adurl=3Dhttp";
- =09=09=09=09=09urlPos=09=3D href=2EindexOf(findStr);
- =09=09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09=09=09urlPos +=3D 7; // puts it on the http
- =09=09=09=09}
- =09=09=09}
- =09=09=09if (urlPos =3D=3D -1)
- =09=09=09{
- =09=09=09=09if (href=2EindexOf("/aclk=3Fsa=3D") !=3D -1)
- =09=09=09=09{=09// third kind
- =09=09=09=09=09urlPos =3D href=2EindexOf("&q=3Dhttp");
- =09=09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09=09=09urlPos +=3D 3; // puts it on the http
- =09=09=09=09=09else
- =09=09=09=09=09{
- =09=09=09=09=09=09urlPos =3D href=2EindexOf("&lp=3Dhttp");
- =09=09=09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09=09=09=09urlPos +=3D 4;
- =09=09=09=09=09=09else
- =09=09=09=09=09=09{
- =09=09=09=09=09=09=09findStr =3D "&adurl=3Dhttp";
- =09=09=09=09=09=09=09urlPos=09=3D href=2EindexOf(findStr);
- =09=09=09=09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09=09=09=09=09urlPos +=3D 7; // puts it on the http
- =09=09=09=09=09=09}
- =09=09=09=09=09=09
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09}
- =09=09=09if (urlPos =3D=3D -1)
- =09=09=09{
- =09=09=09=09if (href=2EindexOf("/url=3Fcad=3D") !=3D -1)
- =09=09=09=09{=09// fourth kind
- =09=09=09=09=09urlPos =3D href=2EindexOf("&q=3Dhttp");
- =09=09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09=09=09urlPos +=3D 3; // puts it on the http
- =09=09=09=09}
- =09=09=09}
- =09=09=09if (urlPos !=3D -1)
- =09=09=09{
- =09=09=09=09outHref =3D href=2Esubstring(urlPos);
- =09=09=09=09// the destination url is in the href string of this redirecto=
- r
- =09=09=09=09if (outHref=2EindexOf('xg4ken=2Ecom') > -1)
- =09=09=09=09{
- =09=09=09=09=09urlPos =3D (unescape(outHref))=2EindexOf('url[]=3D') + 6;
- =09=09=09=09=09var destUrl =3D (unescape(outHref))=2Esubstring(urlPos);
- =09=09=09=09=09if (searchshield=2EFilterUrl(destUrl, this=2Efilter=5Furls)=
- )
- =09=09=09=09=09{
- =09=09=09=09=09=09var destUrl =3D searchshield=2EgetHrefFromCiteElement(ta=
- g);
- =09=09=09=09=09=09if (destUrl)
- =09=09=09=09=09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveH=
- tmlTags(destUrl));
- =09=09=09=09=09=09return false;
- =09=09=09=09=09}
- =09=09=09=09=09return destUrl;
- =09=09=09=09}
- =09=09=09=09// filtered url but can get destination from href string
- =09=09=09=09if (outHref=2EindexOf('altfarm=2Emediaplex=2Ecom') > -1)
- =09=09=09=09{
- =09=09=09=09=09var tmpoh =3D unescape(outHref);
- =09=09=09=09=09var destUrl =3D tmpoh=2Esubstring(tmpoh=2EindexOf('DURL=3D'=
- )+5);
- =09=09=09=09=09if (destUrl !=3D null)
- =09=09=09=09=09{
- =09=09=09=09=09=09var destUrl =3D unescape(destUrl);
- =09=09=09=09=09=09return destUrl;
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09=09// extract any fragment text, shouldn't be unescaped
- =09=09=09=09var pound =3D outHref=2EindexOf("#");=09
- =09=09=09=09if (pound !=3D -1)
- =09=09=09=09{
- =09=09=09=09=09var fragment =3D outHref=2Esubstring(pound);
- =09=09=09=09=09outHref =3D outHref=2Esubstring(0, pound);
- =09=09=09=09=09outHref =3D unescape(outHref);
- =09=09=09=09=09outHref +=3D fragment;
- =09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls)=
- )
- =09=09=09=09=09=09return false;
- =09=09=09=09=09return outHref;
- =09=09=09=09}
- =09=09=09=09outHref =3D unescape(outHref);
- =09=09=09=09if (outHref=2EindexOf("=3F") =3D=3D -1)
- =09=09=09=09{
- =09=09=09=09=09var ampPos =3D outHref=2EindexOf("&");
- =09=09=09=09=09if (ampPos !=3D -1)
- =09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, ampPos);
- =09=09=09=09}
- =09=09=09=09
- =09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
- =09=09=09=09{
- =09=09=09=09=09var destUrl =3D searchshield=2EgetHrefFromCiteElement(tag);=
- =09=09=09=09=09if (destUrl)
- =09=09=09=09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveHtml=
- Tags(destUrl));
- =09=09=09=09=09return false;
- =09=09=09=09}
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09=09// recommended link - use following to see one
- =09=09// http://www=2Egoogle=2Ecz/search=3Fhl=3Dcs&q=3Dwarey&btnG=3DHledat=
- &lr=3Dlang=5Fcs
- =09=09// elem parent class =3D r
- =09=09// href must contain - url=3F and q=3Dhttp
- =09=09var parentNode =3D tag=2EparentNode;
- =09=09if (parentNode && (parentNode=2EclassName=2EtoLowerCase() =3D=3D "r"=
- ))
- =09=09{
- =09=09=09href =3D tag=2Ehref;
- =09=09=09if (href && (href=2EindexOf("/url=3F") !=3D -1))
- =09=09=09{
- =09=09=09=09// locate the real url
- =09=09=09=09var urlPos =3D href=2EindexOf("q=3Dhttp");
- =09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09{
- =09=09=09=09=09urlPos +=3D 2;
- =09=09=09=09=09outHref =3D href=2Esubstring(urlPos);
- =09=09=09=09=09// include entire param up to '&'
- =09=09=09=09=09var ampPos =3D outHref=2EindexOf("&");
- =09=09=09=09=09if (ampPos !=3D -1)
- =09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, ampPos);
- =09=09=09=09=09return outHref;
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09}
- =09// no link to self
- =09else if (tag=2EclassName && (tag=2EclassName=2EcharAt(0) =3D=3D "l" || =
- tag=2EclassName =3D=3D "sla"))
- =09{
- =09=09// check for any images on the link
- =09=09if (0 =3D=3D=3D tag=2EgetElementsByTagName("IMG")=2Elength)
- =09=09=09return tag=2Ehref;
- =09}
- =09// special case for ie6 results
- =09else if (searchshield=2EdocMode =3D=3D 6 || searchshield=2EdocMode =3D=3D=
- 7)
- =09{
- =09=09var parentNodeClass =3D tag=2EparentNode =3F tag=2EparentNode=2Eclas=
- sName : '';
- =09=09if ((tag=2EclassName =3D=3D '') && (parentNodeClass =3D=3D 'r'))
- =09=09{
- =09=09=09return tag=2Ehref;
- =09=09}
- =09}
- =09// else nothing
- =09return false;
- };
- /////////////// GOOGLE ///////////////
- /////////////// AVG GOOGLE SEARCH ENGINE ///////////////
- searchshield=2EAVGGoogleSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EonlyPrimaries =3D false;
- };
- searchshield=2EAVGGoogleSearchEngine=2Eprototype =3D new searchshield=2ESe=
- archEngine();
- searchshield=2EAVGGoogleSearchEngine=2Eprototype=2Econstructor =3D searchs=
- hield=2EAVGGoogleSearchEngine;
- searchshield=2EAVGGoogleSearchEngine=2Eprototype=2Ename =3D "avggoogle";=09=
- // the name by which the search engine is known (always lowercase)
- searchshield=2EAVGGoogleSearchEngine=2Eprototype=2EvalidSearch =3D functio=
- n(href) {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09var domain=09=09=3D uri=2Ehost;
- =09
- =09// re stitch the uri path and query elements to
- =09// use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09if (domain=2EindexOf("search=2Eavg=2Ecom") > -1)
- =09{ // ads link back to google
- =09=09return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2EAVGGoogleSearchEngine=2Eprototype=2EincludeLink =3D functio=
- n(tag)
- {
- =09var outHref =3D false;
- =09var findStr =3D "";
- =09// check for interstitials
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, "google=2Ecom"))
- =09{
- =09=09// link back to self - DIV elem GrandParent class of res1 or res3 is=
- Sponsored Link=20
- =09=09var parentNode =3D tag=2EparentNode;
- =09=09if (parentNode)
- =09=09{
- =09=09=09var grandParentNode =3D tag=2EparentNode=2EparentNode;
- =09=09=09if (grandParentNode)
- =09=09=09{
- =09=09=09=09if ((grandParentNode=2EtagName =3D=3D "DIV") &&=20
- =09=09=09=09=09((grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "res1"=
- ) ||
- =09=09=09=09=09(grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "res3")=
- ))
- =09=09=09=09{
- =09=09=09=09=09var urlPos =3D -1;=09
- =09=09=09=09=09// ads now need unescaping
- =09=09=09=09=09href =3D unescape(tag=2Ehref);
- =09=09=09=09=09if (urlPos =3D=3D -1)
- =09=09=09=09=09{
- =09=09=09=09=09=09if (href=2EindexOf("/aclk=3Fsa=3D") !=3D -1)
- =09=09=09=09=09=09{=09
- =09=09=09=09=09=09=09findStr =3D "&adurl=3Dhttp";
- =09=09=09=09=09=09=09urlPos=09=3D href=2EindexOf(findStr);
- =09=09=09=09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09=09=09=09=09urlPos +=3D 7; // puts it on the http
- =09=09=09=09=09=09=09=09
- =09=09=09=09=09=09}
- =09=09=09=09=09}
- =09=09=09=09=09if (urlPos !=3D -1)
- =09=09=09=09=09{
- =09=09=09=09=09=09outHref =3D href=2Esubstring(urlPos);
- =09=09=09=09=09=09// the destination url is in the href string of this red=
- irector
- =09=09=09=09=09=09if (outHref=2EindexOf('xg4ken=2Ecom') > -1)
- =09=09=09=09=09=09{
- =09=09=09=09=09=09=09urlPos =3D (unescape(outHref))=2EindexOf('url[]=3D') =
- + 6;
- =09=09=09=09=09=09=09var destUrl =3D (unescape(outHref))=2Esubstring(urlPo=
- s);
- =09=09=09=09=09=09=09if (searchshield=2EFilterUrl(destUrl, this=2Efilter=5F=
- urls))
- =09=09=09=09=09=09=09{
- =09=09=09=09=09=09=09=09var destUrl =3D searchshield=2EgetHrefFromCiteElem=
- ent(tag);
- =09=09=09=09=09=09=09=09if (destUrl)
- =09=09=09=09=09=09=09=09=09return searchshield=2EcheckUrl(searchshield=2Er=
- emoveHtmlTags(destUrl));
- =09=09=09=09=09=09=09=09return false;
- =09=09=09=09=09=09=09}
- =09=09=09=09=09=09=09return destUrl;
- =09=09=09=09=09=09}
- =09=09=09=09=09=09// filtered url but can get destination from href string=
- =09=09=09=09=09=09if (outHref=2EindexOf('altfarm=2Emediaplex=2Ecom') > -1)=
- =09=09=09=09=09=09{
- =09=09=09=09=09=09=09var tmpoh =3D unescape(outHref);
- =09=09=09=09=09=09=09var destUrl =3D tmpoh=2Esubstring(tmpoh=2EindexOf('DU=
- RL=3D')+5);
- =09=09=09=09=09=09=09if (destUrl !=3D null)
- =09=09=09=09=09=09=09{
- =09=09=09=09=09=09=09=09var destUrl =3D unescape(destUrl);
- =09=09=09=09=09=09=09=09return destUrl;
- =09=09=09=09=09=09=09}
- =09=09=09=09=09=09}
- =09=09=09=09
- =09=09=09=09=09=09// extract any fragment text, shouldn't be unescaped
- =09=09=09=09=09=09var pound =3D outHref=2EindexOf("#");=09
- =09=09=09=09=09=09if (pound !=3D -1)
- =09=09=09=09=09=09{
- =09=09=09=09=09=09=09var fragment =3D outHref=2Esubstring(pound);
- =09=09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, pound);
- =09=09=09=09=09=09=09outHref =3D unescape(outHref);
- =09=09=09=09=09=09=09outHref +=3D fragment;
- =09=09=09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5F=
- urls))
- =09=09=09=09=09=09=09=09return false;
- =09=09=09=09=09=09=09return outHref;
- =09=09=09=09=09=09}
- =09=09=09=09=09=09outHref =3D unescape(outHref);
- =09=09=09=09=09=09if (outHref=2EindexOf("=3F") =3D=3D -1)
- =09=09=09=09=09=09{
- =09=09=09=09=09=09=09var ampPos =3D outHref=2EindexOf("&");
- =09=09=09=09=09=09=09if (ampPos !=3D -1)
- =09=09=09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, ampPos);
- =09=09=09=09=09=09}
- =09=09=09=09
- =09=09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Fur=
- ls))
- =09=09=09=09=09=09{
- =09=09=09=09=09=09=09var destUrl =3D searchshield=2EgetHrefFromCiteElement=
- (tag);
- =09=09=09=09=09=09=09if (destUrl)
- =09=09=09=09=09=09=09=09return searchshield=2EcheckUrl(searchshield=2Eremo=
- veHtmlTags(destUrl));
- =09=09=09=09=09=09=09return false;
- =09=09=09=09=09=09}
- =09=09=09=09=09=09return outHref;
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09}=09
- =09=09
- =09// no link to self
- =09else
- =09{
- =09=09var parentNode =3D tag=2EparentNode;
- =09=09if (parentNode)
- =09=09{
- =09=09=09var grandParentNode =3D tag=2EparentNode=2EparentNode;
- =09=09=09if (grandParentNode)
- =09=09=09{
- =09=09=09=09if ((grandParentNode=2EtagName =3D=3D "DIV") &&=20
- =09=09=09=09=09(grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "res2")=
- )
- =09=09=09=09{
- =09=09=09=09=09// check for any images on the link
- =09=09=09=09=09if (0 =3D=3D=3D tag=2EgetElementsByTagName("IMG")=2Elength)=
- =09=09=09=09=09=09return tag=2Ehref;
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09}
- =09// else nothing
- =09return false;
- }
- /////////////// AVG GOOGLE ///////////////
- /////////////// YAHOO SEARCH ENGINE ///////////////
- searchshield=2EYahooSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EshowCleanVerdicts =3D false;
- };
- searchshield=2EYahooSearchEngine=2Eprototype =3D new searchshield=2ESearch=
- Engine();
- searchshield=2EYahooSearchEngine=2Eprototype=2Econstructor =3D searchshiel=
- d=2EYahooSearchEngine;
- searchshield=2EYahooSearchEngine=2Eprototype=2Ename =3D "yahoo";
- searchshield=2EYahooSearchEngine=2Eprototype=2EvalidSearch =3D function(hr=
- ef)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09var domain =3D uri=2Ehost;
- =09// re stitch the uri path and query elements to
- =09// use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09// For Yahoo the host must match:
- =09//=09search=2Eyahoo=2Ecom=09=09OR
- =09//=09xx=2Esearch=2Eyahoo=2Ecom where xx is the country code OR
- =09//=09search=2Eyahoo=2Eco=2Ejp OR
- =09// for Yahoo China: one=2Ecn=2Eyahoo=2Ecom, search=2Ecn=2Eyahoo=2Ecom o=
- r www=2Eyahoo=2Ecn
- =09if ((domain=2Ematch(/search\=2Eyahoo\=2Eco(=3F:m|\=2Ejp)/i) ||
- =09=09domain=2Ematch(/(=3F:search|one)\=2Ecn\=2Eyahoo\=2Ecom/i) ||
- =09=09domain=2Ematch(/www\=2Eyahoo\=2Ecn/i)) &&=20
- =09=09path=2Ematch(/^(=3F:search[;=3F]|s\=3F)/i))
- =09{
- =09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EYahooSearchEngine=2Eprototype=2EincludeLink =3D function(ta=
- g)
- {
- =09var href=09=09=3D "";
- =09var outHref=09=09=3D "";
- =09var findStr=09=09=3D "";
- =09// yahoo likes to encode the url
- =09href =3D unescape(tag=2Ehref);
- =09if ((tag=2EclassName=2EindexOf("yschttl") !=3D -1) ||=20
- =09=09(tag=2EclassName=2EindexOf("spt") !=3D -1))
- =09{
- =09=09var da =3D href=2EindexOf("**");
- =09=09var ad =3D href=2EindexOf("*-");
- =09=09if (da !=3D -1)
- =09=09=09outHref =3D href=2Esubstring(da+2);
- =09=09else if (ad !=3D -1)
- =09=09=09outHref =3D href=2Esubstring(ad+2);
- =09=09else
- =09=09=09outHref =3D href ;
- =09=09=09
- =09=09if (outHref=2EtoLowerCase()=2EindexOf("overture=2E") !=3D=3D -1)
- =09=09=09return false;
- =09}
- =09else if ((tag=2EtagName)=09=09=09&&=20
- =09=09=09 (tag=2EtagName =3D=3D=3D "A") =09&&=20
- =09=09=09 (!tag=2EclassName))
- =09{
- =09=09var tagParent =3D tag=2EparentNode;
- =09=09
- =09=09// if anchor without className then search parentNodes
- =09=09if ((tagParent) &&
- =09=09=09(tagParent=2EtagName !=3D=3D "EM") &&
- =09=09=09(searchshield=2EgetParentNodeByClassName("yst-web", tag, 4)))
- =09=09{
- =09=09=09// China Yahoo support
- =09=09=09outHref =3D href;
- =09=09}
- =09=09
- =09=09else if ((tagParent) &&
- =09=09=09=09(tagParent=2EtagName =3D=3D=3D "H3") &&
- =09=09=09=09(!!searchshield=2EgetParentNodeById("WS2m",tag, 5)))
- =09=09{
- =09=09=09// Japan Yahoo support
- =09=09=09var da =3D href=2EindexOf("**");
- =09=09=09if (da =3D=3D -1)
- =09=09=09=09outHref =3D href;
- =09=09=09else
- =09=09=09=09outHref =3D href=2Esubstring(da+2);
- =09=09}
- =09=09else if ((tagParent) &&
- =09=09=09=09(tagParent=2EclassName !=3D=3D "c") &&
- =09=09=09=09(tagParent=2EparentNode=2Eid !=3D=3D "fpn") &&
- =09=09=09=09(!!searchshield=2EgetParentNodeByClassName("ymc", tag, 7)))
- =09=09{
- =09=09=09// Korea Yahoo support - when not caught by yschttl
- =09=09=09var da =3D href=2EindexOf("**");
- =09=09=09if (da !=3D=3D -1)
- =09=09=09=09outHref =3D href=2Esubstring(da+2);
- =09=09}
- =09}
- =09else if (!this=2EonlyPrimaries)
- =09{
- =09=09findStr =3D "&yargs=3D";
- =09=09var yargs =3D href=2EindexOf(findStr);
- =09=09if (yargs !=3D -1)
- =09=09{
- =09=09=09outHref =3D href=2Esubstring(yargs+findStr=2Elength);
- =09=09=09// check for prefix
- =09=09=09if (outHref=2EindexOf("://") =3D=3D -1)
- =09=09=09=09outHref =3D "http://" + outHref;
- =09=09=09// if inside an <I>, probably a paypal link, don't include
- =09=09=09if (tag=2EparentNode && (tag=2EparentNode=2EtagName =3D=3D "I"))
- =09=09=09=09return false;
- =09=09}=20
- =09}
- =09// filter domains
- =09// split the url based on '/'
- =09var parts =3D !!outHref =3F outHref=2Esplit('/') : null;
- =09// Filter out domains that match any of the search engine's names
- =09if (!parts || !parts[2])
- =09=09return false;
- =09=09
- =09var domain =3D parts[2];
- =09if ((domain=2EindexOf("rdrjp=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrkrs=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrtpe=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrird=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrhk2=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrsg1=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrin2=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdre1=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrw1=2Eyahoo=2Ecom") !=3D -1)=09=09)
- =09{
- =09=09return false;
- =09}
- =09// set for yahoo to get parent node for image insertion
- =09var hash =3D searchshield=2EavgCallFunc(this=2Edoc, 'GetHash', outHref)=
- ;
- =09tag=2EsetAttribute("id", "xplid=5F" + hash);
- =09return outHref;
- };
- /////////////// YAHOO SEARCH ENGINE ///////////////
- /////////////// AVG YAHOO SEARCH ENGINE ///////////////
- searchshield=2EAVGYahooSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EshowCleanVerdicts =3D false;
- =09this=2EomitAltImage =3D true;
- =09this=2EupdateImageStyle =3D {
- =09=09verticalAlign: null
- =09};
- };
- searchshield=2EAVGYahooSearchEngine=2Eprototype =3D new searchshield=2ESea=
- rchEngine();
- searchshield=2EAVGYahooSearchEngine=2Eprototype=2Econstructor =3D searchsh=
- ield=2EAVGYahooSearchEngine;
- searchshield=2EAVGYahooSearchEngine=2Eprototype=2Ename =3D "avgyahoo";
- searchshield=2EAVGYahooSearchEngine=2Eprototype=2EvalidSearch =3D function=
- (href)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09//path may be 'avg/search' or 'search'
- =09var pathArray =3D uri=2Epath=2Esplit("/");
- =09var avg =3D pathArray[0];
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D (undefined =3D=3D pathArray[1]) =3F pathArray[0] : pathArr=
- ay[1];
- =09=09path +=3D uri=2Edelimiter + uri=2Equery;
- =09// For AVG Yahoo classic the host must match:
- =09//=09yhs=2Esearch=2Eyahoo=2Ecom=09OR
- =09//=09=2Eyhs=2Esearch=2Eyahoo=2Ecom
- =09if (domain=2EindexOf("yhs=2Esearch=2Eyahoo=2Eco") !=3D -1)
- =09{
- =09=09if ((avg =3D=3D "avg") &&
- =09=09=09((path=2EindexOf("search=3F") =3D=3D 0) ||
- =09=09=09 (path=2EindexOf("search;") =3D=3D 0)))
- =09=09{
- =09=09=09return true;
- =09=09}
- =09}
- =09
- =09// also support new metro version which DOESN'T=20
- =09// contain /avg so avg split part is path
- =09// valid domains are:
- =09//=09search=2Eyahoo=2Ecom,=20
- =09//=09xx=2Esearch=2Eyahoo=2Ecom and
- =09//=09search=2Eyahoo=2Eco=2Exx
- =09if (domain=2EindexOf("search=2Eyahoo=2Eco") !=3D -1)=20
- =09{
- =09=09// path (split avg) must start with search and
- =09=09// contain the avg toolbar parameter
- =09=09if (((path=2EindexOf("search=3F") =3D=3D 0) ||
- =09=09=09(path=2EindexOf("search;") =3D=3D 0)) &&
- =09=09=09(path=2EindexOf("fr=3Dyhs-avg") !=3D -1))
- =09=09{
- =09=09=09return true;
- =09=09}
- =09}
- =09return false;
- };
- searchshield=2EAVGYahooSearchEngine=2Eprototype=2EincludeLink =3D function=
- (tag)
- {
- =09var href=09=09=3D "";
- =09var outHref=09=09=3D "";
- =09var findStr=09=09=3D "";
- =09if (this=2Esearch=2Edoc=2Ebody=2EclassName=2EtoLowerCase() !=3D "standa=
- rd")
- =09{=09// handle as std Yahoo results page
- =09=09return searchshield=2EYahooSearchEngine=2Eprototype=2EincludeLink(ta=
- g);
- =09}=09
- =09// yahoo likes to encode the url
- =09href =3D unescape(tag=2Ehref);
- =09if (tag=2Etarget =3D=3D "=5Ftop")
- =09{
- =09=09var da =3D href=2EindexOf("**");
- =09=09if (da !=3D -1)
- =09=09=09outHref =3D href=2Esubstring(da+2);
- =09=09else
- =09=09=09outHref =3D href ;
- =09=09if (outHref=2EtoLowerCase()=2EindexOf("overture=2E") !=3D=3D -1)
- =09=09=09return false;
- =09}
- =09else if (!this=2EonlyPrimaries)
- =09{
- =09=09findStr =3D "&yargs=3D";
- =09=09var yargs =3D href=2EindexOf(findStr);
- =09=09if (yargs !=3D -1)
- =09=09{
- =09=09=09outHref =3D href=2Esubstring(yargs+findStr=2Elength);
- =09=09=09// check for prefix
- =09=09=09if (outHref=2EindexOf("://") =3D=3D -1)
- =09=09=09=09outHref =3D "http://" + outHref;
- =09=09=09// if inside an <I>, probably a paypal link, don't include
- =09=09=09if (tag=2EparentNode && (tag=2EparentNode=2EtagName =3D=3D "I"))
- =09=09=09=09return false;
- =09=09}=20
- =09}
- =09// filter domains
- =09// split the url based on '/'
- =09var parts =3D outHref=2Esplit('/');
- =09// Filter out domains that match any of the search engine's names
- =09if (!parts[2])
- =09=09return false;
- =09=09
- =09var domain =3D parts[2];
- =09if ((domain=2EindexOf("rdrjp=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrkrs=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrtpe=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrird=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrhk2=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrsg1=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrin2=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdre1=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09(domain=2EindexOf("rdrw1=2Eyahoo=2Ecom") !=3D -1)=09=09)
- =09{
- =09=09return false;
- =09}
- =09return outHref;
- };
- /////////////// AVG YAHOO SEARCH ENGINE ///////////////
- /////////////// MSN SEARCH ENGINE ///////////////
- searchshield=2EMSNSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EonlyPrimaries =3D false;
- };
- searchshield=2EMSNSearchEngine=2Eprototype =3D new searchshield=2ESearchEn=
- gine();
- searchshield=2EMSNSearchEngine=2Eprototype=2Econstructor =3D searchshield=2E=
- MSNSearchEngine;
- searchshield=2EMSNSearchEngine=2Eprototype=2Ename =3D "msn";
- searchshield=2EMSNSearchEngine=2Eprototype=2EvalidSearch =3D function(href=
- )
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09var hostMatch=09=3D false;
- =09var domain=09=09=3D uri=2Ehost;
- =09// re stitch the uri path and query elements to
- =09// use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09// For MSN the host must match:
- =09//=09search=2Emsn=2Ecom=09=09OR
- =09//=09search=2Elive=2Ecom
- =09if (domain=2EindexOf("search=2Emsn=2Eco") > -1)
- =09{
- =09=09if (domain=2EcharAt(13) =3D=3D 'm')
- =09=09=09hostMatch =3D true;
- =09=09else if ((domain=2EcharAt(13) =3D=3D '=2E') && (domain=2Elength =3D=3D=
- 16))
- =09=09=09hostMatch =3D true;
- =09}
- =09else if (domain=2EindexOf("search=2Elive=2Eco") > -1)
- =09{
- =09=09if (domain=2EcharAt(14) =3D=3D 'm')
- =09=09=09hostMatch =3D true;
- =09=09else if ((domain=2EcharAt(14) =3D=3D '=2E') && (domain=2Elength =3D=3D=
- 17))
- =09=09=09hostMatch =3D true;
- =09}
- =09
- =09if (hostMatch)
- =09{
- =09=09if (path=2EindexOf("results=2Easpx") =3D=3D 0)
- =09=09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EMSNSearchEngine=2Eprototype=2EincludeLink =3D function(tag)=
- {
- =09var outHref =3D false;
- =09
- =09// these don't seem common from Firefox, but they are in IE
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, "g=2Emsn=2Eco"))
- =09{
- =09=09var qPos =3D tag=2Ehref=2EindexOf("=3F");
- =09=09if (qPos !=3D -1)
- =09=09{
- =09=09=09var postPart =3D tag=2Ehref=2Esubstring(qPos+1);
- =09=09=09var dblAmp =3D postPart=2EindexOf("&&");
- =09=09=09if (dblAmp !=3D -1)
- =09=09=09{
- =09=09=09=09outHref =3D postPart=2Esubstring(0, dblAmp);
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09}
- =09else if (searchshield=2EDoesURLContain(tag=2Ehref, "r=2Emsn=2Eco"))
- =09{
- =09=09var element =3D tag;
- =09=09var parentNode =3D tag=2EparentNode;
- =09=09// top links - check for a CITE
- =09=09var spanElements =3D element=2EgetElementsByTagName("CITE");
- =09=09if ((spanElements !=3D null)=09=09=09=09&&=20
- =09=09=09(spanElements=2Elength > 0))
- =09=09{
- =09=09=09outHref =3D spanElements[0]=2EinnerHTML;
- =09=09=09// replace any nbsp's
- =09=09=09outHref =3D outHref=2Ereplace(" ", " ");
- =09=09=09// url is after the last space in the html, after the '-'
- =09=09=09var space=5Fpos =3D outHref=2ElastIndexOf(" ");
- =09=09=09if (space=5Fpos !=3D -1)
- =09=09=09=09outHref =3D outHref=2Eslice(space=5Fpos + 1);
- =09=09=09outHref =3D searchshield=2EcheckUrl(outHref);
- =09=09=09return outHref;
- =09=09}
- =09=09
- =09=09// side links=20
- =09=09if (element=2ElastChild !=3D null)
- =09=09{
- =09=09=09outHref =3D element=2ElastChild=2EinnerHTML;
- =09=09=09if ( outHref !=3D null)
- =09=09=09{
- =09=09=09=09outHref =3D searchshield=2EcheckUrl(outHref);
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09}
- =09else if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2E=
- host)=09=09=09=09=09||
- =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Elive=2Ecom")=09=09=
- =09=09=09||
- =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "msn=2E")=09=09=09=09=09=
- =09||
- =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "msnscache=2Ecom")=09=09=
- =09=09||
- =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "advertising=2Emicroso=
- ft=2Eco")=09||
- =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "javascript:")=09=09=09=
- =09||
- =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "go=2Emicrosoft=2Eco")=
- =09=09=09||
- =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "hotmail=2Eco"))
- =09{
- =09=09// not a link
- =09=09return false;
- =09}
- =09else if (tag=2Eid=2EtoLowerCase() =3D=3D "trademarks")
- =09{
- =09=09// don't link the trademark at the bottom of the page
- =09=09return false;
- =09}
- =09else
- =09{
- =09=09// include it
- =09=09return tag=2Ehref;
- =09}
- };
- /////////////// MSN SEARCH ENGINE ///////////////
- /////////////// BING SEARCH ENGINE ///////////////
- searchshield=2EBingSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- };
- searchshield=2EBingSearchEngine=2Eprototype =3D new searchshield=2ESearchE=
- ngine();
- searchshield=2EBingSearchEngine=2Eprototype=2Econstructor =3D searchshield=
- =2EBingSearchEngine;
- searchshield=2EBingSearchEngine=2Eprototype=2Ename =3D "bing";
- searchshield=2EBingSearchEngine=2Eprototype=2EvalidSearch =3D function(hre=
- f)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09var hostMatch=09=3D false;
- =09var domain=09=09=3D uri=2Ehost;
- =09// re stitch the uri path and query elements to
- =09// use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09
- =09// For bing the host must match:
- =09//=09www=2Ebing=2Ecom or www=2Ebing=2Enet
- =09//=09xx=2Ebing=2Ecom or xx=2Ebing=2Enet where xx is a country code
- =09//=09bing=2Ecom=2Exx where xx is a country code
- =09//=09bing=2Esearch=2Exxxx=2Enet where xxxx may be something like daum
- =09if ((domain=2EindexOf("www=2Ebing=2Ecom") !=3D=3D -1) ||
- =09=09(domain=2EindexOf("www=2Ebing=2Enet") !=3D=3D -1) ||
- =09=09(domain=2EindexOf("bing=2Enet") !=3D=3D -1))
- =09{
- =09=09hostMatch =3D true;
- =09}
- =09else if ((domain=2EindexOf("bing=2Esearch=2E") !=3D=3D -1) &&=20
- =09=09=09 (domain=2EindexOf("=2Enet") =3D=3D=3D (domain=2Elength-4)))=20
- =09{=09//bing=2Esearch=2Exxxx=2Enet
- =09=09hostMatch =3D true;
- =09}
- =09else
- =09{=09// xx=2Ebing=2Ecom or bing=2Ecom=2Exx
- =09=09var domainLen =3D domain=2Elength;
- =09=09var tldPos =3D domain=2EindexOf("=2Ebing=2Ecom");
- =09=09if (tldPos > -1)
- =09=09{
- =09=09=09if ((domainLen - tldPos) =3D=3D 9)
- =09=09=09=09hostMatch =3D true;
- =09=09}=09
- =09}
- =09
- =09if (hostMatch)
- =09{
- =09=09var displayStyle =3D (domain =3D=3D 'bing=2Esearch=2Edaum=2Enet') =3F=
- 'inline-block' : 'inline';
- =09=09this=2EaddAnchorStyle =3D {
- =09=09=09display: displayStyle
- =09=09};
- =09=09
- =09=09if (path=2EindexOf("search=3F") =3D=3D 0)
- =09=09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EBingSearchEngine=2Eprototype=2EincludeLink =3D function(tag=
- )
- {
- =09var outHref =3D false;
- =09if (tag=2EtagName =3D=3D 'IMG')
- =09{=09//no images=20
- =09=09return false;
- =09}
- =09=09
- =09if (tag=2Ehref=2EcharAt(0) =3D=3D '/')
- =09{=09//no relative links
- =09=09return false;
- =09}
- =09if (/trademarks/i=2Etest(tag=2Eid))
- =09{
- =09=09// don't link the trademark at the bottom of the page
- =09=09return false;
- =09}
- =09
- =09if ((tag=2EparentNode) && (/sc=5Fstc/i=2Etest(tag=2EparentNode=2Eid)))
- =09{=09// don't verdict the social sites - our verdict doesn't fit
- =09=09return false;
- =09}
- =09else if (!!searchshield=2EgetParentNodeByClassName("sw=5Ft",tag,3))
- =09{=09// no links in page header
- =09=09return false;
- =09}
- =09else if (searchshield=2EDoesURLContain(tag=2Ehref, "r=2Emsn=2Eco") ||
- =09=09=09 searchshield=2EDoesURLContain(tag=2Ehref, "overture=2Ecom"))
- =09{=09// france has r=2Emsn=2Eco and italy has overture=2Ecom sponsored l=
- inks
- =09=09// with the link in CITE element
- =09=09
- =09=09var spanElements =3D null;
- =09=09
- =09=09// top links - check for a CITE
- =09=09spanElements =3D tag=2EgetElementsByTagName("CITE");
- =09=09if ((spanElements =3D=3D null) || (spanElements=2Elength <=3D 0))
- =09=09{
- =09=09=09if (tag=2EparentNode && tag=2EparentNode=2EparentNode)
- =09=09=09=09spanElements =3D tag=2EparentNode=2EparentNode=2EgetElementsBy=
- TagName("CITE");
- =09=09}
- =09=09
- =09=09if ((spanElements !=3D null) && (spanElements=2Elength > 0))
- =09=09{
- =09=09=09outHref =3D spanElements[0]=2EinnerHTML;
- =09=09=09if (outHref !=3D null)
- =09=09=09{
- =09=09=09=09// replace any nbsp's
- =09=09=09=09outHref =3D outHref=2Ereplace(" ", " ");
- =09=09=09=09// url is after the last space in the html, after the '-'
- =09=09=09=09var space=5Fpos =3D outHref=2ElastIndexOf(" ");
- =09=09=09=09if (space=5Fpos !=3D -1)
- =09=09=09=09=09outHref =3D outHref=2Eslice(space=5Fpos + 1);
- =09=09=09=09outHref =3D searchshield=2EcheckUrl(outHref);
- =09=09=09=09// save the link
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09=09
- =09=09// side links=20
- =09=09if (tag=2ElastChild !=3D null)
- =09=09{
- =09=09=09outHref =3D tag=2ElastChild=2EinnerHTML;
- =09=09=09if (outHref !=3D null)
- =09=09=09{
- =09=09=09=09outHref =3D searchshield=2EcheckUrl(outHref);
- =09=09=09=09// save the link
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09}
- =09// no sponsored links for now=20
- =09else if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2E=
- host)=09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Elive=2Ecom")=09=09=09=
- =09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Ebing=2Ecom")=09=09=09=
- =09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Ebing=2Enet")=09=09=09=
- =09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Edaum=2Enet")=09=09=09=
- =09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Egmarket=2Eco")=09=09=09=
- ||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Emultimap=2Ecom")=09=09=
- =09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "msn=2E")=09=09=09=09=09|=
- |
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "ms=2Eciao=2E")=09=09=09=09=
- ||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "ms=2Eciao-")=09=09=09=09=
- ||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "advertising=2Emicrosoft=2E=
- co")=09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "javascript:")=09=09=09=09=
- ||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "go=2Emicrosoft=2Eco")=09=
- =09=09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "hotmail=2Eco")=09=09=09=09=
- =09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "cc=2Ebingj=2Ecom")=09=09=
- =09=09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "microsofttranslator=2Eco=
- m")=09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Eengkoo=2Ecom")=09=09=09=
- =09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "sealinfo=2Everisign=2Eco=
- m")=09=09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "explabs=2Ecom")=09=09=09=
- =09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "onlinehelp=2Emicrosoft=2E=
- com")=09||
- =09=09 searchshield=2EDoesURLContain(tag=2Ehref, "=2Emyoverture"))
- =09{
- =09=09// not a link
- =09=09return false;
- =09}
- =09else
- =09=09return tag=2Ehref;
- };
- searchshield=2EBingSearchEngine=2Eprototype=2EaddImage =3D function(node, =
- image, hidden)
- {
- =09var element=09=3D node=2Eelement;
- =09var parentNode =09=3D node=2Eelement=2EparentNode;
- =09var grandParentNode =3D !!parentNode =3F parentNode=2EparentNode : null=
- ;
- =09// if there are redundant links in the same grandparent then skip them
- =09if (!!grandParentNode)
- =09{
- =09=09gpChildren =3D grandParentNode=2EchildNodes;
- =09=09for (var i=3D0; i < gpChildren=2Elength; i++)
- =09=09{
- =09=09=09if (!!element=2Ehref && gpChildren[i]=2EtagName =3D=3D "A" && gpC=
- hildren[i]=2Ehref =3D=3D element=2Ehref)
- =09=09=09=09return;
- =09=09}
- =09}
- =09var parent =3D searchshield=2ESearchEngine=2Eprototype=2EaddImage;
- =09return parent=2Ecall(this, node, image, hidden);
- };
- /////////////// BING SEARCH ENGINE ///////////////
- /////////////// BAIDU SEARCH ENGINE ///////////////
- searchshield=2EBaiduSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EupdateImageStyle =3D {
- =09=09verticalAlign: null
- =09};
- };
- searchshield=2EBaiduSearchEngine=2Eprototype =3D new searchshield=2ESearch=
- Engine();
- searchshield=2EBaiduSearchEngine=2Eprototype=2Econstructor =3D searchshiel=
- d=2EBaiduSearchEngine;
- searchshield=2EBaiduSearchEngine=2Eprototype=2Ename =3D "baidu";
- searchshield=2EBaiduSearchEngine=2Eprototype=2EvalidSearch =3D function(hr=
- ef)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09var hostMatch=09=3D false;
- =09var domain=09=09=3D uri=2Ehost;
- =09// re stitch the uri path and query elements to
- =09// use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09
- =09if (domain =3D=3D "www=2Ebaidu=2Ecom" || path=2EindexOf("testBaidu") !=3D=
- =3D -1)
- =09=09hostMatch =3D true;
- =09=09
- =09if (hostMatch)
- =09{
- =09=09if (path=2EindexOf("s=3F") =3D=3D 0)
- =09=09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EBaiduSearchEngine=2Eprototype=2EincludeLink =3D function(ta=
- g)
- {=09=09
- =09=09if (tag=2EclassName && tag=2EclassName =3D=3D "m")
- =09=09=09return false;
- =09=09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2E=
- host))
- =09=09=09return false;
- =09=09else=20
- =09=09{
- =09=09=09// no link to self
- =09=09=09var traverseElement =3D tag=2EparentNode;
- =09=09=09while ( traverseElement && traverseElement=2EclassName !=3D "tbod=
- y")
- =09=09=09{
- =09=09=09=09if (traverseElement=2EclassName =3D=3D "f")
- =09=09=09=09=09return tag=2Ehref;
- =09=09=09=09traverseElement =3D traverseElement=2EparentNode;
- =09=09=09}
- =09=09=09
- =09=09=09return false;
- =09=09}
- };
- /////////////// BAIDU SEARCH ENGINE ///////////////
- /////////////// EARTHLINK SEARCH ENGINE ///////////////
- searchshield=2EEarthlinkSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EonlyPrimaries =3D false;
- =09this=2EaddAnchorStyle =3D {
- =09=09position: "static"
- =09};
- };
- searchshield=2EEarthlinkSearchEngine=2Eprototype =3D new searchshield=2ESe=
- archEngine();
- searchshield=2EEarthlinkSearchEngine=2Eprototype=2Econstructor =3D searchs=
- hield=2EEarthlinkSearchEngine;
- searchshield=2EEarthlinkSearchEngine=2Eprototype=2Ename =3D "earthlink";
- searchshield=2EEarthlinkSearchEngine=2Eprototype=2EvalidSearch =3D functio=
- n(href)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09var hostMatch=09=3D false;
- =09var domain=09=09=3D uri=2Ehost;
- =09// re stitch the uri path and query elements to
- =09// use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09// For EarthLink the host must match:
- =09//=09search=2Eearthlink=2Enet
- =09if (("search=2Eearthlink=2Enet" =3D=3D domain)=09&&
- =09=09(path=2EindexOf("search=3F") =3D=3D 0))
- =09{
- =09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EEarthlinkSearchEngine=2Eprototype=2EincludeLink =3D functio=
- n(tag)
- {
- =09var outHref=09=3D "";
- =09var findStr=09=3D "";
- =09// check for an anchor
- =09if (tag=2EtagName =3D=3D "A")
- =09{
- =09=09// check for sponsored
- =09=09if (tag=2Eid=2EindexOf("a") =3D=3D 0)
- =09=09{
- =09=09=09var q =3D tag=2Ehref=2EindexOf("&q=3D");
- =09=09=09var qlen =3D 3;
- =09=09=09if (q =3D=3D -1)
- =09=09=09{
- =09=09=09=09q =3D tag=2Ehref=2EindexOf("&adurl=3D");
- =09=09=09=09qlen =3D 7;
- =09=09=09=09if (q =3D=3D -1)
- =09=09=09=09=09return false;
- =09=09=09}
- =09=09=09// find end of url
- =09=09=09var end =3D tag=2Ehref=2EindexOf("&", q+qlen);
- =09=09=09if (end < 0)
- =09=09=09=09end =3D tag=2Ehref=2Elength;
- =09=09=09// add the link
- =09=09=09outHref =3D tag=2Ehref=2Esubstring(q+qlen, end);
- =09=09=09
- =09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
- =09=09=09=09return false;
- =09=09=09=09
- =09=09=09return outHref;
- =09=09}
- =09=09// don't search url's to self
- =09=09if ((tag=2Ehref=2EindexOf("://") =3D=3D -1) || searchshield=2EDoesUR=
- LContain(tag=2Ehref, this=2Esearch=2Euri=2Ehost))
- =09=09=09return false;
- =09=09// if a normal web result add it
- =09=09if (tag=2EparentNode && (tag=2EparentNode=2EtagName =3D=3D "H3") &&
- =09=09=09tag=2EparentNode=2EparentNode && (tag=2EparentNode=2EparentNode=2E=
- tagName =3D=3D "LI") &&
- =09=09=09tag=2EparentNode=2EparentNode=2EparentNode && (tag=2EparentNode=2E=
- parentNode=2EparentNode=2EtagName =3D=3D "UL"))
- =09=09{
- =09=09=09if (searchshield=2EFilterUrl(tag=2Ehref, this=2Efilter=5Furls))
- =09=09=09=09return false;
- =09=09=09=09
- =09=09=09return tag=2Ehref;
- =09=09}
- =09}
- =09
- =09return false;
- };
- /////////////// EARTHLINK SEARCH ENGINE ///////////////
- /////////////// AOL SEARCH ENGINE ///////////////
- searchshield=2EAOLSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09
- =09this=2EaddImageStyle =3D {
- =09=09display: "inline"
- =09};
- =09this=2EaddAnchorStyle =3D {
- =09=09display: null
- =09};
- =09this=2EupdateImageStyle =3D {
- =09=09verticalAlign: null,
- =09=09display: "inline"
- =09};
- };
- searchshield=2EAOLSearchEngine=2Eprototype =3D new searchshield=2ESearchEn=
- gine();
- searchshield=2EAOLSearchEngine=2Eprototype=2Econstructor =3D searchshield=2E=
- AOLSearchEngine;
- searchshield=2EAOLSearchEngine=2Eprototype=2Ename =3D "aol";
- searchshield=2EAOLSearchEngine=2Eprototype=2EvalidSearch =3D function(href=
- )
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain =3D uri=2Ehost;
- =09//path may be 'aol/search' or 'search'
- =09var pathArray =3D uri=2Epath=2Esplit("/");
- =09var aol =3D pathArray[0];
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D (undefined =3D=3D pathArray[1]) =3F pathArray[0] : pathArr=
- ay[1];
- =09=09path +=3D uri=2Edelimiter + uri=2Equery;
- =09if (/search\=2Eaol\=2Ecom/=2Etest(domain))
- =09{
- =09=09if ((aol =3D=3D "aol") &&
- =09=09=09(path=2EindexOf("search=3F") =3D=3D 0))
- =09=09{
- =09=09=09return true;
- =09=09}
- =09}
- =09
- =09return false;
- };
- searchshield=2EAOLSearchEngine=2Eprototype=2EincludeLink =3D function(tag)=
- {
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09=09return false;
- =09
- =09// sponsored links - google
- =09if ((tag=2EclassName) && (tag=2EclassName=2EindexOf("slLink topAnchor")=
- !=3D -1))
- =09{=09//parse for embedded href
- =09=09if (tag=2Ehref=2EindexOf("/aclk=3Fsa=3D") =3D=3D -1)
- =09=09=09return false;
- =09=09var adurl =3D tag=2Ehref=2EindexOf("&adurl=3Dhttp");
- =09=09// if an adurl the destination href can be acquired from the onclick=
- handler
- =09=09if (adurl !=3D -1)
- =09=09{
- =09=09=09var destUrl;
- =09=09=09var clickHandler =3D tag=2EgetAttribute('onclick');
- =09=09=09if (clickHandler !=3D null)
- =09=09=09{
- =09=09=09=09// the destination href is the 2nd parameter (zero-based array=
- )
- =09=09=09=09destUrl =3D searchshield=2EgetClickHandlerParams(clickHandler)=
- [1];
- =09=09=09=09if (destUrl !=3D null)
- =09=09=09=09{
- =09=09=09=09=09destUrl =3D searchshield=2EremoveHtmlTags(destUrl=2Ereplace=
- (/'/g,''));
- =09=09=09=09=09return searchshield=2EcheckUrl(destUrl);
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09=09return false;
- =09}
- =09if (tag=2EclassName =3D=3D "find")
- =09=09return tag=2Ehref;
- =09=09
- =09return false;
- };
- searchshield=2EAOLSearchEngine=2Eprototype=2EinsertNodes =3D function(node=
- , doc)
- {
- =09var element =3D node=2Eelement;
- =09var score =3D node=2Escore;
- =09if (element && element=2EclassName && element=2EclassName=2EindexOf("sl=
- Link") !=3D -1)
- =09{=09//sponsored links only
- =09=09// for alt image
- =09=09if (score =3D=3D searchshield=2ESCORE=5FSS=5FVERISIGN)
- =09=09=09return [element=2EnextSibling, element=2EparentNode];
- =09=09// for verdict image
- =09=09var cN =3D element=2EchildNodes;
- =09=09var cnLen =3D cN=2Elength;
- =09=09for (var i=3D0; i < cnLen; i++)
- =09=09{
- =09=09=09if ((cN[i]=2EnodeType =3D=3D 1) &&=20
- =09=09=09=09(cN[i]=2EnodeName =3D=3D 'SPAN') &&=20
- =09=09=09=09((cN[i]=2EclassName =3D=3D 'title') || (cN[i]=2EclassName =3D=3D=
- 'durl')))
- =09=09=09=09return [cN[i]=2EnextSibling, cN[i]=2EparentNode];
- =09=09}
- =09}
- =09var parent =3D searchshield=2ESearchEngine=2Eprototype=2EinsertNodes;
- =09return parent=2Ecall(this, node, doc);
- };
- /////////////// AOL SEARCH ENGINE ///////////////
- /////////////// ASK SEARCH ENGINE ///////////////
- searchshield=2EAskSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- };
- searchshield=2EAskSearchEngine=2Eprototype =3D new searchshield=2ESearchEn=
- gine();
- searchshield=2EAskSearchEngine=2Eprototype=2Econstructor =3D searchshield=2E=
- AskSearchEngine;
- searchshield=2EAskSearchEngine=2Eprototype=2Ename =3D "ask";
- searchshield=2EAskSearchEngine=2Eprototype=2EvalidSearch =3D function(href=
- )
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09
- =09if ("www=2Eask=2Ecom" =3D=3D domain)
- =09{
- =09=09if (path=2EindexOf("web=3F") =3D=3D 0)
- =09=09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EAskSearchEngine=2Eprototype=2EincludeLink =3D function(tag)=
- {
- =09var outHref=09=3D "";
- =09var findStr=09=3D "";
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09=09return false;
- =09
- =09if ((tag=2EclassName) && (tag=2EclassName=2EindexOf("nu") !=3D -1) && (=
- tag=2EclassName=2EindexOf("info") =3D=3D -1))=20
- =09{
- =09=09// exclude green links
- =09=09if ((tag=2EfirstChild) &&
- =09=09=09(tag=2EfirstChild=2EclassName) &&
- =09=09=09(tag=2EfirstChild=2EclassName=2EindexOf('attrib') =3D=3D 0))
- =09=09{
- =09=09=09return false;
- =09=09}
- =09=09// ads link to google with class nu
- =09=09findStr =3D "www=2Egoogle=2Ecom";
- =09=09if (tag=2Ehref=2EindexOf(findStr) !=3D 0)
- =09=09{
- =09=09=09if (tag=2Ehref=2EindexOf(findStr + "/aclk=3Fsa=3D") !=3D -1)
- =09=09=09{=09
- =09=09=09=09findStr =3D "&adurl=3Dhttp";
- =09=09=09=09var pos =3D tag=2Ehref=2EindexOf(findStr);
- =09=09=09=09if (pos !=3D -1)
- =09=09=09=09{
- =09=09=09=09=09pos +=3D 7;
- =09=09=09=09=09outHref =3D tag=2Ehref=2Esubstring(pos);
- =09=09=09=09=09outHref =3D unescape(outHref);
- =09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls)=
- )
- =09=09=09=09=09=09=09return false;
- =09=09=09=09=09return outHref;
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09=09else
- =09=09{=09// ad not to google just use href
- =09=09=09outHref =3D tag=2Ehref;
- =09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
- =09=09=09=09return false;
- =09=09=09return outHref;
- =09=09}
- =09}
- =09// primary results have class containing title or L2 ( Wikipedia links =
- )
- =09else if ((tag=2EclassName) && ((tag=2EclassName=2EindexOf("title") !=3D=
- -1) || (tag=2EclassName=2EtoLowerCase() =3D=3D "l2")))
- =09{
- =09=09outHref =3D tag=2Ehref;
- =09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
- =09=09=09return false;
- =09=09return outHref;
- =09}
- =09
- =09return false;
- };
- /////////////// ASK SEARCH ENGINE ///////////////
- /////////////// ALTAVISTA SEARCH ENGINE ///////////////
- searchshield=2EAltaVistaSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- };
- searchshield=2EAltaVistaSearchEngine=2Eprototype =3D new searchshield=2ESe=
- archEngine();
- searchshield=2EAltaVistaSearchEngine=2Eprototype=2Econstructor =3D searchs=
- hield=2EAltaVistaSearchEngine;
- searchshield=2EAltaVistaSearchEngine=2Eprototype=2Ename =3D "altavista";
- searchshield=2EAltaVistaSearchEngine=2Eprototype=2EvalidSearch =3D functio=
- n(href)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09// www=2Eatlavista=2Ecom ---> now http://us=2Eyhs4=2Esearch=2Eyahoo=2Ec=
- om/yhs/search=3Ffr=3Daltavista&fr=3Daltavista&itag=3Dody&q=3Dwarez&kgs=3D1=
- &kls=3D0
- =09// xx=2Ealtavista=2Ecom where xx is a country code
- =09var hostMatch =3D false;
- =09if ("www=2Ealtavista=2Ecom" =3D=3D domain)
- =09{
- =09=09hostMatch =3D true;
- =09}
- =09else
- =09{
- =09=09// xx=2Ealtavista=2Ecom
- =09=09var pDest =3D domain=2EindexOf("=2Ealtavista=2Ecom");
- =09=09if ((pDest !=3D -1 ) && ((domain=2Elength - pDest) =3D=3D 14))
- =09=09{
- =09=09=09hostMatch =3D true;
- =09=09}
- =09=09else
- =09=09{
- =09=09=09// a reference to altavista must be present in yahoo search url
- =09=09=09var pRef =3D (uri=2EqsArray=2Efr && uri=2EqsArray=2Efr =3D=3D 'al=
- tavista');
- =09=09=09pDest =3D domain=2EindexOf("search=2Eyahoo=2Ecom");
- =09=09=09if (pDest !=3D -1 && pRef)
- =09=09=09=09hostMatch =3D true;
- =09=09}
- =09}
- =09if (hostMatch)
- =09{
- =09=09//path must start with web/results=3F
- =09=09if ((path=2EindexOf("yhs/search=3F") =3D=3D 0)=09||
- =09=09=09(path=2EindexOf("search;") =3D=3D 0)=09=09||
- =09=09=09(path=2EindexOf("yhs/search;") =3D=3D 0)=09||
- =09=09=09(path=2EindexOf("web/results=3F") =3D=3D 0)||
- =09=09=09(path=2EindexOf("fr=3Daltavista") !=3D -1))
- =09=09{
- =09=09=09return true;
- =09=09}
- =09}
- =09
- =09return false;
- };
- searchshield=2EAltaVistaSearchEngine=2Eprototype=2EincludeLink =3D functio=
- n(tag)
- {
- =09var outHref=09=3D "";
- =09var findStr=09=3D "";
- =09// initial checks
- =09if ((!tag=2Ehref)=09||=20
- =09=09(tag=2Ehref=2EcharAt(0) =3D=3D '#') ||
- =09=09(tag=2Ehref=2EindexOf("javascript:") =3D=3D 0))
- =09{
- =09=09return false;
- =09}
- =09=09
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09=09return false;
- =09
- =09var spnsdLinks =3D searchshield=2EgetParentNodeByTagName("DIV", tag, "c=
- lassName");
- =09if ((spnsdLinks) &&
- =09=09(spnsdLinks=2EclassName=2EindexOf('ads') > -1))=09// sponsored links=
- =09{
- =09=09if (!tag=2EparentNode)
- =09=09=09return false;
- =09=09// parse ads for em tag
- =09=09var baseNode;
- =09=09if (spnsdLinks=2EclassName=2EindexOf('ads horiz') > -1)=09// horizon=
- tal ads sections
- =09=09=09baseNode =3D tag=2EparentNode=2EparentNode;
- =09=09else
- =09=09=09baseNode =3D tag=2EparentNode;
- =09=09
- =09=09if (!baseNode || !baseNode=2ElastChild || baseNode=2ElastChild=2Etag=
- Name !=3D 'EM')
- =09=09=09return false;
- =09=09var outHref =3D searchshield=2EremoveHtmlTags(baseNode=2ElastChild=2E=
- innerHTML);
- =09=09return outHref;
- =09}
- =09
- =09if ((tag=2EclassName =3D=3D "spt") ||=20
- =09=09(tag=2EclassName =3D=3D "res") ||
- =09=09(tag=2EclassName =3D=3D "yschttl spt"))
- =09{
- =09=09findStr =3D "/**";
- =09=09var pos =3D tag=2Ehref=2EindexOf(findStr);
- =09=09if (pos !=3D -1)
- =09=09{
- =09=09=09pos +=3D 3;
- =09=09=09outHref =3D tag=2Ehref=2Esubstring(pos);
- =09=09=09outHref =3D unescape(outHref);
- =09=09=09
- =09=09=09// no results for overture=2Ecom & no yahoo domains
- =09=09=09chkHref =3D outHref=2EtoLowerCase();
- =09=09=09if (chkHref=2EindexOf("overture=2E") !=3D -1)
- =09=09=09=09return false;
- =09=09=09// split the url based on '/'
- =09=09=09var parts =3D outHref=2Esplit('/');
- =09=09=09// only need a domain
- =09=09=09if ((parts !=3D null) && (parts[2] !=3D null))
- =09=09=09{
- =09=09=09=09var domain =3D parts[2];
- =09=09=09=09if ((domain=2EindexOf("rdrjp=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09=09=09=09(domain=2EindexOf("rdrkrs=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09=09=09=09(domain=2EindexOf("rdrtpe=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09=09=09=09(domain=2EindexOf("rdrird=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09=09=09=09(domain=2EindexOf("rdrhk2=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09=09=09=09(domain=2EindexOf("rdrsg1=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09=09=09=09(domain=2EindexOf("rdrin2=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09=09=09=09(domain=2EindexOf("rdre1=2Eyahoo=2Ecom") !=3D -1)=09||
- =09=09=09=09=09(domain=2EindexOf("rdrw1=2Eyahoo=2Ecom") !=3D -1)=09=09)
- =09=09=09=09{
- =09=09=09=09=09return false
- =09=09=09=09}
- =09=09=09}
- =09=09=09return outHref;
- =09=09}
- =09=09else
- =09=09{
- =09=09=09return tag=2Ehref;
- =09=09}
- =09}
- =09
- =09return false;
- };
- searchshield=2EAltaVistaSearchEngine=2Eprototype=2EgetImgElement =3D funct=
- ion (element)
- {
- =09while (element !=3D null)=20
- =09{
- =09=09element =3D element=2EnextSibling;
- =09=09if (element !=3D null)
- =09=09{
- =09=09=09if ((element=2Eid =3D=3D null) || (element=2Eid=2EindexOf("LXPLSS=
- =5F") =3D=3D -1))
- =09=09=09{ // not our id but hit another anchor no verdict
- =09=09=09=09if (element=2EtagName =3D=3D "A")
- =09=09=09=09{
- =09=09=09=09=09element =3D null;
- =09=09=09=09=09break;
- =09=09=09=09}
- =09=09=09}
- =09=09=09else if (element=2EtagName =3D=3D "A")
- =09=09=09=09break;
- =09=09}
- =09}
- =09=09
- =09var rtnElem =3D !!element =3F element=2EfirstChild : element;
- =09return rtnElem;
- };
- /////////////// ALTAVISTA SEARCH ENGINE ///////////////
- /////////////// YANDEX SEARCH ENGINE ///////////////
- searchshield=2EYandexSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- };
- searchshield=2EYandexSearchEngine=2Eprototype =3D new searchshield=2ESearc=
- hEngine();
- searchshield=2EYandexSearchEngine=2Eprototype=2Econstructor =3D searchshie=
- ld=2EYandexSearchEngine;
- searchshield=2EYandexSearchEngine=2Eprototype=2Ename =3D "yandex";
- searchshield=2EYandexSearchEngine=2Eprototype=2EvalidSearch =3D function(h=
- ref)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09if ((domain=2Ematch(/yandex\=2Ecom|by|kz|ru|ua/i)) &&
- =09=09(path=2EindexOf("yandsearch=3F") =3D=3D 0))
- =09{
- =09=09return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2EYandexSearchEngine=2Eprototype=2EincludeLink =3D function(t=
- ag)
- {
- =09if (tag=2Ehref=2EindexOf("/search") !=3D -1)
- =09{
- =09=09return false;
- =09}
- =09
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t)=09||
- =09=09searchshield=2EDoesURLContain(tag=2Ehref, "=2Eyandex=2Enet")=09=09||=
- =09=09searchshield=2EDoesURLContain(tag=2Ehref, "=2Eyandex=2Eru")=09=09=09=
- ||
- =09=09searchshield=2EDoesURLContain(tag=2Ehref, "moikrug=2Eru")=09=09=09||=
- =09=09searchshield=2EDoesURLContain(tag=2Ehref, "ya=2Eru")=09=09=09=09||
- =09=09searchshield=2EDoesURLContain(tag=2Ehref, "=2Eyandex=2Ecom")=09=09||=
- =09=09searchshield=2EDoesURLContain(tag=2Ehref, "yandex=2Est"))
- =09{
- =09=09return false;
- =09}
- =09=09
- =09parentNode =3D tag=2EparentNode;
- =09if ((tag=2EparentNode)=09=09=09&&=20
- =09=09(tag=2EparentNode=2EparentNode)=09&&
- =09=09(tag=2EparentNode=2EparentNode=2EclassName=2EtoLowerCase() =3D=3D "m=
- oreinfo"))
- =09{
- =09=09return false;
- =09}
- =09
- =09return tag=2Ehref;
- };
- searchshield=2EYandexSearchEngine=2Eprototype=2EgetImgElement =3D function=
- (element)
- {
- =09while (element !=3D null)=20
- =09{
- =09=09element =3D element=2EnextSibling;
- =09=09if (element !=3D null)
- =09=09{
- =09=09=09if ((element=2Eid =3D=3D null) || (element=2Eid=2EindexOf("LXPLSS=
- =5F") =3D=3D -1))
- =09=09=09{ // not our id but hit another anchor no verdict
- =09=09=09=09if (element=2EtagName =3D=3D "A")
- =09=09=09=09{
- =09=09=09=09=09element =3D null;
- =09=09=09=09=09break;
- =09=09=09=09}
- =09=09=09}
- =09=09=09else if (element=2EtagName =3D=3D "A")
- =09=09=09=09break;
- =09=09}
- =09}
- =09=09
- =09var rtnElem =3D !!element =3F element=2EfirstChild : element;
- =09return rtnElem;
- };
- /////////////// YANDEX SEARCH ENGINE ///////////////
- /////////////// SEZNAM SEARCH ENGINE ///////////////
- searchshield=2ESeznamSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EelementAttribute =3D {
- =09=09width: "18",
- =09=09height: "18"
- =09};
- =09this=2EupdateImageStyle =3D {
- =09=09width: "18px",
- =09=09height: "18px"
- =09};
- };
- searchshield=2ESeznamSearchEngine=2Eprototype =3D new searchshield=2ESearc=
- hEngine();
- searchshield=2ESeznamSearchEngine=2Eprototype=2Econstructor =3D searchshie=
- ld=2ESeznamSearchEngine;
- searchshield=2ESeznamSearchEngine=2Eprototype=2Ename =3D "seznam";
- searchshield=2ESeznamSearchEngine=2Eprototype=2EvalidSearch =3D function(h=
- ref)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09if ((domain=2EindexOf("search=2Eseznam=2Ecz") > -1)=09&&
- =09=09((path=2EindexOf("=3F") =3D=3D 0) || (path=2EindexOf("svet") =3D=3D =
- 0)))
- =09{
- =09=09return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2ESeznamSearchEngine=2Eprototype=2EincludeLink =3D function(t=
- ag)
- {
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09=09return false;
- =09
- =09var parentNode =3D tag=2EparentNode;
- =09if (parentNode)
- =09{
- =09=09var grandParentNode =3D tag=2EparentNode=2EparentNode;
- =09=09if ((parentNode=2EtagName =3D=3D "SPAN") &&=20
- =09=09=09((parentNode=2EclassName=2EtoLowerCase() =3D=3D "sklik-url") ||
- =09=09=09(parentNode=2EclassName=2EtoLowerCase() =3D=3D "sklik-title")))
- =09=09{=09// locate the real url and unencode it
- =09=09=09var urlPos =3D tag=2Ehref=2EindexOf("&url=3Dhttp");
- =09=09=09if (urlPos !=3D -1)
- =09=09=09{
- =09=09=09=09urlPos +=3D 5;=09
- =09=09=09=09outHref =3D tag=2Ehref=2Esubstring(urlPos);
- =09=09=09=09outHref =3D unescape(outHref);
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09=09else if (grandParentNode)=20
- =09=09{
- =09=09=09var greatGrandParentNode =3D tag=2EparentNode=2EparentNode=2Epare=
- ntNode;
- =09=09=09if ((grandParentNode=2EtagName =3D=3D "DIV") &&
- =09=09=09=09((grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "text") |=
- | (grandParentNode=2EclassName=2EtoLowerCase() =3D=3D "hlasky otz")))
- =09=09=09{=09// standard link
- =09=09=09=09return tag=2Ehref;
- =09=09=09}
- =09=09=09else if (greatGrandParentNode && greatGrandParentNode=2EtagName =3D=
- =3D "DIV" &&
- =09=09=09=09=09(greatGrandParentNode=2EclassName=2EtoLowerCase() =3D=3D "h=
- otlinks"))=20
- =09=09=09{=09// hint link
- =09=09=09=09return tag=2Ehref;
- =09=09=09}
- =09=09=09
- =09=09}
- =09}
- =09
- =09return false;
- };
- /////////////// SEZNAM SEARCH ENGINE ///////////////
- /////////////// WEBHLEDANI SEARCH ENGINE ///////////////
- searchshield=2EWebhledaniSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- };
- searchshield=2EWebhledaniSearchEngine=2Eprototype =3D new searchshield=2ES=
- earchEngine();
- searchshield=2EWebhledaniSearchEngine=2Eprototype=2Econstructor =3D search=
- shield=2EWebhledaniSearchEngine;
- searchshield=2EWebhledaniSearchEngine=2Eprototype=2Ename =3D "webhledani";=
- searchshield=2EWebhledaniSearchEngine=2Eprototype=2EvalidSearch =3D functi=
- on(href)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09if ((domain=2EindexOf("webhledani=2Ecz") > -1)=09&&
- =09=09(path=2EindexOf("results=2Easpx=3F") =3D=3D 0))
- =09{
- =09=09return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2EWebhledaniSearchEngine=2Eprototype=2EincludeLink =3D functi=
- on(tag)
- {
- =09if (tag=2Ehref=2EindexOf("/redir=2Easpx=3F") !=3D -1)
- =09{
- =09=09var ancestorNode;
- =09=09// sponsored link
- =09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("resul=
- ts sponsored", tag, 3)) !=3D null)
- =09=09{
- =09=09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("re=
- s1", tag, 2)) !=3D null)
- =09=09=09{
- =09=09=09=09
- =09=09=09=09var spanSibling =3D ancestorNode=2EnextSibling;
- =09=09=09=09while (spanSibling=2EnodeName !=3D 'SPAN')
- =09=09=09=09{
- =09=09=09=09=09spanSibling =3D spanSibling=2EnextSibling;
- =09=09=09=09=09if (spanSibling=2EnodeName =3D=3D 'DIV' || spanSibling=2Ecl=
- assName =3D=3D 'res1')
- =09=09=09=09=09{
- =09=09=09=09=09=09spanSibling =3D null;
- =09=09=09=09=09=09break;
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09=09if (spanSibling)
- =09=09=09=09=09 outHref =3D spanSibling=2EinnerHTML;
- =09=09=09}
- =09=09=09if (outHref)
- =09=09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveHtmlTags(o=
- utHref));=20
- =09=09}
- =09
- =09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("right=
- -sponsored", tag, 3)) !=3D null)
- =09=09{
- =09=09=09var outHref;
- =09=09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("re=
- s3", tag, 2)) !=3D null)
- =09=09=09{
- =09=09=09=09
- =09=09=09=09var spanSibling =3D ancestorNode=2EnextSibling;
- =09=09=09=09while (spanSibling=2EnodeName !=3D 'SPAN')
- =09=09=09=09{
- =09=09=09=09=09spanSibling =3D spanSibling=2EnextSibling;
- =09=09=09=09=09if (spanSibling=2EnodeName =3D=3D 'DIV' || spanSibling=2Ecl=
- assName =3D=3D 'res3')
- =09=09=09=09=09{
- =09=09=09=09=09=09spanSibling =3D null;
- =09=09=09=09=09=09break;
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09=09if (spanSibling)
- =09=09=09=09=09 outHref =3D spanSibling=2EinnerHTML;
- =09=09=09}
- =09=09=09if (outHref)
- =09=09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveHtmlTags(o=
- utHref));=20
- =09=09}
- =09=09// result link
- =09=09if (searchshield=2EgetParentNodeByClassName("results", tag, 3) !=3D =
- null)
- =09=09{
- =09=09=09if ((ancestorNode =3D searchshield=2EgetParentNodeByClassName("re=
- s2", tag, 2)) !=3D null)
- =09=09=09{
- =09=09=09=09if (tag=2EparentNode && (tag=2EparentNode=2EnodeName !=3D 'P')=
- )
- =09=09=09=09=09return getLinkHref(ancestorNode);
- =09=09=09}
- =09=09}
- =09}
- =09return false;
- =09function getLinkHref(aNode)
- =09{
- =09=09var spanElems =3D aNode=2EgetElementsByTagName('span');
- =09=09for (var i=3D0; i < spanElems=2Elength; i++)
- =09=09{
- =09=09=09if (spanElems[i]=2EclassName !=3D 'site')
- =09=09=09=09continue;
- =09=09=09var outAnchor =3D spanElems[i]=2EgetElementsByTagName('a')[0];
- =09=09=09if (outAnchor =3D=3D null)
- =09=09=09=09outAnchor =3D spanElems[i];
- =09=09=09return searchshield=2EcheckUrl(searchshield=2EremoveHtmlTags(outA=
- nchor=2EinnerHTML));
- =09=09}
- =09=09return false;
- =09}
- };
- /////////////// WEBHLEDANI SEARCH ENGINE ///////////////
- /////////////// EBAY SEARCH ENGINE ///////////////
- searchshield=2EeBaySearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- };
- searchshield=2EeBaySearchEngine=2Eprototype =3D new searchshield=2ESearchE=
- ngine();
- searchshield=2EeBaySearchEngine=2Eprototype=2Econstructor =3D searchshield=
- =2EeBaySearchEngine;
- searchshield=2EeBaySearchEngine=2Eprototype=2Ename =3D "ebay";
- searchshield=2EeBaySearchEngine=2Eprototype=2EvalidSearch =3D function(hre=
- f)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09// shop=2Eebay=2Exx
- =09// shop=2Exxxx=2Eebay=2Exx=09like shop=2Ebenl=2Eebay=2Ebe
- =09// search=2Eauction=2Eco=2Ekr=20
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09
- =09if ((domain=2EindexOf("shop=2Eebay") > -1)=09||
- =09=09(domain=2EindexOf("shop=2Ebenl=2Eebay") > -1))
- =09{
- =09=09if ((path=2EindexOf("=3F=5Ffrom=3D") =3D=3D 0)=09||
- =09=09=09(path=2EindexOf("i=2Ehtml") > -1))
- =09=09{
- =09=09=09return true;
- =09=09}
- =09}
- =09
- =09// ebay=2Ese
- =09if ((domain=2EindexOf("search=2Eeim=2Eebay") > -1) &&
- =09=09((path=2EindexOf("=3Fkw=3D") > -1) || (path=2EindexOf("=3Fev=3D") > =
- -1)))
- =09{
- =09=09return true;
- =09}
- =09
- =09if ((domain=2EindexOf("search=2Eauction=2Eco=2Ekr") > -1 ) &&
- =09=09((path=2EindexOf("=3Fkeyword=3D") > -1)))
- =09{
- =09=09// would normally set these properties in the constructor or in an
- =09=09// overriding function but they're only required for this domain
- =09=09=20
- =09=09// links are in iframes
- =09=09this=2EprocessFrames =3D true;
- =09=09
- =09=09// must downsize verdicts for proper display
- =09=09this=2EelementAttribute =3D {
- =09=09=09width: "16",
- =09=09=09height: "16"
- =09=09};
- =09=09this=2EupdateImageStyle =3D {
- =09=09=09width: "16px",
- =09=09=09height: "16px"
- =09=09};
- =09=09
- =09=09return true;
- =09}
- =09// latin america ebay
- =09// listado=2Emercadolibre=2Ecom=2Exx or listado=2Emercadolibre=2Eco=2Ex=
- x
- =09// or listado=2Emercadolibre=2Exx or
- =09// category=2Emercadolibre=2Ecom=2Exx or listado=2Emercadolibre=2Exx/=
- category
- =09// lista=2Emercadolivre=2Ecom=2Exx or lista=2Emercadolivre=2Ecom=2Exx/c=
- ategory
- =09if ((domain=2EindexOf("www=2E") =3D=3D -1) &&
- =09=09((domain=2EindexOf("=2Emercadolibre=2E") > -1 ) ||
- =09=09 (domain=2EindexOf("=2Emercadolivre=2E") > -1 )))=20
- =09{
- =09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EeBaySearchEngine=2Eprototype=2EincludeLink =3D function(tag=
- )
- {
- =09var parentNode =3D null;
- =09var outHref =3D false;
- =09
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09=09return false;
- =09
- =09if ( tag=2Ehref=2EindexOf("=2Eebayrtm=2Ecom/clk=3F") > -1 )
- =09{
- =09=09if ( tag=2Etitle =3D=3D null || tag=2Etitle=2Elength < 0 )
- =09=09=09return false;
- =09=09=09=09=09
- =09=09outHref =3D searchshield=2EremoveHtmlTags(tag=2Etitle);
- =09=09if (outHref=2EindexOf(" ") =3D=3D -1)
- =09=09{=09// no spaces
- =09=09=09if (outHref=2EindexOf("=2E") > -1)
- =09=09=09{=09// at least one dot=20
- =09=09=09=09if (outHref=2EindexOf(this=2Esearch=2Euri=2Ehost) =3D=3D -1)
- =09=09=09=09{=09// no host
- =09=09=09=09=09if (outHref=2EtoLowerCase()=2EindexOf("ebay=2Ecom") =3D=3D =
- -1)
- =09=09=09=09=09{
- =09=09=09=09=09=09return outHref;
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09}
- =09=09}=09=09=09
- =09}
- =09// ebay=2Ese - Google ads
- =09parentNode =3D tag=2EparentNode;
- =09if (parentNode && (parentNode=2EclassName=2EtoLowerCase() =3D=3D "googl=
- e-ad-link"))
- =09{
- =09=09if (tag=2Ehref=2EindexOf("/aclk=3Fsa=3D") !=3D -1)
- =09=09{=09
- =09=09=09findStr =3D "&adurl=3Dhttp";
- =09=09=09var urlPos=09=3D tag=2Ehref=2EindexOf(findStr);
- =09=09=09if (urlPos !=3D -1)
- =09=09=09{
- =09=09=09=09urlPos +=3D 7; // puts it on the http
- =09=09=09=09outHref =3D tag=2Ehref=2Esubstring(urlPos);
- =09=09=09=09
- =09=09=09=09// extract any fragment text, shouldn't be unescaped
- =09=09=09=09var pound =3D outHref=2EindexOf("#");=09
- =09=09=09=09if (pound !=3D -1)
- =09=09=09=09{
- =09=09=09=09=09var fragment =3D outHref=2Esubstring(pound);
- =09=09=09=09=09outHref =3D outHref=2Esubstring(0, pound);
- =09=09=09=09=09outHref =3D unescape(outHref);
- =09=09=09=09=09outHref +=3D fragment;
- =09=09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls)=
- )
- =09=09=09=09=09=09return false;
- =09=09=09=09=09return outHref;
- =09=09=09=09}
- =09=09=09=09outHref =3D unescape(outHref);
- =09=09=09=09if (outHref=2EindexOf("=3F") =3D=3D -1)
- =09=09=09=09{
- =09=09=09=09=09var ampPos =3D outHref=2EindexOf("&");
- =09=09=09=09=09if (ampPos !=3D -1)
- =09=09=09=09=09=09outHref =3D outHref=2Esubstring(0, ampPos);
- =09=09=09=09}
- =09=09=09=09
- =09=09=09=09if (searchshield=2EFilterUrl(outHref, this=2Efilter=5Furls))
- =09=09=09=09=09return false;
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09}
- =09
- =09// auction=2Eco=2Ekr
- =09parentNode =3D tag=2EparentNode;
- =09if (parentNode && (parentNode=2EclassName=2EtoLowerCase() =3D=3D "link"=
- ))
- =09{
- =09=09if (tag=2Ehref=2EindexOf("adcr=2Enaver=2Ecom") > -1)
- =09=09{
- =09=09=09outHref =3D tag=2EinnerText;
- =09=09=09if ((outHref =3D=3D null) || (outHref=2Elength < 0))
- =09=09=09=09return false;
- =09=09=09=09
- =09=09=09return outHref;
- =09=09}
- =09}
- =09
- =09// latin america ebay
- =09if ( tag=2Ehref=2EtoLowerCase()=2EindexOf("clickcounter=3F") > -1 )
- =09{
- =09=09var spanElements =3D tag=2EgetElementsByTagName("span");
- =09=09if ((spanElements !=3D null)=09=09=09=09&&=20
- =09=09=09(spanElements=2Elength > 0))
- =09=09{
- =09=09=09if ( spanElements[0]=2EclassName=2EtoLowerCase() =3D=3D "mclics-u=
- rl" )
- =09=09=09{
- =09=09=09=09outHref =3D spanElements[0]=2EinnerHTML;
- =09=09=09=09if ( outHref =3D=3D null || outHref=2Elength < 0 )
- =09=09=09=09=09return false;
- =09=09=09=09outHref =3D searchshield=2EremoveHtmlTags(outHref);
- =09=09=09=09if (outHref=2EindexOf(" ") =3D=3D -1)
- =09=09=09=09{=09// no spaces
- =09=09=09=09=09if (outHref=2EindexOf("=2E") > -1)
- =09=09=09=09=09{=09// at least one dot=20
- =09=09=09=09=09=09if ((outHref=2EtoLowerCase()=2EindexOf("mercadolibre") =3D=
- =3D -1) &&=20
- =09=09=09=09=09=09=09(outHref=2EtoLowerCase()=2EindexOf("mercadolivre") =3D=
- =3D -1))=20
- =09=09=09=09=09=09{
- =09=09=09=09=09=09=09return outHref;
- =09=09=09=09=09=09}
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09}
- =09
- =09return false;
- };
- /////////////// EBAY SEARCH ENGINE ///////////////
- /////////////// DIGG SEARCH ENGINE ///////////////
- searchshield=2EDiggSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2Enew=5Flinks=09=3D false;
- };
- searchshield=2EDiggSearchEngine=2Eprototype =3D new searchshield=2ESearchE=
- ngine();
- searchshield=2EDiggSearchEngine=2Eprototype=2Econstructor =3D searchshield=
- =2EDiggSearchEngine;
- searchshield=2EDiggSearchEngine=2Eprototype=2Ename =3D "digg";
- searchshield=2EDiggSearchEngine=2Eprototype=2EvalidSearch =3D function(hre=
- f)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09
- =09if ((domain=2EindexOf("digg=2Ecom") > -1)=09&&
- =09=09(path=2EindexOf("/ad") =3D=3D -1))
- =09{
- =09=09return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2EDiggSearchEngine=2Eprototype=2EincludeLink =3D function(tag=
- )
- {
- =09var outHref =3D false;
- =09var findStr =3D "";
- =09
- =09if ((tag=2EparentNode) &&
- =09=09(tag=2EparentNode=2EclassName=2EtoLowerCase() =3D=3D "digg-count"))
- =09{
- =09=09return false;
- =09}
- =09
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09{
- =09=09if (tag=2EclassName && tag=2EclassName=2EindexOf('source') !=3D -1)
- =09=09{
- =09=09=09findStr =3D "/search=3Fq=3Dsite:";
- =09=09=09var urlPos =3D tag=2Ehref=2EindexOf(findStr);
- =09=09=09if (urlPos !=3D -1)
- =09=09=09{
- =09=09=09=09urlPos +=3D 15;
- =09=09=09=09outHref =3D tag=2Ehref=2Esubstring(urlPos);
- =09=09=09=09return outHref;
- =09=09=09}
- =09=09}
- =09}
- =09
- =09return false;
- };
- searchshield=2EDiggSearchEngine=2Eprototype=2EaddImage =3D function(node, =
- image, hidden)
- {
- =09// remove style that is set when alt image is applied
- =09this=2EaddAnchorStyle =3D {
- =09=09background: "none"
- =09};
- =09=09
- =09var parent =3D searchshield=2ESearchEngine=2Eprototype=2EaddImage;
- =09return parent=2Ecall(this, node, image, hidden);
- };
- /////////////// DIGG SEARCH ENGINE ///////////////
- /////////////// SLASHDOT SEARCH ENGINE ///////////////
- searchshield=2ESlashdotSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EshowCleanVerdicts =3D false;
- =09this=2Enew=5Flinks =3D false;
- =09this=2Etype =3D 'inline';
- };
- searchshield=2ESlashdotSearchEngine=2Eprototype =3D new searchshield=2ESea=
- rchEngine();
- searchshield=2ESlashdotSearchEngine=2Eprototype=2Econstructor =3D searchsh=
- ield=2ESlashdotSearchEngine;
- searchshield=2ESlashdotSearchEngine=2Eprototype=2Ename =3D "slashdot";
- searchshield=2ESlashdotSearchEngine=2Eprototype=2EvalidSearch =3D function=
- (href)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09// re stitch the uri path and query elements
- =09// to use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09
- =09if (domain=2EindexOf("slashdot=2Eorg") !=3D -1)
- =09{
- =09=09return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2ESlashdotSearchEngine=2Eprototype=2EincludeLink =3D function=
- (tag)
- {
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09=09return false;
- =09=09
- =09if ( tag=2Ehref=2EindexOf("mailto:") !=3D -1 )
- =09=09return false;
- =09=09
- =09if ( tag=2Ehref=2EindexOf("slashdot=2Eorg") !=3D -1 )
- =09=09return false;
- =09=09
- =09if (tag=2EparentNode && (tag=2EparentNode=2EtagName =3D=3D "DIV"))
- =09{
- =09=09if (tag=2EparentNode=2Eid=2EindexOf("text-") !=3D -1)
- =09=09{
- =09=09=09return tag=2Ehref;
- =09=09}
- =09}
- =09else if ( tag=2EparentNode && tag=2EparentNode=2EparentNode && tag=2Epa=
- rentNode=2EparentNode=2EtagName =3D=3D "DIV" )
- =09{
- =09=09if ( tag=2EparentNode=2EparentNode=2Eid=2EindexOf("text-") !=3D -1 )=
- =09=09{
- =09=09=09return tag=2Ehref;
- =09=09}
- =09}
- =09return false;
- };
- searchshield=2ESlashdotSearchEngine=2Eprototype=2EaddImage =3D function(no=
- de, image, hidden)
- {
- =09var doc=09=09=09=3D this=2Esearch=2Edoc;
- =09
- =09this=2Einit=5Finline=5Fratings(doc);
- =09this=2Eshow=5Finline=5Fratings(doc, node, image);
- };
- /////////////// SLASHDOT SEARCH ENGINE ///////////////
- /////////////// TWITTER SEARCH ENGINE ///////////////
- searchshield=2ETwitterSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EshowCleanVerdicts =3D false;
- =09this=2Enew=5Flinks =3D false;
- =09this=2Etype =3D 'inline';
- };
- searchshield=2ETwitterSearchEngine=2Eprototype =3D new searchshield=2ESear=
- chEngine();
- searchshield=2ETwitterSearchEngine=2Eprototype=2Econstructor =3D searchshi=
- eld=2ETwitterSearchEngine;
- searchshield=2ETwitterSearchEngine=2Eprototype=2Ename =3D "twitter";
- searchshield=2ETwitterSearchEngine=2Eprototype=2Etwitter=5Ffilter=5Furls =3D=
- ["twitpic=2Ecom", "twitterfeed=2Ecom", "twitter=2Epeoplebrowsr=2Ecom"];
- searchshield=2ETwitterSearchEngine=2Eprototype=2EvalidSearch =3D function(=
- href)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09
- =09var domain=3D uri=2Ehost;
- =09if (domain=2EindexOf("twitter=2Ecom") !=3D -1)
- =09{
- =09=09return true;
- =09}
- =09
- =09return false;
- };
- searchshield=2ETwitterSearchEngine=2Eprototype=2EincludeLink =3D function(=
- tag)
- {
- =09if (tag=2EclassName =3D=3D 'twitter-timeline-link')
- =09{
- =09=09// can't pass the tag's href if domain is t=2Eco cause then new post=
- s
- =09=09// will not get an immediate verdict even if it has a dangerous link=
- =09=09if (tag=2Ehref=2EindexOf('/t=2Eco/') !=3D -1)
- =09=09{
- =09=09=09// the tag's inner text may be truncated and end in the=20
- =09=09=09// unicode suspension character (i=2Ee=2E, =2E=2E=2E) and it cann=
- ot=20
- =09=09=09// be used=2E
- =09=09=09if (tag=2EinnerText=2EcharCodeAt(tag=2EinnerText=2Elength-1) =3D=3D=
- 8230)
- =09=09=09{
- =09=09=09=09// older posts may not always have data-expanded-url
- =09=09=09=09var destUrl =3D tag=2EgetAttribute('data-expanded-url');
- =09=09=09=09if (!!destUrl)
- =09=09=09=09=09return destUrl;
- =09=09=09=09var finalUrl =3D searchshield=2EavgCallFunc(document, 'GetFina=
- lUrl', tag=2Ehref);
- =09=09=09=09return finalUrl;
- =09=09=09}
- =09=09=09return searchshield=2EcheckUrl(tag=2EinnerText);
- =09=09}
- =09=09return tag=2Ehref;
- =09}
- =09return false;
- };
- searchshield=2ETwitterSearchEngine=2Eprototype=2EaddImage =3D function(nod=
- e, image, hidden)
- {
- =09var doc=09=09=09=3D this=2Esearch=2Edoc;
- =09=09
- =09this=2Einit=5Finline=5Fratings(doc);
- =09this=2Eshow=5Finline=5Fratings(doc, node, image);
- };
- /////////////// TWITTER SEARCH ENGINE ///////////////
- /////////////// GMAIL SEARCH ENGINE ///////////////
- searchshield=2EGMailSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EprocessFrames =3D true;
- =09this=2EshowCleanVerdicts=09=09=3D false;
- =09this=2Etype =3D 'inline';
- };
- searchshield=2EGMailSearchEngine=2Eprototype =3D new searchshield=2ESearch=
- Engine();
- searchshield=2EGMailSearchEngine=2Eprototype=2Econstructor =3D searchshiel=
- d=2EGMailSearchEngine;
- searchshield=2EGMailSearchEngine=2Eprototype=2Ename =3D "gmail";=09// the =
- name by which the search engine is known (always lowercase)
- searchshield=2EGMailSearchEngine=2Eprototype=2EvalidSearch =3D function(hr=
- ef)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09var domain=09=09=3D uri=2Ehost;
- =09
- =09// re stitch the uri path and query elements to
- =09// use existing logic
- =09var path =3D uri=2Epath + uri=2Edelimiter + uri=2Equery;
- =09if ((domain=2EindexOf("mail=2Egoogle=2E") !=3D -1) ||=20
- =09=09(domain=2EindexOf("gmail=2E") !=3D -1))
- =09{
- =09=09return true;
- =09}
- =09return false;
- };
- searchshield=2EGMailSearchEngine=2Eprototype=2EincludeLink =3D function(ta=
- g)
- {
- =09if (searchshield=2EDoesURLContain(tag=2Ehref, this=2Esearch=2Euri=2Ehos=
- t))
- =09=09return false;
- =09// don't mark anything but http://
- =09if (tag=2Ehref=2EindexOf("mailto") =3D=3D 0)
- =09=09return false;
- =09var parentDiv =3D searchshield=2EgetParentNodeByTagName("DIV", tag, "cl=
- assName");
- =09if ((parentDiv) &&
- =09=09((parentDiv=2EclassName =3D=3D "ii gt") || // mail message body
- =09=09 (parentDiv=2EclassName =3D=3D "mv") ||=09// top sponsored links
- =09=09 (parentDiv=2EclassName =3D=3D "vb") ||=09// right sponsored links
- =09=09 (parentDiv=2EclassName =3D=3D "im") ||=09// inside quotes
- =09=09 (parentDiv=2EclassName =3D=3D "gmail=5Fquote") ||=09// quote
- =09=09 (parentDiv=2EclassName =3D=3D "msg")=09// basic html mode
- =09=09 ))=09// right ads
- =09{
- =09=09// parse for any ads
- =09=09var newHref =3D this=2EparseAdUrl(tag=2Ehref);
- =09=09return newHref;
- =09}
- =09
- =09return false;
- };
- searchshield=2EGMailSearchEngine=2Eprototype=2EaddImage =3D function(node,=
- image, hidden)
- {
- =09var doc=09=09=09=3D this=2Esearch=2Edoc;
- =09=09
- =09this=2Einit=5Finline=5Fratings(doc);
- =09this=2Eshow=5Finline=5Fratings(doc, node, image);
- };
- searchshield=2EGMailSearchEngine=2Eprototype=2EparseAdUrl =3D function(hre=
- f)
- {
- =09if (!href)
- =09=09return href;
- =09// check for google ad
- =09var regex =3D "^http(s)=3F\:\/\/([a-zA-Z0-9]+)\=2Egooglesyndication\=2E=
- com=2E+\&adurl\=3D(=2E+)";
- =09var re =3D new RegExp(regex);
- =09var matches =3D href=2Ematch(re);
- =09if (matches && (matches=2Elength >=3D 4))
- =09{
- =09=09// else we want the fourth value
- =09=09var match =3D matches[3];
- =09=09if (match && (match=2Elength > 0))
- =09=09=09return match
- =09}
- =09return href;
- };
- /////////////// GMAIL SEARCH ENGINE ///////////////
- /////////////// FACEBOOK SEARCH ENGINE ///////////////
- searchshield=2EFacebookSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EshowCleanVerdicts =3D false;
- =09this=2Etype =3D 'inline';
- };
- searchshield=2EFacebookSearchEngine=2Eprototype =3D new searchshield=2ESea=
- rchEngine();
- searchshield=2EFacebookSearchEngine=2Eprototype=2Econstructor =3D searchsh=
- ield=2EFacebookSearchEngine;
- searchshield=2EFacebookSearchEngine=2Eprototype=2Ename =3D "facebook";=09/=
- / the name by which the search engine is known (always lowercase)
- searchshield=2EFacebookSearchEngine=2Eprototype=2EvalidSearch =3D function=
- (href)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09if (uri=2Ehost=2EindexOf("www=2Efacebook=2Ecom") !=3D -1)=20
- =09=09return true;
- =09return false;
- };
- searchshield=2EFacebookSearchEngine=2Eprototype=2EincludeLink =3D function=
- (tag)
- {
- =09if (!tag=2Ehref || (tag=2Ehref=2EindexOf('facebook=2Ecom') > -1) || (ta=
- g=2Ehref=2EindexOf('ak=2Efbcdn=2Enet') > -1))
- =09=09return false;
- =09
- =09return tag=2Ehref
- };
- searchshield=2EFacebookSearchEngine=2Eprototype=2EaddImage =3D function(no=
- de, image, hidden)
- {
- =09var doc=09=09=09=3D this=2Esearch=2Edoc;
- =09=09
- =09this=2Einit=5Finline=5Fratings(doc);
- =09this=2Eshow=5Finline=5Fratings(doc, node, image);
- };
- /////////////// FACEBOOK SEARCH ENGINE ///////////////
- /////////////// MYSPACE SEARCH ENGINE ///////////////
- searchshield=2EMySpaceSearchEngine =3D function(search)
- {
- =09searchshield=2ESearchEngine=2Ecall(this, search);
- =09this=2EshowCleanVerdicts =3D false;
- =09this=2Etype =3D 'inline';
- };
- searchshield=2EMySpaceSearchEngine=2Eprototype =3D new searchshield=2ESear=
- chEngine();
- searchshield=2EMySpaceSearchEngine=2Eprototype=2Econstructor =3D searchshi=
- eld=2EMySpaceSearchEngine;
- searchshield=2EMySpaceSearchEngine=2Eprototype=2Ename =3D "myspace";=09// =
- the name by which the search engine is known (always lowercase)
- searchshield=2EMySpaceSearchEngine=2Eprototype=2EvalidSearch =3D function(=
- href)
- {
- =09var uri;
- =09if (typeof(this=2Esearch) =3D=3D=3D 'undefined' || null =3D=3D=3D this=2E=
- search)
- =09=09uri =3D searchshield=2EparseLink(href);
- =09else
- =09=09uri =3D this=2Esearch=2Euri;
- =09if(!uri || !uri=2Ehost)
- =09=09return false;
- =09if (uri=2Ehost=2EindexOf("www=2Emyspace=2Ecom") !=3D -1)=20
- =09=09return true;
- =09return false;
- };
- searchshield=2EMySpaceSearchEngine=2Eprototype=2EincludeLink =3D function(=
- tag)
- {
- =09// related domains do not get verdicts
- =09if (/myspace/=2Etest(tag=2Ehostname) || /myspace/=2Etest(tag=2Ehref))
- =09=09return false;
- =09if (/msplinks\=2Ecom/i=2Etest(tag=2Ehref))
- =09=09return searchshield=2EcheckUrl(tag=2EinnerText);
- =09
- =09return tag=2Ehref;
- };
- searchshield=2EMySpaceSearchEngine=2Eprototype=2EaddImage =3D function(nod=
- e, image, hidden)
- {
- =09var doc=09=09=09=3D this=2Esearch=2Edoc;
- =09=09
- =09this=2Einit=5Finline=5Fratings(doc);
- =09this=2Eshow=5Finline=5Fratings(doc, node, image);
- };
- /////////////// MYSPACE SEARCH ENGINE ///////////////
- /////////////// AVG TOOLBAR REPORTING ///////////////
- var avgreport =3D {
- =09BLOCK=5FSEVERITY: 3,
- =09scanResult: function (doc, url, foundUrl, ip) {
- =09=09// report scan end only if surf enabled
- =09=09if ('1' !=3D searchshield=2EavgCallFunc(doc, 'GetSurfEnabled'))
- =09=09=09return;
- =09=09
- =09=09// for now native is handling the interstitial=09
- =09=09var results =3D searchshield=2EavgCallFunc(doc, 'MalsiteCheck', url)=
- ;
- =09=09if ( results =3D=3D null )
- =09=09=09return;
- =09=09
- =09=09var parts =3D results=2Esplit('::');
- =09=09
- =09=09// need at least severity
- =09=09if (parts =3D=3D null)
- =09=09=09return;
- =09=09if (!ip)
- =09=09=09ip =3D "";
- =09=09=09
- =09=09// use a block severity if foundUrl is given
- =09=09var severity =3D !!foundUrl =3F avgreport=2EBLOCK=5FSEVERITY : parse=
- Int(parts[0], 10);
- =09=09var category =3D "";
- =09=09var threat=09 =3D "";
- =09=09// fill in the category and threat if something was found
- =09=09if (severity > 0)
- =09=09{
- =09=09=09category =3D parts[2];
- =09=09=09threat=09 =3D parts[4];
- =09=09}
- //=09=09else
- //=09=09=09return;
- =09=09
- =09=09var scan=5Fresult =3D searchshield=2EavgCallFunc(doc, 'ReportScanRes=
- ult', url, url, threat, category, ip, severity);
- =09=09var scan=5Fend =3D avgreport=2EscanEnd(doc, url);
- =09=09
- =09=09return (scan=5Fresult && scan=5Fend);
- =09},
- =09scanEnd: function (doc, url) {
- =09=09return searchshield=2EavgCallFunc(doc, 'ReportScanEnd', url);
- =09},
- =09GetInterstitialIP: function (interstitial) {
- =09=09// simple regex to pull the IP address
- =09=09var regex =3D /(([1-9][0-9]{0,2})|0)\=2E(([1-9][0-9]{0,2})|0)\=2E(([=
- 1-9][0-9]{0,2})|0)\=2E(([1-9][0-9]{0,2})|0)/;
- =09=09var match =3D regex=2Eexec(interstitial);
- =09=09if (!match)
- =09=09=09return '';
- =09=09return match[0];
- =09}
- }
- /////////////// AVG TOOLBAR REPORTING ///////////////
- /////////////// FLYOVERS ///////////////
- var avglsflyover =3D {
- =09count: 0,
- =09poppedUp: false,
- =09poppedElement: null,
- =09reset: function () {
- =09=09avglsflyover=2Ecount =3D 0;
- =09=09avglsflyover=2EpoppedUp =3D false;
- =09=09avglsflyover=2EpoppedElement =3D null;
- =09},
- =09popup: function (event, hash, search, flyover) {
- =09=09if (!event)
- =09=09=09event =3D window=2Eevent;
- =09=09var div =3D document=2EgetElementById("XPLSS=5FFlyover");
- =09=09if (div =3D=3D null)
- =09=09=09return;
- =09=09// establish target element and get its containing document object
- =09=09// in case verdict is inside a frame
- =09=09var eventTarget =3D event=2EsrcElement;
- =09=09var frameDoc =3D eventTarget=2EownerDocument;
- =09=09// if the element is the clock, don't pop over it
- =09=09if ((eventTarget=2Esrc !=3D null) && (eventTarget=2Esrc=2EindexOf("c=
- lock=2Egif") !=3D -1))
- =09=09=09return;
- =09=09
- =09=09// save the element we popped over
- =09=09avglsflyover=2EpoppedElement =3D eventTarget;
- =09=09// if no flyover get it
- =09=09if ((flyover =3D=3D null) || (flyover =3D=3D ""))
- =09=09{
- =09=09=09flyover =3D searchshield=2EavgCallFunc(frameDoc, 'BuildFlyover', =
- hash);
- =09=09=09if (!flyover)
- =09=09=09=09return;
- =09=09=09// cleanup flyover, replace any new lines
- =09=09=09flyover =3D flyover=2Ereplace(/\r/g, "");
- =09=09=09flyover =3D flyover=2Ereplace(/\n/g, "");
- =09=09=09// escape any single quotes
- =09=09=09flyover =3D flyover=2Ereplace(/'/g, "'");
- =09=09}
- =09=09// set the html in the layer
- =09=09div=2EinnerHTML =3D flyover;
- =09=09// needed to prevent the flyover from hiding inadvertantly in IE7
- =09=09if (searchshield=2EdocMode =3D=3D 7) {
- =09=09=09div=2Estyle=2EbackgroundColor =3D "#fff";
- =09=09}
- =09=09// there is an unwanted text node that causes vertical misalignment =
- of flyover
- =09=09if (div=2EfirstChild=2EnodeType =3D=3D 3)
- =09=09=09div=2EremoveChild(div=2EfirstChild);
- =09=09
- =09=09avglsflyover=2EpoppedUp =3D true;
- =09=09// reset display count
- =09=09avglsflyover=2Ecount =3D 0;
- =09=09avglsflyover=2Eposition();
- =09},
- =09hide: function (event) {
- =09=09var frameDoc =3D document || top=2Edocument;
- =09=09var div =3D frameDoc=2EgetElementById("XPLSS=5FFlyover");
- =09=09if ((div =3D=3D null) || (div=2Estyle =3D=3D null) || (div=2Estyle=2E=
- visibility =3D=3D "hidden"))
- =09=09=09return;
- =09=09var trans=5Fdiv =3D frameDoc=2EgetElementById("XPLSS=5FTrans");
- =09=09if ((trans=5Fdiv =3D=3D null) || (trans=5Fdiv=2Estyle =3D=3D null) |=
- | (trans=5Fdiv=2Estyle=2Evisibility =3D=3D "hidden"))
- =09=09=09return;
- =09=09// scroll and keydown events will pass a null event by design
- =09=09// toElement will be null when mousing out of frameelement containin=
- g a verdict
- =09=09if (event =3D=3D null || event=2EtoElement =3D=3D null)
- =09=09{
- =09=09=09return;
- =09=09}
- =09=09if (trans=5Fdiv=2Econtains(event=2EtoElement) || div=2Econtains(even=
- t=2EtoElement))
- =09=09=09return;
- =09=09// if the toElement is a cooresponding alt image then don't hide
- =09=09// use try/catch because toElement will be null when mousing out of =
- frame
- =09=09try {
- =09=09=09if (!!event=2EtoElement=2Eid && !!event=2EsrcElement=2Eid)
- =09=09=09{
- =09=09=09=09if (event=2EtoElement=2Eid=2EindexOf(event=2EsrcElement=2Eid=2E=
- substring(0,event=2EsrcElement=2Eid=2Elength-2)) =3D=3D 0)
- =09=09=09=09=09return;
- =09=09
- =09=09=09=09if (event=2EsrcElement=2Eid =3D=3D 'XPLSS=5FTrans' && /XPLSS=5F=
- \d+VU\d/=2Etest(event=2EtoElement=2Eid))
- =09=09=09=09=09return;
- =09=09=09}
- =09=09}
- =09=09catch(err){}
- =09=09// hide and move somewhere off screen (negative offsets)
- =09=09div=2Estyle=2Evisibility =3D "hidden";
- =09=09div=2Estyle=2Eleft =3D "-2100px";
- =09=09div=2Estyle=2Etop =3D "-2100px";
- =09=09trans=5Fdiv=2Estyle=2Evisibility =3D "hidden";
- =09=09trans=5Fdiv=2Estyle=2Eleft =3D "-2100px";
- =09=09trans=5Fdiv=2Estyle=2Etop =3D "-2100px";
- =09=09return true;
- =09},
- =09position: function () {
- =09=09if (!avglsflyover=2EpoppedUp || (avglsflyover=2EpoppedElement =3D=3D=
- null))
- =09=09=09return;
- =09=09var flyover =3D document=2EgetElementById("XPLSS=5FFlyover");
- =09=09if (flyover =3D=3D null)
- =09=09=09return;
- =09=09// relative position of flyover in relation to icon
- =09=09var locateX =3D 0; // 0=3Dleft, 1=3Dright
- =09=09var locateY =3D 0; // 0=3Dabove, 1=3Dbelow, 2=3Dbeside icon
- =09
- =09=09// get window sizes
- =09=09var winSize=09=09=3D searchshield=2EviewPortSize();
- =09=09var windowX=09=09=3D winSize[0];
- =09=09var windowY=09=09=3D winSize[1];
- =09=09// get the exact size of the flyover
- =09=09var flyoverSize=09 =3D searchshield=2EelementSize(flyover);
- =09=09var flyoverX=09 =3D flyoverSize[0];
- =09=09var flyoverY=09 =3D flyoverSize[1];
- =09=09var verdictWidth =3D 0;
- =09=09if (avglsflyover=2EpoppedElement && avglsflyover=2EpoppedElement=2Ew=
- idth)
- =09=09=09verdictWidth =3D avglsflyover=2EpoppedElement=2Ewidth;
- =09=09
- =09=09// get the bounding rect for image(s)
- =09=09var imgRect =3D searchshield=2EGetFullBoundingRect(avglsflyover=2Epo=
- ppedElement);
- =09=09// half width/height of element bounding rect
- =09=09var halfX =3D (imgRect=2Eright - imgRect=2Eleft) / 2;
- =09=09var halfY =3D (imgRect=2Ebottom- imgRect=2Etop) / 2;
- =09=09// element the mouse is over, get the center position
- =09=09var posX =3D searchshield=2EoffsetLeft(avglsflyover=2EpoppedElement)=
- + halfX;
- =09=09var posY =3D searchshield=2EoffsetTop(avglsflyover=2EpoppedElement) =
- + halfY;
- =09=09// if a verdict is inside a frame must get offsets for the frame ele=
- ment
- =09=09var docFrames =3D document=2Eframes;
- =09=09if (docFrames)
- =09=09{
- =09=09=09for (var i=3D0; i < docFrames=2Elength; i++)
- =09=09=09{
- =09=09=09=09try {
- =09=09=09=09=09var frameElem =3D docFrames[i]=2EframeElement;
- =09=09=09=09=09if (frameElem=2EcontentWindow=2Edocument=2EgetElementById(a=
- vglsflyover=2EpoppedElement=2Eid))
- =09=09=09=09=09{
- =09=09=09=09=09=09posX +=3D searchshield=2EoffsetLeft(frameElem);
- =09=09=09=09=09=09posY +=3D searchshield=2EoffsetTop(frameElem);
- =09=09=09=09=09=09break;
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09=09catch(frmErr){}
- =09=09=09}
- =09=09}
- =09=09var transXOffset =3D 0;
- =09=09if (imgRect=2Emid =3D=3D undefined)
- =09=09=09transXOffset =3D -1 * halfX;
- =09=09else
- =09=09=09transXOffset =3D ((imgRect=2Eright + imgRect=2Eleft) / 2) - imgRe=
- ct=2Emid;
- =09=09
- =09=09// normalize pos to 0 -- get amount of scrolling in browser window
- =09=09var scroll=09=09 =3D searchshield=2EscrollSize();
- =09=09var pageOffsetX=09 =3D scroll[0];
- =09=09var pageOffsetY=09 =3D scroll[1];
- =09=09posX -=3D pageOffsetX;
- =09=09posY -=3D pageOffsetY;
- =09=09// setup the offsets
- =09=09var offsetX =3D posX;
- =09=09var offsetY =3D posY;
- =09=09// calc where to display on page
- =09=09if ((windowX - posX) > posX)
- =09=09{
- =09=09=09// right
- =09=09=09offsetX +=3D halfX;
- =09=09=09locateX =3D 1;
- =09=09}
- =09=09else
- =09=09{
- =09=09=09//left
- =09=09=09offsetX -=3D (flyoverX + halfX);
- =09=09}
- =09=09if ((windowY - posY) > posY)
- =09=09{
- =09=09=09// below
- =09=09=09if (posY < (windowY/4))
- =09=09=09{
- =09=09=09=09offsetY -=3D halfY;
- =09=09=09=09locateY =3D 1;
- =09=09=09}
- =09=09=09else
- =09=09=09{
- =09=09=09=09offsetY -=3D (flyoverY / 2);
- =09=09=09=09locateY =3D 2;
- =09=09=09}
- =09=09}
- =09=09else
- =09=09{
- =09=09=09// above
- =09=09=09if ((windowY - posY) < (windowY/4))
- =09=09=09{
- =09=09=09=09offsetY -=3D (flyoverY - halfY);
- =09=09=09}
- =09=09=09else
- =09=09=09{
- =09=09=09=09offsetY -=3D (flyoverY / 2);
- =09=09=09=09locateY =3D 2;
- =09=09=09}
- =09=09}
- =09=09// make sure we aren't off the screen
- =09=09if (offsetY < 0)
- =09=09=09offsetY =3D 0;
- =09=09if ((offsetY + flyoverY) > windowY)
- =09=09=09offsetY =3D windowY - flyoverY;
- =09=09// add page offsets back
- =09=09offsetX +=3D pageOffsetX;
- =09=09offsetY +=3D pageOffsetY;
- =09=09posX +=3D pageOffsetX;
- =09=09posY +=3D pageOffsetY;
- =09=09var paddedOffsetX =3D 0; //provide space between icon and flyover
- =09=09var padX =3D 3;
- =09=09if (locateX =3D=3D 0)
- =09=09=09paddedOffsetX =3D offsetX - padX;
- =09=09else
- =09=09=09paddedOffsetX =3D offsetX + padX;
- =09=09// set where to put the flyover
- =09=09flyover=2Estyle=2Etop =3D offsetY + "px";
- =09=09flyover=2Estyle=2Eleft =3D paddedOffsetX + "px";
- =09=09// set where to put the transparent layer
- =09=09var trans =3D document=2EgetElementById("XPLSS=5FTrans");
- =09=09if (trans !=3D null)
- =09=09{
- =09=09=09var trans=5Fleft =3D 0;
- =09=09=09var trans=5Ftop =3D 0;
- =09=09=09var trans=5Fwidth=3D 0;
- =09=09=09var trans=5Fheight =3D 0;
- =09=09=09// transparent layer should overlap verdict image
- =09=09=09if (locateX =3D=3D 0)
- =09=09=09=09trans=5Fleft =3D posX - flyoverX - halfX; // left=20
- =09=09=09else
- =09=09=09=09trans=5Fleft =3D posX - transXOffset - verdictWidth; // right
- =09=09=09trans=2Estyle=2Eleft=09=3D trans=5Fleft + "px";
- =09=09=09trans=2Estyle=2Etop=09=09=3D offsetY + "px";
- =09=09=09trans=2Estyle=2Ewidth=09=3D flyoverX + verdictWidth + "px";
- =09=09=09trans=2Estyle=2Eheight=09=3D flyoverY + "px";
- =09=09}
- =09=09avglsflyover=2Edisplay();
- =09},
- =09display: function () {
- =09=09avglsflyover=2Ecount++;
- =09=09if (avglsflyover=2Ecount =3D=3D 1)
- =09=09{
- =09=09=09var flyover =3D document=2EgetElementById("XPLSS=5FFlyover");
- =09=09=09if (flyover =3D=3D null)
- =09=09=09=09return;
- =09=09=09// show the flyover, must use a little count to tell, crazy stuff=
- =09=09=09flyover=2Estyle=2Evisibility =3D "visible";
- =09=09=09flyover=2Eonmouseout =3D function(){
- =09=09=09=09avglsflyover=2Ehide(event);
- =09=09=09};
- =09=09=09// show the transparent layer
- =09=09=09var trans=5Fdiv =3D document=2EgetElementById("XPLSS=5FTrans");
- =09=09=09if (trans=5Fdiv =3D=3D null)
- =09=09=09=09return;
- =09=09=09trans=5Fdiv=2Estyle=2Evisibility =3D "visible";
- =09=09=09trans=5Fdiv=2Eonmouseout =3D function(){
- =09=09=09=09avglsflyover=2Ehide(event);
- =09=09=09};
- =09=09=09avglsflyover=2EpoppedUp =3D false;
- =09=09}
- =09},
- =09show: function () {
- =09=09var div =3D document=2EgetElementById("XPLSS=5FFlyover");
- =09=09if (div =3D=3D null)
- =09=09=09return;
- =09=09div=2Estyle=2Evisibility =3D "visible";
- =09=09var trans=5Fdiv =3D document=2EgetElementById("XPLSS=5FTrans");
- =09=09if (trans=5Fdiv =3D=3D null)
- =09=09=09return;
- =09=09trans=5Fdiv=2Estyle=2Evisible =3D "visible";
- =09}
- };
- var avglsinlineflyover =3D {
- =09build: function (riskCategory, riskName, bgColor, borderColor) {
- =09=09var html =3D '';
- =09=09html +=3D '<div class=3D"avgILFO=5Fhead"><div></div></div><div class=
- =3D"avgILFO=5Fcontent">';
- =09=09html +=3D '<img src=3Dlinkscanner://LS=5FLogo=5FResults=2Egif /><br =
- />';
- =09=09html +=3D riskCategory + '<br />';
- =09=09html +=3D riskName + '<br />';
- =09=09html +=3D '</div><div class=3D"avgILFO=5Ffoot"><div></div></div>';
- =09=09return html;
- =09},
- =09popup: function (event, flyover, nSeverity, blUrl) {
- =09=09//set verdict info
- =09=09var div =3D document=2EgetElementById('XPLSS=5FInlineFlyover');
- =09=09if (div =3D=3D null)
- =09=09=09return;
- =09=09
- =09=09// blUrl is an object for a blacklisted short url
- =09=09// when it is passed get the final url=20
- =09=09if (blUrl !=3D undefined)
- =09=09{
- =09=09=09var finalUrl =3D searchshield=2EavgCallFunc(document, 'GetFinalUr=
- l', blUrl=2EsUrl);
- =09=09=09var riskUrl =3D blUrl=2EsUrl;
- =09=09=09if ((finalUrl) && (searchshield=2EFilterUrl(finalUrl, xplSearch=2E=
- engine=2Eshortened=5Furls)))
- =09=09=09=09finalUrl =3D avglsinlineflyover=2EgetUrlFromQueryString(finalU=
- rl);
- =09=09=09var riskName =3D blUrl=2EriskNameLabel + finalUrl;
- =09=09=09flyover =3D avglsinlineflyover=2Ebuild(blUrl=2EriskCategory, risk=
- Name, blUrl=2EbgColor, blUrl=2EborderColor);
- =09=09}
- =09=09div=2EinnerHTML =3D flyover;
- =09=09div=2Estyle=2Ewidth =3D "auto"; //reset width
- =09=09div=2Estyle=2Eposition =3D "absolute";
- =09=09if (searchshield=2EquirksMode || searchshield=2EdocMode <=3D 7)
- =09=09{
- =09=09=09var className =3D xplSearch=2Eengine=2Einline=2Ecolor=2Eclassname=
- [nSeverity];
- =09=09=09var imgBase =3D "linkscanner://" + className + "=5Finline=5Fborde=
- r=5F";
- =09=09=09var divWidth =3D searchshield=2EelementSize(div)[0];
- =09=09=09//round up to nearest 10 to avoid intentional wrapping in div
- =09=09=09var flyoverWidth =3D divWidth + (10 - Math=2Eceil(10*((divWidth/1=
- 0) - Math=2Efloor(divWidth/10))));
- =09=09=09var ilfoDivs =3D div=2EgetElementsByTagName("div");
- =09=09=09if (ilfoDivs && ilfoDivs=2Elength =3D=3D 5)
- =09=09=09{
- =09=09=09=09//div=2Estyle=2EfontSize =3D "10px";
- =09=09=09=09div=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "tl=2Epng=
- )";
- =09=09=09=09div=2Estyle=2EbackgroundPosition =3D "0 0";
- =09=09=09=09div=2Estyle=2EbackgroundRepeat =3D "no-repeat";
- =09=09=09=09div=2Estyle=2Ewidth =3D flyoverWidth + "px";
- =09=09=09=09div=2Estyle=2EzIndex =3D "9999";
- =09=09=09
- =09=09=09=09// avgILFO=5Fhead
- =09=09=09=09ilfoDivs[0]=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "=
- tr=2Epng)";
- =09=09=09=09ilfoDivs[0]=2Estyle=2EbackgroundPosition =3D "top right";
- =09=09=09=09ilfoDivs[0]=2Estyle=2EbackgroundRepeat =3D "no-repeat";
- =09=09=09=09ilfoDivs[0]=2Estyle=2Ewidth =3D flyoverWidth + "px";
- =09=09=09=09ilfoDivs[0]=2Estyle=2Eheight =3D "5px";
- =09=09=09=09// avgILFO=5Fhead div
- =09=09=09=09ilfoDivs[1]=2Estyle=2Eheight =3D "5px";
- =09=09=09
- =09=09=09=09// avgILFO=5Fcontent
- =09=09=09=09ilfoDivs[2]=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "=
- r=2Epng)";
- =09=09=09=09ilfoDivs[2]=2Estyle=2EbackgroundPosition =3D "top right";
- =09=09=09=09ilfoDivs[2]=2Estyle=2EbackgroundRepeat =3D "repeat-y";
- =09=09=09=09ilfoDivs[2]=2Estyle=2EfontSize =3D "10px";
- =09=09=09=09ilfoDivs[2]=2Estyle=2Ecolor =3D "black";
- =09=09=09=09ilfoDivs[2]=2Estyle=2Epadding =3D "0px 10px";
- =09=09=09=09ilfoDivs[2]=2Estyle=2EtextAlign =3D "left";
- =09=09=09=09ilfoDivs[2]=2Estyle=2EwordWrap =3D "break-word";
- =09=09=09=09ilfoDivs[2]=2Estyle=2ElineHeight =3D "130%";
- =09=09=09=09// avgILFO=5Ffoot
- =09=09=09=09ilfoDivs[3]=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "=
- bl=2Epng)";
- =09=09=09=09ilfoDivs[3]=2Estyle=2EbackgroundPosition =3D "bottom left";
- =09=09=09=09ilfoDivs[3]=2Estyle=2EbackgroundRepeat =3D "no-repeat";
- =09=09=09=09ilfoDivs[3]=2Estyle=2Eheight =3D "5px";
- =09=09=09
- =09=09=09=09// avgILFO=5Ffoot div
- =09=09=09=09ilfoDivs[4]=2Estyle=2EbackgroundImage =3D "url(" + imgBase + "=
- br=2Epng)";
- =09=09=09=09ilfoDivs[4]=2Estyle=2EbackgroundPosition =3D "bottom right";
- =09=09=09=09ilfoDivs[4]=2Estyle=2EbackgroundRepeat =3D "no-repeat";
- =09=09=09=09ilfoDivs[4]=2Estyle=2Ewidth =3D flyoverWidth + "px";
- =09=09=09=09ilfoDivs[4]=2Estyle=2Eheight =3D "5px";
- =09=09=09}
- =09=09=09else
- =09=09=09{
- =09=09=09=09div=2Estyle=2EfontSize =3D "10px";
- =09=09=09=09div=2Estyle=2EbackgroundColor =3D xplSearch=2Eengine=2Einline=2E=
- color=2Ebackground[nSeverity];
- =09=09=09=09div=2Estyle=2Eborder =3D xplSearch=2Eengine=2Einline=2Ecolor=2E=
- border[nSeverity] + " solid 3px";
- =09=09=09=09div=2Estyle=2Epadding =3D "3px 8px";
- =09=09=09}
- =09=09}
- =09=09else
- =09=09{
- =09=09=09// apply updated styles for new flyover content
- =09=09=09var sheets =3D document=2EstyleSheets;
- =09=09=09for (var i=3D0; i < sheets=2Elength; i++)
- =09=09=09{
- =09=09=09=09if (sheets[i]=2Eid && sheets[i]=2Eid =3D=3D "avgILFOStyle")
- =09=09=09=09{
- =09=09=09=09=09var avgILFOStyle =3D sheets[i];
- =09=09=09=09=09break;
- =09=09=09=09}
- =09=09=09}
- =09=09=09if (typeof(avgILFOStyle) !=3D=3D "undefined")
- =09=09=09{
- =09=09=09=09var className =3D xplSearch=2Eengine=2Einline=2Ecolor=2Eclassn=
- ame[nSeverity];
- =09=09=09=09var divWidth =3D searchshield=2EelementSize(div)[0];
- =09=09=09=09//round up to nearest 10 to avoid intentional wrapping in div
- =09=09=09=09var flyoverWidth =3D divWidth + (10 - Math=2Eceil(10*((divWidt=
- h/10) - Math=2Efloor(divWidth/10))));
- =09=09=09=09var rules =3D avgILFOStyle=2Erules;
- =09=09=09=09for (var i=3D0; i < rules=2Elength; i++)
- =09=09=09=09{
- =09=09=09=09=09var bgImg =3D rules[i]=2Estyle=2EbackgroundImage;
- =09=09=09=09=09var selText =3D rules[i]=2EselectorText=2EtoLowerCase();
- =09=09=09=09=09if (bgImg)
- =09=09=09=09=09{
- =09=09=09=09=09=09var bgImgStyle =3D bgImg=2Ereplace(/default/, className)=
- ;
- =09=09=09=09=09=09rules[i]=2Estyle=2EbackgroundImage =3D bgImgStyle;
- =09=09=09=09=09}
- =09=09=09=09=09if (((selText =3D=3D "=2Eavgilfo") ||
- =09=09=09=09=09=09(selText =3D=3D "=2Eavgilfo=5Fhead") ||
- =09=09=09=09=09=09(selText =3D=3D "=2Eavgilfo=5Ffoot div")) &&
- =09=09=09=09=09=09(rules[i]=2Estyle=2Ewidth) && (rules[i]=2Estyle=2Ewidth =
- =3D=3D "0px"))
- =09=09=09=09=09{
- =09=09=09=09=09=09rules[i]=2Estyle=2Ewidth =3D (flyoverWidth) + "px";
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09=09if (!event)
- =09=09=09event =3D window=2Eevent;
- =09=09=09
- =09=09var eventTarget =3D event=2EsrcElement;
- =09=09avglsinlineflyover=2Eposition(eventTarget);
- =09},
- =09hide: function (event) {
- =09=09if (!event)
- =09=09=09event =3D window=2Eevent;
- =09=09=09
- =09=09var div =3D document=2EgetElementById("XPLSS=5FInlineFlyover");
- =09=09if (div =3D=3D null)
- =09=09=09return;
- =09=09=09
- =09=09div=2Estyle=2Evisibility =3D "hidden";=09//invisible
- =09=09div=2Estyle=2Eleft =3D "-5000px";
- =09=09if (!searchshield=2EquirksMode)
- =09=09{
- =09=09=09// reset flyover styles
- =09=09=09var sheets =3D document=2EstyleSheets;
- =09=09=09for (var i=3D0; i < sheets=2Elength; i++)
- =09=09=09{
- =09=09=09=09if (sheets[i]=2Eid && sheets[i]=2Eid =3D=3D "avgILFOStyle")
- =09=09=09=09{
- =09=09=09=09=09var avgILFOStyle =3D sheets[i];
- =09=09=09=09=09break;
- =09=09=09=09}
- =09=09=09}
- =09=09=09if (typeof(avgILFOStyle) !=3D=3D "undefined")
- =09=09=09{
- =09=09=09=09var rules =3D avgILFOStyle=2Erules;
- =09=09=09=09for (var i=3D0; i < rules=2Elength; i++)
- =09=09=09=09{
- =09=09=09=09=09var bgImg =3D rules[i]=2Estyle=2EbackgroundImage;
- =09=09=09=09=09var selText =3D rules[i]=2EselectorText=2EtoLowerCase();
- =09=09=09=09=09if (bgImg)
- =09=09=09=09=09{=20
- =09=09=09=09=09=09var bgImgStyle =3D bgImg=2Ereplace(/:\/\/([a-z]+)=5F/i, =
- '://default=5F');
- =09=09=09=09=09=09rules[i]=2Estyle=2EbackgroundImage =3D bgImgStyle;
- =09=09=09=09=09}
- =09=09=09=09=09if (((selText =3D=3D "=2Eavgilfo") ||
- =09=09=09=09=09=09(selText =3D=3D "=2Eavgilfo=5Fhead") ||
- =09=09=09=09=09=09(selText =3D=3D "=2Eavgilfo=5Ffoot div")) &&
- =09=09=09=09=09=09(rules[i]=2Estyle=2Ewidth))
- =09=09=09=09=09{
- =09=09=09=09=09=09rules[i]=2Estyle=2Ewidth =3D "0px";
- =09=09=09=09=09}
- =09=09=09=09}
- =09=09=09}
- =09=09}
- =09},
- =09position: function (imageElem) {
- =09=09var flyover =3D document=2EgetElementById('XPLSS=5FInlineFlyover');
- =09=09if (flyover =3D=3D null)
- =09=09=09return;
- =09=09=09
- =09=09// relative position of flyover in relation to icon
- =09=09var locateX =3D 0; // 0=3Dleft, 1=3Dright
- =09=09var locateY =3D 0; // 0=3Dabove, 1=3Dbelow, 2=3Dbeside icon
- =09=09
- =09=09
- =09=09
- =09=09// get window sizes
- =09=09var winSize=09 =3D searchshield=2EviewPortSize();
- =09=09var windowX=09 =3D winSize[0];
- =09=09var windowY=09 =3D winSize[1];
- =09=09// Must know if there is a horizontal scroll bar for Firefox
- =09=09// for proper flyover positioning near bottom edge
- =09=09var scrollYWidth=09 =3D winSize[2];
- =09=09var scrollBarX=09 =3D winSize[2] > 0 =3F true : false;
- =09=09// get the exact size of the flyover
- =09=09var flyoverSize=09 =3D searchshield=2EelementSize(flyover);
- =09=09var flyoverX=09 =3D flyoverSize[0];
- =09=09var flyoverY=09 =3D flyoverSize[1];
- =09=09
- =09=09flyover=2Estyle=2Ewidth =3D flyoverX + "px";
- =09=09
- =09=09// get the bounding rect for image(s)
- =09=09var imgRect =3D imageElem=2EgetBoundingClientRect();
- =09=09// half width/height (center) of element bounding rect
- =09=09var halfX =3D (imgRect=2Eright - imgRect=2Eleft) / 2;
- =09=09var halfY =3D (imgRect=2Ebottom- imgRect=2Etop) / 2;
- =09=09// element the mouse is over, get the center position
- =09=09var posX =3D searchshield=2EoffsetLeft(imageElem) + halfX;
- =09=09var posY =3D searchshield=2EoffsetTop(imageElem) + halfY;
- =09=09
- =09=09var pageOffsetX =3D 0;
- =09=09var pageOffsetY =3D 0;
- =09=09var hasParentFrame =3D false;
- =09=09// normalize pos to 0 -- get amount of scrolling in browser window
- =09=09var scroll=09=09=3D searchshield=2EscrollSize(imageElem);
- =09=09pageOffsetX=09=09=3D scroll[0];
- =09=09pageOffsetY=09=09=3D scroll[1];
- =09=09hasParentFrame=09=3D scroll[2];
- =09=09
- =09=09posX -=3D pageOffsetX;
- =09=09posY -=3D pageOffsetY;
- =09=09//compensate for Firefox 3
- =09=09if (posX < imgRect=2Eleft)
- =09=09=09posX =3D imgRect=2Eleft+halfX;
- =09=09// setup the offsets
- =09=09var offsetX =3D posX;
- =09=09var offsetY =3D posY;
- =09=09// calc where to display on page
- =09=09if ((windowX - posX) > posX)
- =09=09{
- =09=09=09// right
- =09=09=09//offsetX +=3D halfX;
- =09=09=09offsetX =3D imgRect=2Eright + 3;
- =09=09=09locateX =3D 1;
- =09=09}
- =09=09else
- =09=09{
- =09=09=09//left
- =09=09=09//offsetX -=3D (flyoverX + halfX);
- =09=09=09offsetX =3D imgRect=2Eleft - flyoverX - 3;
- =09=09}
- =09=09if ((windowY - posY) > posY)
- =09=09{
- =09=09=09// below
- =09=09=09if (posY < (windowY/4))
- =09=09=09{
- =09=09=09=09offsetY -=3D halfY;
- =09=09=09=09locateY =3D 1;
- =09=09=09}
- =09=09=09else
- =09=09=09{
- =09=09=09=09offsetY -=3D (flyoverY / 2) - halfY;
- =09=09=09=09locateY =3D 2;
- =09=09=09}
- =09=09}
- =09=09else
- =09=09{
- =09=09=09// above
- =09=09=09if ((windowY - posY) < (windowY/4))
- =09=09=09{
- =09=09=09=09offsetY -=3D (flyoverY - halfY);
- =09=09=09}
- =09=09=09else
- =09=09=09{
- =09=09=09=09offsetY -=3D (flyoverY / 2) + halfY;
- =09=09=09=09locateY =3D 2;
- =09=09=09}
- =09=09}
- =09=09// make sure we aren't off the screen
- =09=09if (offsetY < 0)
- =09=09=09offsetY =3D 0;
- =09=09if ((offsetY + flyoverY) > windowY)
- =09=09{
- =09=09=09offsetY =3D windowY - flyoverY;
- =09=09}
- =09=09else if (scrollBarX && ((windowY - (posY + halfY)) < scrollYWidth))
- =09=09{=09//verdict overlaps the horizontal scrollbar
- =09=09=09offsetY =3D windowY - (flyoverY + scrollYWidth);
- =09=09}
- =09=09// add page offsets back - if not in frame
- =09=09if (!hasParentFrame)
- =09=09{
- =09=09=09offsetX +=3D pageOffsetX;
- =09=09=09offsetY +=3D pageOffsetY;
- =09=09}
- =09=09//posX +=3D pageOffsetX;
- =09=09//posY +=3D pageOffsetY;
- =09=09//var paddedOffsetX =3D 0; //provide space between icon and flyover
- =09=09//var padX =3D 3;
- =09=09//if (locateX =3D=3D 0)
- =09=09//=09paddedOffsetX =3D offsetX - padX;
- =09=09//else
- =09=09//=09paddedOffsetX =3D offsetX + padX;
- =09=09// set where to put the flyover
- =09=09flyover=2Estyle=2Etop =3D offsetY + "px";
- =09=09flyover=2Estyle=2Eleft =3D offsetX + "px";
- =09=09avglsinlineflyover=2Edisplay();
- =09},
- =09display: function () {
- =09=09var div =3D document=2EgetElementById('XPLSS=5FInlineFlyover');
- =09=09if (div =3D=3D null)
- =09=09=09return;
- =09=09
- =09=09// show the flyover
- =09=09div=2Estyle=2Evisibility =3D "visible";
- =09},
- =09imageExists: function(element) {
- =09=09if (element)
- =09=09{
- =09=09=09// check next siblings children
- =09=09=09var sibling =3D element=2EnextSibling;
- =09=09=09
- =09=09=09if ((sibling =3D=3D null) || (sibling=2EgetElementsByTagName =3D=3D=
- null))
- =09=09=09=09return false;
- =09=09=09
- =09=09=09var images =3D sibling=2EgetElementsByTagName("IMG");
- =09=09=09if (images =3D=3D null)
- =09=09=09=09return false;
- =09=09=09for (var i =3D 0; i < images=2Elength; i++)
- =09=09=09{
- =09=09=09=09if (images[i]=2Eid =3D=3D "avg=5Fls=5Fimage")
- =09=09=09=09=09return true;
- =09=09=09}
- =09=09}
- =09=09return false;
- =09},
- =09getImage: function (anchor) {
- =09=09if (anchor)
- =09=09{
- =09=09=09var imageElem =3D null;
- =09=09=09var images =3D anchor=2EgetElementsByTagName("img");
- =09=09=09if (images =3D=3D null)
- =09=09=09=09return imageElem;
- =09=09=09for (var i =3D 0; i < images=2Elength; i++)
- =09=09=09{
- =09=09=09=09if (images[i]=2Eid =3D=3D "avg=5Fls=5Fimage")
- =09=09=09=09{
- =09=09=09=09=09imageElem =3D images[i];
- =09=09=09=09=09break; =20
- =09=09=09=09}=09=09=09=09
- =09=09=09}
- =09=09=09return imageElem;
- =09=09} =20
- =09},
- =09getUrlFromQueryString: function (inUrl) {
- =09=09var url =3D inUrl;
- =09=09var uri =3D searchshield=2EparseLink(unescape(inUrl));
- =09=09if (uri=2Esource !=3D null)
- =09=09{=09// regexp failed so used split to parse url
- =09=09=09var qsUrl =3D uri=2Esource=2EindexOf("=3Furl=3D");
- =09=09=09if (qsUrl !=3D -1)
- =09=09=09=09url =3D uri=2Esource=2Esubstring(qsUrl + 5);
- =09=09=09else
- =09=09=09=09url =3D uri=2Esource;
- =09=09}
- =09=09else if ((uri=2EqsArray=2Eurl !=3D null) && (uri=2EqsArray=2Eurl=2El=
- ength > 0))
- =09=09{
- =09=09=09url =3D uri=2EqsArray=2Eurl;
- =09=09}
- =09=09return url;
- =09},
- =09mouseOverHandler: function (e, doc, engine) {
- =09=09if (e && e=2EsrcElement && e=2EsrcElement=2Ehref)
- =09=09{
- =09=09=09// need to keep a reference to the function registered=20
- =09=09=09// by the listener to be able to remove it=2E
- =09=09=09var handlerFunc =3D arguments=2Ecallee;
- =09=09=09var element =3D e=2EsrcElement;
- =09=09=09var href =3D e=2EsrcElement=2Ehref;
- =09=09=09// need an engine=09=09=09
- =09=09=09if (!engine)
- =09=09=09=09return;
- =09=09=09// check if it has an image already
- =09=09=09if (avglsinlineflyover=2EimageExists(element))
- =09=09=09=09return;
- =09=09=09// add the image, returns the anchor not the image
- =09=09=09var new=5Felement =3D engine=2Eadd=5Finline=5Fimage(doc, element,=
- null, null);
- =09=09=09// do the check and update in the background
- =09=09=09setTimeout(function() {avglsinlineflyover=2EcheckAndUpdate(doc, e=
- lement, new=5Felement, engine, handlerFunc)}, 1);
- =09=09}
- =09},
- =09checkAndUpdate: function (doc, element, new=5Felement, engine, handlerF=
- unc) {
- =09=09if (!engine)
- =09=09=09return;
- =09=09try {
- =09=09=09// remove the listener and get final url
- =09=09=09element=2EdetachEvent("onmouseover", handlerFunc, false);
- =09=09=09var finalUrl =3D searchshield=2EavgCallFunc(doc, 'GetFinalUrl', e=
- lement=2Ehref);
- =09=09}
- =09=09catch(e) {}
- =09=09if ((typeof(finalUrl) !=3D 'undefined') && finalUrl)
- =09=09{
- =09=09=09// if still a tiny url check for final url embedded in querystrin=
- g
- =09=09=09if (searchshield=2EFilterUrl(finalUrl, engine=2Eshortened=5Furls)=
- &&=20
- =09=09=09=09(finalUrl=2EindexOf("=3Furl=3D") !=3D -1))
- =09=09=09{
- =09=09=09=09finalUrl =3D avglsinlineflyover=2EgetUrlFromQueryString(finalU=
- rl);
- =09=09=09}
- =09=09=09// update the verdict
- =09=09=09engine=2Edisplay=5Finline(doc, new=5Felement, finalUrl, null, tru=
- e);
- =09=09}
- =09=09else
- =09=09{
- =09=09=09engine=2Eavg=5Fls=5Finline=5Fhide=5Fverdict(new=5Felement);
- =09=09}
- =09}
- };
- /////////////// FLYOVERS ///////////////
- (function(){
- =09setTimeout( function() {
- =09=09try {
- =09=09=09if ((self =3D=3D top) && top=2Edocument) {
- =09=09=09=09searchshield=2Einit(top=2Edocument, 1);
- =09=09=09}
- =09=09}
- =09=09catch(e){return;}
- =09}, 1 );
- =09return;
- })();
- </script></p></td></tr><tr><td bgcolor=3D#FFFFFF> </td></tr><tr>=09=09=
- =09</td>
- =09=09</tr>
- =09</table>
- </div>
- </body>
- </html>
- ------=_NextPart_860011217511982913148515--
Untitled
Posted by NotLim on Sun 12th Aug 2012 01:11
raw | new post
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.
kpaste.net RSS